From 53269be0c984e4545a441fd8f561d3f7dbb2446d Mon Sep 17 00:00:00 2001 From: skuzzis Date: Tue, 22 Apr 2025 20:35:09 +0300 Subject: [PATCH 1/3] remove(files): Old Source Code --- .editorconfig | 59 - .github/FUNDING.yml | 3 - .github/workflows/builder.yml | 264 - .github/workflows/cleanup.yml | 19 - .gitignore | 5 - .gitmodules | 33 - .vscode/c_cpp_properties.json | 76 - .vscode/launch.json | 29 - .vscode/settings.json | 118 - AMBuildScript | 327 - AMBuilder | 238 - LICENSE | 21 - PackageScript | 95 - README-RU.md | 89 - README-UA.md | 89 - README.md | 89 - alliedmodders/hl2sdk | 1 - alliedmodders/metamod | 1 - configure.py | 46 - hl2sdk-manifests | 1 - plugin_files/bin/scripting/database.js | 21 - plugin_files/bin/scripting/database.lua | 21 - plugin_files/bin/scripting/entity.js | 14 - plugin_files/bin/scripting/entity.lua | 18 - plugin_files/bin/scripting/events.js | 109 - plugin_files/bin/scripting/events.lua | 106 - plugin_files/bin/scripting/exports.js | 39 - plugin_files/bin/scripting/exports.lua | 53 - plugin_files/bin/scripting/hooks.js | 78 - plugin_files/bin/scripting/hooks.lua | 76 - plugin_files/bin/scripting/serpent.lua | 181 - plugin_files/bin/scripting/timers.js | 66 - plugin_files/bin/scripting/timers.lua | 68 - plugin_files/bin/scripting/utils.js | 178 - plugin_files/bin/scripting/utils.lua | 268 - plugin_files/configs/chat.example.json | 18 - plugin_files/configs/core.example.json | 78 - plugin_files/configs/databases.example.json | 18 - plugin_files/configs/plugins/.gitignore | 0 plugin_files/gamedata/core/offsets.json | 54 - plugin_files/gamedata/core/patches.json | 22 - plugin_files/gamedata/core/signatures.json | 127 - plugin_files/gamedata/gameevents.json | 273 - plugin_files/gamedata/sdk.json | 38412 ---------------- plugin_files/gamedata/sdk_types.json | 2933 -- plugin_files/logs/.gitignore | 0 plugin_files/logs/plugins/.gitignore | 0 plugin_files/plugins/.gitignore | 1 - plugin_files/translations/.gitignore | 0 .../translations/translation.core.json | 92 - protobufs/clientmessages.proto | 53 - protobufs/cs_gameevents.proto | 35 - protobufs/cs_usercmd.proto | 42 - protobufs/cstrike15_gcmessages.proto | 1505 - protobufs/cstrike15_usermessages.proto | 613 - protobufs/engine_gcmessages.proto | 14 - protobufs/gcsdk_gcmessages.proto | 325 - protobufs/netmessages.proto | 710 - protobufs/network_connection.proto | 130 - protobufs/networkbasetypes.proto | 241 - protobufs/networksystem_protomessages.proto | 19 - protobufs/steammessages.proto | 45 - protobufs/te.proto | 262 - protobufs/usercmd.proto | 39 - protobufs/usermessages.proto | 812 - setup.ps1 | 16 - setup.sh | 19 - src/common.h | 91 - src/core/commands/chat.cpp | 32 - src/core/commands/cmds.cpp | 28 - src/core/commands/commands.h | 60 - src/core/commands/config.cpp | 33 - src/core/commands/core.cpp | 51 - src/core/commands/credits.cpp | 7 - src/core/commands/cvars.cpp | 29 - src/core/commands/exts.cpp | 78 - src/core/commands/help.cpp | 23 - src/core/commands/list.cpp | 20 - src/core/commands/plugins.cpp | 174 - src/core/commands/resmon.cpp | 229 - src/core/commands/status.cpp | 44 - src/core/commands/translations.cpp | 32 - src/core/commands/utils.cpp | 24 - src/core/commands/version.cpp | 12 - src/core/configuration/setup.cpp | 11 - src/core/configuration/setup.h | 6 - src/engine/convars/convars.h | 53 - src/engine/convars/fake_convars.cpp | 198 - src/engine/convars/query.cpp | 102 - src/engine/convars/shared_convars.cpp | 123 - src/engine/gameevents/gameevents.cpp | 200 - src/engine/gameevents/gameevents.h | 34 - src/engine/vgui/ScreenText.cpp | 176 - src/engine/vgui/ScreenText.h | 45 - src/engine/vgui/VGUI.cpp | 102 - src/engine/vgui/VGUI.h | 41 - src/engine/voicemanager/VoiceManager.cpp | 94 - src/engine/voicemanager/VoiceManager.h | 31 - src/entitysystem/entities/entitysystem.cpp | 11 - src/entitysystem/entities/entitysystem.h | 17 - src/entitysystem/entities/listener.cpp | 68 - src/entitysystem/entities/listener.h | 20 - src/entitysystem/precacher/game_system.cpp | 49 - src/entitysystem/precacher/game_system.h | 46 - src/entitysystem/precacher/precacher.cpp | 33 - src/entitysystem/precacher/precacher.h | 33 - src/entrypoint.cpp | 626 - src/entrypoint.h | 114 - src/extensions/Extension.cpp | 117 - src/extensions/Extension.h | 36 - src/extensions/ExtensionManager.cpp | 93 - src/extensions/ExtensionManager.h | 30 - src/filesystem/files/Files.cpp | 215 - src/filesystem/files/Files.h | 31 - src/filesystem/logs/Log.cpp | 37 - src/filesystem/logs/Log.h | 24 - src/filesystem/logs/Logger.cpp | 37 - src/filesystem/logs/Logger.h | 25 - src/memory/encoders/json.cpp | 43 - src/memory/encoders/json.h | 19 - src/memory/encoders/msgpack.cpp | 123 - src/memory/encoders/msgpack.h | 16 - src/memory/hooks/FuncHook.h | 162 - src/memory/hooks/NativeHooks.cpp | 28 - src/memory/hooks/NativeHooks.h | 9 - src/memory/signatures/Offsets.cpp | 83 - src/memory/signatures/Offsets.h | 21 - src/memory/signatures/Patches.cpp | 153 - src/memory/signatures/Patches.h | 23 - src/memory/signatures/Signatures.cpp | 122 - src/memory/signatures/Signatures.h | 68 - src/network/database/DBDriver.h | 19 - src/network/database/DatabaseManager.cpp | 90 - src/network/database/DatabaseManager.h | 23 - src/network/database/IDatabase.h | 41 - src/network/usermessages/usermessages.cpp | 53 - src/network/usermessages/usermessages.h | 15 - src/player/player/Player.cpp | 469 - src/player/player/Player.h | 133 - src/player/playermanager/PlayerManager.cpp | 58 - src/player/playermanager/PlayerManager.h | 34 - src/plugins/Plugin.cpp | 545 - src/plugins/Plugin.h | 66 - src/plugins/PluginManager.cpp | 216 - src/plugins/PluginManager.h | 50 - src/plugins/core/scripting.h | 928 - src/plugins/core/scripting/engine/convars.cpp | 185 - src/plugins/core/scripting/engine/events.cpp | 422 - .../core/scripting/engine/gameevents.cpp | 169 - src/plugins/core/scripting/engine/server.cpp | 86 - src/plugins/core/scripting/engine/vgui.cpp | 59 - .../core/scripting/entities/entities.cpp | 21 - .../core/scripting/entities/precacher.cpp | 30 - .../core/scripting/entities/weapons.cpp | 281 - .../core/scripting/filesystem/files.cpp | 79 - .../core/scripting/filesystem/logs.cpp | 18 - src/plugins/core/scripting/memory/hooks.cpp | 312 - .../memory/keyvalues/CEntityKeyValues.cpp | 162 - src/plugins/core/scripting/memory/memory.cpp | 259 - .../core/scripting/network/database.cpp | 94 - .../core/scripting/network/usermessage.cpp | 950 - src/plugins/core/scripting/player/player.cpp | 485 - .../core/scripting/player/playermanager.cpp | 42 - src/plugins/core/scripting/sdk/chandle.cpp | 30 - .../core/scripting/sdk/checktransmit.cpp | 47 - src/plugins/core/scripting/sdk/schema.cpp | 27 - src/plugins/core/scripting/sdk/sdkaccess.cpp | 937 - .../core/scripting/server/commands.cpp | 81 - .../core/scripting/server/configuration.cpp | 138 - src/plugins/core/scripting/server/menus.cpp | 29 - .../core/scripting/server/translations.cpp | 7 - src/plugins/core/scripting/server/utils.cpp | 110 - src/plugins/core/scripting_schema.h | 60 - src/plugins/loader/core.cpp | 132 - src/plugins/loader/core.h | 28 - .../loader/scripting/engine/convars.cpp | 25 - .../loader/scripting/engine/events.cpp | 110 - .../loader/scripting/engine/server.cpp | 23 - src/plugins/loader/scripting/engine/vgui.cpp | 18 - .../loader/scripting/entities/entities.cpp | 11 - .../loader/scripting/entities/precacher.cpp | 17 - .../loader/scripting/entities/weapons.cpp | 38 - .../loader/scripting/filesystem/files.cpp | 26 - .../loader/scripting/filesystem/logs.cpp | 15 - src/plugins/loader/scripting/memory/hooks.cpp | 17 - .../memory/keyvalues/CEntityKeyValues.cpp | 41 - .../loader/scripting/memory/memory.cpp | 52 - .../loader/scripting/network/database.cpp | 46 - .../loader/scripting/network/usermessages.cpp | 97 - .../loader/scripting/player/player.cpp | 64 - .../loader/scripting/player/playermanager.cpp | 17 - .../loader/scripting/sdk/baseclasses.cpp | 432 - src/plugins/loader/scripting/sdk/chandle.cpp | 14 - .../loader/scripting/sdk/checktransmit.cpp | 14 - .../loader/scripting/sdk/coretypes.cpp | 300 - src/plugins/loader/scripting/sdk/schema.cpp | 255 - src/plugins/loader/scripting/sdk/types.cpp | 59 - .../loader/scripting/server/commands.cpp | 21 - .../loader/scripting/server/configuration.cpp | 19 - src/plugins/loader/scripting/server/menus.cpp | 17 - .../loader/scripting/server/translations.cpp | 29 - src/plugins/loader/scripting/server/utils.cpp | 58 - src/plugins/stack.h | 116 - src/sdk/access/sdkaccess.cpp | 132 - src/sdk/access/sdkaccess.h | 109 - src/sdk/entity/CBaseCombatCharacter.h | 15 - src/sdk/entity/CBaseEntity.h | 199 - src/sdk/entity/CBaseModelEntity.h | 53 - src/sdk/entity/CBasePlayerController.h | 57 - src/sdk/entity/CBasePlayerPawn.h | 38 - src/sdk/entity/CBaseViewModel.h | 43 - src/sdk/entity/CCSBot.h | 20 - src/sdk/entity/CCSPlayerController.h | 32 - src/sdk/entity/CCSPlayerPawn.h | 25 - src/sdk/entity/CCSPlayerPawnBase.h | 19 - src/sdk/entity/CCSWeaponBase.h | 150 - src/sdk/entity/CCollisionProperty.h | 27 - src/sdk/entity/CGameRules.h | 39 - src/sdk/entity/CPointWorldText.h | 60 - src/sdk/entity/CRecipientFilters.h | 107 - src/sdk/entity/CTakeDamageInfo.h | 129 - src/sdk/entity/CTriggerPush.h | 265 - src/sdk/entity/EntityCheckTransmit.h | 18 - src/sdk/entity/globaltypes.h | 134 - src/sdk/entity/serversideclient.h | 62 - src/sdk/entity/services.h | 200 - src/sdk/interfaces/cschemasystem.h | 44 - src/sdk/schema/schema.cpp | 148 - src/sdk/schema/schema.h | 105 - src/server/chat/Chat.cpp | 230 - src/server/chat/Chat.h | 28 - src/server/commands/Command.cpp | 28 - src/server/commands/Command.h | 25 - src/server/commands/CommandsManager.cpp | 200 - src/server/commands/CommandsManager.h | 42 - src/server/configuration/Configuration.cpp | 674 - src/server/configuration/Configuration.h | 66 - src/server/menus/Menu.h | 27 - src/server/menus/MenuManager.cpp | 80 - src/server/menus/MenuManager.h | 25 - src/server/menus/MenuRenderer.cpp | 239 - src/server/menus/MenuRenderer.h | 48 - src/server/menus/kinds/CenterMenu.cpp | 150 - src/server/menus/kinds/CenterMenu.h | 36 - src/server/menus/kinds/ScreenMenu.cpp | 196 - src/server/menus/kinds/ScreenMenu.h | 36 - src/server/translations/Translation.cpp | 17 - src/server/translations/Translation.h | 17 - src/server/translations/Translations.cpp | 128 - src/server/translations/Translations.h | 22 - src/tools/crashreporter/CallStack.cpp | 37 - src/tools/crashreporter/CallStack.h | 24 - src/tools/crashreporter/CrashReport.cpp | 226 - src/tools/crashreporter/CrashReport.h | 4 - src/tools/crashreporter/RegisterCallStack.cpp | 13 - src/tools/crashreporter/RegisterCallStack.h | 17 - src/tools/resourcemonitor/ResourceMonitor.cpp | 30 - src/tools/resourcemonitor/ResourceMonitor.h | 53 - src/types/EventResult.h | 11 - src/types/GamePhase.h | 15 - src/types/LogType.h | 9 - src/types/PluginKind.h | 11 - src/types/PluginState.h | 10 - src/utils/memory.h | 8 - src/utils/memory_linux.cpp | 49 - src/utils/memory_win.cpp | 43 - src/utils/plat.h | 39 - src/utils/plat_unix.cpp | 218 - src/utils/plat_win.cpp | 8 - src/utils/progressbar.h | 31 - src/utils/utils.cpp | 291 - src/utils/utils.h | 65 - src/utils/virtual.h | 9 - vendor/asmjit | 1 - .../bzip2/linuxsteamrt64/include/bz_version.h | 1 - vendor/bzip2/linuxsteamrt64/include/bzlib.h | 287 - .../linuxsteamrt64/include/bzlib_private.h | 507 - vendor/bzip2/linuxsteamrt64/lib/libbz2.a | Bin 370978 -> 0 bytes vendor/bzip2/win64/include/bz_version.h | 1 - vendor/bzip2/win64/include/bzlib.h | 287 - vendor/bzip2/win64/include/bzlib_private.h | 507 - vendor/bzip2/win64/lib/bz2.lib | Bin 123000 -> 0 bytes .../linuxsteamrt64/include/dyncall/dyncall.h | 151 - .../include/dyncall/dyncall_alloc.h | 41 - .../include/dyncall/dyncall_callf.h | 56 - .../include/dyncall/dyncall_callvm.h | 89 - .../dyncall/dyncall_callvm_arm32_arm.h | 55 - .../dyncall/dyncall_callvm_arm32_arm_armhf.h | 59 - .../dyncall/dyncall_callvm_arm32_thumb.h | 55 - .../include/dyncall/dyncall_callvm_arm64.h | 46 - .../include/dyncall/dyncall_callvm_mips.h | 38 - .../dyncall/dyncall_callvm_mips_eabi.h | 73 - .../include/dyncall/dyncall_callvm_mips_n32.h | 77 - .../include/dyncall/dyncall_callvm_mips_n64.h | 79 - .../include/dyncall/dyncall_callvm_mips_o32.h | 74 - .../include/dyncall/dyncall_callvm_ppc32.h | 64 - .../include/dyncall/dyncall_callvm_ppc64.h | 64 - .../include/dyncall/dyncall_callvm_sparc.h | 43 - .../include/dyncall/dyncall_callvm_sparc64.h | 42 - .../include/dyncall/dyncall_callvm_x64.h | 108 - .../include/dyncall/dyncall_callvm_x86.h | 59 - .../include/dyncall/dyncall_config.h | 47 - .../include/dyncall/dyncall_macros.h | 301 - .../include/dyncall/dyncall_signature.h | 79 - .../include/dyncall/dyncall_struct.h | 70 - .../include/dyncall/dyncall_types.h | 74 - .../include/dyncall/dyncall_utils.h | 39 - .../include/dyncall/dyncall_value.h | 98 - .../include/dyncall/dyncall_vector.h | 58 - .../dyncall/linuxsteamrt64/lib/libdyncall_s.a | Bin 39450 -> 0 bytes .../dyncall/win64/include/dyncall/dyncall.h | 151 - .../win64/include/dyncall/dyncall_alloc.h | 41 - .../win64/include/dyncall/dyncall_callf.h | 56 - .../win64/include/dyncall/dyncall_callvm.h | 89 - .../dyncall/dyncall_callvm_arm32_arm.h | 55 - .../dyncall/dyncall_callvm_arm32_arm_armhf.h | 59 - .../dyncall/dyncall_callvm_arm32_thumb.h | 55 - .../include/dyncall/dyncall_callvm_arm64.h | 46 - .../include/dyncall/dyncall_callvm_mips.h | 38 - .../dyncall/dyncall_callvm_mips_eabi.h | 73 - .../include/dyncall/dyncall_callvm_mips_n32.h | 77 - .../include/dyncall/dyncall_callvm_mips_n64.h | 79 - .../include/dyncall/dyncall_callvm_mips_o32.h | 74 - .../include/dyncall/dyncall_callvm_ppc32.h | 64 - .../include/dyncall/dyncall_callvm_ppc64.h | 64 - .../include/dyncall/dyncall_callvm_sparc.h | 43 - .../include/dyncall/dyncall_callvm_sparc64.h | 42 - .../include/dyncall/dyncall_callvm_x64.h | 108 - .../include/dyncall/dyncall_callvm_x86.h | 59 - .../win64/include/dyncall/dyncall_config.h | 47 - .../win64/include/dyncall/dyncall_macros.h | 301 - .../win64/include/dyncall/dyncall_signature.h | 79 - .../win64/include/dyncall/dyncall_struct.h | 70 - .../win64/include/dyncall/dyncall_types.h | 74 - .../win64/include/dyncall/dyncall_utils.h | 39 - .../win64/include/dyncall/dyncall_value.h | 98 - .../win64/include/dyncall/dyncall_vector.h | 58 - vendor/dyncall/win64/lib/dyncall_s.lib | Bin 35054 -> 0 bytes vendor/dynlib | 1 - .../include/dynohook/convention.h | 244 - .../dynohook/conventions/x64/x64MsFastcall.h | 44 - .../dynohook/conventions/x64/x64SystemVcall.h | 49 - .../dynohook/conventions/x86/x86GccCdecl.h | 11 - .../dynohook/conventions/x86/x86GccThiscall.h | 12 - .../dynohook/conventions/x86/x86MsCdecl.h | 47 - .../dynohook/conventions/x86/x86MsFastcall.h | 36 - .../dynohook/conventions/x86/x86MsStdcall.h | 38 - .../dynohook/conventions/x86/x86MsThiscall.h | 37 - .../linuxsteamrt64/include/dynohook/core.h | 16 - .../linuxsteamrt64/include/dynohook/decoder.h | 32 - .../linuxsteamrt64/include/dynohook/detour.h | 35 - .../linuxsteamrt64/include/dynohook/hook.h | 160 - .../linuxsteamrt64/include/dynohook/manager.h | 93 - .../linuxsteamrt64/include/dynohook/memory.h | 55 - .../include/dynohook/platform.h | 217 - .../include/dynohook/registers.h | 369 - .../include/dynohook/trampoline.h | 15 - .../linuxsteamrt64/include/dynohook/vtable.h | 37 - .../linuxsteamrt64/include/dynohook/vthook.h | 22 - .../dynohook/linuxsteamrt64/lib/libdynohook.a | Bin 262184 -> 0 bytes .../win64/include/dynohook/convention.h | 244 - .../dynohook/conventions/x64/x64MsFastcall.h | 44 - .../dynohook/conventions/x64/x64SystemVcall.h | 49 - .../dynohook/conventions/x86/x86GccCdecl.h | 11 - .../dynohook/conventions/x86/x86GccThiscall.h | 12 - .../dynohook/conventions/x86/x86MsCdecl.h | 47 - .../dynohook/conventions/x86/x86MsFastcall.h | 36 - .../dynohook/conventions/x86/x86MsStdcall.h | 38 - .../dynohook/conventions/x86/x86MsThiscall.h | 37 - vendor/dynohook/win64/include/dynohook/core.h | 16 - .../dynohook/win64/include/dynohook/decoder.h | 32 - .../dynohook/win64/include/dynohook/detour.h | 35 - vendor/dynohook/win64/include/dynohook/hook.h | 160 - .../dynohook/win64/include/dynohook/manager.h | 93 - .../dynohook/win64/include/dynohook/memory.h | 55 - .../win64/include/dynohook/platform.h | 217 - .../win64/include/dynohook/registers.h | 369 - .../win64/include/dynohook/trampoline.h | 15 - .../dynohook/win64/include/dynohook/vtable.h | 37 - .../dynohook/win64/include/dynohook/vthook.h | 22 - vendor/dynohook/win64/lib/dynohook.lib | Bin 2312530 -> 0 bytes vendor/embedder | 1 - vendor/funchook/LICENSE | 360 - vendor/funchook/README.md | 273 - vendor/funchook/include/funchook.h | 167 - vendor/funchook/lib/distorm.lib | Bin 76378 -> 0 bytes vendor/funchook/lib/funchook.lib | Bin 65438 -> 0 bytes vendor/funchook/lib/libdistorm.a | Bin 85698 -> 0 bytes vendor/funchook/lib/libfunchook.a | Bin 46806 -> 0 bytes vendor/json | 1 - vendor/json-lua | 1 - vendor/msgpack | 1 - vendor/msgpack-lua/msgpack.cpp | 1112 - vendor/other/lua.hpp | 3 - vendor/swiftly-ext | 1 - vendor/texttable/TextTable.h | 222 - vendor/zydis/linuxsteamrt64/libZydis.a | Bin 882084 -> 0 bytes vendor/zydis/win64/Zydis.lib | Bin 1158758 -> 0 bytes 398 files changed, 81208 deletions(-) delete mode 100644 .editorconfig delete mode 100644 .github/FUNDING.yml delete mode 100644 .github/workflows/builder.yml delete mode 100644 .github/workflows/cleanup.yml delete mode 100644 .gitignore delete mode 100644 .gitmodules delete mode 100644 .vscode/c_cpp_properties.json delete mode 100644 .vscode/launch.json delete mode 100644 .vscode/settings.json delete mode 100644 AMBuildScript delete mode 100644 AMBuilder delete mode 100644 LICENSE delete mode 100644 PackageScript delete mode 100644 README-RU.md delete mode 100644 README-UA.md delete mode 100644 README.md delete mode 160000 alliedmodders/hl2sdk delete mode 160000 alliedmodders/metamod delete mode 100644 configure.py delete mode 160000 hl2sdk-manifests delete mode 100644 plugin_files/bin/scripting/database.js delete mode 100644 plugin_files/bin/scripting/database.lua delete mode 100644 plugin_files/bin/scripting/entity.js delete mode 100644 plugin_files/bin/scripting/entity.lua delete mode 100644 plugin_files/bin/scripting/events.js delete mode 100644 plugin_files/bin/scripting/events.lua delete mode 100644 plugin_files/bin/scripting/exports.js delete mode 100644 plugin_files/bin/scripting/exports.lua delete mode 100644 plugin_files/bin/scripting/hooks.js delete mode 100644 plugin_files/bin/scripting/hooks.lua delete mode 100644 plugin_files/bin/scripting/serpent.lua delete mode 100644 plugin_files/bin/scripting/timers.js delete mode 100644 plugin_files/bin/scripting/timers.lua delete mode 100644 plugin_files/bin/scripting/utils.js delete mode 100644 plugin_files/bin/scripting/utils.lua delete mode 100644 plugin_files/configs/chat.example.json delete mode 100644 plugin_files/configs/core.example.json delete mode 100644 plugin_files/configs/databases.example.json delete mode 100644 plugin_files/configs/plugins/.gitignore delete mode 100644 plugin_files/gamedata/core/offsets.json delete mode 100644 plugin_files/gamedata/core/patches.json delete mode 100644 plugin_files/gamedata/core/signatures.json delete mode 100644 plugin_files/gamedata/gameevents.json delete mode 100644 plugin_files/gamedata/sdk.json delete mode 100644 plugin_files/gamedata/sdk_types.json delete mode 100644 plugin_files/logs/.gitignore delete mode 100644 plugin_files/logs/plugins/.gitignore delete mode 100644 plugin_files/plugins/.gitignore delete mode 100644 plugin_files/translations/.gitignore delete mode 100644 plugin_files/translations/translation.core.json delete mode 100644 protobufs/clientmessages.proto delete mode 100644 protobufs/cs_gameevents.proto delete mode 100644 protobufs/cs_usercmd.proto delete mode 100644 protobufs/cstrike15_gcmessages.proto delete mode 100644 protobufs/cstrike15_usermessages.proto delete mode 100644 protobufs/engine_gcmessages.proto delete mode 100644 protobufs/gcsdk_gcmessages.proto delete mode 100644 protobufs/netmessages.proto delete mode 100644 protobufs/network_connection.proto delete mode 100644 protobufs/networkbasetypes.proto delete mode 100644 protobufs/networksystem_protomessages.proto delete mode 100644 protobufs/steammessages.proto delete mode 100644 protobufs/te.proto delete mode 100644 protobufs/usercmd.proto delete mode 100644 protobufs/usermessages.proto delete mode 100644 setup.ps1 delete mode 100755 setup.sh delete mode 100644 src/common.h delete mode 100644 src/core/commands/chat.cpp delete mode 100644 src/core/commands/cmds.cpp delete mode 100644 src/core/commands/commands.h delete mode 100644 src/core/commands/config.cpp delete mode 100644 src/core/commands/core.cpp delete mode 100644 src/core/commands/credits.cpp delete mode 100644 src/core/commands/cvars.cpp delete mode 100644 src/core/commands/exts.cpp delete mode 100644 src/core/commands/help.cpp delete mode 100644 src/core/commands/list.cpp delete mode 100644 src/core/commands/plugins.cpp delete mode 100644 src/core/commands/resmon.cpp delete mode 100644 src/core/commands/status.cpp delete mode 100644 src/core/commands/translations.cpp delete mode 100644 src/core/commands/utils.cpp delete mode 100644 src/core/commands/version.cpp delete mode 100644 src/core/configuration/setup.cpp delete mode 100644 src/core/configuration/setup.h delete mode 100644 src/engine/convars/convars.h delete mode 100644 src/engine/convars/fake_convars.cpp delete mode 100644 src/engine/convars/query.cpp delete mode 100644 src/engine/convars/shared_convars.cpp delete mode 100644 src/engine/gameevents/gameevents.cpp delete mode 100644 src/engine/gameevents/gameevents.h delete mode 100644 src/engine/vgui/ScreenText.cpp delete mode 100644 src/engine/vgui/ScreenText.h delete mode 100644 src/engine/vgui/VGUI.cpp delete mode 100644 src/engine/vgui/VGUI.h delete mode 100644 src/engine/voicemanager/VoiceManager.cpp delete mode 100644 src/engine/voicemanager/VoiceManager.h delete mode 100644 src/entitysystem/entities/entitysystem.cpp delete mode 100644 src/entitysystem/entities/entitysystem.h delete mode 100644 src/entitysystem/entities/listener.cpp delete mode 100644 src/entitysystem/entities/listener.h delete mode 100644 src/entitysystem/precacher/game_system.cpp delete mode 100644 src/entitysystem/precacher/game_system.h delete mode 100644 src/entitysystem/precacher/precacher.cpp delete mode 100644 src/entitysystem/precacher/precacher.h delete mode 100644 src/entrypoint.cpp delete mode 100644 src/entrypoint.h delete mode 100644 src/extensions/Extension.cpp delete mode 100644 src/extensions/Extension.h delete mode 100644 src/extensions/ExtensionManager.cpp delete mode 100644 src/extensions/ExtensionManager.h delete mode 100644 src/filesystem/files/Files.cpp delete mode 100644 src/filesystem/files/Files.h delete mode 100644 src/filesystem/logs/Log.cpp delete mode 100644 src/filesystem/logs/Log.h delete mode 100644 src/filesystem/logs/Logger.cpp delete mode 100644 src/filesystem/logs/Logger.h delete mode 100644 src/memory/encoders/json.cpp delete mode 100644 src/memory/encoders/json.h delete mode 100644 src/memory/encoders/msgpack.cpp delete mode 100644 src/memory/encoders/msgpack.h delete mode 100644 src/memory/hooks/FuncHook.h delete mode 100644 src/memory/hooks/NativeHooks.cpp delete mode 100644 src/memory/hooks/NativeHooks.h delete mode 100644 src/memory/signatures/Offsets.cpp delete mode 100644 src/memory/signatures/Offsets.h delete mode 100644 src/memory/signatures/Patches.cpp delete mode 100644 src/memory/signatures/Patches.h delete mode 100644 src/memory/signatures/Signatures.cpp delete mode 100644 src/memory/signatures/Signatures.h delete mode 100644 src/network/database/DBDriver.h delete mode 100644 src/network/database/DatabaseManager.cpp delete mode 100644 src/network/database/DatabaseManager.h delete mode 100644 src/network/database/IDatabase.h delete mode 100644 src/network/usermessages/usermessages.cpp delete mode 100644 src/network/usermessages/usermessages.h delete mode 100644 src/player/player/Player.cpp delete mode 100644 src/player/player/Player.h delete mode 100644 src/player/playermanager/PlayerManager.cpp delete mode 100644 src/player/playermanager/PlayerManager.h delete mode 100644 src/plugins/Plugin.cpp delete mode 100644 src/plugins/Plugin.h delete mode 100644 src/plugins/PluginManager.cpp delete mode 100644 src/plugins/PluginManager.h delete mode 100644 src/plugins/core/scripting.h delete mode 100644 src/plugins/core/scripting/engine/convars.cpp delete mode 100644 src/plugins/core/scripting/engine/events.cpp delete mode 100644 src/plugins/core/scripting/engine/gameevents.cpp delete mode 100644 src/plugins/core/scripting/engine/server.cpp delete mode 100644 src/plugins/core/scripting/engine/vgui.cpp delete mode 100644 src/plugins/core/scripting/entities/entities.cpp delete mode 100644 src/plugins/core/scripting/entities/precacher.cpp delete mode 100644 src/plugins/core/scripting/entities/weapons.cpp delete mode 100644 src/plugins/core/scripting/filesystem/files.cpp delete mode 100644 src/plugins/core/scripting/filesystem/logs.cpp delete mode 100644 src/plugins/core/scripting/memory/hooks.cpp delete mode 100644 src/plugins/core/scripting/memory/keyvalues/CEntityKeyValues.cpp delete mode 100644 src/plugins/core/scripting/memory/memory.cpp delete mode 100644 src/plugins/core/scripting/network/database.cpp delete mode 100644 src/plugins/core/scripting/network/usermessage.cpp delete mode 100644 src/plugins/core/scripting/player/player.cpp delete mode 100644 src/plugins/core/scripting/player/playermanager.cpp delete mode 100644 src/plugins/core/scripting/sdk/chandle.cpp delete mode 100644 src/plugins/core/scripting/sdk/checktransmit.cpp delete mode 100644 src/plugins/core/scripting/sdk/schema.cpp delete mode 100644 src/plugins/core/scripting/sdk/sdkaccess.cpp delete mode 100644 src/plugins/core/scripting/server/commands.cpp delete mode 100644 src/plugins/core/scripting/server/configuration.cpp delete mode 100644 src/plugins/core/scripting/server/menus.cpp delete mode 100644 src/plugins/core/scripting/server/translations.cpp delete mode 100644 src/plugins/core/scripting/server/utils.cpp delete mode 100644 src/plugins/core/scripting_schema.h delete mode 100644 src/plugins/loader/core.cpp delete mode 100644 src/plugins/loader/core.h delete mode 100644 src/plugins/loader/scripting/engine/convars.cpp delete mode 100644 src/plugins/loader/scripting/engine/events.cpp delete mode 100644 src/plugins/loader/scripting/engine/server.cpp delete mode 100644 src/plugins/loader/scripting/engine/vgui.cpp delete mode 100644 src/plugins/loader/scripting/entities/entities.cpp delete mode 100644 src/plugins/loader/scripting/entities/precacher.cpp delete mode 100644 src/plugins/loader/scripting/entities/weapons.cpp delete mode 100644 src/plugins/loader/scripting/filesystem/files.cpp delete mode 100644 src/plugins/loader/scripting/filesystem/logs.cpp delete mode 100644 src/plugins/loader/scripting/memory/hooks.cpp delete mode 100644 src/plugins/loader/scripting/memory/keyvalues/CEntityKeyValues.cpp delete mode 100644 src/plugins/loader/scripting/memory/memory.cpp delete mode 100644 src/plugins/loader/scripting/network/database.cpp delete mode 100644 src/plugins/loader/scripting/network/usermessages.cpp delete mode 100644 src/plugins/loader/scripting/player/player.cpp delete mode 100644 src/plugins/loader/scripting/player/playermanager.cpp delete mode 100644 src/plugins/loader/scripting/sdk/baseclasses.cpp delete mode 100644 src/plugins/loader/scripting/sdk/chandle.cpp delete mode 100644 src/plugins/loader/scripting/sdk/checktransmit.cpp delete mode 100644 src/plugins/loader/scripting/sdk/coretypes.cpp delete mode 100644 src/plugins/loader/scripting/sdk/schema.cpp delete mode 100644 src/plugins/loader/scripting/sdk/types.cpp delete mode 100644 src/plugins/loader/scripting/server/commands.cpp delete mode 100644 src/plugins/loader/scripting/server/configuration.cpp delete mode 100644 src/plugins/loader/scripting/server/menus.cpp delete mode 100644 src/plugins/loader/scripting/server/translations.cpp delete mode 100644 src/plugins/loader/scripting/server/utils.cpp delete mode 100644 src/plugins/stack.h delete mode 100644 src/sdk/access/sdkaccess.cpp delete mode 100644 src/sdk/access/sdkaccess.h delete mode 100644 src/sdk/entity/CBaseCombatCharacter.h delete mode 100644 src/sdk/entity/CBaseEntity.h delete mode 100644 src/sdk/entity/CBaseModelEntity.h delete mode 100644 src/sdk/entity/CBasePlayerController.h delete mode 100644 src/sdk/entity/CBasePlayerPawn.h delete mode 100644 src/sdk/entity/CBaseViewModel.h delete mode 100644 src/sdk/entity/CCSBot.h delete mode 100644 src/sdk/entity/CCSPlayerController.h delete mode 100644 src/sdk/entity/CCSPlayerPawn.h delete mode 100644 src/sdk/entity/CCSPlayerPawnBase.h delete mode 100644 src/sdk/entity/CCSWeaponBase.h delete mode 100644 src/sdk/entity/CCollisionProperty.h delete mode 100644 src/sdk/entity/CGameRules.h delete mode 100644 src/sdk/entity/CPointWorldText.h delete mode 100644 src/sdk/entity/CRecipientFilters.h delete mode 100644 src/sdk/entity/CTakeDamageInfo.h delete mode 100644 src/sdk/entity/CTriggerPush.h delete mode 100644 src/sdk/entity/EntityCheckTransmit.h delete mode 100644 src/sdk/entity/globaltypes.h delete mode 100644 src/sdk/entity/serversideclient.h delete mode 100644 src/sdk/entity/services.h delete mode 100644 src/sdk/interfaces/cschemasystem.h delete mode 100644 src/sdk/schema/schema.cpp delete mode 100644 src/sdk/schema/schema.h delete mode 100644 src/server/chat/Chat.cpp delete mode 100644 src/server/chat/Chat.h delete mode 100644 src/server/commands/Command.cpp delete mode 100644 src/server/commands/Command.h delete mode 100644 src/server/commands/CommandsManager.cpp delete mode 100644 src/server/commands/CommandsManager.h delete mode 100644 src/server/configuration/Configuration.cpp delete mode 100644 src/server/configuration/Configuration.h delete mode 100644 src/server/menus/Menu.h delete mode 100644 src/server/menus/MenuManager.cpp delete mode 100644 src/server/menus/MenuManager.h delete mode 100644 src/server/menus/MenuRenderer.cpp delete mode 100644 src/server/menus/MenuRenderer.h delete mode 100644 src/server/menus/kinds/CenterMenu.cpp delete mode 100644 src/server/menus/kinds/CenterMenu.h delete mode 100644 src/server/menus/kinds/ScreenMenu.cpp delete mode 100644 src/server/menus/kinds/ScreenMenu.h delete mode 100644 src/server/translations/Translation.cpp delete mode 100644 src/server/translations/Translation.h delete mode 100644 src/server/translations/Translations.cpp delete mode 100644 src/server/translations/Translations.h delete mode 100644 src/tools/crashreporter/CallStack.cpp delete mode 100644 src/tools/crashreporter/CallStack.h delete mode 100644 src/tools/crashreporter/CrashReport.cpp delete mode 100644 src/tools/crashreporter/CrashReport.h delete mode 100644 src/tools/crashreporter/RegisterCallStack.cpp delete mode 100644 src/tools/crashreporter/RegisterCallStack.h delete mode 100644 src/tools/resourcemonitor/ResourceMonitor.cpp delete mode 100644 src/tools/resourcemonitor/ResourceMonitor.h delete mode 100644 src/types/EventResult.h delete mode 100644 src/types/GamePhase.h delete mode 100644 src/types/LogType.h delete mode 100644 src/types/PluginKind.h delete mode 100644 src/types/PluginState.h delete mode 100644 src/utils/memory.h delete mode 100644 src/utils/memory_linux.cpp delete mode 100644 src/utils/memory_win.cpp delete mode 100644 src/utils/plat.h delete mode 100644 src/utils/plat_unix.cpp delete mode 100644 src/utils/plat_win.cpp delete mode 100644 src/utils/progressbar.h delete mode 100644 src/utils/utils.cpp delete mode 100644 src/utils/utils.h delete mode 100644 src/utils/virtual.h delete mode 160000 vendor/asmjit delete mode 100644 vendor/bzip2/linuxsteamrt64/include/bz_version.h delete mode 100644 vendor/bzip2/linuxsteamrt64/include/bzlib.h delete mode 100644 vendor/bzip2/linuxsteamrt64/include/bzlib_private.h delete mode 100644 vendor/bzip2/linuxsteamrt64/lib/libbz2.a delete mode 100644 vendor/bzip2/win64/include/bz_version.h delete mode 100644 vendor/bzip2/win64/include/bzlib.h delete mode 100644 vendor/bzip2/win64/include/bzlib_private.h delete mode 100644 vendor/bzip2/win64/lib/bz2.lib delete mode 100644 vendor/dyncall/linuxsteamrt64/include/dyncall/dyncall.h delete mode 100644 vendor/dyncall/linuxsteamrt64/include/dyncall/dyncall_alloc.h delete mode 100644 vendor/dyncall/linuxsteamrt64/include/dyncall/dyncall_callf.h delete mode 100644 vendor/dyncall/linuxsteamrt64/include/dyncall/dyncall_callvm.h delete mode 100644 vendor/dyncall/linuxsteamrt64/include/dyncall/dyncall_callvm_arm32_arm.h delete mode 100644 vendor/dyncall/linuxsteamrt64/include/dyncall/dyncall_callvm_arm32_arm_armhf.h delete mode 100644 vendor/dyncall/linuxsteamrt64/include/dyncall/dyncall_callvm_arm32_thumb.h delete mode 100644 vendor/dyncall/linuxsteamrt64/include/dyncall/dyncall_callvm_arm64.h delete mode 100644 vendor/dyncall/linuxsteamrt64/include/dyncall/dyncall_callvm_mips.h delete mode 100644 vendor/dyncall/linuxsteamrt64/include/dyncall/dyncall_callvm_mips_eabi.h delete mode 100644 vendor/dyncall/linuxsteamrt64/include/dyncall/dyncall_callvm_mips_n32.h delete mode 100644 vendor/dyncall/linuxsteamrt64/include/dyncall/dyncall_callvm_mips_n64.h delete mode 100644 vendor/dyncall/linuxsteamrt64/include/dyncall/dyncall_callvm_mips_o32.h delete mode 100644 vendor/dyncall/linuxsteamrt64/include/dyncall/dyncall_callvm_ppc32.h delete mode 100644 vendor/dyncall/linuxsteamrt64/include/dyncall/dyncall_callvm_ppc64.h delete mode 100644 vendor/dyncall/linuxsteamrt64/include/dyncall/dyncall_callvm_sparc.h delete mode 100644 vendor/dyncall/linuxsteamrt64/include/dyncall/dyncall_callvm_sparc64.h delete mode 100644 vendor/dyncall/linuxsteamrt64/include/dyncall/dyncall_callvm_x64.h delete mode 100644 vendor/dyncall/linuxsteamrt64/include/dyncall/dyncall_callvm_x86.h delete mode 100644 vendor/dyncall/linuxsteamrt64/include/dyncall/dyncall_config.h delete mode 100644 vendor/dyncall/linuxsteamrt64/include/dyncall/dyncall_macros.h delete mode 100644 vendor/dyncall/linuxsteamrt64/include/dyncall/dyncall_signature.h delete mode 100644 vendor/dyncall/linuxsteamrt64/include/dyncall/dyncall_struct.h delete mode 100644 vendor/dyncall/linuxsteamrt64/include/dyncall/dyncall_types.h delete mode 100644 vendor/dyncall/linuxsteamrt64/include/dyncall/dyncall_utils.h delete mode 100644 vendor/dyncall/linuxsteamrt64/include/dyncall/dyncall_value.h delete mode 100644 vendor/dyncall/linuxsteamrt64/include/dyncall/dyncall_vector.h delete mode 100644 vendor/dyncall/linuxsteamrt64/lib/libdyncall_s.a delete mode 100644 vendor/dyncall/win64/include/dyncall/dyncall.h delete mode 100644 vendor/dyncall/win64/include/dyncall/dyncall_alloc.h delete mode 100644 vendor/dyncall/win64/include/dyncall/dyncall_callf.h delete mode 100644 vendor/dyncall/win64/include/dyncall/dyncall_callvm.h delete mode 100644 vendor/dyncall/win64/include/dyncall/dyncall_callvm_arm32_arm.h delete mode 100644 vendor/dyncall/win64/include/dyncall/dyncall_callvm_arm32_arm_armhf.h delete mode 100644 vendor/dyncall/win64/include/dyncall/dyncall_callvm_arm32_thumb.h delete mode 100644 vendor/dyncall/win64/include/dyncall/dyncall_callvm_arm64.h delete mode 100644 vendor/dyncall/win64/include/dyncall/dyncall_callvm_mips.h delete mode 100644 vendor/dyncall/win64/include/dyncall/dyncall_callvm_mips_eabi.h delete mode 100644 vendor/dyncall/win64/include/dyncall/dyncall_callvm_mips_n32.h delete mode 100644 vendor/dyncall/win64/include/dyncall/dyncall_callvm_mips_n64.h delete mode 100644 vendor/dyncall/win64/include/dyncall/dyncall_callvm_mips_o32.h delete mode 100644 vendor/dyncall/win64/include/dyncall/dyncall_callvm_ppc32.h delete mode 100644 vendor/dyncall/win64/include/dyncall/dyncall_callvm_ppc64.h delete mode 100644 vendor/dyncall/win64/include/dyncall/dyncall_callvm_sparc.h delete mode 100644 vendor/dyncall/win64/include/dyncall/dyncall_callvm_sparc64.h delete mode 100644 vendor/dyncall/win64/include/dyncall/dyncall_callvm_x64.h delete mode 100644 vendor/dyncall/win64/include/dyncall/dyncall_callvm_x86.h delete mode 100644 vendor/dyncall/win64/include/dyncall/dyncall_config.h delete mode 100644 vendor/dyncall/win64/include/dyncall/dyncall_macros.h delete mode 100644 vendor/dyncall/win64/include/dyncall/dyncall_signature.h delete mode 100644 vendor/dyncall/win64/include/dyncall/dyncall_struct.h delete mode 100644 vendor/dyncall/win64/include/dyncall/dyncall_types.h delete mode 100644 vendor/dyncall/win64/include/dyncall/dyncall_utils.h delete mode 100644 vendor/dyncall/win64/include/dyncall/dyncall_value.h delete mode 100644 vendor/dyncall/win64/include/dyncall/dyncall_vector.h delete mode 100644 vendor/dyncall/win64/lib/dyncall_s.lib delete mode 160000 vendor/dynlib delete mode 100644 vendor/dynohook/linuxsteamrt64/include/dynohook/convention.h delete mode 100644 vendor/dynohook/linuxsteamrt64/include/dynohook/conventions/x64/x64MsFastcall.h delete mode 100644 vendor/dynohook/linuxsteamrt64/include/dynohook/conventions/x64/x64SystemVcall.h delete mode 100644 vendor/dynohook/linuxsteamrt64/include/dynohook/conventions/x86/x86GccCdecl.h delete mode 100644 vendor/dynohook/linuxsteamrt64/include/dynohook/conventions/x86/x86GccThiscall.h delete mode 100644 vendor/dynohook/linuxsteamrt64/include/dynohook/conventions/x86/x86MsCdecl.h delete mode 100644 vendor/dynohook/linuxsteamrt64/include/dynohook/conventions/x86/x86MsFastcall.h delete mode 100644 vendor/dynohook/linuxsteamrt64/include/dynohook/conventions/x86/x86MsStdcall.h delete mode 100644 vendor/dynohook/linuxsteamrt64/include/dynohook/conventions/x86/x86MsThiscall.h delete mode 100644 vendor/dynohook/linuxsteamrt64/include/dynohook/core.h delete mode 100644 vendor/dynohook/linuxsteamrt64/include/dynohook/decoder.h delete mode 100644 vendor/dynohook/linuxsteamrt64/include/dynohook/detour.h delete mode 100644 vendor/dynohook/linuxsteamrt64/include/dynohook/hook.h delete mode 100644 vendor/dynohook/linuxsteamrt64/include/dynohook/manager.h delete mode 100644 vendor/dynohook/linuxsteamrt64/include/dynohook/memory.h delete mode 100644 vendor/dynohook/linuxsteamrt64/include/dynohook/platform.h delete mode 100644 vendor/dynohook/linuxsteamrt64/include/dynohook/registers.h delete mode 100644 vendor/dynohook/linuxsteamrt64/include/dynohook/trampoline.h delete mode 100644 vendor/dynohook/linuxsteamrt64/include/dynohook/vtable.h delete mode 100644 vendor/dynohook/linuxsteamrt64/include/dynohook/vthook.h delete mode 100644 vendor/dynohook/linuxsteamrt64/lib/libdynohook.a delete mode 100644 vendor/dynohook/win64/include/dynohook/convention.h delete mode 100644 vendor/dynohook/win64/include/dynohook/conventions/x64/x64MsFastcall.h delete mode 100644 vendor/dynohook/win64/include/dynohook/conventions/x64/x64SystemVcall.h delete mode 100644 vendor/dynohook/win64/include/dynohook/conventions/x86/x86GccCdecl.h delete mode 100644 vendor/dynohook/win64/include/dynohook/conventions/x86/x86GccThiscall.h delete mode 100644 vendor/dynohook/win64/include/dynohook/conventions/x86/x86MsCdecl.h delete mode 100644 vendor/dynohook/win64/include/dynohook/conventions/x86/x86MsFastcall.h delete mode 100644 vendor/dynohook/win64/include/dynohook/conventions/x86/x86MsStdcall.h delete mode 100644 vendor/dynohook/win64/include/dynohook/conventions/x86/x86MsThiscall.h delete mode 100644 vendor/dynohook/win64/include/dynohook/core.h delete mode 100644 vendor/dynohook/win64/include/dynohook/decoder.h delete mode 100644 vendor/dynohook/win64/include/dynohook/detour.h delete mode 100644 vendor/dynohook/win64/include/dynohook/hook.h delete mode 100644 vendor/dynohook/win64/include/dynohook/manager.h delete mode 100644 vendor/dynohook/win64/include/dynohook/memory.h delete mode 100644 vendor/dynohook/win64/include/dynohook/platform.h delete mode 100644 vendor/dynohook/win64/include/dynohook/registers.h delete mode 100644 vendor/dynohook/win64/include/dynohook/trampoline.h delete mode 100644 vendor/dynohook/win64/include/dynohook/vtable.h delete mode 100644 vendor/dynohook/win64/include/dynohook/vthook.h delete mode 100644 vendor/dynohook/win64/lib/dynohook.lib delete mode 160000 vendor/embedder delete mode 100644 vendor/funchook/LICENSE delete mode 100644 vendor/funchook/README.md delete mode 100644 vendor/funchook/include/funchook.h delete mode 100644 vendor/funchook/lib/distorm.lib delete mode 100644 vendor/funchook/lib/funchook.lib delete mode 100644 vendor/funchook/lib/libdistorm.a delete mode 100644 vendor/funchook/lib/libfunchook.a delete mode 160000 vendor/json delete mode 160000 vendor/json-lua delete mode 160000 vendor/msgpack delete mode 100644 vendor/msgpack-lua/msgpack.cpp delete mode 100644 vendor/other/lua.hpp delete mode 160000 vendor/swiftly-ext delete mode 100644 vendor/texttable/TextTable.h delete mode 100644 vendor/zydis/linuxsteamrt64/libZydis.a delete mode 100644 vendor/zydis/win64/Zydis.lib diff --git a/.editorconfig b/.editorconfig deleted file mode 100644 index 163988705..000000000 --- a/.editorconfig +++ /dev/null @@ -1,59 +0,0 @@ -[*] -cpp_indent_braces=false -cpp_indent_multi_line_relative_to=innermost_parenthesis -cpp_indent_within_parentheses=indent -cpp_indent_preserve_within_parentheses=false -cpp_indent_case_labels=false -cpp_indent_case_contents=true -cpp_indent_case_contents_when_block=false -cpp_indent_lambda_braces_when_parameter=true -cpp_indent_goto_labels=one_left -cpp_indent_preprocessor=leftmost_column -cpp_indent_access_specifiers=false -cpp_indent_namespace_contents=true -cpp_indent_preserve_comments=false -cpp_new_line_before_open_brace_namespace=ignore -cpp_new_line_before_open_brace_type=ignore -cpp_new_line_before_open_brace_function=ignore -cpp_new_line_before_open_brace_block=ignore -cpp_new_line_before_open_brace_lambda=ignore -cpp_new_line_scope_braces_on_separate_lines=false -cpp_new_line_close_brace_same_line_empty_type=false -cpp_new_line_close_brace_same_line_empty_function=false -cpp_new_line_before_catch=true -cpp_new_line_before_else=true -cpp_new_line_before_while_in_do_while=false -cpp_space_before_function_open_parenthesis=remove -cpp_space_within_parameter_list_parentheses=false -cpp_space_between_empty_parameter_list_parentheses=false -cpp_space_after_keywords_in_control_flow_statements=true -cpp_space_within_control_flow_statement_parentheses=false -cpp_space_before_lambda_open_parenthesis=false -cpp_space_within_cast_parentheses=false -cpp_space_after_cast_close_parenthesis=false -cpp_space_within_expression_parentheses=false -cpp_space_before_block_open_brace=true -cpp_space_between_empty_braces=false -cpp_space_before_initializer_list_open_brace=false -cpp_space_within_initializer_list_braces=true -cpp_space_preserve_in_initializer_list=true -cpp_space_before_open_square_bracket=false -cpp_space_within_square_brackets=false -cpp_space_before_empty_square_brackets=false -cpp_space_between_empty_square_brackets=false -cpp_space_group_square_brackets=true -cpp_space_within_lambda_brackets=false -cpp_space_between_empty_lambda_brackets=false -cpp_space_before_comma=false -cpp_space_after_comma=true -cpp_space_remove_around_member_operators=true -cpp_space_before_inheritance_colon=true -cpp_space_before_constructor_colon=true -cpp_space_remove_before_semicolon=true -cpp_space_after_semicolon=false -cpp_space_remove_around_unary_operator=true -cpp_space_around_binary_operator=insert -cpp_space_around_assignment_operator=insert -cpp_space_pointer_reference_alignment=left -cpp_space_around_ternary_operator=insert -cpp_wrap_preserve_blocks=one_liners diff --git a/.github/FUNDING.yml b/.github/FUNDING.yml deleted file mode 100644 index 9309163ca..000000000 --- a/.github/FUNDING.yml +++ /dev/null @@ -1,3 +0,0 @@ -custom: https://www.tipeeestream.com/skuzzi/donation -buy_me_a_coffee: swiftlycs2 -github: swiftly-solution diff --git a/.github/workflows/builder.yml b/.github/workflows/builder.yml deleted file mode 100644 index c7675d969..000000000 --- a/.github/workflows/builder.yml +++ /dev/null @@ -1,264 +0,0 @@ -name: "Swiftly Compiler" - -on: - push: - branches: - - '**' - pull_request: - -jobs: - versioning: - permissions: - contents: write - runs-on: ubuntu-latest - container: - image: registry.gitlab.steamos.cloud/steamrt/sniper/sdk - outputs: - version: ${{ steps.version.outputs.version }} - steps: - - name: Packages - shell: bash - run: | - sudo apt update - sudo apt install -y curl jq - - - name: Generate version - uses: reecetech/version-increment@2024.4.4 - id: version - with: - release_branch: master - increment: patch - use_api: true - - extensions_build: - name: Extension Build - needs: versioning - runs-on: ${{ matrix.os }} - container: ${{ matrix.container }} - strategy: - fail-fast: false - matrix: - os: [ubuntu-latest, windows-latest] - extension: [mysql-extension,console-filter,addons-extension,http-extension,ip-extension,utils-extension,sdktools-extension] - include: - - os: ubuntu-latest - container: registry.gitlab.steamos.cloud/steamrt/sniper/sdk - steps: - - name: Checkout Extension - uses: actions/checkout@v4 - with: - repository: swiftly-solution/${{ matrix.extension }} - path: ${{ matrix.extension }} - submodules: recursive - - - name: Checkout AMBuild - uses: actions/checkout@v4 - with: - repository: alliedmodders/ambuild - path: ambuild - - - name: Install AMBuild - run: | - cd ambuild; python setup.py install; cd .. - - - name: Version - shell: bash - run: echo "VERSION=${{needs.versioning.outputs.version}}" >> $GITHUB_ENV - - - name: Build - Linux - if: matrix.os == 'ubuntu-latest' - working-directory: ${{ matrix.extension }} - shell: bash - run: | - sudo apt update - sudo apt install -y libreadline-dev libboost-all-dev - bash ./setup.sh - - - name: Build - Windows - if: matrix.os == 'windows-latest' - working-directory: ${{ matrix.extension }} - run: | - ./setup.ps1 - - - name: IP EXT - Linux - if: ${{ matrix.os == 'ubuntu-latest' && matrix.extension == 'ip-extension' }} - working-directory: ${{ matrix.extension }} - shell: bash - run: | - wget https://github.com/P3TERX/GeoLite.mmdb/raw/download/GeoLite2-City.mmdb -O build/package/addons/swiftly/data/GeoLite2-City.mmdb - wget https://github.com/P3TERX/GeoLite.mmdb/raw/download/GeoLite2-ASN.mmdb -O build/package/addons/swiftly/data/GeoLite2-ASN.mmdb - - - name: IP EXT - Windows - if: ${{ matrix.os == 'windows-latest' && matrix.extension == 'ip-extension' }} - working-directory: ${{ matrix.extension }} - run: | - Set-Location build/package/addons/swiftly - - Invoke-WebRequest https://github.com/P3TERX/GeoLite.mmdb/raw/download/GeoLite2-City.mmdb -OutFile data/GeoLite2-City.mmdb - Invoke-WebRequest https://github.com/P3TERX/GeoLite.mmdb/raw/download/GeoLite2-ASN.mmdb -OutFile data/GeoLite2-ASN.mmdb - - Set-Location ../../../.. - - - name: Upload Artifacts Linux - if: matrix.os == 'ubuntu-latest' - uses: actions/upload-artifact@v4 - with: - name: ${{matrix.extension}}.Extension.Linux - path: ${{ github.workspace }}/${{ matrix.extension }}/build/package - - - name: Upload Artifacts Windows - if: matrix.os == 'windows-latest' - uses: actions/upload-artifact@v4 - with: - name: ${{matrix.extension}}.Extension.Windows - path: ${{ github.workspace }}/${{ matrix.extension }}/build/package - - build: - name: Build - needs: versioning - runs-on: ${{ matrix.os }} - env: - MMSOURCE20: ${{ github.workspace }}/swiftly/alliedmodders/metamod - HL2SDKCS2: ${{ github.workspace }}/swiftly/alliedmodders/hl2sdk - container: ${{ matrix.container }} - strategy: - fail-fast: false - matrix: - os: [ubuntu-latest, windows-latest] - include: - - os: ubuntu-latest - container: registry.gitlab.steamos.cloud/steamrt/sniper/sdk - steps: - - name: Checkout - uses: actions/checkout@v4 - with: - path: swiftly - submodules: recursive - - - name: Checkout AMBuild - uses: actions/checkout@v4 - with: - repository: alliedmodders/ambuild - path: ambuild - - - name: Install AMBuild - run: | - cd ambuild; python setup.py install; cd .. - - - name: Setup Version - shell: bash - run: echo "SWIFTLY_VERSION=${{needs.versioning.outputs.version}}" >> $GITHUB_ENV - - - name: Build - Linux - if: matrix.os == 'ubuntu-latest' - working-directory: swiftly - shell: bash - run: | - sudo apt update - sudo apt install -y libreadline-dev libboost-all-dev unzip - bash ./setup.sh - - echo "[Builder] Setting up default plugins" - cp -r build/package build/package2 - cd build/package/addons/swiftly - wget https://github.com/swiftly-solution/admins/releases/latest/download/Swiftly.Plugin.Admins.zip - unzip Swiftly.Plugin.Admins.zip - wget https://github.com/swiftly-solution/admins_basecomms/releases/latest/download/Swiftly.Plugin.Admins.BaseComms.zip - unzip Swiftly.Plugin.Admins.BaseComms.zip - wget https://github.com/swiftly-solution/admins_basebans/releases/latest/download/Swiftly.Plugin.Admins.BaseBans.zip - unzip Swiftly.Plugin.Admins.BaseBans.zip - wget https://github.com/swiftly-solution/admins_commands/releases/latest/download/Swiftly.Plugin.Admins.BaseCommands.zip - unzip Swiftly.Plugin.Admins.BaseCommands.zip - wget https://github.com/swiftly-solution/map-chooser/releases/latest/download/Swiftly.Plugin.Map-Chooser.zip - unzip Swiftly.Plugin.Map-Chooser.zip - wget https://github.com/swiftly-solution/cookies/releases/latest/download/cookies.zip - unzip cookies.zip - - rm -rf Swiftly.Plugin.Admins.zip - rm -rf Swiftly.Plugin.Admins.BaseComms.zip - rm -rf Swiftly.Plugin.Admins.BaseBans.zip - rm -rf Swiftly.Plugin.Admins.BaseCommands.zip - rm -rf Swiftly.Plugin.Map-Chooser.zip - rm -rf cookies.zip - - cd ../../../.. - echo "[Builder] Finished setting up default plugins" - - - name: Build - Windows - if: matrix.os == 'windows-latest' - working-directory: swiftly - run: | - ./setup.ps1 - - Set-Location build/package/addons/swiftly - - Invoke-WebRequest https://github.com/swiftly-solution/admins/releases/latest/download/Swiftly.Plugin.Admins.zip -OutFile Swiftly.Plugin.Admins.zip - Expand-Archive Swiftly.Plugin.Admins.zip -DestinationPath . - Invoke-WebRequest https://github.com/swiftly-solution/admins_basecomms/releases/latest/download/Swiftly.Plugin.Admins.BaseComms.zip -OutFile Swiftly.Plugin.Admins.BaseComms.zip - Expand-Archive Swiftly.Plugin.Admins.BaseComms.zip -DestinationPath . - Invoke-WebRequest https://github.com/swiftly-solution/admins_basebans/releases/latest/download/Swiftly.Plugin.Admins.BaseBans.zip -OutFile Swiftly.Plugin.Admins.BaseBans.zip - Expand-Archive Swiftly.Plugin.Admins.BaseBans.zip -DestinationPath . - Invoke-WebRequest https://github.com/swiftly-solution/admins_commands/releases/latest/download/Swiftly.Plugin.Admins.BaseCommands.zip -OutFile Swiftly.Plugin.Admins.BaseCommands.zip - Expand-Archive Swiftly.Plugin.Admins.BaseCommands.zip -DestinationPath . - Invoke-WebRequest https://github.com/swiftly-solution/map-chooser/releases/latest/download/Swiftly.Plugin.Map-Chooser.zip -OutFile Swiftly.Plugin.Map-Chooser.zip - Expand-Archive Swiftly.Plugin.Map-Chooser.zip -DestinationPath . - Invoke-WebRequest https://github.com/swiftly-solution/cookies/releases/latest/download/cookies.zip -OutFile cookies.zip - Expand-Archive cookies.zip -DestinationPath . - - Remove-Item -Force Swiftly.Plugin.Admins.zip - Remove-Item -Force Swiftly.Plugin.Admins.BaseComms.zip - Remove-Item -Force Swiftly.Plugin.Admins.BaseBans.zip - Remove-Item -Force Swiftly.Plugin.Admins.BaseCommands.zip - Remove-Item -Force Swiftly.Plugin.Map-Chooser.zip - Remove-Item -Force cookies.zip - - Set-Location ../../../.. - - - name: Upload Artifacts Linux - if: matrix.os == 'ubuntu-latest' - uses: actions/upload-artifact@v4 - with: - name: Swiftly.Plugin.Linux - path: ${{ github.workspace }}/swiftly/build/package - - - name: Upload Artifacts Windows - if: matrix.os == 'windows-latest' - uses: actions/upload-artifact@v4 - with: - name: Swiftly.Plugin.Windows - path: ${{ github.workspace }}/swiftly/build/package - - release: - if: ${{ github.event_name == 'push' && github.ref == 'refs/heads/master' }} - permissions: - contents: write - needs: ["versioning", "build", "extensions_build"] - runs-on: ubuntu-latest - container: - image: registry.gitlab.steamos.cloud/steamrt/sniper/sdk - steps: - - uses: actions/download-artifact@v4 - id: download-artifacts - with: - path: build - - - name: Prepare ZIP Files - run: | - sudo apt install p7zip-full -y; - - find build -type d -name "*Extension.Linux" -exec cp -r {}/addons build/Swiftly.Plugin.Linux \; - find build -type d -name "*Extension.Windows" -exec cp -r {}/addons build/Swiftly.Plugin.Windows \; - - (cd build/Swiftly.Plugin.Linux; 7z a -tzip ../../../Swiftly.Plugin.Linux.zip *) - (cd build/Swiftly.Plugin.Windows; 7z a -tzip ../../../Swiftly.Plugin.Windows.zip *) - echo "PATH_ARTIFACTS=$(cd ..; pwd)" >> $GITHUB_ENV - - - name: Release - id: release - uses: softprops/action-gh-release@v2 - with: - tag_name: v${{ needs.versioning.outputs.version }} - make_latest: "true" - files: | - ${{env.PATH_ARTIFACTS}}/Swiftly.Plugin.Linux.zip - ${{env.PATH_ARTIFACTS}}/Swiftly.Plugin.Windows.zip diff --git a/.github/workflows/cleanup.yml b/.github/workflows/cleanup.yml deleted file mode 100644 index ec32e4b4f..000000000 --- a/.github/workflows/cleanup.yml +++ /dev/null @@ -1,19 +0,0 @@ -name: Clean Artifacts - -on: - schedule: - - cron: "0 0 * * *" - workflow_dispatch: - -jobs: - clean: - permissions: - actions: write - runs-on: ubuntu-latest - steps: - - name: Cleanup - uses: c-hive/gha-remove-artifacts@v1 - with: - GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} - age: "1 minute" - skip-recent: 20 diff --git a/.gitignore b/.gitignore deleted file mode 100644 index f823c4538..000000000 --- a/.gitignore +++ /dev/null @@ -1,5 +0,0 @@ -build/ -prototemp/ -.xmake/ -custom_builder.sh -swiftly.so \ No newline at end of file diff --git a/.gitmodules b/.gitmodules deleted file mode 100644 index 11e46659b..000000000 --- a/.gitmodules +++ /dev/null @@ -1,33 +0,0 @@ -[submodule "alliedmodders/hl2sdk"] - path = alliedmodders/hl2sdk - url = https://github.com/swiftly-solution/hl2sdk - branch = cs2 -[submodule "alliedmodders/metamod"] - path = alliedmodders/metamod - url = https://github.com/alliedmodders/metamod-source -[submodule "vendor/dynlib"] - path = vendor/dynlib - url = https://github.com/komashchenko/DynLibUtils -[submodule "vendor/json"] - path = vendor/json - url = https://github.com/Tencent/rapidjson -[submodule "hl2sdk-manifests"] - path = hl2sdk-manifests - url = https://github.com/alliedmodders/hl2sdk-manifests -[submodule "vendor/msgpack"] - path = vendor/msgpack - url = https://github.com/msgpack/msgpack-c - branch = cpp_master -[submodule "vendor/json-lua"] - path = vendor/json-lua - url = https://github.com/xpol/lua-rapidjson -[submodule "vendor/asmjit"] - path = vendor/asmjit - url = https://github.com/asmjit/asmjit - branch = 51b10b19b6631434d3f9ad536a6fb140944a36d2 -[submodule "vendor/swiftly-ext"] - path = vendor/swiftly-ext - url = https://github.com/swiftly-solution/swiftly-ext -[submodule "vendor/embedder"] - path = vendor/embedder - url = https://github.com/swiftly-solution/embedder diff --git a/.vscode/c_cpp_properties.json b/.vscode/c_cpp_properties.json deleted file mode 100644 index 305d759db..000000000 --- a/.vscode/c_cpp_properties.json +++ /dev/null @@ -1,76 +0,0 @@ -{ - "configurations": [ - { - "name": "Win32", - "includePath": [ - "${workspaceFolder}/build/swiftly/windows-x86_64/**", - "${workspaceFolder}/alliedmodders/hl2sdk/**", - "${workspaceFolder}/alliedmodders/metamod/**", - "${workspaceFolder}/alliedmodders/metamod/core/**", - "${workspaceFolder}/src/**", - "${workspaceFolder}/vendor/embedder/libs/lua/**", - "${workspaceFolder}/vendor/embedder/libs/js/**", - "${workspaceFolder}/vendor/embedder/src/**", - "${workspaceFolder}/vendor/**", - "${workspaceFolder}/vendor/dynlib/**", - "${workspaceFolder}/vendor/json/include/**", - "${workspaceFolder}/vendor/msgpack/include/**", - "${workspaceFolder}/vendor/funchook/include/**", - "${workspaceFolder}/vendor/texttable/**", - "${workspaceFolder}/vendor/asmjit/src/**", - "${workspaceFolder}/vendor/dynohook/win64/include/**", - "${workspaceFolder}/vendor/dyncall/win64/include/**", - "${workspaceFolder}/vendor/bzip2/win64/include/**" - ], - "defines": [ - "_DEBUG", - "UNICODE", - "_UNICODE", - "WIN32", - "COMPILER_GCC", - "MSGPACK_NO_BOOST", - "META_IS_SOURCE2", - "POSIX" - ], - "cStandard": "c17", - "cppStandard": "c++17", - "intelliSenseMode": "windows-gcc-x64" - }, - { - "name": "Linux", - "includePath": [ - "${workspaceFolder}/build/swiftly/linux-x86_64/**", - "${workspaceFolder}/alliedmodders/hl2sdk/**", - "${workspaceFolder}/alliedmodders/metamod/**", - "${workspaceFolder}/alliedmodders/metamod/core/**", - "${workspaceFolder}/src/**", - "${workspaceFolder}/vendor/embedder/libs/lua/**", - "${workspaceFolder}/vendor/embedder/libs/js/**", - "${workspaceFolder}/vendor/embedder/src/**", - "${workspaceFolder}/vendor/**", - "${workspaceFolder}/vendor/dynlib/**", - "${workspaceFolder}/vendor/json/include/**", - "${workspaceFolder}/vendor/msgpack/include/**", - "${workspaceFolder}/vendor/funchook/include/**", - "${workspaceFolder}/vendor/texttable/**", - "${workspaceFolder}/vendor/asmjit/src/**", - "${workspaceFolder}/vendor/dynohook/linuxsteamrt64/include/**", - "${workspaceFolder}/vendor/dyncall/linuxsteamrt64/include/**", - "${workspaceFolder}/vendor/bzip2/linuxsteamrt64/include/**" - ], - "defines": [ - "_DEBUG", - "UNICODE", - "_UNICODE", - "POSIX", - "COMPILER_GCC", - "META_IS_SOURCE2", - "POSIX" - ], - "cStandard": "c17", - "cppStandard": "c++17", - "intelliSenseMode": "linux-gcc-x64", - } - ], - "version": 4 -} \ No newline at end of file diff --git a/.vscode/launch.json b/.vscode/launch.json deleted file mode 100644 index dda005c89..000000000 --- a/.vscode/launch.json +++ /dev/null @@ -1,29 +0,0 @@ - { - "configurations": [ - { - "name": "(gdb) Launch", - "type": "cppdbg", - "request": "launch", - "program": "enter program name, for example ${workspaceFolder}/a.out", - "args": [], - "stopAtEntry": false, - "cwd": "${fileDirname}", - "environment": [], - "externalConsole": false, - "MIMode": "gdb", - "setupCommands": [ - { - "description": "Enable pretty-printing for gdb", - "text": "-enable-pretty-printing", - "ignoreFailures": true - }, - { - "description": "Set Disassembly Flavor to Intel", - "text": "-gdb-set disassembly-flavor intel", - "ignoreFailures": true - } - ] - } - ], - "version": "2.0.0" -} \ No newline at end of file diff --git a/.vscode/settings.json b/.vscode/settings.json deleted file mode 100644 index e9abf75a2..000000000 --- a/.vscode/settings.json +++ /dev/null @@ -1,118 +0,0 @@ -{ - "files.associations": { - "iostream": "cpp", - "*.inc": "cpp", - "cctype": "cpp", - "clocale": "cpp", - "cmath": "cpp", - "csignal": "cpp", - "cstdarg": "cpp", - "cstddef": "cpp", - "cstdio": "cpp", - "cstdlib": "cpp", - "cstring": "cpp", - "ctime": "cpp", - "cwchar": "cpp", - "cwctype": "cpp", - "*.ipp": "cpp", - "any": "cpp", - "array": "cpp", - "atomic": "cpp", - "strstream": "cpp", - "bit": "cpp", - "*.tcc": "cpp", - "bitset": "cpp", - "chrono": "cpp", - "codecvt": "cpp", - "compare": "cpp", - "complex": "cpp", - "concepts": "cpp", - "condition_variable": "cpp", - "coroutine": "cpp", - "cstdint": "cpp", - "deque": "cpp", - "forward_list": "cpp", - "list": "cpp", - "map": "cpp", - "set": "cpp", - "string": "cpp", - "unordered_map": "cpp", - "unordered_set": "cpp", - "vector": "cpp", - "exception": "cpp", - "algorithm": "cpp", - "functional": "cpp", - "iterator": "cpp", - "memory": "cpp", - "memory_resource": "cpp", - "numeric": "cpp", - "optional": "cpp", - "random": "cpp", - "ratio": "cpp", - "regex": "cpp", - "source_location": "cpp", - "string_view": "cpp", - "system_error": "cpp", - "tuple": "cpp", - "type_traits": "cpp", - "utility": "cpp", - "fstream": "cpp", - "future": "cpp", - "initializer_list": "cpp", - "iomanip": "cpp", - "iosfwd": "cpp", - "istream": "cpp", - "limits": "cpp", - "mutex": "cpp", - "new": "cpp", - "numbers": "cpp", - "ostream": "cpp", - "semaphore": "cpp", - "span": "cpp", - "sstream": "cpp", - "stdexcept": "cpp", - "stop_token": "cpp", - "streambuf": "cpp", - "thread": "cpp", - "cfenv": "cpp", - "cinttypes": "cpp", - "typeindex": "cpp", - "typeinfo": "cpp", - "variant": "cpp", - "expected": "cpp", - "shared_mutex": "cpp", - "ws2ipdef.h": "c", - "maxminddb_config.h": "c", - "winsock2.h": "c", - "ws2tcpip.h": "c", - "xstring": "cpp", - "time.h": "c", - "osdefs.h": "c", - "stdio.h": "c", - "filesystem": "cpp", - "xlocinfo": "cpp", - "charconv": "cpp", - "format": "cpp", - "ios": "cpp", - "locale": "cpp", - "queue": "cpp", - "ranges": "cpp", - "stack": "cpp", - "xfacet": "cpp", - "xhash": "cpp", - "xiosbase": "cpp", - "xlocale": "cpp", - "xlocbuf": "cpp", - "xlocmes": "cpp", - "xlocmon": "cpp", - "xlocnum": "cpp", - "xloctime": "cpp", - "xmemory": "cpp", - "xtr1common": "cpp", - "xtree": "cpp", - "xutility": "cpp" - }, - "Lua.diagnostics.disable": [ - "duplicate-set-field" - ] -} \ No newline at end of file diff --git a/AMBuildScript b/AMBuildScript deleted file mode 100644 index 6e0304a70..000000000 --- a/AMBuildScript +++ /dev/null @@ -1,327 +0,0 @@ -# vim: set sts=2 ts=8 sw=2 tw=99 et ft=python: -import os, sys - -# Edit the functions below for the extra functionality, the return should be -# a list of path's to wanted locations -def additional_libs(context, binary, sdk): - return [ - # Path should be relative either to hl2sdk folder or to build folder - # 'path/to/lib/example.lib', - ] - -def additional_defines(context, binary, sdk): - return [ - # 'EXAMPLE_DEFINE=2' - ] - -def additional_includes(context, binary, sdk): - return [ - # Path should be absolute only! - # os.path.join(sdk['path'], 'game', 'server'), - # os.path.join(sdk['path'], 'public', 'entity2'), - # 'D:/absolute/path/to/include/folder/' - ] - -def ResolveEnvPath(env, folder): - if env in os.environ: - path = os.environ[env] - if os.path.isdir(path): - return path - else: - head = os.getcwd() - oldhead = None - while head != None and head != oldhead: - path = os.path.join(head, folder) - if os.path.isdir(path): - return path - oldhead = head - head, tail = os.path.split(head) - return None - -def ResolveMMSRoot(): - prenormalized_path = None - if builder.options.mms_path: - prenormalized_path = builder.options.mms_path - else: - prenormalized_path = ResolveEnvPath('MMSOURCE20', 'mmsource-2.0') - if not prenormalized_path: - prenormalized_path = ResolveEnvPath('MMSOURCE112', 'mmsource-1.12') - if not prenormalized_path: - prenormalized_path = ResolveEnvPath('MMSOURCE111', 'mmsource-1.11') - if not prenormalized_path: - prenormalized_path = ResolveEnvPath('MMSOURCE110', 'mmsource-1.10') - if not prenormalized_path: - prenormalized_path = ResolveEnvPath('MMSOURCE_DEV', 'metamod-source') - if not prenormalized_path: - prenormalized_path = ResolveEnvPath('MMSOURCE_DEV', 'mmsource-central') - if not prenormalized_path or not os.path.isdir(prenormalized_path): - raise Exception('Could not find a source copy of Metamod:Source') - - return os.path.abspath(os.path.normpath(prenormalized_path)) - -mms_root = ResolveMMSRoot() - -if not builder.options.hl2sdk_manifests: - raise Exception('Could not find a source copy of HL2SDK manifests') -hl2sdk_manifests = builder.options.hl2sdk_manifests - -SdkHelpers = builder.Eval(os.path.join(hl2sdk_manifests, 'SdkHelpers.ambuild'), { - 'Project': 'metamod' -}) - -class MMSPluginConfig(object): - def __init__(self): - self.sdk_manifests = [] - self.sdks = {} - self.sdk_targets = [] - self.binaries = [] - self.mms_root = mms_root - self.all_targets = [] - self.target_archs = set() - - if builder.options.plugin_name is not None: - self.plugin_name = builder.options.plugin_name - else: - self.plugin_name = 'sample_mm' - - if builder.options.plugin_alias is not None: - self.plugin_alias = builder.options.plugin_alias - else: - self.plugin_alias = 'sample' - - if builder.options.targets: - target_archs = builder.options.targets.split(',') - else: - target_archs = ['x86', 'x86_64'] - - for arch in target_archs: - try: - cxx = builder.DetectCxx(target_arch = arch) - self.target_archs.add(cxx.target.arch) - except Exception as e: - # Error if archs were manually overridden. - if builder.options.targets: - raise - print('Skipping target {}: {}'.format(arch, e)) - continue - self.all_targets.append(cxx) - - if not self.all_targets: - raise Exception('No suitable C/C++ compiler was found.') - - def findSdkPath(self, sdk_name): - dir_name = 'hl2sdk-{}'.format(sdk_name) - if builder.options.hl2sdk_root: - sdk_path = os.path.join(builder.options.hl2sdk_root, dir_name) - if os.path.exists(sdk_path): - return sdk_path - return ResolveEnvPath('HL2SDK{}'.format(sdk_name.upper()), dir_name) - - def detectSDKs(self): - sdk_list = [s for s in builder.options.sdks.split(',') if s] - SdkHelpers.find_sdk_path = self.findSdkPath - SdkHelpers.findSdks(builder, self.all_targets, sdk_list) - - self.sdks = SdkHelpers.sdks - self.sdk_manifests = SdkHelpers.sdk_manifests - self.sdk_targets = SdkHelpers.sdk_targets - - if len(self.sdks) > 1: - raise Exception('Only one sdk at a time is supported, for multi-sdk approach use loader based solution.') - - def configure(self): - for cxx in self.all_targets: - if cxx.target.arch not in ['x86', 'x86_64']: - raise Exception('Unknown target architecture: {0}'.format(arch)) - - self.configure_cxx(cxx) - - def configure_cxx(self, cxx): - if cxx.behavior == 'gcc': - cxx.defines += [ - 'stricmp=strcasecmp', - '_stricmp=strcasecmp', - '_snprintf=snprintf', - '_vsnprintf=vsnprintf', - 'HAVE_STDINT_H', - 'GNUC', - ] - cxx.cflags += [ - '-pipe', - '-fno-strict-aliasing', - '-Wall', - '-Wno-uninitialized', - '-Wno-unused', - '-Wno-switch', - '-msse', - '-fPIC', - ] - - cxx.cxxflags += ['-std=c++17'] - if (builder.options.asan != '1') and ((cxx.version >= 'gcc-4.0') or cxx.family == 'clang'): - cxx.cflags += ['-rdynamic'] - cxx.cxxflags += [ - '-fno-exceptions', - '-fno-threadsafe-statics', - '-Wno-non-virtual-dtor', - '-Wno-overloaded-virtual', - '-Wno-register', - ] - if (builder.options.asan == '1'): - cxx.cxxflags += [ - '-fsanitize=address', - '-fsanitize-address-use-after-scope', - '-fno-omit-frame-pointer', - '-g', - ] - cxx.linkflags += [ - '-fsanitize=address', - '-fsanitize-address-use-after-scope', - ] - if (cxx.version >= 'gcc-4.7' or cxx.family == 'clang'): - cxx.cxxflags += ['-Wno-delete-non-virtual-dtor'] - if cxx.family == 'gcc': - cxx.cflags += ['-mfpmath=sse'] - if cxx.family == 'clang': - cxx.cxxflags += ['-Wno-implicit-exception-spec-mismatch'] - if cxx.version >= 'clang-3.9': - cxx.cxxflags += ['-Wno-expansion-to-defined'] - if cxx.version >= 'clang-3.6': - cxx.cxxflags += ['-Wno-inconsistent-missing-override'] - if cxx.version >= 'clang-3.4': - cxx.cxxflags += ['-Wno-deprecated-register'] - else: - cxx.cxxflags += ['-Wno-deprecated'] - - # Work around SDK warnings. - if cxx.version >= 'clang-10.0': - cxx.cflags += [ - '-Wno-implicit-int-float-conversion', - '-Wno-tautological-overlap-compare', - ] - - elif cxx.like('msvc'): - if builder.options.debug == '1': - cxx.cflags += ['/MTd'] - cxx.linkflags += ['/NODEFAULTLIB:libcmt'] - else: - cxx.cflags += ['/MT'] - cxx.linkflags += ['/NODEFAULTLIB:libcmt'] - - cxx.defines += [ - '_CRT_SECURE_NO_DEPRECATE', - '_CRT_SECURE_NO_WARNINGS', - '_CRT_NONSTDC_NO_DEPRECATE', - ] - cxx.cflags += [ - '/W3', - '/Z7', - '/bigobj', - '/std:c++17', - ] - cxx.cxxflags += ['/TP'] - - cxx.linkflags += [ - '/SUBSYSTEM:WINDOWS', - 'kernel32.lib', - 'user32.lib', - 'gdi32.lib', - 'winspool.lib', - 'comdlg32.lib', - 'advapi32.lib', - 'shell32.lib', - 'ole32.lib', - 'oleaut32.lib', - 'uuid.lib', - 'odbc32.lib', - 'odbccp32.lib', - ] - - # Optimization - if builder.options.opt == '1': - cxx.defines += ['NDEBUG'] - if cxx.behavior == 'gcc': - cxx.cflags += ['-O3'] - elif cxx.behavior == 'msvc': - cxx.cflags += ['/Ox', '/Zo'] - cxx.linkflags += ['/OPT:ICF', '/OPT:REF'] - - # Debugging - if builder.options.debug == '1': - cxx.defines += ['DEBUG', '_DEBUG'] - if cxx.behavior == 'gcc': - cxx.cflags += ['-g3'] - elif cxx.behavior == 'msvc': - cxx.cflags += ['/Od', '/RTC1'] - - # Don't omit the frame pointer. - # This needs to be after our optimization flags which could otherwise disable it. - if cxx.behavior == 'gcc': - cxx.cflags += ['-fno-omit-frame-pointer'] - elif cxx.behavior == 'msvc': - cxx.cflags += ['/Oy-'] - - # Platform-specifics - if cxx.target.platform == 'linux': - cxx.defines += ['LINUX', '_LINUX', 'POSIX', '_FILE_OFFSET_BITS=64'] - if cxx.family == 'gcc': - cxx.linkflags += ['-static-libgcc'] - elif cxx.family == 'clang': - cxx.linkflags += ['-lgcc_eh'] - cxx.linkflags += ['-static-libstdc++'] - elif cxx.target.platform == 'windows': - cxx.defines += ['WIN32', '_WINDOWS'] - - # Finish up. - # Custom defines here - cxx.defines += [ ] - # Custom includes here - cxx.includes += [ ] - - def Library(self, cxx, name): - binary = cxx.Library(name) - return binary - - def HL2Library(self, context, compiler, name, sdk): - binary = self.Library(compiler, name) - mms_core_path = os.path.join(self.mms_root, 'core') - cxx = binary.compiler - - cxx.cxxincludes += [ - os.path.join(context.currentSourcePath), - os.path.join(mms_core_path), - os.path.join(mms_core_path, 'sourcehook'), - ] - - defines = [] - for other_sdk in self.sdk_manifests: - cxx.defines += ['SE_{}={}'.format(other_sdk['define'], other_sdk['code'])] - - if sdk['source2']: - cxx.defines += ['META_IS_SOURCE2'] - binary.sources += [ - os.path.join(sdk['path'], 'tier1', 'convar.cpp'), - ] - if cxx.target.platform == 'linux': - binary.sources += [ - os.path.join(sdk['path'], 'public', 'tier0', 'memoverride.cpp'), - ] - - SdkHelpers.configureCxx(context, binary, sdk) - - cxx.linkflags += additional_libs(context, binary, sdk) - cxx.defines += additional_defines(context, binary, sdk) - cxx.cxxincludes += additional_includes(context, binary, sdk) - - return binary - -MMSPlugin = MMSPluginConfig() -MMSPlugin.detectSDKs() -MMSPlugin.configure() - -BuildScripts = [ - 'AMBuilder', - 'PackageScript', -] - -builder.Build(BuildScripts, { 'MMSPlugin': MMSPlugin }) \ No newline at end of file diff --git a/AMBuilder b/AMBuilder deleted file mode 100644 index 392ac32d0..000000000 --- a/AMBuilder +++ /dev/null @@ -1,238 +0,0 @@ -import os -import fnmatch -import json - -MMSPlugin.plugin_name = 'swiftly' -MMSPlugin.plugin_alias = 'swiftly' - -for sdk_target in MMSPlugin.sdk_targets: - sdk = sdk_target.sdk - cxx = sdk_target.cxx - - binary = MMSPlugin.HL2Library(builder, cxx, MMSPlugin.plugin_name, sdk) - - for root, dirs, files in os.walk(os.path.join(builder.sourcePath, "src")): - for _file in files: - if fnmatch.fnmatch(_file, '*.cpp'): - binary.sources.append(os.path.join(root, _file).replace("\\", "/")) - - for root, dirs, files in os.walk(os.path.join(builder.sourcePath, "vendor", "json-lua", "src")): - for _file in files: - if fnmatch.fnmatch(_file, '*.cpp'): - binary.sources.append(os.path.join(root, _file).replace("\\", "/")) - - for root, dirs, files in os.walk(os.path.join(builder.sourcePath, "vendor", "embedder", "src")): - for _file in files: - if fnmatch.fnmatch(_file, '*.cpp'): - binary.sources.append(os.path.join(root, _file).replace("\\", "/")) - - for root, dirs, files in os.walk(os.path.join(builder.sourcePath, "vendor", "asmjit", "src", "asmjit")): - for _file in files: - if fnmatch.fnmatch(_file, '*.cpp'): - binary.sources.append(os.path.join(root, _file).replace("\\", "/")) - - binary.sources.append("vendor/dynlib/module.cpp") - binary.sources.append("vendor/msgpack-lua/msgpack.cpp") - - binary.sources.append(os.path.join(sdk['path'], 'entity2', 'entitysystem.cpp')) - binary.sources.append(os.path.join(sdk['path'], 'entity2', 'entityidentity.cpp')) - binary.sources.append(os.path.join(sdk['path'], 'entity2', 'entitykeyvalues.cpp')) - binary.sources.append(os.path.join(sdk['path'], 'tier1', 'keyvalues3.cpp')) - - with open(os.path.join(builder.sourcePath, "vendor", "embedder", "libs", "links.json")) as f: - embedder_linking = json.load(f) - - libs = embedder_linking["libraries"][binary.compiler.target.platform] - incls = embedder_linking["includes"] - for lib in libs: - binary.compiler.postlink += [os.path.join(builder.sourcePath, "vendor", "embedder", "libs", lib)] - for incl in incls: - binary.compiler.cxxincludes += [os.path.join(builder.sourcePath, 'vendor', 'embedder', 'libs', incl)] - - if binary.compiler.target.platform == 'linux': - binary.compiler.cxxflags += [ - "-Wno-invalid-offsetof", - "-Wno-return-local-addr", - "-Wno-overloaded-virtual", - "-Wno-unknown-pragmas", - "-Wno-non-virtual-dtor", - "-Wno-attributes", - "-Wno-array-bounds", - "-Wno-int-to-pointer-cast", - "-Wno-sign-compare", - "-Wno-write-strings", - "-Wno-class-memaccess", - "-fexceptions", - ] - binary.compiler.cflags += [ - "-Wno-return-local-addr", - "-Wno-unknown-pragmas", - "-Wno-attributes", - "-Wno-array-bounds", - "-Wno-int-to-pointer-cast", - "-Wno-sign-compare", - "-Wno-write-strings", - "-fexceptions", - ] - binary.compiler.postlink += [ - os.path.join(builder.sourcePath, 'vendor', 'funchook', 'lib', 'libfunchook.a'), - os.path.join(builder.sourcePath, 'vendor', 'funchook', 'lib', 'libdistorm.a'), - os.path.join(builder.sourcePath, 'vendor', 'dynohook', 'linuxsteamrt64', 'lib', 'libdynohook.a'), - os.path.join(builder.sourcePath, 'vendor', 'zydis', 'linuxsteamrt64', 'libZydis.a'), - os.path.join(builder.sourcePath, 'vendor', 'dyncall', 'linuxsteamrt64', 'lib', 'libdyncall_s.a'), - os.path.join(builder.sourcePath, 'vendor', 'bzip2', 'linuxsteamrt64', 'lib', 'libbz2.a'), - - "-lgnutls", - "-lz", - "-lpthread", - "-lssl", - "-lcrypto", - "-lm", - "-ldl", - "-lreadline", - "-lrt", - "-lidn2", - "-lpsl", - "-lbrotlidec", - "-lbacktrace", - "-lstdc++", - os.path.join(sdk['path'], 'lib', 'linux64', 'libsteam_api.so') - ] - binary.compiler.defines += [ - "_LINUX", - "LINUX", - "POSIX", - "GNUC", - "COMPILER_GCC", - "PLATFORM_64BITS", - "META_IS_SOURCE2", - "_GLIBCXX_USE_CXX11_ABI=0", - ] - else: - binary.compiler.cxxflags += [ - "/Zc:__cplusplus", - "/Ox", - "/Zo", - "/Oy-", - "/Z7", - "/TP", - "/MT", - "/W3", - "/Z7", - "/IGNORE:4101,4267,4244,4005,4003,4530", - ] - binary.compiler.postlink += [ - os.path.join(builder.sourcePath, 'vendor', 'funchook', 'lib', 'funchook.lib'), - os.path.join(builder.sourcePath, 'vendor', 'funchook', 'lib', 'distorm.lib'), - os.path.join(builder.sourcePath, 'vendor', 'dynohook', 'win64', 'lib', 'dynohook.lib'), - os.path.join(builder.sourcePath, 'vendor', 'zydis', 'win64', 'Zydis.lib'), - os.path.join(builder.sourcePath, 'vendor', 'dyncall', 'win64', 'lib', 'dyncall_s.lib'), - os.path.join(builder.sourcePath, 'vendor', 'bzip2', 'win64', 'lib', 'bz2.lib'), - - "psapi.lib", - "winmm.lib", - "ws2_32.lib", - "wldap32.lib", - "advapi32.lib", - "kernel32.lib", - "comdlg32.lib", - "crypt32.lib", - "normaliz.lib", - "wsock32.lib", - "legacy_stdio_definitions.lib", - "legacy_stdio_wide_specifiers.lib", - "user32.lib", - "gdi32.lib", - "winspool.lib", - "shell32.lib", - "ole32.lib", - "oleaut32.lib", - "uuid.lib", - "odbc32.lib", - "odbccp32.lib", - "msvcrt.lib", - os.path.join(sdk['path'], 'lib', 'public', 'win64', 'steam_api64.lib') - ] - binary.compiler.defines += [ - "COMPILER_MSVC", - "COMPILER_MSVC64", - "WIN32", - "_WIN32", - "WINDOWS", - "_WINDOWS", - "CRT_SECURE_NO_WARNINGS", - "_CRT_SECURE_NO_WARNINGS", - "CRT_SECURE_NO_DEPRECATE", - "_CRT_SECURE_NO_DEPRECATE", - "CRT_NONSTDC_NO_DEPRECATE", - "_CRT_NONSTDC_NO_DEPRECATE", - "_MBCS", - "META_IS_SOURCE2", - "X64BITS", - "PLATFORM_64BITS", - "NDEBUG" - ] - - binary.compiler.defines += [ - "GITHUB_SHA=\"" + (os.getenv('GITHUB_SHA') == None and "LOCAL" or os.getenv('GITHUB_SHA')) + "\"", - "HAVE_STRUCT_TIMESPEC", - "BUILDING", - "MSGPACK_NO_BOOST", - ] - - if os.getenv('SWIFTLY_DEBUG') != None: - binary.compiler.defines += [ - "SWIFTLY_DEBUG" - ] - - if os.getenv("SWIFTLY_VERSION") != None: - binary.compiler.defines += [ - "SWIFTLY_VERSION=\"" + os.getenv("SWIFTLY_VERSION") + "\"" - ] - - binary.compiler.cxxincludes += [ - os.path.join(builder.sourcePath, 'vendor'), - os.path.join(builder.sourcePath, 'vendor', 'other'), - os.path.join(builder.sourcePath, 'vendor', 'embedder', 'src'), - os.path.join(builder.sourcePath, 'vendor', 'dynlib'), - os.path.join(builder.sourcePath, 'vendor', 'msgpack', 'include'), - os.path.join(builder.sourcePath, 'vendor', 'json', 'include'), - os.path.join(builder.sourcePath, 'vendor', 'funchook', 'include'), - os.path.join(builder.sourcePath, 'vendor', 'texttable'), - os.path.join(builder.sourcePath, 'vendor', 'asmjit', 'src'), - os.path.join(builder.sourcePath, 'vendor', 'dynohook', ('win64' if binary.compiler.target.platform == 'windows' else 'linuxsteamrt64'), 'include'), - os.path.join(builder.sourcePath, 'vendor', 'dyncall', ('win64' if binary.compiler.target.platform == 'windows' else 'linuxsteamrt64'), 'include'), - os.path.join(builder.sourcePath, 'vendor', 'bzip2', ('win64' if binary.compiler.target.platform == 'windows' else 'linuxsteamrt64'), 'include'), - - os.path.join(sdk['path']), - os.path.join(sdk['path'], 'public'), - os.path.join(sdk['path'], 'public', 'entity2'), - os.path.join(sdk['path'], 'game', 'server'), - os.path.join(sdk['path'], 'game', 'shared'), - os.path.join(sdk['path'], 'common'), - os.path.join(sdk['path'], 'public', 'engine'), - os.path.join(sdk['path'], 'public', 'mathlib'), - os.path.join(sdk['path'], 'public', 'tier0'), - os.path.join(sdk['path'], 'public', 'tier1'), - os.path.join(sdk['path'], 'public', 'mathlib'), - os.path.join(sdk['path'], 'public', 'game', 'server'), - os.path.join('alliedmodders', 'metamod', 'core'), - os.path.join('alliedmodders', 'metamod', 'core', 'sourcehook') - ] - - protobufSources = [] - for root, dirs, files in os.walk(os.path.join(builder.sourcePath, "protobufs")): - for _file in files: - if fnmatch.fnmatch(_file, '*.proto'): - protobufSources.append(os.path.join(root, _file).replace("\\", "/")) - - protoc_builder = builder.tools.Protoc(protoc = sdk_target.protoc, sources = protobufSources) - protoc_builder.protoc.includes = [ - os.path.join(sdk['path'], 'thirdparty', 'protobuf-3.21.8', 'src'), - os.path.join(builder.sourcePath, 'protobufs') - ] - - binary.custom = [protoc_builder] - - nodes = builder.Add(binary) - MMSPlugin.binaries += [nodes] \ No newline at end of file diff --git a/LICENSE b/LICENSE deleted file mode 100644 index ccfbe9e80..000000000 --- a/LICENSE +++ /dev/null @@ -1,21 +0,0 @@ -MIT License - -Copyright (c) 2023-2025 Sava Andrei Sebastian - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in all -copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE -SOFTWARE. diff --git a/PackageScript b/PackageScript deleted file mode 100644 index bb850d308..000000000 --- a/PackageScript +++ /dev/null @@ -1,95 +0,0 @@ -# vim: set ts=2 sw=2 tw=99 noet ft=python: -import os - -builder.SetBuildFolder('package') - -metamod_folder = builder.AddFolder(os.path.join('addons', 'metamod')) -bin_folder_path = os.path.join('addons', MMSPlugin.plugin_name, 'bin') -bin_folder = builder.AddFolder(bin_folder_path) - -for cxx in MMSPlugin.all_targets: - if cxx.target.arch == 'x86_64': - if cxx.target.platform == 'windows': - bin64_folder_path = os.path.join('addons', MMSPlugin.plugin_name, 'bin', 'win64') - bin64_folder = builder.AddFolder(bin64_folder_path) - elif cxx.target.platform == 'linux': - bin64_folder_path = os.path.join('addons', MMSPlugin.plugin_name, 'bin', 'linuxsteamrt64') - bin64_folder = builder.AddFolder(bin64_folder_path) - elif cxx.target.platform == 'mac': - bin64_folder_path = os.path.join('addons', MMSPlugin.plugin_name, 'bin', 'win64') - bin64_folder = builder.AddFolder(bin64_folder_path) - -pdb_list = [] -for task in MMSPlugin.binaries: - # This hardly assumes there's only 1 targetted platform and would be overwritten - # with whatever comes last if multiple are used! - with open(os.path.join(builder.buildPath, MMSPlugin.plugin_name + '.vdf'), 'w') as fp: - fp.write('"Metamod Plugin"\n') - fp.write('{\n') - fp.write(f'\t"alias"\t"{MMSPlugin.plugin_alias}"\n') - if task.target.arch == 'x86_64': - fp.write(f'\t"file"\t"{os.path.join(bin64_folder_path, MMSPlugin.plugin_name)}"\n') - else: - fp.write(f'\t"file"\t"{os.path.join(bin_folder_path, MMSPlugin.plugin_name)}"\n') - fp.write('}\n') - - if task.target.arch == 'x86_64': - builder.AddCopy(task.binary, bin64_folder) - else: - builder.AddCopy(task.binary, bin_folder) - - if task.debug: - pdb_list.append(task.debug) - -builder.AddCopy(os.path.join(builder.buildPath, MMSPlugin.plugin_name + '.vdf'), metamod_folder) - -# Generate PDB info. -with open(os.path.join(builder.buildPath, 'pdblog.txt'), 'wt') as fp: - for line in pdb_list: - fp.write(line.path + '\n') - -bin_folder = builder.AddFolder(os.path.join('addons', MMSPlugin.plugin_name, 'bin')) -bin_scripting_folder = builder.AddFolder(os.path.join('addons', MMSPlugin.plugin_name, 'bin', 'scripting')) -builder.AddCopy(os.path.join(builder.sourcePath, 'plugin_files', 'bin', 'scripting', 'database.lua'), bin_scripting_folder) -builder.AddCopy(os.path.join(builder.sourcePath, 'plugin_files', 'bin', 'scripting', 'entity.lua'), bin_scripting_folder) -builder.AddCopy(os.path.join(builder.sourcePath, 'plugin_files', 'bin', 'scripting', 'events.lua'), bin_scripting_folder) -builder.AddCopy(os.path.join(builder.sourcePath, 'plugin_files', 'bin', 'scripting', 'exports.lua'), bin_scripting_folder) -builder.AddCopy(os.path.join(builder.sourcePath, 'plugin_files', 'bin', 'scripting', 'hooks.lua'), bin_scripting_folder) -builder.AddCopy(os.path.join(builder.sourcePath, 'plugin_files', 'bin', 'scripting', 'serpent.lua'), bin_scripting_folder) -builder.AddCopy(os.path.join(builder.sourcePath, 'plugin_files', 'bin', 'scripting', 'timers.lua'), bin_scripting_folder) -builder.AddCopy(os.path.join(builder.sourcePath, 'plugin_files', 'bin', 'scripting', 'utils.lua'), bin_scripting_folder) -builder.AddCopy(os.path.join(builder.sourcePath, 'plugin_files', 'bin', 'scripting', 'database.js'), bin_scripting_folder) -builder.AddCopy(os.path.join(builder.sourcePath, 'plugin_files', 'bin', 'scripting', 'entity.js'), bin_scripting_folder) -builder.AddCopy(os.path.join(builder.sourcePath, 'plugin_files', 'bin', 'scripting', 'events.js'), bin_scripting_folder) -builder.AddCopy(os.path.join(builder.sourcePath, 'plugin_files', 'bin', 'scripting', 'exports.js'), bin_scripting_folder) -builder.AddCopy(os.path.join(builder.sourcePath, 'plugin_files', 'bin', 'scripting', 'hooks.js'), bin_scripting_folder) -builder.AddCopy(os.path.join(builder.sourcePath, 'plugin_files', 'bin', 'scripting', 'timers.js'), bin_scripting_folder) -builder.AddCopy(os.path.join(builder.sourcePath, 'plugin_files', 'bin', 'scripting', 'utils.js'), bin_scripting_folder) - -configs_folder = builder.AddFolder(os.path.join('addons', MMSPlugin.plugin_name, 'configs')) -configs_plugins_folder = builder.AddFolder(os.path.join('addons', MMSPlugin.plugin_name, 'configs', 'plugins')) -builder.AddCopy(os.path.join(builder.sourcePath, 'plugin_files', 'configs', 'core.example.json'), configs_folder) -builder.AddCopy(os.path.join(builder.sourcePath, 'plugin_files', 'configs', 'databases.example.json'), configs_folder) -builder.AddCopy(os.path.join(builder.sourcePath, 'plugin_files', 'configs', 'plugins', '.gitignore'), configs_plugins_folder) -builder.AddCopy(os.path.join(builder.sourcePath, 'plugin_files', 'configs', 'chat.example.json'), configs_folder) - -gamedata_folder = builder.AddFolder(os.path.join('addons', MMSPlugin.plugin_name, 'gamedata')) -gamedata_core_folder = builder.AddFolder(os.path.join('addons', MMSPlugin.plugin_name, 'gamedata', 'core')) -builder.AddCopy(os.path.join(builder.sourcePath, 'plugin_files', 'gamedata', 'sdk.json'), gamedata_folder) -builder.AddCopy(os.path.join(builder.sourcePath, 'plugin_files', 'gamedata', 'sdk_types.json'), gamedata_folder) -builder.AddCopy(os.path.join(builder.sourcePath, 'plugin_files', 'gamedata', 'gameevents.json'), gamedata_folder) -builder.AddCopy(os.path.join(builder.sourcePath, 'plugin_files', 'gamedata', 'core', 'signatures.json'), gamedata_core_folder) -builder.AddCopy(os.path.join(builder.sourcePath, 'plugin_files', 'gamedata', 'core', 'patches.json'), gamedata_core_folder) -builder.AddCopy(os.path.join(builder.sourcePath, 'plugin_files', 'gamedata', 'core', 'offsets.json'), gamedata_core_folder) - -logs_folder = builder.AddFolder(os.path.join('addons', MMSPlugin.plugin_name, 'logs')) -logs_plugins_folder = builder.AddFolder(os.path.join('addons', MMSPlugin.plugin_name, 'logs', 'plugins')) -builder.AddCopy(os.path.join(builder.sourcePath, 'plugin_files', 'logs', '.gitignore'), logs_folder) -builder.AddCopy(os.path.join(builder.sourcePath, 'plugin_files', 'logs', 'plugins', '.gitignore'), logs_plugins_folder) - -plugins_folder = builder.AddFolder(os.path.join('addons', MMSPlugin.plugin_name, 'plugins')) -builder.AddCopy(os.path.join(builder.sourcePath, 'plugin_files', 'plugins', '.gitignore'), plugins_folder) - -translations_folder = builder.AddFolder(os.path.join('addons', MMSPlugin.plugin_name, 'translations')) -builder.AddCopy(os.path.join(builder.sourcePath, 'plugin_files', 'translations', '.gitignore'), translations_folder) -builder.AddCopy(os.path.join(builder.sourcePath, 'plugin_files', 'translations', 'translation.core.json'), translations_folder) \ No newline at end of file diff --git a/README-RU.md b/README-RU.md deleted file mode 100644 index 20d10c8e6..000000000 --- a/README-RU.md +++ /dev/null @@ -1,89 +0,0 @@ -
-

- Swiftly Private Message Logo -

- Swiftly это плагин для модификации серверов Counter Strike 2 который основан на Metamod:Source 2.x -
- Сообщить о ошибке - Discord Сервер -

-

- -
- -README также доступен на [английском](https://github.com/swiftly-solution/swiftly/blob/master/README.md) ![en](https://raw.githubusercontent.com/stevenrskelton/flag-icon/master/png/16/country-4x3/gb.png) и [украинском](https://github.com/swiftly-solution/swiftly/blob/master/README-UA.md) ![ua](https://raw.githubusercontent.com/stevenrskelton/flag-icon/master/png/16/country-4x3/ua.png) - -![Downloads](https://img.shields.io/github/downloads/swiftly-solution/swiftly/total) ![Contributors](https://img.shields.io/github/contributors/swiftly-solution/swiftly?color=dark-green) ![Issues](https://img.shields.io/github/issues/swiftly-solution/swiftly) ![License](https://img.shields.io/github/license/swiftly-solution/swiftly) - -
- ---- - -### Требования к компиляции - -- [hl2sdk](https://github.com/alliedmodders/hl2sdk/tree/cs2) (Автоматически загружается при клонировании репозитория используя Recurse Submodules) -- [metamod-source](https://github.com/alliedmodders/metamod-source) (Автоматически загружается при клонировании репозитория используя Recurse Submodules) -- [python3](https://www.python.org/) -- [AMBuild](https://github.com/alliedmodders/ambuild) (УБЕДИТЕСЬ ЧТО КОМАНДА `ambuild` ДОСТУПНА ЧЕРЕЗ `PATH` В WINDOWS) - ---- - -### Загрузки - -- [Публичные релизы (рекомендовано)](https://github.com/swiftly-solution/swiftly/releases) -- [Билды (используйте на свой страх и риск)](https://github.com/swiftly-solution/swiftly/actions) - ---- - -### Плагины - -- [Discord (Рекомандовано)](https://swiftlycs2.net/discord) -- [Тема на GitHub](https://github.com/topics/swiftly-solution) - ---- - -### Для разработчиков - -- [Для начинающих](https://swiftlycs2.net/for-beginners) -- [Документация к плагинам](https://swiftlycs2.net/plugin-docs) -- [Документация к дополнениям](https://swiftlycs2.net/ext-docs) -- [SDK документация](https://swiftlycs2.net/sdk) - ---- - -### Команды для компиляции - -#### Клонировать репозиторий - -``` -git clone --recurse-submodules https://github.com/swiftly-solution/swiftly -``` - -#### Компиляция - -``` -./setup.ps1 - Windows -./setup.sh - Linux -``` - ---- - -### Лицензия - -Swiftly распространяется под лицензией MIT. Вы можете ознакомиться с лицензией в файле LICENSE. - ---- - -### Благодарность - -Система схем и базовые классы SDK предоставлены благодаря [CS2Fixes](https://github.com/Source2ZE/CS2Fixes). - -Остальные поля SDK предоставлены благодаря [Source2SDK](https://github.com/neverlosecc/source2sdk/tree/cs2/sdk). - -Спасибо GAMMACASE, Poggu и всем, кто постоянно работает над улучшением сообщества серверов Counter Strike 2. - ---- - -### Статистика - -![Alt](https://repobeats.axiom.co/api/embed/742f846684c4bb9f8314c0a43c2a6b314fc63b6b.svg "Repobeats analytics image") diff --git a/README-UA.md b/README-UA.md deleted file mode 100644 index 5813a2169..000000000 --- a/README-UA.md +++ /dev/null @@ -1,89 +0,0 @@ -
-

- Swiftly Private Message Logo -

- Swiftly це плагін для модифікації серверів Counter Strike 2 який заснован на Metamod:Source 2.x -
- Повідомити про помилку - Discord Сервер -

-

- -
- -README також доступний [англійською](https://github.com/swiftly-solution/swiftly/blob/master/README.md) ![en](https://raw.githubusercontent.com/stevenrskelton/flag-icon/master/png/16/country-4x3/gb.png) та [російською](https://github.com/swiftly-solution/swiftly/blob/master/README-RU.md) ![ru](https://raw.githubusercontent.com/stevenrskelton/flag-icon/master/png/16/country-4x3/ru.png) - -![Downloads](https://img.shields.io/github/downloads/swiftly-solution/swiftly/total) ![Contributors](https://img.shields.io/github/contributors/swiftly-solution/swiftly?color=dark-green) ![Issues](https://img.shields.io/github/issues/swiftly-solution/swiftly) ![License](https://img.shields.io/github/license/swiftly-solution/swiftly) - -
- ---- - -### Вимоги до компіляції - -- [hl2sdk](https://github.com/alliedmodders/hl2sdk/tree/cs2) (Автоматично завантажується під час клонування репозиторію з використанням Recurse Submodules) -- [metamod-source](https://github.com/alliedmodders/metamod-source) (Автоматично завантажується під час клонування репозиторію з використанням Recurse Submodules) -- [python3](https://www.python.org/) -- [AMBuild](https://github.com/alliedmodders/ambuild) (ПЕРЕКОНАЙТЕСЬ ЩО КОМАНДА `ambuild` ДОСТУПНА ЧЕРЕЗ `PATH` У WINDOWS) - ---- - -### Завантаження - -- [Публічні релізи (рекомендовано)](https://github.com/swiftly-solution/swiftly/releases) -- [Білди (використовуйте на свій страх і ризик)](https://github.com/swiftly-solution/swiftly/actions) - ---- - -### Плагіни - -- [Discord (рекомандовано)](https://swiftlycs2.net/discord) -- [Тема на GitHub](https://github.com/topics/swiftly-solution) - ---- - -### Для розробників - -- [Для початківців](https://swiftlycs2.net/for-beginners) -- [Документація до плагінів](https://swiftlycs2.net/plugin-docs) -- [Документація до доповнень](https://swiftlycs2.net/ext-docs) -- [SDK документація](https://swiftlycs2.net/sdk) - ---- - -### Команди для компіляції - -#### Клонувати репозиторій - -``` -git clone --recurse-submodules https://github.com/swiftly-solution/swiftly -``` - -#### Компіляція - -``` -./setup.ps1 - Windows -./setup.sh - Linux -``` - ---- - -### Ліцензія - -Swiftly поширюється за ліцензією MIT. Ви можете ознайомитись з ліцензією у файлі LICENSE. - ---- - -### Вдячність - -Система схем та базові класи SDK надані завдяки [CS2Fixes](https://github.com/Source2ZE/CS2Fixes). - -Інші поля SDK надані завдяки [Source2SDK](https://github.com/neverlosecc/source2sdk/tree/cs2/sdk). - -Дякуємо GAMMACASE, Poggu та всім, хто постійно працює над покращенням спільноти серверів Counter Strike 2. - ---- - -### Статистика - -![Alt](https://repobeats.axiom.co/api/embed/742f846684c4bb9f8314c0a43c2a6b314fc63b6b.svg "Repobeats analytics image") diff --git a/README.md b/README.md deleted file mode 100644 index 902691830..000000000 --- a/README.md +++ /dev/null @@ -1,89 +0,0 @@ -
-

- Swiftly Private Message Logo -

- Swiftly is a server modification plugin for Counter Strike 2 servers which is based on Metamod:Source 2.x. -
- Report Bug - Discord Server -

-

- -
- -README is also available in [Ukrainian](https://github.com/swiftly-solution/swiftly/blob/master/README-UA.md) ![ua](https://raw.githubusercontent.com/stevenrskelton/flag-icon/master/png/16/country-4x3/ua.png) and [Russian](https://github.com/swiftly-solution/swiftly/blob/master/README-RU.md) ![ru](https://raw.githubusercontent.com/stevenrskelton/flag-icon/master/png/16/country-4x3/ru.png) - -![Downloads](https://img.shields.io/github/downloads/swiftly-solution/swiftly/total) ![Contributors](https://img.shields.io/github/contributors/swiftly-solution/swiftly?color=dark-green) ![Issues](https://img.shields.io/github/issues/swiftly-solution/swiftly) ![License](https://img.shields.io/github/license/swiftly-solution/swiftly) - -
- ---- - -### Build Requirements - -- [hl2sdk](https://github.com/alliedmodders/hl2sdk/tree/cs2) (Downloads automatically with the git cloning using Recurse Submodules) -- [metamod-source](https://github.com/alliedmodders/metamod-source) (Downloads automatically with the git cloning using Recurse Submodules) -- [python3](https://www.python.org/) -- [AMBuild](https://github.com/alliedmodders/ambuild) (Make sure `ambuild` command is available via `PATH` for Windows) - ---- - -### Downloads - -- [Public Releases (recomended)](https://github.com/swiftly-solution/swiftly/releases) -- [Builds (use at your own risk)](https://github.com/swiftly-solution/swiftly/actions) - ---- - -### Get Plugins - -- [Discord (recomended)](https://swiftlycs2.net/discord) -- [GitHub Topic](https://github.com/topics/swiftly-solution) - ---- - -### For Developers - -- [Beginners](https://swiftlycs2.net/for-beginners) -- [Plugin Docs](https://swiftlycs2.net/plugin-docs) -- [Extension Docs](https://swiftlycs2.net/ext-docs) -- [SDK Docs](https://swiftlycs2.net/sdk) - ---- - -### Building Commands - -#### Clone Repository - -``` -git clone --recurse-submodules https://github.com/swiftly-solution/swiftly -``` - -#### Build - -``` -./setup.ps1 - Windows -./setup.sh - Linux -``` - ---- - -### License - -Swiftly is licensed under the MIT License. You can view the license in the LICENSE file. - ---- - -### Credits - -The Schema System and the base SDK classes fields provided by [CS2Fixes](https://github.com/Source2ZE/CS2Fixes). - -The rest of SDK fields were provided by [Source2SDK](https://github.com/neverlosecc/source2sdk/tree/cs2/sdk). - -Thanks to GAMMACASE, Poggu, and all the people which are constantly working for the Counter Strike 2 Server Community to become better. - ---- - -### Statistics - -![Alt](https://repobeats.axiom.co/api/embed/742f846684c4bb9f8314c0a43c2a6b314fc63b6b.svg "Repobeats analytics image") diff --git a/alliedmodders/hl2sdk b/alliedmodders/hl2sdk deleted file mode 160000 index f31e5fbbf..000000000 --- a/alliedmodders/hl2sdk +++ /dev/null @@ -1 +0,0 @@ -Subproject commit f31e5fbbfe6d794b7c7b37977810e7457516a8b6 diff --git a/alliedmodders/metamod b/alliedmodders/metamod deleted file mode 160000 index dc41559c7..000000000 --- a/alliedmodders/metamod +++ /dev/null @@ -1 +0,0 @@ -Subproject commit dc41559c7905072feec38b6d45ea14c05da3b855 diff --git a/configure.py b/configure.py deleted file mode 100644 index aee9750cd..000000000 --- a/configure.py +++ /dev/null @@ -1,46 +0,0 @@ -# vim: set sts=2 ts=8 sw=2 tw=99 et: -import sys -try: - from ambuild2 import run, util -except: - try: - import ambuild - sys.stderr.write('It looks like you have AMBuild 1 installed, but this project uses AMBuild 2.\n') - sys.stderr.write('Upgrade to the latest version of AMBuild to continue.\n') - except: - sys.stderr.write('AMBuild must be installed to build this project.\n') - sys.stderr.write('http://www.alliedmods.net/ambuild\n') - sys.exit(1) - -# Hack to show a decent upgrade message, which wasn't done until 2.2. -ambuild_version = getattr(run, 'CURRENT_API', '2.1') -if ambuild_version.startswith('2.1'): - sys.stderr.write("AMBuild 2.2 or higher is required; please update\n") - sys.exit(1) - -parser = run.BuildParser(sourcePath=sys.path[0], api='2.2') -parser.options.add_argument('-n', '--plugin-name', type=str, dest='plugin_name', default=None, - help='Plugin name') -parser.options.add_argument('-a', '--plugin-alias', type=str, dest='plugin_alias', default=None, - help='Plugin alias') -parser.options.add_argument('--hl2sdk-root', type=str, dest='hl2sdk_root', default=None, - help='Root search folder for HL2SDKs') -parser.options.add_argument('--hl2sdk-manifests', type=str, dest='hl2sdk_manifests', default='hl2sdk-manifests/', - help='HL2SDK manifests source tree folder') -parser.options.add_argument('--mms_path', type=str, dest='mms_path', default=None, - help='Metamod:Source source tree folder') -parser.options.add_argument('--enable-debug', action='store_const', const='1', dest='debug', - help='Enable debugging symbols') -parser.options.add_argument('--enable-optimize', action='store_const', const='1', dest='opt', - help='Enable optimization') -parser.options.add_argument('-s', '--sdks', default='all', dest='sdks', - help='Build against specified SDKs; valid args are "all", "present", or ' - 'comma-delimited list of engine names (default: "all")') -parser.options.add_argument('--targets', type=str, dest='targets', default=None, - help="Override the target architecture (use commas to separate multiple targets).") -# AddressSanitizer Instructions: -# Recompile Metamod with RTLD_DEEPBIND removed (may break some std functionality) -# Run server with LD_PRELOAD=/usr/lib/clang/11/lib/linux/libclang_rt.asan-x86_64.so (for SteamRT3) -parser.options.add_argument('--asan', action='store_const', const='1', dest='asan', - help='Build for AddressSanitizer') -parser.Configure() diff --git a/hl2sdk-manifests b/hl2sdk-manifests deleted file mode 160000 index a57b3095a..000000000 --- a/hl2sdk-manifests +++ /dev/null @@ -1 +0,0 @@ -Subproject commit a57b3095a6fc31a98b13e2d73ebb668dac4f1300 diff --git a/plugin_files/bin/scripting/database.js b/plugin_files/bin/scripting/database.js deleted file mode 100644 index 7bd5d357e..000000000 --- a/plugin_files/bin/scripting/database.js +++ /dev/null @@ -1,21 +0,0 @@ -function LoadDatabase(global) { - global.databaseRequestsQueue = {} - - AddEventHandler("OnDatabaseActionPerformed", (event, databaseRequestID, result, err) => { - if(!global.databaseRequestsQueue[databaseRequestID]) return; - - let stackid = RegisterCallstack(GetCurrentPluginName(), "DatabaseCallback") - - try { - global.databaseRequestsQueue[databaseRequestID](err, JSON.parse(result)) - } catch(err) { - console.log("An error has been occured while trying to execute a query.\nError: " + err) - } - - delete databaseRequestsQueue[databaseRequestID]; - UnregisterCallstack(GetCurrentPluginName(), stackid) - return EventResult.Stop - }) -} - -LoadDatabase(globalThis) \ No newline at end of file diff --git a/plugin_files/bin/scripting/database.lua b/plugin_files/bin/scripting/database.lua deleted file mode 100644 index 85869bfd6..000000000 --- a/plugin_files/bin/scripting/database.lua +++ /dev/null @@ -1,21 +0,0 @@ -databaseRequestsQueue = {} -local json_decode = json.decode - -AddEventHandler("OnDatabaseActionPerformed", function(event, databaseRequestID, result, err) - if not databaseRequestsQueue[databaseRequestID] then return EventResult.Continue end - - local debuginfo = debug.getinfo(databaseRequestsQueue[databaseRequestID], "S") - local stackid = RegisterCallstack(GetCurrentPluginName(), - string.format("DatabaseCallback(path=%s,lines=%d..%d)", debuginfo.short_src, debuginfo.linedefined, - debuginfo.lastlinedefined)) - - local status, err = pcall(databaseRequestsQueue[databaseRequestID], err, json_decode(result) or {}) - if not status then - print("An error has been occured while trying to execute a query.\nError: " .. err) - end - - databaseRequestsQueue[databaseRequestID] = nil - UnregisterCallstack(GetCurrentPluginName(), stackid) - - return EventResult.Stop -end) diff --git a/plugin_files/bin/scripting/entity.js b/plugin_files/bin/scripting/entity.js deleted file mode 100644 index e092638a0..000000000 --- a/plugin_files/bin/scripting/entity.js +++ /dev/null @@ -1,14 +0,0 @@ -const LoadEntities = (global) => { - global.AddHookEntityOutput = (classname, output) => { - if(typeof classname != "string") return console.log("AddHookEntityOutput: classname must be a string."); - if(typeof output != "string") return console.log("AddHookEntityOutput: output must be a string."); - - let hookId = hooks.AddEntityOutputHook(classname, output) - - if (hookId == "00000000-0000-0000-0000-000000000000") return - - return { hookId } - } -} - -LoadEntities(globalThis) \ No newline at end of file diff --git a/plugin_files/bin/scripting/entity.lua b/plugin_files/bin/scripting/entity.lua deleted file mode 100644 index bf45f9ae4..000000000 --- a/plugin_files/bin/scripting/entity.lua +++ /dev/null @@ -1,18 +0,0 @@ -function AddHookEntityOutput(classname, output) - if type(classname) ~= "string" then - print("AddHookEntityOutput: classname must be a string.") - return - end - if type(output) ~= "string" then - print("AddHookEntityOutput: output must be a string.") - return - end - - local hookId = hooks:AddEntityOutputHook(classname, output) - - if hookId == "00000000-0000-0000-0000-000000000000" then - return - end - - return { hookId = hookId } -end \ No newline at end of file diff --git a/plugin_files/bin/scripting/events.js b/plugin_files/bin/scripting/events.js deleted file mode 100644 index 3058c9190..000000000 --- a/plugin_files/bin/scripting/events.js +++ /dev/null @@ -1,109 +0,0 @@ -const eventHandlers = {} - -const needsCasting = ["CCheckTransmitInfo"] - -globalThis.sdk = new Proxy({}, { - get: (obj, key, receiver) => { - if(key == "CCheckTransmitInfo") return CCheckTransmitInfo; - else if(IsTypeClass(key)) return GenerateTypeFactory(key); - else if(IsSDKClass(key)) return (ptr) => { - let f = GenerateSDKFactory(key) - f.call(ptr) - return f; - }; - else return undefined; - }, - set: (target, key, val, recv) => { - throw SyntaxError("You cannot set values to SDK."); - } -}) - -const LoadEventFile = (global) => { - global.msgpack_unpack = null - global.msgpack_pack = null - - function setupMsgpack() { - global.msgpack_pack = data => msgpack.pack(data) - global.msgpack_unpack = data => JSON.parse(msgpack.unpack(data)) - } - - AddGlobalEvents((event, eventSource, eventName, eventData) => { - if(global.msgpack_unpack == null || global.msgpack_pack == null) setupMsgpack() - - if (!eventHandlers.hasOwnProperty(eventName)) return EventResult.Continue - if (eventHandlers[eventName].length <= 0) return EventResult.Continue - - let data = msgpack_unpack(eventData) - if(!data) return EventResult.Continue - if(typeof data != "object") return EventResult.Continue - - let newdata = [] - let skipNext = false - for(let i = 0; i < data.length; i++) { - if(!skipNext) { - newdata.push(data[i]) - if(typeof data[i] == "string") { - if((data[i].startsWith("0x") || data[i] == "(null)") && (IsSDKClass(data[i+1]) || needsCasting.includes(data[i+1]))) { - newdata[newdata.length-1] = global["sdk"][data[i+1]](data[i]) - skipNext = true - } - } - } else { - skipNext = false - } - } - - newdata.unshift(event); - - const handlers = eventHandlers[eventName] - for(let i = 0; i < handlers.length; i++) { - if((typeof handlers[i].handle) == "function") { - const result = (handlers[i].handle.apply(global, newdata) || EventResult.Continue); - if(result != EventResult.Continue) return result - } - } - - return EventResult.Continue - }) - - let eventRegistryIndex = 50 - - global.AddEventHandler = (eventName, cb) => { - if(!eventHandlers.hasOwnProperty(eventName)) eventHandlers[eventName] = [] - - eventRegistryIndex = eventRegistryIndex + 1 - eventHandlers[eventName].push({ eventRegistryIndex, handle: cb }) - - RegisterEventHandlerPlugin(eventName) - - return { key: eventRegistryIndex, name: eventName } - } - - global.RemoveEventHandler = (eventData) => { - if(typeof(eventData) != "object" || !eventData.key || !eventData.name) { - console.log("Error: Invalid event data passed to RemoveEventHandler.") - return - } - if(!eventHandlers.hasOwnProperty(eventData.name)) eventHandlers[eventData.name] = [] - - for(let i = 0; i < eventHandlers[eventData.name]; i++) { - if(eventHandlers[eventData.name].eventRegistryIndex == eventData.key) { - eventHandlers[eventData.name].splice(i, 1) - break - } - } - - if(eventHandlers[eventData.name].length == 0) { - RemoveEventHandlerPlugin(eventData.name) - } - } - - global.TriggerEvent = (eventName, ...args) => { - if(global.msgpack_unpack == null || global.msgpack_pack == null) setupMsgpack() - - const encdata = global.msgpack_pack(args); - return TriggerEventInternal(eventName, encdata) - } -} - -LoadEventFile(globalThis) \ No newline at end of file diff --git a/plugin_files/bin/scripting/events.lua b/plugin_files/bin/scripting/events.lua deleted file mode 100644 index e5e15122e..000000000 --- a/plugin_files/bin/scripting/events.lua +++ /dev/null @@ -1,106 +0,0 @@ -local eventHandlers = {} -local msgpack_unpack = msgpack.unpack -local msgpack_pack = msgpack.pack -local table_unpack = table.unpack - -_G = setmetatable(_G, { - __index = function(t, k) - if IsSDKClass(k) then - return GenerateSDKFactory(k) - elseif IsTypeClass(k) then - return GenerateTypeFactory(k) - end - end -}) - -sdk = setmetatable({}, { - __index = function(t, k) - if IsSDKClass(k) then - return GenerateSDKFactory(k) - elseif IsTypeClass(k) then - return GenerateTypeFactory(k) - end - end -}) - -local needsCasting = { - ["CCheckTransmitInfo"] = true -} - -AddGlobalEvents(function(event, eventSource, eventName, eventData) - if not eventHandlers[eventName] then return EventResult.Continue end - if #eventHandlers[eventName] <= 0 then return EventResult.Continue end - - local data = msgpack_unpack(eventData) - if not data then return end - if type(data) ~= "table" then return end - - local newdata = {} - local skipNext = false - for i = 1, #data do - if not skipNext then - newdata[#newdata + 1] = data[i] - if type(data[i]) == "string" then - local first = data[i]:byte(1) - local second = data[i]:byte(2) - if ((first == 48 and second == 120) or (data[i] == "(null)")) and (IsSDKClass(data[i + 1]) or needsCasting[data[i + 1]]) then - if IsSDKClass(data[i + 1]) or needsCasting[data[i + 1]] then - newdata[#newdata] = _G[data[i + 1]](data[i]) - skipNext = true - end - end - end - else - skipNext = false - end - end - - for i = 1, #eventHandlers[eventName] do - local handle = eventHandlers[eventName][i].handle - if type(handle) == "function" then - local result = (handle(event, table_unpack(newdata)) or EventResult.Continue) - if result ~= EventResult.Continue then return result end - end - end - - return EventResult.Continue -end) - -local eventRegistryIndex = 50 - -function AddEventHandler(eventName, cb) - if not eventHandlers[eventName] then eventHandlers[eventName] = {} end - - eventRegistryIndex = eventRegistryIndex + 1 - table.insert(eventHandlers[eventName], { eventRegistryIndex = eventRegistryIndex, handle = cb }) - - RegisterEventHandlerPlugin(eventName) - - return { key = eventRegistryIndex, name = eventName } -end - -function RemoveEventHandler(eventData) - if not eventData.key or not eventData.name then - print("Error: Invalid event data passed to RemoveEventHandler.") - return - end - if not eventHandlers[eventData.name] then eventHandlers[eventData.name] = {} end - - for i = 1, #eventHandlers[eventData.name] do - if eventHandlers[eventData.name].eventRegistryIndex == eventData.key then - table.remove(eventHandlers[eventData.name], i) - break - end - end - - if #eventHandlers[eventData.name] == 0 then - RemoveEventHandlerPlugin(eventData.name) - end -end - -function TriggerEvent(eventName, ...) - local encodedData = msgpack_pack({ ... }) - - local eventResult, eventData, _ = table_unpack(TriggerEventInternal(eventName, encodedData)) - return eventResult, eventData -end diff --git a/plugin_files/bin/scripting/exports.js b/plugin_files/bin/scripting/exports.js deleted file mode 100644 index 46d4e6d8c..000000000 --- a/plugin_files/bin/scripting/exports.js +++ /dev/null @@ -1,39 +0,0 @@ -function LoadExports(global) { - let pluginProxyCache = {} - - global.exp = (exportName, callback) => { - AddEventHandler(`export:${GetCurrentPluginName()}:${exportName}`, (event, ...args) => { - event.SetReturn(callback.apply(global, args)) - return EventResult.Stop - }) - } - - global.exports = new Proxy({}, { - get: (tbl, pluginName) => { - if(!pluginProxyCache[pluginName]) { - pluginProxyCache[pluginName] = new Proxy({}, { - get: (tbl, funcName) => { - return (...args) => { - let [eventRt, eventData] = TriggerEvent(`export:${pluginName}:${funcName}`, ...args) - if (eventRt != EventResult.Stop) { - console.log(`Export '${funcName}' in '${pluginName}' doesn't exists.`) - } - return eventData.GetReturn() - } - }, - set: (tbl, key, val) => { - console.log("You can't create a new value on this object.") - return false - } - }) - } - return pluginProxyCache[pluginName] - }, - set: (tbl, key, val) => { - console.log("You can't create a new value on this object.") - return false - } - }) -} - -LoadExports(globalThis) \ No newline at end of file diff --git a/plugin_files/bin/scripting/exports.lua b/plugin_files/bin/scripting/exports.lua deleted file mode 100644 index 2816aaddc..000000000 --- a/plugin_files/bin/scripting/exports.lua +++ /dev/null @@ -1,53 +0,0 @@ -local table_unpack = table.unpack - -function export(exportName, callback) - AddEventHandler("export:"..GetCurrentPluginName()..":"..exportName, function(event, ...) - local elems = {...} - for i=1,#elems do - if type(elems[i]) == "string" then - local res, data = serpent.load(elems[i], { safe = false }) - if res == true and type(data) == "function" then - elems[i] = data - end - end - end - - event:SetReturn(callback(table_unpack(elems))) - return EventResult.Stop - end) -end - -exports = {} - -setmetatable(exports, { - __index = function(tbl, pluginName) - local plugin = pluginName - - return setmetatable({}, { - __index = function(tbl, key) - return function(self, ...) - local elems = {...} - for i=1,#elems do - if type(elems[i]) == "function" then - elems[i] = serpent.dump(elems[i]) - end - end - - local eventRt, eventData = TriggerEvent("export:"..plugin..":"..key, table_unpack(elems)) - if eventRt ~= EventResult.Stop then - print("Export '"..key.."' in '"..plugin.."' doesn't exists.") - end - return eventData:GetReturn() - end - end, - - __newindex = function(tbl, key, val) - print("You can't create a new index on this table.") - end - }) - end, - - __newindex = function(tbl, key, val) - print("You can't create a new index on this table.") - end -}) \ No newline at end of file diff --git a/plugin_files/bin/scripting/hooks.js b/plugin_files/bin/scripting/hooks.js deleted file mode 100644 index 593587bc9..000000000 --- a/plugin_files/bin/scripting/hooks.js +++ /dev/null @@ -1,78 +0,0 @@ -function LoadHooks(global) { - global.AddHook = (mem, argsList, returnType) => { - if (typeof argsList !== "string") { - console.log("AddHook: argsList must be a string."); - return; - } - if (typeof returnType !== "string") { - console.log("AddHook: returnType must be a string."); - return; - } - - let hookId = hooks.Add(mem, argsList, returnType); - - if (hookId === "00000000-0000-0000-0000-000000000000") { - return; - } - - return { hookId }; - }; - - global.AddPreHookListener = (hookHandle, callback) => { - if (typeof hookHandle !== "object" || hookHandle === null) { - console.log("Error: Invalid hook data passed to AddPreHookListener."); - return; - } - - if (typeof hookHandle.hookId !== "string") { - console.log("Error: Invalid hook data passed to AddPreHookListener."); - return; - } - - return AddEventHandler(`hook:Pre:${hookHandle.hookId}`, callback); - }; - - global.AddPostHookListener = (hookHandle, callback) => { - if (typeof hookHandle !== "object" || hookHandle === null) { - console.log("Error: Invalid hook data passed to AddPostHookListener."); - return; - } - - if (typeof hookHandle.hookId !== "string") { - console.log("Error: Invalid hook data passed to AddPostHookListener."); - return; - } - - return AddEventHandler(`hook:Post:${hookHandle.hookId}`, callback); - }; - - global.RemoveHookListener = (hookListener) => { - if (typeof hookListener !== "object" || hookListener === null) { - console.log("Error: Invalid hook data passed to RemoveHookListener."); - return; - } - - if (!hookListener.key || !hookListener.name) { - console.log("Error: Invalid hook data passed to RemoveHookListener."); - return; - } - - RemoveEventHandler(hookListener); - }; - - global.CallHook = (hookHandle, ...args) => { - if (typeof hookHandle !== "object" || hookHandle === null) { - console.log("Error: Invalid hook data passed to CallHook."); - return; - } - - if (typeof hookHandle.hookId !== "string") { - console.log("Error: Invalid hook data passed to CallHook."); - return; - } - - return hooks.Call(hookHandle.hookId, global.msgpack_pack(args)); - }; -} - -LoadHooks(globalThis) \ No newline at end of file diff --git a/plugin_files/bin/scripting/hooks.lua b/plugin_files/bin/scripting/hooks.lua deleted file mode 100644 index 76c4fe47b..000000000 --- a/plugin_files/bin/scripting/hooks.lua +++ /dev/null @@ -1,76 +0,0 @@ -local msgpack_pack = msgpack.pack - -function AddHook(mem, args_list, return_type) - if type(args_list) ~= "string" then - print("AddHook: args_list must be a string.") - return - end - if type(return_type) ~= "string" then - print("AddHook: return_type must be a string.") - return - end - - local hookId = hooks:Add(mem, args_list, return_type) - - if hookId == "00000000-0000-0000-0000-000000000000" then - return - end - - return { hookId = hookId } -end - -function AddPreHookListener(hookHandle, callback) - if type(hookHandle) ~= "table" then - print("Error: Invalid hook data passed to AddPreHookListener.") - return - end - - if type(hookHandle.hookId) ~= "string" then - print("Error: Invalid hook data passed to AddPreHookListener.") - return - end - - return AddEventHandler("hook:Pre:"..hookHandle.hookId, callback) -end - -function AddPostHookListener(hookHandle, callback) - if type(hookHandle) ~= "table" then - print("Error: Invalid hook data passed to AddPostHookListener.") - return - end - - if type(hookHandle.hookId) ~= "string" then - print("Error: Invalid hook data passed to AddPostHookListener.") - return - end - - return AddEventHandler("hook:Post:"..hookHandle.hookId, callback) -end - -function RemoveHookListener(hookListener) - if type(hookListener) ~= "table" then - print("Error: Invalid hook data passed to RemoveHookListener.") - return - end - - if not hookListener.key or not hookListener.name then - print("Error: Invalid hook data passed to RemoveHookListener.") - return - end - - RemoveEventHandler(hookListener) -end - -function CallHook(hookHandle, ...) - if type(hookHandle) ~= "table" then - print("Error: Invalid hook data passed to AddPostHookListener.") - return - end - - if type(hookHandle.hookId) ~= "string" then - print("Error: Invalid hook data passed to AddPostHookListener.") - return - end - - return hooks:Call(hookHandle.hookId, msgpack_pack({...})) -end \ No newline at end of file diff --git a/plugin_files/bin/scripting/serpent.lua b/plugin_files/bin/scripting/serpent.lua deleted file mode 100644 index 972314c6f..000000000 --- a/plugin_files/bin/scripting/serpent.lua +++ /dev/null @@ -1,181 +0,0 @@ ---[[ -GitHub: https://github.com/pkulchenko/serpent/tree/139fc18263bc5ffecc1729147891f1eb383046bf - -Serpent source is released under the MIT License - -Copyright (c) 2012-2018 Paul Kulchenko (paul@kulchenko.com) - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in -all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN -THE SOFTWARE. -]] - -local n, v = "serpent", "0.303" -- (C) 2012-18 Paul Kulchenko; MIT License -local c, d = "Paul Kulchenko", "Lua serializer and pretty printer" -local snum = {[tostring(1/0)]='1/0 --[[math.huge]]',[tostring(-1/0)]='-1/0 --[[-math.huge]]',[tostring(0/0)]='0/0'} -local badtype = {thread = true, userdata = true, cdata = true} -local getmetatable = debug and debug.getmetatable or getmetatable -local pairs = function(t) return next, t end -- avoid using __pairs in Lua 5.2+ -local keyword, globals, G = {}, {}, (_G or _ENV) -for _,k in ipairs({'and', 'break', 'do', 'else', 'elseif', 'end', 'false', - 'for', 'function', 'goto', 'if', 'in', 'local', 'nil', 'not', 'or', 'repeat', - 'return', 'then', 'true', 'until', 'while'}) do keyword[k] = true end -for k,v in pairs(G) do globals[v] = k end -- build func to name mapping -for _,g in ipairs({'coroutine', 'debug', 'io', 'math', 'string', 'table', 'os'}) do - for k,v in pairs(type(G[g]) == 'table' and G[g] or {}) do globals[v] = g..'.'..k end end - -local function s(t, opts) - local name, indent, fatal, maxnum = opts.name, opts.indent, opts.fatal, opts.maxnum - local sparse, custom, huge = opts.sparse, opts.custom, not opts.nohuge - local space, maxl = (opts.compact and '' or ' '), (opts.maxlevel or math.huge) - local maxlen, metatostring = tonumber(opts.maxlength), opts.metatostring - local iname, comm = '_'..(name or ''), opts.comment and (tonumber(opts.comment) or math.huge) - local numformat = opts.numformat or "%.17g" - local seen, sref, syms, symn = {}, {'local '..iname..'={}'}, {}, 0 - local function gensym(val) return '_'..(tostring(tostring(val)):gsub("[^%w]",""):gsub("(%d%w+)", - -- tostring(val) is needed because __tostring may return a non-string value - function(s) if not syms[s] then symn = symn+1; syms[s] = symn end return tostring(syms[s]) end)) end - local function safestr(s) return type(s) == "number" and (huge and snum[tostring(s)] or numformat:format(s)) - or type(s) ~= "string" and tostring(s) -- escape NEWLINE/010 and EOF/026 - or ("%q"):format(s):gsub("\010","n"):gsub("\026","\\026") end - -- handle radix changes in some locales - if opts.fixradix and (".1f"):format(1.2) ~= "1.2" then - local origsafestr = safestr - safestr = function(s) return type(s) == "number" - and (nohuge and snum[tostring(s)] or numformat:format(s):gsub(",",".")) or origsafestr(s) - end - end - local function comment(s,l) return comm and (l or 0) < comm and ' --[['..select(2, pcall(tostring, s))..']]' or '' end - local function globerr(s,l) return globals[s] and globals[s]..comment(s,l) or not fatal - and safestr(select(2, pcall(tostring, s))) or error("Can't serialize "..tostring(s)) end - local function safename(path, name) -- generates foo.bar, foo[3], or foo['b a r'] - local n = name == nil and '' or name - local plain = type(n) == "string" and n:match("^[%l%u_][%w_]*$") and not keyword[n] - local safe = plain and n or '['..safestr(n)..']' - return (path or '')..(plain and path and '.' or '')..safe, safe end - local alphanumsort = type(opts.sortkeys) == 'function' and opts.sortkeys or function(k, o, n) -- k=keys, o=originaltable, n=padding - local maxn, to = tonumber(n) or 12, {number = 'a', string = 'b'} - local function padnum(d) return ("%0"..tostring(maxn).."d"):format(tonumber(d)) end - table.sort(k, function(a,b) - -- sort numeric keys first: k[key] is not nil for numerical keys - return (k[a] ~= nil and 0 or to[type(a)] or 'z')..(tostring(a):gsub("%d+",padnum)) - < (k[b] ~= nil and 0 or to[type(b)] or 'z')..(tostring(b):gsub("%d+",padnum)) end) end - local function val2str(t, name, indent, insref, path, plainindex, level) - local ttype, level, mt = type(t), (level or 0), getmetatable(t) - local spath, sname = safename(path, name) - local tag = plainindex and - ((type(name) == "number") and '' or name..space..'='..space) or - (name ~= nil and sname..space..'='..space or '') - if seen[t] then -- already seen this element - sref[#sref+1] = spath..space..'='..space..seen[t] - return tag..'nil'..comment('ref', level) - end - -- protect from those cases where __tostring may fail - if type(mt) == 'table' and metatostring ~= false then - local to, tr = pcall(function() return mt.__tostring(t) end) - local so, sr = pcall(function() return mt.__serialize(t) end) - if (to or so) then -- knows how to serialize itself - seen[t] = insref or spath - t = so and sr or tr - ttype = type(t) - end -- new value falls through to be serialized - end - if ttype == "table" then - if level >= maxl then return tag..'{}'..comment('maxlvl', level) end - seen[t] = insref or spath - if next(t) == nil then return tag..'{}'..comment(t, level) end -- table empty - if maxlen and maxlen < 0 then return tag..'{}'..comment('maxlen', level) end - local maxn, o, out = math.min(#t, maxnum or #t), {}, {} - for key = 1, maxn do o[key] = key end - if not maxnum or #o < maxnum then - local n = #o -- n = n + 1; o[n] is much faster than o[#o+1] on large tables - for key in pairs(t) do - if o[key] ~= key then n = n + 1; o[n] = key end - end - end - if maxnum and #o > maxnum then o[maxnum+1] = nil end - if opts.sortkeys and #o > maxn then alphanumsort(o, t, opts.sortkeys) end - local sparse = sparse and #o > maxn -- disable sparsness if only numeric keys (shorter output) - for n, key in ipairs(o) do - local value, ktype, plainindex = t[key], type(key), n <= maxn and not sparse - if opts.valignore and opts.valignore[value] -- skip ignored values; do nothing - or opts.keyallow and not opts.keyallow[key] - or opts.keyignore and opts.keyignore[key] - or opts.valtypeignore and opts.valtypeignore[type(value)] -- skipping ignored value types - or sparse and value == nil then -- skipping nils; do nothing - elseif ktype == 'table' or ktype == 'function' or badtype[ktype] then - if not seen[key] and not globals[key] then - sref[#sref+1] = 'placeholder' - local sname = safename(iname, gensym(key)) -- iname is table for local variables - sref[#sref] = val2str(key,sname,indent,sname,iname,true) - end - sref[#sref+1] = 'placeholder' - local path = seen[t]..'['..tostring(seen[key] or globals[key] or gensym(key))..']' - sref[#sref] = path..space..'='..space..tostring(seen[value] or val2str(value,nil,indent,path)) - else - out[#out+1] = val2str(value,key,indent,nil,seen[t],plainindex,level+1) - if maxlen then - maxlen = maxlen - #out[#out] - if maxlen < 0 then break end - end - end - end - local prefix = string.rep(indent or '', level) - local head = indent and '{\n'..prefix..indent or '{' - local body = table.concat(out, ','..(indent and '\n'..prefix..indent or space)) - local tail = indent and "\n"..prefix..'}' or '}' - return (custom and custom(tag,head,body,tail,level) or tag..head..body..tail)..comment(t, level) - elseif badtype[ttype] then - seen[t] = insref or spath - return tag..globerr(t, level) - elseif ttype == 'function' then - seen[t] = insref or spath - if opts.nocode then return tag.."function() --[[..skipped..]] end"..comment(t, level) end - local ok, res = pcall(string.dump, t, true) - local func = ok and "((loadstring or load)("..safestr(res)..",'@serialized'))"..comment(t, level) - return tag..(func or globerr(t, level)) - else return tag..safestr(t) end -- handle all other types - end - local sepr = indent and "\n" or ";"..space - local body = val2str(t, name, indent) -- this call also populates sref - local tail = #sref>1 and table.concat(sref, sepr)..sepr or '' - local warn = opts.comment and #sref>1 and space.."--[[incomplete output with shared/self-references skipped]]" or '' - return not name and body..warn or "do local "..body..sepr..tail.."return "..name..sepr.."end" -end - -local function deserialize(data, opts) - local env = (opts and opts.safe == false) and G - or setmetatable({}, { - __index = function(t,k) return t end, - __call = function(t,...) error("cannot call functions") end - }) - local f, res = (loadstring or load)('return '..data, nil, nil, env) - if not f then f, res = (loadstring or load)(data, nil, nil, env) end - if not f then return f, res end - if setfenv then setfenv(f, env) end - return pcall(f) -end - -local function merge(a, b) if b then for k,v in pairs(b) do a[k] = v end end; return a; end - -serpent = { - serialize = s, - load = deserialize, - dump = function(a, opts) return s(a, merge({name = '_', compact = true, sparse = true}, opts)) end, - line = function(a, opts) return s(a, merge({sortkeys = true, comment = true}, opts)) end, - block = function(a, opts) return s(a, merge({indent = ' ', sortkeys = true, comment = true}, opts)) end -} \ No newline at end of file diff --git a/plugin_files/bin/scripting/timers.js b/plugin_files/bin/scripting/timers.js deleted file mode 100644 index 106093ed7..000000000 --- a/plugin_files/bin/scripting/timers.js +++ /dev/null @@ -1,66 +0,0 @@ -function LoadTimers(global) { - let timerIds = 50 - let timersList = {} - - global.SetTimeout = (delay, callback) => { - if(typeof delay != "number") return console.log("The delay needs to be a number.") - if(typeof callback != "function") return console.log("The callback needs to be a function.") - - AddTimeout(delay, callback) - } - - global.NextTick = (callback) => { - if(typeof callback != "function") return console.log("The callback needs to be a function.") - - global.SetTimeout(1, callback) - } - - global.StopTimer = (timerId) => { - if (typeof timerId !== "number") { - console.log("The Timer ID needs to be a number."); - return; - } - - if (!timersList[timerId]) { - console.log("Invalid Timer ID."); - return; - } - - delete timersList[timerId]; - } - - global.SetTimer = (delay, callback) => { - if(typeof delay != "number") return console.log("The delay needs to be a number.") - if(typeof callback != "function") return console.log("The callback needs to be a function.") - - timerIds ++ - const timerId = timerIds - - timersList[timerId] = { - id: timerId, - callback, - timeoutFunc: () => { - if(timersList[timerId]) { - timersList[timerId].callback() - if(timersList[timerId]) { - SetTimeout(delay, timersList[timerId].timeoutFunc) - } - } - } - } - - SetTimeout(delay, timersList[timerId].timeoutFunc) - - return timerId - } - - global.setInterval = (callback, timeout) => { - return SetTimer(timeout, callback) - } - - global.setTimeout = (callback, timeout) => { - return SetTimeout(timeout, callback) - } -} - -LoadTimers(globalThis) \ No newline at end of file diff --git a/plugin_files/bin/scripting/timers.lua b/plugin_files/bin/scripting/timers.lua deleted file mode 100644 index 50edb07a9..000000000 --- a/plugin_files/bin/scripting/timers.lua +++ /dev/null @@ -1,68 +0,0 @@ -function SetTimeout(delay, callback) - if type(delay) ~= "number" then - return print("The delay needs to be a number.") - end - if type(callback) ~= "function" then - return print("The callback needs to be a function.") - end - - AddTimeout(delay, callback) -end - -local timerIds = 50 -local timersTable = {} - -function SetTimer(delay, callback) - if type(delay) ~= "number" then - return print("The delay needs to be a number.") - end - if type(callback) ~= "function" then - return print("The callback needs to be a function.") - end - - timerIds = timerIds + 1 - - local timerId = timerIds - - timersTable[timerId] = { - id = timerId, - callback = callback, - timeoutFunction = function() - if timersTable[timerId] then - local debuginfo = debug.getinfo(timersTable[timerId].callback, "S") - local stackid = RegisterCallstack(GetCurrentPluginName(), - string.format("TimeoutCallback(path=%s,lines=%d..%d)", debuginfo.short_src, debuginfo.linedefined, - debuginfo.lastlinedefined)) - timersTable[timerId].callback() - UnregisterCallstack(GetCurrentPluginName(), stackid) - if timersTable[timerId] then - SetTimeout(delay, timersTable[timerId].timeoutFunction) - end - end - end - } - - SetTimeout(delay, timersTable[timerId].timeoutFunction) - - return timerId -end - -function StopTimer(timerId) - if type(timerId) ~= "number" then - return print("The Timer ID needs to be a number.") - end - - if not timersTable[timerId] then - return print("Invalid Timer ID.") - end - - timersTable[timerId] = nil -end - -function NextTick(callback) - if type(callback) ~= "function" then - return print("The callback needs to be a function.") - end - - SetTimeout(1, callback) -end diff --git a/plugin_files/bin/scripting/utils.js b/plugin_files/bin/scripting/utils.js deleted file mode 100644 index 8f87baa86..000000000 --- a/plugin_files/bin/scripting/utils.js +++ /dev/null @@ -1,178 +0,0 @@ -function LoadUtils(global) { - const teamSelector = { - "@ct": Team.CT, - "@t": Team.T, - "@spec": Team.Spectator - } - - const lifeStateSelector = { - "@alive": sdk.LifeState_t.LIFE_ALIVE, - "@dying": sdk.LifeState_t.LIFE_DYING, - "@dead": sdk.LifeState_t.LIFE_DEAD - } - - const weaponlist = [ - "weapon_ak47", - "weapon_aug", - "weapon_awp", - "weapon_bizon", - "weapon_c4", - "weapon_cz75a", - "weapon_deagle", - "weapon_decoy", - "weapon_elite", - "weapon_famas", - "weapon_fiveseven", - "weapon_flashbang", - "weapon_g3sg1", - "weapon_galilar", - "weapon_glock", - "weapon_healthshot", - "weapon_hegrenade", - "weapon_incgrenade", - "weapon_knife", - "weapon_m249", - "weapon_m4a1", - "weapon_mac10", - "weapon_mag7", - "weapon_molotov", - "weapon_mp5sd", - "weapon_mp7", - "weapon_mp9", - "weapon_negev", - "weapon_nova", - "weapon_p2000", - "weapon_p250", - "weapon_p90", - "weapon_sawedoff", - "weapon_scar20", - "weapon_sg556", - "weapon_smokegrenade", - "weapon_ssg08", - "weapon_tec9", - "weapon_ump45", - "weapon_usp_silencer", - "weapon_xm1014" - ] - - const itemlist = [ - "item_assaultsuit", - "item_defuser", - "item_kevlar", - ] - - global.IsValidWeapon = (weapon) => { - return weaponlist.includes(weapon) - } - - global.IsValidItem = (item) => { - return itemlist.includes(item) - } - - global.ComputePrettyTime = (seconds) => { - if (seconds == 0) return FetchTranslation("core.forever") - else if (seconds < 60) return FetchTranslation("core.seconds").replace(new RegExp("{TIME}", "g"), String(seconds)) - else if (seconds < 3600) return FetchTranslation("core.minutes").replace(new RegExp("{TIME}", "g"), String(Math.floor(seconds / 60))) - else if (seconds < 86400) return FetchTranslation("core.hours").replace(new RegExp("{TIME}", "g"), String(Math.floor(seconds / 3600))) - else return FetchTranslation("core.days").replace(new RegExp("{TIME}", "g"), String(Math.floor(seconds / 86400))) - } - - global.uuid = () => { - const uuid = new Array(36); - for (let i = 0; i < 36; i++) { - uuid[i] = Math.floor(Math.random() * 16); - } - uuid[14] = 4; - uuid[19] = uuid[19] &= ~(1 << 2); - uuid[19] = uuid[19] |= (1 << 3); - uuid[8] = uuid[13] = uuid[18] = uuid[23] = '-'; - return uuid.map((x) => x.toString(16)).join(''); - } - - global.ReplyToCommand = (playerid, prefix, str) => { - if (playerid == -1) { - console.log(str) - } else { - const player = GetPlayer(playerid) - if(!player) return; - if(player.IsFakeClient()) return; - player.SendMsg(MessageType.Chat, `${prefix} ${str}`) - } - } - - global.FindPlayersByTarget = (target, matchbots) => { - if(matchbots == null || matchbots == undefined) matchbots = true; - - let matchedPlayers = [] - - for(let i = 0; i < playermanager.GetPlayerCap(); i++) { - const player = GetPlayer(i) - if(!player) continue; - - if(target == "@all") { - matchedPlayers.push(player) - continue; - } - - if(target.startsWith("#")) { - const pid = target.split("#").pop() - if(pid == undefined) continue; - - if(String(i) == String(pid)) { - matchedPlayers.push(player) - continue - } - } - - if(teamSelector[target]) { - const cbaseentity = sdk.CBaseEntity(player.CCSPlayerPawn()) - if(cbaseentity) { - if(cbaseentity.IsValid()) { - if(cbaseentity.TeamNum == teamSelector[target]) { - matchedPlayers.push(player) - continue - } - } - } - } - - if(lifeStateSelector[target]) { - const cbaseentity = sdk.CBaseEntity(player.CCSPlayerPawn()) - if(cbaseentity) { - if(cbaseentity.IsValid()) { - if(cbaseentity.LifeState == lifeStateSelector[target]) { - matchedPlayers.push(player) - continue - } - } - } - } - - if(String(player.GetSteamID()) == target || player.GetSteamID2() == target) { - matchedPlayers.push(player) - continue; - } - - const controller = player.CBasePlayerController() - if(controller) { - if(controller.IsValid()) { - if(controller.PlayerName.includes(target)) { - matchedPlayers.push(player) - continue; - } - } - } - - const [result, eventRet] = TriggerEvent("FindPlayerByTarget", i, target) - const returnValue = eventRet.GetReturn() - if (returnValue == true) { - matchedPlayers.push(player) - continue - } - } - - return matchedPlayers - } -} - -LoadUtils(globalThis) \ No newline at end of file diff --git a/plugin_files/bin/scripting/utils.lua b/plugin_files/bin/scripting/utils.lua deleted file mode 100644 index 7a1c5c044..000000000 --- a/plugin_files/bin/scripting/utils.lua +++ /dev/null @@ -1,268 +0,0 @@ -local teamSelector = { - ["@ct"] = Team.CT, - ["@t"] = Team.T, - ["@spec"] = Team.Spectator -} - -local lifeStateSelector = { - ["@alive"] = LifeState_t.LIFE_ALIVE, - ["@dying"] = LifeState_t.LIFE_DYING, - ["@dead"] = LifeState_t.LIFE_DEAD -} - -function FindPlayersByTarget(target, matchbots) - if matchbots == nil then matchbots = true end - local matchedPlayers = {} - target = tostring(target) - - for i=0,playermanager:GetPlayerCap()-1,1 do - local fetchedPlayer = GetPlayer(i) - if not fetchedPlayer then goto findplayersbytargetcontinue end - - if fetchedPlayer:IsFakeClient() and not matchbots then goto findplayersbytargetcontinue end - - if target == "@all" then - table.insert(matchedPlayers, fetchedPlayer) - goto findplayersbytargetcontinue - end - - --[[ userid ]] - if target:sub(1,1) == "#" then - local playerid = target:sub(2) - if playerid then - if i == tonumber(playerid) then - table.insert(matchedPlayers, fetchedPlayer) - goto findplayersbytargetcontinue - end - end - end - - --[[ team ]] - if teamSelector[target] then - local cbaseentity = CBaseEntity(fetchedPlayer:CCSPlayerPawn()) - if cbaseentity then - if cbaseentity:IsValid() then - if cbaseentity.TeamNum == teamSelector[target] then - table.insert(matchedPlayers, fetchedPlayer) - goto findplayersbytargetcontinue - end - end - end - end - - --[[ life state ]] - if lifeStateSelector[target] then - local cbaseentity = CBaseEntity(fetchedPlayer:CCSPlayerPawn()) - if cbaseentity then - if cbaseentity:IsValid() then - if cbaseentity.LifeState == lifeStateSelector[target] then - table.insert(matchedPlayers, fetchedPlayer) - goto findplayersbytargetcontinue - end - end - end - end - - --[[ steamid, steamid64, name ]] - if tostring(fetchedPlayer:GetSteamID()) == target or fetchedPlayer:GetSteamID2() == target then - table.insert(matchedPlayers, fetchedPlayer) - goto findplayersbytargetcontinue - end - - local cbaseplayercontroller = fetchedPlayer:CBasePlayerController() - if cbaseplayercontroller then - if cbaseplayercontroller:IsValid() then - if cbaseplayercontroller.PlayerName:find(target) then - table.insert(matchedPlayers, fetchedPlayer) - goto findplayersbytargetcontinue - end - end - end - - local result, eventRet = TriggerEvent("FindPlayerByTarget", i, target) - local returnValue = eventRet:GetReturn() - if returnValue == true then - table.insert(matchedPlayers, fetchedPlayer) - goto findplayersbytargetcontinue - end - - ::findplayersbytargetcontinue:: - end - - return matchedPlayers -end - -function ReplyToCommand(playerid, prefix, str) - if playerid == -1 then - print(str) - else - local player = GetPlayer(playerid) - if not player then return end - if player:IsFakeClient() then return end - player:SendMsg(MessageType.Chat, prefix.." "..str) - end -end - -local random = math.random -function uuid() - local template ='xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx' - return string.gsub(template, '[xy]', function (c) - local v = (c == 'x') and random(0, 0xf) or random(8, 0xb) - return string.format('%x', v) - end) -end - -function ComputePrettyTime(seconds) - if seconds == 0 then return FetchTranslation("core.forever") - elseif seconds < 60 then return FetchTranslation("core.seconds"):gsub("{TIME}", seconds) - elseif seconds < 3600 then return FetchTranslation("core.minutes"):gsub("{TIME}", math.floor(seconds / 60)) - elseif seconds < 86400 then return FetchTranslation("core.hours"):gsub("{TIME}", math.floor(seconds / 3600)) - else return FetchTranslation("core.days"):gsub("{TIME}", math.floor(seconds / 86400)) end -end - -string.split = function(str, split) - local splitted = {} - for split in string.gmatch(str or "", "[^"..split.."]+") do - table.insert(splitted, split) - end - return splitted -end - ---- @param str string ---- @return string -string.trim = function(str) - return (str:gsub("^%s*(.-)%s*$", "%1")) -end - - ---- @param value any The value to be matched against. Can be a number or a string. ---- @param cases table ---- @return any Returns -switch = function(value, cases) - local case = cases[value] - if case then - if type(case) == "function" then - return case() - else - return case - end - elseif cases.default then - if type(cases.default) == "function" then - return cases.default() - else - return cases.default - end - end -end - ---- @param tbl table The table to be mapped. ---- @param func function A function that takes a value and key as parameters and returns a new value. ---- @return table A new table with the transformed values. -table.map = function(tbl, func) - local result = {} - for key, value in next, tbl do - result[key] = func(value, key) - end - return result -end - ---- @param tbl table The table to be filtered. ---- @param predicate function A function that takes a value and key as parameters and returns a boolean. ---- @return table A new table containing only the elements for which the predicate returned true. -table.filter = function(tbl, predicate) - local result = {} - local index = 1 - for key, value in next, tbl do - if predicate(value, key) then - result[index] = value - index = index + 1 - end - end - return result -end - ---- @param tbl table The table to search. ---- @param value any the key to search for. ---- @return number|nil The key returned. -table.find = function(tbl, value) - for key, val in next, tbl do - if val == value then - return key - end - end - return nil -end - ---- @param tbl table The table to search. ---- @param value any The value to search for. ---- @return boolean True if the value exists in the table, false otherwise. -table.contains = function(tbl, value) - for _, val in next, tbl do - if val == value then - return true - end - end - return false -end - -local weaponlist = { - ["weapon_ak47"] = true, - ["weapon_aug"] = true, - ["weapon_awp"] = true, - ["weapon_bizon"] = true, - ["weapon_c4"] = true, - ["weapon_cz75a"] = true, - ["weapon_deagle"] = true, - ["weapon_decoy"] = true, - ["weapon_elite"] = true, - ["weapon_famas"] = true, - ["weapon_fiveseven"] = true, - ["weapon_flashbang"] = true, - ["weapon_g3sg1"] = true, - ["weapon_galilar"] = true, - ["weapon_glock"] = true, - ["weapon_healthshot"] = true, - ["weapon_hegrenade"] = true, - ["weapon_incgrenade"] = true, - ["weapon_knife"] = true, - ["weapon_m249"] = true, - ["weapon_m4a1"] = true, - ["weapon_mac10"] = true, - ["weapon_mag7"] = true, - ["weapon_molotov"] = true, - ["weapon_mp5sd"] = true, - ["weapon_mp7"] = true, - ["weapon_mp9"] = true, - ["weapon_negev"] = true, - ["weapon_nova"] = true, - ["weapon_p2000"] = true, - ["weapon_p250"] = true, - ["weapon_p90"] = true, - ["weapon_sawedoff"] = true, - ["weapon_scar20"] = true, - ["weapon_sg556"] = true, - ["weapon_smokegrenade"] = true, - ["weapon_ssg08"] = true, - ["weapon_tec9"] = true, - ["weapon_ump45"] = true, - ["weapon_usp_silencer"] = true, - ["weapon_xm1014"] = true -} - --- In the future, we may need to add more items here. --- For now, I've only added the ones that are working. -local itemlist = { - ["item_assaultsuit"] = true, -- Kevlar + Helmet - ["item_defuser"] = true, -- Defuse Kit - ["item_kevlar"] = true -- Kevlar -} - --- Function to check if the weapon is valid -function IsValidWeapon(weapon) - return weaponlist[weapon] ~= nil -end - --- Function to check if the item is valid -function IsValidItem(item) - return itemlist[item] ~= nil -end diff --git a/plugin_files/configs/chat.example.json b/plugin_files/configs/chat.example.json deleted file mode 100644 index cf551fe51..000000000 --- a/plugin_files/configs/chat.example.json +++ /dev/null @@ -1,18 +0,0 @@ -{ - "Cstrike_Chat_T": "[T] {TAG}{NAME}: {MESSAGE}", - "Cstrike_Chat_T_Loc": "[T] {TAG}{NAME} {GREEN}@{LOCATION}: {MESSAGE}", - "Cstrike_Chat_T_Dead": "[T] {TAG}{NAME} {GREY}[DEAD]{DEFAULT}: {MESSAGE}", - "Cstrike_Chat_CT": "[CT] {TAG}{NAME}: {MESSAGE}", - "Cstrike_Chat_CT_Loc": "[CT] {TAG}{NAME} {GREEN}@{LOCATION}: {MESSAGE}", - "Cstrike_Chat_CT_Dead": "[CT] {TAG}{NAME} {GREY}[DEAD]{DEFAULT}: {MESSAGE}", - "Cstrike_Chat_All": "[ALL] {TAG}{NAME}: {MESSAGE}", - "Cstrike_Chat_AllDead": "[ALL] {TAG}{NAME}: {MESSAGE}", - "Cstrike_Chat_AllSpec": "[ALL] {TAG}{NAME} {DEFAULT}[SPEC]: {MESSAGE}", - "Cstrike_Chat_Spec": "{TAG}{NAME} {DEFAULT}[SPEC]: {MESSAGE}", - "#SFUI_TitlesTXT_Fire_in_the_hole": "{NAME}{GREEN}@{LOCATION}{red}➟ HE Grenade!", - "#SFUI_TitlesTXT_Molotov_in_the_hole": "{NAME}{GREEN}@{LOCATION}{red}➟ Molotov!", - "#SFUI_TitlesTXT_Flashbang_in_the_hole": "{NAME}{GREEN}@{LOCATION}{blue}➟ Flashbang!", - "#SFUI_TitlesTXT_Incendiary_in_the_hole": "{NAME}{GREEN}@{LOCATION}{red}➟ Incendiary!", - "#SFUI_TitlesTXT_Smoke_in_the_hole": "{NAME}{GREEN}@{LOCATION}{grey}➟ Smooke!", - "#SFUI_TitlesTXT_Decoy_in_the_hole": "{NAME}{GREEN}@{LOCATION}{default}➟ Decoy!" -} \ No newline at end of file diff --git a/plugin_files/configs/core.example.json b/plugin_files/configs/core.example.json deleted file mode 100644 index d14d95019..000000000 --- a/plugin_files/configs/core.example.json +++ /dev/null @@ -1,78 +0,0 @@ -{ - "logging": { - "enabled": true, - "mode": "daily", - "save_core_messages": false - }, - "commandPrefixes": [ - "!" - ], - "commandSilentPrefixes": [ - "/" - ], - "console_filtering": true, - "language": "en", - "use_player_language": true, - "patches_to_perform": [], - "CS2ServerGuidelines": "https://blog.counter-strike.net/index.php/server_guidelines/", - "FollowCS2ServerGuidelines": true, - "menu": { - "navigation_prefix" : "➤", - "sound": { - "use": { - "name": "Vote.Cast.Yes", - "volume": 0.75 - }, - "scroll": { - "name": "UI.ContractType", - "volume": 0.75 - }, - "exit": { - "name": "Vote.Failed", - "volume": 0.75 - } - }, - "buttons": { - "use": "e", - "scroll": "shift", - "exit": { - "option": false, - "button": "tab" - } - }, - "kind": "screen", - "available_kinds": ["screen", "center"], - "available_inputmodes": ["chat", "button"], - "inputMode": "button", - "kind_settings": { - "center": { - "itemsPerPage": 7 - }, - "screen": { - "mode": "compatibility", - "modes": { - "compatibility": { - "x": 0.14, - "y": 0.68, - "fontSize": 35, - "font": "Sans Serif" - }, - "normal": { - "x": 0.00, - "y": 0.68, - "fontSize": 35, - "font": "Sans Serif" - } - }, - "drawBackground": true, - "itemsPerPage": 9 - } - } - }, - "vgui": { - "textBackground": { - "paddingX": 0.1, - "paddingY": 0.1 - } - } -} \ No newline at end of file diff --git a/plugin_files/configs/databases.example.json b/plugin_files/configs/databases.example.json deleted file mode 100644 index 29f6336fa..000000000 --- a/plugin_files/configs/databases.example.json +++ /dev/null @@ -1,18 +0,0 @@ -{ - "default_connection": { - "kind": "mysql", - "hostname": "127.0.0.1", - "username": "root", - "password": "", - "database": "testdb", - "port": 3306 - }, - "swiftly_admins": { - "kind": "mysql", - "hostname": "127.0.0.1", - "username": "root", - "password": "", - "database": "testdb", - "port": 3306 - } -} \ No newline at end of file diff --git a/plugin_files/configs/plugins/.gitignore b/plugin_files/configs/plugins/.gitignore deleted file mode 100644 index e69de29bb..000000000 diff --git a/plugin_files/gamedata/core/offsets.json b/plugin_files/gamedata/core/offsets.json deleted file mode 100644 index 4dbc25fdf..000000000 --- a/plugin_files/gamedata/core/offsets.json +++ /dev/null @@ -1,54 +0,0 @@ -{ - "GameEntitySystem": { - "windows": 88, - "linux": 80 - }, - "CBasePlayerPawn_CommitSuicide": { - "windows": 380, - "linux": 380 - }, - "CCSPlayerController_ChangeTeam": { - "windows": 100, - "linux": 99 - }, - "CBaseEntity_Teleport": { - "windows": 157, - "linux": 156 - }, - "CCSPlayerController_Respawn": { - "windows": 257, - "linux": 259 - }, - "CollisionRulesChanged": { - "windows": 179, - "linux": 178 - }, - "CCSPlayer_WeaponServices_DropWeapon": { - "windows": 22, - "linux": 23 - }, - "CGameSceneNode_GetSkeletonInstance": { - "windows": 8, - "linux": 8 - }, - "CServerSideClient_OnConVarQuery": { - "windows": 39, - "linux": 41 - }, - "CCSPlayer_MovementServices_CheckMovingGround": { - "windows": 32, - "linux": 33 - }, - "GetHammerUniqueID": { - "windows": 109, - "linux": 108 - }, - "CEntityResourceManifest_AddResource": { - "windows": 2, - "linux": 0 - }, - "INetworkMessageProcessingPreFilter": { - "windows": 8, - "linux": -64 - } -} \ No newline at end of file diff --git a/plugin_files/gamedata/core/patches.json b/plugin_files/gamedata/core/patches.json deleted file mode 100644 index 023c2291e..000000000 --- a/plugin_files/gamedata/core/patches.json +++ /dev/null @@ -1,22 +0,0 @@ -{ - "ServerMovementUnlock": { - "signature": "ServerMovementUnlock", - "windows": "EB", - "linux": "90 90 90 90 90 90" - }, - "BotNavIgnore1": { - "signature": "BotNavIgnore1", - "windows": "E9 2C 00 00 00 90", - "linux": "E9 15 00 00 00" - }, - "BotNavIgnore2": { - "signature": "BotNavIgnore2", - "windows": "", - "linux": "E9 15 00 00 00" - }, - "BotNavIgnore3": { - "signature": "BotNavIgnore3", - "windows": "", - "linux": "E9 15 00 00 00" - } -} \ No newline at end of file diff --git a/plugin_files/gamedata/core/signatures.json b/plugin_files/gamedata/core/signatures.json deleted file mode 100644 index 353dfddd4..000000000 --- a/plugin_files/gamedata/core/signatures.json +++ /dev/null @@ -1,127 +0,0 @@ -{ - "ServerMovementUnlock": { - "lib": "server", - "windows": "76 ? F2 0F 10 4F ? 41 0F 28 C1 0F 28 D1 F3 0F 59 C0", - "linux": "0F 87 ? ? ? ? 49 8B 7C 24 ? E8 ? ? ? ? 66 0F EF ED 66 0F D6 85" - }, - "CEntityInstance_AcceptInput": { - "lib": "server", - "windows": "48 89 5C 24 10 48 89 74 24 18 57 48 83 EC 40 49 8B F0", - "linux": "55 48 89 E5 41 57 49 89 FF 41 56 48 8D 7D C0" - }, - "CEntityIdentity_AcceptInput": { - "lib": "server", - "windows": "48 89 54 24 ? 48 89 4C 24 ? 55 53 56 57 41 55 41 56 41 57 48 8D 6C 24", - "linux": "55 48 89 E5 41 57 41 56 4C 8D BD D0 FE FF FF 49 89 D6 41 55 49 89 F5 41 54 49 89 CC" - }, - "CCSPlayerController_SwitchTeam": { - "lib": "server", - "windows": "40 56 57 48 81 EC ? ? ? ? 48 8B F9 8B F2 8B CA", - "linux": "55 48 89 E5 41 55 49 89 FD 89 F7" - }, - "UTIL_CreateEntityByName": { - "lib": "server", - "windows": "48 83 EC 48 C6 44 24 30 00", - "linux": "48 8D 05 ? ? ? ? 55 48 89 FA" - }, - "CBaseModelEntity_SetModel": { - "lib": "server", - "windows": "48 89 5C 24 ? 48 89 7C 24 ? 55 48 8B EC 48 83 EC 50 48 8B F9 4C 8B C2", - "linux": "55 48 89 F2 48 89 E5 41 54 49 89 FC 48 8D 7D E0 48 83 EC ? 48 8D 05 ? ? ? ? 48 8B 30 48 8B 06" - }, - "CBaseEntity_DispatchSpawn": { - "lib": "server", - "windows": "48 89 5C 24 10 57 48 83 EC 30 48 8B DA 48 8B F9 48 85 C9", - "linux": "48 85 FF 74 ? 55 48 89 E5 41 56" - }, - "UTIL_Remove": { - "lib": "server", - "windows": "48 85 C9 74 ? 48 8B D1 48 8B 0D ? ? ? ?", - "linux": "48 89 FE 48 85 FF 74 ? 48 8D 05 ? ? ? ? 48" - }, - "LegacyGameEventListener": { - "lib": "server", - "windows": "48 8B 15 ? ? ? ? 48 85 D2 74 ? 85 C9 74", - "linux": "48 8B 05 ? ? ? ? 48 85 C0 74 ? 85 FF" - }, - "CAttributeList_SetOrAddAttributeValueByName": { - "lib": "server", - "windows": "40 53 41 56 41 57 48 81 EC 90 00 00 00 0F 29 74 24 70", - "linux": "55 48 89 E5 41 57 41 56 49 89 FE 41 55 41 54 49 89 F4 53 48 83 EC 78" - }, - "CBaseModelEntity_SetBodygroup": { - "lib": "server", - "windows": "48 89 5C 24 08 48 89 74 24 10 57 48 83 EC 20 41 8B F8 48 8B F2 48 8B D9 E8 ? ? ? ?", - "linux": "55 48 89 E5 41 56 49 89 F6 41 55 41 89 D5 41 54 49 89 FC 48 83 EC 08" - }, - "GiveNamedItem": { - "lib": "server", - "windows": "48 89 5C 24 ? 48 89 74 24 ? 55 57 41 55 41 56 41 57 48 8D 6C 24 E0", - "linux": "55 48 89 E5 41 57 41 56 4D 89 C6 41 55 49 89 D5 41 54 49 89 F4" - }, - "CTakeDamageInfo_Constructor": { - "lib": "server", - "windows": "40 53 48 83 EC 60 48 C7 41 38 FF FF FF FF", - "linux": "55 48 89 E5 48 83 EC 10 4C 8D 15 ? ? ? ?" - }, - "FireOutputInternal": { - "lib": "server", - "windows": "4C 89 4C 24 20 53 55 57 41 54 41 56 48 81 EC", - "linux": "55 48 89 E5 41 57 41 56 41 55 41 54 49 89 D4 53 48 89 F3 48 83 EC 58" - }, - "CBasePlayerController_SetPawn": { - "lib": "server", - "windows": "48 89 74 24 18 55 41 54 41 55 41 56 41 57 48 8D 6C 24 D1", - "linux": "55 48 89 E5 41 57 41 56 41 55 49 89 FD 41 54 45 89 C4" - }, - "CCSPlayerPawnBase_PostThink": { - "lib": "server", - "windows": "48 ? ? 55 53 56 57 41 ? 48 ? ? ? 48 ? ? ? ? ? ? 4C 89 68", - "linux": "55 48 89 E5 41 56 41 55 41 54 53 48 89 FB 48 83 EC 40 E8" - }, - "CBaseEntity_EmitSoundFilter": { - "lib": "server", - "windows": "48 89 5C 24 08 48 89 6C 24 10 48 89 74 24 18 48 89 7C 24 20 41 56 48 83 EC 30 48 8B EA", - "linux": "55 48 89 E5 41 56 49 89 D6 41 55 41 89 F5 41 54 48 8D 35 ? ? ? ?" - }, - "CBaseEntity_EmitSoundParams": { - "lib": "server", - "windows": "48 8B C4 48 89 58 10 48 89 70 18 55 57 41 56 48 8D A8 08 FF FF FF", - "linux": "48 B8 ? ? ? ? ? ? ? ? 55 48 89 E5 41 55 41 54 49 89 FC 53 48 89 F3" - }, - "CGameRules_TerminateRound": { - "lib": "server", - "windows": "48 8B C4 4C 89 48 ? 48 89 48 ? 55 41 55", - "linux": "55 48 89 E5 41 57 41 56 41 55 41 54 49 89 FC 53 48 81 EC 88 00 00 00 48 8D 05 ? ? ? ?" - }, - "CBaseEntity_TakeDamage": { - "lib": "server", - "windows": "48 89 74 24 ? 57 48 81 EC ? ? ? ? 48 8B 41 ? 48 8B FA", - "linux": "55 48 89 E5 41 57 41 56 41 55 41 54 49 89 FC 53 48 83 EC ? 4C 8D 3D ? ? ? ? 49 8B 3F" - }, - "BotNavIgnore1": { - "lib": "server", - "windows": "0F 84 ? ? ? ? 80 B8 ? ? ? ? 00 0F 84 ? ? ? ? 80 3D ? ? ? ? 00 74 15", - "linux": "48 85 C0 74 ? 80 B8 ? ? ? ? 00 74 ? 48 8D 05 ? ? ? ? 80 38 00 75 ? 44 8B 85 ? ? ? ? 31 F6 BF 03 00 00 00" - }, - "BotNavIgnore2": { - "lib": "server", - "windows": "0F 84 ? ? ? ? 80 B8 ? ? ? ? 00 0F 84 ? ? ? ? 80 3D ? ? ? ? 00 74 15", - "linux": "48 85 C0 74 ? 80 B8 ? ? ? ? 00 74 ? 48 8D 05 ? ? ? ? 80 38 00 75 ? 44 8B 85 ? ? ? ? 31 F6 BF 02 00 00 00" - }, - "BotNavIgnore3": { - "lib": "server", - "windows": "0F 84 ? ? ? ? 80 B8 ? ? ? ? 00 0F 84 ? ? ? ? 80 3D ? ? ? ? 00 74 15", - "linux": "48 85 C0 74 ? 80 B8 ? ? ? ? 00 74 ? 48 8D 05 ? ? ? ? 80 38 00 75 ? 41 B8 04 00 00 00" - }, - "IGameSystem_InitAllSystems_pFirst": { - "lib": "server", - "windows": "48 8B 3D ? ? ? ? 48 85 FF 0F 84 ? ? ? ? BE", - "linux": "4C 8B 35 ? ? ? ? 4D 85 F6 75 ? E9" - }, - "CCSPlayer_MovementServices_ProcessUserCmd": { - "lib": "server", - "windows": "48 89 5C 24 ? 48 89 74 24 ? 57 48 83 EC ? 48 8B FA 48 8B F1 E8 ? ? ? ? 48 8B D8", - "linux": "55 48 89 E5 41 55 49 89 F5 41 54 49 89 FC E8 ? ? ? ? 48 85 C0 74 30" - } -} \ No newline at end of file diff --git a/plugin_files/gamedata/gameevents.json b/plugin_files/gamedata/gameevents.json deleted file mode 100644 index 98b865af9..000000000 --- a/plugin_files/gamedata/gameevents.json +++ /dev/null @@ -1,273 +0,0 @@ -{ - "gameui_hidden": "OnGameuiHidden", - "player_team": "OnPlayerTeam", - "player_chat": "OnPlayerChat", - "player_score": "OnPlayerScore", - "player_shoot": "OnPlayerShoot", - "game_init": "OnGameInit", - "game_newmap": "OnGameNewmap", - "game_start": "OnGameStart", - "game_end": "OnGameEnd", - "round_announce_match_point": "OnRoundAnnounceMatchPoint", - "round_announce_final": "OnRoundAnnounceFinal", - "round_announce_last_round_half": "OnRoundAnnounceLastRoundHalf", - "round_announce_match_start": "OnRoundAnnounceMatchStart", - "round_announce_warmup": "OnRoundAnnounceWarmup", - "warmup_end": "OnWarmupEnd", - "round_end": "OnRoundEnd", - "round_end_upload_stats": "OnRoundEndUploadStats", - "round_officially_ended": "OnRoundOfficiallyEnded", - "round_time_warning": "OnRoundTimeWarning", - "ugc_map_info_received": "OnUgcMapInfoReceived", - "ugc_map_unsubscribed": "OnUgcMapUnsubscribed", - "ugc_map_download_error": "OnUgcMapDownloadError", - "ugc_file_download_finished": "OnUgcFileDownloadFinished", - "ugc_file_download_start": "OnUgcFileDownloadStart", - "begin_new_match": "OnBeginNewMatch", - "dm_bonus_weapon_start": "OnDmBonusWeaponStart", - "survival_announce_phase": "OnSurvivalAnnouncePhase", - "break_prop": "OnBreakProp", - "player_decal": "OnPlayerDecal", - "entity_visible": "OnEntityVisible", - "instructor_server_hint_create": "OnInstructorServerHintCreate", - "instructor_server_hint_stop": "OnInstructorServerHintStop", - "read_game_titledata": "OnReadGameTitledata", - "write_game_titledata": "OnWriteGameTitledata", - "reset_game_titledata": "OnResetGameTitledata", - "weaponhud_selection": "OnWeaponhudSelection", - "vote_ended": "OnVoteEnded", - "vote_started": "OnVoteStarted", - "vote_changed": "OnVoteChanged", - "vote_cast": "OnVoteCast", - "vote_options": "OnVoteOptions", - "endmatch_mapvote_selecting_map": "OnEndmatchMapvoteSelectingMap", - "endmatch_cmm_start_reveal_items": "OnEndmatchCmmStartRevealItems", - "inventory_updated": "OnInventoryUpdated", - "client_loadout_changed": "OnClientLoadoutChanged", - "add_player_sonar_icon": "OnAddPlayerSonarIcon", - "door_open": "OnDoorOpen", - "door_closed": "OnDoorClosed", - "door_break": "OnDoorBreak", - "add_bullet_hit_marker": "OnAddBulletHitMarker", - "player_death": "OnPlayerDeath", - "other_death": "OnOtherDeath", - "player_hurt": "OnPlayerHurt", - "bullet_damage": "OnBulletDamage", - "item_purchase": "OnItemPurchase", - "bomb_beginplant": "OnBombBeginplant", - "bomb_abortplant": "OnBombAbortplant", - "bomb_planted": "OnBombPlanted", - "bomb_defused": "OnBombDefused", - "bomb_exploded": "OnBombExploded", - "bomb_dropped": "OnBombDropped", - "bomb_pickup": "OnBombPickup", - "defuser_dropped": "OnDefuserDropped", - "defuser_pickup": "OnDefuserPickup", - "announce_phase_end": "OnAnnouncePhaseEnd", - "cs_intermission": "OnCsIntermission", - "bomb_begindefuse": "OnBombBegindefuse", - "bomb_abortdefuse": "OnBombAbortdefuse", - "hostage_follows": "OnHostageFollows", - "hostage_hurt": "OnHostageHurt", - "hostage_killed": "OnHostageKilled", - "hostage_rescued": "OnHostageRescued", - "hostage_stops_following": "OnHostageStopsFollowing", - "hostage_rescued_all": "OnHostageRescuedAll", - "hostage_call_for_help": "OnHostageCallForHelp", - "vip_escaped": "OnVipEscaped", - "vip_killed": "OnVipKilled", - "player_radio": "OnPlayerRadio", - "bomb_beep": "OnBombBeep", - "weapon_fire": "OnWeaponFire", - "weapon_fire_on_empty": "OnWeaponFireOnEmpty", - "grenade_thrown": "OnGrenadeThrown", - "weapon_reload": "OnWeaponReload", - "weapon_zoom": "OnWeaponZoom", - "silencer_detach": "OnSilencerDetach", - "inspect_weapon": "OnInspectWeapon", - "weapon_zoom_rifle": "OnWeaponZoomRifle", - "player_spawned": "OnPlayerSpawned", - "item_pickup": "OnItemPickup", - "item_pickup_slerp": "OnItemPickupSlerp", - "item_pickup_failed": "OnItemPickupFailed", - "item_remove": "OnItemRemove", - "ammo_pickup": "OnAmmoPickup", - "item_equip": "OnItemEquip", - "enter_buyzone": "OnEnterBuyzone", - "exit_buyzone": "OnExitBuyzone", - "buytime_ended": "OnBuytimeEnded", - "enter_bombzone": "OnEnterBombzone", - "exit_bombzone": "OnExitBombzone", - "enter_rescue_zone": "OnEnterRescueZone", - "exit_rescue_zone": "OnExitRescueZone", - "silencer_off": "OnSilencerOff", - "silencer_on": "OnSilencerOn", - "buymenu_open": "OnBuymenuOpen", - "buymenu_close": "OnBuymenuClose", - "round_prestart": "OnRoundPrestart", - "round_poststart": "OnRoundPoststart", - "grenade_bounce": "OnGrenadeBounce", - "hegrenade_detonate": "OnHegrenadeDetonate", - "flashbang_detonate": "OnFlashbangDetonate", - "smokegrenade_detonate": "OnSmokegrenadeDetonate", - "smokegrenade_expired": "OnSmokegrenadeExpired", - "molotov_detonate": "OnMolotovDetonate", - "decoy_detonate": "OnDecoyDetonate", - "decoy_started": "OnDecoyStarted", - "tagrenade_detonate": "OnTagrenadeDetonate", - "inferno_startburn": "OnInfernoStartburn", - "inferno_expire": "OnInfernoExpire", - "inferno_extinguish": "OnInfernoExtinguish", - "decoy_firing": "OnDecoyFiring", - "bullet_impact": "OnBulletImpact", - "player_footstep": "OnPlayerFootstep", - "player_jump": "OnPlayerJump", - "player_blind": "OnPlayerBlind", - "player_falldamage": "OnPlayerFalldamage", - "door_moving": "OnDoorMoving", - "mb_input_lock_success": "OnMbInputLockSuccess", - "mb_input_lock_cancel": "OnMbInputLockCancel", - "nav_blocked": "OnNavBlocked", - "nav_generate": "OnNavGenerate", - "achievement_info_loaded": "OnAchievementInfoLoaded", - "spec_mode_updated": "OnSpecModeUpdated", - "hltv_changed_mode": "OnHltvChangedMode", - "cs_game_disconnected": "OnCsGameDisconnected", - "cs_round_final_beep": "OnCsRoundFinalBeep", - "cs_round_start_beep": "OnCsRoundStartBeep", - "cs_win_panel_round": "OnCsWinPanelRound", - "cs_win_panel_match": "OnCsWinPanelMatch", - "cs_match_end_restart": "OnCsMatchEndRestart", - "cs_pre_restart": "OnCsPreRestart", - "show_deathpanel": "OnShowDeathpanel", - "hide_deathpanel": "OnHideDeathpanel", - "player_avenged_teammate": "OnPlayerAvengedTeammate", - "achievement_earned_local": "OnAchievementEarnedLocal", - "repost_xbox_achievements": "OnRepostXboxAchievements", - "match_end_conditions": "OnMatchEndConditions", - "round_mvp": "OnRoundMvp", - "show_survival_respawn_status": "OnShowSurvivalRespawnStatus", - "gg_killed_enemy": "OnGgKilledEnemy", - "switch_team": "OnSwitchTeam", - "write_profile_data": "OnWriteProfileData", - "trial_time_expired": "OnTrialTimeExpired", - "update_matchmaking_stats": "OnUpdateMatchmakingStats", - "player_reset_vote": "OnPlayerResetVote", - "enable_restart_voting": "OnEnableRestartVoting", - "sfuievent": "OnSfuievent", - "start_vote": "OnStartVote", - "player_given_c4": "OnPlayerGivenC4", - "bot_takeover": "OnBotTakeover", - "jointeam_failed": "OnJointeamFailed", - "teamchange_pending": "OnTeamchangePending", - "material_default_complete": "OnMaterialDefaultComplete", - "cs_prev_next_spectator": "OnCsPrevNextSpectator", - "nextlevel_changed": "OnNextlevelChanged", - "seasoncoin_levelup": "OnSeasoncoinLevelup", - "tournament_reward": "OnTournamentReward", - "start_halftime": "OnStartHalftime", - "ammo_refill": "OnAmmoRefill", - "parachute_pickup": "OnParachutePickup", - "parachute_deploy": "OnParachuteDeploy", - "dronegun_attack": "OnDronegunAttack", - "drone_dispatched": "OnDroneDispatched", - "loot_crate_visible": "OnLootCrateVisible", - "loot_crate_opened": "OnLootCrateOpened", - "open_crate_instr": "OnOpenCrateInstr", - "smoke_beacon_paradrop": "OnSmokeBeaconParadrop", - "survival_paradrop_spawn": "OnSurvivalParadropSpawn", - "survival_paradrop_break": "OnSurvivalParadropBreak", - "drone_cargo_detached": "OnDroneCargoDetached", - "drone_above_roof": "OnDroneAboveRoof", - "choppers_incoming_warning": "OnChoppersIncomingWarning", - "firstbombs_incoming_warning": "OnFirstbombsIncomingWarning", - "dz_item_interaction": "OnDzItemInteraction", - "survival_teammate_respawn": "OnSurvivalTeammateRespawn", - "survival_no_respawns_warning": "OnSurvivalNoRespawnsWarning", - "survival_no_respawns_final": "OnSurvivalNoRespawnsFinal", - "player_ping": "OnPlayerPing", - "player_ping_stop": "OnPlayerPingStop", - "player_sound": "OnPlayerSound", - "guardian_wave_restart": "OnGuardianWaveRestart", - "team_intro_start": "OnTeamIntroStart", - "team_intro_end": "OnTeamIntroEnd", - "bullet_flight_resolution": "OnBulletFlightResolution", - "game_phase_changed": "OnGamePhaseChanged", - "clientside_reload_custom_econ": "OnClientsideReloadCustomEcon", - "server_spawn": "OnServerSpawn", - "server_pre_shutdown": "OnServerPreShutdown", - "server_shutdown": "OnServerShutdown", - "server_message": "OnServerMessage", - "server_cvar": "OnServerCvar", - "player_activate": "OnPlayerActivate", - "player_connect_full": "OnPlayerConnectFull", - "player_full_update": "OnPlayerFullUpdate", - "player_connect": "OnPlayerConnect", - "player_disconnect": "OnPlayerDisconnect", - "player_info": "OnPlayerInfo", - "player_spawn": "OnPlayerSpawn", - "local_player_team": "OnLocalPlayerTeam", - "local_player_controller_team": "OnLocalPlayerControllerTeam", - "player_changename": "OnPlayerChangename", - "local_player_pawn_changed": "OnLocalPlayerPawnChanged", - "teamplay_broadcast_audio": "OnTeamplayBroadcastAudio", - "finale_start": "OnFinaleStart", - "player_stats_updated": "OnPlayerStatsUpdated", - "user_data_downloaded": "OnUserDataDownloaded", - "ragdoll_dissolved": "OnRagdollDissolved", - "team_info": "OnTeamInfo", - "team_score": "OnTeamScore", - "hltv_cameraman": "OnHltvCameraman", - "hltv_chase": "OnHltvChase", - "hltv_rank_camera": "OnHltvRankCamera", - "hltv_rank_entity": "OnHltvRankEntity", - "hltv_fixed": "OnHltvFixed", - "hltv_message": "OnHltvMessage", - "hltv_status": "OnHltvStatus", - "hltv_title": "OnHltvTitle", - "hltv_chat": "OnHltvChat", - "hltv_versioninfo": "OnHltvVersioninfo", - "hltv_replay": "OnHltvReplay", - "hltv_replay_status": "OnHltvReplayStatus", - "demo_stop": "OnDemoStop", - "map_shutdown": "OnMapShutdown", - "map_transition": "OnMapTransition", - "hostname_changed": "OnHostnameChanged", - "difficulty_changed": "OnDifficultyChanged", - "game_message": "OnGameMessage", - "round_start": "OnRoundStart", - "round_start_pre_entity": "OnRoundStartPreEntity", - "round_start_post_nav": "OnRoundStartPostNav", - "round_freeze_end": "OnRoundFreezeEnd", - "teamplay_round_start": "OnTeamplayRoundStart", - "player_hintmessage": "OnPlayerHintmessage", - "break_breakable": "OnBreakBreakable", - "broken_breakable": "OnBrokenBreakable", - "entity_killed": "OnEntityKilled", - "door_close": "OnDoorClose", - "vote_failed": "OnVoteFailed", - "vote_passed": "OnVotePassed", - "vote_cast_yes": "OnVoteCastYes", - "vote_cast_no": "OnVoteCastNo", - "achievement_event": "OnAchievementEvent", - "achievement_earned": "OnAchievementEarned", - "achievement_write_failed": "OnAchievementWriteFailed", - "bonus_updated": "OnBonusUpdated", - "spec_target_updated": "OnSpecTargetUpdated", - "gameinstructor_draw": "OnGameinstructorDraw", - "gameinstructor_nodraw": "OnGameinstructorNodraw", - "flare_ignite_npc": "OnFlareIgniteNpc", - "helicopter_grenade_punt_miss": "OnHelicopterGrenadePuntMiss", - "physgun_pickup": "OnPhysgunPickup", - "cart_updated": "OnCartUpdated", - "store_pricesheet_updated": "OnStorePricesheetUpdated", - "item_schema_initialized": "OnItemSchemaInitialized", - "drop_rate_modified": "OnDropRateModified", - "event_ticket_modified": "OnEventTicketModified", - "gc_connected": "OnGcConnected", - "instructor_start_lesson": "OnInstructorStartLesson", - "instructor_close_lesson": "OnInstructorCloseLesson", - "set_instructor_group_enabled": "OnSetInstructorGroupEnabled", - "clientside_lesson_closed": "OnClientsideLessonClosed", - "dynamic_shadow_light_changed": "OnDynamicShadowLightChanged" -} \ No newline at end of file diff --git a/plugin_files/gamedata/sdk.json b/plugin_files/gamedata/sdk.json deleted file mode 100644 index 5e8f2d4e1..000000000 --- a/plugin_files/gamedata/sdk.json +++ /dev/null @@ -1,38412 +0,0 @@ -{ - "AnimationDecodeDebugDumpElement_t": { - "EntityIndex": { - "field": "m_nEntityIndex", - "type": 2 - }, - "ModelName": { - "field": "m_modelName", - "type": 14 - }, - "PoseParams": { - "field": "m_poseParams", - "type": 50 - }, - "DecodeOps": { - "field": "m_decodeOps", - "type": 50 - }, - "InternalOps": { - "field": "m_internalOps", - "type": 50 - }, - "DecodedAnims": { - "field": "m_decodedAnims", - "type": 50 - } - }, - "AnimationDecodeDebugDump_t": { - "ProcessingType": { - "field": "m_processingType", - "type": 6 - } - }, - "AnimationSnapshotBase_t": { - "RealTime": { - "field": "m_flRealTime", - "type": 8 - }, - "BonesInWorldSpace": { - "field": "m_bBonesInWorldSpace", - "type": 10 - }, - "BoneSetupMask": { - "field": "m_boneSetupMask", - "type": 57 - }, - "FlexControllers": { - "field": "m_flexControllers", - "type": 59 - }, - "SnapshotType": { - "field": "m_SnapshotType", - "type": 6 - }, - "HasDecodeDump": { - "field": "m_bHasDecodeDump", - "type": 10 - }, - "DecodeDump": { - "field": "m_DecodeDump", - "classname": "AnimationDecodeDebugDumpElement_t", - "type": 16 - } - }, - "AnimationSnapshot_t": { - "EntIndex": { - "field": "m_nEntIndex", - "type": 2 - }, - "ModelName": { - "field": "m_modelName", - "type": 14 - }, - "Parent": { - "field": "AnimationSnapshotBase_t", - "type": 11 - } - }, - "CAnimActivity": { - "Activity": { - "field": "m_nActivity", - "type": 2 - }, - "Flags": { - "field": "m_nFlags", - "type": 2 - }, - "Weight": { - "field": "m_nWeight", - "type": 2 - } - }, - "CAnimBone": { - "Parent": { - "field": "m_parent", - "type": 2 - }, - "Pos": { - "field": "m_pos", - "type": 21 - }, - "Scale": { - "field": "m_scale", - "type": 8 - }, - "Flags": { - "field": "m_flags", - "type": 2 - } - }, - "CAnimBoneDifference": { - "PosError": { - "field": "m_posError", - "type": 21 - }, - "HasRotation": { - "field": "m_bHasRotation", - "type": 10 - }, - "HasMovement": { - "field": "m_bHasMovement", - "type": 10 - } - }, - "CAnimData": { - "MaxUniqueFrameIndex": { - "field": "m_nMaxUniqueFrameIndex", - "type": 2 - } - }, - "CAnimDataChannelDesc": { - "Flags": { - "field": "m_nFlags", - "type": 2 - }, - "Type": { - "field": "m_nType", - "type": 2 - }, - "ElementIndexArray": { - "field": "m_nElementIndexArray", - "type": 53 - }, - "ElementMaskArray": { - "field": "m_nElementMaskArray", - "type": 57 - } - }, - "CAnimDecoder": { - "Version": { - "field": "m_nVersion", - "type": 2 - }, - "Type": { - "field": "m_nType", - "type": 2 - } - }, - "CAnimDesc": { - "Flags": { - "field": "m_flags", - "classname": "CAnimDesc_Flag", - "type": 16 - }, - "Fps": { - "field": "fps", - "type": 8 - }, - "Data": { - "field": "m_Data", - "classname": "CAnimEncodedFrames", - "type": 16 - }, - "Framestalltime": { - "field": "framestalltime", - "type": 8 - }, - "RootMin": { - "field": "m_vecRootMin", - "type": 21 - }, - "RootMax": { - "field": "m_vecRootMax", - "type": 21 - }, - "BoneWorldMin": { - "field": "m_vecBoneWorldMin", - "type": 63 - }, - "BoneWorldMax": { - "field": "m_vecBoneWorldMax", - "type": 63 - }, - "SequenceParams": { - "field": "m_sequenceParams", - "classname": "CAnimSequenceParams", - "type": 16 - } - }, - "CAnimDesc_Flag": { - "Looping": { - "field": "m_bLooping", - "type": 10 - }, - "AllZeros": { - "field": "m_bAllZeros", - "type": 10 - }, - "Hidden": { - "field": "m_bHidden", - "type": 10 - }, - "Delta": { - "field": "m_bDelta", - "type": 10 - }, - "LegacyWorldspace": { - "field": "m_bLegacyWorldspace", - "type": 10 - }, - "ModelDoc": { - "field": "m_bModelDoc", - "type": 10 - }, - "ImplicitSeqIgnoreDelta": { - "field": "m_bImplicitSeqIgnoreDelta", - "type": 10 - }, - "AnimGraphAdditive": { - "field": "m_bAnimGraphAdditive", - "type": 10 - } - }, - "CAnimEncodeDifference": { - "HasRotationBitArray": { - "field": "m_bHasRotationBitArray", - "type": 55 - }, - "HasMovementBitArray": { - "field": "m_bHasMovementBitArray", - "type": 55 - }, - "HasMorphBitArray": { - "field": "m_bHasMorphBitArray", - "type": 55 - }, - "HasUserBitArray": { - "field": "m_bHasUserBitArray", - "type": 55 - } - }, - "CAnimEncodedFrames": { - "Frames": { - "field": "m_nFrames", - "type": 2 - }, - "FramesPerBlock": { - "field": "m_nFramesPerBlock", - "type": 2 - }, - "UsageDifferences": { - "field": "m_usageDifferences", - "classname": "CAnimEncodeDifference", - "type": 16 - } - }, - "CAnimEnum": { - "Value": { - "field": "m_value", - "type": 4 - } - }, - "CAnimEventDefinition": { - "Frame": { - "field": "m_nFrame", - "type": 2 - }, - "EndFrame": { - "field": "m_nEndFrame", - "type": 2 - }, - "Cycle": { - "field": "m_flCycle", - "type": 8 - }, - "Duration": { - "field": "m_flDuration", - "type": 8 - } - }, - "CAnimFrameBlockAnim": { - "StartFrame": { - "field": "m_nStartFrame", - "type": 2 - }, - "EndFrame": { - "field": "m_nEndFrame", - "type": 2 - }, - "SegmentIndexArray": { - "field": "m_segmentIndexArray", - "type": 53 - } - }, - "CAnimFrameSegment": { - "UniqueFrameIndex": { - "field": "m_nUniqueFrameIndex", - "type": 2 - }, - "LocalElementMasks": { - "field": "m_nLocalElementMasks", - "type": 6 - }, - "LocalChannel": { - "field": "m_nLocalChannel", - "type": 2 - } - }, - "CAnimKeyData": { - "ChannelElements": { - "field": "m_nChannelElements", - "type": 2 - } - }, - "CAnimLocalHierarchy": { - "StartFrame": { - "field": "m_nStartFrame", - "type": 2 - }, - "PeakFrame": { - "field": "m_nPeakFrame", - "type": 2 - }, - "TailFrame": { - "field": "m_nTailFrame", - "type": 2 - }, - "EndFrame": { - "field": "m_nEndFrame", - "type": 2 - } - }, - "CAnimMorphDifference": {}, - "CAnimMovement": { - "0": { - "field": "v0", - "type": 8 - }, - "1": { - "field": "v1", - "type": 8 - }, - "Endframe": { - "field": "endframe", - "type": 2 - }, - "Motionflags": { - "field": "motionflags", - "type": 2 - }, - "Angle": { - "field": "angle", - "type": 8 - }, - "Vector": { - "field": "vector", - "type": 21 - }, - "Position": { - "field": "position", - "type": 21 - } - }, - "CAnimSequenceParams": { - "FadeInTime": { - "field": "m_flFadeInTime", - "type": 8 - }, - "FadeOutTime": { - "field": "m_flFadeOutTime", - "type": 8 - } - }, - "CAnimUser": { - "Type": { - "field": "m_nType", - "type": 2 - } - }, - "CAnimUserDifference": { - "Type": { - "field": "m_nType", - "type": 2 - } - }, - "CAnimationGroup": { - "Flags": { - "field": "m_nFlags", - "type": 6 - }, - "DecodeKey": { - "field": "m_decodeKey", - "classname": "CAnimKeyData", - "type": 16 - } - }, - "CMoodVData": { - "MoodType": { - "field": "m_nMoodType", - "type": 6 - } - }, - "CSeqAutoLayer": { - "LocalReference": { - "field": "m_nLocalReference", - "type": 1 - }, - "LocalPose": { - "field": "m_nLocalPose", - "type": 1 - }, - "Flags": { - "field": "m_flags", - "classname": "CSeqAutoLayerFlag", - "type": 16 - }, - "Start": { - "field": "m_start", - "type": 8 - }, - "Peak": { - "field": "m_peak", - "type": 8 - }, - "Tail": { - "field": "m_tail", - "type": 8 - }, - "End": { - "field": "m_end", - "type": 8 - } - }, - "CSeqAutoLayerFlag": { - "Post": { - "field": "m_bPost", - "type": 10 - }, - "Spline": { - "field": "m_bSpline", - "type": 10 - }, - "XFade": { - "field": "m_bXFade", - "type": 10 - }, - "NoBlend": { - "field": "m_bNoBlend", - "type": 10 - }, - "Local": { - "field": "m_bLocal", - "type": 10 - }, - "Pose": { - "field": "m_bPose", - "type": 10 - }, - "FetchFrame": { - "field": "m_bFetchFrame", - "type": 10 - }, - "Subtract": { - "field": "m_bSubtract", - "type": 10 - } - }, - "CSeqBoneMaskList": { - "LocalBoneArray": { - "field": "m_nLocalBoneArray", - "type": 52 - }, - "BoneWeightArray": { - "field": "m_flBoneWeightArray", - "type": 59 - }, - "DefaultMorphCtrlWeight": { - "field": "m_flDefaultMorphCtrlWeight", - "type": 8 - } - }, - "CSeqCmdLayer": { - "Cmd": { - "field": "m_cmd", - "type": 1 - }, - "LocalReference": { - "field": "m_nLocalReference", - "type": 1 - }, - "LocalBonemask": { - "field": "m_nLocalBonemask", - "type": 1 - }, - "DstResult": { - "field": "m_nDstResult", - "type": 1 - }, - "SrcResult": { - "field": "m_nSrcResult", - "type": 1 - }, - "Spline": { - "field": "m_bSpline", - "type": 10 - }, - "Var1": { - "field": "m_flVar1", - "type": 8 - }, - "Var2": { - "field": "m_flVar2", - "type": 8 - }, - "LineNumber": { - "field": "m_nLineNumber", - "type": 1 - } - }, - "CSeqCmdSeqDesc": { - "Flags": { - "field": "m_flags", - "classname": "CSeqSeqDescFlag", - "type": 16 - }, - "Transition": { - "field": "m_transition", - "classname": "CSeqTransition", - "type": 16 - }, - "FrameRangeSequence": { - "field": "m_nFrameRangeSequence", - "type": 1 - }, - "FrameCount": { - "field": "m_nFrameCount", - "type": 1 - }, - "FPS": { - "field": "m_flFPS", - "type": 8 - }, - "SubCycles": { - "field": "m_nSubCycles", - "type": 1 - }, - "NumLocalResults": { - "field": "m_numLocalResults", - "type": 1 - } - }, - "CSeqIKLock": { - "PosWeight": { - "field": "m_flPosWeight", - "type": 8 - }, - "AngleWeight": { - "field": "m_flAngleWeight", - "type": 8 - }, - "LocalBone": { - "field": "m_nLocalBone", - "type": 1 - }, - "BonesOrientedAlongPositiveX": { - "field": "m_bBonesOrientedAlongPositiveX", - "type": 10 - } - }, - "CSeqMultiFetch": { - "Flags": { - "field": "m_flags", - "classname": "CSeqMultiFetchFlag", - "type": 16 - }, - "LocalReferenceArray": { - "field": "m_localReferenceArray", - "type": 52 - }, - "GroupSize": { - "field": "m_nGroupSize", - "type": 31, - "size": 2 - }, - "LocalPose": { - "field": "m_nLocalPose", - "type": 31, - "size": 2 - }, - "PoseKeyArray0": { - "field": "m_poseKeyArray0", - "type": 59 - }, - "PoseKeyArray1": { - "field": "m_poseKeyArray1", - "type": 59 - }, - "LocalCyclePoseParameter": { - "field": "m_nLocalCyclePoseParameter", - "type": 2 - }, - "CalculatePoseParameters": { - "field": "m_bCalculatePoseParameters", - "type": 10 - }, - "FixedBlendWeight": { - "field": "m_bFixedBlendWeight", - "type": 10 - }, - "FixedBlendWeightVals": { - "field": "m_flFixedBlendWeightVals", - "type": 37, - "size": 2 - } - }, - "CSeqMultiFetchFlag": { - "Realtime": { - "field": "m_bRealtime", - "type": 10 - }, - "Cylepose": { - "field": "m_bCylepose", - "type": 10 - }, - "0D": { - "field": "m_b0D", - "type": 10 - }, - "1D": { - "field": "m_b1D", - "type": 10 - }, - "2D": { - "field": "m_b2D", - "type": 10 - }, - "2D_TRI": { - "field": "m_b2D_TRI", - "type": 10 - } - }, - "CSeqPoseParamDesc": { - "Start": { - "field": "m_flStart", - "type": 8 - }, - "End": { - "field": "m_flEnd", - "type": 8 - }, - "Loop": { - "field": "m_flLoop", - "type": 8 - }, - "Looping": { - "field": "m_bLooping", - "type": 10 - } - }, - "CSeqPoseSetting": { - "Value": { - "field": "m_flValue", - "type": 8 - }, - "X": { - "field": "m_bX", - "type": 10 - }, - "Y": { - "field": "m_bY", - "type": 10 - }, - "Z": { - "field": "m_bZ", - "type": 10 - }, - "Type": { - "field": "m_eType", - "type": 2 - } - }, - "CSeqS1SeqDesc": { - "Flags": { - "field": "m_flags", - "classname": "CSeqSeqDescFlag", - "type": 16 - }, - "Fetch": { - "field": "m_fetch", - "classname": "CSeqMultiFetch", - "type": 16 - }, - "LocalWeightlist": { - "field": "m_nLocalWeightlist", - "type": 2 - }, - "Transition": { - "field": "m_transition", - "classname": "CSeqTransition", - "type": 16 - } - }, - "CSeqScaleSet": { - "RootOffset": { - "field": "m_bRootOffset", - "type": 10 - }, - "RootOffset1": { - "field": "m_vRootOffset", - "type": 21 - }, - "LocalBoneArray": { - "field": "m_nLocalBoneArray", - "type": 52 - }, - "BoneScaleArray": { - "field": "m_flBoneScaleArray", - "type": 59 - } - }, - "CSeqSeqDescFlag": { - "Looping": { - "field": "m_bLooping", - "type": 10 - }, - "Snap": { - "field": "m_bSnap", - "type": 10 - }, - "Autoplay": { - "field": "m_bAutoplay", - "type": 10 - }, - "Post": { - "field": "m_bPost", - "type": 10 - }, - "Hidden": { - "field": "m_bHidden", - "type": 10 - }, - "Multi": { - "field": "m_bMulti", - "type": 10 - }, - "LegacyDelta": { - "field": "m_bLegacyDelta", - "type": 10 - }, - "LegacyWorldspace": { - "field": "m_bLegacyWorldspace", - "type": 10 - }, - "LegacyCyclepose": { - "field": "m_bLegacyCyclepose", - "type": 10 - }, - "LegacyRealtime": { - "field": "m_bLegacyRealtime", - "type": 10 - }, - "ModelDoc": { - "field": "m_bModelDoc", - "type": 10 - } - }, - "CSeqSynthAnimDesc": { - "Flags": { - "field": "m_flags", - "classname": "CSeqSeqDescFlag", - "type": 16 - }, - "Transition": { - "field": "m_transition", - "classname": "CSeqTransition", - "type": 16 - }, - "LocalBaseReference": { - "field": "m_nLocalBaseReference", - "type": 1 - }, - "LocalBoneMask": { - "field": "m_nLocalBoneMask", - "type": 1 - } - }, - "CSeqTransition": { - "FadeInTime": { - "field": "m_flFadeInTime", - "type": 8 - }, - "FadeOutTime": { - "field": "m_flFadeOutTime", - "type": 8 - } - }, - "CSequenceGroupData": { - "Flags": { - "field": "m_nFlags", - "type": 6 - } - }, - "MoodAnimation_t": { - "Name": { - "field": "m_sName", - "type": 14 - }, - "Weight": { - "field": "m_flWeight", - "type": 8 - } - }, - "AimCameraOpFixedSettings_t": { - "ChainIndex": { - "field": "m_nChainIndex", - "type": 2 - }, - "CameraJointIndex": { - "field": "m_nCameraJointIndex", - "type": 2 - }, - "PelvisJointIndex": { - "field": "m_nPelvisJointIndex", - "type": 2 - }, - "ClavicleLeftJointIndex": { - "field": "m_nClavicleLeftJointIndex", - "type": 2 - }, - "ClavicleRightJointIndex": { - "field": "m_nClavicleRightJointIndex", - "type": 2 - }, - "DepenetrationJointIndex": { - "field": "m_nDepenetrationJointIndex", - "type": 2 - }, - "PropJoints": { - "field": "m_propJoints", - "type": 53 - } - }, - "AimMatrixOpFixedSettings_t": { - "Attachment": { - "field": "m_attachment", - "classname": "CAnimAttachment", - "type": 16 - }, - "Damping": { - "field": "m_damping", - "classname": "CAnimInputDamping", - "type": 16 - }, - "PoseCacheHandles": { - "field": "m_poseCacheHandles", - "type": 45, - "size": 10 - }, - "BlendMode": { - "field": "m_eBlendMode", - "type": 6 - }, - "MaxYawAngle": { - "field": "m_flMaxYawAngle", - "type": 8 - }, - "MaxPitchAngle": { - "field": "m_flMaxPitchAngle", - "type": 8 - }, - "SequenceMaxFrame": { - "field": "m_nSequenceMaxFrame", - "type": 2 - }, - "BoneMaskIndex": { - "field": "m_nBoneMaskIndex", - "type": 2 - }, - "TargetIsPosition": { - "field": "m_bTargetIsPosition", - "type": 10 - }, - "UseBiasAndClamp": { - "field": "m_bUseBiasAndClamp", - "type": 10 - }, - "BiasAndClampYawOffset": { - "field": "m_flBiasAndClampYawOffset", - "type": 8 - }, - "BiasAndClampPitchOffset": { - "field": "m_flBiasAndClampPitchOffset", - "type": 8 - }, - "BiasAndClampBlendCurve": { - "field": "m_biasAndClampBlendCurve", - "classname": "CBlendCurve", - "type": 16 - } - }, - "BlendItem_t": { - "Child": { - "field": "m_pChild", - "classname": "CAnimUpdateNodeRef", - "type": 16 - }, - "Sequence": { - "field": "m_hSequence", - "type": 2 - }, - "Pos": { - "field": "m_vPos", - "type": 22 - }, - "Duration": { - "field": "m_flDuration", - "type": 8 - }, - "UseCustomDuration": { - "field": "m_bUseCustomDuration", - "type": 10 - } - }, - "BoneDemoCaptureSettings_t": { - "BoneName": { - "field": "m_boneName", - "type": 14 - }, - "ErrorSplineRotationMax": { - "field": "m_flErrorSplineRotationMax", - "type": 8 - }, - "ErrorSplineTranslationMax": { - "field": "m_flErrorSplineTranslationMax", - "type": 8 - }, - "ErrorSplineScaleMax": { - "field": "m_flErrorSplineScaleMax", - "type": 8 - }, - "ErrorQuantizationRotationMax": { - "field": "m_flErrorQuantizationRotationMax", - "type": 8 - }, - "ErrorQuantizationTranslationMax": { - "field": "m_flErrorQuantizationTranslationMax", - "type": 8 - }, - "ErrorQuantizationScaleMax": { - "field": "m_flErrorQuantizationScaleMax", - "type": 8 - } - }, - "CActionComponentUpdater": { - "Parent": { - "field": "CAnimComponentUpdater", - "type": 11 - } - }, - "CAddUpdateNode": { - "FootMotionTiming": { - "field": "m_footMotionTiming", - "type": 6 - }, - "ApplyToFootMotion": { - "field": "m_bApplyToFootMotion", - "type": 10 - }, - "ApplyChannelsSeparately": { - "field": "m_bApplyChannelsSeparately", - "type": 10 - }, - "UseModelSpace": { - "field": "m_bUseModelSpace", - "type": 10 - }, - "ApplyScale": { - "field": "m_bApplyScale", - "type": 10 - }, - "Parent": { - "field": "CBinaryUpdateNode", - "type": 11 - } - }, - "CAimCameraUpdateNode": { - "ParameterPosition": { - "field": "m_hParameterPosition", - "classname": "CAnimParamHandle", - "type": 16 - }, - "ParameterOrientation": { - "field": "m_hParameterOrientation", - "classname": "CAnimParamHandle", - "type": 16 - }, - "ParameterSpineRotationWeight": { - "field": "m_hParameterSpineRotationWeight", - "classname": "CAnimParamHandle", - "type": 16 - }, - "ParameterPelvisOffset": { - "field": "m_hParameterPelvisOffset", - "classname": "CAnimParamHandle", - "type": 16 - }, - "ParameterUseIK": { - "field": "m_hParameterUseIK", - "classname": "CAnimParamHandle", - "type": 16 - }, - "ParameterCameraOnly": { - "field": "m_hParameterCameraOnly", - "classname": "CAnimParamHandle", - "type": 16 - }, - "ParameterWeaponDepenetrationDistance": { - "field": "m_hParameterWeaponDepenetrationDistance", - "classname": "CAnimParamHandle", - "type": 16 - }, - "ParameterWeaponDepenetrationDelta": { - "field": "m_hParameterWeaponDepenetrationDelta", - "classname": "CAnimParamHandle", - "type": 16 - }, - "ParameterCameraClearanceDistance": { - "field": "m_hParameterCameraClearanceDistance", - "classname": "CAnimParamHandle", - "type": 16 - }, - "OpFixedSettings": { - "field": "m_opFixedSettings", - "classname": "AimCameraOpFixedSettings_t", - "type": 16 - }, - "Parent": { - "field": "CUnaryUpdateNode", - "type": 11 - } - }, - "CAimMatrixUpdateNode": { - "OpFixedSettings": { - "field": "m_opFixedSettings", - "classname": "AimMatrixOpFixedSettings_t", - "type": 16 - }, - "Target": { - "field": "m_target", - "type": 6 - }, - "ParamIndex": { - "field": "m_paramIndex", - "classname": "CAnimParamHandle", - "type": 16 - }, - "Sequence": { - "field": "m_hSequence", - "type": 2 - }, - "ResetChild": { - "field": "m_bResetChild", - "type": 10 - }, - "LockWhenWaning": { - "field": "m_bLockWhenWaning", - "type": 10 - }, - "Parent": { - "field": "CUnaryUpdateNode", - "type": 11 - } - }, - "CAnimActionUpdater": {}, - "CAnimComponentUpdater": { - "Name": { - "field": "m_name", - "type": 14 - }, - "Id": { - "field": "m_id", - "classname": "AnimComponentID", - "type": 16 - }, - "NetworkMode": { - "field": "m_networkMode", - "type": 6 - }, - "StartEnabled": { - "field": "m_bStartEnabled", - "type": 10 - } - }, - "CAnimDemoCaptureSettings": { - "ErrorRangeSplineRotation": { - "field": "m_vecErrorRangeSplineRotation", - "type": 22 - }, - "ErrorRangeSplineTranslation": { - "field": "m_vecErrorRangeSplineTranslation", - "type": 22 - }, - "ErrorRangeSplineScale": { - "field": "m_vecErrorRangeSplineScale", - "type": 22 - }, - "IkRotation_MaxSplineError": { - "field": "m_flIkRotation_MaxSplineError", - "type": 8 - }, - "IkTranslation_MaxSplineError": { - "field": "m_flIkTranslation_MaxSplineError", - "type": 8 - }, - "ErrorRangeQuantizationRotation": { - "field": "m_vecErrorRangeQuantizationRotation", - "type": 22 - }, - "ErrorRangeQuantizationTranslation": { - "field": "m_vecErrorRangeQuantizationTranslation", - "type": 22 - }, - "ErrorRangeQuantizationScale": { - "field": "m_vecErrorRangeQuantizationScale", - "type": 22 - }, - "IkRotation_MaxQuantizationError": { - "field": "m_flIkRotation_MaxQuantizationError", - "type": 8 - }, - "IkTranslation_MaxQuantizationError": { - "field": "m_flIkTranslation_MaxQuantizationError", - "type": 8 - }, - "BaseSequence": { - "field": "m_baseSequence", - "type": 14 - }, - "BaseSequenceFrame": { - "field": "m_nBaseSequenceFrame", - "type": 2 - }, - "BoneSelectionMode": { - "field": "m_boneSelectionMode", - "type": 6 - } - }, - "CAnimGraphDebugReplay": { - "AnimGraphFileName": { - "field": "m_animGraphFileName", - "type": 14 - }, - "StartIndex": { - "field": "m_startIndex", - "type": 2 - }, - "WriteIndex": { - "field": "m_writeIndex", - "type": 2 - }, - "FrameCount": { - "field": "m_frameCount", - "type": 2 - } - }, - "CAnimGraphModelBinding": { - "ModelName": { - "field": "m_modelName", - "type": 14 - } - }, - "CAnimGraphNetworkSettings": { - "NetworkingEnabled": { - "field": "m_bNetworkingEnabled", - "type": 10 - }, - "Parent": { - "field": "CAnimGraphSettingsGroup", - "type": 11 - } - }, - "CAnimGraphSettingsGroup": {}, - "CAnimGraphSettingsManager": {}, - "CAnimInputDamping": { - "SpeedFunction": { - "field": "m_speedFunction", - "type": 6 - }, - "SpeedScale": { - "field": "m_fSpeedScale", - "type": 8 - } - }, - "CAnimMotorUpdaterBase": { - "Name": { - "field": "m_name", - "type": 14 - }, - "Default": { - "field": "m_bDefault", - "type": 10 - } - }, - "CAnimNodePath": { - "Path": { - "field": "m_path", - "type": 45, - "size": 11 - }, - "Count": { - "field": "m_nCount", - "type": 2 - } - }, - "CAnimParamHandle": { - "Type": { - "field": "m_type", - "type": 4 - }, - "Index": { - "field": "m_index", - "type": 4 - } - }, - "CAnimParamHandleMap": {}, - "CAnimParameterBase": { - "Comment": { - "field": "m_sComment", - "type": 14 - }, - "Group": { - "field": "m_group", - "type": 14 - }, - "Id": { - "field": "m_id", - "classname": "AnimParamID", - "type": 16 - }, - "ComponentName": { - "field": "m_componentName", - "type": 14 - }, - "NetworkingRequested": { - "field": "m_bNetworkingRequested", - "type": 10 - }, - "IsReferenced": { - "field": "m_bIsReferenced", - "type": 10 - } - }, - "CAnimParameterManagerUpdater": {}, - "CAnimReplayFrame": { - "TimeStamp": { - "field": "m_timeStamp", - "type": 8 - } - }, - "CAnimScriptComponentUpdater": { - "Script": { - "field": "m_hScript", - "classname": "AnimScriptHandle", - "type": 16 - }, - "Parent": { - "field": "CAnimComponentUpdater", - "type": 11 - } - }, - "CAnimScriptManager": {}, - "CAnimStateMachineUpdater": { - "StartStateIndex": { - "field": "m_startStateIndex", - "type": 2 - } - }, - "CAnimTagBase": { - "Comment": { - "field": "m_sComment", - "type": 14 - }, - "TagID": { - "field": "m_tagID", - "classname": "AnimTagID", - "type": 16 - }, - "IsReferenced": { - "field": "m_bIsReferenced", - "type": 10 - } - }, - "CAnimTagManagerUpdater": {}, - "CAnimUpdateNodeBase": { - "NodePath": { - "field": "m_nodePath", - "classname": "CAnimNodePath", - "type": 16 - }, - "NetworkMode": { - "field": "m_networkMode", - "type": 6 - }, - "Name": { - "field": "m_name", - "type": 14 - } - }, - "CAnimUpdateNodeRef": { - "NodeIndex": { - "field": "m_nodeIndex", - "type": 2 - } - }, - "CAnimUpdateSharedData": { - "Settings": { - "field": "m_settings", - "classname": "CAnimGraphSettingsManager", - "type": 16 - }, - "RootNodePath": { - "field": "m_rootNodePath", - "classname": "CAnimNodePath", - "type": 16 - } - }, - "CAnimationGraphVisualizerAxis": { - "AxisSize": { - "field": "m_flAxisSize", - "type": 8 - }, - "Parent": { - "field": "CAnimationGraphVisualizerPrimitiveBase", - "type": 11 - } - }, - "CAnimationGraphVisualizerLine": { - "WsPositionStart": { - "field": "m_vWsPositionStart", - "type": 21 - }, - "WsPositionEnd": { - "field": "m_vWsPositionEnd", - "type": 21 - }, - "Color": { - "field": "m_Color", - "type": 19 - }, - "Parent": { - "field": "CAnimationGraphVisualizerPrimitiveBase", - "type": 11 - } - }, - "CAnimationGraphVisualizerPie": { - "WsCenter": { - "field": "m_vWsCenter", - "type": 21 - }, - "WsStart": { - "field": "m_vWsStart", - "type": 21 - }, - "WsEnd": { - "field": "m_vWsEnd", - "type": 21 - }, - "Color": { - "field": "m_Color", - "type": 19 - }, - "Parent": { - "field": "CAnimationGraphVisualizerPrimitiveBase", - "type": 11 - } - }, - "CAnimationGraphVisualizerPrimitiveBase": { - "Type": { - "field": "m_Type", - "type": 6 - }, - "OwningAnimNodePaths": { - "field": "m_OwningAnimNodePaths", - "type": 45, - "size": 11 - }, - "OwningAnimNodePathCount": { - "field": "m_nOwningAnimNodePathCount", - "type": 2 - } - }, - "CAnimationGraphVisualizerSphere": { - "WsPosition": { - "field": "m_vWsPosition", - "type": 21 - }, - "Radius": { - "field": "m_flRadius", - "type": 8 - }, - "Color": { - "field": "m_Color", - "type": 19 - }, - "Parent": { - "field": "CAnimationGraphVisualizerPrimitiveBase", - "type": 11 - } - }, - "CAnimationGraphVisualizerText": { - "WsPosition": { - "field": "m_vWsPosition", - "type": 21 - }, - "Color": { - "field": "m_Color", - "type": 19 - }, - "Text": { - "field": "m_Text", - "type": 14 - }, - "Parent": { - "field": "CAnimationGraphVisualizerPrimitiveBase", - "type": 11 - } - }, - "CAudioAnimTag": { - "ClipName": { - "field": "m_clipName", - "type": 14 - }, - "AttachmentName": { - "field": "m_attachmentName", - "type": 14 - }, - "Volume": { - "field": "m_flVolume", - "type": 8 - }, - "StopWhenTagEnds": { - "field": "m_bStopWhenTagEnds", - "type": 10 - }, - "StopWhenGraphEnds": { - "field": "m_bStopWhenGraphEnds", - "type": 10 - }, - "PlayOnServer": { - "field": "m_bPlayOnServer", - "type": 10 - }, - "PlayOnClient": { - "field": "m_bPlayOnClient", - "type": 10 - }, - "Parent": { - "field": "CAnimTagBase", - "type": 11 - } - }, - "CBinaryUpdateNode": { - "Child1": { - "field": "m_pChild1", - "classname": "CAnimUpdateNodeRef", - "type": 16 - }, - "Child2": { - "field": "m_pChild2", - "classname": "CAnimUpdateNodeRef", - "type": 16 - }, - "TimingBehavior": { - "field": "m_timingBehavior", - "type": 6 - }, - "TimingBlend": { - "field": "m_flTimingBlend", - "type": 8 - }, - "ResetChild1": { - "field": "m_bResetChild1", - "type": 10 - }, - "ResetChild2": { - "field": "m_bResetChild2", - "type": 10 - }, - "Parent": { - "field": "CAnimUpdateNodeBase", - "type": 11 - } - }, - "CBindPoseUpdateNode": { - "Parent": { - "field": "CLeafUpdateNode", - "type": 11 - } - }, - "CBlend2DUpdateNode": { - "ParamSpans": { - "field": "m_paramSpans", - "classname": "CParamSpanUpdater", - "type": 16 - }, - "NodeItemIndices": { - "field": "m_nodeItemIndices", - "type": 53 - }, - "Damping": { - "field": "m_damping", - "classname": "CAnimInputDamping", - "type": 16 - }, - "BlendSourceX": { - "field": "m_blendSourceX", - "type": 6 - }, - "ParamX": { - "field": "m_paramX", - "classname": "CAnimParamHandle", - "type": 16 - }, - "BlendSourceY": { - "field": "m_blendSourceY", - "type": 6 - }, - "ParamY": { - "field": "m_paramY", - "classname": "CAnimParamHandle", - "type": 16 - }, - "BlendMode": { - "field": "m_eBlendMode", - "type": 6 - }, - "PlaybackSpeed": { - "field": "m_playbackSpeed", - "type": 8 - }, - "Loop": { - "field": "m_bLoop", - "type": 10 - }, - "LockBlendOnReset": { - "field": "m_bLockBlendOnReset", - "type": 10 - }, - "LockWhenWaning": { - "field": "m_bLockWhenWaning", - "type": 10 - }, - "AnimEventsAndTagsOnMostWeightedOnly": { - "field": "m_bAnimEventsAndTagsOnMostWeightedOnly", - "type": 10 - }, - "Parent": { - "field": "CAnimUpdateNodeBase", - "type": 11 - } - }, - "CBlendCurve": { - "ControlPoint1": { - "field": "m_flControlPoint1", - "type": 8 - }, - "ControlPoint2": { - "field": "m_flControlPoint2", - "type": 8 - } - }, - "CBlendUpdateNode": { - "SortedOrder": { - "field": "m_sortedOrder", - "type": 55 - }, - "TargetValues": { - "field": "m_targetValues", - "type": 59 - }, - "BlendValueSource": { - "field": "m_blendValueSource", - "type": 6 - }, - "ParamIndex": { - "field": "m_paramIndex", - "classname": "CAnimParamHandle", - "type": 16 - }, - "Damping": { - "field": "m_damping", - "classname": "CAnimInputDamping", - "type": 16 - }, - "BlendKeyType": { - "field": "m_blendKeyType", - "type": 6 - }, - "LockBlendOnReset": { - "field": "m_bLockBlendOnReset", - "type": 10 - }, - "SyncCycles": { - "field": "m_bSyncCycles", - "type": 10 - }, - "Loop": { - "field": "m_bLoop", - "type": 10 - }, - "LockWhenWaning": { - "field": "m_bLockWhenWaning", - "type": 10 - }, - "Parent": { - "field": "CAnimUpdateNodeBase", - "type": 11 - } - }, - "CBlockSelectionMetricEvaluator": { - "Parent": { - "field": "CMotionMetricEvaluator", - "type": 11 - } - }, - "CBodyGroupAnimTag": { - "Priority": { - "field": "m_nPriority", - "type": 2 - }, - "Parent": { - "field": "CAnimTagBase", - "type": 11 - } - }, - "CBodyGroupSetting": { - "BodyGroupName": { - "field": "m_BodyGroupName", - "type": 14 - }, - "BodyGroupOption": { - "field": "m_nBodyGroupOption", - "type": 2 - } - }, - "CBoneMaskUpdateNode": { - "WeightListIndex": { - "field": "m_nWeightListIndex", - "type": 2 - }, - "RootMotionBlend": { - "field": "m_flRootMotionBlend", - "type": 8 - }, - "BlendSpace": { - "field": "m_blendSpace", - "type": 6 - }, - "FootMotionTiming": { - "field": "m_footMotionTiming", - "type": 6 - }, - "UseBlendScale": { - "field": "m_bUseBlendScale", - "type": 10 - }, - "BlendValueSource": { - "field": "m_blendValueSource", - "type": 6 - }, - "BlendParameter": { - "field": "m_hBlendParameter", - "classname": "CAnimParamHandle", - "type": 16 - }, - "Parent": { - "field": "CBinaryUpdateNode", - "type": 11 - } - }, - "CBonePositionMetricEvaluator": { - "BoneIndex": { - "field": "m_nBoneIndex", - "type": 2 - }, - "Parent": { - "field": "CMotionMetricEvaluator", - "type": 11 - } - }, - "CBoneVelocityMetricEvaluator": { - "BoneIndex": { - "field": "m_nBoneIndex", - "type": 2 - }, - "Parent": { - "field": "CMotionMetricEvaluator", - "type": 11 - } - }, - "CBoolAnimParameter": { - "DefaultValue": { - "field": "m_bDefaultValue", - "type": 10 - }, - "Parent": { - "field": "CConcreteAnimParameter", - "type": 11 - } - }, - "CCPPScriptComponentUpdater": { - "Parent": { - "field": "CAnimComponentUpdater", - "type": 11 - } - }, - "CCachedPose": { - "MorphWeights": { - "field": "m_morphWeights", - "type": 59 - }, - "Sequence": { - "field": "m_hSequence", - "type": 2 - }, - "Cycle": { - "field": "m_flCycle", - "type": 8 - } - }, - "CChoiceUpdateNode": { - "Weights": { - "field": "m_weights", - "type": 59 - }, - "BlendTimes": { - "field": "m_blendTimes", - "type": 59 - }, - "ChoiceMethod": { - "field": "m_choiceMethod", - "type": 6 - }, - "ChoiceChangeMethod": { - "field": "m_choiceChangeMethod", - "type": 6 - }, - "BlendMethod": { - "field": "m_blendMethod", - "type": 6 - }, - "BlendTime": { - "field": "m_blendTime", - "type": 8 - }, - "CrossFade": { - "field": "m_bCrossFade", - "type": 10 - }, - "ResetChosen": { - "field": "m_bResetChosen", - "type": 10 - }, - "DontResetSameSelection": { - "field": "m_bDontResetSameSelection", - "type": 10 - }, - "Parent": { - "field": "CAnimUpdateNodeBase", - "type": 11 - } - }, - "CChoreoUpdateNode": { - "Parent": { - "field": "CUnaryUpdateNode", - "type": 11 - } - }, - "CClothSettingsAnimTag": { - "Stiffness": { - "field": "m_flStiffness", - "type": 8 - }, - "EaseIn": { - "field": "m_flEaseIn", - "type": 8 - }, - "EaseOut": { - "field": "m_flEaseOut", - "type": 8 - }, - "VertexSet": { - "field": "m_nVertexSet", - "type": 14 - }, - "Parent": { - "field": "CAnimTagBase", - "type": 11 - } - }, - "CConcreteAnimParameter": { - "PreviewButton": { - "field": "m_previewButton", - "type": 6 - }, - "NetworkSetting": { - "field": "m_eNetworkSetting", - "type": 6 - }, - "UseMostRecentValue": { - "field": "m_bUseMostRecentValue", - "type": 10 - }, - "AutoReset": { - "field": "m_bAutoReset", - "type": 10 - }, - "GameWritable": { - "field": "m_bGameWritable", - "type": 10 - }, - "GraphWritable": { - "field": "m_bGraphWritable", - "type": 10 - }, - "Parent": { - "field": "CAnimParameterBase", - "type": 11 - } - }, - "CCurrentRotationVelocityMetricEvaluator": { - "Parent": { - "field": "CMotionMetricEvaluator", - "type": 11 - } - }, - "CCurrentVelocityMetricEvaluator": { - "Parent": { - "field": "CMotionMetricEvaluator", - "type": 11 - } - }, - "CCycleControlClipUpdateNode": { - "Sequence": { - "field": "m_hSequence", - "type": 2 - }, - "Duration": { - "field": "m_duration", - "type": 8 - }, - "ValueSource": { - "field": "m_valueSource", - "type": 6 - }, - "ParamIndex": { - "field": "m_paramIndex", - "classname": "CAnimParamHandle", - "type": 16 - }, - "Parent": { - "field": "CLeafUpdateNode", - "type": 11 - } - }, - "CCycleControlUpdateNode": { - "ValueSource": { - "field": "m_valueSource", - "type": 6 - }, - "ParamIndex": { - "field": "m_paramIndex", - "classname": "CAnimParamHandle", - "type": 16 - }, - "Parent": { - "field": "CUnaryUpdateNode", - "type": 11 - } - }, - "CDampedPathAnimMotorUpdater": { - "AnticipationTime": { - "field": "m_flAnticipationTime", - "type": 8 - }, - "MinSpeedScale": { - "field": "m_flMinSpeedScale", - "type": 8 - }, - "AnticipationPosParam": { - "field": "m_hAnticipationPosParam", - "classname": "CAnimParamHandle", - "type": 16 - }, - "AnticipationHeadingParam": { - "field": "m_hAnticipationHeadingParam", - "classname": "CAnimParamHandle", - "type": 16 - }, - "SpringConstant": { - "field": "m_flSpringConstant", - "type": 8 - }, - "MinSpringTension": { - "field": "m_flMinSpringTension", - "type": 8 - }, - "MaxSpringTension": { - "field": "m_flMaxSpringTension", - "type": 8 - }, - "Parent": { - "field": "CPathAnimMotorUpdaterBase", - "type": 11 - } - }, - "CDampedValueComponentUpdater": { - "Parent": { - "field": "CAnimComponentUpdater", - "type": 11 - } - }, - "CDampedValueUpdateItem": { - "Damping": { - "field": "m_damping", - "classname": "CAnimInputDamping", - "type": 16 - }, - "ParamIn": { - "field": "m_hParamIn", - "classname": "CAnimParamHandle", - "type": 16 - }, - "ParamOut": { - "field": "m_hParamOut", - "classname": "CAnimParamHandle", - "type": 16 - } - }, - "CDemoSettingsComponentUpdater": { - "Settings": { - "field": "m_settings", - "classname": "CAnimDemoCaptureSettings", - "type": 16 - }, - "Parent": { - "field": "CAnimComponentUpdater", - "type": 11 - } - }, - "CDirectPlaybackTagData": { - "SequenceName": { - "field": "m_sequenceName", - "type": 14 - } - }, - "CDirectPlaybackUpdateNode": { - "FinishEarly": { - "field": "m_bFinishEarly", - "type": 10 - }, - "ResetOnFinish": { - "field": "m_bResetOnFinish", - "type": 10 - }, - "Parent": { - "field": "CUnaryUpdateNode", - "type": 11 - } - }, - "CDirectionalBlendUpdateNode": { - "Sequences": { - "field": "m_hSequences", - "type": 31, - "size": 8 - }, - "Damping": { - "field": "m_damping", - "classname": "CAnimInputDamping", - "type": 16 - }, - "BlendValueSource": { - "field": "m_blendValueSource", - "type": 6 - }, - "ParamIndex": { - "field": "m_paramIndex", - "classname": "CAnimParamHandle", - "type": 16 - }, - "PlaybackSpeed": { - "field": "m_playbackSpeed", - "type": 8 - }, - "Duration": { - "field": "m_duration", - "type": 8 - }, - "Loop": { - "field": "m_bLoop", - "type": 10 - }, - "LockBlendOnReset": { - "field": "m_bLockBlendOnReset", - "type": 10 - }, - "Parent": { - "field": "CLeafUpdateNode", - "type": 11 - } - }, - "CDistanceRemainingMetricEvaluator": { - "MaxDistance": { - "field": "m_flMaxDistance", - "type": 8 - }, - "MinDistance": { - "field": "m_flMinDistance", - "type": 8 - }, - "StartGoalFilterDistance": { - "field": "m_flStartGoalFilterDistance", - "type": 8 - }, - "MaxGoalOvershootScale": { - "field": "m_flMaxGoalOvershootScale", - "type": 8 - }, - "FilterFixedMinDistance": { - "field": "m_bFilterFixedMinDistance", - "type": 10 - }, - "FilterGoalDistance": { - "field": "m_bFilterGoalDistance", - "type": 10 - }, - "FilterGoalOvershoot": { - "field": "m_bFilterGoalOvershoot", - "type": 10 - }, - "Parent": { - "field": "CMotionMetricEvaluator", - "type": 11 - } - }, - "CEditableMotionGraph": { - "Parent": { - "field": "CMotionGraph", - "type": 11 - } - }, - "CEmitTagActionUpdater": { - "TagIndex": { - "field": "m_nTagIndex", - "type": 2 - }, - "IsZeroDuration": { - "field": "m_bIsZeroDuration", - "type": 10 - }, - "Parent": { - "field": "CAnimActionUpdater", - "type": 11 - } - }, - "CEnumAnimParameter": { - "DefaultValue": { - "field": "m_defaultValue", - "type": 4 - }, - "EnumOptions": { - "field": "m_enumOptions", - "type": 50 - }, - "EnumReferenced": { - "field": "m_vecEnumReferenced", - "type": 58 - }, - "Parent": { - "field": "CConcreteAnimParameter", - "type": 11 - } - }, - "CExpressionActionUpdater": { - "Param": { - "field": "m_hParam", - "classname": "CAnimParamHandle", - "type": 16 - }, - "ParamType": { - "field": "m_eParamType", - "type": 4 - }, - "Script": { - "field": "m_hScript", - "classname": "AnimScriptHandle", - "type": 16 - }, - "Parent": { - "field": "CAnimActionUpdater", - "type": 11 - } - }, - "CFloatAnimParameter": { - "DefaultValue": { - "field": "m_fDefaultValue", - "type": 8 - }, - "MinValue": { - "field": "m_fMinValue", - "type": 8 - }, - "MaxValue": { - "field": "m_fMaxValue", - "type": 8 - }, - "Interpolate": { - "field": "m_bInterpolate", - "type": 10 - }, - "Parent": { - "field": "CConcreteAnimParameter", - "type": 11 - } - }, - "CFollowAttachmentUpdateNode": { - "OpFixedData": { - "field": "m_opFixedData", - "classname": "FollowAttachmentSettings_t", - "type": 16 - }, - "Parent": { - "field": "CUnaryUpdateNode", - "type": 11 - } - }, - "CFollowPathUpdateNode": { - "BlendOutTime": { - "field": "m_flBlendOutTime", - "type": 8 - }, - "BlockNonPathMovement": { - "field": "m_bBlockNonPathMovement", - "type": 10 - }, - "StopFeetAtGoal": { - "field": "m_bStopFeetAtGoal", - "type": 10 - }, - "ScaleSpeed": { - "field": "m_bScaleSpeed", - "type": 10 - }, - "Scale": { - "field": "m_flScale", - "type": 8 - }, - "MinAngle": { - "field": "m_flMinAngle", - "type": 8 - }, - "MaxAngle": { - "field": "m_flMaxAngle", - "type": 8 - }, - "SpeedScaleBlending": { - "field": "m_flSpeedScaleBlending", - "type": 8 - }, - "TurnDamping": { - "field": "m_turnDamping", - "classname": "CAnimInputDamping", - "type": 16 - }, - "FacingTarget": { - "field": "m_facingTarget", - "type": 6 - }, - "Param": { - "field": "m_hParam", - "classname": "CAnimParamHandle", - "type": 16 - }, - "TurnToFaceOffset": { - "field": "m_flTurnToFaceOffset", - "type": 8 - }, - "TurnToFace": { - "field": "m_bTurnToFace", - "type": 10 - }, - "Parent": { - "field": "CUnaryUpdateNode", - "type": 11 - } - }, - "CFollowTargetUpdateNode": { - "OpFixedData": { - "field": "m_opFixedData", - "classname": "FollowTargetOpFixedSettings_t", - "type": 16 - }, - "ParameterPosition": { - "field": "m_hParameterPosition", - "classname": "CAnimParamHandle", - "type": 16 - }, - "ParameterOrientation": { - "field": "m_hParameterOrientation", - "classname": "CAnimParamHandle", - "type": 16 - }, - "Parent": { - "field": "CUnaryUpdateNode", - "type": 11 - } - }, - "CFootAdjustmentUpdateNode": { - "Clips": { - "field": "m_clips", - "type": 53 - }, - "BasePoseCacheHandle": { - "field": "m_hBasePoseCacheHandle", - "classname": "CPoseHandle", - "type": 16 - }, - "FacingTarget": { - "field": "m_facingTarget", - "classname": "CAnimParamHandle", - "type": 16 - }, - "TurnTimeMin": { - "field": "m_flTurnTimeMin", - "type": 8 - }, - "TurnTimeMax": { - "field": "m_flTurnTimeMax", - "type": 8 - }, - "StepHeightMax": { - "field": "m_flStepHeightMax", - "type": 8 - }, - "StepHeightMaxAngle": { - "field": "m_flStepHeightMaxAngle", - "type": 8 - }, - "ResetChild": { - "field": "m_bResetChild", - "type": 10 - }, - "AnimationDriven": { - "field": "m_bAnimationDriven", - "type": 10 - }, - "Parent": { - "field": "CUnaryUpdateNode", - "type": 11 - } - }, - "CFootCycleMetricEvaluator": { - "FootIndices": { - "field": "m_footIndices", - "type": 53 - }, - "Parent": { - "field": "CMotionMetricEvaluator", - "type": 11 - } - }, - "CFootFallAnimTag": { - "Foot": { - "field": "m_foot", - "type": 6 - }, - "Parent": { - "field": "CAnimTagBase", - "type": 11 - } - }, - "CFootLockUpdateNode": { - "OpFixedSettings": { - "field": "m_opFixedSettings", - "classname": "FootLockPoseOpFixedSettings", - "type": 16 - }, - "HipShiftDamping": { - "field": "m_hipShiftDamping", - "classname": "CAnimInputDamping", - "type": 16 - }, - "RootHeightDamping": { - "field": "m_rootHeightDamping", - "classname": "CAnimInputDamping", - "type": 16 - }, - "StrideCurveScale": { - "field": "m_flStrideCurveScale", - "type": 8 - }, - "StrideCurveLimitScale": { - "field": "m_flStrideCurveLimitScale", - "type": 8 - }, - "StepHeightIncreaseScale": { - "field": "m_flStepHeightIncreaseScale", - "type": 8 - }, - "StepHeightDecreaseScale": { - "field": "m_flStepHeightDecreaseScale", - "type": 8 - }, - "HipShiftScale": { - "field": "m_flHipShiftScale", - "type": 8 - }, - "BlendTime": { - "field": "m_flBlendTime", - "type": 8 - }, - "MaxRootHeightOffset": { - "field": "m_flMaxRootHeightOffset", - "type": 8 - }, - "MinRootHeightOffset": { - "field": "m_flMinRootHeightOffset", - "type": 8 - }, - "TiltPlanePitchSpringStrength": { - "field": "m_flTiltPlanePitchSpringStrength", - "type": 8 - }, - "TiltPlaneRollSpringStrength": { - "field": "m_flTiltPlaneRollSpringStrength", - "type": 8 - }, - "ApplyFootRotationLimits": { - "field": "m_bApplyFootRotationLimits", - "type": 10 - }, - "ApplyHipShift": { - "field": "m_bApplyHipShift", - "type": 10 - }, - "ModulateStepHeight": { - "field": "m_bModulateStepHeight", - "type": 10 - }, - "ResetChild": { - "field": "m_bResetChild", - "type": 10 - }, - "EnableVerticalCurvedPaths": { - "field": "m_bEnableVerticalCurvedPaths", - "type": 10 - }, - "EnableRootHeightDamping": { - "field": "m_bEnableRootHeightDamping", - "type": 10 - }, - "Parent": { - "field": "CUnaryUpdateNode", - "type": 11 - } - }, - "CFootPinningUpdateNode": { - "PoseOpFixedData": { - "field": "m_poseOpFixedData", - "classname": "FootPinningPoseOpFixedData_t", - "type": 16 - }, - "TimingSource": { - "field": "m_eTimingSource", - "type": 6 - }, - "ResetChild": { - "field": "m_bResetChild", - "type": 10 - }, - "Parent": { - "field": "CUnaryUpdateNode", - "type": 11 - } - }, - "CFootPositionMetricEvaluator": { - "FootIndices": { - "field": "m_footIndices", - "type": 53 - }, - "IgnoreSlope": { - "field": "m_bIgnoreSlope", - "type": 10 - }, - "Parent": { - "field": "CMotionMetricEvaluator", - "type": 11 - } - }, - "CFootStepTriggerUpdateNode": { - "Tolerance": { - "field": "m_flTolerance", - "type": 8 - }, - "Parent": { - "field": "CUnaryUpdateNode", - "type": 11 - } - }, - "CFootstepLandedAnimTag": { - "FootstepType": { - "field": "m_FootstepType", - "type": 6 - }, - "OverrideSoundName": { - "field": "m_OverrideSoundName", - "type": 14 - }, - "DebugAnimSourceString": { - "field": "m_DebugAnimSourceString", - "type": 14 - }, - "BoneName": { - "field": "m_BoneName", - "type": 14 - }, - "Parent": { - "field": "CAnimTagBase", - "type": 11 - } - }, - "CFutureFacingMetricEvaluator": { - "Distance": { - "field": "m_flDistance", - "type": 8 - }, - "Time": { - "field": "m_flTime", - "type": 8 - }, - "Parent": { - "field": "CMotionMetricEvaluator", - "type": 11 - } - }, - "CFutureVelocityMetricEvaluator": { - "Distance": { - "field": "m_flDistance", - "type": 8 - }, - "StoppingDistance": { - "field": "m_flStoppingDistance", - "type": 8 - }, - "TargetSpeed": { - "field": "m_flTargetSpeed", - "type": 8 - }, - "Mode": { - "field": "m_eMode", - "type": 4 - }, - "Parent": { - "field": "CMotionMetricEvaluator", - "type": 11 - } - }, - "CHandshakeAnimTagBase": { - "IsDisableTag": { - "field": "m_bIsDisableTag", - "type": 10 - }, - "Parent": { - "field": "CAnimTagBase", - "type": 11 - } - }, - "CHitReactUpdateNode": { - "OpFixedSettings": { - "field": "m_opFixedSettings", - "classname": "HitReactFixedSettings_t", - "type": 16 - }, - "TriggerParam": { - "field": "m_triggerParam", - "classname": "CAnimParamHandle", - "type": 16 - }, - "HitBoneParam": { - "field": "m_hitBoneParam", - "classname": "CAnimParamHandle", - "type": 16 - }, - "HitOffsetParam": { - "field": "m_hitOffsetParam", - "classname": "CAnimParamHandle", - "type": 16 - }, - "HitDirectionParam": { - "field": "m_hitDirectionParam", - "classname": "CAnimParamHandle", - "type": 16 - }, - "HitStrengthParam": { - "field": "m_hitStrengthParam", - "classname": "CAnimParamHandle", - "type": 16 - }, - "MinDelayBetweenHits": { - "field": "m_flMinDelayBetweenHits", - "type": 8 - }, - "ResetChild": { - "field": "m_bResetChild", - "type": 10 - }, - "Parent": { - "field": "CUnaryUpdateNode", - "type": 11 - } - }, - "CInputStreamUpdateNode": { - "Parent": { - "field": "CLeafUpdateNode", - "type": 11 - } - }, - "CIntAnimParameter": { - "DefaultValue": { - "field": "m_defaultValue", - "type": 2 - }, - "MinValue": { - "field": "m_minValue", - "type": 2 - }, - "MaxValue": { - "field": "m_maxValue", - "type": 2 - }, - "Parent": { - "field": "CConcreteAnimParameter", - "type": 11 - } - }, - "CJiggleBoneUpdateNode": { - "OpFixedData": { - "field": "m_opFixedData", - "classname": "JiggleBoneSettingsList_t", - "type": 16 - }, - "Parent": { - "field": "CUnaryUpdateNode", - "type": 11 - } - }, - "CJumpHelperUpdateNode": { - "TargetParam": { - "field": "m_hTargetParam", - "classname": "CAnimParamHandle", - "type": 16 - }, - "OriginalJumpMovement": { - "field": "m_flOriginalJumpMovement", - "type": 21 - }, - "OriginalJumpDuration": { - "field": "m_flOriginalJumpDuration", - "type": 8 - }, - "JumpStartCycle": { - "field": "m_flJumpStartCycle", - "type": 8 - }, - "JumpEndCycle": { - "field": "m_flJumpEndCycle", - "type": 8 - }, - "CorrectionMethod": { - "field": "m_eCorrectionMethod", - "type": 6 - }, - "TranslationAxis": { - "field": "m_bTranslationAxis", - "type": 39, - "size": 3 - }, - "ScaleSpeed": { - "field": "m_bScaleSpeed", - "type": 10 - }, - "Parent": { - "field": "CSequenceUpdateNode", - "type": 11 - } - }, - "CLODComponentUpdater": { - "ServerLOD": { - "field": "m_nServerLOD", - "type": 2 - }, - "Parent": { - "field": "CAnimComponentUpdater", - "type": 11 - } - }, - "CLeafUpdateNode": { - "Parent": { - "field": "CAnimUpdateNodeBase", - "type": 11 - } - }, - "CLeanMatrixUpdateNode": { - "FrameCorners": { - "field": "m_frameCorners", - "type": 31, - "size": 3 - }, - "Poses": { - "field": "m_poses", - "type": 45, - "size": 9 - }, - "Damping": { - "field": "m_damping", - "classname": "CAnimInputDamping", - "type": 16 - }, - "BlendSource": { - "field": "m_blendSource", - "type": 6 - }, - "ParamIndex": { - "field": "m_paramIndex", - "classname": "CAnimParamHandle", - "type": 16 - }, - "VerticalAxis": { - "field": "m_verticalAxis", - "type": 21 - }, - "HorizontalAxis": { - "field": "m_horizontalAxis", - "type": 21 - }, - "Sequence": { - "field": "m_hSequence", - "type": 2 - }, - "MaxValue": { - "field": "m_flMaxValue", - "type": 8 - }, - "SequenceMaxFrame": { - "field": "m_nSequenceMaxFrame", - "type": 2 - }, - "Parent": { - "field": "CLeafUpdateNode", - "type": 11 - } - }, - "CLookAtUpdateNode": { - "OpFixedSettings": { - "field": "m_opFixedSettings", - "classname": "LookAtOpFixedSettings_t", - "type": 16 - }, - "Target": { - "field": "m_target", - "type": 6 - }, - "ParamIndex": { - "field": "m_paramIndex", - "classname": "CAnimParamHandle", - "type": 16 - }, - "WeightParamIndex": { - "field": "m_weightParamIndex", - "classname": "CAnimParamHandle", - "type": 16 - }, - "ResetChild": { - "field": "m_bResetChild", - "type": 10 - }, - "LockWhenWaning": { - "field": "m_bLockWhenWaning", - "type": 10 - }, - "Parent": { - "field": "CUnaryUpdateNode", - "type": 11 - } - }, - "CLookComponentUpdater": { - "LookHeading": { - "field": "m_hLookHeading", - "classname": "CAnimParamHandle", - "type": 16 - }, - "LookHeadingVelocity": { - "field": "m_hLookHeadingVelocity", - "classname": "CAnimParamHandle", - "type": 16 - }, - "LookPitch": { - "field": "m_hLookPitch", - "classname": "CAnimParamHandle", - "type": 16 - }, - "LookDistance": { - "field": "m_hLookDistance", - "classname": "CAnimParamHandle", - "type": 16 - }, - "LookDirection": { - "field": "m_hLookDirection", - "classname": "CAnimParamHandle", - "type": 16 - }, - "LookTarget": { - "field": "m_hLookTarget", - "classname": "CAnimParamHandle", - "type": 16 - }, - "LookTargetWorldSpace": { - "field": "m_hLookTargetWorldSpace", - "classname": "CAnimParamHandle", - "type": 16 - }, - "NetworkLookTarget": { - "field": "m_bNetworkLookTarget", - "type": 10 - }, - "Parent": { - "field": "CAnimComponentUpdater", - "type": 11 - } - }, - "CMaterialAttributeAnimTag": { - "AttributeName": { - "field": "m_AttributeName", - "type": 14 - }, - "AttributeType": { - "field": "m_AttributeType", - "type": 6 - }, - "Value": { - "field": "m_flValue", - "type": 8 - }, - "Color": { - "field": "m_Color", - "type": 19 - }, - "Parent": { - "field": "CAnimTagBase", - "type": 11 - } - }, - "CMotionDataSet": { - "DimensionCount": { - "field": "m_nDimensionCount", - "type": 2 - } - }, - "CMotionGraph": { - "ParamSpans": { - "field": "m_paramSpans", - "classname": "CParamSpanUpdater", - "type": 16 - }, - "ParameterCount": { - "field": "m_nParameterCount", - "type": 2 - }, - "ConfigStartIndex": { - "field": "m_nConfigStartIndex", - "type": 2 - }, - "ConfigCount": { - "field": "m_nConfigCount", - "type": 2 - }, - "Loop": { - "field": "m_bLoop", - "type": 10 - } - }, - "CMotionGraphConfig": { - "ParamValues": { - "field": "m_paramValues", - "type": 37, - "size": 4 - }, - "Duration": { - "field": "m_flDuration", - "type": 8 - }, - "MotionIndex": { - "field": "m_nMotionIndex", - "classname": "MotionIndex", - "type": 16 - }, - "SampleStart": { - "field": "m_nSampleStart", - "type": 2 - }, - "SampleCount": { - "field": "m_nSampleCount", - "type": 2 - } - }, - "CMotionGraphGroup": { - "SearchDB": { - "field": "m_searchDB", - "classname": "CMotionSearchDB", - "type": 16 - }, - "SampleToConfig": { - "field": "m_sampleToConfig", - "type": 53 - }, - "IsActiveScript": { - "field": "m_hIsActiveScript", - "classname": "AnimScriptHandle", - "type": 16 - } - }, - "CMotionGraphUpdateNode": { - "Parent": { - "field": "CLeafUpdateNode", - "type": 11 - } - }, - "CMotionMatchingUpdateNode": { - "DataSet": { - "field": "m_dataSet", - "classname": "CMotionDataSet", - "type": 16 - }, - "Weights": { - "field": "m_weights", - "type": 59 - }, - "SearchEveryTick": { - "field": "m_bSearchEveryTick", - "type": 10 - }, - "SearchInterval": { - "field": "m_flSearchInterval", - "type": 8 - }, - "SearchWhenClipEnds": { - "field": "m_bSearchWhenClipEnds", - "type": 10 - }, - "SearchWhenGoalChanges": { - "field": "m_bSearchWhenGoalChanges", - "type": 10 - }, - "BlendCurve": { - "field": "m_blendCurve", - "classname": "CBlendCurve", - "type": 16 - }, - "SampleRate": { - "field": "m_flSampleRate", - "type": 8 - }, - "BlendTime": { - "field": "m_flBlendTime", - "type": 8 - }, - "LockClipWhenWaning": { - "field": "m_bLockClipWhenWaning", - "type": 10 - }, - "SelectionThreshold": { - "field": "m_flSelectionThreshold", - "type": 8 - }, - "ReselectionTimeWindow": { - "field": "m_flReselectionTimeWindow", - "type": 8 - }, - "EnableRotationCorrection": { - "field": "m_bEnableRotationCorrection", - "type": 10 - }, - "GoalAssist": { - "field": "m_bGoalAssist", - "type": 10 - }, - "GoalAssistDistance": { - "field": "m_flGoalAssistDistance", - "type": 8 - }, - "GoalAssistTolerance": { - "field": "m_flGoalAssistTolerance", - "type": 8 - }, - "DistanceScale_Damping": { - "field": "m_distanceScale_Damping", - "classname": "CAnimInputDamping", - "type": 16 - }, - "DistanceScale_OuterRadius": { - "field": "m_flDistanceScale_OuterRadius", - "type": 8 - }, - "DistanceScale_InnerRadius": { - "field": "m_flDistanceScale_InnerRadius", - "type": 8 - }, - "DistanceScale_MaxScale": { - "field": "m_flDistanceScale_MaxScale", - "type": 8 - }, - "DistanceScale_MinScale": { - "field": "m_flDistanceScale_MinScale", - "type": 8 - }, - "EnableDistanceScaling": { - "field": "m_bEnableDistanceScaling", - "type": 10 - }, - "Parent": { - "field": "CLeafUpdateNode", - "type": 11 - } - }, - "CMotionMetricEvaluator": { - "Means": { - "field": "m_means", - "type": 59 - }, - "StandardDeviations": { - "field": "m_standardDeviations", - "type": 59 - }, - "Weight": { - "field": "m_flWeight", - "type": 8 - }, - "DimensionStartIndex": { - "field": "m_nDimensionStartIndex", - "type": 2 - } - }, - "CMotionNode": { - "Name": { - "field": "m_name", - "type": 14 - }, - "Id": { - "field": "m_id", - "classname": "AnimNodeID", - "type": 16 - } - }, - "CMotionNodeBlend1D": { - "ParamIndex": { - "field": "m_nParamIndex", - "type": 2 - }, - "Parent": { - "field": "CMotionNode", - "type": 11 - } - }, - "CMotionNodeSequence": { - "Sequence": { - "field": "m_hSequence", - "type": 2 - }, - "PlaybackSpeed": { - "field": "m_flPlaybackSpeed", - "type": 8 - }, - "Parent": { - "field": "CMotionNode", - "type": 11 - } - }, - "CMotionSearchDB": { - "RootNode": { - "field": "m_rootNode", - "classname": "CMotionSearchNode", - "type": 16 - }, - "ResidualQuantizer": { - "field": "m_residualQuantizer", - "classname": "CProductQuantizer", - "type": 16 - } - }, - "CMotionSearchNode": { - "Quantizer": { - "field": "m_quantizer", - "classname": "CVectorQuantizer", - "type": 16 - }, - "SelectableSamples": { - "field": "m_selectableSamples", - "type": 53 - } - }, - "CMovementComponentUpdater": { - "FacingDamping": { - "field": "m_facingDamping", - "classname": "CAnimInputDamping", - "type": 16 - }, - "DefaultMotorIndex": { - "field": "m_nDefaultMotorIndex", - "type": 2 - }, - "DefaultRunSpeed": { - "field": "m_flDefaultRunSpeed", - "type": 8 - }, - "MoveVarsDisabled": { - "field": "m_bMoveVarsDisabled", - "type": 10 - }, - "NetworkPath": { - "field": "m_bNetworkPath", - "type": 10 - }, - "NetworkFacing": { - "field": "m_bNetworkFacing", - "type": 10 - }, - "ParamHandles": { - "field": "m_paramHandles", - "type": 45, - "size": 30 - }, - "Parent": { - "field": "CAnimComponentUpdater", - "type": 11 - } - }, - "CMovementHandshakeAnimTag": { - "Parent": { - "field": "CHandshakeAnimTagBase", - "type": 11 - } - }, - "CMoverUpdateNode": { - "Damping": { - "field": "m_damping", - "classname": "CAnimInputDamping", - "type": 16 - }, - "FacingTarget": { - "field": "m_facingTarget", - "type": 6 - }, - "MoveVecParam": { - "field": "m_hMoveVecParam", - "classname": "CAnimParamHandle", - "type": 16 - }, - "MoveHeadingParam": { - "field": "m_hMoveHeadingParam", - "classname": "CAnimParamHandle", - "type": 16 - }, - "TurnToFaceParam": { - "field": "m_hTurnToFaceParam", - "classname": "CAnimParamHandle", - "type": 16 - }, - "TurnToFaceOffset": { - "field": "m_flTurnToFaceOffset", - "type": 8 - }, - "TurnToFaceLimit": { - "field": "m_flTurnToFaceLimit", - "type": 8 - }, - "Additive": { - "field": "m_bAdditive", - "type": 10 - }, - "ApplyMovement": { - "field": "m_bApplyMovement", - "type": 10 - }, - "OrientMovement": { - "field": "m_bOrientMovement", - "type": 10 - }, - "ApplyRotation": { - "field": "m_bApplyRotation", - "type": 10 - }, - "LimitOnly": { - "field": "m_bLimitOnly", - "type": 10 - }, - "Parent": { - "field": "CUnaryUpdateNode", - "type": 11 - } - }, - "COrientationWarpUpdateNode": { - "FacingPositionParameter": { - "field": "m_hFacingPositionParameter", - "classname": "CAnimParamHandle", - "type": 16 - }, - "TurnDamping": { - "field": "m_turnDamping", - "classname": "CAnimInputDamping", - "type": 16 - }, - "Parent": { - "field": "CUnaryUpdateNode", - "type": 11 - } - }, - "CPairedSequenceComponentUpdater": { - "Parent": { - "field": "CAnimComponentUpdater", - "type": 11 - } - }, - "CPairedSequenceUpdateNode": { - "Parent": { - "field": "CSequenceUpdateNodeBase", - "type": 11 - } - }, - "CParamSpanUpdater": {}, - "CParticleAnimTag": { - "ParticleSystemName": { - "field": "m_particleSystemName", - "type": 14 - }, - "ConfigName": { - "field": "m_configName", - "type": 14 - }, - "DetachFromOwner": { - "field": "m_bDetachFromOwner", - "type": 10 - }, - "StopWhenTagEnds": { - "field": "m_bStopWhenTagEnds", - "type": 10 - }, - "TagEndStopIsInstant": { - "field": "m_bTagEndStopIsInstant", - "type": 10 - }, - "AttachmentName": { - "field": "m_attachmentName", - "type": 14 - }, - "AttachmentType": { - "field": "m_attachmentType", - "type": 6 - }, - "AttachmentCP1Name": { - "field": "m_attachmentCP1Name", - "type": 14 - }, - "AttachmentCP1Type": { - "field": "m_attachmentCP1Type", - "type": 6 - }, - "Parent": { - "field": "CAnimTagBase", - "type": 11 - } - }, - "CPathAnimMotorUpdater": { - "Parent": { - "field": "CPathAnimMotorUpdaterBase", - "type": 11 - } - }, - "CPathAnimMotorUpdaterBase": { - "LockToPath": { - "field": "m_bLockToPath", - "type": 10 - }, - "Parent": { - "field": "CAnimMotorUpdaterBase", - "type": 11 - } - }, - "CPathHelperUpdateNode": { - "StoppingRadius": { - "field": "m_flStoppingRadius", - "type": 8 - }, - "StoppingSpeedScale": { - "field": "m_flStoppingSpeedScale", - "type": 8 - }, - "Parent": { - "field": "CUnaryUpdateNode", - "type": 11 - } - }, - "CPathMetricEvaluator": { - "PathTimeSamples": { - "field": "m_pathTimeSamples", - "type": 59 - }, - "Distance": { - "field": "m_flDistance", - "type": 8 - }, - "ExtrapolateMovement": { - "field": "m_bExtrapolateMovement", - "type": 10 - }, - "MinExtrapolationSpeed": { - "field": "m_flMinExtrapolationSpeed", - "type": 8 - }, - "Parent": { - "field": "CMotionMetricEvaluator", - "type": 11 - } - }, - "CPlayerInputAnimMotorUpdater": { - "SampleTimes": { - "field": "m_sampleTimes", - "type": 59 - }, - "SpringConstant": { - "field": "m_flSpringConstant", - "type": 8 - }, - "AnticipationDistance": { - "field": "m_flAnticipationDistance", - "type": 8 - }, - "AnticipationPosParam": { - "field": "m_hAnticipationPosParam", - "classname": "CAnimParamHandle", - "type": 16 - }, - "AnticipationHeadingParam": { - "field": "m_hAnticipationHeadingParam", - "classname": "CAnimParamHandle", - "type": 16 - }, - "UseAcceleration": { - "field": "m_bUseAcceleration", - "type": 10 - }, - "Parent": { - "field": "CAnimMotorUpdaterBase", - "type": 11 - } - }, - "CPoseHandle": { - "Index": { - "field": "m_nIndex", - "type": 5 - }, - "Type": { - "field": "m_eType", - "type": 4 - } - }, - "CProductQuantizer": { - "Dimensions": { - "field": "m_nDimensions", - "type": 2 - } - }, - "CRagdollAnimTag": { - "PoseControl": { - "field": "m_nPoseControl", - "type": 6 - }, - "Frequency": { - "field": "m_flFrequency", - "type": 8 - }, - "DampingRatio": { - "field": "m_flDampingRatio", - "type": 8 - }, - "DecayDuration": { - "field": "m_flDecayDuration", - "type": 8 - }, - "DecayBias": { - "field": "m_flDecayBias", - "type": 8 - }, - "Destroy": { - "field": "m_bDestroy", - "type": 10 - }, - "Parent": { - "field": "CAnimTagBase", - "type": 11 - } - }, - "CRagdollComponentUpdater": { - "BoneIndices": { - "field": "m_boneIndices", - "type": 53 - }, - "BoneNames": { - "field": "m_boneNames", - "type": 50 - }, - "SpringFrequencyMin": { - "field": "m_flSpringFrequencyMin", - "type": 8 - }, - "SpringFrequencyMax": { - "field": "m_flSpringFrequencyMax", - "type": 8 - }, - "MaxStretch": { - "field": "m_flMaxStretch", - "type": 8 - }, - "SolidCollisionAtZeroWeight": { - "field": "m_bSolidCollisionAtZeroWeight", - "type": 10 - }, - "Parent": { - "field": "CAnimComponentUpdater", - "type": 11 - } - }, - "CRagdollUpdateNode": { - "WeightListIndex": { - "field": "m_nWeightListIndex", - "type": 2 - }, - "PoseControlMethod": { - "field": "m_poseControlMethod", - "type": 6 - }, - "Parent": { - "field": "CUnaryUpdateNode", - "type": 11 - } - }, - "CRootUpdateNode": { - "Parent": { - "field": "CUnaryUpdateNode", - "type": 11 - } - }, - "CSelectorUpdateNode": { - "Tags": { - "field": "m_tags", - "type": 51 - }, - "BlendCurve": { - "field": "m_blendCurve", - "classname": "CBlendCurve", - "type": 16 - }, - "Parameter": { - "field": "m_hParameter", - "classname": "CAnimParamHandle", - "type": 16 - }, - "TagIndex": { - "field": "m_nTagIndex", - "type": 2 - }, - "TagBehavior": { - "field": "m_eTagBehavior", - "type": 6 - }, - "ResetOnChange": { - "field": "m_bResetOnChange", - "type": 10 - }, - "LockWhenWaning": { - "field": "m_bLockWhenWaning", - "type": 10 - }, - "SyncCyclesOnChange": { - "field": "m_bSyncCyclesOnChange", - "type": 10 - }, - "Parent": { - "field": "CAnimUpdateNodeBase", - "type": 11 - } - }, - "CSequenceFinishedAnimTag": { - "SequenceName": { - "field": "m_sequenceName", - "type": 14 - }, - "Parent": { - "field": "CAnimTagBase", - "type": 11 - } - }, - "CSequenceTagSpans": {}, - "CSequenceUpdateNode": { - "Sequence": { - "field": "m_hSequence", - "type": 2 - }, - "Duration": { - "field": "m_duration", - "type": 8 - }, - "ParamSpans": { - "field": "m_paramSpans", - "classname": "CParamSpanUpdater", - "type": 16 - }, - "Parent": { - "field": "CSequenceUpdateNodeBase", - "type": 11 - } - }, - "CSequenceUpdateNodeBase": { - "PlaybackSpeed": { - "field": "m_playbackSpeed", - "type": 8 - }, - "Loop": { - "field": "m_bLoop", - "type": 10 - }, - "Parent": { - "field": "CLeafUpdateNode", - "type": 11 - } - }, - "CSetParameterActionUpdater": { - "Param": { - "field": "m_hParam", - "classname": "CAnimParamHandle", - "type": 16 - }, - "Parent": { - "field": "CAnimActionUpdater", - "type": 11 - } - }, - "CSingleFrameUpdateNode": { - "PoseCacheHandle": { - "field": "m_hPoseCacheHandle", - "classname": "CPoseHandle", - "type": 16 - }, - "Sequence": { - "field": "m_hSequence", - "type": 2 - }, - "Cycle": { - "field": "m_flCycle", - "type": 8 - }, - "Parent": { - "field": "CLeafUpdateNode", - "type": 11 - } - }, - "CSlopeComponentUpdater": { - "TraceDistance": { - "field": "m_flTraceDistance", - "type": 8 - }, - "SlopeAngle": { - "field": "m_hSlopeAngle", - "classname": "CAnimParamHandle", - "type": 16 - }, - "SlopeAngleFront": { - "field": "m_hSlopeAngleFront", - "classname": "CAnimParamHandle", - "type": 16 - }, - "SlopeAngleSide": { - "field": "m_hSlopeAngleSide", - "classname": "CAnimParamHandle", - "type": 16 - }, - "SlopeHeading": { - "field": "m_hSlopeHeading", - "classname": "CAnimParamHandle", - "type": 16 - }, - "SlopeNormal": { - "field": "m_hSlopeNormal", - "classname": "CAnimParamHandle", - "type": 16 - }, - "SlopeNormal_WorldSpace": { - "field": "m_hSlopeNormal_WorldSpace", - "classname": "CAnimParamHandle", - "type": 16 - }, - "Parent": { - "field": "CAnimComponentUpdater", - "type": 11 - } - }, - "CSlowDownOnSlopesUpdateNode": { - "SlowDownStrength": { - "field": "m_flSlowDownStrength", - "type": 8 - }, - "Parent": { - "field": "CUnaryUpdateNode", - "type": 11 - } - }, - "CSolveIKChainUpdateNode": { - "OpFixedData": { - "field": "m_opFixedData", - "classname": "SolveIKChainPoseOpFixedSettings_t", - "type": 16 - }, - "Parent": { - "field": "CUnaryUpdateNode", - "type": 11 - } - }, - "CSolveIKTargetHandle_t": { - "PositionHandle": { - "field": "m_positionHandle", - "classname": "CAnimParamHandle", - "type": 16 - }, - "OrientationHandle": { - "field": "m_orientationHandle", - "classname": "CAnimParamHandle", - "type": 16 - } - }, - "CSpeedScaleUpdateNode": { - "ParamIndex": { - "field": "m_paramIndex", - "classname": "CAnimParamHandle", - "type": 16 - }, - "Parent": { - "field": "CUnaryUpdateNode", - "type": 11 - } - }, - "CStanceOverrideUpdateNode": { - "StanceSourceNode": { - "field": "m_pStanceSourceNode", - "classname": "CAnimUpdateNodeRef", - "type": 16 - }, - "Parameter": { - "field": "m_hParameter", - "classname": "CAnimParamHandle", - "type": 16 - }, - "Mode": { - "field": "m_eMode", - "type": 6 - }, - "Parent": { - "field": "CUnaryUpdateNode", - "type": 11 - } - }, - "CStanceScaleUpdateNode": { - "Param": { - "field": "m_hParam", - "classname": "CAnimParamHandle", - "type": 16 - }, - "Parent": { - "field": "CUnaryUpdateNode", - "type": 11 - } - }, - "CStateActionUpdater": { - "Behavior": { - "field": "m_eBehavior", - "type": 6 - } - }, - "CStateMachineComponentUpdater": { - "StateMachine": { - "field": "m_stateMachine", - "classname": "CAnimStateMachineUpdater", - "type": 16 - }, - "Parent": { - "field": "CAnimComponentUpdater", - "type": 11 - } - }, - "CStateMachineUpdateNode": { - "StateMachine": { - "field": "m_stateMachine", - "classname": "CAnimStateMachineUpdater", - "type": 16 - }, - "BlockWaningTags": { - "field": "m_bBlockWaningTags", - "type": 10 - }, - "LockStateWhenWaning": { - "field": "m_bLockStateWhenWaning", - "type": 10 - }, - "Parent": { - "field": "CAnimUpdateNodeBase", - "type": 11 - } - }, - "CStateNodeStateData": { - "Child": { - "field": "m_pChild", - "classname": "CAnimUpdateNodeRef", - "type": 16 - } - }, - "CStateNodeTransitionData": { - "Curve": { - "field": "m_curve", - "classname": "CBlendCurve", - "type": 16 - } - }, - "CStateUpdateData": { - "Name": { - "field": "m_name", - "type": 14 - }, - "Script": { - "field": "m_hScript", - "classname": "AnimScriptHandle", - "type": 16 - }, - "TransitionIndices": { - "field": "m_transitionIndices", - "type": 53 - }, - "StateID": { - "field": "m_stateID", - "classname": "AnimStateID", - "type": 16 - } - }, - "CStaticPoseCache": { - "BoneCount": { - "field": "m_nBoneCount", - "type": 2 - }, - "MorphCount": { - "field": "m_nMorphCount", - "type": 2 - } - }, - "CStaticPoseCacheBuilder": { - "Parent": { - "field": "CStaticPoseCache", - "type": 11 - } - }, - "CStepsRemainingMetricEvaluator": { - "FootIndices": { - "field": "m_footIndices", - "type": 53 - }, - "MinStepsRemaining": { - "field": "m_flMinStepsRemaining", - "type": 8 - }, - "Parent": { - "field": "CMotionMetricEvaluator", - "type": 11 - } - }, - "CStopAtGoalUpdateNode": { - "OuterRadius": { - "field": "m_flOuterRadius", - "type": 8 - }, - "InnerRadius": { - "field": "m_flInnerRadius", - "type": 8 - }, - "MaxScale": { - "field": "m_flMaxScale", - "type": 8 - }, - "MinScale": { - "field": "m_flMinScale", - "type": 8 - }, - "Damping": { - "field": "m_damping", - "classname": "CAnimInputDamping", - "type": 16 - }, - "Parent": { - "field": "CUnaryUpdateNode", - "type": 11 - } - }, - "CStringAnimTag": { - "Parent": { - "field": "CAnimTagBase", - "type": 11 - } - }, - "CSubtractUpdateNode": { - "FootMotionTiming": { - "field": "m_footMotionTiming", - "type": 6 - }, - "ApplyToFootMotion": { - "field": "m_bApplyToFootMotion", - "type": 10 - }, - "ApplyChannelsSeparately": { - "field": "m_bApplyChannelsSeparately", - "type": 10 - }, - "UseModelSpace": { - "field": "m_bUseModelSpace", - "type": 10 - }, - "Parent": { - "field": "CBinaryUpdateNode", - "type": 11 - } - }, - "CSymbolAnimParameter": { - "Parent": { - "field": "CConcreteAnimParameter", - "type": 11 - } - }, - "CTargetSelectorUpdateNode": { - "PositionParameter": { - "field": "m_hPositionParameter", - "classname": "CAnimParamHandle", - "type": 16 - }, - "FacePositionParameter": { - "field": "m_hFacePositionParameter", - "classname": "CAnimParamHandle", - "type": 16 - }, - "Parent": { - "field": "CAnimUpdateNodeBase", - "type": 11 - } - }, - "CTargetWarpUpdateNode": { - "PositionParameter": { - "field": "m_hPositionParameter", - "classname": "CAnimParamHandle", - "type": 16 - }, - "FacePositionParameter": { - "field": "m_hFacePositionParameter", - "classname": "CAnimParamHandle", - "type": 16 - }, - "Parent": { - "field": "CUnaryUpdateNode", - "type": 11 - } - }, - "CTaskHandshakeAnimTag": { - "Parent": { - "field": "CHandshakeAnimTagBase", - "type": 11 - } - }, - "CTaskStatusAnimTag": { - "Parent": { - "field": "CAnimTagBase", - "type": 11 - } - }, - "CTimeRemainingMetricEvaluator": { - "MatchByTimeRemaining": { - "field": "m_bMatchByTimeRemaining", - "type": 10 - }, - "MaxTimeRemaining": { - "field": "m_flMaxTimeRemaining", - "type": 8 - }, - "FilterByTimeRemaining": { - "field": "m_bFilterByTimeRemaining", - "type": 10 - }, - "MinTimeRemaining": { - "field": "m_flMinTimeRemaining", - "type": 8 - }, - "Parent": { - "field": "CMotionMetricEvaluator", - "type": 11 - } - }, - "CToggleComponentActionUpdater": { - "ComponentID": { - "field": "m_componentID", - "classname": "AnimComponentID", - "type": 16 - }, - "SetEnabled": { - "field": "m_bSetEnabled", - "type": 10 - }, - "Parent": { - "field": "CAnimActionUpdater", - "type": 11 - } - }, - "CTransitionUpdateData": { - "SrcStateIndex": { - "field": "m_srcStateIndex", - "type": 4 - }, - "DestStateIndex": { - "field": "m_destStateIndex", - "type": 4 - } - }, - "CTurnHelperUpdateNode": { - "FacingTarget": { - "field": "m_facingTarget", - "type": 6 - }, - "TurnStartTimeOffset": { - "field": "m_turnStartTimeOffset", - "type": 8 - }, - "TurnDuration": { - "field": "m_turnDuration", - "type": 8 - }, - "MatchChildDuration": { - "field": "m_bMatchChildDuration", - "type": 10 - }, - "ManualTurnOffset": { - "field": "m_manualTurnOffset", - "type": 8 - }, - "UseManualTurnOffset": { - "field": "m_bUseManualTurnOffset", - "type": 10 - }, - "Parent": { - "field": "CUnaryUpdateNode", - "type": 11 - } - }, - "CTwoBoneIKUpdateNode": { - "OpFixedData": { - "field": "m_opFixedData", - "classname": "TwoBoneIKSettings_t", - "type": 16 - }, - "Parent": { - "field": "CUnaryUpdateNode", - "type": 11 - } - }, - "CUnaryUpdateNode": { - "ChildNode": { - "field": "m_pChildNode", - "classname": "CAnimUpdateNodeRef", - "type": 16 - }, - "Parent": { - "field": "CAnimUpdateNodeBase", - "type": 11 - } - }, - "CVectorAnimParameter": { - "DefaultValue": { - "field": "m_defaultValue", - "type": 21 - }, - "Interpolate": { - "field": "m_bInterpolate", - "type": 10 - }, - "Parent": { - "field": "CConcreteAnimParameter", - "type": 11 - } - }, - "CVectorQuantizer": { - "CentroidVectors": { - "field": "m_centroidVectors", - "type": 59 - }, - "Centroids": { - "field": "m_nCentroids", - "type": 2 - }, - "Dimensions": { - "field": "m_nDimensions", - "type": 2 - } - }, - "CVirtualAnimParameter": { - "ExpressionString": { - "field": "m_expressionString", - "type": 14 - }, - "ParamType": { - "field": "m_eParamType", - "type": 4 - }, - "Parent": { - "field": "CAnimParameterBase", - "type": 11 - } - }, - "CWayPointHelperUpdateNode": { - "StartCycle": { - "field": "m_flStartCycle", - "type": 8 - }, - "EndCycle": { - "field": "m_flEndCycle", - "type": 8 - }, - "OnlyGoals": { - "field": "m_bOnlyGoals", - "type": 10 - }, - "PreventOvershoot": { - "field": "m_bPreventOvershoot", - "type": 10 - }, - "PreventUndershoot": { - "field": "m_bPreventUndershoot", - "type": 10 - }, - "Parent": { - "field": "CUnaryUpdateNode", - "type": 11 - } - }, - "CZeroPoseUpdateNode": { - "Parent": { - "field": "CLeafUpdateNode", - "type": 11 - } - }, - "ChainToSolveData_t": { - "ChainIndex": { - "field": "m_nChainIndex", - "type": 2 - }, - "SolverSettings": { - "field": "m_SolverSettings", - "classname": "IKSolverSettings_t", - "type": 16 - }, - "TargetSettings": { - "field": "m_TargetSettings", - "classname": "IKTargetSettings_t", - "type": 16 - }, - "DebugSetting": { - "field": "m_DebugSetting", - "type": 6 - }, - "DebugNormalizedValue": { - "field": "m_flDebugNormalizedValue", - "type": 8 - }, - "DebugOffset": { - "field": "m_vDebugOffset", - "type": 21 - } - }, - "ConfigIndex": { - "Group": { - "field": "m_nGroup", - "type": 5 - }, - "Config": { - "field": "m_nConfig", - "type": 5 - } - }, - "FollowAttachmentSettings_t": { - "Attachment": { - "field": "m_attachment", - "classname": "CAnimAttachment", - "type": 16 - }, - "BoneIndex": { - "field": "m_boneIndex", - "type": 2 - }, - "MatchTranslation": { - "field": "m_bMatchTranslation", - "type": 10 - }, - "MatchRotation": { - "field": "m_bMatchRotation", - "type": 10 - } - }, - "FollowTargetOpFixedSettings_t": { - "BoneIndex": { - "field": "m_boneIndex", - "type": 2 - }, - "BoneTarget": { - "field": "m_bBoneTarget", - "type": 10 - }, - "BoneTargetIndex": { - "field": "m_boneTargetIndex", - "type": 2 - }, - "WorldCoodinateTarget": { - "field": "m_bWorldCoodinateTarget", - "type": 10 - }, - "MatchTargetOrientation": { - "field": "m_bMatchTargetOrientation", - "type": 10 - } - }, - "FootFixedData_t": { - "ToeOffset": { - "field": "m_vToeOffset", - "type": 21 - }, - "HeelOffset": { - "field": "m_vHeelOffset", - "type": 21 - }, - "TargetBoneIndex": { - "field": "m_nTargetBoneIndex", - "type": 2 - }, - "AnkleBoneIndex": { - "field": "m_nAnkleBoneIndex", - "type": 2 - }, - "IKAnchorBoneIndex": { - "field": "m_nIKAnchorBoneIndex", - "type": 2 - }, - "IkChainIndex": { - "field": "m_ikChainIndex", - "type": 2 - }, - "MaxIKLength": { - "field": "m_flMaxIKLength", - "type": 8 - }, - "FootIndex": { - "field": "m_nFootIndex", - "type": 2 - }, - "TagIndex": { - "field": "m_nTagIndex", - "type": 2 - }, - "MaxRotationLeft": { - "field": "m_flMaxRotationLeft", - "type": 8 - }, - "MaxRotationRight": { - "field": "m_flMaxRotationRight", - "type": 8 - } - }, - "FootFixedSettings": { - "TraceSettings": { - "field": "m_traceSettings", - "classname": "TraceSettings_t", - "type": 16 - }, - "FootBaseBindPosePositionMS": { - "field": "m_vFootBaseBindPosePositionMS", - "type": 21 - }, - "FootBaseLength": { - "field": "m_flFootBaseLength", - "type": 8 - }, - "MaxRotationLeft": { - "field": "m_flMaxRotationLeft", - "type": 8 - }, - "MaxRotationRight": { - "field": "m_flMaxRotationRight", - "type": 8 - }, - "FootstepLandedTagIndex": { - "field": "m_footstepLandedTagIndex", - "type": 2 - }, - "EnableTracing": { - "field": "m_bEnableTracing", - "type": 10 - }, - "TraceAngleBlend": { - "field": "m_flTraceAngleBlend", - "type": 8 - }, - "DisableTagIndex": { - "field": "m_nDisableTagIndex", - "type": 2 - }, - "FootIndex": { - "field": "m_nFootIndex", - "type": 2 - } - }, - "FootLockPoseOpFixedSettings": { - "HipDampingSettings": { - "field": "m_hipDampingSettings", - "classname": "CAnimInputDamping", - "type": 16 - }, - "HipBoneIndex": { - "field": "m_nHipBoneIndex", - "type": 2 - }, - "IkSolverType": { - "field": "m_ikSolverType", - "type": 6 - }, - "ApplyTilt": { - "field": "m_bApplyTilt", - "type": 10 - }, - "ApplyHipDrop": { - "field": "m_bApplyHipDrop", - "type": 10 - }, - "AlwaysUseFallbackHinge": { - "field": "m_bAlwaysUseFallbackHinge", - "type": 10 - }, - "ApplyFootRotationLimits": { - "field": "m_bApplyFootRotationLimits", - "type": 10 - }, - "ApplyLegTwistLimits": { - "field": "m_bApplyLegTwistLimits", - "type": 10 - }, - "MaxFootHeight": { - "field": "m_flMaxFootHeight", - "type": 8 - }, - "ExtensionScale": { - "field": "m_flExtensionScale", - "type": 8 - }, - "MaxLegTwist": { - "field": "m_flMaxLegTwist", - "type": 8 - }, - "EnableLockBreaking": { - "field": "m_bEnableLockBreaking", - "type": 10 - }, - "LockBreakTolerance": { - "field": "m_flLockBreakTolerance", - "type": 8 - }, - "LockBlendTime": { - "field": "m_flLockBlendTime", - "type": 8 - }, - "EnableStretching": { - "field": "m_bEnableStretching", - "type": 10 - }, - "MaxStretchAmount": { - "field": "m_flMaxStretchAmount", - "type": 8 - }, - "StretchExtensionScale": { - "field": "m_flStretchExtensionScale", - "type": 8 - } - }, - "FootPinningPoseOpFixedData_t": { - "BlendTime": { - "field": "m_flBlendTime", - "type": 8 - }, - "LockBreakDistance": { - "field": "m_flLockBreakDistance", - "type": 8 - }, - "MaxLegTwist": { - "field": "m_flMaxLegTwist", - "type": 8 - }, - "HipBoneIndex": { - "field": "m_nHipBoneIndex", - "type": 2 - }, - "ApplyLegTwistLimits": { - "field": "m_bApplyLegTwistLimits", - "type": 10 - }, - "ApplyFootRotationLimits": { - "field": "m_bApplyFootRotationLimits", - "type": 10 - } - }, - "FootStepTrigger": { - "Tags": { - "field": "m_tags", - "type": 53 - }, - "FootIndex": { - "field": "m_nFootIndex", - "type": 2 - }, - "TriggerPhase": { - "field": "m_triggerPhase", - "type": 6 - } - }, - "HitReactFixedSettings_t": { - "WeightListIndex": { - "field": "m_nWeightListIndex", - "type": 2 - }, - "EffectedBoneCount": { - "field": "m_nEffectedBoneCount", - "type": 2 - }, - "MaxImpactForce": { - "field": "m_flMaxImpactForce", - "type": 8 - }, - "MinImpactForce": { - "field": "m_flMinImpactForce", - "type": 8 - }, - "WhipImpactScale": { - "field": "m_flWhipImpactScale", - "type": 8 - }, - "CounterRotationScale": { - "field": "m_flCounterRotationScale", - "type": 8 - }, - "DistanceFadeScale": { - "field": "m_flDistanceFadeScale", - "type": 8 - }, - "PropagationScale": { - "field": "m_flPropagationScale", - "type": 8 - }, - "WhipDelay": { - "field": "m_flWhipDelay", - "type": 8 - }, - "SpringStrength": { - "field": "m_flSpringStrength", - "type": 8 - }, - "WhipSpringStrength": { - "field": "m_flWhipSpringStrength", - "type": 8 - }, - "MaxAngleRadians": { - "field": "m_flMaxAngleRadians", - "type": 8 - }, - "HipBoneIndex": { - "field": "m_nHipBoneIndex", - "type": 2 - }, - "HipBoneTranslationScale": { - "field": "m_flHipBoneTranslationScale", - "type": 8 - }, - "HipDipSpringStrength": { - "field": "m_flHipDipSpringStrength", - "type": 8 - }, - "HipDipImpactScale": { - "field": "m_flHipDipImpactScale", - "type": 8 - }, - "HipDipDelay": { - "field": "m_flHipDipDelay", - "type": 8 - } - }, - "IKBoneNameAndIndex_t": { - "Name": { - "field": "m_Name", - "type": 14 - } - }, - "IKDemoCaptureSettings_t": { - "ParentBoneName": { - "field": "m_parentBoneName", - "type": 14 - }, - "Mode": { - "field": "m_eMode", - "type": 6 - }, - "IkChainName": { - "field": "m_ikChainName", - "type": 14 - }, - "OneBoneStart": { - "field": "m_oneBoneStart", - "type": 14 - }, - "OneBoneEnd": { - "field": "m_oneBoneEnd", - "type": 14 - } - }, - "IKSolverSettings_t": { - "SolverType": { - "field": "m_SolverType", - "type": 6 - }, - "NumIterations": { - "field": "m_nNumIterations", - "type": 2 - }, - "EndEffectorRotationFixUpMode": { - "field": "m_EndEffectorRotationFixUpMode", - "type": 6 - } - }, - "IKTargetSettings_t": { - "TargetSource": { - "field": "m_TargetSource", - "type": 6 - }, - "Bone": { - "field": "m_Bone", - "classname": "IKBoneNameAndIndex_t", - "type": 16 - }, - "AnimgraphParameterNamePosition": { - "field": "m_AnimgraphParameterNamePosition", - "classname": "AnimParamID", - "type": 16 - }, - "AnimgraphParameterNameOrientation": { - "field": "m_AnimgraphParameterNameOrientation", - "classname": "AnimParamID", - "type": 16 - }, - "TargetCoordSystem": { - "field": "m_TargetCoordSystem", - "type": 6 - } - }, - "JiggleBoneSettingsList_t": {}, - "JiggleBoneSettings_t": { - "BoneIndex": { - "field": "m_nBoneIndex", - "type": 2 - }, - "SpringStrength": { - "field": "m_flSpringStrength", - "type": 8 - }, - "MaxTimeStep": { - "field": "m_flMaxTimeStep", - "type": 8 - }, - "Damping": { - "field": "m_flDamping", - "type": 8 - }, - "BoundsMaxLS": { - "field": "m_vBoundsMaxLS", - "type": 21 - }, - "BoundsMinLS": { - "field": "m_vBoundsMinLS", - "type": 21 - }, - "SimSpace": { - "field": "m_eSimSpace", - "type": 6 - } - }, - "LookAtBone_t": { - "Index": { - "field": "m_index", - "type": 2 - }, - "Weight": { - "field": "m_weight", - "type": 8 - } - }, - "LookAtOpFixedSettings_t": { - "Attachment": { - "field": "m_attachment", - "classname": "CAnimAttachment", - "type": 16 - }, - "Damping": { - "field": "m_damping", - "classname": "CAnimInputDamping", - "type": 16 - }, - "YawLimit": { - "field": "m_flYawLimit", - "type": 8 - }, - "PitchLimit": { - "field": "m_flPitchLimit", - "type": 8 - }, - "HysteresisInnerAngle": { - "field": "m_flHysteresisInnerAngle", - "type": 8 - }, - "HysteresisOuterAngle": { - "field": "m_flHysteresisOuterAngle", - "type": 8 - }, - "RotateYawForward": { - "field": "m_bRotateYawForward", - "type": 10 - }, - "MaintainUpDirection": { - "field": "m_bMaintainUpDirection", - "type": 10 - }, - "TargetIsPosition": { - "field": "m_bTargetIsPosition", - "type": 10 - }, - "UseHysteresis": { - "field": "m_bUseHysteresis", - "type": 10 - } - }, - "MotionBlendItem": { - "KeyValue": { - "field": "m_flKeyValue", - "type": 8 - } - }, - "MotionDBIndex": { - "Index": { - "field": "m_nIndex", - "type": 6 - } - }, - "MotionIndex": { - "Group": { - "field": "m_nGroup", - "type": 5 - }, - "Motion": { - "field": "m_nMotion", - "type": 5 - } - }, - "ParamSpanSample_t": { - "Cycle": { - "field": "m_flCycle", - "type": 8 - } - }, - "ParamSpan_t": { - "Param": { - "field": "m_hParam", - "classname": "CAnimParamHandle", - "type": 16 - }, - "ParamType": { - "field": "m_eParamType", - "type": 4 - }, - "StartCycle": { - "field": "m_flStartCycle", - "type": 8 - }, - "EndCycle": { - "field": "m_flEndCycle", - "type": 8 - } - }, - "SampleCode": { - "SubCode": { - "field": "m_subCode", - "type": 33, - "size": 8 - } - }, - "ScriptInfo_t": { - "Code": { - "field": "m_code", - "type": 14 - }, - "ProxyReadParams": { - "field": "m_proxyReadParams", - "type": 53 - }, - "ProxyWriteParams": { - "field": "m_proxyWriteParams", - "type": 53 - }, - "ScriptType": { - "field": "m_eScriptType", - "type": 5 - } - }, - "SolveIKChainPoseOpFixedSettings_t": {}, - "StanceInfo_t": { - "Position": { - "field": "m_vPosition", - "type": 21 - }, - "Direction": { - "field": "m_flDirection", - "type": 8 - } - }, - "TagSpan_t": { - "TagIndex": { - "field": "m_tagIndex", - "type": 2 - }, - "StartCycle": { - "field": "m_startCycle", - "type": 8 - }, - "EndCycle": { - "field": "m_endCycle", - "type": 8 - } - }, - "TraceSettings_t": { - "TraceHeight": { - "field": "m_flTraceHeight", - "type": 8 - }, - "TraceRadius": { - "field": "m_flTraceRadius", - "type": 8 - } - }, - "TwoBoneIKSettings_t": { - "EndEffectorType": { - "field": "m_endEffectorType", - "type": 6 - }, - "EndEffectorAttachment": { - "field": "m_endEffectorAttachment", - "classname": "CAnimAttachment", - "type": 16 - }, - "TargetType": { - "field": "m_targetType", - "type": 6 - }, - "TargetAttachment": { - "field": "m_targetAttachment", - "classname": "CAnimAttachment", - "type": 16 - }, - "TargetBoneIndex": { - "field": "m_targetBoneIndex", - "type": 2 - }, - "PositionParam": { - "field": "m_hPositionParam", - "classname": "CAnimParamHandle", - "type": 16 - }, - "RotationParam": { - "field": "m_hRotationParam", - "classname": "CAnimParamHandle", - "type": 16 - }, - "AlwaysUseFallbackHinge": { - "field": "m_bAlwaysUseFallbackHinge", - "type": 10 - }, - "LsFallbackHingeAxis": { - "field": "m_vLsFallbackHingeAxis", - "type": 21 - }, - "FixedBoneIndex": { - "field": "m_nFixedBoneIndex", - "type": 2 - }, - "MiddleBoneIndex": { - "field": "m_nMiddleBoneIndex", - "type": 2 - }, - "EndBoneIndex": { - "field": "m_nEndBoneIndex", - "type": 2 - }, - "MatchTargetOrientation": { - "field": "m_bMatchTargetOrientation", - "type": 10 - }, - "ConstrainTwist": { - "field": "m_bConstrainTwist", - "type": 10 - }, - "MaxTwist": { - "field": "m_flMaxTwist", - "type": 8 - } - }, - "WeightList": { - "Name": { - "field": "m_name", - "type": 14 - }, - "Weights": { - "field": "m_weights", - "type": 59 - } - }, - "CNmAdditiveBlendTask": { - "Parent": { - "field": "CNmBlendTaskBase", - "type": 11 - } - }, - "CNmBitFlags": { - "Flags": { - "field": "m_flags", - "type": 6 - } - }, - "CNmBlendTask": { - "Parent": { - "field": "CNmBlendTaskBase", - "type": 11 - } - }, - "CNmBlendTaskBase": { - "Parent": { - "field": "CNmTask", - "type": 11 - } - }, - "CNmBoneMask": { - "WeightInfo": { - "field": "m_weightInfo", - "type": 4 - }, - "Weights": { - "field": "m_weights", - "type": 59 - } - }, - "CNmCachedPoseReadTask": { - "Parent": { - "field": "CNmTask", - "type": 11 - } - }, - "CNmCachedPoseWriteTask": { - "Parent": { - "field": "CNmTask", - "type": 11 - } - }, - "CNmClip": { - "NumFrames": { - "field": "m_nNumFrames", - "type": 6 - }, - "Duration": { - "field": "m_flDuration", - "type": 8 - }, - "CompressedPoseOffsets": { - "field": "m_compressedPoseOffsets", - "type": 57 - }, - "SyncTrack": { - "field": "m_syncTrack", - "classname": "CNmSyncTrack", - "type": 16 - }, - "RootMotion": { - "field": "m_rootMotion", - "classname": "CNmRootMotionData", - "type": 16 - }, - "IsAdditive": { - "field": "m_bIsAdditive", - "type": 10 - } - }, - "CNmEvent": { - "StartTimeSeconds": { - "field": "m_flStartTimeSeconds", - "type": 8 - }, - "DurationSeconds": { - "field": "m_flDurationSeconds", - "type": 8 - } - }, - "CNmFootEvent": { - "Phase": { - "field": "m_phase", - "type": 4 - }, - "Parent": { - "field": "CNmEvent", - "type": 11 - } - }, - "CNmFrameSnapEvent": { - "FrameSnapMode": { - "field": "m_frameSnapMode", - "type": 6 - }, - "Parent": { - "field": "CNmEvent", - "type": 11 - } - }, - "CNmGraphDefinition": { - "PersistentNodeIndices": { - "field": "m_persistentNodeIndices", - "type": 52 - }, - "RootNodeIdx": { - "field": "m_nRootNodeIdx", - "type": 1 - }, - "VirtualParameterNodeIndices": { - "field": "m_virtualParameterNodeIndices", - "type": 52 - }, - "NodePaths": { - "field": "m_nodePaths", - "type": 50 - } - }, - "CNmGraphVariation": {}, - "CNmIDEvent": { - "Parent": { - "field": "CNmEvent", - "type": 11 - } - }, - "CNmIKRig": {}, - "CNmLegacyEvent": { - "AnimEventClassName": { - "field": "m_animEventClassName", - "type": 14 - }, - "Parent": { - "field": "CNmEvent", - "type": 11 - } - }, - "CNmModelSpaceBlendTask": { - "Parent": { - "field": "CNmBlendTaskBase", - "type": 11 - } - }, - "CNmOrientationWarpEvent": { - "Parent": { - "field": "CNmEvent", - "type": 11 - } - }, - "CNmOverlayBlendTask": { - "Parent": { - "field": "CNmBlendTaskBase", - "type": 11 - } - }, - "CNmReferencePoseTask": { - "Parent": { - "field": "CNmTask", - "type": 11 - } - }, - "CNmRootMotionData": { - "NumFrames": { - "field": "m_nNumFrames", - "type": 2 - }, - "AverageLinearVelocity": { - "field": "m_flAverageLinearVelocity", - "type": 8 - }, - "AverageAngularVelocityRadians": { - "field": "m_flAverageAngularVelocityRadians", - "type": 8 - } - }, - "CNmRootMotionEvent": { - "BlendTimeSeconds": { - "field": "m_flBlendTimeSeconds", - "type": 8 - }, - "Parent": { - "field": "CNmEvent", - "type": 11 - } - }, - "CNmSampleTask": { - "Parent": { - "field": "CNmTask", - "type": 11 - } - }, - "CNmSkeleton": { - "ParentIndices": { - "field": "m_parentIndices", - "type": 53 - }, - "NumBonesToSampleAtLowLOD": { - "field": "m_numBonesToSampleAtLowLOD", - "type": 2 - } - }, - "CNmSyncTrack": { - "StartEventOffset": { - "field": "m_nStartEventOffset", - "type": 2 - } - }, - "CNmTarget": { - "IsBoneTarget": { - "field": "m_bIsBoneTarget", - "type": 10 - }, - "IsUsingBoneSpaceOffsets": { - "field": "m_bIsUsingBoneSpaceOffsets", - "type": 10 - }, - "HasOffsets": { - "field": "m_bHasOffsets", - "type": 10 - }, - "IsSet": { - "field": "m_bIsSet", - "type": 10 - } - }, - "CNmTargetWarpEvent": { - "Rule": { - "field": "m_rule", - "type": 4 - }, - "Algorithm": { - "field": "m_algorithm", - "type": 4 - }, - "Parent": { - "field": "CNmEvent", - "type": 11 - } - }, - "CNmTask": {}, - "CNmTransitionEvent": { - "Rule": { - "field": "m_rule", - "type": 4 - }, - "Parent": { - "field": "CNmEvent", - "type": 11 - } - }, - "CNmZeroPoseTask": { - "Parent": { - "field": "CNmTask", - "type": 11 - } - }, - "NmCompressionSettings_t": { - "IsRotationStatic": { - "field": "m_bIsRotationStatic", - "type": 10 - }, - "IsTranslationStatic": { - "field": "m_bIsTranslationStatic", - "type": 10 - }, - "IsScaleStatic": { - "field": "m_bIsScaleStatic", - "type": 10 - } - }, - "NmPercent_t": { - "Value": { - "field": "m_flValue", - "type": 8 - } - }, - "NmSyncTrackTimeRange_t": { - "StartTime": { - "field": "m_startTime", - "classname": "NmSyncTrackTime_t", - "type": 16 - }, - "EndTime": { - "field": "m_endTime", - "classname": "NmSyncTrackTime_t", - "type": 16 - } - }, - "NmSyncTrackTime_t": { - "EventIdx": { - "field": "m_nEventIdx", - "type": 2 - }, - "PercentageThrough": { - "field": "m_percentageThrough", - "classname": "NmPercent_t", - "type": 16 - } - }, - "ActiveModelConfig_t": { - "Handle": { - "field": "m_Handle", - "classname": "ModelConfigHandle_t", - "type": 16 - }, - "Name": { - "field": "m_Name", - "type": 13 - }, - "AssociatedEntityNames": { - "field": "m_AssociatedEntityNames", - "type": 48 - } - }, - "AmmoIndex_t": { - "Value": { - "field": "m_Value", - "type": 0 - } - }, - "AmmoTypeInfo_t": { - "MaxCarry": { - "field": "m_nMaxCarry", - "type": 2 - }, - "SplashSize": { - "field": "m_nSplashSize", - "classname": "CRangeInt", - "type": 16 - }, - "Flags": { - "field": "m_nFlags", - "type": 6 - }, - "Mass": { - "field": "m_flMass", - "type": 8 - }, - "Speed": { - "field": "m_flSpeed", - "classname": "CRangeFloat", - "type": 16 - } - }, - "CAnimEventListener": { - "Parent": { - "field": "CAnimEventListenerBase", - "type": 11 - } - }, - "CAnimEventListenerBase": {}, - "CAnimEventQueueListener": { - "Parent": { - "field": "CAnimEventListenerBase", - "type": 11 - } - }, - "CAnimGraphControllerBase": {}, - "CAnimGraphNetworkedVariables": { - "PredNetBoolVariables": { - "field": "m_PredNetBoolVariables", - "type": 57 - }, - "PredNetByteVariables": { - "field": "m_PredNetByteVariables", - "type": 55 - }, - "PredNetUInt16Variables": { - "field": "m_PredNetUInt16Variables", - "type": 56 - }, - "PredNetIntVariables": { - "field": "m_PredNetIntVariables", - "type": 53 - }, - "PredNetUInt32Variables": { - "field": "m_PredNetUInt32Variables", - "type": 57 - }, - "PredNetUInt64Variables": { - "field": "m_PredNetUInt64Variables", - "type": 58 - }, - "PredNetFloatVariables": { - "field": "m_PredNetFloatVariables", - "type": 59 - }, - "PredNetVectorVariables": { - "field": "m_PredNetVectorVariables", - "type": 63 - }, - "OwnerOnlyPredNetBoolVariables": { - "field": "m_OwnerOnlyPredNetBoolVariables", - "type": 57 - }, - "OwnerOnlyPredNetByteVariables": { - "field": "m_OwnerOnlyPredNetByteVariables", - "type": 55 - }, - "OwnerOnlyPredNetUInt16Variables": { - "field": "m_OwnerOnlyPredNetUInt16Variables", - "type": 56 - }, - "OwnerOnlyPredNetIntVariables": { - "field": "m_OwnerOnlyPredNetIntVariables", - "type": 53 - }, - "OwnerOnlyPredNetUInt32Variables": { - "field": "m_OwnerOnlyPredNetUInt32Variables", - "type": 57 - }, - "OwnerOnlyPredNetUInt64Variables": { - "field": "m_OwnerOnlyPredNetUInt64Variables", - "type": 58 - }, - "OwnerOnlyPredNetFloatVariables": { - "field": "m_OwnerOnlyPredNetFloatVariables", - "type": 59 - }, - "OwnerOnlyPredNetVectorVariables": { - "field": "m_OwnerOnlyPredNetVectorVariables", - "type": 63 - }, - "BoolVariablesCount": { - "field": "m_nBoolVariablesCount", - "type": 2 - }, - "OwnerOnlyBoolVariablesCount": { - "field": "m_nOwnerOnlyBoolVariablesCount", - "type": 2 - }, - "RandomSeedOffset": { - "field": "m_nRandomSeedOffset", - "type": 2 - }, - "LastTeleportTime": { - "field": "m_flLastTeleportTime", - "type": 8 - } - }, - "CAttributeList": { - "Manager": { - "field": "m_pManager", - "classname": "CAttributeManager", - "type": 24 - } - }, - "CAttributeManager": { - "ReapplyProvisionParity": { - "field": "m_iReapplyProvisionParity", - "type": 2 - }, - "Outer": { - "field": "m_hOuter", - "type": 17, - "classname": "CBaseEntity" - }, - "PreventLoopback": { - "field": "m_bPreventLoopback", - "type": 10 - }, - "ProviderType": { - "field": "m_ProviderType", - "type": 6 - } - }, - "CBaseAnimGraph": { - "InitiallyPopulateInterpHistory": { - "field": "m_bInitiallyPopulateInterpHistory", - "type": 10 - }, - "ChoreoServices": { - "field": "m_pChoreoServices", - "classname": "IChoreoServices", - "type": 24 - }, - "AnimGraphUpdateEnabled": { - "field": "m_bAnimGraphUpdateEnabled", - "type": 10 - }, - "MaxSlopeDistance": { - "field": "m_flMaxSlopeDistance", - "type": 8 - }, - "LastSlopeCheckPos": { - "field": "m_vLastSlopeCheckPos", - "type": 21 - }, - "AnimationUpdateScheduled": { - "field": "m_bAnimationUpdateScheduled", - "type": 10 - }, - "Force": { - "field": "m_vecForce", - "type": 21 - }, - "ForceBone": { - "field": "m_nForceBone", - "type": 2 - }, - "RagdollPose": { - "field": "m_RagdollPose", - "classname": "PhysicsRagdollPose_t", - "type": 16 - }, - "RagdollClientSide": { - "field": "m_bRagdollClientSide", - "type": 10 - }, - "LastDestructiblePartDestroyedAnimgraphSetTick": { - "field": "m_nLastDestructiblePartDestroyedAnimgraphSetTick", - "type": 2 - }, - "Parent": { - "field": "CBaseModelEntity", - "type": 11 - } - }, - "CBaseAnimGraphController": { - "AnimGraphNetworkedVars": { - "field": "m_animGraphNetworkedVars", - "classname": "CAnimGraphNetworkedVariables", - "type": 16 - }, - "SequenceFinished": { - "field": "m_bSequenceFinished", - "type": 10 - }, - "SoundSyncTime": { - "field": "m_flSoundSyncTime", - "type": 8 - }, - "ActiveIKChainMask": { - "field": "m_nActiveIKChainMask", - "type": 6 - }, - "Sequence": { - "field": "m_hSequence", - "type": 2 - }, - "SeqStartTime": { - "field": "m_flSeqStartTime", - "type": 8 - }, - "SeqFixedCycle": { - "field": "m_flSeqFixedCycle", - "type": 8 - }, - "AnimLoopMode": { - "field": "m_nAnimLoopMode", - "type": 6 - }, - "PlaybackRate": { - "field": "m_flPlaybackRate", - "type": 8 - }, - "NotifyState": { - "field": "m_nNotifyState", - "type": 4 - }, - "NetworkedAnimationInputsChanged": { - "field": "m_bNetworkedAnimationInputsChanged", - "type": 10 - }, - "NetworkedSequenceChanged": { - "field": "m_bNetworkedSequenceChanged", - "type": 10 - }, - "LastUpdateSkipped": { - "field": "m_bLastUpdateSkipped", - "type": 10 - }, - "PrevAnimUpdateTime": { - "field": "m_flPrevAnimUpdateTime", - "type": 8 - }, - "Parent": { - "field": "CSkeletonAnimationController", - "type": 11 - } - }, - "CBasePlayerController": { - "InButtonsWhichAreToggles": { - "field": "m_nInButtonsWhichAreToggles", - "type": 7 - }, - "TickBase": { - "field": "m_nTickBase", - "type": 6 - }, - "Pawn": { - "field": "m_hPawn", - "type": 17, - "classname": "CBasePlayerPawn" - }, - "KnownTeamMismatch": { - "field": "m_bKnownTeamMismatch", - "type": 10 - }, - "SplitScreenSlot": { - "field": "m_nSplitScreenSlot", - "type": 2 - }, - "SplitOwner": { - "field": "m_hSplitOwner", - "type": 17, - "classname": "CBasePlayerController" - }, - "IsHLTV": { - "field": "m_bIsHLTV", - "type": 10 - }, - "Connected": { - "field": "m_iConnected", - "type": 6 - }, - "PlayerName": { - "field": "m_iszPlayerName", - "type": 15, - "size": 128 - }, - "NetworkIDString": { - "field": "m_szNetworkIDString", - "type": 14 - }, - "LerpTime": { - "field": "m_fLerpTime", - "type": 8 - }, - "LagCompensation": { - "field": "m_bLagCompensation", - "type": 10 - }, - "Predict": { - "field": "m_bPredict", - "type": 10 - }, - "IsLowViolence": { - "field": "m_bIsLowViolence", - "type": 10 - }, - "GamePaused": { - "field": "m_bGamePaused", - "type": 10 - }, - "IgnoreGlobalChat": { - "field": "m_iIgnoreGlobalChat", - "type": 6 - }, - "LastPlayerTalkTime": { - "field": "m_flLastPlayerTalkTime", - "type": 8 - }, - "LastEntitySteadyState": { - "field": "m_flLastEntitySteadyState", - "type": 8 - }, - "AvailableEntitySteadyState": { - "field": "m_nAvailableEntitySteadyState", - "type": 2 - }, - "HasAnySteadyStateEnts": { - "field": "m_bHasAnySteadyStateEnts", - "type": 10 - }, - "SteamID": { - "field": "m_steamID", - "type": 7 - }, - "DesiredFOV": { - "field": "m_iDesiredFOV", - "type": 6 - }, - "Parent": { - "field": "CBaseEntity", - "type": 11 - } - }, - "CBasePlayerControllerAPI": {}, - "CBasePlayerVData": { - "HeadDamageMultiplier": { - "field": "m_flHeadDamageMultiplier", - "classname": "CSkillFloat", - "type": 16 - }, - "ChestDamageMultiplier": { - "field": "m_flChestDamageMultiplier", - "classname": "CSkillFloat", - "type": 16 - }, - "StomachDamageMultiplier": { - "field": "m_flStomachDamageMultiplier", - "classname": "CSkillFloat", - "type": 16 - }, - "ArmDamageMultiplier": { - "field": "m_flArmDamageMultiplier", - "classname": "CSkillFloat", - "type": 16 - }, - "LegDamageMultiplier": { - "field": "m_flLegDamageMultiplier", - "classname": "CSkillFloat", - "type": 16 - }, - "HoldBreathTime": { - "field": "m_flHoldBreathTime", - "type": 8 - }, - "DrowningDamageInterval": { - "field": "m_flDrowningDamageInterval", - "type": 8 - }, - "DrowningDamageInitial": { - "field": "m_nDrowningDamageInitial", - "type": 2 - }, - "DrowningDamageMax": { - "field": "m_nDrowningDamageMax", - "type": 2 - }, - "WaterSpeed": { - "field": "m_nWaterSpeed", - "type": 2 - }, - "UseRange": { - "field": "m_flUseRange", - "type": 8 - }, - "UseAngleTolerance": { - "field": "m_flUseAngleTolerance", - "type": 8 - }, - "CrouchTime": { - "field": "m_flCrouchTime", - "type": 8 - }, - "Parent": { - "field": "CEntitySubclassVDataBase", - "type": 11 - } - }, - "CBasePlayerWeaponVData": { - "BuiltRightHanded": { - "field": "m_bBuiltRightHanded", - "type": 10 - }, - "AllowFlipping": { - "field": "m_bAllowFlipping", - "type": 10 - }, - "LinkedCooldowns": { - "field": "m_bLinkedCooldowns", - "type": 10 - }, - "Flags": { - "field": "m_iFlags", - "type": 4 - }, - "PrimaryAmmoType": { - "field": "m_nPrimaryAmmoType", - "type": 6 - }, - "SecondaryAmmoType": { - "field": "m_nSecondaryAmmoType", - "type": 6 - }, - "MaxClip1": { - "field": "m_iMaxClip1", - "type": 2 - }, - "MaxClip2": { - "field": "m_iMaxClip2", - "type": 2 - }, - "DefaultClip1": { - "field": "m_iDefaultClip1", - "type": 2 - }, - "DefaultClip2": { - "field": "m_iDefaultClip2", - "type": 2 - }, - "ReserveAmmoAsClips": { - "field": "m_bReserveAmmoAsClips", - "type": 10 - }, - "Weight": { - "field": "m_iWeight", - "type": 2 - }, - "AutoSwitchTo": { - "field": "m_bAutoSwitchTo", - "type": 10 - }, - "AutoSwitchFrom": { - "field": "m_bAutoSwitchFrom", - "type": 10 - }, - "RumbleEffect": { - "field": "m_iRumbleEffect", - "type": 6 - }, - "Slot": { - "field": "m_iSlot", - "type": 2 - }, - "Position": { - "field": "m_iPosition", - "type": 2 - }, - "Parent": { - "field": "CEntitySubclassVDataBase", - "type": 11 - } - }, - "CBaseProp": { - "ModelOverrodeBlockLOS": { - "field": "m_bModelOverrodeBlockLOS", - "type": 10 - }, - "ShapeType": { - "field": "m_iShapeType", - "type": 2 - }, - "ConformToCollisionBounds": { - "field": "m_bConformToCollisionBounds", - "type": 10 - }, - "Parent": { - "field": "CBaseAnimGraph", - "type": 11 - } - }, - "CBodyComponent": { - "SceneNode": { - "field": "m_pSceneNode", - "classname": "CGameSceneNode", - "type": 24 - }, - "__pChainEntity": { - "field": "__m_pChainEntity", - "classname": "CNetworkVarChainer", - "type": 16 - }, - "Parent": { - "field": "CEntityComponent", - "type": 11 - } - }, - "CBodyComponentBaseAnimGraph": { - "AnimationController": { - "field": "m_animationController", - "classname": "CBaseAnimGraphController", - "type": 16 - }, - "Parent": { - "field": "CBodyComponentSkeletonInstance", - "type": 11 - } - }, - "CBodyComponentBaseModelEntity": { - "Parent": { - "field": "CBodyComponentSkeletonInstance", - "type": 11 - } - }, - "CBodyComponentPoint": { - "SceneNode": { - "field": "m_sceneNode", - "classname": "CGameSceneNode", - "type": 16 - }, - "Parent": { - "field": "CBodyComponent", - "type": 11 - } - }, - "CBodyComponentSkeletonInstance": { - "SkeletonInstance": { - "field": "m_skeletonInstance", - "classname": "CSkeletonInstance", - "type": 16 - }, - "Parent": { - "field": "CBodyComponent", - "type": 11 - } - }, - "CBombTarget": { - "OnBombExplode": { - "field": "m_OnBombExplode", - "classname": "CEntityIOOutput", - "type": 16 - }, - "OnBombPlanted": { - "field": "m_OnBombPlanted", - "classname": "CEntityIOOutput", - "type": 16 - }, - "OnBombDefused": { - "field": "m_OnBombDefused", - "classname": "CEntityIOOutput", - "type": 16 - }, - "IsBombSiteB": { - "field": "m_bIsBombSiteB", - "type": 10 - }, - "IsHeistBombTarget": { - "field": "m_bIsHeistBombTarget", - "type": 10 - }, - "BombPlantedHere": { - "field": "m_bBombPlantedHere", - "type": 10 - }, - "MountTarget": { - "field": "m_szMountTarget", - "type": 13 - }, - "InstructorHint": { - "field": "m_hInstructorHint", - "type": 17, - "classname": "CBaseEntity" - }, - "BombSiteDesignation": { - "field": "m_nBombSiteDesignation", - "type": 2 - }, - "Parent": { - "field": "CBaseTrigger", - "type": 11 - } - }, - "CBreachCharge": { - "Parent": { - "field": "CCSWeaponBase", - "type": 11 - } - }, - "CBreachChargeProjectile": { - "Parent": { - "field": "CBaseGrenade", - "type": 11 - } - }, - "CBreakableStageHelper": { - "CurrentStage": { - "field": "m_nCurrentStage", - "type": 2 - }, - "StageCount": { - "field": "m_nStageCount", - "type": 2 - } - }, - "CBumpMine": { - "Parent": { - "field": "CCSWeaponBase", - "type": 11 - } - }, - "CBumpMineProjectile": { - "Parent": { - "field": "CBaseGrenade", - "type": 11 - } - }, - "CBuoyancyHelper": { - "FluidType": { - "field": "m_nFluidType", - "type": 12 - }, - "FluidDensity": { - "field": "m_flFluidDensity", - "type": 8 - }, - "FractionOfWheelSubmergedForWheelFriction": { - "field": "m_vecFractionOfWheelSubmergedForWheelFriction", - "type": 59 - }, - "WheelFrictionScales": { - "field": "m_vecWheelFrictionScales", - "type": 59 - }, - "FractionOfWheelSubmergedForWheelDrag": { - "field": "m_vecFractionOfWheelSubmergedForWheelDrag", - "type": 59 - }, - "WheelDrag": { - "field": "m_vecWheelDrag", - "type": 59 - } - }, - "CCSClientPointScriptEntity": { - "Parent": { - "field": "CCSPointScriptEntity", - "type": 11 - } - }, - "CCSGOPlayerAnimGraphState": {}, - "CCSGOViewModel_GraphController": { - "Parent": { - "field": "CAnimGraphControllerBase", - "type": 11 - } - }, - "CCSGO_WingmanIntroCharacterPosition": { - "Parent": { - "field": "CCSGO_TeamIntroCharacterPosition", - "type": 11 - } - }, - "CCSGO_WingmanIntroCounterTerroristPosition": { - "Parent": { - "field": "CCSGO_WingmanIntroCharacterPosition", - "type": 11 - } - }, - "CCSGO_WingmanIntroTerroristPosition": { - "Parent": { - "field": "CCSGO_WingmanIntroCharacterPosition", - "type": 11 - } - }, - "CCSGameModeRules": { - "__pChainEntity": { - "field": "__m_pChainEntity", - "classname": "CNetworkVarChainer", - "type": 16 - } - }, - "CCSGameModeRules_ArmsRace": { - "WeaponSequence": { - "field": "m_WeaponSequence", - "type": 50 - }, - "Parent": { - "field": "CCSGameModeRules", - "type": 11 - } - }, - "CCSGameModeRules_Deathmatch": { - "DMBonusStartTime": { - "field": "m_flDMBonusStartTime", - "type": 8 - }, - "DMBonusTimeLength": { - "field": "m_flDMBonusTimeLength", - "type": 8 - }, - "DMBonusWeapon": { - "field": "m_sDMBonusWeapon", - "type": 14 - }, - "Parent": { - "field": "CCSGameModeRules", - "type": 11 - } - }, - "CCSGameModeRules_Noop": { - "Parent": { - "field": "CCSGameModeRules", - "type": 11 - } - }, - "CCSObserver_CameraServices": { - "Parent": { - "field": "CCSPlayerBase_CameraServices", - "type": 11 - } - }, - "CCSObserver_MovementServices": { - "Parent": { - "field": "CPlayer_MovementServices", - "type": 11 - } - }, - "CCSObserver_ObserverServices": { - "Parent": { - "field": "CPlayer_ObserverServices", - "type": 11 - } - }, - "CCSObserver_UseServices": { - "Parent": { - "field": "CPlayer_UseServices", - "type": 11 - } - }, - "CCSObserver_ViewModelServices": { - "Parent": { - "field": "CPlayer_ViewModelServices", - "type": 11 - } - }, - "CCSPlayerBase_CameraServices": { - "FOV": { - "field": "m_iFOV", - "type": 6 - }, - "FOVStart": { - "field": "m_iFOVStart", - "type": 6 - }, - "FOVTime": { - "field": "m_flFOVTime", - "type": 8 - }, - "FOVRate": { - "field": "m_flFOVRate", - "type": 8 - }, - "ZoomOwner": { - "field": "m_hZoomOwner", - "type": 17, - "classname": "CBaseEntity" - }, - "LastFogTrigger": { - "field": "m_hLastFogTrigger", - "type": 17, - "classname": "CBaseEntity" - }, - "Parent": { - "field": "CPlayer_CameraServices", - "type": 11 - } - }, - "CCSPlayerController": { - "InGameMoneyServices": { - "field": "m_pInGameMoneyServices", - "classname": "CCSPlayerController_InGameMoneyServices", - "type": 24 - }, - "InventoryServices": { - "field": "m_pInventoryServices", - "classname": "CCSPlayerController_InventoryServices", - "type": 24 - }, - "ActionTrackingServices": { - "field": "m_pActionTrackingServices", - "classname": "CCSPlayerController_ActionTrackingServices", - "type": 24 - }, - "DamageServices": { - "field": "m_pDamageServices", - "classname": "CCSPlayerController_DamageServices", - "type": 24 - }, - "Ping": { - "field": "m_iPing", - "type": 6 - }, - "HasCommunicationAbuseMute": { - "field": "m_bHasCommunicationAbuseMute", - "type": 10 - }, - "CrosshairCodes": { - "field": "m_szCrosshairCodes", - "type": 13 - }, - "PendingTeamNum": { - "field": "m_iPendingTeamNum", - "type": 4 - }, - "ForceTeamTime": { - "field": "m_flForceTeamTime", - "type": 8 - }, - "CompTeammateColor": { - "field": "m_iCompTeammateColor", - "type": 2 - }, - "EverPlayedOnTeam": { - "field": "m_bEverPlayedOnTeam", - "type": 10 - }, - "AttemptedToGetColor": { - "field": "m_bAttemptedToGetColor", - "type": 10 - }, - "TeammatePreferredColor": { - "field": "m_iTeammatePreferredColor", - "type": 2 - }, - "TeamChanged": { - "field": "m_bTeamChanged", - "type": 10 - }, - "InSwitchTeam": { - "field": "m_bInSwitchTeam", - "type": 10 - }, - "HasSeenJoinGame": { - "field": "m_bHasSeenJoinGame", - "type": 10 - }, - "JustBecameSpectator": { - "field": "m_bJustBecameSpectator", - "type": 10 - }, - "SwitchTeamsOnNextRoundReset": { - "field": "m_bSwitchTeamsOnNextRoundReset", - "type": 10 - }, - "RemoveAllItemsOnNextRoundReset": { - "field": "m_bRemoveAllItemsOnNextRoundReset", - "type": 10 - }, - "LastJoinTeamTime": { - "field": "m_flLastJoinTeamTime", - "type": 8 - }, - "Clan": { - "field": "m_szClan", - "type": 13 - }, - "ClanName": { - "field": "m_szClanName", - "type": 15, - "size": 32 - }, - "CoachingTeam": { - "field": "m_iCoachingTeam", - "type": 2 - }, - "PlayerDominated": { - "field": "m_nPlayerDominated", - "type": 7 - }, - "PlayerDominatingMe": { - "field": "m_nPlayerDominatingMe", - "type": 7 - }, - "CompetitiveRanking": { - "field": "m_iCompetitiveRanking", - "type": 2 - }, - "CompetitiveWins": { - "field": "m_iCompetitiveWins", - "type": 2 - }, - "CompetitiveRankType": { - "field": "m_iCompetitiveRankType", - "type": 0 - }, - "CompetitiveRankingPredicted_Win": { - "field": "m_iCompetitiveRankingPredicted_Win", - "type": 2 - }, - "CompetitiveRankingPredicted_Loss": { - "field": "m_iCompetitiveRankingPredicted_Loss", - "type": 2 - }, - "CompetitiveRankingPredicted_Tie": { - "field": "m_iCompetitiveRankingPredicted_Tie", - "type": 2 - }, - "EndMatchNextMapVote": { - "field": "m_nEndMatchNextMapVote", - "type": 2 - }, - "ActiveQuestId": { - "field": "m_unActiveQuestId", - "type": 5 - }, - "PlayerTvControlFlags": { - "field": "m_unPlayerTvControlFlags", - "type": 6 - }, - "DraftIndex": { - "field": "m_iDraftIndex", - "type": 2 - }, - "MsQueuedModeDisconnectionTimestamp": { - "field": "m_msQueuedModeDisconnectionTimestamp", - "type": 6 - }, - "UiAbandonRecordedReason": { - "field": "m_uiAbandonRecordedReason", - "type": 6 - }, - "CannotBeKicked": { - "field": "m_bCannotBeKicked", - "type": 10 - }, - "EverFullyConnected": { - "field": "m_bEverFullyConnected", - "type": 10 - }, - "AbandonAllowsSurrender": { - "field": "m_bAbandonAllowsSurrender", - "type": 10 - }, - "AbandonOffersInstantSurrender": { - "field": "m_bAbandonOffersInstantSurrender", - "type": 10 - }, - "Disconnection1MinWarningPrinted": { - "field": "m_bDisconnection1MinWarningPrinted", - "type": 10 - }, - "ScoreReported": { - "field": "m_bScoreReported", - "type": 10 - }, - "DisconnectionTick": { - "field": "m_nDisconnectionTick", - "type": 2 - }, - "ControllingBot": { - "field": "m_bControllingBot", - "type": 10 - }, - "HasControlledBotThisRound": { - "field": "m_bHasControlledBotThisRound", - "type": 10 - }, - "HasBeenControlledByPlayerThisRound": { - "field": "m_bHasBeenControlledByPlayerThisRound", - "type": 10 - }, - "BotsControlledThisRound": { - "field": "m_nBotsControlledThisRound", - "type": 2 - }, - "CanControlObservedBot": { - "field": "m_bCanControlObservedBot", - "type": 10 - }, - "PlayerPawn": { - "field": "m_hPlayerPawn", - "type": 17, - "classname": "CCSPlayerPawn" - }, - "ObserverPawn": { - "field": "m_hObserverPawn", - "type": 17, - "classname": "CCSObserverPawn" - }, - "DesiredObserverMode": { - "field": "m_DesiredObserverMode", - "type": 2 - }, - "DesiredObserverTarget": { - "field": "m_hDesiredObserverTarget", - "type": 17, - "classname": "CEntityInstance" - }, - "PawnIsAlive": { - "field": "m_bPawnIsAlive", - "type": 10 - }, - "PawnHealth": { - "field": "m_iPawnHealth", - "type": 6 - }, - "PawnArmor": { - "field": "m_iPawnArmor", - "type": 2 - }, - "PawnHasDefuser": { - "field": "m_bPawnHasDefuser", - "type": 10 - }, - "PawnHasHelmet": { - "field": "m_bPawnHasHelmet", - "type": 10 - }, - "PawnCharacterDefIndex": { - "field": "m_nPawnCharacterDefIndex", - "type": 5 - }, - "PawnLifetimeStart": { - "field": "m_iPawnLifetimeStart", - "type": 2 - }, - "PawnLifetimeEnd": { - "field": "m_iPawnLifetimeEnd", - "type": 2 - }, - "PawnBotDifficulty": { - "field": "m_iPawnBotDifficulty", - "type": 2 - }, - "OriginalControllerOfCurrentPawn": { - "field": "m_hOriginalControllerOfCurrentPawn", - "type": 17, - "classname": "CCSPlayerController" - }, - "Score": { - "field": "m_iScore", - "type": 2 - }, - "RoundScore": { - "field": "m_iRoundScore", - "type": 2 - }, - "RoundsWon": { - "field": "m_iRoundsWon", - "type": 2 - }, - "RecentKillQueue": { - "field": "m_recentKillQueue", - "type": 33, - "size": 8 - }, - "FirstKill": { - "field": "m_nFirstKill", - "type": 4 - }, - "KillCount": { - "field": "m_nKillCount", - "type": 4 - }, - "MvpNoMusic": { - "field": "m_bMvpNoMusic", - "type": 10 - }, - "MvpReason": { - "field": "m_eMvpReason", - "type": 2 - }, - "MusicKitID": { - "field": "m_iMusicKitID", - "type": 2 - }, - "MusicKitMVPs": { - "field": "m_iMusicKitMVPs", - "type": 2 - }, - "MVPs": { - "field": "m_iMVPs", - "type": 2 - }, - "UpdateCounter": { - "field": "m_nUpdateCounter", - "type": 2 - }, - "SmoothedPing": { - "field": "m_flSmoothedPing", - "type": 8 - }, - "LastHeldVoteTimer": { - "field": "m_lastHeldVoteTimer", - "classname": "IntervalTimer", - "type": 16 - }, - "ShowHints": { - "field": "m_bShowHints", - "type": 10 - }, - "NextTimeCheck": { - "field": "m_iNextTimeCheck", - "type": 2 - }, - "JustDidTeamKill": { - "field": "m_bJustDidTeamKill", - "type": 10 - }, - "PunishForTeamKill": { - "field": "m_bPunishForTeamKill", - "type": 10 - }, - "GaveTeamDamageWarning": { - "field": "m_bGaveTeamDamageWarning", - "type": 10 - }, - "GaveTeamDamageWarningThisRound": { - "field": "m_bGaveTeamDamageWarningThisRound", - "type": 10 - }, - "DblLastReceivedPacketPlatFloatTime": { - "field": "m_dblLastReceivedPacketPlatFloatTime", - "type": 9 - }, - "LastTeamDamageWarningTime": { - "field": "m_LastTeamDamageWarningTime", - "type": 8 - }, - "LastTimePlayerWasDisconnectedForPawnsRemove": { - "field": "m_LastTimePlayerWasDisconnectedForPawnsRemove", - "type": 8 - }, - "SuspiciousHitCount": { - "field": "m_nSuspiciousHitCount", - "type": 6 - }, - "NonSuspiciousHitStreak": { - "field": "m_nNonSuspiciousHitStreak", - "type": 6 - }, - "FireBulletsSeedSynchronized": { - "field": "m_bFireBulletsSeedSynchronized", - "type": 10 - }, - "Parent": { - "field": "CBasePlayerController", - "type": 11 - } - }, - "CCSPlayerController_ActionTrackingServices": { - "MatchStats": { - "field": "m_matchStats", - "classname": "CSMatchStats_t", - "type": 16 - }, - "NumRoundKills": { - "field": "m_iNumRoundKills", - "type": 2 - }, - "NumRoundKillsHeadshots": { - "field": "m_iNumRoundKillsHeadshots", - "type": 2 - }, - "TotalRoundDamageDealt": { - "field": "m_unTotalRoundDamageDealt", - "type": 6 - }, - "Parent": { - "field": "CPlayerControllerComponent", - "type": 11 - } - }, - "CCSPlayerController_DamageServices": { - "SendUpdate": { - "field": "m_nSendUpdate", - "type": 2 - }, - "Parent": { - "field": "CPlayerControllerComponent", - "type": 11 - } - }, - "CCSPlayerController_InGameMoneyServices": { - "ReceivesMoneyNextRound": { - "field": "m_bReceivesMoneyNextRound", - "type": 10 - }, - "MoneyEarnedForNextRound": { - "field": "m_iMoneyEarnedForNextRound", - "type": 2 - }, - "Account": { - "field": "m_iAccount", - "type": 2 - }, - "StartAccount": { - "field": "m_iStartAccount", - "type": 2 - }, - "TotalCashSpent": { - "field": "m_iTotalCashSpent", - "type": 2 - }, - "CashSpentThisRound": { - "field": "m_iCashSpentThisRound", - "type": 2 - }, - "Parent": { - "field": "CPlayerControllerComponent", - "type": 11 - } - }, - "CCSPlayerController_InventoryServices": { - "MusicID": { - "field": "m_unMusicID", - "type": 5 - }, - "Rank": { - "field": "m_rank", - "type": 35, - "size": 6 - }, - "PersonaDataPublicLevel": { - "field": "m_nPersonaDataPublicLevel", - "type": 2 - }, - "PersonaDataPublicCommendsLeader": { - "field": "m_nPersonaDataPublicCommendsLeader", - "type": 2 - }, - "PersonaDataPublicCommendsTeacher": { - "field": "m_nPersonaDataPublicCommendsTeacher", - "type": 2 - }, - "PersonaDataPublicCommendsFriendly": { - "field": "m_nPersonaDataPublicCommendsFriendly", - "type": 2 - }, - "PersonaDataXpTrailLevel": { - "field": "m_nPersonaDataXpTrailLevel", - "type": 2 - }, - "EquippedPlayerSprayIDs": { - "field": "m_unEquippedPlayerSprayIDs", - "type": 35, - "size": 1 - }, - "Parent": { - "field": "CPlayerControllerComponent", - "type": 11 - } - }, - "CCSPlayer_ActionTrackingServices": { - "LastWeaponBeforeC4AutoSwitch": { - "field": "m_hLastWeaponBeforeC4AutoSwitch", - "type": 17, - "classname": "CBasePlayerWeapon" - }, - "IsRescuing": { - "field": "m_bIsRescuing", - "type": 10 - }, - "WeaponPurchasesThisMatch": { - "field": "m_weaponPurchasesThisMatch", - "classname": "WeaponPurchaseTracker_t", - "type": 16 - }, - "WeaponPurchasesThisRound": { - "field": "m_weaponPurchasesThisRound", - "classname": "WeaponPurchaseTracker_t", - "type": 16 - }, - "Parent": { - "field": "CPlayerPawnComponent", - "type": 11 - } - }, - "CCSPlayer_BulletServices": { - "TotalHitsOnServer": { - "field": "m_totalHitsOnServer", - "type": 2 - }, - "Parent": { - "field": "CPlayerPawnComponent", - "type": 11 - } - }, - "CCSPlayer_BuyServices": { - "Parent": { - "field": "CPlayerPawnComponent", - "type": 11 - } - }, - "CCSPlayer_CameraServices": { - "Parent": { - "field": "CCSPlayerBase_CameraServices", - "type": 11 - } - }, - "CCSPlayer_DamageReactServices": { - "Parent": { - "field": "CPlayerPawnComponent", - "type": 11 - } - }, - "CCSPlayer_GlowServices": { - "Parent": { - "field": "CPlayerPawnComponent", - "type": 11 - } - }, - "CCSPlayer_HostageServices": { - "CarriedHostage": { - "field": "m_hCarriedHostage", - "type": 17, - "classname": "CBaseEntity" - }, - "CarriedHostageProp": { - "field": "m_hCarriedHostageProp", - "type": 17, - "classname": "CBaseEntity" - }, - "Parent": { - "field": "CPlayerPawnComponent", - "type": 11 - } - }, - "CCSPlayer_ItemServices": { - "HasDefuser": { - "field": "m_bHasDefuser", - "type": 10 - }, - "HasHelmet": { - "field": "m_bHasHelmet", - "type": 10 - }, - "HasHeavyArmor": { - "field": "m_bHasHeavyArmor", - "type": 10 - }, - "Parent": { - "field": "CPlayer_ItemServices", - "type": 11 - } - }, - "CCSPlayer_MovementServices": { - "LadderNormal": { - "field": "m_vecLadderNormal", - "type": 21 - }, - "LadderSurfacePropIndex": { - "field": "m_nLadderSurfacePropIndex", - "type": 2 - }, - "DuckAmount": { - "field": "m_flDuckAmount", - "type": 8 - }, - "DuckSpeed": { - "field": "m_flDuckSpeed", - "type": 8 - }, - "DuckOverride": { - "field": "m_bDuckOverride", - "type": 10 - }, - "DesiresDuck": { - "field": "m_bDesiresDuck", - "type": 10 - }, - "DuckOffset": { - "field": "m_flDuckOffset", - "type": 8 - }, - "DuckTimeMsecs": { - "field": "m_nDuckTimeMsecs", - "type": 6 - }, - "DuckJumpTimeMsecs": { - "field": "m_nDuckJumpTimeMsecs", - "type": 6 - }, - "JumpTimeMsecs": { - "field": "m_nJumpTimeMsecs", - "type": 6 - }, - "LastDuckTime": { - "field": "m_flLastDuckTime", - "type": 8 - }, - "LastPositionAtFullCrouchSpeed": { - "field": "m_vecLastPositionAtFullCrouchSpeed", - "type": 22 - }, - "DuckUntilOnGround": { - "field": "m_duckUntilOnGround", - "type": 10 - }, - "HasWalkMovedSinceLastJump": { - "field": "m_bHasWalkMovedSinceLastJump", - "type": 10 - }, - "InStuckTest": { - "field": "m_bInStuckTest", - "type": 10 - }, - "StuckCheckTime": { - "field": "m_flStuckCheckTime", - "type": 37, - "size": 2 - }, - "TraceCount": { - "field": "m_nTraceCount", - "type": 2 - }, - "StuckLast": { - "field": "m_StuckLast", - "type": 2 - }, - "SpeedCropped": { - "field": "m_bSpeedCropped", - "type": 10 - }, - "GroundMoveEfficiency": { - "field": "m_flGroundMoveEfficiency", - "type": 8 - }, - "OldWaterLevel": { - "field": "m_nOldWaterLevel", - "type": 2 - }, - "WaterEntryTime": { - "field": "m_flWaterEntryTime", - "type": 8 - }, - "Forward": { - "field": "m_vecForward", - "type": 21 - }, - "Left": { - "field": "m_vecLeft", - "type": 21 - }, - "Up": { - "field": "m_vecUp", - "type": 21 - }, - "GameCodeHasMovedPlayerAfterCommand": { - "field": "m_nGameCodeHasMovedPlayerAfterCommand", - "type": 2 - }, - "MadeFootstepNoise": { - "field": "m_bMadeFootstepNoise", - "type": 10 - }, - "Footsteps": { - "field": "m_iFootsteps", - "type": 2 - }, - "OldJumpPressed": { - "field": "m_bOldJumpPressed", - "type": 10 - }, - "JumpPressedTime": { - "field": "m_flJumpPressedTime", - "type": 8 - }, - "StashGrenadeParameterWhen": { - "field": "m_fStashGrenadeParameterWhen", - "type": 8 - }, - "ButtonDownMaskPrev": { - "field": "m_nButtonDownMaskPrev", - "type": 7 - }, - "OffsetTickCompleteTime": { - "field": "m_flOffsetTickCompleteTime", - "type": 8 - }, - "OffsetTickStashedSpeed": { - "field": "m_flOffsetTickStashedSpeed", - "type": 8 - }, - "Stamina": { - "field": "m_flStamina", - "type": 8 - }, - "HeightAtJumpStart": { - "field": "m_flHeightAtJumpStart", - "type": 8 - }, - "MaxJumpHeightThisJump": { - "field": "m_flMaxJumpHeightThisJump", - "type": 8 - }, - "MaxJumpHeightLastJump": { - "field": "m_flMaxJumpHeightLastJump", - "type": 8 - }, - "StaminaAtJumpStart": { - "field": "m_flStaminaAtJumpStart", - "type": 8 - }, - "AccumulatedJumpError": { - "field": "m_flAccumulatedJumpError", - "type": 8 - }, - "Parent": { - "field": "CPlayer_MovementServices_Humanoid", - "type": 11 - } - }, - "CCSPlayer_PingServices": { - "PlayerPingTokens": { - "field": "m_flPlayerPingTokens", - "type": 37, - "size": 5 - }, - "PlayerPing": { - "field": "m_hPlayerPing", - "type": 17, - "classname": "CBaseEntity" - }, - "Parent": { - "field": "CPlayerPawnComponent", - "type": 11 - } - }, - "CCSPlayer_UseServices": { - "LastKnownUseEntity": { - "field": "m_hLastKnownUseEntity", - "type": 17, - "classname": "CBaseEntity" - }, - "LastUseTimeStamp": { - "field": "m_flLastUseTimeStamp", - "type": 8 - }, - "TimeLastUsedWindow": { - "field": "m_flTimeLastUsedWindow", - "type": 8 - }, - "Parent": { - "field": "CPlayer_UseServices", - "type": 11 - } - }, - "CCSPlayer_ViewModelServices": { - "ViewModel": { - "field": "m_hViewModel", - "type": 46, - "size": 3 - }, - "Parent": { - "field": "CPlayer_ViewModelServices", - "type": 11 - } - }, - "CCSPlayer_WaterServices": { - "NextDrownDamageTime": { - "field": "m_NextDrownDamageTime", - "type": 8 - }, - "DrownDmgRate": { - "field": "m_nDrownDmgRate", - "type": 2 - }, - "AirFinishedTime": { - "field": "m_AirFinishedTime", - "type": 8 - }, - "WaterJumpTime": { - "field": "m_flWaterJumpTime", - "type": 8 - }, - "WaterJumpVel": { - "field": "m_vecWaterJumpVel", - "type": 21 - }, - "SwimSoundTime": { - "field": "m_flSwimSoundTime", - "type": 8 - }, - "Parent": { - "field": "CPlayer_WaterServices", - "type": 11 - } - }, - "CCSPlayer_WeaponServices": { - "NextAttack": { - "field": "m_flNextAttack", - "type": 8 - }, - "IsLookingAtWeapon": { - "field": "m_bIsLookingAtWeapon", - "type": 10 - }, - "IsHoldingLookAtWeapon": { - "field": "m_bIsHoldingLookAtWeapon", - "type": 10 - }, - "SavedWeapon": { - "field": "m_hSavedWeapon", - "type": 17, - "classname": "CBasePlayerWeapon" - }, - "TimeToMelee": { - "field": "m_nTimeToMelee", - "type": 2 - }, - "TimeToSecondary": { - "field": "m_nTimeToSecondary", - "type": 2 - }, - "TimeToPrimary": { - "field": "m_nTimeToPrimary", - "type": 2 - }, - "TimeToSniperRifle": { - "field": "m_nTimeToSniperRifle", - "type": 2 - }, - "IsBeingGivenItem": { - "field": "m_bIsBeingGivenItem", - "type": 10 - }, - "IsPickingUpItemWithUse": { - "field": "m_bIsPickingUpItemWithUse", - "type": 10 - }, - "PickedUpWeapon": { - "field": "m_bPickedUpWeapon", - "type": 10 - }, - "DisableAutoDeploy": { - "field": "m_bDisableAutoDeploy", - "type": 10 - }, - "IsPickingUpGroundWeapon": { - "field": "m_bIsPickingUpGroundWeapon", - "type": 10 - }, - "OldShootPositionHistoryCount": { - "field": "m_nOldShootPositionHistoryCount", - "type": 6 - }, - "OldInputHistoryCount": { - "field": "m_nOldInputHistoryCount", - "type": 6 - }, - "Parent": { - "field": "CPlayer_WeaponServices", - "type": 11 - } - }, - "CCSPointScript": { - "Parent": { - "field": "CBasePulseGraphInstance", - "type": 11 - } - }, - "CCSPointScriptEntity": { - "Parent": { - "field": "CBaseEntity", - "type": 11 - } - }, - "CCSPointScriptExtensions_CCSWeaponBaseVData": {}, - "CCSPointScriptExtensions_entity": {}, - "CCSPointScriptExtensions_observer": {}, - "CCSPointScriptExtensions_player": {}, - "CCSPointScriptExtensions_player_controller": {}, - "CCSPointScriptExtensions_weapon_cs_base": {}, - "CCSWeaponBaseVData": { - "WeaponType": { - "field": "m_WeaponType", - "type": 6 - }, - "WeaponCategory": { - "field": "m_WeaponCategory", - "type": 6 - }, - "GearSlot": { - "field": "m_GearSlot", - "type": 6 - }, - "GearSlotPosition": { - "field": "m_GearSlotPosition", - "type": 2 - }, - "DefaultLoadoutSlot": { - "field": "m_DefaultLoadoutSlot", - "type": 6 - }, - "WrongTeamMsg": { - "field": "m_sWrongTeamMsg", - "type": 14 - }, - "Price": { - "field": "m_nPrice", - "type": 2 - }, - "KillAward": { - "field": "m_nKillAward", - "type": 2 - }, - "PrimaryReserveAmmoMax": { - "field": "m_nPrimaryReserveAmmoMax", - "type": 2 - }, - "SecondaryReserveAmmoMax": { - "field": "m_nSecondaryReserveAmmoMax", - "type": 2 - }, - "MeleeWeapon": { - "field": "m_bMeleeWeapon", - "type": 10 - }, - "HasBurstMode": { - "field": "m_bHasBurstMode", - "type": 10 - }, - "IsRevolver": { - "field": "m_bIsRevolver", - "type": 10 - }, - "CannotShootUnderwater": { - "field": "m_bCannotShootUnderwater", - "type": 10 - }, - "AnimExtension": { - "field": "m_szAnimExtension", - "type": 14 - }, - "SilencerType": { - "field": "m_eSilencerType", - "type": 6 - }, - "CrosshairMinDistance": { - "field": "m_nCrosshairMinDistance", - "type": 2 - }, - "CrosshairDeltaDistance": { - "field": "m_nCrosshairDeltaDistance", - "type": 2 - }, - "IsFullAuto": { - "field": "m_bIsFullAuto", - "type": 10 - }, - "NumBullets": { - "field": "m_nNumBullets", - "type": 2 - }, - "CycleTime": { - "field": "m_flCycleTime", - "classname": "CFiringModeFloat", - "type": 16 - }, - "MaxSpeed": { - "field": "m_flMaxSpeed", - "classname": "CFiringModeFloat", - "type": 16 - }, - "Spread": { - "field": "m_flSpread", - "classname": "CFiringModeFloat", - "type": 16 - }, - "InaccuracyCrouch": { - "field": "m_flInaccuracyCrouch", - "classname": "CFiringModeFloat", - "type": 16 - }, - "InaccuracyStand": { - "field": "m_flInaccuracyStand", - "classname": "CFiringModeFloat", - "type": 16 - }, - "InaccuracyJump": { - "field": "m_flInaccuracyJump", - "classname": "CFiringModeFloat", - "type": 16 - }, - "InaccuracyLand": { - "field": "m_flInaccuracyLand", - "classname": "CFiringModeFloat", - "type": 16 - }, - "InaccuracyLadder": { - "field": "m_flInaccuracyLadder", - "classname": "CFiringModeFloat", - "type": 16 - }, - "InaccuracyFire": { - "field": "m_flInaccuracyFire", - "classname": "CFiringModeFloat", - "type": 16 - }, - "InaccuracyMove": { - "field": "m_flInaccuracyMove", - "classname": "CFiringModeFloat", - "type": 16 - }, - "RecoilAngle": { - "field": "m_flRecoilAngle", - "classname": "CFiringModeFloat", - "type": 16 - }, - "RecoilAngleVariance": { - "field": "m_flRecoilAngleVariance", - "classname": "CFiringModeFloat", - "type": 16 - }, - "RecoilMagnitude": { - "field": "m_flRecoilMagnitude", - "classname": "CFiringModeFloat", - "type": 16 - }, - "RecoilMagnitudeVariance": { - "field": "m_flRecoilMagnitudeVariance", - "classname": "CFiringModeFloat", - "type": 16 - }, - "TracerFrequency": { - "field": "m_nTracerFrequency", - "classname": "CFiringModeInt", - "type": 16 - }, - "InaccuracyJumpInitial": { - "field": "m_flInaccuracyJumpInitial", - "type": 8 - }, - "InaccuracyJumpApex": { - "field": "m_flInaccuracyJumpApex", - "type": 8 - }, - "InaccuracyReload": { - "field": "m_flInaccuracyReload", - "type": 8 - }, - "RecoilSeed": { - "field": "m_nRecoilSeed", - "type": 2 - }, - "SpreadSeed": { - "field": "m_nSpreadSeed", - "type": 2 - }, - "TimeToIdleAfterFire": { - "field": "m_flTimeToIdleAfterFire", - "type": 8 - }, - "IdleInterval": { - "field": "m_flIdleInterval", - "type": 8 - }, - "AttackMovespeedFactor": { - "field": "m_flAttackMovespeedFactor", - "type": 8 - }, - "HeatPerShot": { - "field": "m_flHeatPerShot", - "type": 8 - }, - "InaccuracyPitchShift": { - "field": "m_flInaccuracyPitchShift", - "type": 8 - }, - "InaccuracyAltSoundThreshold": { - "field": "m_flInaccuracyAltSoundThreshold", - "type": 8 - }, - "BotAudibleRange": { - "field": "m_flBotAudibleRange", - "type": 8 - }, - "UseRadioSubtitle": { - "field": "m_szUseRadioSubtitle", - "type": 14 - }, - "UnzoomsAfterShot": { - "field": "m_bUnzoomsAfterShot", - "type": 10 - }, - "HideViewModelWhenZoomed": { - "field": "m_bHideViewModelWhenZoomed", - "type": 10 - }, - "ZoomLevels": { - "field": "m_nZoomLevels", - "type": 2 - }, - "ZoomFOV1": { - "field": "m_nZoomFOV1", - "type": 2 - }, - "ZoomFOV2": { - "field": "m_nZoomFOV2", - "type": 2 - }, - "ZoomTime0": { - "field": "m_flZoomTime0", - "type": 8 - }, - "ZoomTime1": { - "field": "m_flZoomTime1", - "type": 8 - }, - "ZoomTime2": { - "field": "m_flZoomTime2", - "type": 8 - }, - "IronSightPullUpSpeed": { - "field": "m_flIronSightPullUpSpeed", - "type": 8 - }, - "IronSightPutDownSpeed": { - "field": "m_flIronSightPutDownSpeed", - "type": 8 - }, - "IronSightFOV": { - "field": "m_flIronSightFOV", - "type": 8 - }, - "IronSightPivotForward": { - "field": "m_flIronSightPivotForward", - "type": 8 - }, - "IronSightLooseness": { - "field": "m_flIronSightLooseness", - "type": 8 - }, - "PivotAngle": { - "field": "m_angPivotAngle", - "type": 20 - }, - "IronSightEyePos": { - "field": "m_vecIronSightEyePos", - "type": 21 - }, - "Damage": { - "field": "m_nDamage", - "type": 2 - }, - "HeadshotMultiplier": { - "field": "m_flHeadshotMultiplier", - "type": 8 - }, - "ArmorRatio": { - "field": "m_flArmorRatio", - "type": 8 - }, - "Penetration": { - "field": "m_flPenetration", - "type": 8 - }, - "Range": { - "field": "m_flRange", - "type": 8 - }, - "RangeModifier": { - "field": "m_flRangeModifier", - "type": 8 - }, - "FlinchVelocityModifierLarge": { - "field": "m_flFlinchVelocityModifierLarge", - "type": 8 - }, - "FlinchVelocityModifierSmall": { - "field": "m_flFlinchVelocityModifierSmall", - "type": 8 - }, - "RecoveryTimeCrouch": { - "field": "m_flRecoveryTimeCrouch", - "type": 8 - }, - "RecoveryTimeStand": { - "field": "m_flRecoveryTimeStand", - "type": 8 - }, - "RecoveryTimeCrouchFinal": { - "field": "m_flRecoveryTimeCrouchFinal", - "type": 8 - }, - "RecoveryTimeStandFinal": { - "field": "m_flRecoveryTimeStandFinal", - "type": 8 - }, - "RecoveryTransitionStartBullet": { - "field": "m_nRecoveryTransitionStartBullet", - "type": 2 - }, - "RecoveryTransitionEndBullet": { - "field": "m_nRecoveryTransitionEndBullet", - "type": 2 - }, - "ThrowVelocity": { - "field": "m_flThrowVelocity", - "type": 8 - }, - "SmokeColor": { - "field": "m_vSmokeColor", - "type": 21 - }, - "Parent": { - "field": "CBasePlayerWeaponVData", - "type": 11 - } - }, - "CCitadelSoundOpvarSetOBB": { - "StackName": { - "field": "m_iszStackName", - "type": 13 - }, - "OperatorName": { - "field": "m_iszOperatorName", - "type": 13 - }, - "OpvarName": { - "field": "m_iszOpvarName", - "type": 13 - }, - "DistanceInnerMins": { - "field": "m_vDistanceInnerMins", - "type": 21 - }, - "DistanceInnerMaxs": { - "field": "m_vDistanceInnerMaxs", - "type": 21 - }, - "DistanceOuterMins": { - "field": "m_vDistanceOuterMins", - "type": 21 - }, - "DistanceOuterMaxs": { - "field": "m_vDistanceOuterMaxs", - "type": 21 - }, - "AABBDirection": { - "field": "m_nAABBDirection", - "type": 2 - }, - "Parent": { - "field": "CBaseEntity", - "type": 11 - } - }, - "CClientAlphaProperty": { - "RenderFX": { - "field": "m_nRenderFX", - "type": 4 - }, - "RenderMode": { - "field": "m_nRenderMode", - "type": 4 - }, - "Alpha": { - "field": "m_nAlpha", - "type": 4 - }, - "DesyncOffset": { - "field": "m_nDesyncOffset", - "type": 5 - }, - "Reserved2": { - "field": "m_nReserved2", - "type": 5 - }, - "DistFadeStart": { - "field": "m_nDistFadeStart", - "type": 5 - }, - "DistFadeEnd": { - "field": "m_nDistFadeEnd", - "type": 5 - }, - "FadeScale": { - "field": "m_flFadeScale", - "type": 8 - }, - "RenderFxStartTime": { - "field": "m_flRenderFxStartTime", - "type": 8 - }, - "RenderFxDuration": { - "field": "m_flRenderFxDuration", - "type": 8 - }, - "Parent": { - "field": "IClientAlphaProperty", - "type": 11 - } - }, - "CClientGapTypeQueryRegistration": {}, - "CCollisionProperty": { - "CollisionAttribute": { - "field": "m_collisionAttribute", - "classname": "VPhysicsCollisionAttribute_t", - "type": 16 - }, - "Mins": { - "field": "m_vecMins", - "type": 21 - }, - "Maxs": { - "field": "m_vecMaxs", - "type": 21 - }, - "SolidFlags": { - "field": "m_usSolidFlags", - "type": 4 - }, - "SolidType": { - "field": "m_nSolidType", - "type": 4 - }, - "TriggerBloat": { - "field": "m_triggerBloat", - "type": 4 - }, - "SurroundType": { - "field": "m_nSurroundType", - "type": 4 - }, - "CollisionGroup": { - "field": "m_CollisionGroup", - "type": 4 - }, - "EnablePhysics": { - "field": "m_nEnablePhysics", - "type": 4 - }, - "BoundingRadius": { - "field": "m_flBoundingRadius", - "type": 8 - }, - "SpecifiedSurroundingMins": { - "field": "m_vecSpecifiedSurroundingMins", - "type": 21 - }, - "SpecifiedSurroundingMaxs": { - "field": "m_vecSpecifiedSurroundingMaxs", - "type": 21 - }, - "SurroundingMaxs": { - "field": "m_vecSurroundingMaxs", - "type": 21 - }, - "SurroundingMins": { - "field": "m_vecSurroundingMins", - "type": 21 - }, - "CapsuleCenter1": { - "field": "m_vCapsuleCenter1", - "type": 21 - }, - "CapsuleCenter2": { - "field": "m_vCapsuleCenter2", - "type": 21 - }, - "CapsuleRadius": { - "field": "m_flCapsuleRadius", - "type": 8 - } - }, - "CCompositeMaterialEditorDoc": { - "Version": { - "field": "m_nVersion", - "type": 2 - } - }, - "CCopyRecipientFilter": { - "Flags": { - "field": "m_Flags", - "type": 2 - }, - "Recipients": { - "field": "m_Recipients", - "type": 53 - } - }, - "CDamageRecord": { - "PlayerDamager": { - "field": "m_PlayerDamager", - "type": 17, - "classname": "CCSPlayerPawn" - }, - "PlayerRecipient": { - "field": "m_PlayerRecipient", - "type": 17, - "classname": "CCSPlayerPawn" - }, - "PlayerControllerDamager": { - "field": "m_hPlayerControllerDamager", - "type": 17, - "classname": "CCSPlayerController" - }, - "PlayerControllerRecipient": { - "field": "m_hPlayerControllerRecipient", - "type": 17, - "classname": "CCSPlayerController" - }, - "PlayerDamagerName": { - "field": "m_szPlayerDamagerName", - "type": 14 - }, - "PlayerRecipientName": { - "field": "m_szPlayerRecipientName", - "type": 14 - }, - "DamagerXuid": { - "field": "m_DamagerXuid", - "type": 7 - }, - "RecipientXuid": { - "field": "m_RecipientXuid", - "type": 7 - }, - "BulletsDamage": { - "field": "m_iBulletsDamage", - "type": 2 - }, - "Damage": { - "field": "m_iDamage", - "type": 2 - }, - "ActualHealthRemoved": { - "field": "m_iActualHealthRemoved", - "type": 2 - }, - "NumHits": { - "field": "m_iNumHits", - "type": 2 - }, - "LastBulletUpdate": { - "field": "m_iLastBulletUpdate", - "type": 2 - }, - "IsOtherEnemy": { - "field": "m_bIsOtherEnemy", - "type": 10 - }, - "KillType": { - "field": "m_killType", - "type": 4 - } - }, - "CDecalInfo": { - "AnimationScale": { - "field": "m_flAnimationScale", - "type": 8 - }, - "AnimationLifeSpan": { - "field": "m_flAnimationLifeSpan", - "type": 8 - }, - "PlaceTime": { - "field": "m_flPlaceTime", - "type": 8 - }, - "FadeStartTime": { - "field": "m_flFadeStartTime", - "type": 8 - }, - "FadeDuration": { - "field": "m_flFadeDuration", - "type": 8 - }, - "VBSlot": { - "field": "m_nVBSlot", - "type": 2 - }, - "BoneIndex": { - "field": "m_nBoneIndex", - "type": 2 - }, - "Position": { - "field": "m_vPosition", - "type": 21 - }, - "BoundingRadiusSqr": { - "field": "m_flBoundingRadiusSqr", - "type": 8 - }, - "Next": { - "field": "m_pNext", - "classname": "CDecalInfo", - "type": 24 - }, - "Prev": { - "field": "m_pPrev", - "classname": "CDecalInfo", - "type": 24 - }, - "DecalMaterialIndex": { - "field": "m_nDecalMaterialIndex", - "type": 2 - } - }, - "CDestructiblePartRuntimeData": { - "HealthRemaining": { - "field": "m_nHealthRemaining", - "type": 2 - } - }, - "CDestructiblePartRuntimeDataVector": {}, - "CDestructiblePartsSystemData": {}, - "CDestructiblePartsSystemData_HitGroupInfoAndPartData": { - "Name": { - "field": "m_sName", - "type": 14 - }, - "DisableHitGroupWhenDestroyed": { - "field": "m_bDisableHitGroupWhenDestroyed", - "type": 10 - } - }, - "CDestructiblePartsSystemData_PartData": { - "Name": { - "field": "m_sName", - "type": 14 - }, - "BodyGroupValue": { - "field": "m_nBodyGroupValue", - "type": 2 - }, - "Health": { - "field": "m_nHealth", - "classname": "CSkillInt", - "type": 16 - }, - "DamagePassthroughType": { - "field": "m_nDamagePassthroughType", - "type": 6 - }, - "KillNPCOnDestruction": { - "field": "m_bKillNPCOnDestruction", - "type": 10 - } - }, - "CEconItemAttribute": { - "AttributeDefinitionIndex": { - "field": "m_iAttributeDefinitionIndex", - "type": 5 - }, - "Value": { - "field": "m_flValue", - "type": 8 - }, - "InitialValue": { - "field": "m_flInitialValue", - "type": 8 - }, - "RefundableCurrency": { - "field": "m_nRefundableCurrency", - "type": 2 - }, - "SetBonus": { - "field": "m_bSetBonus", - "type": 10 - } - }, - "CEffectData": { - "Origin": { - "field": "m_vOrigin", - "type": 21 - }, - "Start": { - "field": "m_vStart", - "type": 21 - }, - "Normal": { - "field": "m_vNormal", - "type": 21 - }, - "Angles": { - "field": "m_vAngles", - "type": 20 - }, - "Entity": { - "field": "m_hEntity", - "type": 17, - "classname": "CEntityInstance" - }, - "OtherEntity": { - "field": "m_hOtherEntity", - "type": 17, - "classname": "CEntityInstance" - }, - "Scale": { - "field": "m_flScale", - "type": 8 - }, - "Magnitude": { - "field": "m_flMagnitude", - "type": 8 - }, - "Radius": { - "field": "m_flRadius", - "type": 8 - }, - "SurfaceProp": { - "field": "m_nSurfaceProp", - "type": 12 - }, - "DamageType": { - "field": "m_nDamageType", - "type": 6 - }, - "Penetrate": { - "field": "m_nPenetrate", - "type": 4 - }, - "Material": { - "field": "m_nMaterial", - "type": 5 - }, - "HitBox": { - "field": "m_nHitBox", - "type": 5 - }, - "Color": { - "field": "m_nColor", - "type": 4 - }, - "Flags": { - "field": "m_fFlags", - "type": 4 - }, - "AttachmentName": { - "field": "m_nAttachmentName", - "type": 12 - }, - "EffectName": { - "field": "m_iEffectName", - "type": 5 - }, - "ExplosionType": { - "field": "m_nExplosionType", - "type": 4 - } - }, - "CEntitySubclassVDataBase": {}, - "CEnvSoundscape": { - "OnPlay": { - "field": "m_OnPlay", - "classname": "CEntityIOOutput", - "type": 16 - }, - "Radius": { - "field": "m_flRadius", - "type": 8 - }, - "SoundEventName": { - "field": "m_soundEventName", - "type": 13 - }, - "OverrideWithEvent": { - "field": "m_bOverrideWithEvent", - "type": 10 - }, - "SoundscapeIndex": { - "field": "m_soundscapeIndex", - "type": 2 - }, - "SoundscapeEntityListId": { - "field": "m_soundscapeEntityListId", - "type": 2 - }, - "PositionNames": { - "field": "m_positionNames", - "type": 26, - "size": 8 - }, - "ProxySoundscape": { - "field": "m_hProxySoundscape", - "type": 17, - "classname": "CEnvSoundscape" - }, - "Disabled": { - "field": "m_bDisabled", - "type": 10 - }, - "SoundscapeName": { - "field": "m_soundscapeName", - "type": 13 - }, - "SoundEventHash": { - "field": "m_soundEventHash", - "type": 6 - }, - "Parent": { - "field": "CBaseEntity", - "type": 11 - } - }, - "CEnvSoundscapeAlias_snd_soundscape": { - "Parent": { - "field": "CEnvSoundscape", - "type": 11 - } - }, - "CEnvSoundscapeProxy": { - "MainSoundscapeName": { - "field": "m_MainSoundscapeName", - "type": 13 - }, - "Parent": { - "field": "CEnvSoundscape", - "type": 11 - } - }, - "CEnvSoundscapeProxyAlias_snd_soundscape_proxy": { - "Parent": { - "field": "CEnvSoundscapeProxy", - "type": 11 - } - }, - "CEnvSoundscapeTriggerable": { - "Parent": { - "field": "CEnvSoundscape", - "type": 11 - } - }, - "CEnvSoundscapeTriggerableAlias_snd_soundscape_triggerable": { - "Parent": { - "field": "CEnvSoundscapeTriggerable", - "type": 11 - } - }, - "CFireOverlay": { - "BaseColors": { - "field": "m_vBaseColors", - "type": 42, - "size": 4 - }, - "Scale": { - "field": "m_flScale", - "type": 8 - }, - "GUID": { - "field": "m_nGUID", - "type": 2 - }, - "Parent": { - "field": "CGlowOverlay", - "type": 11 - } - }, - "CFiringModeFloat": { - "Values": { - "field": "m_flValues", - "type": 37, - "size": 2 - } - }, - "CFiringModeInt": { - "Values": { - "field": "m_nValues", - "type": 31, - "size": 2 - } - }, - "CFlashlightEffect": { - "IsOn": { - "field": "m_bIsOn", - "type": 10 - }, - "MuzzleFlashEnabled": { - "field": "m_bMuzzleFlashEnabled", - "type": 10 - }, - "MuzzleFlashBrightness": { - "field": "m_flMuzzleFlashBrightness", - "type": 8 - }, - "MuzzleFlashOrigin": { - "field": "m_vecMuzzleFlashOrigin", - "type": 21 - }, - "Fov": { - "field": "m_flFov", - "type": 8 - }, - "FarZ": { - "field": "m_flFarZ", - "type": 8 - }, - "LinearAtten": { - "field": "m_flLinearAtten", - "type": 8 - }, - "CastsShadows": { - "field": "m_bCastsShadows", - "type": 10 - }, - "CurrentPullBackDist": { - "field": "m_flCurrentPullBackDist", - "type": 8 - }, - "TextureName": { - "field": "m_textureName", - "type": 15, - "size": 64 - } - }, - "CFootstepTableHandle": {}, - "CFuncWater": { - "BuoyancyHelper": { - "field": "m_BuoyancyHelper", - "classname": "CBuoyancyHelper", - "type": 16 - }, - "Parent": { - "field": "CBaseModelEntity", - "type": 11 - } - }, - "CGameSceneNode": { - "Owner": { - "field": "m_pOwner", - "classname": "CEntityInstance", - "type": 24 - }, - "Parent": { - "field": "m_pParent", - "classname": "CGameSceneNode", - "type": 24 - }, - "Child": { - "field": "m_pChild", - "classname": "CGameSceneNode", - "type": 24 - }, - "NextSibling": { - "field": "m_pNextSibling", - "classname": "CGameSceneNode", - "type": 24 - }, - "Origin": { - "field": "m_vecOrigin", - "classname": "CNetworkOriginCellCoordQuantizedVector", - "type": 16 - }, - "Rotation": { - "field": "m_angRotation", - "type": 20 - }, - "Scale": { - "field": "m_flScale", - "type": 8 - }, - "AbsOrigin": { - "field": "m_vecAbsOrigin", - "type": 21 - }, - "AbsRotation": { - "field": "m_angAbsRotation", - "type": 20 - }, - "AbsScale": { - "field": "m_flAbsScale", - "type": 8 - }, - "ParentAttachmentOrBone": { - "field": "m_nParentAttachmentOrBone", - "type": 1 - }, - "DebugAbsOriginChanges": { - "field": "m_bDebugAbsOriginChanges", - "type": 10 - }, - "Dormant": { - "field": "m_bDormant", - "type": 10 - }, - "ForceParentToBeNetworked": { - "field": "m_bForceParentToBeNetworked", - "type": 10 - }, - "HierarchicalDepth": { - "field": "m_nHierarchicalDepth", - "type": 4 - }, - "HierarchyType": { - "field": "m_nHierarchyType", - "type": 4 - }, - "DoNotSetAnimTimeInInvalidatePhysicsCount": { - "field": "m_nDoNotSetAnimTimeInInvalidatePhysicsCount", - "type": 4 - }, - "Name": { - "field": "m_name", - "type": 12 - }, - "HierarchyAttachName": { - "field": "m_hierarchyAttachName", - "type": 12 - }, - "ZOffset": { - "field": "m_flZOffset", - "type": 8 - }, - "ClientLocalScale": { - "field": "m_flClientLocalScale", - "type": 8 - }, - "RenderOrigin": { - "field": "m_vRenderOrigin", - "type": 21 - } - }, - "CGlobalLightBase": { - "SpotLight": { - "field": "m_bSpotLight", - "type": 10 - }, - "SpotLightOrigin": { - "field": "m_SpotLightOrigin", - "type": 21 - }, - "SpotLightAngles": { - "field": "m_SpotLightAngles", - "type": 20 - }, - "ShadowDirection": { - "field": "m_ShadowDirection", - "type": 21 - }, - "AmbientDirection": { - "field": "m_AmbientDirection", - "type": 21 - }, - "SpecularDirection": { - "field": "m_SpecularDirection", - "type": 21 - }, - "InspectorSpecularDirection": { - "field": "m_InspectorSpecularDirection", - "type": 21 - }, - "SpecularPower": { - "field": "m_flSpecularPower", - "type": 8 - }, - "SpecularIndependence": { - "field": "m_flSpecularIndependence", - "type": 8 - }, - "SpecularColor": { - "field": "m_SpecularColor", - "type": 19 - }, - "StartDisabled": { - "field": "m_bStartDisabled", - "type": 10 - }, - "Enabled": { - "field": "m_bEnabled", - "type": 10 - }, - "LightColor": { - "field": "m_LightColor", - "type": 19 - }, - "AmbientColor1": { - "field": "m_AmbientColor1", - "type": 19 - }, - "AmbientColor2": { - "field": "m_AmbientColor2", - "type": 19 - }, - "AmbientColor3": { - "field": "m_AmbientColor3", - "type": 19 - }, - "SunDistance": { - "field": "m_flSunDistance", - "type": 8 - }, - "FOV": { - "field": "m_flFOV", - "type": 8 - }, - "NearZ": { - "field": "m_flNearZ", - "type": 8 - }, - "FarZ": { - "field": "m_flFarZ", - "type": 8 - }, - "EnableShadows": { - "field": "m_bEnableShadows", - "type": 10 - }, - "OldEnableShadows": { - "field": "m_bOldEnableShadows", - "type": 10 - }, - "BackgroundClearNotRequired": { - "field": "m_bBackgroundClearNotRequired", - "type": 10 - }, - "CloudScale": { - "field": "m_flCloudScale", - "type": 8 - }, - "Cloud1Speed": { - "field": "m_flCloud1Speed", - "type": 8 - }, - "Cloud1Direction": { - "field": "m_flCloud1Direction", - "type": 8 - }, - "Cloud2Speed": { - "field": "m_flCloud2Speed", - "type": 8 - }, - "Cloud2Direction": { - "field": "m_flCloud2Direction", - "type": 8 - }, - "AmbientScale1": { - "field": "m_flAmbientScale1", - "type": 8 - }, - "AmbientScale2": { - "field": "m_flAmbientScale2", - "type": 8 - }, - "GroundScale": { - "field": "m_flGroundScale", - "type": 8 - }, - "LightScale": { - "field": "m_flLightScale", - "type": 8 - }, - "FoWDarkness": { - "field": "m_flFoWDarkness", - "type": 8 - }, - "EnableSeparateSkyboxFog": { - "field": "m_bEnableSeparateSkyboxFog", - "type": 10 - }, - "FowColor": { - "field": "m_vFowColor", - "type": 21 - }, - "ViewOrigin": { - "field": "m_ViewOrigin", - "type": 21 - }, - "ViewAngles": { - "field": "m_ViewAngles", - "type": 20 - }, - "ViewFoV": { - "field": "m_flViewFoV", - "type": 8 - }, - "WorldPoints": { - "field": "m_WorldPoints", - "type": 42, - "size": 8 - }, - "FogOffsetLayer0": { - "field": "m_vFogOffsetLayer0", - "type": 22 - }, - "FogOffsetLayer1": { - "field": "m_vFogOffsetLayer1", - "type": 22 - }, - "EnvWind": { - "field": "m_hEnvWind", - "type": 17, - "classname": "CBaseEntity" - }, - "EnvSky": { - "field": "m_hEnvSky", - "type": 17, - "classname": "CBaseEntity" - } - }, - "CGlowOverlay": { - "Pos": { - "field": "m_vPos", - "type": 21 - }, - "Directional": { - "field": "m_bDirectional", - "type": 10 - }, - "Direction": { - "field": "m_vDirection", - "type": 21 - }, - "InSky": { - "field": "m_bInSky", - "type": 10 - }, - "SkyObstructionScale": { - "field": "m_skyObstructionScale", - "type": 8 - }, - "Sprites": { - "field": "m_Sprites", - "type": 45, - "size": 4 - }, - "Sprites1": { - "field": "m_nSprites", - "type": 2 - }, - "ProxyRadius": { - "field": "m_flProxyRadius", - "type": 8 - }, - "HDRColorScale": { - "field": "m_flHDRColorScale", - "type": 8 - }, - "GlowObstructionScale": { - "field": "m_flGlowObstructionScale", - "type": 8 - }, - "CacheGlowObstruction": { - "field": "m_bCacheGlowObstruction", - "type": 10 - }, - "CacheSkyObstruction": { - "field": "m_bCacheSkyObstruction", - "type": 10 - }, - "Activated": { - "field": "m_bActivated", - "type": 1 - }, - "ListIndex": { - "field": "m_ListIndex", - "type": 5 - }, - "QueryHandle": { - "field": "m_queryHandle", - "type": 2 - } - }, - "CGlowProperty": { - "GlowColor": { - "field": "m_fGlowColor", - "type": 21 - }, - "GlowType": { - "field": "m_iGlowType", - "type": 2 - }, - "GlowTeam": { - "field": "m_iGlowTeam", - "type": 2 - }, - "GlowRange": { - "field": "m_nGlowRange", - "type": 2 - }, - "GlowRangeMin": { - "field": "m_nGlowRangeMin", - "type": 2 - }, - "GlowColorOverride": { - "field": "m_glowColorOverride", - "type": 19 - }, - "Flashing": { - "field": "m_bFlashing", - "type": 10 - }, - "GlowTime": { - "field": "m_flGlowTime", - "type": 8 - }, - "GlowStartTime": { - "field": "m_flGlowStartTime", - "type": 8 - }, - "EligibleForScreenHighlight": { - "field": "m_bEligibleForScreenHighlight", - "type": 10 - }, - "Glowing": { - "field": "m_bGlowing", - "type": 10 - } - }, - "CGlowSprite": { - "Color": { - "field": "m_vColor", - "type": 21 - }, - "HorzSize": { - "field": "m_flHorzSize", - "type": 8 - }, - "VertSize": { - "field": "m_flVertSize", - "type": 8 - } - }, - "CGrenadeTracer": { - "TracerDuration": { - "field": "m_flTracerDuration", - "type": 8 - }, - "Type": { - "field": "m_nType", - "type": 6 - }, - "Parent": { - "field": "C_BaseModelEntity", - "type": 11 - } - }, - "CHitboxComponent": { - "DisabledHitGroups": { - "field": "m_bvDisabledHitGroups", - "type": 35, - "size": 1 - }, - "Parent": { - "field": "CEntityComponent", - "type": 11 - } - }, - "CHostageRescueZone": { - "Parent": { - "field": "CHostageRescueZoneShim", - "type": 11 - } - }, - "CHostageRescueZoneShim": { - "Parent": { - "field": "CBaseTrigger", - "type": 11 - } - }, - "CInButtonState": { - "ButtonStates": { - "field": "m_pButtonStates", - "type": 36, - "size": 3 - } - }, - "CInfoDynamicShadowHint": { - "Disabled": { - "field": "m_bDisabled", - "type": 10 - }, - "Range": { - "field": "m_flRange", - "type": 8 - }, - "Importance": { - "field": "m_nImportance", - "type": 2 - }, - "LightChoice": { - "field": "m_nLightChoice", - "type": 2 - }, - "Light": { - "field": "m_hLight", - "type": 17, - "classname": "CBaseEntity" - }, - "Parent": { - "field": "CPointEntity", - "type": 11 - } - }, - "CInfoDynamicShadowHintBox": { - "BoxMins": { - "field": "m_vBoxMins", - "type": 21 - }, - "BoxMaxs": { - "field": "m_vBoxMaxs", - "type": 21 - }, - "Parent": { - "field": "CInfoDynamicShadowHint", - "type": 11 - } - }, - "CInfoOffscreenPanoramaTexture": { - "Disabled": { - "field": "m_bDisabled", - "type": 10 - }, - "ResolutionX": { - "field": "m_nResolutionX", - "type": 2 - }, - "ResolutionY": { - "field": "m_nResolutionY", - "type": 2 - }, - "LayoutFileName": { - "field": "m_szLayoutFileName", - "type": 13 - }, - "RenderAttrName": { - "field": "m_RenderAttrName", - "type": 13 - }, - "TargetChangeCount": { - "field": "m_nTargetChangeCount", - "type": 2 - }, - "CSSClasses": { - "field": "m_vecCSSClasses", - "type": 48 - }, - "TargetsName": { - "field": "m_szTargetsName", - "type": 13 - }, - "Parent": { - "field": "CPointEntity", - "type": 11 - } - }, - "CInfoParticleTarget": { - "Parent": { - "field": "CPointEntity", - "type": 11 - } - }, - "CInfoTarget": { - "Parent": { - "field": "CPointEntity", - "type": 11 - } - }, - "CInfoWorldLayer": { - "OutputOnEntitiesSpawned": { - "field": "m_pOutputOnEntitiesSpawned", - "classname": "CEntityIOOutput", - "type": 16 - }, - "WorldName": { - "field": "m_worldName", - "type": 13 - }, - "LayerName": { - "field": "m_layerName", - "type": 13 - }, - "WorldLayerVisible": { - "field": "m_bWorldLayerVisible", - "type": 10 - }, - "EntitiesSpawned": { - "field": "m_bEntitiesSpawned", - "type": 10 - }, - "CreateAsChildSpawnGroup": { - "field": "m_bCreateAsChildSpawnGroup", - "type": 10 - }, - "LayerSpawnGroup": { - "field": "m_hLayerSpawnGroup", - "type": 6 - }, - "Parent": { - "field": "CBaseEntity", - "type": 11 - } - }, - "CInterpolatedValue": { - "StartTime": { - "field": "m_flStartTime", - "type": 8 - }, - "EndTime": { - "field": "m_flEndTime", - "type": 8 - }, - "StartValue": { - "field": "m_flStartValue", - "type": 8 - }, - "EndValue": { - "field": "m_flEndValue", - "type": 8 - }, - "InterpType": { - "field": "m_nInterpType", - "type": 2 - } - }, - "CLightComponent": { - "__pChainEntity": { - "field": "__m_pChainEntity", - "classname": "CNetworkVarChainer", - "type": 16 - }, - "Color": { - "field": "m_Color", - "type": 19 - }, - "SecondaryColor": { - "field": "m_SecondaryColor", - "type": 19 - }, - "Brightness": { - "field": "m_flBrightness", - "type": 8 - }, - "BrightnessScale": { - "field": "m_flBrightnessScale", - "type": 8 - }, - "BrightnessMult": { - "field": "m_flBrightnessMult", - "type": 8 - }, - "Range": { - "field": "m_flRange", - "type": 8 - }, - "Falloff": { - "field": "m_flFalloff", - "type": 8 - }, - "Attenuation0": { - "field": "m_flAttenuation0", - "type": 8 - }, - "Attenuation1": { - "field": "m_flAttenuation1", - "type": 8 - }, - "Attenuation2": { - "field": "m_flAttenuation2", - "type": 8 - }, - "Theta": { - "field": "m_flTheta", - "type": 8 - }, - "Phi": { - "field": "m_flPhi", - "type": 8 - }, - "Cascades": { - "field": "m_nCascades", - "type": 2 - }, - "CastShadows": { - "field": "m_nCastShadows", - "type": 2 - }, - "ShadowWidth": { - "field": "m_nShadowWidth", - "type": 2 - }, - "ShadowHeight": { - "field": "m_nShadowHeight", - "type": 2 - }, - "RenderDiffuse": { - "field": "m_bRenderDiffuse", - "type": 10 - }, - "RenderSpecular": { - "field": "m_nRenderSpecular", - "type": 2 - }, - "RenderTransmissive": { - "field": "m_bRenderTransmissive", - "type": 10 - }, - "OrthoLightWidth": { - "field": "m_flOrthoLightWidth", - "type": 8 - }, - "OrthoLightHeight": { - "field": "m_flOrthoLightHeight", - "type": 8 - }, - "Style": { - "field": "m_nStyle", - "type": 2 - }, - "Pattern": { - "field": "m_Pattern", - "type": 14 - }, - "CascadeRenderStaticObjects": { - "field": "m_nCascadeRenderStaticObjects", - "type": 2 - }, - "ShadowCascadeCrossFade": { - "field": "m_flShadowCascadeCrossFade", - "type": 8 - }, - "ShadowCascadeDistanceFade": { - "field": "m_flShadowCascadeDistanceFade", - "type": 8 - }, - "ShadowCascadeDistance0": { - "field": "m_flShadowCascadeDistance0", - "type": 8 - }, - "ShadowCascadeDistance1": { - "field": "m_flShadowCascadeDistance1", - "type": 8 - }, - "ShadowCascadeDistance2": { - "field": "m_flShadowCascadeDistance2", - "type": 8 - }, - "ShadowCascadeDistance3": { - "field": "m_flShadowCascadeDistance3", - "type": 8 - }, - "ShadowCascadeResolution0": { - "field": "m_nShadowCascadeResolution0", - "type": 2 - }, - "ShadowCascadeResolution1": { - "field": "m_nShadowCascadeResolution1", - "type": 2 - }, - "ShadowCascadeResolution2": { - "field": "m_nShadowCascadeResolution2", - "type": 2 - }, - "ShadowCascadeResolution3": { - "field": "m_nShadowCascadeResolution3", - "type": 2 - }, - "UsesBakedShadowing": { - "field": "m_bUsesBakedShadowing", - "type": 10 - }, - "ShadowPriority": { - "field": "m_nShadowPriority", - "type": 2 - }, - "BakedShadowIndex": { - "field": "m_nBakedShadowIndex", - "type": 2 - }, - "RenderToCubemaps": { - "field": "m_bRenderToCubemaps", - "type": 10 - }, - "DirectLight": { - "field": "m_nDirectLight", - "type": 2 - }, - "IndirectLight": { - "field": "m_nIndirectLight", - "type": 2 - }, - "FadeMinDist": { - "field": "m_flFadeMinDist", - "type": 8 - }, - "FadeMaxDist": { - "field": "m_flFadeMaxDist", - "type": 8 - }, - "ShadowFadeMinDist": { - "field": "m_flShadowFadeMinDist", - "type": 8 - }, - "ShadowFadeMaxDist": { - "field": "m_flShadowFadeMaxDist", - "type": 8 - }, - "Enabled": { - "field": "m_bEnabled", - "type": 10 - }, - "Flicker": { - "field": "m_bFlicker", - "type": 10 - }, - "PrecomputedFieldsValid": { - "field": "m_bPrecomputedFieldsValid", - "type": 10 - }, - "PrecomputedBoundsMins": { - "field": "m_vPrecomputedBoundsMins", - "type": 21 - }, - "PrecomputedBoundsMaxs": { - "field": "m_vPrecomputedBoundsMaxs", - "type": 21 - }, - "PrecomputedOBBOrigin": { - "field": "m_vPrecomputedOBBOrigin", - "type": 21 - }, - "PrecomputedOBBAngles": { - "field": "m_vPrecomputedOBBAngles", - "type": 20 - }, - "PrecomputedOBBExtent": { - "field": "m_vPrecomputedOBBExtent", - "type": 21 - }, - "PrecomputedMaxRange": { - "field": "m_flPrecomputedMaxRange", - "type": 8 - }, - "FogLightingMode": { - "field": "m_nFogLightingMode", - "type": 2 - }, - "FogContributionStength": { - "field": "m_flFogContributionStength", - "type": 8 - }, - "NearClipPlane": { - "field": "m_flNearClipPlane", - "type": 8 - }, - "SkyColor": { - "field": "m_SkyColor", - "type": 19 - }, - "SkyIntensity": { - "field": "m_flSkyIntensity", - "type": 8 - }, - "SkyAmbientBounce": { - "field": "m_SkyAmbientBounce", - "type": 19 - }, - "UseSecondaryColor": { - "field": "m_bUseSecondaryColor", - "type": 10 - }, - "MixedShadows": { - "field": "m_bMixedShadows", - "type": 10 - }, - "LightStyleStartTime": { - "field": "m_flLightStyleStartTime", - "type": 8 - }, - "CapsuleLength": { - "field": "m_flCapsuleLength", - "type": 8 - }, - "MinRoughness": { - "field": "m_flMinRoughness", - "type": 8 - }, - "PvsModifyEntity": { - "field": "m_bPvsModifyEntity", - "type": 10 - }, - "Parent": { - "field": "CEntityComponent", - "type": 11 - } - }, - "CLogicRelay": { - "OnTrigger": { - "field": "m_OnTrigger", - "classname": "CEntityIOOutput", - "type": 16 - }, - "OnSpawn": { - "field": "m_OnSpawn", - "classname": "CEntityIOOutput", - "type": 16 - }, - "Disabled": { - "field": "m_bDisabled", - "type": 10 - }, - "WaitForRefire": { - "field": "m_bWaitForRefire", - "type": 10 - }, - "TriggerOnce": { - "field": "m_bTriggerOnce", - "type": 10 - }, - "FastRetrigger": { - "field": "m_bFastRetrigger", - "type": 10 - }, - "PassthoughCaller": { - "field": "m_bPassthoughCaller", - "type": 10 - }, - "Parent": { - "field": "CLogicalEntity", - "type": 11 - } - }, - "CLogicalEntity": { - "Parent": { - "field": "CServerOnlyEntity", - "type": 11 - } - }, - "CMapInfo": { - "BuyingStatus": { - "field": "m_iBuyingStatus", - "type": 2 - }, - "BombRadius": { - "field": "m_flBombRadius", - "type": 8 - }, - "PetPopulation": { - "field": "m_iPetPopulation", - "type": 2 - }, - "UseNormalSpawnsForDM": { - "field": "m_bUseNormalSpawnsForDM", - "type": 10 - }, - "DisableAutoGeneratedDMSpawns": { - "field": "m_bDisableAutoGeneratedDMSpawns", - "type": 10 - }, - "BotMaxVisionDistance": { - "field": "m_flBotMaxVisionDistance", - "type": 8 - }, - "HostageCount": { - "field": "m_iHostageCount", - "type": 2 - }, - "FadePlayerVisibilityFarZ": { - "field": "m_bFadePlayerVisibilityFarZ", - "type": 10 - }, - "RainTraceToSkyEnabled": { - "field": "m_bRainTraceToSkyEnabled", - "type": 10 - }, - "Parent": { - "field": "CPointEntity", - "type": 11 - } - }, - "CModelState": { - "ModelName": { - "field": "m_ModelName", - "type": 13 - }, - "ClientClothCreationSuppressed": { - "field": "m_bClientClothCreationSuppressed", - "type": 10 - }, - "MeshGroupMask": { - "field": "m_MeshGroupMask", - "type": 7 - }, - "IdealMotionType": { - "field": "m_nIdealMotionType", - "type": 0 - }, - "ForceLOD": { - "field": "m_nForceLOD", - "type": 0 - }, - "ClothUpdateFlags": { - "field": "m_nClothUpdateFlags", - "type": 0 - } - }, - "CNavLinkAnimgraphVar": { - "AlignmentDegrees": { - "field": "m_unAlignmentDegrees", - "type": 6 - } - }, - "CNavLinkMovementVData": { - "IsInterpolated": { - "field": "m_bIsInterpolated", - "type": 10 - }, - "RecommendedDistance": { - "field": "m_unRecommendedDistance", - "type": 6 - } - }, - "CNetworkOriginCellCoordQuantizedVector": { - "CellX": { - "field": "m_cellX", - "type": 5 - }, - "CellY": { - "field": "m_cellY", - "type": 5 - }, - "CellZ": { - "field": "m_cellZ", - "type": 5 - }, - "OutsideWorld": { - "field": "m_nOutsideWorld", - "type": 5 - }, - "X": { - "field": "m_vecX", - "type": 8 - }, - "Y": { - "field": "m_vecY", - "type": 8 - }, - "Z": { - "field": "m_vecZ", - "type": 8 - } - }, - "CNetworkOriginQuantizedVector": { - "X": { - "field": "m_vecX", - "type": 8 - }, - "Y": { - "field": "m_vecY", - "type": 8 - }, - "Z": { - "field": "m_vecZ", - "type": 8 - } - }, - "CNetworkTransmitComponent": { - "TransmitStateOwnedCounter": { - "field": "m_nTransmitStateOwnedCounter", - "type": 4 - } - }, - "CNetworkVelocityVector": { - "X": { - "field": "m_vecX", - "type": 8 - }, - "Y": { - "field": "m_vecY", - "type": 8 - }, - "Z": { - "field": "m_vecZ", - "type": 8 - } - }, - "CNetworkViewOffsetVector": { - "X": { - "field": "m_vecX", - "type": 8 - }, - "Y": { - "field": "m_vecY", - "type": 8 - }, - "Z": { - "field": "m_vecZ", - "type": 8 - } - }, - "CNetworkedSequenceOperation": { - "Sequence": { - "field": "m_hSequence", - "type": 2 - }, - "PrevCycle": { - "field": "m_flPrevCycle", - "type": 8 - }, - "Cycle": { - "field": "m_flCycle", - "type": 8 - }, - "Weight": { - "field": "m_flWeight", - "type": 8 - }, - "SequenceChangeNetworked": { - "field": "m_bSequenceChangeNetworked", - "type": 10 - }, - "Discontinuity": { - "field": "m_bDiscontinuity", - "type": 10 - }, - "PrevCycleFromDiscontinuity": { - "field": "m_flPrevCycleFromDiscontinuity", - "type": 8 - }, - "PrevCycleForAnimEventDetection": { - "field": "m_flPrevCycleForAnimEventDetection", - "type": 8 - } - }, - "CPathSimple": { - "PathString": { - "field": "m_pathString", - "type": 14 - }, - "Parent": { - "field": "CBaseEntity", - "type": 11 - } - }, - "CPathSimpleAPI": {}, - "CPlayerControllerComponent": { - "__pChainEntity": { - "field": "__m_pChainEntity", - "classname": "CNetworkVarChainer", - "type": 16 - } - }, - "CPlayerPawnComponent": { - "__pChainEntity": { - "field": "__m_pChainEntity", - "classname": "CNetworkVarChainer", - "type": 16 - } - }, - "CPlayerSprayDecalRenderHelper": {}, - "CPlayer_AutoaimServices": { - "Parent": { - "field": "CPlayerPawnComponent", - "type": 11 - } - }, - "CPlayer_CameraServices": { - "CsViewPunchAngle": { - "field": "m_vecCsViewPunchAngle", - "type": 20 - }, - "CsViewPunchAngleTick": { - "field": "m_nCsViewPunchAngleTick", - "type": 2 - }, - "CsViewPunchAngleTickRatio": { - "field": "m_flCsViewPunchAngleTickRatio", - "type": 8 - }, - "PlayerFog": { - "field": "m_PlayerFog", - "classname": "fogplayerparams_t", - "type": 16 - }, - "ColorCorrectionCtrl": { - "field": "m_hColorCorrectionCtrl", - "type": 17, - "classname": "CColorCorrection" - }, - "ViewEntity": { - "field": "m_hViewEntity", - "type": 17, - "classname": "CBaseEntity" - }, - "TonemapController": { - "field": "m_hTonemapController", - "type": 17, - "classname": "CTonemapController2" - }, - "Audio": { - "field": "m_audio", - "classname": "audioparams_t", - "type": 16 - }, - "OldPlayerZ": { - "field": "m_flOldPlayerZ", - "type": 8 - }, - "OldPlayerViewOffsetZ": { - "field": "m_flOldPlayerViewOffsetZ", - "type": 8 - }, - "Parent": { - "field": "CPlayerPawnComponent", - "type": 11 - } - }, - "CPlayer_FlashlightServices": { - "Parent": { - "field": "CPlayerPawnComponent", - "type": 11 - } - }, - "CPlayer_ItemServices": { - "Parent": { - "field": "CPlayerPawnComponent", - "type": 11 - } - }, - "CPlayer_MovementServices": { - "Impulse": { - "field": "m_nImpulse", - "type": 2 - }, - "Buttons": { - "field": "m_nButtons", - "classname": "CInButtonState", - "type": 16 - }, - "QueuedButtonDownMask": { - "field": "m_nQueuedButtonDownMask", - "type": 7 - }, - "QueuedButtonChangeMask": { - "field": "m_nQueuedButtonChangeMask", - "type": 7 - }, - "ButtonDoublePressed": { - "field": "m_nButtonDoublePressed", - "type": 7 - }, - "ButtonPressedCmdNumber": { - "field": "m_pButtonPressedCmdNumber", - "type": 35, - "size": 64 - }, - "LastCommandNumberProcessed": { - "field": "m_nLastCommandNumberProcessed", - "type": 6 - }, - "ToggleButtonDownMask": { - "field": "m_nToggleButtonDownMask", - "type": 7 - }, - "Maxspeed": { - "field": "m_flMaxspeed", - "type": 8 - }, - "ForceSubtickMoveWhen": { - "field": "m_arrForceSubtickMoveWhen", - "type": 37, - "size": 4 - }, - "ForwardMove": { - "field": "m_flForwardMove", - "type": 8 - }, - "LeftMove": { - "field": "m_flLeftMove", - "type": 8 - }, - "UpMove": { - "field": "m_flUpMove", - "type": 8 - }, - "LastMovementImpulses": { - "field": "m_vecLastMovementImpulses", - "type": 21 - }, - "OldViewAngles": { - "field": "m_vecOldViewAngles", - "type": 20 - }, - "Parent": { - "field": "CPlayerPawnComponent", - "type": 11 - } - }, - "CPlayer_MovementServices_Humanoid": { - "StepSoundTime": { - "field": "m_flStepSoundTime", - "type": 8 - }, - "FallVelocity": { - "field": "m_flFallVelocity", - "type": 8 - }, - "InCrouch": { - "field": "m_bInCrouch", - "type": 10 - }, - "CrouchState": { - "field": "m_nCrouchState", - "type": 6 - }, - "CrouchTransitionStartTime": { - "field": "m_flCrouchTransitionStartTime", - "type": 8 - }, - "Ducked": { - "field": "m_bDucked", - "type": 10 - }, - "Ducking": { - "field": "m_bDucking", - "type": 10 - }, - "InDuckJump": { - "field": "m_bInDuckJump", - "type": 10 - }, - "GroundNormal": { - "field": "m_groundNormal", - "type": 21 - }, - "SurfaceFriction": { - "field": "m_flSurfaceFriction", - "type": 8 - }, - "SurfaceProps": { - "field": "m_surfaceProps", - "type": 12 - }, - "Stepside": { - "field": "m_nStepside", - "type": 2 - }, - "TargetVolume": { - "field": "m_iTargetVolume", - "type": 2 - }, - "SmoothedVelocity": { - "field": "m_vecSmoothedVelocity", - "type": 21 - }, - "Parent": { - "field": "CPlayer_MovementServices", - "type": 11 - } - }, - "CPlayer_ObserverServices": { - "ObserverMode": { - "field": "m_iObserverMode", - "type": 4 - }, - "ObserverTarget": { - "field": "m_hObserverTarget", - "type": 17, - "classname": "CBaseEntity" - }, - "ObserverLastMode": { - "field": "m_iObserverLastMode", - "type": 6 - }, - "ForcedObserverMode": { - "field": "m_bForcedObserverMode", - "type": 10 - }, - "Parent": { - "field": "CPlayerPawnComponent", - "type": 11 - } - }, - "CPlayer_UseServices": { - "Parent": { - "field": "CPlayerPawnComponent", - "type": 11 - } - }, - "CPlayer_ViewModelServices": { - "Parent": { - "field": "CPlayerPawnComponent", - "type": 11 - } - }, - "CPlayer_WaterServices": { - "Parent": { - "field": "CPlayerPawnComponent", - "type": 11 - } - }, - "CPlayer_WeaponServices": { - "ActiveWeapon": { - "field": "m_hActiveWeapon", - "type": 17, - "classname": "CBasePlayerWeapon" - }, - "LastWeapon": { - "field": "m_hLastWeapon", - "type": 17, - "classname": "CBasePlayerWeapon" - }, - "Ammo": { - "field": "m_iAmmo", - "type": 34, - "size": 32 - }, - "PreventWeaponPickup": { - "field": "m_bPreventWeaponPickup", - "type": 10 - }, - "Parent": { - "field": "CPlayerPawnComponent", - "type": 11 - } - }, - "CPointChildModifier": { - "OrphanInsteadOfDeletingChildrenOnRemove": { - "field": "m_bOrphanInsteadOfDeletingChildrenOnRemove", - "type": 10 - }, - "Parent": { - "field": "CPointEntity", - "type": 11 - } - }, - "CPointOffScreenIndicatorUi": { - "BeenEnabled": { - "field": "m_bBeenEnabled", - "type": 10 - }, - "Hide": { - "field": "m_bHide", - "type": 10 - }, - "SeenTargetTime": { - "field": "m_flSeenTargetTime", - "type": 8 - }, - "Parent": { - "field": "C_PointClientUIWorldPanel", - "type": 11 - } - }, - "CPointTemplate": { - "WorldName": { - "field": "m_iszWorldName", - "type": 13 - }, - "Source2EntityLumpName": { - "field": "m_iszSource2EntityLumpName", - "type": 13 - }, - "EntityFilterName": { - "field": "m_iszEntityFilterName", - "type": 13 - }, - "TimeoutInterval": { - "field": "m_flTimeoutInterval", - "type": 8 - }, - "AsynchronouslySpawnEntities": { - "field": "m_bAsynchronouslySpawnEntities", - "type": 10 - }, - "OutputOnSpawned": { - "field": "m_pOutputOnSpawned", - "classname": "CEntityIOOutput", - "type": 16 - }, - "ClientOnlyEntityBehavior": { - "field": "m_clientOnlyEntityBehavior", - "type": 6 - }, - "OwnerSpawnGroupType": { - "field": "m_ownerSpawnGroupType", - "type": 6 - }, - "CreatedSpawnGroupHandles": { - "field": "m_createdSpawnGroupHandles", - "type": 57 - }, - "Parent": { - "field": "CLogicalEntity", - "type": 11 - } - }, - "CPointTemplateAPI": {}, - "CPrecipitationVData": { - "InnerDistance": { - "field": "m_flInnerDistance", - "type": 8 - }, - "AttachType": { - "field": "m_nAttachType", - "type": 6 - }, - "BatchSameVolumeType": { - "field": "m_bBatchSameVolumeType", - "type": 10 - }, - "RTEnvCP": { - "field": "m_nRTEnvCP", - "type": 2 - }, - "RTEnvCPComponent": { - "field": "m_nRTEnvCPComponent", - "type": 2 - }, - "Modifier": { - "field": "m_szModifier", - "type": 14 - }, - "Parent": { - "field": "CEntitySubclassVDataBase", - "type": 11 - } - }, - "CProjectedTextureBase": { - "TargetEntity": { - "field": "m_hTargetEntity", - "type": 17, - "classname": "CBaseEntity" - }, - "State": { - "field": "m_bState", - "type": 10 - }, - "AlwaysUpdate": { - "field": "m_bAlwaysUpdate", - "type": 10 - }, - "LightFOV": { - "field": "m_flLightFOV", - "type": 8 - }, - "EnableShadows": { - "field": "m_bEnableShadows", - "type": 10 - }, - "SimpleProjection": { - "field": "m_bSimpleProjection", - "type": 10 - }, - "LightOnlyTarget": { - "field": "m_bLightOnlyTarget", - "type": 10 - }, - "LightWorld": { - "field": "m_bLightWorld", - "type": 10 - }, - "CameraSpace": { - "field": "m_bCameraSpace", - "type": 10 - }, - "BrightnessScale": { - "field": "m_flBrightnessScale", - "type": 8 - }, - "LightColor": { - "field": "m_LightColor", - "type": 19 - }, - "Intensity": { - "field": "m_flIntensity", - "type": 8 - }, - "LinearAttenuation": { - "field": "m_flLinearAttenuation", - "type": 8 - }, - "QuadraticAttenuation": { - "field": "m_flQuadraticAttenuation", - "type": 8 - }, - "Volumetric": { - "field": "m_bVolumetric", - "type": 10 - }, - "VolumetricIntensity": { - "field": "m_flVolumetricIntensity", - "type": 8 - }, - "NoiseStrength": { - "field": "m_flNoiseStrength", - "type": 8 - }, - "FlashlightTime": { - "field": "m_flFlashlightTime", - "type": 8 - }, - "NumPlanes": { - "field": "m_nNumPlanes", - "type": 6 - }, - "PlaneOffset": { - "field": "m_flPlaneOffset", - "type": 8 - }, - "ColorTransitionTime": { - "field": "m_flColorTransitionTime", - "type": 8 - }, - "Ambient": { - "field": "m_flAmbient", - "type": 8 - }, - "SpotlightTextureName": { - "field": "m_SpotlightTextureName", - "type": 15, - "size": 512 - }, - "SpotlightTextureFrame": { - "field": "m_nSpotlightTextureFrame", - "type": 2 - }, - "ShadowQuality": { - "field": "m_nShadowQuality", - "type": 6 - }, - "NearZ": { - "field": "m_flNearZ", - "type": 8 - }, - "FarZ": { - "field": "m_flFarZ", - "type": 8 - }, - "ProjectionSize": { - "field": "m_flProjectionSize", - "type": 8 - }, - "Rotation": { - "field": "m_flRotation", - "type": 8 - }, - "FlipHorizontal": { - "field": "m_bFlipHorizontal", - "type": 10 - } - }, - "CPropDataComponent": { - "DmgModBullet": { - "field": "m_flDmgModBullet", - "type": 8 - }, - "DmgModClub": { - "field": "m_flDmgModClub", - "type": 8 - }, - "DmgModExplosive": { - "field": "m_flDmgModExplosive", - "type": 8 - }, - "DmgModFire": { - "field": "m_flDmgModFire", - "type": 8 - }, - "PhysicsDamageTableName": { - "field": "m_iszPhysicsDamageTableName", - "type": 13 - }, - "BasePropData": { - "field": "m_iszBasePropData", - "type": 13 - }, - "Interactions": { - "field": "m_nInteractions", - "type": 2 - }, - "SpawnMotionDisabled": { - "field": "m_bSpawnMotionDisabled", - "type": 10 - }, - "DisableTakePhysicsDamageSpawnFlag": { - "field": "m_nDisableTakePhysicsDamageSpawnFlag", - "type": 2 - }, - "MotionDisabledSpawnFlag": { - "field": "m_nMotionDisabledSpawnFlag", - "type": 2 - }, - "Parent": { - "field": "CEntityComponent", - "type": 11 - } - }, - "CRagdollManager": { - "CurrentMaxRagdollCount": { - "field": "m_iCurrentMaxRagdollCount", - "type": 0 - }, - "MaxRagdollCount": { - "field": "m_iMaxRagdollCount", - "type": 2 - }, - "SaveImportant": { - "field": "m_bSaveImportant", - "type": 10 - }, - "CanTakeDamage": { - "field": "m_bCanTakeDamage", - "type": 10 - }, - "Parent": { - "field": "CBaseEntity", - "type": 11 - } - }, - "CRandSimTimer": { - "MinInterval": { - "field": "m_minInterval", - "type": 8 - }, - "MaxInterval": { - "field": "m_maxInterval", - "type": 8 - }, - "Parent": { - "field": "CSimpleSimTimer", - "type": 11 - } - }, - "CRandStopwatch": { - "MinInterval": { - "field": "m_minInterval", - "type": 8 - }, - "MaxInterval": { - "field": "m_maxInterval", - "type": 8 - }, - "Parent": { - "field": "CStopwatchBase", - "type": 11 - } - }, - "CRemapFloat": { - "Value": { - "field": "m_pValue", - "type": 37, - "size": 4 - } - }, - "CRenderComponent": { - "__pChainEntity": { - "field": "__m_pChainEntity", - "classname": "CNetworkVarChainer", - "type": 16 - }, - "IsRenderingWithViewModels": { - "field": "m_bIsRenderingWithViewModels", - "type": 10 - }, - "SplitscreenFlags": { - "field": "m_nSplitscreenFlags", - "type": 6 - }, - "EnableRendering": { - "field": "m_bEnableRendering", - "type": 10 - }, - "InterpolationReadyToDraw": { - "field": "m_bInterpolationReadyToDraw", - "type": 10 - }, - "Parent": { - "field": "CEntityComponent", - "type": 11 - } - }, - "CResponseCriteriaSet": { - "NumPrefixedContexts": { - "field": "m_nNumPrefixedContexts", - "type": 2 - }, - "OverrideOnAppend": { - "field": "m_bOverrideOnAppend", - "type": 10 - } - }, - "CRopeOverlapHit": { - "Entity": { - "field": "m_hEntity", - "type": 17, - "classname": "CBaseEntity" - }, - "OverlappingLinks": { - "field": "m_vecOverlappingLinks", - "type": 53 - } - }, - "CSMatchStats_t": { - "Enemy5Ks": { - "field": "m_iEnemy5Ks", - "type": 2 - }, - "Enemy4Ks": { - "field": "m_iEnemy4Ks", - "type": 2 - }, - "Enemy3Ks": { - "field": "m_iEnemy3Ks", - "type": 2 - }, - "EnemyKnifeKills": { - "field": "m_iEnemyKnifeKills", - "type": 2 - }, - "EnemyTaserKills": { - "field": "m_iEnemyTaserKills", - "type": 2 - }, - "Enemy2Ks": { - "field": "m_iEnemy2Ks", - "type": 2 - }, - "Utility_Count": { - "field": "m_iUtility_Count", - "type": 2 - }, - "Utility_Successes": { - "field": "m_iUtility_Successes", - "type": 2 - }, - "Utility_Enemies": { - "field": "m_iUtility_Enemies", - "type": 2 - }, - "Flash_Count": { - "field": "m_iFlash_Count", - "type": 2 - }, - "Flash_Successes": { - "field": "m_iFlash_Successes", - "type": 2 - }, - "HealthPointsRemovedTotal": { - "field": "m_nHealthPointsRemovedTotal", - "type": 2 - }, - "HealthPointsDealtTotal": { - "field": "m_nHealthPointsDealtTotal", - "type": 2 - }, - "ShotsFiredTotal": { - "field": "m_nShotsFiredTotal", - "type": 2 - }, - "ShotsOnTargetTotal": { - "field": "m_nShotsOnTargetTotal", - "type": 2 - }, - "1v1Count": { - "field": "m_i1v1Count", - "type": 2 - }, - "1v1Wins": { - "field": "m_i1v1Wins", - "type": 2 - }, - "1v2Count": { - "field": "m_i1v2Count", - "type": 2 - }, - "1v2Wins": { - "field": "m_i1v2Wins", - "type": 2 - }, - "EntryCount": { - "field": "m_iEntryCount", - "type": 2 - }, - "EntryWins": { - "field": "m_iEntryWins", - "type": 2 - }, - "Parent": { - "field": "CSPerRoundStats_t", - "type": 11 - } - }, - "CSPerRoundStats_t": { - "Kills": { - "field": "m_iKills", - "type": 2 - }, - "Deaths": { - "field": "m_iDeaths", - "type": 2 - }, - "Assists": { - "field": "m_iAssists", - "type": 2 - }, - "Damage": { - "field": "m_iDamage", - "type": 2 - }, - "EquipmentValue": { - "field": "m_iEquipmentValue", - "type": 2 - }, - "MoneySaved": { - "field": "m_iMoneySaved", - "type": 2 - }, - "KillReward": { - "field": "m_iKillReward", - "type": 2 - }, - "LiveTime": { - "field": "m_iLiveTime", - "type": 2 - }, - "HeadShotKills": { - "field": "m_iHeadShotKills", - "type": 2 - }, - "Objective": { - "field": "m_iObjective", - "type": 2 - }, - "CashEarned": { - "field": "m_iCashEarned", - "type": 2 - }, - "UtilityDamage": { - "field": "m_iUtilityDamage", - "type": 2 - }, - "EnemiesFlashed": { - "field": "m_iEnemiesFlashed", - "type": 2 - } - }, - "CSceneEventInfo": { - "Layer": { - "field": "m_iLayer", - "type": 2 - }, - "Priority": { - "field": "m_iPriority", - "type": 2 - }, - "Sequence": { - "field": "m_hSequence", - "type": 2 - }, - "Weight": { - "field": "m_flWeight", - "type": 8 - }, - "HasArrived": { - "field": "m_bHasArrived", - "type": 10 - }, - "Type": { - "field": "m_nType", - "type": 2 - }, - "Next": { - "field": "m_flNext", - "type": 8 - }, - "IsGesture": { - "field": "m_bIsGesture", - "type": 10 - }, - "ShouldRemove": { - "field": "m_bShouldRemove", - "type": 10 - }, - "Target": { - "field": "m_hTarget", - "type": 17, - "classname": "CBaseEntity" - }, - "SceneEventId": { - "field": "m_nSceneEventId", - "classname": "SceneEventId_t", - "type": 16 - }, - "ClientSide": { - "field": "m_bClientSide", - "type": 10 - }, - "Started": { - "field": "m_bStarted", - "type": 10 - } - }, - "CScriptUniformRandomStream": { - "InitialSeed": { - "field": "m_nInitialSeed", - "type": 2 - } - }, - "CServerOnlyModelEntity": { - "Parent": { - "field": "CBaseModelEntity", - "type": 11 - } - }, - "CSharedGapTypeQueryRegistration": {}, - "CSimTimer": { - "Interval": { - "field": "m_interval", - "type": 8 - }, - "Parent": { - "field": "CSimpleSimTimer", - "type": 11 - } - }, - "CSimpleSimTimer": { - "Next": { - "field": "m_next", - "type": 8 - }, - "WorldGroupId": { - "field": "m_nWorldGroupId", - "type": 12 - } - }, - "CSimpleStopwatch": { - "Parent": { - "field": "CStopwatchBase", - "type": 11 - } - }, - "CSkeletonAnimationController": { - "SkeletonInstance": { - "field": "m_pSkeletonInstance", - "classname": "CSkeletonInstance", - "type": 24 - }, - "Parent": { - "field": "ISkeletonAnimationController", - "type": 11 - } - }, - "CSkeletonInstance": { - "ModelState": { - "field": "m_modelState", - "classname": "CModelState", - "type": 16 - }, - "IsAnimationEnabled": { - "field": "m_bIsAnimationEnabled", - "type": 10 - }, - "UseParentRenderBounds": { - "field": "m_bUseParentRenderBounds", - "type": 10 - }, - "DisableSolidCollisionsForHierarchy": { - "field": "m_bDisableSolidCollisionsForHierarchy", - "type": 10 - }, - "MaterialGroup": { - "field": "m_materialGroup", - "type": 12 - }, - "HitboxSet": { - "field": "m_nHitboxSet", - "type": 4 - }, - "Parent": { - "field": "CGameSceneNode", - "type": 11 - } - }, - "CSkillDamage": { - "Damage": { - "field": "m_flDamage", - "classname": "CSkillFloat", - "type": 16 - }, - "NPCDamageScalarVsNPC": { - "field": "m_flNPCDamageScalarVsNPC", - "type": 8 - }, - "PhysicsForceDamage": { - "field": "m_flPhysicsForceDamage", - "type": 8 - } - }, - "CSkillFloat": { - "Value": { - "field": "m_pValue", - "type": 37, - "size": 4 - } - }, - "CSkillInt": { - "Value": { - "field": "m_pValue", - "type": 31, - "size": 4 - } - }, - "CSkyboxReference": { - "WorldGroupId": { - "field": "m_worldGroupId", - "type": 12 - }, - "SkyCamera": { - "field": "m_hSkyCamera", - "type": 17, - "classname": "CSkyCamera" - }, - "Parent": { - "field": "CBaseEntity", - "type": 11 - } - }, - "CSoundEnvelope": { - "Current": { - "field": "m_current", - "type": 8 - }, - "Target": { - "field": "m_target", - "type": 8 - }, - "Rate": { - "field": "m_rate", - "type": 8 - }, - "Forceupdate": { - "field": "m_forceupdate", - "type": 10 - } - }, - "CSoundPatch": { - "Pitch": { - "field": "m_pitch", - "classname": "CSoundEnvelope", - "type": 16 - }, - "Volume": { - "field": "m_volume", - "classname": "CSoundEnvelope", - "type": 16 - }, - "ShutdownTime": { - "field": "m_shutdownTime", - "type": 8 - }, - "LastTime": { - "field": "m_flLastTime", - "type": 8 - }, - "SoundScriptName": { - "field": "m_iszSoundScriptName", - "type": 13 - }, - "Ent": { - "field": "m_hEnt", - "type": 17, - "classname": "CBaseEntity" - }, - "SoundEntityIndex": { - "field": "m_soundEntityIndex", - "type": 2 - }, - "SoundOrigin": { - "field": "m_soundOrigin", - "type": 21 - }, - "IsPlaying": { - "field": "m_isPlaying", - "type": 2 - }, - "Filter": { - "field": "m_Filter", - "classname": "CCopyRecipientFilter", - "type": 16 - }, - "CloseCaptionDuration": { - "field": "m_flCloseCaptionDuration", - "type": 8 - }, - "UpdatedSoundOrigin": { - "field": "m_bUpdatedSoundOrigin", - "type": 10 - }, - "ClassName": { - "field": "m_iszClassName", - "type": 13 - } - }, - "CSpriteOriented": { - "Parent": { - "field": "CSprite", - "type": 11 - } - }, - "CStopwatch": { - "Interval": { - "field": "m_interval", - "type": 8 - }, - "Parent": { - "field": "CStopwatchBase", - "type": 11 - } - }, - "CStopwatchBase": { - "IsRunning": { - "field": "m_fIsRunning", - "type": 10 - }, - "Parent": { - "field": "CSimpleSimTimer", - "type": 11 - } - }, - "CTablet": { - "Parent": { - "field": "CCSWeaponBase", - "type": 11 - } - }, - "CTakeDamageInfo": { - "DamageForce": { - "field": "m_vecDamageForce", - "type": 21 - }, - "DamagePosition": { - "field": "m_vecDamagePosition", - "type": 21 - }, - "ReportedPosition": { - "field": "m_vecReportedPosition", - "type": 21 - }, - "DamageDirection": { - "field": "m_vecDamageDirection", - "type": 21 - }, - "Inflictor": { - "field": "m_hInflictor", - "type": 17, - "classname": "CBaseEntity" - }, - "Attacker": { - "field": "m_hAttacker", - "type": 17, - "classname": "CBaseEntity" - }, - "Ability": { - "field": "m_hAbility", - "type": 17, - "classname": "CBaseEntity" - }, - "Damage": { - "field": "m_flDamage", - "type": 8 - }, - "TotalledDamage": { - "field": "m_flTotalledDamage", - "type": 8 - }, - "TotalledDamageAbsorbed": { - "field": "m_flTotalledDamageAbsorbed", - "type": 8 - }, - "BitsDamageType": { - "field": "m_bitsDamageType", - "type": 6 - }, - "DamageCustom": { - "field": "m_iDamageCustom", - "type": 2 - }, - "AmmoType": { - "field": "m_iAmmoType", - "type": 6 - }, - "OriginalDamage": { - "field": "m_flOriginalDamage", - "type": 8 - }, - "ShouldBleed": { - "field": "m_bShouldBleed", - "type": 10 - }, - "ShouldSpark": { - "field": "m_bShouldSpark", - "type": 10 - }, - "DamageAbsorbed": { - "field": "m_flDamageAbsorbed", - "type": 8 - }, - "DamageFlags": { - "field": "m_nDamageFlags", - "type": 7 - }, - "NumObjectsPenetrated": { - "field": "m_nNumObjectsPenetrated", - "type": 2 - }, - "FriendlyFireDamageReductionRatio": { - "field": "m_flFriendlyFireDamageReductionRatio", - "type": 8 - }, - "InTakeDamageFlow": { - "field": "m_bInTakeDamageFlow", - "type": 10 - } - }, - "CTakeDamageInfoAPI": {}, - "CTakeDamageResult": { - "OriginatingInfo": { - "field": "m_pOriginatingInfo", - "classname": "CTakeDamageInfo", - "type": 24 - }, - "HealthLost": { - "field": "m_nHealthLost", - "type": 2 - }, - "DamageTaken": { - "field": "m_nDamageTaken", - "type": 2 - }, - "TotalledHealthLost": { - "field": "m_nTotalledHealthLost", - "type": 2 - }, - "TotalledDamageTaken": { - "field": "m_nTotalledDamageTaken", - "type": 2 - }, - "TotalledDamageAbsorbed": { - "field": "m_flTotalledDamageAbsorbed", - "type": 8 - } - }, - "CTakeDamageSummaryScopeGuard": {}, - "CTimeline": { - "Values": { - "field": "m_flValues", - "type": 37, - "size": 64 - }, - "ValueCounts": { - "field": "m_nValueCounts", - "type": 31, - "size": 64 - }, - "BucketCount": { - "field": "m_nBucketCount", - "type": 2 - }, - "Interval": { - "field": "m_flInterval", - "type": 8 - }, - "FinalValue": { - "field": "m_flFinalValue", - "type": 8 - }, - "CompressionType": { - "field": "m_nCompressionType", - "type": 6 - }, - "Stopped": { - "field": "m_bStopped", - "type": 10 - }, - "Parent": { - "field": "IntervalTimer", - "type": 11 - } - }, - "CTripWireFire": { - "Parent": { - "field": "CBaseCSGrenade", - "type": 11 - } - }, - "CTripWireFireProjectile": { - "Parent": { - "field": "CBaseGrenade", - "type": 11 - } - }, - "CWaterSplasher": { - "Parent": { - "field": "C_BaseModelEntity", - "type": 11 - } - }, - "CWeaponZoneRepulsor": { - "Parent": { - "field": "CCSWeaponBaseGun", - "type": 11 - } - }, - "CWorldCompositionChunkReferenceElement_t": { - "StrMapToLoad": { - "field": "m_strMapToLoad", - "type": 14 - }, - "StrLandmarkName": { - "field": "m_strLandmarkName", - "type": 14 - } - }, - "CommandToolCommand_t": { - "Enabled": { - "field": "m_bEnabled", - "type": 10 - }, - "Opened": { - "field": "m_bOpened", - "type": 10 - }, - "InternalId": { - "field": "m_InternalId", - "type": 6 - }, - "ShortName": { - "field": "m_ShortName", - "type": 14 - }, - "ExecMode": { - "field": "m_ExecMode", - "type": 6 - }, - "SpawnGroup": { - "field": "m_SpawnGroup", - "type": 14 - }, - "PeriodicExecDelay": { - "field": "m_PeriodicExecDelay", - "type": 8 - }, - "SpecType": { - "field": "m_SpecType", - "type": 6 - }, - "EntitySpec": { - "field": "m_EntitySpec", - "type": 14 - }, - "Commands": { - "field": "m_Commands", - "type": 14 - }, - "SetDebugBits": { - "field": "m_SetDebugBits", - "type": 7 - }, - "ClearDebugBits": { - "field": "m_ClearDebugBits", - "type": 7 - } - }, - "CompMatMutatorCondition_t": { - "MutatorCondition": { - "field": "m_nMutatorCondition", - "type": 6 - }, - "StrMutatorConditionContainerName": { - "field": "m_strMutatorConditionContainerName", - "type": 14 - }, - "StrMutatorConditionContainerVarName": { - "field": "m_strMutatorConditionContainerVarName", - "type": 14 - }, - "StrMutatorConditionContainerVarValue": { - "field": "m_strMutatorConditionContainerVarValue", - "type": 14 - }, - "PassWhenTrue": { - "field": "m_bPassWhenTrue", - "type": 10 - } - }, - "CompMatPropertyMutator_t": { - "Enabled": { - "field": "m_bEnabled", - "type": 10 - }, - "MutatorCommandType": { - "field": "m_nMutatorCommandType", - "type": 6 - }, - "StrInitWith_Container": { - "field": "m_strInitWith_Container", - "type": 14 - }, - "StrCopyProperty_InputContainerSrc": { - "field": "m_strCopyProperty_InputContainerSrc", - "type": 14 - }, - "StrCopyProperty_InputContainerProperty": { - "field": "m_strCopyProperty_InputContainerProperty", - "type": 14 - }, - "StrCopyProperty_TargetProperty": { - "field": "m_strCopyProperty_TargetProperty", - "type": 14 - }, - "StrRandomRollInputVars_SeedInputVar": { - "field": "m_strRandomRollInputVars_SeedInputVar", - "type": 14 - }, - "RandomRollInputVars_InputVarsToRoll": { - "field": "m_vecRandomRollInputVars_InputVarsToRoll", - "type": 50 - }, - "StrCopyMatchingKeys_InputContainerSrc": { - "field": "m_strCopyMatchingKeys_InputContainerSrc", - "type": 14 - }, - "StrCopyKeysWithSuffix_InputContainerSrc": { - "field": "m_strCopyKeysWithSuffix_InputContainerSrc", - "type": 14 - }, - "StrCopyKeysWithSuffix_FindSuffix": { - "field": "m_strCopyKeysWithSuffix_FindSuffix", - "type": 14 - }, - "StrCopyKeysWithSuffix_ReplaceSuffix": { - "field": "m_strCopyKeysWithSuffix_ReplaceSuffix", - "type": 14 - }, - "SetValue_Value": { - "field": "m_nSetValue_Value", - "classname": "CompositeMaterialInputLooseVariable_t", - "type": 16 - }, - "StrGenerateTexture_TargetParam": { - "field": "m_strGenerateTexture_TargetParam", - "type": 14 - }, - "StrGenerateTexture_InitialContainer": { - "field": "m_strGenerateTexture_InitialContainer", - "type": 14 - }, - "Resolution": { - "field": "m_nResolution", - "type": 2 - }, - "IsScratchTarget": { - "field": "m_bIsScratchTarget", - "type": 10 - }, - "SplatDebugInfo": { - "field": "m_bSplatDebugInfo", - "type": 10 - }, - "CaptureInRenderDoc": { - "field": "m_bCaptureInRenderDoc", - "type": 10 - }, - "StrPopInputQueue_Container": { - "field": "m_strPopInputQueue_Container", - "type": 14 - }, - "StrDrawText_InputContainerSrc": { - "field": "m_strDrawText_InputContainerSrc", - "type": 14 - }, - "StrDrawText_InputContainerProperty": { - "field": "m_strDrawText_InputContainerProperty", - "type": 14 - }, - "DrawText_Position": { - "field": "m_vecDrawText_Position", - "type": 22 - }, - "ColDrawText_Color": { - "field": "m_colDrawText_Color", - "type": 19 - }, - "StrDrawText_Font": { - "field": "m_strDrawText_Font", - "type": 14 - } - }, - "CompositeMaterialAssemblyProcedure_t": {}, - "CompositeMaterialEditorPoint_t": { - "SequenceIndex": { - "field": "m_nSequenceIndex", - "type": 2 - }, - "Cycle": { - "field": "m_flCycle", - "type": 8 - }, - "EnableChildModel": { - "field": "m_bEnableChildModel", - "type": 10 - } - }, - "CompositeMaterialInputContainer_t": { - "Enabled": { - "field": "m_bEnabled", - "type": 10 - }, - "CompositeMaterialInputContainerSourceType": { - "field": "m_nCompositeMaterialInputContainerSourceType", - "type": 6 - }, - "StrAttrName": { - "field": "m_strAttrName", - "type": 14 - }, - "StrAlias": { - "field": "m_strAlias", - "type": 14 - }, - "StrAttrNameForVar": { - "field": "m_strAttrNameForVar", - "type": 14 - }, - "ExposeExternally": { - "field": "m_bExposeExternally", - "type": 10 - } - }, - "CompositeMaterialInputLooseVariable_t": { - "StrName": { - "field": "m_strName", - "type": 14 - }, - "ExposeExternally": { - "field": "m_bExposeExternally", - "type": 10 - }, - "StrExposedFriendlyName": { - "field": "m_strExposedFriendlyName", - "type": 14 - }, - "StrExposedFriendlyGroupName": { - "field": "m_strExposedFriendlyGroupName", - "type": 14 - }, - "ExposedVariableIsFixedRange": { - "field": "m_bExposedVariableIsFixedRange", - "type": 10 - }, - "StrExposedVisibleWhenTrue": { - "field": "m_strExposedVisibleWhenTrue", - "type": 14 - }, - "StrExposedHiddenWhenTrue": { - "field": "m_strExposedHiddenWhenTrue", - "type": 14 - }, - "StrExposedValueList": { - "field": "m_strExposedValueList", - "type": 14 - }, - "VariableType": { - "field": "m_nVariableType", - "type": 6 - }, - "ValueBoolean": { - "field": "m_bValueBoolean", - "type": 10 - }, - "ValueIntX": { - "field": "m_nValueIntX", - "type": 2 - }, - "ValueIntY": { - "field": "m_nValueIntY", - "type": 2 - }, - "ValueIntZ": { - "field": "m_nValueIntZ", - "type": 2 - }, - "ValueIntW": { - "field": "m_nValueIntW", - "type": 2 - }, - "HasFloatBounds": { - "field": "m_bHasFloatBounds", - "type": 10 - }, - "ValueFloatX": { - "field": "m_flValueFloatX", - "type": 8 - }, - "ValueFloatX_Min": { - "field": "m_flValueFloatX_Min", - "type": 8 - }, - "ValueFloatX_Max": { - "field": "m_flValueFloatX_Max", - "type": 8 - }, - "ValueFloatY": { - "field": "m_flValueFloatY", - "type": 8 - }, - "ValueFloatY_Min": { - "field": "m_flValueFloatY_Min", - "type": 8 - }, - "ValueFloatY_Max": { - "field": "m_flValueFloatY_Max", - "type": 8 - }, - "ValueFloatZ": { - "field": "m_flValueFloatZ", - "type": 8 - }, - "ValueFloatZ_Min": { - "field": "m_flValueFloatZ_Min", - "type": 8 - }, - "ValueFloatZ_Max": { - "field": "m_flValueFloatZ_Max", - "type": 8 - }, - "ValueFloatW": { - "field": "m_flValueFloatW", - "type": 8 - }, - "ValueFloatW_Min": { - "field": "m_flValueFloatW_Min", - "type": 8 - }, - "ValueFloatW_Max": { - "field": "m_flValueFloatW_Max", - "type": 8 - }, - "CValueColor4": { - "field": "m_cValueColor4", - "type": 19 - }, - "ValueSystemVar": { - "field": "m_nValueSystemVar", - "type": 6 - }, - "StrTextureContentAssetPath": { - "field": "m_strTextureContentAssetPath", - "type": 14 - }, - "StrTextureCompilationVtexTemplate": { - "field": "m_strTextureCompilationVtexTemplate", - "type": 14 - }, - "TextureType": { - "field": "m_nTextureType", - "type": 6 - }, - "StrString": { - "field": "m_strString", - "type": 14 - }, - "StrPanoramaPanelPath": { - "field": "m_strPanoramaPanelPath", - "type": 14 - }, - "PanoramaRenderRes": { - "field": "m_nPanoramaRenderRes", - "type": 2 - } - }, - "CompositeMaterialMatchFilter_t": { - "CompositeMaterialMatchFilterType": { - "field": "m_nCompositeMaterialMatchFilterType", - "type": 6 - }, - "StrMatchFilter": { - "field": "m_strMatchFilter", - "type": 14 - }, - "StrMatchValue": { - "field": "m_strMatchValue", - "type": 14 - }, - "PassWhenTrue": { - "field": "m_bPassWhenTrue", - "type": 10 - } - }, - "CompositeMaterial_t": {}, - "CountdownTimer": { - "Duration": { - "field": "m_duration", - "type": 8 - }, - "Timestamp": { - "field": "m_timestamp", - "type": 8 - }, - "Timescale": { - "field": "m_timescale", - "type": 8 - }, - "WorldGroupId": { - "field": "m_nWorldGroupId", - "type": 12 - } - }, - "EngineCountdownTimer": { - "Duration": { - "field": "m_duration", - "type": 8 - }, - "Timestamp": { - "field": "m_timestamp", - "type": 8 - }, - "Timescale": { - "field": "m_timescale", - "type": 8 - } - }, - "EngineLoopState_t": { - "PlatWindowWidth": { - "field": "m_nPlatWindowWidth", - "type": 2 - }, - "PlatWindowHeight": { - "field": "m_nPlatWindowHeight", - "type": 2 - }, - "RenderWidth": { - "field": "m_nRenderWidth", - "type": 2 - }, - "RenderHeight": { - "field": "m_nRenderHeight", - "type": 2 - } - }, - "EntityRenderAttribute_t": { - "ID": { - "field": "m_ID", - "type": 12 - }, - "Values": { - "field": "m_Values", - "type": 23 - } - }, - "EntitySpottedState_t": { - "Spotted": { - "field": "m_bSpotted", - "type": 10 - }, - "SpottedByMask": { - "field": "m_bSpottedByMask", - "type": 35, - "size": 2 - } - }, - "EventAdvanceTick_t": { - "CurrentTick": { - "field": "m_nCurrentTick", - "type": 2 - }, - "CurrentTickThisFrame": { - "field": "m_nCurrentTickThisFrame", - "type": 2 - }, - "TotalTicksThisFrame": { - "field": "m_nTotalTicksThisFrame", - "type": 2 - }, - "TotalTicks": { - "field": "m_nTotalTicks", - "type": 2 - }, - "Parent": { - "field": "EventSimulate_t", - "type": 11 - } - }, - "EventAppShutdown_t": { - "Dummy0": { - "field": "m_nDummy0", - "type": 2 - } - }, - "EventClientAdvanceNonRenderedFrame_t": {}, - "EventClientAdvanceTick_t": { - "Parent": { - "field": "EventAdvanceTick_t", - "type": 11 - } - }, - "EventClientFrameSimulate_t": { - "LoopState": { - "field": "m_LoopState", - "classname": "EngineLoopState_t", - "type": 16 - }, - "RealTime": { - "field": "m_flRealTime", - "type": 8 - }, - "FrameTime": { - "field": "m_flFrameTime", - "type": 8 - }, - "ScheduleSendTickPacket": { - "field": "m_bScheduleSendTickPacket", - "type": 10 - } - }, - "EventClientOutput_t": { - "LoopState": { - "field": "m_LoopState", - "classname": "EngineLoopState_t", - "type": 16 - }, - "RenderTime": { - "field": "m_flRenderTime", - "type": 8 - }, - "RealTime": { - "field": "m_flRealTime", - "type": 8 - }, - "RenderFrameTimeUnbounded": { - "field": "m_flRenderFrameTimeUnbounded", - "type": 8 - }, - "RenderOnly": { - "field": "m_bRenderOnly", - "type": 10 - } - }, - "EventClientPauseSimulate_t": { - "Parent": { - "field": "EventSimulate_t", - "type": 11 - } - }, - "EventClientPollInput_t": { - "LoopState": { - "field": "m_LoopState", - "classname": "EngineLoopState_t", - "type": 16 - }, - "RealTime": { - "field": "m_flRealTime", - "type": 8 - } - }, - "EventClientPollNetworking_t": { - "TickCount": { - "field": "m_nTickCount", - "type": 2 - } - }, - "EventClientPostAdvanceTick_t": { - "Parent": { - "field": "EventPostAdvanceTick_t", - "type": 11 - } - }, - "EventClientPostOutput_t": { - "LoopState": { - "field": "m_LoopState", - "classname": "EngineLoopState_t", - "type": 16 - }, - "RenderTime": { - "field": "m_flRenderTime", - "type": 9 - }, - "RenderFrameTime": { - "field": "m_flRenderFrameTime", - "type": 8 - }, - "RenderFrameTimeUnbounded": { - "field": "m_flRenderFrameTimeUnbounded", - "type": 8 - }, - "RenderOnly": { - "field": "m_bRenderOnly", - "type": 10 - } - }, - "EventClientPostSimulate_t": { - "Parent": { - "field": "EventSimulate_t", - "type": 11 - } - }, - "EventClientPreOutput_t": { - "LoopState": { - "field": "m_LoopState", - "classname": "EngineLoopState_t", - "type": 16 - }, - "RenderTime": { - "field": "m_flRenderTime", - "type": 9 - }, - "RenderFrameTime": { - "field": "m_flRenderFrameTime", - "type": 9 - }, - "RenderFrameTimeUnbounded": { - "field": "m_flRenderFrameTimeUnbounded", - "type": 9 - }, - "RealTime": { - "field": "m_flRealTime", - "type": 8 - }, - "RenderOnly": { - "field": "m_bRenderOnly", - "type": 10 - } - }, - "EventClientPreSimulate_t": { - "Parent": { - "field": "EventSimulate_t", - "type": 11 - } - }, - "EventClientProcessGameInput_t": { - "LoopState": { - "field": "m_LoopState", - "classname": "EngineLoopState_t", - "type": 16 - }, - "RealTime": { - "field": "m_flRealTime", - "type": 8 - }, - "FrameTime": { - "field": "m_flFrameTime", - "type": 8 - } - }, - "EventClientProcessInput_t": { - "LoopState": { - "field": "m_LoopState", - "classname": "EngineLoopState_t", - "type": 16 - }, - "RealTime": { - "field": "m_flRealTime", - "type": 8 - }, - "TickInterval": { - "field": "m_flTickInterval", - "type": 8 - }, - "TickStartTime": { - "field": "m_flTickStartTime", - "type": 9 - } - }, - "EventClientProcessNetworking_t": { - "TickCount": { - "field": "m_nTickCount", - "type": 2 - } - }, - "EventClientSceneSystemThreadStateChange_t": { - "ThreadsActive": { - "field": "m_bThreadsActive", - "type": 10 - } - }, - "EventClientSimulate_t": { - "Parent": { - "field": "EventSimulate_t", - "type": 11 - } - }, - "EventFrameBoundary_t": { - "FrameTime": { - "field": "m_flFrameTime", - "type": 8 - } - }, - "EventModInitialized_t": {}, - "EventPostAdvanceTick_t": { - "CurrentTick": { - "field": "m_nCurrentTick", - "type": 2 - }, - "CurrentTickThisFrame": { - "field": "m_nCurrentTickThisFrame", - "type": 2 - }, - "TotalTicksThisFrame": { - "field": "m_nTotalTicksThisFrame", - "type": 2 - }, - "TotalTicks": { - "field": "m_nTotalTicks", - "type": 2 - }, - "Parent": { - "field": "EventSimulate_t", - "type": 11 - } - }, - "EventPostDataUpdate_t": { - "Count": { - "field": "m_nCount", - "type": 2 - } - }, - "EventPreDataUpdate_t": { - "Count": { - "field": "m_nCount", - "type": 2 - } - }, - "EventProfileStorageAvailable_t": { - "SplitScreenSlot": { - "field": "m_nSplitScreenSlot", - "type": 2 - } - }, - "EventServerAdvanceTick_t": { - "Parent": { - "field": "EventAdvanceTick_t", - "type": 11 - } - }, - "EventServerBeginAsyncPostTickWork_t": { - "Parent": { - "field": "EventPostAdvanceTick_t", - "type": 11 - } - }, - "EventServerEndAsyncPostTickWork_t": {}, - "EventServerPollNetworking_t": { - "Parent": { - "field": "EventSimulate_t", - "type": 11 - } - }, - "EventServerPostAdvanceTick_t": { - "Parent": { - "field": "EventPostAdvanceTick_t", - "type": 11 - } - }, - "EventServerPostSimulate_t": { - "Parent": { - "field": "EventSimulate_t", - "type": 11 - } - }, - "EventServerProcessNetworking_t": { - "Parent": { - "field": "EventSimulate_t", - "type": 11 - } - }, - "EventServerSimulate_t": { - "Parent": { - "field": "EventSimulate_t", - "type": 11 - } - }, - "EventSetTime_t": { - "LoopState": { - "field": "m_LoopState", - "classname": "EngineLoopState_t", - "type": 16 - }, - "ClientOutputFrames": { - "field": "m_nClientOutputFrames", - "type": 2 - }, - "RealTime": { - "field": "m_flRealTime", - "type": 9 - }, - "RenderTime": { - "field": "m_flRenderTime", - "type": 9 - }, - "RenderFrameTime": { - "field": "m_flRenderFrameTime", - "type": 9 - }, - "RenderFrameTimeUnbounded": { - "field": "m_flRenderFrameTimeUnbounded", - "type": 9 - }, - "RenderFrameTimeUnscaled": { - "field": "m_flRenderFrameTimeUnscaled", - "type": 9 - }, - "TickRemainder": { - "field": "m_flTickRemainder", - "type": 9 - } - }, - "EventSimpleLoopFrameUpdate_t": { - "LoopState": { - "field": "m_LoopState", - "classname": "EngineLoopState_t", - "type": 16 - }, - "RealTime": { - "field": "m_flRealTime", - "type": 8 - }, - "FrameTime": { - "field": "m_flFrameTime", - "type": 8 - } - }, - "EventSimulate_t": { - "LoopState": { - "field": "m_LoopState", - "classname": "EngineLoopState_t", - "type": 16 - }, - "FirstTick": { - "field": "m_bFirstTick", - "type": 10 - }, - "LastTick": { - "field": "m_bLastTick", - "type": 10 - } - }, - "EventSplitScreenStateChanged_t": {}, - "GameAmmoTypeInfo_t": { - "BuySize": { - "field": "m_nBuySize", - "type": 2 - }, - "Cost": { - "field": "m_nCost", - "type": 2 - }, - "Parent": { - "field": "AmmoTypeInfo_t", - "type": 11 - } - }, - "GeneratedTextureHandle_t": { - "StrBitmapName": { - "field": "m_strBitmapName", - "type": 14 - } - }, - "HullFlags_t": { - "Hull_Human": { - "field": "m_bHull_Human", - "type": 10 - }, - "Hull_SmallCentered": { - "field": "m_bHull_SmallCentered", - "type": 10 - }, - "Hull_WideHuman": { - "field": "m_bHull_WideHuman", - "type": 10 - }, - "Hull_Tiny": { - "field": "m_bHull_Tiny", - "type": 10 - }, - "Hull_Medium": { - "field": "m_bHull_Medium", - "type": 10 - }, - "Hull_TinyCentered": { - "field": "m_bHull_TinyCentered", - "type": 10 - }, - "Hull_Large": { - "field": "m_bHull_Large", - "type": 10 - }, - "Hull_LargeCentered": { - "field": "m_bHull_LargeCentered", - "type": 10 - }, - "Hull_MediumTall": { - "field": "m_bHull_MediumTall", - "type": 10 - }, - "Hull_Small": { - "field": "m_bHull_Small", - "type": 10 - } - }, - "IChoreoServices": {}, - "IClientAlphaProperty": {}, - "IEconItemInterface": {}, - "IGapHost_GameEntity": {}, - "IHasAttributes": {}, - "IRagdoll": {}, - "ISkeletonAnimationController": {}, - "IntervalTimer": { - "Timestamp": { - "field": "m_timestamp", - "type": 8 - }, - "WorldGroupId": { - "field": "m_nWorldGroupId", - "type": 12 - } - }, - "ModelConfigHandle_t": { - "Value": { - "field": "m_Value", - "type": 6 - } - }, - "ParticleIndex_t": { - "Value": { - "field": "m_Value", - "type": 2 - } - }, - "PhysicsRagdollPose_t": { - "Owner": { - "field": "m_hOwner", - "type": 17, - "classname": "CBaseEntity" - } - }, - "PointCameraSettings_t": { - "NearBlurryDistance": { - "field": "m_flNearBlurryDistance", - "type": 8 - }, - "NearCrispDistance": { - "field": "m_flNearCrispDistance", - "type": 8 - }, - "FarCrispDistance": { - "field": "m_flFarCrispDistance", - "type": 8 - }, - "FarBlurryDistance": { - "field": "m_flFarBlurryDistance", - "type": 8 - } - }, - "PredictedDamageTag_t": { - "TagTick": { - "field": "nTagTick", - "type": 2 - }, - "FlinchModSmall": { - "field": "flFlinchModSmall", - "type": 8 - }, - "FlinchModLarge": { - "field": "flFlinchModLarge", - "type": 8 - }, - "FriendlyFireDamageReductionRatio": { - "field": "flFriendlyFireDamageReductionRatio", - "type": 8 - } - }, - "QuestProgress": {}, - "RagdollCreationParams_t": { - "Force": { - "field": "m_vForce", - "type": 21 - }, - "ForceBone": { - "field": "m_nForceBone", - "type": 2 - }, - "ForceCurrentWorldTransform": { - "field": "m_bForceCurrentWorldTransform", - "type": 10 - }, - "HealthToGrant": { - "field": "m_nHealthToGrant", - "type": 2 - } - }, - "ResponseFollowup": { - "Followup_concept": { - "field": "followup_concept", - "type": 15 - }, - "Followup_contexts": { - "field": "followup_contexts", - "type": 15 - }, - "Followup_delay": { - "field": "followup_delay", - "type": 8 - }, - "Followup_target": { - "field": "followup_target", - "type": 15 - }, - "Followup_entityiotarget": { - "field": "followup_entityiotarget", - "type": 15 - }, - "Followup_entityioinput": { - "field": "followup_entityioinput", - "type": 15 - }, - "Followup_entityiodelay": { - "field": "followup_entityiodelay", - "type": 8 - }, - "Fired": { - "field": "bFired", - "type": 10 - } - }, - "ResponseParams": { - "Odds": { - "field": "odds", - "type": 1 - }, - "Flags": { - "field": "flags", - "type": 1 - }, - "Followup": { - "field": "m_pFollowup", - "classname": "ResponseFollowup", - "type": 24 - } - }, - "SceneEventId_t": { - "Value": { - "field": "m_Value", - "type": 6 - } - }, - "SellbackPurchaseEntry_t": { - "DefIdx": { - "field": "m_unDefIdx", - "type": 5 - }, - "Cost": { - "field": "m_nCost", - "type": 2 - }, - "PrevArmor": { - "field": "m_nPrevArmor", - "type": 2 - }, - "PrevHelmet": { - "field": "m_bPrevHelmet", - "type": 10 - }, - "Item": { - "field": "m_hItem", - "type": 17, - "classname": "CEntityInstance" - } - }, - "SequenceHistory_t": { - "Sequence": { - "field": "m_hSequence", - "type": 2 - }, - "SeqStartTime": { - "field": "m_flSeqStartTime", - "type": 8 - }, - "SeqFixedCycle": { - "field": "m_flSeqFixedCycle", - "type": 8 - }, - "SeqLoopMode": { - "field": "m_nSeqLoopMode", - "type": 6 - }, - "PlaybackRate": { - "field": "m_flPlaybackRate", - "type": 8 - }, - "CyclesPerSecond": { - "field": "m_flCyclesPerSecond", - "type": 8 - } - }, - "ServerAuthoritativeWeaponSlot_t": { - "Class": { - "field": "unClass", - "type": 5 - }, - "Slot": { - "field": "unSlot", - "type": 5 - }, - "ItemDefIdx": { - "field": "unItemDefIdx", - "type": 5 - } - }, - "SummaryTakeDamageInfo_t": { - "SummarisedCount": { - "field": "nSummarisedCount", - "type": 2 - }, - "Info": { - "field": "info", - "classname": "CTakeDamageInfo", - "type": 16 - }, - "Result": { - "field": "result", - "classname": "CTakeDamageResult", - "type": 16 - }, - "Target": { - "field": "hTarget", - "type": 17, - "classname": "CBaseEntity" - } - }, - "TimedEvent": { - "TimeBetweenEvents": { - "field": "m_TimeBetweenEvents", - "type": 8 - }, - "NextEvent": { - "field": "m_fNextEvent", - "type": 8 - } - }, - "VPhysicsCollisionAttribute_t": { - "InteractsAs": { - "field": "m_nInteractsAs", - "type": 7 - }, - "InteractsWith": { - "field": "m_nInteractsWith", - "type": 7 - }, - "InteractsExclude": { - "field": "m_nInteractsExclude", - "type": 7 - }, - "EntityId": { - "field": "m_nEntityId", - "type": 6 - }, - "OwnerId": { - "field": "m_nOwnerId", - "type": 6 - }, - "HierarchyId": { - "field": "m_nHierarchyId", - "type": 5 - }, - "CollisionGroup": { - "field": "m_nCollisionGroup", - "type": 4 - }, - "CollisionFunctionMask": { - "field": "m_nCollisionFunctionMask", - "type": 4 - } - }, - "ViewAngleServerChange_t": { - "Type": { - "field": "nType", - "type": 4 - }, - "Angle": { - "field": "qAngle", - "type": 20 - }, - "Index": { - "field": "nIndex", - "type": 6 - } - }, - "WaterWheelDrag_t": { - "FractionOfWheelSubmerged": { - "field": "m_flFractionOfWheelSubmerged", - "type": 8 - }, - "WheelDrag": { - "field": "m_flWheelDrag", - "type": 8 - } - }, - "WaterWheelFrictionScale_t": { - "FractionOfWheelSubmerged": { - "field": "m_flFractionOfWheelSubmerged", - "type": 8 - }, - "FrictionScale": { - "field": "m_flFrictionScale", - "type": 8 - } - }, - "WeaponPurchaseCount_t": { - "ItemDefIndex": { - "field": "m_nItemDefIndex", - "type": 5 - }, - "Count": { - "field": "m_nCount", - "type": 5 - } - }, - "WeaponPurchaseTracker_t": {}, - "WrappedPhysicsJoint_t": {}, - "audioparams_t": { - "LocalSound": { - "field": "localSound", - "type": 42, - "size": 8 - }, - "SoundscapeIndex": { - "field": "soundscapeIndex", - "type": 2 - }, - "LocalBits": { - "field": "localBits", - "type": 4 - }, - "SoundscapeEntityListIndex": { - "field": "soundscapeEntityListIndex", - "type": 2 - }, - "SoundEventHash": { - "field": "soundEventHash", - "type": 6 - } - }, - "fogparams_t": { - "DirPrimary": { - "field": "dirPrimary", - "type": 21 - }, - "ColorPrimary": { - "field": "colorPrimary", - "type": 19 - }, - "ColorSecondary": { - "field": "colorSecondary", - "type": 19 - }, - "ColorPrimaryLerpTo": { - "field": "colorPrimaryLerpTo", - "type": 19 - }, - "ColorSecondaryLerpTo": { - "field": "colorSecondaryLerpTo", - "type": 19 - }, - "Start": { - "field": "start", - "type": 8 - }, - "End": { - "field": "end", - "type": 8 - }, - "Farz": { - "field": "farz", - "type": 8 - }, - "Maxdensity": { - "field": "maxdensity", - "type": 8 - }, - "Exponent": { - "field": "exponent", - "type": 8 - }, - "HDRColorScale": { - "field": "HDRColorScale", - "type": 8 - }, - "SkyboxFogFactor": { - "field": "skyboxFogFactor", - "type": 8 - }, - "SkyboxFogFactorLerpTo": { - "field": "skyboxFogFactorLerpTo", - "type": 8 - }, - "StartLerpTo": { - "field": "startLerpTo", - "type": 8 - }, - "EndLerpTo": { - "field": "endLerpTo", - "type": 8 - }, - "MaxdensityLerpTo": { - "field": "maxdensityLerpTo", - "type": 8 - }, - "Lerptime": { - "field": "lerptime", - "type": 8 - }, - "Duration": { - "field": "duration", - "type": 8 - }, - "Blendtobackground": { - "field": "blendtobackground", - "type": 8 - }, - "Scattering": { - "field": "scattering", - "type": 8 - }, - "Locallightscale": { - "field": "locallightscale", - "type": 8 - }, - "Enable": { - "field": "enable", - "type": 10 - }, - "Blend": { - "field": "blend", - "type": 10 - }, - "NoReflectionFog": { - "field": "m_bNoReflectionFog", - "type": 10 - }, - "Padding": { - "field": "m_bPadding", - "type": 10 - } - }, - "hudtextparms_t": { - "Color1": { - "field": "color1", - "type": 19 - }, - "Color2": { - "field": "color2", - "type": 19 - }, - "Effect": { - "field": "effect", - "type": 4 - }, - "Channel": { - "field": "channel", - "type": 4 - }, - "X": { - "field": "x", - "type": 8 - }, - "Y": { - "field": "y", - "type": 8 - } - }, - "ragdoll_t": { - "BoneIndex": { - "field": "boneIndex", - "type": 53 - }, - "AllowStretch": { - "field": "allowStretch", - "type": 10 - }, - "Unused": { - "field": "unused", - "type": 10 - } - }, - "ragdollelement_t": { - "OriginParentSpace": { - "field": "originParentSpace", - "type": 21 - }, - "ParentIndex": { - "field": "parentIndex", - "type": 2 - }, - "Radius": { - "field": "m_flRadius", - "type": 8 - } - }, - "shard_model_desc_t": { - "ModelID": { - "field": "m_nModelID", - "type": 2 - }, - "Solid": { - "field": "m_solid", - "type": 4 - }, - "PanelSize": { - "field": "m_vecPanelSize", - "type": 22 - }, - "StressPositionA": { - "field": "m_vecStressPositionA", - "type": 22 - }, - "StressPositionB": { - "field": "m_vecStressPositionB", - "type": 22 - }, - "PanelVertices": { - "field": "m_vecPanelVertices", - "type": 64 - }, - "InitialPanelVertices": { - "field": "m_vInitialPanelVertices", - "type": 65 - }, - "GlassHalfThickness": { - "field": "m_flGlassHalfThickness", - "type": 8 - }, - "HasParent": { - "field": "m_bHasParent", - "type": 10 - }, - "ParentFrozen": { - "field": "m_bParentFrozen", - "type": 10 - }, - "SurfacePropStringToken": { - "field": "m_SurfacePropStringToken", - "type": 12 - } - }, - "sky3dparams_t": { - "Scale": { - "field": "scale", - "type": 1 - }, - "Origin": { - "field": "origin", - "type": 21 - }, - "Clip3DSkyBoxNearToWorldFar": { - "field": "bClip3DSkyBoxNearToWorldFar", - "type": 10 - }, - "Clip3DSkyBoxNearToWorldFarOffset": { - "field": "flClip3DSkyBoxNearToWorldFarOffset", - "type": 8 - }, - "Fog": { - "field": "fog", - "classname": "fogparams_t", - "type": 16 - }, - "WorldGroupID": { - "field": "m_nWorldGroupID", - "type": 12 - } - }, - "sndopvarlatchdata_t": { - "Stack": { - "field": "m_iszStack", - "type": 13 - }, - "Operator": { - "field": "m_iszOperator", - "type": 13 - }, - "Opvar": { - "field": "m_iszOpvar", - "type": 13 - }, - "Val": { - "field": "m_flVal", - "type": 8 - }, - "Pos": { - "field": "m_vPos", - "type": 21 - } - }, - "thinkfunc_t": { - "Context": { - "field": "m_nContext", - "type": 12 - }, - "NextThinkTick": { - "field": "m_nNextThinkTick", - "type": 2 - }, - "LastThinkTick": { - "field": "m_nLastThinkTick", - "type": 2 - } - }, - "CEmptyEntityInstance": {}, - "CEntityComponent": {}, - "CEntityComponentHelper": { - "Flags": { - "field": "m_flags", - "type": 6 - }, - "Info": { - "field": "m_pInfo", - "classname": "EntComponentInfo_t", - "type": 24 - }, - "Priority": { - "field": "m_nPriority", - "type": 2 - }, - "Next": { - "field": "m_pNext", - "classname": "CEntityComponentHelper", - "type": 24 - } - }, - "CEntityIOOutput": {}, - "CEntityIdentity": { - "NameStringableIndex": { - "field": "m_nameStringableIndex", - "type": 2 - }, - "Name": { - "field": "m_name", - "type": 13 - }, - "DesignerName": { - "field": "m_designerName", - "type": 13 - }, - "Flags": { - "field": "m_flags", - "type": 6 - }, - "WorldGroupId": { - "field": "m_worldGroupId", - "type": 12 - }, - "DataObjectTypes": { - "field": "m_fDataObjectTypes", - "type": 6 - }, - "PathIndex": { - "field": "m_PathIndex", - "classname": "ChangeAccessorFieldPathIndex_t", - "type": 16 - }, - "Prev": { - "field": "m_pPrev", - "classname": "CEntityIdentity", - "type": 24 - }, - "Next": { - "field": "m_pNext", - "classname": "CEntityIdentity", - "type": 24 - }, - "PrevByClass": { - "field": "m_pPrevByClass", - "classname": "CEntityIdentity", - "type": 24 - }, - "NextByClass": { - "field": "m_pNextByClass", - "classname": "CEntityIdentity", - "type": 24 - } - }, - "CEntityInstance": { - "PrivateVScripts": { - "field": "m_iszPrivateVScripts", - "type": 13 - }, - "Entity": { - "field": "m_pEntity", - "classname": "CEntityIdentity", - "type": 24 - }, - "CScriptComponent": { - "field": "m_CScriptComponent", - "classname": "CScriptComponent", - "type": 24 - }, - "VisibleinPVS": { - "field": "m_bVisibleinPVS", - "type": 10 - } - }, - "CNetworkVarChainer": { - "PathIndex": { - "field": "m_PathIndex", - "classname": "ChangeAccessorFieldPathIndex_t", - "type": 16 - } - }, - "CScriptComponent": { - "ScriptClassName": { - "field": "m_scriptClassName", - "type": 13 - }, - "Parent": { - "field": "CEntityComponent", - "type": 11 - } - }, - "CVariantDefaultAllocator": {}, - "EntComponentInfo_t": { - "Name": { - "field": "m_pName", - "type": 15 - }, - "CPPClassname": { - "field": "m_pCPPClassname", - "type": 15 - }, - "NetworkDataReferencedDescription": { - "field": "m_pNetworkDataReferencedDescription", - "type": 15 - }, - "NetworkDataReferencedPtrPropDescription": { - "field": "m_pNetworkDataReferencedPtrPropDescription", - "type": 15 - }, - "RuntimeIndex": { - "field": "m_nRuntimeIndex", - "type": 2 - }, - "Flags": { - "field": "m_nFlags", - "type": 6 - }, - "BaseClassComponentHelper": { - "field": "m_pBaseClassComponentHelper", - "classname": "CEntityComponentHelper", - "type": 24 - } - }, - "EntInput_t": {}, - "EntOutput_t": {}, - "CAnimScriptBase": { - "IsValid": { - "field": "m_bIsValid", - "type": 10 - } - }, - "MaterialParamBuffer_t": { - "Parent": { - "field": "MaterialParam_t", - "type": 11 - } - }, - "MaterialParamFloat_t": { - "Value": { - "field": "m_flValue", - "type": 8 - }, - "Parent": { - "field": "MaterialParam_t", - "type": 11 - } - }, - "MaterialParamInt_t": { - "Value": { - "field": "m_nValue", - "type": 2 - }, - "Parent": { - "field": "MaterialParam_t", - "type": 11 - } - }, - "MaterialParamString_t": { - "Value": { - "field": "m_value", - "type": 14 - }, - "Parent": { - "field": "MaterialParam_t", - "type": 11 - } - }, - "MaterialParamTexture_t": { - "Parent": { - "field": "MaterialParam_t", - "type": 11 - } - }, - "MaterialParamVector_t": { - "Value": { - "field": "m_value", - "type": 23 - }, - "Parent": { - "field": "MaterialParam_t", - "type": 11 - } - }, - "MaterialParam_t": { - "Name": { - "field": "m_name", - "type": 14 - } - }, - "MaterialResourceData_t": { - "MaterialName": { - "field": "m_materialName", - "type": 14 - }, - "ShaderName": { - "field": "m_shaderName", - "type": 14 - }, - "RenderAttributesUsed": { - "field": "m_renderAttributesUsed", - "type": 50 - } - }, - "PostProcessingBloomParameters_t": { - "BlendMode": { - "field": "m_blendMode", - "type": 6 - }, - "BloomStrength": { - "field": "m_flBloomStrength", - "type": 8 - }, - "ScreenBloomStrength": { - "field": "m_flScreenBloomStrength", - "type": 8 - }, - "BlurBloomStrength": { - "field": "m_flBlurBloomStrength", - "type": 8 - }, - "BloomThreshold": { - "field": "m_flBloomThreshold", - "type": 8 - }, - "BloomThresholdWidth": { - "field": "m_flBloomThresholdWidth", - "type": 8 - }, - "SkyboxBloomStrength": { - "field": "m_flSkyboxBloomStrength", - "type": 8 - }, - "BloomStartValue": { - "field": "m_flBloomStartValue", - "type": 8 - }, - "BlurWeight": { - "field": "m_flBlurWeight", - "type": 37, - "size": 5 - }, - "BlurTint": { - "field": "m_vBlurTint", - "type": 42, - "size": 5 - } - }, - "PostProcessingLocalContrastParameters_t": { - "LocalContrastStrength": { - "field": "m_flLocalContrastStrength", - "type": 8 - }, - "LocalContrastEdgeStrength": { - "field": "m_flLocalContrastEdgeStrength", - "type": 8 - }, - "LocalContrastVignetteStart": { - "field": "m_flLocalContrastVignetteStart", - "type": 8 - }, - "LocalContrastVignetteEnd": { - "field": "m_flLocalContrastVignetteEnd", - "type": 8 - }, - "LocalContrastVignetteBlur": { - "field": "m_flLocalContrastVignetteBlur", - "type": 8 - } - }, - "PostProcessingResource_t": { - "HasTonemapParams": { - "field": "m_bHasTonemapParams", - "type": 10 - }, - "ToneMapParams": { - "field": "m_toneMapParams", - "classname": "PostProcessingTonemapParameters_t", - "type": 16 - }, - "HasBloomParams": { - "field": "m_bHasBloomParams", - "type": 10 - }, - "BloomParams": { - "field": "m_bloomParams", - "classname": "PostProcessingBloomParameters_t", - "type": 16 - }, - "HasVignetteParams": { - "field": "m_bHasVignetteParams", - "type": 10 - }, - "VignetteParams": { - "field": "m_vignetteParams", - "classname": "PostProcessingVignetteParameters_t", - "type": 16 - }, - "HasLocalContrastParams": { - "field": "m_bHasLocalContrastParams", - "type": 10 - }, - "LocalConstrastParams": { - "field": "m_localConstrastParams", - "classname": "PostProcessingLocalContrastParameters_t", - "type": 16 - }, - "ColorCorrectionVolumeDim": { - "field": "m_nColorCorrectionVolumeDim", - "type": 2 - }, - "HasColorCorrection": { - "field": "m_bHasColorCorrection", - "type": 10 - } - }, - "PostProcessingTonemapParameters_t": { - "ExposureBias": { - "field": "m_flExposureBias", - "type": 8 - }, - "ShoulderStrength": { - "field": "m_flShoulderStrength", - "type": 8 - }, - "LinearStrength": { - "field": "m_flLinearStrength", - "type": 8 - }, - "LinearAngle": { - "field": "m_flLinearAngle", - "type": 8 - }, - "ToeStrength": { - "field": "m_flToeStrength", - "type": 8 - }, - "ToeNum": { - "field": "m_flToeNum", - "type": 8 - }, - "ToeDenom": { - "field": "m_flToeDenom", - "type": 8 - }, - "WhitePoint": { - "field": "m_flWhitePoint", - "type": 8 - }, - "LuminanceSource": { - "field": "m_flLuminanceSource", - "type": 8 - }, - "ExposureBiasShadows": { - "field": "m_flExposureBiasShadows", - "type": 8 - }, - "ExposureBiasHighlights": { - "field": "m_flExposureBiasHighlights", - "type": 8 - }, - "MinShadowLum": { - "field": "m_flMinShadowLum", - "type": 8 - }, - "MaxShadowLum": { - "field": "m_flMaxShadowLum", - "type": 8 - }, - "MinHighlightLum": { - "field": "m_flMinHighlightLum", - "type": 8 - }, - "MaxHighlightLum": { - "field": "m_flMaxHighlightLum", - "type": 8 - } - }, - "PostProcessingVignetteParameters_t": { - "VignetteStrength": { - "field": "m_flVignetteStrength", - "type": 8 - }, - "Center": { - "field": "m_vCenter", - "type": 22 - }, - "Radius": { - "field": "m_flRadius", - "type": 8 - }, - "Roundness": { - "field": "m_flRoundness", - "type": 8 - }, - "Feather": { - "field": "m_flFeather", - "type": 8 - }, - "ColorTint": { - "field": "m_vColorTint", - "type": 21 - } - }, - "AABB_t": { - "MinBounds": { - "field": "m_vMinBounds", - "type": 21 - }, - "MaxBounds": { - "field": "m_vMaxBounds", - "type": 21 - } - }, - "CFuseProgram": { - "ProgramBuffer": { - "field": "m_programBuffer", - "type": 55 - }, - "MaxTempVarsUsed": { - "field": "m_nMaxTempVarsUsed", - "type": 2 - } - }, - "CFuseSymbolTable": {}, - "ConstantInfo_t": { - "Name": { - "field": "m_name", - "type": 14 - }, - "NameToken": { - "field": "m_nameToken", - "type": 12 - }, - "Value": { - "field": "m_flValue", - "type": 8 - } - }, - "FunctionInfo_t": { - "Name": { - "field": "m_name", - "type": 14 - }, - "NameToken": { - "field": "m_nameToken", - "type": 12 - }, - "ParamCount": { - "field": "m_nParamCount", - "type": 2 - }, - "Index": { - "field": "m_nIndex", - "classname": "FuseFunctionIndex_t", - "type": 16 - }, - "IsPure": { - "field": "m_bIsPure", - "type": 10 - } - }, - "FuseFunctionIndex_t": { - "Value": { - "field": "m_Value", - "type": 5 - } - }, - "FuseVariableIndex_t": { - "Value": { - "field": "m_Value", - "type": 5 - } - }, - "VariableInfo_t": { - "Name": { - "field": "m_name", - "type": 14 - }, - "NameToken": { - "field": "m_nameToken", - "type": 12 - }, - "Index": { - "field": "m_nIndex", - "classname": "FuseVariableIndex_t", - "type": 16 - }, - "NumComponents": { - "field": "m_nNumComponents", - "type": 4 - }, - "VarType": { - "field": "m_eVarType", - "type": 4 - }, - "Access": { - "field": "m_eAccess", - "type": 4 - } - }, - "AnimComponentID": { - "Id": { - "field": "m_id", - "type": 6 - } - }, - "AnimNodeID": { - "Id": { - "field": "m_id", - "type": 6 - } - }, - "AnimNodeOutputID": { - "Id": { - "field": "m_id", - "type": 6 - } - }, - "AnimParamID": { - "Id": { - "field": "m_id", - "type": 6 - } - }, - "AnimScriptHandle": { - "Id": { - "field": "m_id", - "type": 6 - } - }, - "AnimStateID": { - "Id": { - "field": "m_id", - "type": 6 - } - }, - "AnimTagID": { - "Id": { - "field": "m_id", - "type": 6 - } - }, - "CAimConstraint": { - "UpType": { - "field": "m_nUpType", - "type": 6 - }, - "Parent": { - "field": "CBaseConstraint", - "type": 11 - } - }, - "CAnimAttachment": { - "InfluenceOffsets": { - "field": "m_influenceOffsets", - "type": 42, - "size": 3 - }, - "InfluenceIndices": { - "field": "m_influenceIndices", - "type": 31, - "size": 3 - }, - "InfluenceWeights": { - "field": "m_influenceWeights", - "type": 37, - "size": 3 - }, - "NumInfluences": { - "field": "m_numInfluences", - "type": 4 - } - }, - "CAnimCycle": { - "Parent": { - "field": "CCycleBase", - "type": 11 - } - }, - "CAnimFoot": { - "Name": { - "field": "m_name", - "type": 14 - }, - "BallOffset": { - "field": "m_vBallOffset", - "type": 21 - }, - "HeelOffset": { - "field": "m_vHeelOffset", - "type": 21 - }, - "AnkleBoneIndex": { - "field": "m_ankleBoneIndex", - "type": 2 - }, - "ToeBoneIndex": { - "field": "m_toeBoneIndex", - "type": 2 - } - }, - "CAnimSkeleton": { - "BoneNames": { - "field": "m_boneNames", - "type": 50 - }, - "Parents": { - "field": "m_parents", - "type": 53 - }, - "MorphNames": { - "field": "m_morphNames", - "type": 50 - }, - "LodBoneCounts": { - "field": "m_lodBoneCounts", - "type": 53 - } - }, - "CAttachment": { - "Name": { - "field": "m_name", - "type": 14 - }, - "InfluenceNames": { - "field": "m_influenceNames", - "type": 28, - "size": 3 - }, - "InfluenceOffsets": { - "field": "m_vInfluenceOffsets", - "type": 42, - "size": 3 - }, - "InfluenceWeights": { - "field": "m_influenceWeights", - "type": 37, - "size": 3 - }, - "InfluenceRootTransform": { - "field": "m_bInfluenceRootTransform", - "type": 39, - "size": 3 - }, - "Influences": { - "field": "m_nInfluences", - "type": 4 - }, - "IgnoreRotation": { - "field": "m_bIgnoreRotation", - "type": 10 - } - }, - "CBaseConstraint": { - "Name": { - "field": "m_name", - "type": 14 - }, - "UpVector": { - "field": "m_vUpVector", - "type": 21 - }, - "Parent": { - "field": "CBoneConstraintBase", - "type": 11 - } - }, - "CBoneConstraintBase": {}, - "CBoneConstraintDotToMorph": { - "BoneName": { - "field": "m_sBoneName", - "type": 14 - }, - "TargetBoneName": { - "field": "m_sTargetBoneName", - "type": 14 - }, - "MorphChannelName": { - "field": "m_sMorphChannelName", - "type": 14 - }, - "Remap": { - "field": "m_flRemap", - "type": 37, - "size": 4 - }, - "Parent": { - "field": "CBoneConstraintBase", - "type": 11 - } - }, - "CBoneConstraintPoseSpaceBone": { - "Parent": { - "field": "CBaseConstraint", - "type": 11 - } - }, - "CBoneConstraintPoseSpaceMorph": { - "BoneName": { - "field": "m_sBoneName", - "type": 14 - }, - "AttachmentName": { - "field": "m_sAttachmentName", - "type": 14 - }, - "OutputMorph": { - "field": "m_outputMorph", - "type": 50 - }, - "Clamp": { - "field": "m_bClamp", - "type": 10 - }, - "Parent": { - "field": "CBoneConstraintBase", - "type": 11 - } - }, - "CConstraintSlave": { - "BasePosition": { - "field": "m_vBasePosition", - "type": 21 - }, - "BoneHash": { - "field": "m_nBoneHash", - "type": 6 - }, - "Weight": { - "field": "m_flWeight", - "type": 8 - }, - "Name": { - "field": "m_sName", - "type": 14 - } - }, - "CConstraintTarget": { - "Offset": { - "field": "m_vOffset", - "type": 21 - }, - "BoneHash": { - "field": "m_nBoneHash", - "type": 6 - }, - "Name": { - "field": "m_sName", - "type": 14 - }, - "Weight": { - "field": "m_flWeight", - "type": 8 - }, - "IsAttachment": { - "field": "m_bIsAttachment", - "type": 10 - } - }, - "CCycleBase": { - "Cycle": { - "field": "m_flCycle", - "type": 8 - } - }, - "CDrawCullingData": { - "ConeApex": { - "field": "m_vConeApex", - "type": 21 - }, - "ConeAxis": { - "field": "m_ConeAxis", - "type": 29, - "size": 3 - }, - "ConeCutoff": { - "field": "m_ConeCutoff", - "type": 0 - } - }, - "CFlexController": { - "Name": { - "field": "m_szName", - "type": 14 - }, - "Type": { - "field": "m_szType", - "type": 14 - }, - "Min": { - "field": "min", - "type": 8 - }, - "Max": { - "field": "max", - "type": 8 - } - }, - "CFlexDesc": { - "Facs": { - "field": "m_szFacs", - "type": 14 - } - }, - "CFlexOp": { - "OpCode": { - "field": "m_OpCode", - "type": 6 - }, - "Data": { - "field": "m_Data", - "type": 2 - } - }, - "CFlexRule": { - "Flex": { - "field": "m_nFlex", - "type": 2 - } - }, - "CFootCycle": { - "Parent": { - "field": "CCycleBase", - "type": 11 - } - }, - "CFootCycleDefinition": { - "StancePositionMS": { - "field": "m_vStancePositionMS", - "type": 21 - }, - "MidpointPositionMS": { - "field": "m_vMidpointPositionMS", - "type": 21 - }, - "StanceDirectionMS": { - "field": "m_flStanceDirectionMS", - "type": 8 - }, - "ToStrideStartPos": { - "field": "m_vToStrideStartPos", - "type": 21 - }, - "StanceCycle": { - "field": "m_stanceCycle", - "classname": "CAnimCycle", - "type": 16 - }, - "FootLiftCycle": { - "field": "m_footLiftCycle", - "classname": "CFootCycle", - "type": 16 - }, - "FootOffCycle": { - "field": "m_footOffCycle", - "classname": "CFootCycle", - "type": 16 - }, - "FootStrikeCycle": { - "field": "m_footStrikeCycle", - "classname": "CFootCycle", - "type": 16 - }, - "FootLandCycle": { - "field": "m_footLandCycle", - "classname": "CFootCycle", - "type": 16 - } - }, - "CFootDefinition": { - "Name": { - "field": "m_name", - "type": 14 - }, - "AnkleBoneName": { - "field": "m_ankleBoneName", - "type": 14 - }, - "ToeBoneName": { - "field": "m_toeBoneName", - "type": 14 - }, - "BallOffset": { - "field": "m_vBallOffset", - "type": 21 - }, - "HeelOffset": { - "field": "m_vHeelOffset", - "type": 21 - }, - "FootLength": { - "field": "m_flFootLength", - "type": 8 - }, - "BindPoseDirectionMS": { - "field": "m_flBindPoseDirectionMS", - "type": 8 - }, - "TraceHeight": { - "field": "m_flTraceHeight", - "type": 8 - }, - "TraceRadius": { - "field": "m_flTraceRadius", - "type": 8 - } - }, - "CFootMotion": { - "Name": { - "field": "m_name", - "type": 14 - }, - "Additive": { - "field": "m_bAdditive", - "type": 10 - } - }, - "CFootStride": { - "Definition": { - "field": "m_definition", - "classname": "CFootCycleDefinition", - "type": 16 - }, - "Trajectories": { - "field": "m_trajectories", - "classname": "CFootTrajectories", - "type": 16 - } - }, - "CFootTrajectories": {}, - "CFootTrajectory": { - "Offset": { - "field": "m_vOffset", - "type": 21 - }, - "RotationOffset": { - "field": "m_flRotationOffset", - "type": 8 - }, - "Progression": { - "field": "m_flProgression", - "type": 8 - } - }, - "CHitBox": { - "Name": { - "field": "m_name", - "type": 14 - }, - "SurfaceProperty": { - "field": "m_sSurfaceProperty", - "type": 14 - }, - "BoneName": { - "field": "m_sBoneName", - "type": 14 - }, - "MinBounds": { - "field": "m_vMinBounds", - "type": 21 - }, - "MaxBounds": { - "field": "m_vMaxBounds", - "type": 21 - }, - "ShapeRadius": { - "field": "m_flShapeRadius", - "type": 8 - }, - "BoneNameHash": { - "field": "m_nBoneNameHash", - "type": 6 - }, - "GroupId": { - "field": "m_nGroupId", - "type": 2 - }, - "ShapeType": { - "field": "m_nShapeType", - "type": 4 - }, - "TranslationOnly": { - "field": "m_bTranslationOnly", - "type": 10 - }, - "CRC": { - "field": "m_CRC", - "type": 6 - }, - "CRenderColor": { - "field": "m_cRenderColor", - "type": 19 - }, - "HitBoxIndex": { - "field": "m_nHitBoxIndex", - "type": 5 - } - }, - "CHitBoxSet": { - "Name": { - "field": "m_name", - "type": 14 - }, - "NameHash": { - "field": "m_nNameHash", - "type": 6 - }, - "SourceFilename": { - "field": "m_SourceFilename", - "type": 14 - } - }, - "CHitBoxSetList": {}, - "CMaterialDrawDescriptor": { - "UvDensity": { - "field": "m_flUvDensity", - "type": 8 - }, - "TintColor": { - "field": "m_vTintColor", - "type": 21 - }, - "Alpha": { - "field": "m_flAlpha", - "type": 8 - }, - "NumMeshlets": { - "field": "m_nNumMeshlets", - "type": 5 - }, - "FirstMeshlet": { - "field": "m_nFirstMeshlet", - "type": 6 - }, - "PrimitiveType": { - "field": "m_nPrimitiveType", - "type": 6 - }, - "BaseVertex": { - "field": "m_nBaseVertex", - "type": 2 - }, - "VertexCount": { - "field": "m_nVertexCount", - "type": 2 - }, - "StartIndex": { - "field": "m_nStartIndex", - "type": 2 - }, - "IndexCount": { - "field": "m_nIndexCount", - "type": 2 - }, - "IndexBuffer": { - "field": "m_indexBuffer", - "classname": "CRenderBufferBinding", - "type": 16 - } - }, - "CMeshletDescriptor": { - "CullingData": { - "field": "m_CullingData", - "classname": "CDrawCullingData", - "type": 16 - } - }, - "CModelConfig": { - "ConfigName": { - "field": "m_ConfigName", - "type": 14 - }, - "TopLevel": { - "field": "m_bTopLevel", - "type": 10 - } - }, - "CModelConfigElement": { - "ElementName": { - "field": "m_ElementName", - "type": 14 - } - }, - "CModelConfigElement_AttachedModel": { - "InstanceName": { - "field": "m_InstanceName", - "type": 14 - }, - "EntityClass": { - "field": "m_EntityClass", - "type": 14 - }, - "Offset": { - "field": "m_vOffset", - "type": 21 - }, - "AngOffset": { - "field": "m_aAngOffset", - "type": 20 - }, - "AttachmentName": { - "field": "m_AttachmentName", - "type": 14 - }, - "LocalAttachmentOffsetName": { - "field": "m_LocalAttachmentOffsetName", - "type": 14 - }, - "AttachmentType": { - "field": "m_AttachmentType", - "type": 6 - }, - "BoneMergeFlex": { - "field": "m_bBoneMergeFlex", - "type": 10 - }, - "UserSpecifiedColor": { - "field": "m_bUserSpecifiedColor", - "type": 10 - }, - "UserSpecifiedMaterialGroup": { - "field": "m_bUserSpecifiedMaterialGroup", - "type": 10 - }, - "AcceptParentMaterialDrivenDecals": { - "field": "m_bAcceptParentMaterialDrivenDecals", - "type": 10 - }, - "BodygroupOnOtherModels": { - "field": "m_BodygroupOnOtherModels", - "type": 14 - }, - "MaterialGroupOnOtherModels": { - "field": "m_MaterialGroupOnOtherModels", - "type": 14 - }, - "Parent": { - "field": "CModelConfigElement", - "type": 11 - } - }, - "CModelConfigElement_Command": { - "Command": { - "field": "m_Command", - "type": 14 - }, - "Parent": { - "field": "CModelConfigElement", - "type": 11 - } - }, - "CModelConfigElement_RandomColor": { - "Parent": { - "field": "CModelConfigElement", - "type": 11 - } - }, - "CModelConfigElement_RandomPick": { - "Choices": { - "field": "m_Choices", - "type": 50 - }, - "ChoiceWeights": { - "field": "m_ChoiceWeights", - "type": 59 - }, - "Parent": { - "field": "CModelConfigElement", - "type": 11 - } - }, - "CModelConfigElement_SetBodygroup": { - "GroupName": { - "field": "m_GroupName", - "type": 14 - }, - "Choice": { - "field": "m_nChoice", - "type": 2 - }, - "Parent": { - "field": "CModelConfigElement", - "type": 11 - } - }, - "CModelConfigElement_SetBodygroupOnAttachedModels": { - "GroupName": { - "field": "m_GroupName", - "type": 14 - }, - "Choice": { - "field": "m_nChoice", - "type": 2 - }, - "Parent": { - "field": "CModelConfigElement", - "type": 11 - } - }, - "CModelConfigElement_SetMaterialGroup": { - "MaterialGroupName": { - "field": "m_MaterialGroupName", - "type": 14 - }, - "Parent": { - "field": "CModelConfigElement", - "type": 11 - } - }, - "CModelConfigElement_SetMaterialGroupOnAttachedModels": { - "MaterialGroupName": { - "field": "m_MaterialGroupName", - "type": 14 - }, - "Parent": { - "field": "CModelConfigElement", - "type": 11 - } - }, - "CModelConfigElement_SetRenderColor": { - "Color": { - "field": "m_Color", - "type": 19 - }, - "Parent": { - "field": "CModelConfigElement", - "type": 11 - } - }, - "CModelConfigElement_UserPick": { - "Choices": { - "field": "m_Choices", - "type": 50 - }, - "Parent": { - "field": "CModelConfigElement", - "type": 11 - } - }, - "CModelConfigList": { - "HideMaterialGroupInTools": { - "field": "m_bHideMaterialGroupInTools", - "type": 10 - }, - "HideRenderColorInTools": { - "field": "m_bHideRenderColorInTools", - "type": 10 - } - }, - "CMorphBundleData": { - "ULeftSrc": { - "field": "m_flULeftSrc", - "type": 8 - }, - "VTopSrc": { - "field": "m_flVTopSrc", - "type": 8 - }, - "Offsets": { - "field": "m_offsets", - "type": 59 - }, - "Ranges": { - "field": "m_ranges", - "type": 59 - } - }, - "CMorphConstraint": { - "TargetMorph": { - "field": "m_sTargetMorph", - "type": 14 - }, - "SlaveChannel": { - "field": "m_nSlaveChannel", - "type": 2 - }, - "Min": { - "field": "m_flMin", - "type": 8 - }, - "Max": { - "field": "m_flMax", - "type": 8 - }, - "Parent": { - "field": "CBaseConstraint", - "type": 11 - } - }, - "CMorphData": { - "Name": { - "field": "m_name", - "type": 14 - } - }, - "CMorphRectData": { - "XLeftDst": { - "field": "m_nXLeftDst", - "type": 1 - }, - "YTopDst": { - "field": "m_nYTopDst", - "type": 1 - }, - "UWidthSrc": { - "field": "m_flUWidthSrc", - "type": 8 - }, - "VHeightSrc": { - "field": "m_flVHeightSrc", - "type": 8 - } - }, - "CMorphSetData": { - "Width": { - "field": "m_nWidth", - "type": 2 - }, - "Height": { - "field": "m_nHeight", - "type": 2 - }, - "BundleTypes": { - "field": "m_bundleTypes", - "type": 57 - } - }, - "COrientConstraint": { - "Parent": { - "field": "CBaseConstraint", - "type": 11 - } - }, - "CParentConstraint": { - "Parent": { - "field": "CBaseConstraint", - "type": 11 - } - }, - "CPhysSurfaceProperties": { - "Name": { - "field": "m_name", - "type": 14 - }, - "NameHash": { - "field": "m_nameHash", - "type": 6 - }, - "BaseNameHash": { - "field": "m_baseNameHash", - "type": 6 - }, - "Hidden": { - "field": "m_bHidden", - "type": 10 - }, - "Description": { - "field": "m_description", - "type": 14 - }, - "Physics": { - "field": "m_physics", - "classname": "CPhysSurfacePropertiesPhysics", - "type": 16 - }, - "AudioSounds": { - "field": "m_audioSounds", - "classname": "CPhysSurfacePropertiesSoundNames", - "type": 16 - }, - "AudioParams": { - "field": "m_audioParams", - "classname": "CPhysSurfacePropertiesAudio", - "type": 16 - } - }, - "CPhysSurfacePropertiesAudio": { - "Reflectivity": { - "field": "m_reflectivity", - "type": 8 - }, - "HardnessFactor": { - "field": "m_hardnessFactor", - "type": 8 - }, - "RoughnessFactor": { - "field": "m_roughnessFactor", - "type": 8 - }, - "RoughThreshold": { - "field": "m_roughThreshold", - "type": 8 - }, - "HardThreshold": { - "field": "m_hardThreshold", - "type": 8 - }, - "HardVelocityThreshold": { - "field": "m_hardVelocityThreshold", - "type": 8 - }, - "StaticImpactVolume": { - "field": "m_flStaticImpactVolume", - "type": 8 - }, - "OcclusionFactor": { - "field": "m_flOcclusionFactor", - "type": 8 - } - }, - "CPhysSurfacePropertiesPhysics": { - "Friction": { - "field": "m_friction", - "type": 8 - }, - "Elasticity": { - "field": "m_elasticity", - "type": 8 - }, - "Density": { - "field": "m_density", - "type": 8 - }, - "Thickness": { - "field": "m_thickness", - "type": 8 - }, - "SoftContactFrequency": { - "field": "m_softContactFrequency", - "type": 8 - }, - "SoftContactDampingRatio": { - "field": "m_softContactDampingRatio", - "type": 8 - }, - "WheelDrag": { - "field": "m_wheelDrag", - "type": 8 - }, - "HeatConductivity": { - "field": "m_heatConductivity", - "type": 8 - }, - "Flashpoint": { - "field": "m_flashpoint", - "type": 8 - } - }, - "CPhysSurfacePropertiesSoundNames": { - "ImpactSoft": { - "field": "m_impactSoft", - "type": 14 - }, - "ImpactHard": { - "field": "m_impactHard", - "type": 14 - }, - "ScrapeSmooth": { - "field": "m_scrapeSmooth", - "type": 14 - }, - "ScrapeRough": { - "field": "m_scrapeRough", - "type": 14 - }, - "BulletImpact": { - "field": "m_bulletImpact", - "type": 14 - }, - "Rolling": { - "field": "m_rolling", - "type": 14 - }, - "Break": { - "field": "m_break", - "type": 14 - }, - "Strain": { - "field": "m_strain", - "type": 14 - }, - "MeleeImpact": { - "field": "m_meleeImpact", - "type": 14 - }, - "PushOff": { - "field": "m_pushOff", - "type": 14 - }, - "SkidStop": { - "field": "m_skidStop", - "type": 14 - } - }, - "CPointConstraint": { - "Parent": { - "field": "CBaseConstraint", - "type": 11 - } - }, - "CRenderBufferBinding": { - "Buffer": { - "field": "m_hBuffer", - "type": 7 - }, - "BindOffsetBytes": { - "field": "m_nBindOffsetBytes", - "type": 6 - } - }, - "CRenderGroom": { - "HairPositionOffsets": { - "field": "m_hairPositionOffsets", - "type": 57 - }, - "SegmentsPerHairStrand": { - "field": "m_nSegmentsPerHairStrand", - "type": 2 - }, - "GuideHairCount": { - "field": "m_nGuideHairCount", - "type": 2 - }, - "HairCount": { - "field": "m_nHairCount", - "type": 2 - }, - "GroomGroupID": { - "field": "m_nGroomGroupID", - "type": 2 - }, - "AttachBoneIdx": { - "field": "m_nAttachBoneIdx", - "type": 2 - }, - "AttachMeshIdx": { - "field": "m_nAttachMeshIdx", - "type": 2 - }, - "AttachMeshDrawCallIdx": { - "field": "m_nAttachMeshDrawCallIdx", - "type": 2 - }, - "EnableSimulation": { - "field": "m_bEnableSimulation", - "type": 10 - } - }, - "CRenderMesh": { - "Skeleton": { - "field": "m_skeleton", - "classname": "CRenderSkeleton", - "type": 16 - }, - "MeshDeformParams": { - "field": "m_meshDeformParams", - "classname": "DynamicMeshDeformParams_t", - "type": 16 - }, - "GroomData": { - "field": "m_pGroomData", - "classname": "CRenderGroom", - "type": 24 - } - }, - "CRenderSkeleton": { - "BoneParents": { - "field": "m_boneParents", - "type": 53 - }, - "BoneWeightCount": { - "field": "m_nBoneWeightCount", - "type": 2 - } - }, - "CSceneObjectData": { - "MinBounds": { - "field": "m_vMinBounds", - "type": 21 - }, - "MaxBounds": { - "field": "m_vMaxBounds", - "type": 21 - }, - "TintColor": { - "field": "m_vTintColor", - "type": 23 - } - }, - "CTiltTwistConstraint": { - "TargetAxis": { - "field": "m_nTargetAxis", - "type": 2 - }, - "SlaveAxis": { - "field": "m_nSlaveAxis", - "type": 2 - }, - "Parent": { - "field": "CBaseConstraint", - "type": 11 - } - }, - "CTwistConstraint": { - "Inverse": { - "field": "m_bInverse", - "type": 10 - }, - "Parent": { - "field": "CBaseConstraint", - "type": 11 - } - }, - "CVPhysXSurfacePropertiesList": {}, - "DynamicMeshDeformParams_t": { - "TensionCompressScale": { - "field": "m_flTensionCompressScale", - "type": 8 - }, - "TensionStretchScale": { - "field": "m_flTensionStretchScale", - "type": 8 - }, - "RecomputeSmoothNormalsAfterAnimation": { - "field": "m_bRecomputeSmoothNormalsAfterAnimation", - "type": 10 - }, - "ComputeDynamicMeshTensionAfterAnimation": { - "field": "m_bComputeDynamicMeshTensionAfterAnimation", - "type": 10 - }, - "SmoothNormalsAcrossUvSeams": { - "field": "m_bSmoothNormalsAcrossUvSeams", - "type": 10 - } - }, - "MaterialGroup_t": { - "Name": { - "field": "m_name", - "type": 14 - } - }, - "ModelBoneFlexDriverControl_t": { - "BoneComponent": { - "field": "m_nBoneComponent", - "type": 6 - }, - "FlexController": { - "field": "m_flexController", - "type": 14 - }, - "FlexControllerToken": { - "field": "m_flexControllerToken", - "type": 6 - }, - "Min": { - "field": "m_flMin", - "type": 8 - }, - "Max": { - "field": "m_flMax", - "type": 8 - } - }, - "ModelBoneFlexDriver_t": { - "BoneName": { - "field": "m_boneName", - "type": 14 - }, - "BoneNameToken": { - "field": "m_boneNameToken", - "type": 6 - } - }, - "ModelSkeletonData_t": { - "BoneName": { - "field": "m_boneName", - "type": 50 - }, - "Parent": { - "field": "m_nParent", - "type": 52 - }, - "BoneSphere": { - "field": "m_boneSphere", - "type": 59 - }, - "Flag": { - "field": "m_nFlag", - "type": 57 - }, - "BonePosParent": { - "field": "m_bonePosParent", - "type": 63 - }, - "BoneScaleParent": { - "field": "m_boneScaleParent", - "type": 59 - } - }, - "PermModelDataAnimatedMaterialAttribute_t": { - "AttributeName": { - "field": "m_AttributeName", - "type": 14 - }, - "NumChannels": { - "field": "m_nNumChannels", - "type": 2 - } - }, - "PermModelData_t": { - "Name": { - "field": "m_name", - "type": 14 - }, - "ModelInfo": { - "field": "m_modelInfo", - "classname": "PermModelInfo_t", - "type": 16 - }, - "RefMeshGroupMasks": { - "field": "m_refMeshGroupMasks", - "type": 58 - }, - "RefPhysGroupMasks": { - "field": "m_refPhysGroupMasks", - "type": 58 - }, - "RefLODGroupMasks": { - "field": "m_refLODGroupMasks", - "type": 55 - }, - "LodGroupSwitchDistances": { - "field": "m_lodGroupSwitchDistances", - "type": 59 - }, - "MeshGroups": { - "field": "m_meshGroups", - "type": 50 - }, - "DefaultMeshGroupMask": { - "field": "m_nDefaultMeshGroupMask", - "type": 7 - }, - "ModelSkeleton": { - "field": "m_modelSkeleton", - "classname": "ModelSkeletonData_t", - "type": 16 - }, - "RemappingTable": { - "field": "m_remappingTable", - "type": 52 - }, - "RemappingTableStarts": { - "field": "m_remappingTableStarts", - "type": 56 - }, - "ModelConfigList": { - "field": "m_pModelConfigList", - "classname": "CModelConfigList", - "type": 24 - }, - "BodyGroupsHiddenInTools": { - "field": "m_BodyGroupsHiddenInTools", - "type": 50 - } - }, - "PermModelExtPart_t": { - "Name": { - "field": "m_Name", - "type": 14 - }, - "Parent": { - "field": "m_nParent", - "type": 2 - } - }, - "PermModelInfo_t": { - "Flags": { - "field": "m_nFlags", - "type": 6 - }, - "HullMin": { - "field": "m_vHullMin", - "type": 21 - }, - "HullMax": { - "field": "m_vHullMax", - "type": 21 - }, - "ViewMin": { - "field": "m_vViewMin", - "type": 21 - }, - "ViewMax": { - "field": "m_vViewMax", - "type": 21 - }, - "Mass": { - "field": "m_flMass", - "type": 8 - }, - "EyePosition": { - "field": "m_vEyePosition", - "type": 21 - }, - "MaxEyeDeflection": { - "field": "m_flMaxEyeDeflection", - "type": 8 - }, - "SurfaceProperty": { - "field": "m_sSurfaceProperty", - "type": 14 - }, - "KeyValueText": { - "field": "m_keyValueText", - "type": 14 - } - }, - "PhysSoftbodyDesc_t": { - "ParticleBoneHash": { - "field": "m_ParticleBoneHash", - "type": 57 - }, - "ParticleBoneName": { - "field": "m_ParticleBoneName", - "type": 50 - } - }, - "RenderHairStrandInfo_t": { - "GuideHairIndices_nSurfaceTriIndex": { - "field": "m_nGuideHairIndices_nSurfaceTriIndex", - "type": 35, - "size": 2 - }, - "GuideBary_vBaseBary": { - "field": "m_vGuideBary_vBaseBary", - "type": 34, - "size": 4 - }, - "RootOffset_flLengthScale": { - "field": "m_vRootOffset_flLengthScale", - "type": 34, - "size": 4 - }, - "PackedBaseUv": { - "field": "m_nPackedBaseUv", - "type": 34, - "size": 2 - }, - "PackedSurfaceNormalOs": { - "field": "m_nPackedSurfaceNormalOs", - "type": 6 - }, - "PackedSurfaceTangentOs": { - "field": "m_nPackedSurfaceTangentOs", - "type": 6 - } - }, - "RenderSkeletonBone_t": { - "BoneName": { - "field": "m_boneName", - "type": 14 - }, - "ParentName": { - "field": "m_parentName", - "type": 14 - }, - "Bbox": { - "field": "m_bbox", - "classname": "SkeletonBoneBounds_t", - "type": 16 - }, - "SphereRadius": { - "field": "m_flSphereRadius", - "type": 8 - } - }, - "SkeletonAnimCapture_t": { - "EntIndex": { - "field": "m_nEntIndex", - "type": 2 - }, - "EntParent": { - "field": "m_nEntParent", - "type": 2 - }, - "ImportedCollision": { - "field": "m_ImportedCollision", - "type": 53 - }, - "ModelName": { - "field": "m_ModelName", - "type": 14 - }, - "CaptureName": { - "field": "m_CaptureName", - "type": 14 - }, - "FlexControllers": { - "field": "m_nFlexControllers", - "type": 2 - }, - "Predicted": { - "field": "m_bPredicted", - "type": 10 - } - }, - "SkeletonBoneBounds_t": { - "Center": { - "field": "m_vecCenter", - "type": 21 - }, - "Size": { - "field": "m_vecSize", - "type": 21 - } - }, - "SkeletonDemoDb_t": { - "RecordingTime": { - "field": "m_flRecordingTime", - "type": 8 - } - }, - "VPhysXAggregateData_t": { - "Flags": { - "field": "m_nFlags", - "type": 5 - }, - "RefCounter": { - "field": "m_nRefCounter", - "type": 5 - }, - "BonesHash": { - "field": "m_bonesHash", - "type": 57 - }, - "BoneNames": { - "field": "m_boneNames", - "type": 50 - }, - "IndexNames": { - "field": "m_indexNames", - "type": 56 - }, - "IndexHash": { - "field": "m_indexHash", - "type": 56 - }, - "FeModel": { - "field": "m_pFeModel", - "classname": "PhysFeModelDesc_t", - "type": 24 - }, - "BoneParents": { - "field": "m_boneParents", - "type": 56 - }, - "SurfacePropertyHashes": { - "field": "m_surfacePropertyHashes", - "type": 57 - }, - "DebugPartNames": { - "field": "m_debugPartNames", - "type": 50 - }, - "EmbeddedKeyvalues": { - "field": "m_embeddedKeyvalues", - "type": 14 - } - }, - "VPhysXBodyPart_t": { - "Flags": { - "field": "m_nFlags", - "type": 6 - }, - "Mass": { - "field": "m_flMass", - "type": 8 - }, - "RnShape": { - "field": "m_rnShape", - "classname": "VPhysics2ShapeDef_t", - "type": 16 - }, - "CollisionAttributeIndex": { - "field": "m_nCollisionAttributeIndex", - "type": 5 - }, - "Reserved": { - "field": "m_nReserved", - "type": 5 - }, - "InertiaScale": { - "field": "m_flInertiaScale", - "type": 8 - }, - "LinearDamping": { - "field": "m_flLinearDamping", - "type": 8 - }, - "AngularDamping": { - "field": "m_flAngularDamping", - "type": 8 - }, - "OverrideMassCenter": { - "field": "m_bOverrideMassCenter", - "type": 10 - }, - "MassCenterOverride": { - "field": "m_vMassCenterOverride", - "type": 21 - } - }, - "VPhysXCollisionAttributes_t": { - "CollisionGroup": { - "field": "m_CollisionGroup", - "type": 6 - }, - "InteractAs": { - "field": "m_InteractAs", - "type": 57 - }, - "InteractWith": { - "field": "m_InteractWith", - "type": 57 - }, - "InteractExclude": { - "field": "m_InteractExclude", - "type": 57 - }, - "CollisionGroupString": { - "field": "m_CollisionGroupString", - "type": 14 - }, - "InteractAsStrings": { - "field": "m_InteractAsStrings", - "type": 50 - }, - "InteractWithStrings": { - "field": "m_InteractWithStrings", - "type": 50 - }, - "InteractExcludeStrings": { - "field": "m_InteractExcludeStrings", - "type": 50 - } - }, - "VPhysXConstraint2_t": { - "Flags": { - "field": "m_nFlags", - "type": 6 - }, - "Parent": { - "field": "m_nParent", - "type": 5 - }, - "Child": { - "field": "m_nChild", - "type": 5 - }, - "Params": { - "field": "m_params", - "classname": "VPhysXConstraintParams_t", - "type": 16 - } - }, - "VPhysXConstraintParams_t": { - "Type": { - "field": "m_nType", - "type": 0 - }, - "TranslateMotion": { - "field": "m_nTranslateMotion", - "type": 0 - }, - "RotateMotion": { - "field": "m_nRotateMotion", - "type": 0 - }, - "Flags": { - "field": "m_nFlags", - "type": 0 - }, - "Anchor": { - "field": "m_anchor", - "type": 42, - "size": 2 - }, - "MaxForce": { - "field": "m_maxForce", - "type": 8 - }, - "MaxTorque": { - "field": "m_maxTorque", - "type": 8 - }, - "LinearLimitValue": { - "field": "m_linearLimitValue", - "type": 8 - }, - "LinearLimitRestitution": { - "field": "m_linearLimitRestitution", - "type": 8 - }, - "LinearLimitSpring": { - "field": "m_linearLimitSpring", - "type": 8 - }, - "LinearLimitDamping": { - "field": "m_linearLimitDamping", - "type": 8 - }, - "TwistLowLimitValue": { - "field": "m_twistLowLimitValue", - "type": 8 - }, - "TwistLowLimitRestitution": { - "field": "m_twistLowLimitRestitution", - "type": 8 - }, - "TwistLowLimitSpring": { - "field": "m_twistLowLimitSpring", - "type": 8 - }, - "TwistLowLimitDamping": { - "field": "m_twistLowLimitDamping", - "type": 8 - }, - "TwistHighLimitValue": { - "field": "m_twistHighLimitValue", - "type": 8 - }, - "TwistHighLimitRestitution": { - "field": "m_twistHighLimitRestitution", - "type": 8 - }, - "TwistHighLimitSpring": { - "field": "m_twistHighLimitSpring", - "type": 8 - }, - "TwistHighLimitDamping": { - "field": "m_twistHighLimitDamping", - "type": 8 - }, - "Swing1LimitValue": { - "field": "m_swing1LimitValue", - "type": 8 - }, - "Swing1LimitRestitution": { - "field": "m_swing1LimitRestitution", - "type": 8 - }, - "Swing1LimitSpring": { - "field": "m_swing1LimitSpring", - "type": 8 - }, - "Swing1LimitDamping": { - "field": "m_swing1LimitDamping", - "type": 8 - }, - "Swing2LimitValue": { - "field": "m_swing2LimitValue", - "type": 8 - }, - "Swing2LimitRestitution": { - "field": "m_swing2LimitRestitution", - "type": 8 - }, - "Swing2LimitSpring": { - "field": "m_swing2LimitSpring", - "type": 8 - }, - "Swing2LimitDamping": { - "field": "m_swing2LimitDamping", - "type": 8 - }, - "GoalPosition": { - "field": "m_goalPosition", - "type": 21 - }, - "GoalAngularVelocity": { - "field": "m_goalAngularVelocity", - "type": 21 - }, - "DriveSpringX": { - "field": "m_driveSpringX", - "type": 8 - }, - "DriveSpringY": { - "field": "m_driveSpringY", - "type": 8 - }, - "DriveSpringZ": { - "field": "m_driveSpringZ", - "type": 8 - }, - "DriveDampingX": { - "field": "m_driveDampingX", - "type": 8 - }, - "DriveDampingY": { - "field": "m_driveDampingY", - "type": 8 - }, - "DriveDampingZ": { - "field": "m_driveDampingZ", - "type": 8 - }, - "DriveSpringTwist": { - "field": "m_driveSpringTwist", - "type": 8 - }, - "DriveSpringSwing": { - "field": "m_driveSpringSwing", - "type": 8 - }, - "DriveSpringSlerp": { - "field": "m_driveSpringSlerp", - "type": 8 - }, - "DriveDampingTwist": { - "field": "m_driveDampingTwist", - "type": 8 - }, - "DriveDampingSwing": { - "field": "m_driveDampingSwing", - "type": 8 - }, - "DriveDampingSlerp": { - "field": "m_driveDampingSlerp", - "type": 8 - }, - "SolverIterationCount": { - "field": "m_solverIterationCount", - "type": 2 - }, - "ProjectionLinearTolerance": { - "field": "m_projectionLinearTolerance", - "type": 8 - }, - "ProjectionAngularTolerance": { - "field": "m_projectionAngularTolerance", - "type": 8 - } - }, - "VPhysXJoint_t": { - "Type": { - "field": "m_nType", - "type": 5 - }, - "Body1": { - "field": "m_nBody1", - "type": 5 - }, - "Body2": { - "field": "m_nBody2", - "type": 5 - }, - "Flags": { - "field": "m_nFlags", - "type": 5 - }, - "EnableCollision": { - "field": "m_bEnableCollision", - "type": 10 - }, - "EnableLinearLimit": { - "field": "m_bEnableLinearLimit", - "type": 10 - }, - "LinearLimit": { - "field": "m_LinearLimit", - "classname": "VPhysXRange_t", - "type": 16 - }, - "EnableLinearMotor": { - "field": "m_bEnableLinearMotor", - "type": 10 - }, - "LinearTargetVelocity": { - "field": "m_vLinearTargetVelocity", - "type": 21 - }, - "MaxForce": { - "field": "m_flMaxForce", - "type": 8 - }, - "EnableSwingLimit": { - "field": "m_bEnableSwingLimit", - "type": 10 - }, - "SwingLimit": { - "field": "m_SwingLimit", - "classname": "VPhysXRange_t", - "type": 16 - }, - "EnableTwistLimit": { - "field": "m_bEnableTwistLimit", - "type": 10 - }, - "TwistLimit": { - "field": "m_TwistLimit", - "classname": "VPhysXRange_t", - "type": 16 - }, - "EnableAngularMotor": { - "field": "m_bEnableAngularMotor", - "type": 10 - }, - "AngularTargetVelocity": { - "field": "m_vAngularTargetVelocity", - "type": 21 - }, - "MaxTorque": { - "field": "m_flMaxTorque", - "type": 8 - }, - "LinearFrequency": { - "field": "m_flLinearFrequency", - "type": 8 - }, - "LinearDampingRatio": { - "field": "m_flLinearDampingRatio", - "type": 8 - }, - "AngularFrequency": { - "field": "m_flAngularFrequency", - "type": 8 - }, - "AngularDampingRatio": { - "field": "m_flAngularDampingRatio", - "type": 8 - }, - "Friction": { - "field": "m_flFriction", - "type": 8 - }, - "Elasticity": { - "field": "m_flElasticity", - "type": 8 - }, - "ElasticDamping": { - "field": "m_flElasticDamping", - "type": 8 - }, - "Plasticity": { - "field": "m_flPlasticity", - "type": 8 - } - }, - "VPhysXRange_t": { - "Min": { - "field": "m_flMin", - "type": 8 - }, - "Max": { - "field": "m_flMax", - "type": 8 - } - }, - "VPhysics2ShapeDef_t": { - "CollisionAttributeIndices": { - "field": "m_CollisionAttributeIndices", - "type": 56 - } - }, - "CNavHullPresetVData": { - "NavHulls": { - "field": "m_vecNavHulls", - "type": 50 - } - }, - "CNavHullVData": { - "AgentEnabled": { - "field": "m_bAgentEnabled", - "type": 10 - }, - "AgentRadius": { - "field": "m_agentRadius", - "type": 8 - }, - "AgentHeight": { - "field": "m_agentHeight", - "type": 8 - }, - "AgentShortHeightEnabled": { - "field": "m_agentShortHeightEnabled", - "type": 10 - }, - "AgentShortHeight": { - "field": "m_agentShortHeight", - "type": 8 - }, - "AgentMaxClimb": { - "field": "m_agentMaxClimb", - "type": 8 - }, - "AgentMaxSlope": { - "field": "m_agentMaxSlope", - "type": 2 - }, - "AgentMaxJumpDownDist": { - "field": "m_agentMaxJumpDownDist", - "type": 8 - }, - "AgentMaxJumpHorizDistBase": { - "field": "m_agentMaxJumpHorizDistBase", - "type": 8 - }, - "AgentMaxJumpUpDist": { - "field": "m_agentMaxJumpUpDist", - "type": 8 - }, - "AgentBorderErosion": { - "field": "m_agentBorderErosion", - "type": 2 - }, - "FlowMapGenerationEnabled": { - "field": "m_flowMapGenerationEnabled", - "type": 10 - }, - "FlowMapNodeMaxRadius": { - "field": "m_flowMapNodeMaxRadius", - "type": 8 - } - }, - "CNavVolume": {}, - "CNavVolumeAll": { - "Parent": { - "field": "CNavVolumeVector", - "type": 11 - } - }, - "CNavVolumeSphere": { - "Center": { - "field": "m_vCenter", - "type": 21 - }, - "Radius": { - "field": "m_flRadius", - "type": 8 - }, - "Parent": { - "field": "CNavVolume", - "type": 11 - } - }, - "CNavVolumeSphericalShell": { - "RadiusInner": { - "field": "m_flRadiusInner", - "type": 8 - }, - "Parent": { - "field": "CNavVolumeSphere", - "type": 11 - } - }, - "CNavVolumeVector": { - "HasBeenPreFiltered": { - "field": "m_bHasBeenPreFiltered", - "type": 10 - }, - "Parent": { - "field": "CNavVolume", - "type": 11 - } - }, - "Extent": { - "Lo": { - "field": "lo", - "type": 21 - }, - "Hi": { - "field": "hi", - "type": 21 - } - }, - "NavGravity_t": { - "Gravity": { - "field": "m_vGravity", - "type": 21 - }, - "Default": { - "field": "m_bDefault", - "type": 10 - } - }, - "ChangeAccessorFieldPathIndex_t": { - "Value": { - "field": "m_Value", - "type": 2 - } - }, - "CBaseRendererSource2": { - "RadiusScale": { - "field": "m_flRadiusScale", - "classname": "CParticleCollectionRendererFloatInput", - "type": 16 - }, - "AlphaScale": { - "field": "m_flAlphaScale", - "classname": "CParticleCollectionRendererFloatInput", - "type": 16 - }, - "RollScale": { - "field": "m_flRollScale", - "classname": "CParticleCollectionRendererFloatInput", - "type": 16 - }, - "Alpha2Field": { - "field": "m_nAlpha2Field", - "classname": "ParticleAttributeIndex_t", - "type": 16 - }, - "ColorScale": { - "field": "m_vecColorScale", - "classname": "CParticleCollectionRendererVecInput", - "type": 16 - }, - "ColorBlendType": { - "field": "m_nColorBlendType", - "type": 6 - }, - "ShaderType": { - "field": "m_nShaderType", - "type": 6 - }, - "StrShaderOverride": { - "field": "m_strShaderOverride", - "type": 14 - }, - "CenterXOffset": { - "field": "m_flCenterXOffset", - "classname": "CParticleCollectionRendererFloatInput", - "type": 16 - }, - "CenterYOffset": { - "field": "m_flCenterYOffset", - "classname": "CParticleCollectionRendererFloatInput", - "type": 16 - }, - "BumpStrength": { - "field": "m_flBumpStrength", - "type": 8 - }, - "CropTextureOverride": { - "field": "m_nCropTextureOverride", - "type": 6 - }, - "AnimationRate": { - "field": "m_flAnimationRate", - "type": 8 - }, - "AnimationType": { - "field": "m_nAnimationType", - "type": 6 - }, - "AnimateInFPS": { - "field": "m_bAnimateInFPS", - "type": 10 - }, - "MotionVectorScaleU": { - "field": "m_flMotionVectorScaleU", - "classname": "CParticleCollectionRendererFloatInput", - "type": 16 - }, - "MotionVectorScaleV": { - "field": "m_flMotionVectorScaleV", - "classname": "CParticleCollectionRendererFloatInput", - "type": 16 - }, - "SelfIllumAmount": { - "field": "m_flSelfIllumAmount", - "classname": "CParticleCollectionRendererFloatInput", - "type": 16 - }, - "DiffuseAmount": { - "field": "m_flDiffuseAmount", - "classname": "CParticleCollectionRendererFloatInput", - "type": 16 - }, - "DiffuseClamp": { - "field": "m_flDiffuseClamp", - "classname": "CParticleCollectionRendererFloatInput", - "type": 16 - }, - "LightingControlPoint": { - "field": "m_nLightingControlPoint", - "type": 2 - }, - "SelfIllumPerParticle": { - "field": "m_nSelfIllumPerParticle", - "classname": "ParticleAttributeIndex_t", - "type": 16 - }, - "OutputBlendMode": { - "field": "m_nOutputBlendMode", - "type": 6 - }, - "GammaCorrectVertexColors": { - "field": "m_bGammaCorrectVertexColors", - "type": 10 - }, - "SaturateColorPreAlphaBlend": { - "field": "m_bSaturateColorPreAlphaBlend", - "type": 10 - }, - "AddSelfAmount": { - "field": "m_flAddSelfAmount", - "classname": "CParticleCollectionRendererFloatInput", - "type": 16 - }, - "Desaturation": { - "field": "m_flDesaturation", - "classname": "CParticleCollectionRendererFloatInput", - "type": 16 - }, - "OverbrightFactor": { - "field": "m_flOverbrightFactor", - "classname": "CParticleCollectionRendererFloatInput", - "type": 16 - }, - "HSVShiftControlPoint": { - "field": "m_nHSVShiftControlPoint", - "type": 2 - }, - "FogType": { - "field": "m_nFogType", - "type": 6 - }, - "FogAmount": { - "field": "m_flFogAmount", - "classname": "CParticleCollectionRendererFloatInput", - "type": 16 - }, - "TintByFOW": { - "field": "m_bTintByFOW", - "type": 10 - }, - "TintByGlobalLight": { - "field": "m_bTintByGlobalLight", - "type": 10 - }, - "PerParticleAlphaReference": { - "field": "m_nPerParticleAlphaReference", - "type": 6 - }, - "PerParticleAlphaRefWindow": { - "field": "m_nPerParticleAlphaRefWindow", - "type": 6 - }, - "AlphaReferenceType": { - "field": "m_nAlphaReferenceType", - "type": 6 - }, - "AlphaReferenceSoftness": { - "field": "m_flAlphaReferenceSoftness", - "classname": "CParticleCollectionRendererFloatInput", - "type": 16 - }, - "SourceAlphaValueToMapToZero": { - "field": "m_flSourceAlphaValueToMapToZero", - "classname": "CParticleCollectionRendererFloatInput", - "type": 16 - }, - "SourceAlphaValueToMapToOne": { - "field": "m_flSourceAlphaValueToMapToOne", - "classname": "CParticleCollectionRendererFloatInput", - "type": 16 - }, - "Refract": { - "field": "m_bRefract", - "type": 10 - }, - "RefractSolid": { - "field": "m_bRefractSolid", - "type": 10 - }, - "RefractAmount": { - "field": "m_flRefractAmount", - "classname": "CParticleCollectionRendererFloatInput", - "type": 16 - }, - "RefractBlurRadius": { - "field": "m_nRefractBlurRadius", - "type": 2 - }, - "RefractBlurType": { - "field": "m_nRefractBlurType", - "type": 6 - }, - "OnlyRenderInEffectsBloomPass": { - "field": "m_bOnlyRenderInEffectsBloomPass", - "type": 10 - }, - "OnlyRenderInEffectsWaterPass": { - "field": "m_bOnlyRenderInEffectsWaterPass", - "type": 10 - }, - "UseMixedResolutionRendering": { - "field": "m_bUseMixedResolutionRendering", - "type": 10 - }, - "OnlyRenderInEffecsGameOverlay": { - "field": "m_bOnlyRenderInEffecsGameOverlay", - "type": 10 - }, - "StencilTestID": { - "field": "m_stencilTestID", - "type": 15, - "size": 128 - }, - "StencilTestExclude": { - "field": "m_bStencilTestExclude", - "type": 10 - }, - "StencilWriteID": { - "field": "m_stencilWriteID", - "type": 15, - "size": 128 - }, - "WriteStencilOnDepthPass": { - "field": "m_bWriteStencilOnDepthPass", - "type": 10 - }, - "WriteStencilOnDepthFail": { - "field": "m_bWriteStencilOnDepthFail", - "type": 10 - }, - "ReverseZBuffering": { - "field": "m_bReverseZBuffering", - "type": 10 - }, - "DisableZBuffering": { - "field": "m_bDisableZBuffering", - "type": 10 - }, - "FeatheringMode": { - "field": "m_nFeatheringMode", - "type": 6 - }, - "FeatheringMinDist": { - "field": "m_flFeatheringMinDist", - "classname": "CParticleCollectionRendererFloatInput", - "type": 16 - }, - "FeatheringMaxDist": { - "field": "m_flFeatheringMaxDist", - "classname": "CParticleCollectionRendererFloatInput", - "type": 16 - }, - "FeatheringFilter": { - "field": "m_flFeatheringFilter", - "classname": "CParticleCollectionRendererFloatInput", - "type": 16 - }, - "DepthBias": { - "field": "m_flDepthBias", - "classname": "CParticleCollectionRendererFloatInput", - "type": 16 - }, - "SortMethod": { - "field": "m_nSortMethod", - "type": 6 - }, - "BlendFramesSeq0": { - "field": "m_bBlendFramesSeq0", - "type": 10 - }, - "MaxLuminanceBlendingSequence0": { - "field": "m_bMaxLuminanceBlendingSequence0", - "type": 10 - }, - "Parent": { - "field": "CParticleFunctionRenderer", - "type": 11 - } - }, - "CBaseTrailRenderer": { - "OrientationType": { - "field": "m_nOrientationType", - "type": 6 - }, - "OrientationControlPoint": { - "field": "m_nOrientationControlPoint", - "type": 2 - }, - "MinSize": { - "field": "m_flMinSize", - "type": 8 - }, - "MaxSize": { - "field": "m_flMaxSize", - "type": 8 - }, - "StartFadeSize": { - "field": "m_flStartFadeSize", - "classname": "CParticleCollectionRendererFloatInput", - "type": 16 - }, - "EndFadeSize": { - "field": "m_flEndFadeSize", - "classname": "CParticleCollectionRendererFloatInput", - "type": 16 - }, - "ClampV": { - "field": "m_bClampV", - "type": 10 - }, - "Parent": { - "field": "CBaseRendererSource2", - "type": 11 - } - }, - "CGeneralRandomRotation": { - "FieldOutput": { - "field": "m_nFieldOutput", - "classname": "ParticleAttributeIndex_t", - "type": 16 - }, - "Degrees": { - "field": "m_flDegrees", - "type": 8 - }, - "DegreesMin": { - "field": "m_flDegreesMin", - "type": 8 - }, - "DegreesMax": { - "field": "m_flDegreesMax", - "type": 8 - }, - "RotationRandExponent": { - "field": "m_flRotationRandExponent", - "type": 8 - }, - "RandomlyFlipDirection": { - "field": "m_bRandomlyFlipDirection", - "type": 10 - }, - "Parent": { - "field": "CParticleFunctionInitializer", - "type": 11 - } - }, - "CGeneralSpin": { - "SpinRateDegrees": { - "field": "m_nSpinRateDegrees", - "type": 2 - }, - "SpinRateMinDegrees": { - "field": "m_nSpinRateMinDegrees", - "type": 2 - }, - "SpinRateStopTime": { - "field": "m_fSpinRateStopTime", - "type": 8 - }, - "Parent": { - "field": "CParticleFunctionOperator", - "type": 11 - } - }, - "CParticleFunction": { - "OpStrength": { - "field": "m_flOpStrength", - "classname": "CParticleCollectionFloatInput", - "type": 16 - }, - "OpEndCapState": { - "field": "m_nOpEndCapState", - "type": 6 - }, - "OpStartFadeInTime": { - "field": "m_flOpStartFadeInTime", - "type": 8 - }, - "OpEndFadeInTime": { - "field": "m_flOpEndFadeInTime", - "type": 8 - }, - "OpStartFadeOutTime": { - "field": "m_flOpStartFadeOutTime", - "type": 8 - }, - "OpEndFadeOutTime": { - "field": "m_flOpEndFadeOutTime", - "type": 8 - }, - "OpFadeOscillatePeriod": { - "field": "m_flOpFadeOscillatePeriod", - "type": 8 - }, - "NormalizeToStopTime": { - "field": "m_bNormalizeToStopTime", - "type": 10 - }, - "OpTimeOffsetMin": { - "field": "m_flOpTimeOffsetMin", - "type": 8 - }, - "OpTimeOffsetMax": { - "field": "m_flOpTimeOffsetMax", - "type": 8 - }, - "OpTimeOffsetSeed": { - "field": "m_nOpTimeOffsetSeed", - "type": 2 - }, - "OpTimeScaleSeed": { - "field": "m_nOpTimeScaleSeed", - "type": 2 - }, - "OpTimeScaleMin": { - "field": "m_flOpTimeScaleMin", - "type": 8 - }, - "OpTimeScaleMax": { - "field": "m_flOpTimeScaleMax", - "type": 8 - }, - "DisableOperator": { - "field": "m_bDisableOperator", - "type": 10 - }, - "Notes": { - "field": "m_Notes", - "type": 14 - } - }, - "CParticleFunctionConstraint": { - "Parent": { - "field": "CParticleFunction", - "type": 11 - } - }, - "CParticleFunctionEmitter": { - "EmitterIndex": { - "field": "m_nEmitterIndex", - "type": 2 - }, - "Parent": { - "field": "CParticleFunction", - "type": 11 - } - }, - "CParticleFunctionForce": { - "Parent": { - "field": "CParticleFunction", - "type": 11 - } - }, - "CParticleFunctionInitializer": { - "AssociatedEmitterIndex": { - "field": "m_nAssociatedEmitterIndex", - "type": 2 - }, - "Parent": { - "field": "CParticleFunction", - "type": 11 - } - }, - "CParticleFunctionOperator": { - "Parent": { - "field": "CParticleFunction", - "type": 11 - } - }, - "CParticleFunctionPreEmission": { - "RunOnce": { - "field": "m_bRunOnce", - "type": 10 - }, - "Parent": { - "field": "CParticleFunctionOperator", - "type": 11 - } - }, - "CParticleFunctionRenderer": { - "VisibilityInputs": { - "field": "VisibilityInputs", - "classname": "CParticleVisibilityInputs", - "type": 16 - }, - "CannotBeRefracted": { - "field": "m_bCannotBeRefracted", - "type": 10 - }, - "SkipRenderingOnMobile": { - "field": "m_bSkipRenderingOnMobile", - "type": 10 - }, - "Parent": { - "field": "CParticleFunction", - "type": 11 - } - }, - "CParticleMassCalculationParameters": { - "MassMode": { - "field": "m_nMassMode", - "type": 6 - }, - "Radius": { - "field": "m_flRadius", - "classname": "CPerParticleFloatInput", - "type": 16 - }, - "NominalRadius": { - "field": "m_flNominalRadius", - "classname": "CPerParticleFloatInput", - "type": 16 - }, - "Scale": { - "field": "m_flScale", - "classname": "CPerParticleFloatInput", - "type": 16 - } - }, - "CParticleSystemDefinition": { - "BehaviorVersion": { - "field": "m_nBehaviorVersion", - "type": 2 - }, - "FirstMultipleOverride_BackwardCompat": { - "field": "m_nFirstMultipleOverride_BackwardCompat", - "type": 2 - }, - "InitialParticles": { - "field": "m_nInitialParticles", - "type": 2 - }, - "MaxParticles": { - "field": "m_nMaxParticles", - "type": 2 - }, - "GroupID": { - "field": "m_nGroupID", - "type": 2 - }, - "BoundingBoxMin": { - "field": "m_BoundingBoxMin", - "type": 21 - }, - "BoundingBoxMax": { - "field": "m_BoundingBoxMax", - "type": 21 - }, - "DepthSortBias": { - "field": "m_flDepthSortBias", - "type": 8 - }, - "SortOverridePositionCP": { - "field": "m_nSortOverridePositionCP", - "type": 2 - }, - "InfiniteBounds": { - "field": "m_bInfiniteBounds", - "type": 10 - }, - "EnableNamedValues": { - "field": "m_bEnableNamedValues", - "type": 10 - }, - "NamedValueDomain": { - "field": "m_NamedValueDomain", - "type": 14 - }, - "ConstantColor": { - "field": "m_ConstantColor", - "type": 19 - }, - "ConstantNormal": { - "field": "m_ConstantNormal", - "type": 21 - }, - "ConstantRadius": { - "field": "m_flConstantRadius", - "type": 8 - }, - "ConstantRotation": { - "field": "m_flConstantRotation", - "type": 8 - }, - "ConstantRotationSpeed": { - "field": "m_flConstantRotationSpeed", - "type": 8 - }, - "ConstantLifespan": { - "field": "m_flConstantLifespan", - "type": 8 - }, - "ConstantSequenceNumber": { - "field": "m_nConstantSequenceNumber", - "type": 2 - }, - "ConstantSequenceNumber1": { - "field": "m_nConstantSequenceNumber1", - "type": 2 - }, - "SnapshotControlPoint": { - "field": "m_nSnapshotControlPoint", - "type": 2 - }, - "CullRadius": { - "field": "m_flCullRadius", - "type": 8 - }, - "CullFillCost": { - "field": "m_flCullFillCost", - "type": 8 - }, - "CullControlPoint": { - "field": "m_nCullControlPoint", - "type": 2 - }, - "FallbackMaxCount": { - "field": "m_nFallbackMaxCount", - "type": 2 - }, - "PreSimulationTime": { - "field": "m_flPreSimulationTime", - "type": 8 - }, - "StopSimulationAfterTime": { - "field": "m_flStopSimulationAfterTime", - "type": 8 - }, - "MaximumTimeStep": { - "field": "m_flMaximumTimeStep", - "type": 8 - }, - "MaximumSimTime": { - "field": "m_flMaximumSimTime", - "type": 8 - }, - "MinimumSimTime": { - "field": "m_flMinimumSimTime", - "type": 8 - }, - "MinimumTimeStep": { - "field": "m_flMinimumTimeStep", - "type": 8 - }, - "MinimumFrames": { - "field": "m_nMinimumFrames", - "type": 2 - }, - "MinCPULevel": { - "field": "m_nMinCPULevel", - "type": 2 - }, - "MinGPULevel": { - "field": "m_nMinGPULevel", - "type": 2 - }, - "NoDrawTimeToGoToSleep": { - "field": "m_flNoDrawTimeToGoToSleep", - "type": 8 - }, - "MaxDrawDistance": { - "field": "m_flMaxDrawDistance", - "type": 8 - }, - "StartFadeDistance": { - "field": "m_flStartFadeDistance", - "type": 8 - }, - "MaxCreationDistance": { - "field": "m_flMaxCreationDistance", - "type": 8 - }, - "AggregationMinAvailableParticles": { - "field": "m_nAggregationMinAvailableParticles", - "type": 2 - }, - "AggregateRadius": { - "field": "m_flAggregateRadius", - "type": 8 - }, - "ShouldBatch": { - "field": "m_bShouldBatch", - "type": 10 - }, - "ShouldHitboxesFallbackToRenderBounds": { - "field": "m_bShouldHitboxesFallbackToRenderBounds", - "type": 10 - }, - "ShouldHitboxesFallbackToSnapshot": { - "field": "m_bShouldHitboxesFallbackToSnapshot", - "type": 10 - }, - "ShouldHitboxesFallbackToCollisionHulls": { - "field": "m_bShouldHitboxesFallbackToCollisionHulls", - "type": 10 - }, - "ViewModelEffect": { - "field": "m_nViewModelEffect", - "type": 6 - }, - "ScreenSpaceEffect": { - "field": "m_bScreenSpaceEffect", - "type": 10 - }, - "TargetLayerID": { - "field": "m_pszTargetLayerID", - "type": 13 - }, - "SkipRenderControlPoint": { - "field": "m_nSkipRenderControlPoint", - "type": 2 - }, - "AllowRenderControlPoint": { - "field": "m_nAllowRenderControlPoint", - "type": 2 - }, - "ShouldSort": { - "field": "m_bShouldSort", - "type": 10 - } - }, - "CParticleVisibilityInputs": { - "CameraBias": { - "field": "m_flCameraBias", - "type": 8 - }, - "CPin": { - "field": "m_nCPin", - "type": 2 - }, - "ProxyRadius": { - "field": "m_flProxyRadius", - "type": 8 - }, - "InputMin": { - "field": "m_flInputMin", - "type": 8 - }, - "InputMax": { - "field": "m_flInputMax", - "type": 8 - }, - "InputPixelVisFade": { - "field": "m_flInputPixelVisFade", - "type": 8 - }, - "NoPixelVisibilityFallback": { - "field": "m_flNoPixelVisibilityFallback", - "type": 8 - }, - "DistanceInputMin": { - "field": "m_flDistanceInputMin", - "type": 8 - }, - "DistanceInputMax": { - "field": "m_flDistanceInputMax", - "type": 8 - }, - "DotInputMin": { - "field": "m_flDotInputMin", - "type": 8 - }, - "DotInputMax": { - "field": "m_flDotInputMax", - "type": 8 - }, - "DotCPAngles": { - "field": "m_bDotCPAngles", - "type": 10 - }, - "DotCameraAngles": { - "field": "m_bDotCameraAngles", - "type": 10 - }, - "AlphaScaleMin": { - "field": "m_flAlphaScaleMin", - "type": 8 - }, - "AlphaScaleMax": { - "field": "m_flAlphaScaleMax", - "type": 8 - }, - "RadiusScaleMin": { - "field": "m_flRadiusScaleMin", - "type": 8 - }, - "RadiusScaleMax": { - "field": "m_flRadiusScaleMax", - "type": 8 - }, - "RadiusScaleFOVBase": { - "field": "m_flRadiusScaleFOVBase", - "type": 8 - }, - "RightEye": { - "field": "m_bRightEye", - "type": 10 - } - }, - "CPathParameters": { - "StartControlPointNumber": { - "field": "m_nStartControlPointNumber", - "type": 2 - }, - "EndControlPointNumber": { - "field": "m_nEndControlPointNumber", - "type": 2 - }, - "BulgeControl": { - "field": "m_nBulgeControl", - "type": 2 - }, - "Bulge": { - "field": "m_flBulge", - "type": 8 - }, - "MidPoint": { - "field": "m_flMidPoint", - "type": 8 - }, - "StartPointOffset": { - "field": "m_vStartPointOffset", - "type": 21 - }, - "MidPointOffset": { - "field": "m_vMidPointOffset", - "type": 21 - }, - "EndOffset": { - "field": "m_vEndOffset", - "type": 21 - } - }, - "CRandomNumberGeneratorParameters": { - "DistributeEvenly": { - "field": "m_bDistributeEvenly", - "type": 10 - }, - "Seed": { - "field": "m_nSeed", - "type": 2 - } - }, - "CReplicationParameters": { - "ReplicationMode": { - "field": "m_nReplicationMode", - "type": 6 - }, - "ScaleChildParticleRadii": { - "field": "m_bScaleChildParticleRadii", - "type": 10 - }, - "MinRandomRadiusScale": { - "field": "m_flMinRandomRadiusScale", - "classname": "CParticleCollectionFloatInput", - "type": 16 - }, - "MaxRandomRadiusScale": { - "field": "m_flMaxRandomRadiusScale", - "classname": "CParticleCollectionFloatInput", - "type": 16 - }, - "ModellingScale": { - "field": "m_flModellingScale", - "classname": "CParticleCollectionFloatInput", - "type": 16 - } - }, - "CSpinUpdateBase": { - "Parent": { - "field": "CParticleFunctionOperator", - "type": 11 - } - }, - "CollisionGroupContext_t": { - "CollisionGroupNumber": { - "field": "m_nCollisionGroupNumber", - "type": 2 - } - }, - "ControlPointReference_t": { - "ControlPointNameString": { - "field": "m_controlPointNameString", - "type": 2 - }, - "OffsetFromControlPoint": { - "field": "m_vOffsetFromControlPoint", - "type": 21 - }, - "OffsetInLocalSpace": { - "field": "m_bOffsetInLocalSpace", - "type": 10 - } - }, - "IParticleCollection": {}, - "MaterialVariable_t": { - "StrVariable": { - "field": "m_strVariable", - "type": 14 - }, - "VariableField": { - "field": "m_nVariableField", - "classname": "ParticleAttributeIndex_t", - "type": 16 - }, - "Scale": { - "field": "m_flScale", - "type": 8 - } - }, - "ModelReference_t": { - "RelativeProbabilityOfSpawn": { - "field": "m_flRelativeProbabilityOfSpawn", - "type": 8 - } - }, - "ParticleAttributeIndex_t": { - "Value": { - "field": "m_Value", - "type": 2 - } - }, - "ParticleChildrenInfo_t": { - "Delay": { - "field": "m_flDelay", - "type": 8 - }, - "EndCap": { - "field": "m_bEndCap", - "type": 10 - }, - "DisableChild": { - "field": "m_bDisableChild", - "type": 10 - }, - "DetailLevel": { - "field": "m_nDetailLevel", - "type": 6 - } - }, - "ParticleControlPointConfiguration_t": { - "Name": { - "field": "m_name", - "type": 14 - }, - "PreviewState": { - "field": "m_previewState", - "classname": "ParticlePreviewState_t", - "type": 16 - } - }, - "ParticleControlPointDriver_t": { - "ControlPoint": { - "field": "m_iControlPoint", - "type": 2 - }, - "AttachType": { - "field": "m_iAttachType", - "type": 6 - }, - "AttachmentName": { - "field": "m_attachmentName", - "type": 14 - }, - "Offset": { - "field": "m_vecOffset", - "type": 21 - }, - "Offset1": { - "field": "m_angOffset", - "type": 20 - }, - "EntityName": { - "field": "m_entityName", - "type": 14 - } - }, - "ParticlePreviewBodyGroup_t": { - "BodyGroupName": { - "field": "m_bodyGroupName", - "type": 14 - }, - "Value": { - "field": "m_nValue", - "type": 2 - } - }, - "ParticlePreviewState_t": { - "PreviewModel": { - "field": "m_previewModel", - "type": 14 - }, - "ModSpecificData": { - "field": "m_nModSpecificData", - "type": 6 - }, - "GroundType": { - "field": "m_groundType", - "type": 6 - }, - "SequenceName": { - "field": "m_sequenceName", - "type": 14 - }, - "FireParticleOnSequenceFrame": { - "field": "m_nFireParticleOnSequenceFrame", - "type": 2 - }, - "HitboxSetName": { - "field": "m_hitboxSetName", - "type": 14 - }, - "MaterialGroupName": { - "field": "m_materialGroupName", - "type": 14 - }, - "PlaybackSpeed": { - "field": "m_flPlaybackSpeed", - "type": 8 - }, - "ParticleSimulationRate": { - "field": "m_flParticleSimulationRate", - "type": 8 - }, - "ShouldDrawHitboxes": { - "field": "m_bShouldDrawHitboxes", - "type": 10 - }, - "ShouldDrawAttachments": { - "field": "m_bShouldDrawAttachments", - "type": 10 - }, - "ShouldDrawAttachmentNames": { - "field": "m_bShouldDrawAttachmentNames", - "type": 10 - }, - "ShouldDrawControlPointAxes": { - "field": "m_bShouldDrawControlPointAxes", - "type": 10 - }, - "AnimationNonLooping": { - "field": "m_bAnimationNonLooping", - "type": 10 - }, - "PreviewGravity": { - "field": "m_vecPreviewGravity", - "type": 21 - } - }, - "PointDefinitionWithTimeValues_t": { - "TimeDuration": { - "field": "m_flTimeDuration", - "type": 8 - }, - "Parent": { - "field": "PointDefinition_t", - "type": 11 - } - }, - "PointDefinition_t": { - "ControlPoint": { - "field": "m_nControlPoint", - "type": 2 - }, - "LocalCoords": { - "field": "m_bLocalCoords", - "type": 10 - }, - "Offset": { - "field": "m_vOffset", - "type": 21 - } - }, - "RenderProjectedMaterial_t": {}, - "SequenceWeightedList_t": { - "Sequence": { - "field": "m_nSequence", - "type": 2 - }, - "RelativeWeight": { - "field": "m_flRelativeWeight", - "type": 8 - } - }, - "TextureControls_t": { - "FinalTextureScaleU": { - "field": "m_flFinalTextureScaleU", - "classname": "CParticleCollectionRendererFloatInput", - "type": 16 - }, - "FinalTextureScaleV": { - "field": "m_flFinalTextureScaleV", - "classname": "CParticleCollectionRendererFloatInput", - "type": 16 - }, - "FinalTextureOffsetU": { - "field": "m_flFinalTextureOffsetU", - "classname": "CParticleCollectionRendererFloatInput", - "type": 16 - }, - "FinalTextureOffsetV": { - "field": "m_flFinalTextureOffsetV", - "classname": "CParticleCollectionRendererFloatInput", - "type": 16 - }, - "FinalTextureUVRotation": { - "field": "m_flFinalTextureUVRotation", - "classname": "CParticleCollectionRendererFloatInput", - "type": 16 - }, - "ZoomScale": { - "field": "m_flZoomScale", - "classname": "CParticleCollectionRendererFloatInput", - "type": 16 - }, - "Distortion": { - "field": "m_flDistortion", - "classname": "CParticleCollectionRendererFloatInput", - "type": 16 - }, - "RandomizeOffsets": { - "field": "m_bRandomizeOffsets", - "type": 10 - }, - "ClampUVs": { - "field": "m_bClampUVs", - "type": 10 - }, - "PerParticleBlend": { - "field": "m_nPerParticleBlend", - "type": 6 - }, - "PerParticleScale": { - "field": "m_nPerParticleScale", - "type": 6 - }, - "PerParticleOffsetU": { - "field": "m_nPerParticleOffsetU", - "type": 6 - }, - "PerParticleOffsetV": { - "field": "m_nPerParticleOffsetV", - "type": 6 - }, - "PerParticleRotation": { - "field": "m_nPerParticleRotation", - "type": 6 - }, - "PerParticleZoom": { - "field": "m_nPerParticleZoom", - "type": 6 - }, - "PerParticleDistortion": { - "field": "m_nPerParticleDistortion", - "type": 6 - } - }, - "TextureGroup_t": { - "Enabled": { - "field": "m_bEnabled", - "type": 10 - }, - "ReplaceTextureWithGradient": { - "field": "m_bReplaceTextureWithGradient", - "type": 10 - }, - "TextureType": { - "field": "m_nTextureType", - "type": 6 - }, - "TextureChannels": { - "field": "m_nTextureChannels", - "type": 6 - }, - "TextureBlendMode": { - "field": "m_nTextureBlendMode", - "type": 6 - }, - "TextureBlend": { - "field": "m_flTextureBlend", - "classname": "CParticleCollectionRendererFloatInput", - "type": 16 - }, - "TextureControls": { - "field": "m_TextureControls", - "classname": "TextureControls_t", - "type": 16 - } - }, - "VecInputMaterialVariable_t": { - "StrVariable": { - "field": "m_strVariable", - "type": 14 - } - }, - "CNewParticleEffect": { - "Next": { - "field": "m_pNext", - "classname": "CNewParticleEffect", - "type": 24 - }, - "Prev": { - "field": "m_pPrev", - "classname": "CNewParticleEffect", - "type": 24 - }, - "Particles": { - "field": "m_pParticles", - "classname": "IParticleCollection", - "type": 24 - }, - "DebugName": { - "field": "m_pDebugName", - "type": 15 - }, - "SortOrigin": { - "field": "m_vSortOrigin", - "type": 21 - }, - "Scale": { - "field": "m_flScale", - "type": 8 - }, - "Owner": { - "field": "m_hOwner", - "classname": "PARTICLE_EHANDLE__", - "type": 24 - }, - "OwningParticleProperty": { - "field": "m_pOwningParticleProperty", - "classname": "CParticleProperty", - "type": 24 - }, - "FreezeTransitionStart": { - "field": "m_flFreezeTransitionStart", - "type": 8 - }, - "FreezeTransitionDuration": { - "field": "m_flFreezeTransitionDuration", - "type": 8 - }, - "FreezeTransitionOverride": { - "field": "m_flFreezeTransitionOverride", - "type": 8 - }, - "FreezeTransitionActive": { - "field": "m_bFreezeTransitionActive", - "type": 10 - }, - "FreezeTargetState": { - "field": "m_bFreezeTargetState", - "type": 10 - }, - "CanFreeze": { - "field": "m_bCanFreeze", - "type": 10 - }, - "LastMin": { - "field": "m_LastMin", - "type": 21 - }, - "LastMax": { - "field": "m_LastMax", - "type": 21 - }, - "SplitScreenUser": { - "field": "m_nSplitScreenUser", - "type": 2 - }, - "AggregationCenter": { - "field": "m_vecAggregationCenter", - "type": 21 - }, - "RefCount": { - "field": "m_RefCount", - "type": 2 - }, - "Parent": { - "field": "IParticleEffect", - "type": 11 - } - }, - "CParticleCollectionBindingInstance": { - "Parent": { - "field": "CBasePulseGraphInstance", - "type": 11 - } - }, - "CParticleCollectionFloatInput": { - "Parent": { - "field": "CParticleFloatInput", - "type": 11 - } - }, - "CParticleCollectionRendererFloatInput": { - "Parent": { - "field": "CParticleCollectionFloatInput", - "type": 11 - } - }, - "CParticleCollectionRendererVecInput": {}, - "CParticleFloatInput": { - "Type": { - "field": "m_nType", - "type": 6 - }, - "MapType": { - "field": "m_nMapType", - "type": 6 - }, - "LiteralValue": { - "field": "m_flLiteralValue", - "type": 8 - }, - "ControlPoint": { - "field": "m_nControlPoint", - "type": 2 - }, - "ScalarAttribute": { - "field": "m_nScalarAttribute", - "classname": "ParticleAttributeIndex_t", - "type": 16 - }, - "VectorAttribute": { - "field": "m_nVectorAttribute", - "classname": "ParticleAttributeIndex_t", - "type": 16 - }, - "VectorComponent": { - "field": "m_nVectorComponent", - "type": 2 - }, - "RandomMin": { - "field": "m_flRandomMin", - "type": 8 - }, - "RandomMax": { - "field": "m_flRandomMax", - "type": 8 - }, - "HasRandomSignFlip": { - "field": "m_bHasRandomSignFlip", - "type": 10 - }, - "RandomSeed": { - "field": "m_nRandomSeed", - "type": 2 - }, - "RandomMode": { - "field": "m_nRandomMode", - "type": 6 - }, - "LOD0": { - "field": "m_flLOD0", - "type": 8 - }, - "LOD1": { - "field": "m_flLOD1", - "type": 8 - }, - "LOD2": { - "field": "m_flLOD2", - "type": 8 - }, - "LOD3": { - "field": "m_flLOD3", - "type": 8 - }, - "NoiseInputVectorAttribute": { - "field": "m_nNoiseInputVectorAttribute", - "classname": "ParticleAttributeIndex_t", - "type": 16 - }, - "NoiseOutputMin": { - "field": "m_flNoiseOutputMin", - "type": 8 - }, - "NoiseOutputMax": { - "field": "m_flNoiseOutputMax", - "type": 8 - }, - "NoiseScale": { - "field": "m_flNoiseScale", - "type": 8 - }, - "NoiseOffsetRate": { - "field": "m_vecNoiseOffsetRate", - "type": 21 - }, - "NoiseOffset": { - "field": "m_flNoiseOffset", - "type": 8 - }, - "NoiseOctaves": { - "field": "m_nNoiseOctaves", - "type": 2 - }, - "NoiseTurbulence": { - "field": "m_nNoiseTurbulence", - "type": 6 - }, - "NoiseType": { - "field": "m_nNoiseType", - "type": 6 - }, - "NoiseModifier": { - "field": "m_nNoiseModifier", - "type": 6 - }, - "NoiseTurbulenceScale": { - "field": "m_flNoiseTurbulenceScale", - "type": 8 - }, - "NoiseTurbulenceMix": { - "field": "m_flNoiseTurbulenceMix", - "type": 8 - }, - "NoiseImgPreviewScale": { - "field": "m_flNoiseImgPreviewScale", - "type": 8 - }, - "NoiseImgPreviewLive": { - "field": "m_bNoiseImgPreviewLive", - "type": 10 - }, - "NoCameraFallback": { - "field": "m_flNoCameraFallback", - "type": 8 - }, - "UseBoundsCenter": { - "field": "m_bUseBoundsCenter", - "type": 10 - }, - "InputMode": { - "field": "m_nInputMode", - "type": 6 - }, - "MultFactor": { - "field": "m_flMultFactor", - "type": 8 - }, - "Input0": { - "field": "m_flInput0", - "type": 8 - }, - "Input1": { - "field": "m_flInput1", - "type": 8 - }, - "Output0": { - "field": "m_flOutput0", - "type": 8 - }, - "Output1": { - "field": "m_flOutput1", - "type": 8 - }, - "NotchedRangeMin": { - "field": "m_flNotchedRangeMin", - "type": 8 - }, - "NotchedRangeMax": { - "field": "m_flNotchedRangeMax", - "type": 8 - }, - "NotchedOutputOutside": { - "field": "m_flNotchedOutputOutside", - "type": 8 - }, - "NotchedOutputInside": { - "field": "m_flNotchedOutputInside", - "type": 8 - }, - "RoundType": { - "field": "m_nRoundType", - "type": 6 - }, - "BiasType": { - "field": "m_nBiasType", - "type": 6 - }, - "BiasParameter": { - "field": "m_flBiasParameter", - "type": 8 - }, - "Parent": { - "field": "CParticleInput", - "type": 11 - } - }, - "CParticleInput": {}, - "CParticleModelInput": { - "Type": { - "field": "m_nType", - "type": 6 - }, - "ControlPoint": { - "field": "m_nControlPoint", - "type": 2 - }, - "Parent": { - "field": "CParticleInput", - "type": 11 - } - }, - "CParticleProperty": {}, - "CParticleRemapFloatInput": { - "Parent": { - "field": "CParticleFloatInput", - "type": 11 - } - }, - "CParticleTransformInput": { - "Type": { - "field": "m_nType", - "type": 6 - }, - "FollowNamedValue": { - "field": "m_bFollowNamedValue", - "type": 10 - }, - "SupportsDisabled": { - "field": "m_bSupportsDisabled", - "type": 10 - }, - "UseOrientation": { - "field": "m_bUseOrientation", - "type": 10 - }, - "ControlPoint": { - "field": "m_nControlPoint", - "type": 2 - }, - "ControlPointRangeMax": { - "field": "m_nControlPointRangeMax", - "type": 2 - }, - "EndCPGrowthTime": { - "field": "m_flEndCPGrowthTime", - "type": 8 - }, - "Parent": { - "field": "CParticleInput", - "type": 11 - } - }, - "CParticleVecInput": { - "Type": { - "field": "m_nType", - "type": 6 - }, - "LiteralValue": { - "field": "m_vLiteralValue", - "type": 21 - }, - "LiteralColor": { - "field": "m_LiteralColor", - "type": 19 - }, - "FollowNamedValue": { - "field": "m_bFollowNamedValue", - "type": 10 - }, - "VectorAttribute": { - "field": "m_nVectorAttribute", - "classname": "ParticleAttributeIndex_t", - "type": 16 - }, - "VectorAttributeScale": { - "field": "m_vVectorAttributeScale", - "type": 21 - }, - "ControlPoint": { - "field": "m_nControlPoint", - "type": 2 - }, - "DeltaControlPoint": { - "field": "m_nDeltaControlPoint", - "type": 2 - }, - "CPValueScale": { - "field": "m_vCPValueScale", - "type": 21 - }, - "CPRelativePosition": { - "field": "m_vCPRelativePosition", - "type": 21 - }, - "CPRelativeDir": { - "field": "m_vCPRelativeDir", - "type": 21 - }, - "FloatComponentX": { - "field": "m_FloatComponentX", - "classname": "CParticleFloatInput", - "type": 16 - }, - "FloatComponentY": { - "field": "m_FloatComponentY", - "classname": "CParticleFloatInput", - "type": 16 - }, - "FloatComponentZ": { - "field": "m_FloatComponentZ", - "classname": "CParticleFloatInput", - "type": 16 - }, - "FloatInterp": { - "field": "m_FloatInterp", - "classname": "CParticleFloatInput", - "type": 16 - }, - "InterpInput0": { - "field": "m_flInterpInput0", - "type": 8 - }, - "InterpInput1": { - "field": "m_flInterpInput1", - "type": 8 - }, - "InterpOutput0": { - "field": "m_vInterpOutput0", - "type": 21 - }, - "InterpOutput1": { - "field": "m_vInterpOutput1", - "type": 21 - }, - "RandomMin": { - "field": "m_vRandomMin", - "type": 21 - }, - "RandomMax": { - "field": "m_vRandomMax", - "type": 21 - }, - "Parent": { - "field": "CParticleInput", - "type": 11 - } - }, - "CPerParticleFloatInput": { - "Parent": { - "field": "CParticleFloatInput", - "type": 11 - } - }, - "CPerParticleVecInput": { - "Parent": { - "field": "CParticleVecInput", - "type": 11 - } - }, - "IParticleEffect": {}, - "PARTICLE_EHANDLE__": { - "Unused": { - "field": "unused", - "type": 2 - } - }, - "PARTICLE_WORLD_HANDLE__": { - "Unused": { - "field": "unused", - "type": 2 - } - }, - "ParticleNamedValueConfiguration_t": { - "ConfigName": { - "field": "m_ConfigName", - "type": 14 - }, - "AttachType": { - "field": "m_iAttachType", - "type": 6 - }, - "BoundEntityPath": { - "field": "m_BoundEntityPath", - "type": 14 - }, - "StrEntityScope": { - "field": "m_strEntityScope", - "type": 14 - }, - "StrAttachmentName": { - "field": "m_strAttachmentName", - "type": 14 - } - }, - "ParticleNamedValueSource_t": { - "Name": { - "field": "m_Name", - "type": 14 - }, - "IsPublic": { - "field": "m_IsPublic", - "type": 10 - }, - "DefaultConfig": { - "field": "m_DefaultConfig", - "classname": "ParticleNamedValueConfiguration_t", - "type": 16 - } - }, - "CFeIndexedJiggleBone": { - "Node": { - "field": "m_nNode", - "type": 6 - }, - "JiggleParent": { - "field": "m_nJiggleParent", - "type": 6 - }, - "JiggleBone": { - "field": "m_jiggleBone", - "classname": "CFeJiggleBone", - "type": 16 - } - }, - "CFeJiggleBone": { - "Flags": { - "field": "m_nFlags", - "type": 6 - }, - "Length": { - "field": "m_flLength", - "type": 8 - }, - "TipMass": { - "field": "m_flTipMass", - "type": 8 - }, - "YawStiffness": { - "field": "m_flYawStiffness", - "type": 8 - }, - "YawDamping": { - "field": "m_flYawDamping", - "type": 8 - }, - "PitchStiffness": { - "field": "m_flPitchStiffness", - "type": 8 - }, - "PitchDamping": { - "field": "m_flPitchDamping", - "type": 8 - }, - "AlongStiffness": { - "field": "m_flAlongStiffness", - "type": 8 - }, - "AlongDamping": { - "field": "m_flAlongDamping", - "type": 8 - }, - "AngleLimit": { - "field": "m_flAngleLimit", - "type": 8 - }, - "MinYaw": { - "field": "m_flMinYaw", - "type": 8 - }, - "MaxYaw": { - "field": "m_flMaxYaw", - "type": 8 - }, - "YawFriction": { - "field": "m_flYawFriction", - "type": 8 - }, - "YawBounce": { - "field": "m_flYawBounce", - "type": 8 - }, - "MinPitch": { - "field": "m_flMinPitch", - "type": 8 - }, - "MaxPitch": { - "field": "m_flMaxPitch", - "type": 8 - }, - "PitchFriction": { - "field": "m_flPitchFriction", - "type": 8 - }, - "PitchBounce": { - "field": "m_flPitchBounce", - "type": 8 - }, - "BaseMass": { - "field": "m_flBaseMass", - "type": 8 - }, - "BaseStiffness": { - "field": "m_flBaseStiffness", - "type": 8 - }, - "BaseDamping": { - "field": "m_flBaseDamping", - "type": 8 - }, - "BaseMinLeft": { - "field": "m_flBaseMinLeft", - "type": 8 - }, - "BaseMaxLeft": { - "field": "m_flBaseMaxLeft", - "type": 8 - }, - "BaseLeftFriction": { - "field": "m_flBaseLeftFriction", - "type": 8 - }, - "BaseMinUp": { - "field": "m_flBaseMinUp", - "type": 8 - }, - "BaseMaxUp": { - "field": "m_flBaseMaxUp", - "type": 8 - }, - "BaseUpFriction": { - "field": "m_flBaseUpFriction", - "type": 8 - }, - "BaseMinForward": { - "field": "m_flBaseMinForward", - "type": 8 - }, - "BaseMaxForward": { - "field": "m_flBaseMaxForward", - "type": 8 - }, - "BaseForwardFriction": { - "field": "m_flBaseForwardFriction", - "type": 8 - }, - "Radius0": { - "field": "m_flRadius0", - "type": 8 - }, - "Radius1": { - "field": "m_flRadius1", - "type": 8 - }, - "Point0": { - "field": "m_vPoint0", - "type": 21 - }, - "Point1": { - "field": "m_vPoint1", - "type": 21 - }, - "CollisionMask": { - "field": "m_nCollisionMask", - "type": 5 - } - }, - "CFeMorphLayer": { - "Name": { - "field": "m_Name", - "type": 14 - }, - "NameHash": { - "field": "m_nNameHash", - "type": 6 - }, - "Nodes": { - "field": "m_Nodes", - "type": 56 - }, - "InitPos": { - "field": "m_InitPos", - "type": 63 - }, - "Gravity": { - "field": "m_Gravity", - "type": 59 - }, - "GoalStrength": { - "field": "m_GoalStrength", - "type": 59 - }, - "GoalDamping": { - "field": "m_GoalDamping", - "type": 59 - } - }, - "CFeNamedJiggleBone": { - "StrParentBone": { - "field": "m_strParentBone", - "type": 14 - }, - "JiggleParent": { - "field": "m_nJiggleParent", - "type": 6 - }, - "JiggleBone": { - "field": "m_jiggleBone", - "classname": "CFeJiggleBone", - "type": 16 - } - }, - "CFeVertexMapBuildArray": {}, - "CRegionSVM": { - "Nodes": { - "field": "m_Nodes", - "type": 57 - } - }, - "CastSphereSATParams_t": { - "RayStart": { - "field": "m_vRayStart", - "type": 21 - }, - "RayDelta": { - "field": "m_vRayDelta", - "type": 21 - }, - "Radius": { - "field": "m_flRadius", - "type": 8 - }, - "MaxFraction": { - "field": "m_flMaxFraction", - "type": 8 - }, - "Scale": { - "field": "m_flScale", - "type": 8 - }, - "Hull": { - "field": "m_pHull", - "classname": "RnHull_t", - "type": 24 - } - }, - "CovMatrix3": { - "Diag": { - "field": "m_vDiag", - "type": 21 - }, - "XY": { - "field": "m_flXY", - "type": 8 - }, - "XZ": { - "field": "m_flXZ", - "type": 8 - }, - "YZ": { - "field": "m_flYZ", - "type": 8 - } - }, - "Dop26_t": { - "Support": { - "field": "m_flSupport", - "type": 37, - "size": 26 - } - }, - "FeAnimStrayRadius_t": { - "Node": { - "field": "nNode", - "type": 34, - "size": 2 - }, - "MaxDist": { - "field": "flMaxDist", - "type": 8 - }, - "RelaxationFactor": { - "field": "flRelaxationFactor", - "type": 8 - } - }, - "FeAntiTunnelProbeBuild_t": { - "Weight": { - "field": "flWeight", - "type": 8 - }, - "ActivationDistance": { - "field": "flActivationDistance", - "type": 8 - }, - "Bias": { - "field": "flBias", - "type": 8 - }, - "Curvature": { - "field": "flCurvature", - "type": 8 - }, - "Flags": { - "field": "nFlags", - "type": 6 - }, - "ProbeNode": { - "field": "nProbeNode", - "type": 5 - }, - "TargetNodes": { - "field": "targetNodes", - "type": 56 - } - }, - "FeAntiTunnelProbe_t": { - "Weight": { - "field": "flWeight", - "type": 8 - }, - "Flags": { - "field": "nFlags", - "type": 6 - }, - "ProbeNode": { - "field": "nProbeNode", - "type": 5 - }, - "Count": { - "field": "nCount", - "type": 5 - }, - "Begin": { - "field": "nBegin", - "type": 6 - }, - "ActivationDistance": { - "field": "flActivationDistance", - "type": 8 - }, - "CurvatureRadius": { - "field": "flCurvatureRadius", - "type": 8 - }, - "Bias": { - "field": "flBias", - "type": 8 - } - }, - "FeAxialEdgeBend_t": { - "Te": { - "field": "te", - "type": 8 - }, - "Tv": { - "field": "tv", - "type": 8 - }, - "Dist": { - "field": "flDist", - "type": 8 - }, - "Weight": { - "field": "flWeight", - "type": 37, - "size": 4 - }, - "Node": { - "field": "nNode", - "type": 34, - "size": 6 - } - }, - "FeBandBendLimit_t": { - "DistMin": { - "field": "flDistMin", - "type": 8 - }, - "DistMax": { - "field": "flDistMax", - "type": 8 - }, - "Node": { - "field": "nNode", - "type": 34, - "size": 6 - } - }, - "FeBoxRigid_t": { - "Node": { - "field": "nNode", - "type": 5 - }, - "CollisionMask": { - "field": "nCollisionMask", - "type": 5 - }, - "Size": { - "field": "vSize", - "type": 21 - }, - "VertexMapIndex": { - "field": "nVertexMapIndex", - "type": 5 - }, - "Flags": { - "field": "nFlags", - "type": 5 - } - }, - "FeBuildBoxRigid_t": { - "Priority": { - "field": "m_nPriority", - "type": 2 - }, - "VertexMapHash": { - "field": "m_nVertexMapHash", - "type": 6 - }, - "Parent": { - "field": "FeBoxRigid_t", - "type": 11 - } - }, - "FeBuildSDFRigid_t": { - "Priority": { - "field": "m_nPriority", - "type": 2 - }, - "VertexMapHash": { - "field": "m_nVertexMapHash", - "type": 6 - }, - "Parent": { - "field": "FeSDFRigid_t", - "type": 11 - } - }, - "FeBuildSphereRigid_t": { - "Priority": { - "field": "m_nPriority", - "type": 2 - }, - "VertexMapHash": { - "field": "m_nVertexMapHash", - "type": 6 - }, - "Parent": { - "field": "FeSphereRigid_t", - "type": 11 - } - }, - "FeBuildTaperedCapsuleRigid_t": { - "Priority": { - "field": "m_nPriority", - "type": 2 - }, - "VertexMapHash": { - "field": "m_nVertexMapHash", - "type": 6 - }, - "Parent": { - "field": "FeTaperedCapsuleRigid_t", - "type": 11 - } - }, - "FeCollisionPlane_t": { - "CtrlParent": { - "field": "nCtrlParent", - "type": 5 - }, - "ChildNode": { - "field": "nChildNode", - "type": 5 - }, - "Plane": { - "field": "m_Plane", - "classname": "RnPlane_t", - "type": 16 - }, - "Strength": { - "field": "flStrength", - "type": 8 - } - }, - "FeCtrlOffset_t": { - "Offset": { - "field": "vOffset", - "type": 21 - }, - "CtrlParent": { - "field": "nCtrlParent", - "type": 5 - }, - "CtrlChild": { - "field": "nCtrlChild", - "type": 5 - } - }, - "FeCtrlOsOffset_t": { - "CtrlParent": { - "field": "nCtrlParent", - "type": 5 - }, - "CtrlChild": { - "field": "nCtrlChild", - "type": 5 - } - }, - "FeCtrlSoftOffset_t": { - "CtrlParent": { - "field": "nCtrlParent", - "type": 5 - }, - "CtrlChild": { - "field": "nCtrlChild", - "type": 5 - }, - "Offset": { - "field": "vOffset", - "type": 21 - }, - "Alpha": { - "field": "flAlpha", - "type": 8 - } - }, - "FeEdgeDesc_t": { - "Edge": { - "field": "nEdge", - "type": 34, - "size": 2 - }, - "Side": { - "field": "nSide", - "type": 34, - "size": 2 - }, - "VirtElem": { - "field": "nVirtElem", - "type": 34, - "size": 2 - } - }, - "FeEffectDesc_t": { - "Name": { - "field": "sName", - "type": 14 - }, - "NameHash": { - "field": "nNameHash", - "type": 6 - }, - "Type": { - "field": "nType", - "type": 2 - } - }, - "FeFitInfluence_t": { - "VertexNode": { - "field": "nVertexNode", - "type": 6 - }, - "Weight": { - "field": "flWeight", - "type": 8 - }, - "MatrixNode": { - "field": "nMatrixNode", - "type": 6 - } - }, - "FeFitMatrix_t": { - "Center": { - "field": "vCenter", - "type": 21 - }, - "End": { - "field": "nEnd", - "type": 5 - }, - "Node": { - "field": "nNode", - "type": 5 - }, - "BeginDynamic": { - "field": "nBeginDynamic", - "type": 5 - } - }, - "FeFitWeight_t": { - "Weight": { - "field": "flWeight", - "type": 8 - }, - "Node": { - "field": "nNode", - "type": 5 - }, - "Dummy": { - "field": "nDummy", - "type": 5 - } - }, - "FeFollowNode_t": { - "ParentNode": { - "field": "nParentNode", - "type": 5 - }, - "ChildNode": { - "field": "nChildNode", - "type": 5 - }, - "Weight": { - "field": "flWeight", - "type": 8 - } - }, - "FeHingeLimitBuild_t": { - "Node": { - "field": "nNode", - "type": 34, - "size": 6 - }, - "Flags": { - "field": "nFlags", - "type": 6 - }, - "LimitCW": { - "field": "flLimitCW", - "type": 8 - }, - "LimitCCW": { - "field": "flLimitCCW", - "type": 8 - } - }, - "FeHingeLimit_t": { - "Node": { - "field": "nNode", - "type": 34, - "size": 6 - }, - "Flags": { - "field": "nFlags", - "type": 6 - }, - "Weight4": { - "field": "flWeight4", - "type": 8 - }, - "Weight5": { - "field": "flWeight5", - "type": 8 - }, - "AngleCenter": { - "field": "flAngleCenter", - "type": 8 - }, - "AngleExtents": { - "field": "flAngleExtents", - "type": 8 - } - }, - "FeKelagerBend2_t": { - "Weight": { - "field": "flWeight", - "type": 37, - "size": 3 - }, - "Height0": { - "field": "flHeight0", - "type": 8 - }, - "Node": { - "field": "nNode", - "type": 34, - "size": 3 - }, - "Reserved": { - "field": "nReserved", - "type": 5 - } - }, - "FeMorphLayerDepr_t": { - "Name": { - "field": "m_Name", - "type": 14 - }, - "NameHash": { - "field": "m_nNameHash", - "type": 6 - }, - "Nodes": { - "field": "m_Nodes", - "type": 56 - }, - "InitPos": { - "field": "m_InitPos", - "type": 63 - }, - "Gravity": { - "field": "m_Gravity", - "type": 59 - }, - "GoalStrength": { - "field": "m_GoalStrength", - "type": 59 - }, - "GoalDamping": { - "field": "m_GoalDamping", - "type": 59 - }, - "Flags": { - "field": "m_nFlags", - "type": 6 - } - }, - "FeNodeBase_t": { - "Node": { - "field": "nNode", - "type": 5 - }, - "Dummy": { - "field": "nDummy", - "type": 34, - "size": 3 - }, - "NodeX0": { - "field": "nNodeX0", - "type": 5 - }, - "NodeX1": { - "field": "nNodeX1", - "type": 5 - }, - "NodeY0": { - "field": "nNodeY0", - "type": 5 - }, - "NodeY1": { - "field": "nNodeY1", - "type": 5 - } - }, - "FeNodeIntegrator_t": { - "PointDamping": { - "field": "flPointDamping", - "type": 8 - }, - "AnimationForceAttraction": { - "field": "flAnimationForceAttraction", - "type": 8 - }, - "AnimationVertexAttraction": { - "field": "flAnimationVertexAttraction", - "type": 8 - }, - "Gravity": { - "field": "flGravity", - "type": 8 - } - }, - "FeNodeReverseOffset_t": { - "Offset": { - "field": "vOffset", - "type": 21 - }, - "BoneCtrl": { - "field": "nBoneCtrl", - "type": 5 - }, - "TargetNode": { - "field": "nTargetNode", - "type": 5 - } - }, - "FeNodeWindBase_t": { - "NodeX0": { - "field": "nNodeX0", - "type": 5 - }, - "NodeX1": { - "field": "nNodeX1", - "type": 5 - }, - "NodeY0": { - "field": "nNodeY0", - "type": 5 - }, - "NodeY1": { - "field": "nNodeY1", - "type": 5 - } - }, - "FeProxyVertexMap_t": { - "Name": { - "field": "m_Name", - "type": 14 - }, - "Weight": { - "field": "m_flWeight", - "type": 8 - } - }, - "FeQuad_t": { - "Node": { - "field": "nNode", - "type": 34, - "size": 4 - }, - "Slack": { - "field": "flSlack", - "type": 8 - }, - "Shape": { - "field": "vShape", - "type": 44, - "size": 4 - } - }, - "FeRigidColliderIndices_t": { - "TaperedCapsuleRigidIndex": { - "field": "m_nTaperedCapsuleRigidIndex", - "type": 5 - }, - "SphereRigidIndex": { - "field": "m_nSphereRigidIndex", - "type": 5 - }, - "BoxRigidIndex": { - "field": "m_nBoxRigidIndex", - "type": 5 - }, - "SDFRigidIndex": { - "field": "m_nSDFRigidIndex", - "type": 5 - }, - "CollisionPlaneIndex": { - "field": "m_nCollisionPlaneIndex", - "type": 5 - } - }, - "FeRodConstraint_t": { - "Node": { - "field": "nNode", - "type": 34, - "size": 2 - }, - "MaxDist": { - "field": "flMaxDist", - "type": 8 - }, - "MinDist": { - "field": "flMinDist", - "type": 8 - }, - "Weight0": { - "field": "flWeight0", - "type": 8 - }, - "RelaxationFactor": { - "field": "flRelaxationFactor", - "type": 8 - } - }, - "FeSDFRigid_t": { - "LocalMin": { - "field": "vLocalMin", - "type": 21 - }, - "LocalMax": { - "field": "vLocalMax", - "type": 21 - }, - "Bounciness": { - "field": "flBounciness", - "type": 8 - }, - "Node": { - "field": "nNode", - "type": 5 - }, - "CollisionMask": { - "field": "nCollisionMask", - "type": 5 - }, - "VertexMapIndex": { - "field": "nVertexMapIndex", - "type": 5 - }, - "Flags": { - "field": "nFlags", - "type": 5 - }, - "Distances": { - "field": "m_Distances", - "type": 59 - }, - "Width": { - "field": "m_nWidth", - "type": 2 - }, - "Height": { - "field": "m_nHeight", - "type": 2 - }, - "Depth": { - "field": "m_nDepth", - "type": 2 - } - }, - "FeSimdAnimStrayRadius_t": { - "Node": { - "field": "nNode", - "type": 34, - "size": 2 - }, - "MaxDist": { - "field": "flMaxDist", - "type": 8 - }, - "RelaxationFactor": { - "field": "flRelaxationFactor", - "type": 8 - } - }, - "FeSimdNodeBase_t": { - "Node": { - "field": "nNode", - "type": 34, - "size": 4 - }, - "NodeX0": { - "field": "nNodeX0", - "type": 34, - "size": 4 - }, - "NodeX1": { - "field": "nNodeX1", - "type": 34, - "size": 4 - }, - "NodeY0": { - "field": "nNodeY0", - "type": 34, - "size": 4 - }, - "NodeY1": { - "field": "nNodeY1", - "type": 34, - "size": 4 - }, - "Dummy": { - "field": "nDummy", - "type": 34, - "size": 4 - } - }, - "FeSimdQuad_t": { - "Node": { - "field": "nNode", - "type": 34, - "size": 4 - }, - "4Slack": { - "field": "f4Slack", - "type": 8 - }, - "4Weights": { - "field": "f4Weights", - "type": 37, - "size": 4 - } - }, - "FeSimdRodConstraintAnim_t": { - "Node": { - "field": "nNode", - "type": 34, - "size": 2 - }, - "4Weight0": { - "field": "f4Weight0", - "type": 8 - }, - "4RelaxationFactor": { - "field": "f4RelaxationFactor", - "type": 8 - } - }, - "FeSimdRodConstraint_t": { - "Node": { - "field": "nNode", - "type": 34, - "size": 2 - }, - "4MaxDist": { - "field": "f4MaxDist", - "type": 8 - }, - "4MinDist": { - "field": "f4MinDist", - "type": 8 - }, - "4Weight0": { - "field": "f4Weight0", - "type": 8 - }, - "4RelaxationFactor": { - "field": "f4RelaxationFactor", - "type": 8 - } - }, - "FeSimdSpringIntegrator_t": { - "Node": { - "field": "nNode", - "type": 34, - "size": 2 - }, - "SpringRestLength": { - "field": "flSpringRestLength", - "type": 8 - }, - "SpringConstant": { - "field": "flSpringConstant", - "type": 8 - }, - "SpringDamping": { - "field": "flSpringDamping", - "type": 8 - }, - "NodeWeight0": { - "field": "flNodeWeight0", - "type": 8 - } - }, - "FeSimdTri_t": { - "Node": { - "field": "nNode", - "type": 35, - "size": 3 - }, - "W1": { - "field": "w1", - "type": 8 - }, - "W2": { - "field": "w2", - "type": 8 - }, - "1x": { - "field": "v1x", - "type": 8 - } - }, - "FeSoftParent_t": { - "Parent": { - "field": "nParent", - "type": 2 - }, - "Alpha": { - "field": "flAlpha", - "type": 8 - } - }, - "FeSourceEdge_t": { - "Node": { - "field": "nNode", - "type": 34, - "size": 2 - } - }, - "FeSphereRigid_t": { - "Sphere": { - "field": "vSphere", - "type": 8 - }, - "Node": { - "field": "nNode", - "type": 5 - }, - "CollisionMask": { - "field": "nCollisionMask", - "type": 5 - }, - "VertexMapIndex": { - "field": "nVertexMapIndex", - "type": 5 - }, - "Flags": { - "field": "nFlags", - "type": 5 - } - }, - "FeSpringIntegrator_t": { - "Node": { - "field": "nNode", - "type": 34, - "size": 2 - }, - "SpringRestLength": { - "field": "flSpringRestLength", - "type": 8 - }, - "SpringConstant": { - "field": "flSpringConstant", - "type": 8 - }, - "SpringDamping": { - "field": "flSpringDamping", - "type": 8 - }, - "NodeWeight0": { - "field": "flNodeWeight0", - "type": 8 - } - }, - "FeStiffHingeBuild_t": { - "MaxAngle": { - "field": "flMaxAngle", - "type": 8 - }, - "Strength": { - "field": "flStrength", - "type": 8 - }, - "MotionBias": { - "field": "flMotionBias", - "type": 37, - "size": 3 - }, - "Node": { - "field": "nNode", - "type": 34, - "size": 3 - } - }, - "FeTaperedCapsuleRigid_t": { - "Sphere": { - "field": "vSphere", - "type": 37, - "size": 2 - }, - "Node": { - "field": "nNode", - "type": 5 - }, - "CollisionMask": { - "field": "nCollisionMask", - "type": 5 - }, - "VertexMapIndex": { - "field": "nVertexMapIndex", - "type": 5 - }, - "Flags": { - "field": "nFlags", - "type": 5 - } - }, - "FeTaperedCapsuleStretch_t": { - "Node": { - "field": "nNode", - "type": 34, - "size": 2 - }, - "CollisionMask": { - "field": "nCollisionMask", - "type": 5 - }, - "Dummy": { - "field": "nDummy", - "type": 5 - }, - "Radius": { - "field": "flRadius", - "type": 37, - "size": 2 - } - }, - "FeTreeChildren_t": { - "Child": { - "field": "nChild", - "type": 34, - "size": 2 - } - }, - "FeTri_t": { - "2": { - "field": "v2", - "type": 22 - }, - "Node": { - "field": "nNode", - "type": 34, - "size": 3 - }, - "W1": { - "field": "w1", - "type": 8 - }, - "W2": { - "field": "w2", - "type": 8 - }, - "1x": { - "field": "v1x", - "type": 8 - } - }, - "FeTwistConstraint_t": { - "NodeOrient": { - "field": "nNodeOrient", - "type": 5 - }, - "NodeEnd": { - "field": "nNodeEnd", - "type": 5 - }, - "TwistRelax": { - "field": "flTwistRelax", - "type": 8 - }, - "SwingRelax": { - "field": "flSwingRelax", - "type": 8 - } - }, - "FeVertexMapBuild_t": { - "VertexMapName": { - "field": "m_VertexMapName", - "type": 14 - }, - "NameHash": { - "field": "m_nNameHash", - "type": 6 - }, - "Color": { - "field": "m_Color", - "type": 19 - }, - "VolumetricSolveStrength": { - "field": "m_flVolumetricSolveStrength", - "type": 8 - }, - "ScaleSourceNode": { - "field": "m_nScaleSourceNode", - "type": 2 - }, - "Weights": { - "field": "m_Weights", - "type": 59 - } - }, - "FeVertexMapDesc_t": { - "Name": { - "field": "sName", - "type": 14 - }, - "NameHash": { - "field": "nNameHash", - "type": 6 - }, - "Color": { - "field": "nColor", - "type": 6 - }, - "Flags": { - "field": "nFlags", - "type": 6 - }, - "VertexBase": { - "field": "nVertexBase", - "type": 5 - }, - "VertexCount": { - "field": "nVertexCount", - "type": 5 - }, - "MapOffset": { - "field": "nMapOffset", - "type": 6 - }, - "NodeListOffset": { - "field": "nNodeListOffset", - "type": 6 - }, - "CenterOfMass": { - "field": "vCenterOfMass", - "type": 21 - }, - "VolumetricSolveStrength": { - "field": "flVolumetricSolveStrength", - "type": 8 - }, - "ScaleSourceNode": { - "field": "nScaleSourceNode", - "type": 1 - }, - "NodeListCount": { - "field": "nNodeListCount", - "type": 5 - } - }, - "FeWeightedNode_t": { - "Node": { - "field": "nNode", - "type": 5 - }, - "Weight": { - "field": "nWeight", - "type": 5 - } - }, - "FeWorldCollisionParams_t": { - "WorldFriction": { - "field": "flWorldFriction", - "type": 8 - }, - "GroundFriction": { - "field": "flGroundFriction", - "type": 8 - }, - "ListBegin": { - "field": "nListBegin", - "type": 5 - }, - "ListEnd": { - "field": "nListEnd", - "type": 5 - } - }, - "FourCovMatrices3": { - "XY": { - "field": "m_flXY", - "type": 8 - }, - "XZ": { - "field": "m_flXZ", - "type": 8 - }, - "YZ": { - "field": "m_flYZ", - "type": 8 - } - }, - "OldFeEdge_t": { - "K": { - "field": "m_flK", - "type": 37, - "size": 3 - }, - "InvA": { - "field": "invA", - "type": 8 - }, - "T": { - "field": "t", - "type": 8 - }, - "ThetaRelaxed": { - "field": "flThetaRelaxed", - "type": 8 - }, - "ThetaFactor": { - "field": "flThetaFactor", - "type": 8 - }, - "C01": { - "field": "c01", - "type": 8 - }, - "C02": { - "field": "c02", - "type": 8 - }, - "C03": { - "field": "c03", - "type": 8 - }, - "C04": { - "field": "c04", - "type": 8 - }, - "AxialModelDist": { - "field": "flAxialModelDist", - "type": 8 - }, - "AxialModelWeights": { - "field": "flAxialModelWeights", - "type": 37, - "size": 4 - }, - "Node": { - "field": "m_nNode", - "type": 34, - "size": 4 - } - }, - "PhysFeModelDesc_t": { - "CtrlHash": { - "field": "m_CtrlHash", - "type": 57 - }, - "CtrlName": { - "field": "m_CtrlName", - "type": 50 - }, - "StaticNodeFlags": { - "field": "m_nStaticNodeFlags", - "type": 6 - }, - "DynamicNodeFlags": { - "field": "m_nDynamicNodeFlags", - "type": 6 - }, - "LocalForce": { - "field": "m_flLocalForce", - "type": 8 - }, - "LocalRotation": { - "field": "m_flLocalRotation", - "type": 8 - }, - "NodeCount": { - "field": "m_nNodeCount", - "type": 5 - }, - "StaticNodes": { - "field": "m_nStaticNodes", - "type": 5 - }, - "RotLockStaticNodes": { - "field": "m_nRotLockStaticNodes", - "type": 5 - }, - "FirstPositionDrivenNode": { - "field": "m_nFirstPositionDrivenNode", - "type": 5 - }, - "SimdTriCount1": { - "field": "m_nSimdTriCount1", - "type": 5 - }, - "SimdTriCount2": { - "field": "m_nSimdTriCount2", - "type": 5 - }, - "SimdQuadCount1": { - "field": "m_nSimdQuadCount1", - "type": 5 - }, - "SimdQuadCount2": { - "field": "m_nSimdQuadCount2", - "type": 5 - }, - "QuadCount1": { - "field": "m_nQuadCount1", - "type": 5 - }, - "QuadCount2": { - "field": "m_nQuadCount2", - "type": 5 - }, - "TreeDepth": { - "field": "m_nTreeDepth", - "type": 5 - }, - "NodeBaseJiggleboneDependsCount": { - "field": "m_nNodeBaseJiggleboneDependsCount", - "type": 5 - }, - "RopeCount": { - "field": "m_nRopeCount", - "type": 5 - }, - "Ropes": { - "field": "m_Ropes", - "type": 56 - }, - "AntiTunnelTargetNodes": { - "field": "m_AntiTunnelTargetNodes", - "type": 56 - }, - "NodeInvMasses": { - "field": "m_NodeInvMasses", - "type": 59 - }, - "LegacyStretchForce": { - "field": "m_LegacyStretchForce", - "type": 59 - }, - "NodeCollisionRadii": { - "field": "m_NodeCollisionRadii", - "type": 59 - }, - "DynNodeFriction": { - "field": "m_DynNodeFriction", - "type": 59 - }, - "LocalRotation1": { - "field": "m_LocalRotation", - "type": 59 - }, - "LocalForce1": { - "field": "m_LocalForce", - "type": 59 - }, - "WorldCollisionNodes": { - "field": "m_WorldCollisionNodes", - "type": 56 - }, - "TreeParents": { - "field": "m_TreeParents", - "type": 56 - }, - "TreeCollisionMasks": { - "field": "m_TreeCollisionMasks", - "type": 56 - }, - "FreeNodes": { - "field": "m_FreeNodes", - "type": 56 - }, - "SourceElems": { - "field": "m_SourceElems", - "type": 56 - }, - "GoalDampedSpringIntegrators": { - "field": "m_GoalDampedSpringIntegrators", - "type": 57 - }, - "TriCount1": { - "field": "m_nTriCount1", - "type": 5 - }, - "TriCount2": { - "field": "m_nTriCount2", - "type": 5 - }, - "ReservedUint8": { - "field": "m_nReservedUint8", - "type": 4 - }, - "ExtraPressureIterations": { - "field": "m_nExtraPressureIterations", - "type": 4 - }, - "ExtraGoalIterations": { - "field": "m_nExtraGoalIterations", - "type": 4 - }, - "ExtraIterations": { - "field": "m_nExtraIterations", - "type": 4 - }, - "DynNodeVertexSet": { - "field": "m_DynNodeVertexSet", - "type": 55 - }, - "VertexSetNames": { - "field": "m_VertexSetNames", - "type": 57 - }, - "MorphSetData": { - "field": "m_MorphSetData", - "type": 55 - }, - "VertexMapValues": { - "field": "m_VertexMapValues", - "type": 55 - }, - "LockToGoal": { - "field": "m_LockToGoal", - "type": 56 - }, - "SkelParents": { - "field": "m_SkelParents", - "type": 52 - }, - "InternalPressure": { - "field": "m_flInternalPressure", - "type": 8 - }, - "DefaultTimeDilation": { - "field": "m_flDefaultTimeDilation", - "type": 8 - }, - "Windage": { - "field": "m_flWindage", - "type": 8 - }, - "WindDrag": { - "field": "m_flWindDrag", - "type": 8 - }, - "DefaultSurfaceStretch": { - "field": "m_flDefaultSurfaceStretch", - "type": 8 - }, - "DefaultThreadStretch": { - "field": "m_flDefaultThreadStretch", - "type": 8 - }, - "DefaultGravityScale": { - "field": "m_flDefaultGravityScale", - "type": 8 - }, - "DefaultVelAirDrag": { - "field": "m_flDefaultVelAirDrag", - "type": 8 - }, - "DefaultExpAirDrag": { - "field": "m_flDefaultExpAirDrag", - "type": 8 - }, - "DefaultVelQuadAirDrag": { - "field": "m_flDefaultVelQuadAirDrag", - "type": 8 - }, - "DefaultExpQuadAirDrag": { - "field": "m_flDefaultExpQuadAirDrag", - "type": 8 - }, - "RodVelocitySmoothRate": { - "field": "m_flRodVelocitySmoothRate", - "type": 8 - }, - "QuadVelocitySmoothRate": { - "field": "m_flQuadVelocitySmoothRate", - "type": 8 - }, - "AddWorldCollisionRadius": { - "field": "m_flAddWorldCollisionRadius", - "type": 8 - }, - "DefaultVolumetricSolveAmount": { - "field": "m_flDefaultVolumetricSolveAmount", - "type": 8 - }, - "MotionSmoothCDT": { - "field": "m_flMotionSmoothCDT", - "type": 8 - }, - "LocalDrag1": { - "field": "m_flLocalDrag1", - "type": 8 - }, - "RodVelocitySmoothIterations": { - "field": "m_nRodVelocitySmoothIterations", - "type": 5 - }, - "QuadVelocitySmoothIterations": { - "field": "m_nQuadVelocitySmoothIterations", - "type": 5 - } - }, - "RnBlendVertex_t": { - "Weight0": { - "field": "m_nWeight0", - "type": 5 - }, - "Index0": { - "field": "m_nIndex0", - "type": 5 - }, - "Weight1": { - "field": "m_nWeight1", - "type": 5 - }, - "Index1": { - "field": "m_nIndex1", - "type": 5 - }, - "Weight2": { - "field": "m_nWeight2", - "type": 5 - }, - "Index2": { - "field": "m_nIndex2", - "type": 5 - }, - "Flags": { - "field": "m_nFlags", - "type": 5 - }, - "TargetIndex": { - "field": "m_nTargetIndex", - "type": 5 - } - }, - "RnBodyDesc_t": { - "DebugName": { - "field": "m_sDebugName", - "type": 14 - }, - "Position": { - "field": "m_vPosition", - "type": 21 - }, - "LinearVelocity": { - "field": "m_vLinearVelocity", - "type": 21 - }, - "AngularVelocity": { - "field": "m_vAngularVelocity", - "type": 21 - }, - "LocalMassCenter": { - "field": "m_vLocalMassCenter", - "type": 21 - }, - "LocalInertiaInv": { - "field": "m_LocalInertiaInv", - "type": 42, - "size": 3 - }, - "MassInv": { - "field": "m_flMassInv", - "type": 8 - }, - "GameMass": { - "field": "m_flGameMass", - "type": 8 - }, - "InertiaScaleInv": { - "field": "m_flInertiaScaleInv", - "type": 8 - }, - "LinearDamping": { - "field": "m_flLinearDamping", - "type": 8 - }, - "AngularDamping": { - "field": "m_flAngularDamping", - "type": 8 - }, - "LinearDrag": { - "field": "m_flLinearDrag", - "type": 8 - }, - "AngularDrag": { - "field": "m_flAngularDrag", - "type": 8 - }, - "LinearBuoyancyDrag": { - "field": "m_flLinearBuoyancyDrag", - "type": 8 - }, - "AngularBuoyancyDrag": { - "field": "m_flAngularBuoyancyDrag", - "type": 8 - }, - "LastAwakeForceAccum": { - "field": "m_vLastAwakeForceAccum", - "type": 21 - }, - "LastAwakeTorqueAccum": { - "field": "m_vLastAwakeTorqueAccum", - "type": 21 - }, - "BuoyancyFactor": { - "field": "m_flBuoyancyFactor", - "type": 8 - }, - "GravityScale": { - "field": "m_flGravityScale", - "type": 8 - }, - "TimeScale": { - "field": "m_flTimeScale", - "type": 8 - }, - "BodyType": { - "field": "m_nBodyType", - "type": 2 - }, - "GameIndex": { - "field": "m_nGameIndex", - "type": 6 - }, - "GameFlags": { - "field": "m_nGameFlags", - "type": 6 - }, - "MinVelocityIterations": { - "field": "m_nMinVelocityIterations", - "type": 0 - }, - "MinPositionIterations": { - "field": "m_nMinPositionIterations", - "type": 0 - }, - "MassPriority": { - "field": "m_nMassPriority", - "type": 0 - }, - "Enabled": { - "field": "m_bEnabled", - "type": 10 - }, - "Sleeping": { - "field": "m_bSleeping", - "type": 10 - }, - "IsContinuousEnabled": { - "field": "m_bIsContinuousEnabled", - "type": 10 - }, - "DragEnabled": { - "field": "m_bDragEnabled", - "type": 10 - }, - "BuoyancyDragEnabled": { - "field": "m_bBuoyancyDragEnabled", - "type": 10 - }, - "GravityDisabled": { - "field": "m_bGravityDisabled", - "type": 10 - }, - "SpeculativeEnabled": { - "field": "m_bSpeculativeEnabled", - "type": 10 - }, - "HasShadowController": { - "field": "m_bHasShadowController", - "type": 10 - } - }, - "RnCapsuleDesc_t": { - "Capsule": { - "field": "m_Capsule", - "classname": "RnCapsule_t", - "type": 16 - }, - "Parent": { - "field": "RnShapeDesc_t", - "type": 11 - } - }, - "RnCapsule_t": { - "Center": { - "field": "m_vCenter", - "type": 42, - "size": 2 - }, - "Radius": { - "field": "m_flRadius", - "type": 8 - } - }, - "RnFace_t": { - "Edge": { - "field": "m_nEdge", - "type": 4 - } - }, - "RnHalfEdge_t": { - "Next": { - "field": "m_nNext", - "type": 4 - }, - "Twin": { - "field": "m_nTwin", - "type": 4 - }, - "Origin": { - "field": "m_nOrigin", - "type": 4 - }, - "Face": { - "field": "m_nFace", - "type": 4 - } - }, - "RnHullDesc_t": { - "Hull": { - "field": "m_Hull", - "classname": "RnHull_t", - "type": 16 - }, - "Parent": { - "field": "RnShapeDesc_t", - "type": 11 - } - }, - "RnHull_t": { - "Centroid": { - "field": "m_vCentroid", - "type": 21 - }, - "MaxAngularRadius": { - "field": "m_flMaxAngularRadius", - "type": 8 - }, - "Bounds": { - "field": "m_Bounds", - "classname": "AABB_t", - "type": 16 - }, - "OrthographicAreas": { - "field": "m_vOrthographicAreas", - "type": 21 - }, - "Volume": { - "field": "m_flVolume", - "type": 8 - }, - "SurfaceArea": { - "field": "m_flSurfaceArea", - "type": 8 - }, - "VertexPositions": { - "field": "m_VertexPositions", - "type": 63 - }, - "Flags": { - "field": "m_nFlags", - "type": 6 - }, - "RegionSVM": { - "field": "m_pRegionSVM", - "classname": "CRegionSVM", - "type": 24 - } - }, - "RnMeshDesc_t": { - "Mesh": { - "field": "m_Mesh", - "classname": "RnMesh_t", - "type": 16 - }, - "Parent": { - "field": "RnShapeDesc_t", - "type": 11 - } - }, - "RnMesh_t": { - "Min": { - "field": "m_vMin", - "type": 21 - }, - "Max": { - "field": "m_vMax", - "type": 21 - }, - "Materials": { - "field": "m_Materials", - "type": 55 - }, - "OrthographicAreas": { - "field": "m_vOrthographicAreas", - "type": 21 - }, - "Flags": { - "field": "m_nFlags", - "type": 6 - }, - "DebugFlags": { - "field": "m_nDebugFlags", - "type": 6 - } - }, - "RnNode_t": { - "Min": { - "field": "m_vMin", - "type": 21 - }, - "Children": { - "field": "m_nChildren", - "type": 6 - }, - "Max": { - "field": "m_vMax", - "type": 21 - }, - "TriangleOffset": { - "field": "m_nTriangleOffset", - "type": 6 - } - }, - "RnPlane_t": { - "Normal": { - "field": "m_vNormal", - "type": 21 - }, - "Offset": { - "field": "m_flOffset", - "type": 8 - } - }, - "RnShapeDesc_t": { - "CollisionAttributeIndex": { - "field": "m_nCollisionAttributeIndex", - "type": 6 - }, - "SurfacePropertyIndex": { - "field": "m_nSurfacePropertyIndex", - "type": 6 - }, - "UserFriendlyName": { - "field": "m_UserFriendlyName", - "type": 14 - }, - "UserFriendlyNameSealed": { - "field": "m_bUserFriendlyNameSealed", - "type": 10 - }, - "UserFriendlyNameLong": { - "field": "m_bUserFriendlyNameLong", - "type": 10 - }, - "ToolMaterialHash": { - "field": "m_nToolMaterialHash", - "type": 6 - } - }, - "RnSoftbodyCapsule_t": { - "Center": { - "field": "m_vCenter", - "type": 42, - "size": 2 - }, - "Radius": { - "field": "m_flRadius", - "type": 8 - }, - "Particle": { - "field": "m_nParticle", - "type": 34, - "size": 2 - } - }, - "RnSoftbodyParticle_t": { - "MassInv": { - "field": "m_flMassInv", - "type": 8 - } - }, - "RnSoftbodySpring_t": { - "Particle": { - "field": "m_nParticle", - "type": 34, - "size": 2 - }, - "Length": { - "field": "m_flLength", - "type": 8 - } - }, - "RnSphereDesc_t": { - "Parent": { - "field": "RnShapeDesc_t", - "type": 11 - } - }, - "RnTriangle_t": { - "Index": { - "field": "m_nIndex", - "type": 31, - "size": 3 - } - }, - "RnVertex_t": { - "Edge": { - "field": "m_nEdge", - "type": 4 - } - }, - "RnWing_t": { - "Index": { - "field": "m_nIndex", - "type": 31, - "size": 3 - } - }, - "VertexPositionColor_t": { - "Position": { - "field": "m_vPosition", - "type": 21 - } - }, - "VertexPositionNormal_t": { - "Position": { - "field": "m_vPosition", - "type": 21 - }, - "Normal": { - "field": "m_vNormal", - "type": 21 - } - }, - "CTestDomainDerived_Cursor": { - "CursorValueA": { - "field": "m_nCursorValueA", - "type": 2 - }, - "CursorValueB": { - "field": "m_nCursorValueB", - "type": 2 - }, - "Parent": { - "field": "CPulseExecCursor", - "type": 11 - } - }, - "FakeEntityDerivedA_tAPI": {}, - "FakeEntityDerivedB_tAPI": {}, - "FakeEntity_tAPI": {}, - "IGapHost_Cursor": { - "Parent": { - "field": "IGapHost_ExecLog", - "type": 11 - } - }, - "IGapHost_ExecLog": {}, - "IGapHost_YieldingCursor": { - "Parent": { - "field": "IGapHost_Cursor", - "type": 11 - } - }, - "SignatureOutflow_Continue": { - "Parent": { - "field": "CPulse_OutflowConnection", - "type": 11 - } - }, - "SignatureOutflow_Resume": { - "Parent": { - "field": "CPulse_ResumePoint", - "type": 11 - } - }, - "RenderInputLayoutField_t": { - "SemanticName": { - "field": "m_pSemanticName", - "type": 33, - "size": 32 - }, - "SemanticIndex": { - "field": "m_nSemanticIndex", - "type": 2 - }, - "Format": { - "field": "m_Format", - "type": 6 - }, - "Offset": { - "field": "m_nOffset", - "type": 2 - }, - "Slot": { - "field": "m_nSlot", - "type": 2 - }, - "SlotType": { - "field": "m_nSlotType", - "type": 6 - }, - "InstanceStepRate": { - "field": "m_nInstanceStepRate", - "type": 2 - } - }, - "VsInputSignatureElement_t": { - "Name": { - "field": "m_pName", - "type": 15, - "size": 64 - }, - "Semantic": { - "field": "m_pSemantic", - "type": 15, - "size": 64 - }, - "D3DSemanticName": { - "field": "m_pD3DSemanticName", - "type": 15, - "size": 64 - }, - "D3DSemanticIndex": { - "field": "m_nD3DSemanticIndex", - "type": 2 - } - }, - "VsInputSignature_t": {}, - "CExampleSchemaVData_Monomorphic": { - "Example1": { - "field": "m_nExample1", - "type": 2 - }, - "Example2": { - "field": "m_nExample2", - "type": 2 - } - }, - "CExampleSchemaVData_PolymorphicBase": { - "Base": { - "field": "m_nBase", - "type": 2 - } - }, - "CExampleSchemaVData_PolymorphicDerivedA": { - "DerivedA": { - "field": "m_nDerivedA", - "type": 2 - }, - "Parent": { - "field": "CExampleSchemaVData_PolymorphicBase", - "type": 11 - } - }, - "CExampleSchemaVData_PolymorphicDerivedB": { - "DerivedB": { - "field": "m_nDerivedB", - "type": 2 - }, - "Parent": { - "field": "CExampleSchemaVData_PolymorphicBase", - "type": 11 - } - }, - "ResourceId_t": { - "Value": { - "field": "m_Value", - "type": 7 - } - }, - "ManifestTestResource_t": { - "Name": { - "field": "m_name", - "type": 14 - } - }, - "TestResource_t": { - "Name": { - "field": "m_name", - "type": 14 - } - }, - "CSSDSEndFrameViewInfo": { - "ViewId": { - "field": "m_nViewId", - "type": 7 - }, - "ViewName": { - "field": "m_ViewName", - "type": 14 - } - }, - "CSSDSMsg_EndFrame": {}, - "CSSDSMsg_LayerBase": { - "ViewId": { - "field": "m_viewId", - "classname": "SceneViewId_t", - "type": 16 - }, - "ViewName": { - "field": "m_ViewName", - "type": 14 - }, - "LayerIndex": { - "field": "m_nLayerIndex", - "type": 2 - }, - "LayerId": { - "field": "m_nLayerId", - "type": 7 - }, - "LayerName": { - "field": "m_LayerName", - "type": 14 - }, - "DisplayText": { - "field": "m_displayText", - "type": 14 - } - }, - "CSSDSMsg_PostLayer": { - "Parent": { - "field": "CSSDSMsg_LayerBase", - "type": 11 - } - }, - "CSSDSMsg_PreLayer": { - "Parent": { - "field": "CSSDSMsg_LayerBase", - "type": 11 - } - }, - "CSSDSMsg_ViewRender": { - "ViewId": { - "field": "m_viewId", - "classname": "SceneViewId_t", - "type": 16 - }, - "ViewName": { - "field": "m_ViewName", - "type": 14 - } - }, - "CSSDSMsg_ViewTarget": { - "Name": { - "field": "m_Name", - "type": 14 - }, - "TextureId": { - "field": "m_TextureId", - "type": 7 - }, - "Width": { - "field": "m_nWidth", - "type": 2 - }, - "Height": { - "field": "m_nHeight", - "type": 2 - }, - "RequestedWidth": { - "field": "m_nRequestedWidth", - "type": 2 - }, - "RequestedHeight": { - "field": "m_nRequestedHeight", - "type": 2 - }, - "NumMipLevels": { - "field": "m_nNumMipLevels", - "type": 2 - }, - "Depth": { - "field": "m_nDepth", - "type": 2 - }, - "MultisampleNumSamples": { - "field": "m_nMultisampleNumSamples", - "type": 2 - }, - "Format": { - "field": "m_nFormat", - "type": 2 - } - }, - "CSSDSMsg_ViewTargetList": { - "ViewId": { - "field": "m_viewId", - "classname": "SceneViewId_t", - "type": 16 - }, - "ViewName": { - "field": "m_ViewName", - "type": 14 - } - }, - "SceneViewId_t": { - "ViewId": { - "field": "m_nViewId", - "type": 7 - }, - "FrameCount": { - "field": "m_nFrameCount", - "type": 7 - } - }, - "AutoRoomDoorwayPairs_t": { - "P1": { - "field": "vP1", - "type": 21 - }, - "P2": { - "field": "vP2", - "type": 21 - } - }, - "CAISound": { - "SoundType": { - "field": "m_iSoundType", - "type": 5 - }, - "SoundFlags": { - "field": "m_iSoundFlags", - "type": 5 - }, - "Volume": { - "field": "m_iVolume", - "type": 2 - }, - "SoundIndex": { - "field": "m_iSoundIndex", - "type": 2 - }, - "Duration": { - "field": "m_flDuration", - "type": 8 - }, - "ProxyEntityName": { - "field": "m_iszProxyEntityName", - "type": 13 - }, - "Parent": { - "field": "CPointEntity", - "type": 11 - } - }, - "CAI_ChangeHintGroup": { - "SearchType": { - "field": "m_iSearchType", - "type": 2 - }, - "StrSearchName": { - "field": "m_strSearchName", - "type": 13 - }, - "StrNewHintGroup": { - "field": "m_strNewHintGroup", - "type": 13 - }, - "Radius": { - "field": "m_flRadius", - "type": 8 - }, - "Parent": { - "field": "CBaseEntity", - "type": 11 - } - }, - "CAI_Expresser": { - "StopTalkTime": { - "field": "m_flStopTalkTime", - "type": 8 - }, - "StopTalkTimeWithoutDelay": { - "field": "m_flStopTalkTimeWithoutDelay", - "type": 8 - }, - "BlockedTalkTime": { - "field": "m_flBlockedTalkTime", - "type": 8 - }, - "VoicePitch": { - "field": "m_voicePitch", - "type": 2 - }, - "LastTimeAcceptedSpeak": { - "field": "m_flLastTimeAcceptedSpeak", - "type": 8 - }, - "AllowSpeakingInterrupts": { - "field": "m_bAllowSpeakingInterrupts", - "type": 10 - }, - "ConsiderSceneInvolvementAsSpeech": { - "field": "m_bConsiderSceneInvolvementAsSpeech", - "type": 10 - }, - "SceneEntityDisabled": { - "field": "m_bSceneEntityDisabled", - "type": 10 - }, - "LastSpokenPriority": { - "field": "m_nLastSpokenPriority", - "type": 2 - }, - "Outer": { - "field": "m_pOuter", - "classname": "CBaseFlex", - "type": 24 - } - }, - "CAI_ExpresserWithFollowup": { - "PostponedFollowup": { - "field": "m_pPostponedFollowup", - "classname": "ResponseFollowup", - "type": 24 - }, - "Parent": { - "field": "CAI_Expresser", - "type": 11 - } - }, - "CAK47": { - "Parent": { - "field": "CCSWeaponBaseGun", - "type": 11 - } - }, - "CAmbientGeneric": { - "Radius": { - "field": "m_radius", - "type": 8 - }, - "MaxRadius": { - "field": "m_flMaxRadius", - "type": 8 - }, - "SoundLevel": { - "field": "m_iSoundLevel", - "type": 6 - }, - "Dpv": { - "field": "m_dpv", - "classname": "dynpitchvol_t", - "type": 16 - }, - "Active": { - "field": "m_fActive", - "type": 10 - }, - "Looping": { - "field": "m_fLooping", - "type": 10 - }, - "Sound": { - "field": "m_iszSound", - "type": 13 - }, - "SourceEntName": { - "field": "m_sSourceEntName", - "type": 13 - }, - "SoundSource": { - "field": "m_hSoundSource", - "type": 17, - "classname": "CBaseEntity" - }, - "SoundSourceEntIndex": { - "field": "m_nSoundSourceEntIndex", - "type": 2 - }, - "Parent": { - "field": "CPointEntity", - "type": 11 - } - }, - "CAttributeContainer": { - "Item": { - "field": "m_Item", - "classname": "CEconItemView", - "type": 16 - }, - "Parent": { - "field": "CAttributeManager", - "type": 11 - } - }, - "CBarnLight": { - "Enabled": { - "field": "m_bEnabled", - "type": 10 - }, - "ColorMode": { - "field": "m_nColorMode", - "type": 2 - }, - "Color": { - "field": "m_Color", - "type": 19 - }, - "ColorTemperature": { - "field": "m_flColorTemperature", - "type": 8 - }, - "Brightness": { - "field": "m_flBrightness", - "type": 8 - }, - "BrightnessScale": { - "field": "m_flBrightnessScale", - "type": 8 - }, - "DirectLight": { - "field": "m_nDirectLight", - "type": 2 - }, - "BakedShadowIndex": { - "field": "m_nBakedShadowIndex", - "type": 2 - }, - "LuminaireShape": { - "field": "m_nLuminaireShape", - "type": 2 - }, - "LuminaireSize": { - "field": "m_flLuminaireSize", - "type": 8 - }, - "LuminaireAnisotropy": { - "field": "m_flLuminaireAnisotropy", - "type": 8 - }, - "LightStyleString": { - "field": "m_LightStyleString", - "type": 14 - }, - "LightStyleStartTime": { - "field": "m_flLightStyleStartTime", - "type": 8 - }, - "QueuedLightStyleStrings": { - "field": "m_QueuedLightStyleStrings", - "type": 50 - }, - "LightStyleEvents": { - "field": "m_LightStyleEvents", - "type": 50 - }, - "StyleEvent": { - "field": "m_StyleEvent", - "type": 45, - "size": 4 - }, - "Shape": { - "field": "m_flShape", - "type": 8 - }, - "SoftX": { - "field": "m_flSoftX", - "type": 8 - }, - "SoftY": { - "field": "m_flSoftY", - "type": 8 - }, - "Skirt": { - "field": "m_flSkirt", - "type": 8 - }, - "SkirtNear": { - "field": "m_flSkirtNear", - "type": 8 - }, - "SizeParams": { - "field": "m_vSizeParams", - "type": 21 - }, - "Range": { - "field": "m_flRange", - "type": 8 - }, - "Shear": { - "field": "m_vShear", - "type": 21 - }, - "BakeSpecularToCubemaps": { - "field": "m_nBakeSpecularToCubemaps", - "type": 2 - }, - "BakeSpecularToCubemapsSize": { - "field": "m_vBakeSpecularToCubemapsSize", - "type": 21 - }, - "CastShadows": { - "field": "m_nCastShadows", - "type": 2 - }, - "ShadowMapSize": { - "field": "m_nShadowMapSize", - "type": 2 - }, - "ShadowPriority": { - "field": "m_nShadowPriority", - "type": 2 - }, - "ContactShadow": { - "field": "m_bContactShadow", - "type": 10 - }, - "BounceLight": { - "field": "m_nBounceLight", - "type": 2 - }, - "BounceScale": { - "field": "m_flBounceScale", - "type": 8 - }, - "MinRoughness": { - "field": "m_flMinRoughness", - "type": 8 - }, - "AlternateColor": { - "field": "m_vAlternateColor", - "type": 21 - }, - "AlternateColorBrightness": { - "field": "m_fAlternateColorBrightness", - "type": 8 - }, - "Fog": { - "field": "m_nFog", - "type": 2 - }, - "FogStrength": { - "field": "m_flFogStrength", - "type": 8 - }, - "FogShadows": { - "field": "m_nFogShadows", - "type": 2 - }, - "FogScale": { - "field": "m_flFogScale", - "type": 8 - }, - "FogMixedShadows": { - "field": "m_bFogMixedShadows", - "type": 10 - }, - "FadeSizeStart": { - "field": "m_flFadeSizeStart", - "type": 8 - }, - "FadeSizeEnd": { - "field": "m_flFadeSizeEnd", - "type": 8 - }, - "ShadowFadeSizeStart": { - "field": "m_flShadowFadeSizeStart", - "type": 8 - }, - "ShadowFadeSizeEnd": { - "field": "m_flShadowFadeSizeEnd", - "type": 8 - }, - "PrecomputedFieldsValid": { - "field": "m_bPrecomputedFieldsValid", - "type": 10 - }, - "PrecomputedBoundsMins": { - "field": "m_vPrecomputedBoundsMins", - "type": 21 - }, - "PrecomputedBoundsMaxs": { - "field": "m_vPrecomputedBoundsMaxs", - "type": 21 - }, - "PrecomputedOBBOrigin": { - "field": "m_vPrecomputedOBBOrigin", - "type": 21 - }, - "PrecomputedOBBAngles": { - "field": "m_vPrecomputedOBBAngles", - "type": 20 - }, - "PrecomputedOBBExtent": { - "field": "m_vPrecomputedOBBExtent", - "type": 21 - }, - "PrecomputedSubFrusta": { - "field": "m_nPrecomputedSubFrusta", - "type": 2 - }, - "PrecomputedOBBOrigin0": { - "field": "m_vPrecomputedOBBOrigin0", - "type": 21 - }, - "PrecomputedOBBAngles0": { - "field": "m_vPrecomputedOBBAngles0", - "type": 20 - }, - "PrecomputedOBBExtent0": { - "field": "m_vPrecomputedOBBExtent0", - "type": 21 - }, - "PrecomputedOBBOrigin1": { - "field": "m_vPrecomputedOBBOrigin1", - "type": 21 - }, - "PrecomputedOBBAngles1": { - "field": "m_vPrecomputedOBBAngles1", - "type": 20 - }, - "PrecomputedOBBExtent1": { - "field": "m_vPrecomputedOBBExtent1", - "type": 21 - }, - "PrecomputedOBBOrigin2": { - "field": "m_vPrecomputedOBBOrigin2", - "type": 21 - }, - "PrecomputedOBBAngles2": { - "field": "m_vPrecomputedOBBAngles2", - "type": 20 - }, - "PrecomputedOBBExtent2": { - "field": "m_vPrecomputedOBBExtent2", - "type": 21 - }, - "PrecomputedOBBOrigin3": { - "field": "m_vPrecomputedOBBOrigin3", - "type": 21 - }, - "PrecomputedOBBAngles3": { - "field": "m_vPrecomputedOBBAngles3", - "type": 20 - }, - "PrecomputedOBBExtent3": { - "field": "m_vPrecomputedOBBExtent3", - "type": 21 - }, - "PrecomputedOBBOrigin4": { - "field": "m_vPrecomputedOBBOrigin4", - "type": 21 - }, - "PrecomputedOBBAngles4": { - "field": "m_vPrecomputedOBBAngles4", - "type": 20 - }, - "PrecomputedOBBExtent4": { - "field": "m_vPrecomputedOBBExtent4", - "type": 21 - }, - "PrecomputedOBBOrigin5": { - "field": "m_vPrecomputedOBBOrigin5", - "type": 21 - }, - "PrecomputedOBBAngles5": { - "field": "m_vPrecomputedOBBAngles5", - "type": 20 - }, - "PrecomputedOBBExtent5": { - "field": "m_vPrecomputedOBBExtent5", - "type": 21 - }, - "PvsModifyEntity": { - "field": "m_bPvsModifyEntity", - "type": 10 - }, - "VisClusters": { - "field": "m_VisClusters", - "type": 56 - }, - "Parent": { - "field": "CBaseModelEntity", - "type": 11 - } - }, - "CBaseButton": { - "MoveEntitySpace": { - "field": "m_angMoveEntitySpace", - "type": 20 - }, - "StayPushed": { - "field": "m_fStayPushed", - "type": 10 - }, - "Rotating": { - "field": "m_fRotating", - "type": 10 - }, - "Ls": { - "field": "m_ls", - "classname": "locksound_t", - "type": 16 - }, - "UseSound": { - "field": "m_sUseSound", - "type": 13 - }, - "LockedSound": { - "field": "m_sLockedSound", - "type": 13 - }, - "UnlockedSound": { - "field": "m_sUnlockedSound", - "type": 13 - }, - "OverrideAnticipationName": { - "field": "m_sOverrideAnticipationName", - "type": 13 - }, - "Locked": { - "field": "m_bLocked", - "type": 10 - }, - "Disabled": { - "field": "m_bDisabled", - "type": 10 - }, - "UseLockedTime": { - "field": "m_flUseLockedTime", - "type": 8 - }, - "SolidBsp": { - "field": "m_bSolidBsp", - "type": 10 - }, - "OnDamaged": { - "field": "m_OnDamaged", - "classname": "CEntityIOOutput", - "type": 16 - }, - "OnPressed": { - "field": "m_OnPressed", - "classname": "CEntityIOOutput", - "type": 16 - }, - "OnUseLocked": { - "field": "m_OnUseLocked", - "classname": "CEntityIOOutput", - "type": 16 - }, - "OnIn": { - "field": "m_OnIn", - "classname": "CEntityIOOutput", - "type": 16 - }, - "OnOut": { - "field": "m_OnOut", - "classname": "CEntityIOOutput", - "type": 16 - }, - "State": { - "field": "m_nState", - "type": 2 - }, - "Constraint": { - "field": "m_hConstraint", - "type": 17, - "classname": "CEntityInstance" - }, - "ConstraintParent": { - "field": "m_hConstraintParent", - "type": 17, - "classname": "CEntityInstance" - }, - "ForceNpcExclude": { - "field": "m_bForceNpcExclude", - "type": 10 - }, - "GlowEntity": { - "field": "m_sGlowEntity", - "type": 13 - }, - "GlowEntity1": { - "field": "m_glowEntity", - "type": 17, - "classname": "CBaseModelEntity" - }, - "Usable": { - "field": "m_usable", - "type": 10 - }, - "DisplayText": { - "field": "m_szDisplayText", - "type": 13 - }, - "Parent": { - "field": "CBaseToggle", - "type": 11 - } - }, - "CBaseCSGrenade": { - "Redraw": { - "field": "m_bRedraw", - "type": 10 - }, - "IsHeldByPlayer": { - "field": "m_bIsHeldByPlayer", - "type": 10 - }, - "PinPulled": { - "field": "m_bPinPulled", - "type": 10 - }, - "JumpThrow": { - "field": "m_bJumpThrow", - "type": 10 - }, - "ThrowAnimating": { - "field": "m_bThrowAnimating", - "type": 10 - }, - "ThrowTime": { - "field": "m_fThrowTime", - "type": 8 - }, - "ThrowStrength": { - "field": "m_flThrowStrength", - "type": 8 - }, - "ThrowStrengthApproach": { - "field": "m_flThrowStrengthApproach", - "type": 8 - }, - "DropTime": { - "field": "m_fDropTime", - "type": 8 - }, - "PinPullTime": { - "field": "m_fPinPullTime", - "type": 8 - }, - "JustPulledPin": { - "field": "m_bJustPulledPin", - "type": 10 - }, - "NextHoldTick": { - "field": "m_nNextHoldTick", - "type": 2 - }, - "NextHoldFrac": { - "field": "m_flNextHoldFrac", - "type": 8 - }, - "SwitchToWeaponAfterThrow": { - "field": "m_hSwitchToWeaponAfterThrow", - "type": 17, - "classname": "CCSWeaponBase" - }, - "Parent": { - "field": "CCSWeaponBase", - "type": 11 - } - }, - "CBaseCSGrenadeProjectile": { - "InitialPosition": { - "field": "m_vInitialPosition", - "type": 21 - }, - "InitialVelocity": { - "field": "m_vInitialVelocity", - "type": 21 - }, - "Bounces": { - "field": "m_nBounces", - "type": 2 - }, - "ExplodeEffectTickBegin": { - "field": "m_nExplodeEffectTickBegin", - "type": 2 - }, - "ExplodeEffectOrigin": { - "field": "m_vecExplodeEffectOrigin", - "type": 21 - }, - "SpawnTime": { - "field": "m_flSpawnTime", - "type": 8 - }, - "OGSExtraFlags": { - "field": "m_unOGSExtraFlags", - "type": 4 - }, - "DetonationRecorded": { - "field": "m_bDetonationRecorded", - "type": 10 - }, - "ItemIndex": { - "field": "m_nItemIndex", - "type": 5 - }, - "OriginalSpawnLocation": { - "field": "m_vecOriginalSpawnLocation", - "type": 21 - }, - "LastBounceSoundTime": { - "field": "m_flLastBounceSoundTime", - "type": 8 - }, - "GrenadeSpin": { - "field": "m_vecGrenadeSpin", - "type": 21 - }, - "LastHitSurfaceNormal": { - "field": "m_vecLastHitSurfaceNormal", - "type": 21 - }, - "TicksAtZeroVelocity": { - "field": "m_nTicksAtZeroVelocity", - "type": 2 - }, - "HasEverHitEnemy": { - "field": "m_bHasEverHitEnemy", - "type": 10 - }, - "Parent": { - "field": "CBaseGrenade", - "type": 11 - } - }, - "CBaseClientUIEntity": { - "Enabled": { - "field": "m_bEnabled", - "type": 10 - }, - "DialogXMLName": { - "field": "m_DialogXMLName", - "type": 13 - }, - "PanelClassName": { - "field": "m_PanelClassName", - "type": 13 - }, - "PanelID": { - "field": "m_PanelID", - "type": 13 - }, - "CustomOutput0": { - "field": "m_CustomOutput0", - "classname": "CEntityIOOutput", - "type": 16 - }, - "CustomOutput1": { - "field": "m_CustomOutput1", - "classname": "CEntityIOOutput", - "type": 16 - }, - "CustomOutput2": { - "field": "m_CustomOutput2", - "classname": "CEntityIOOutput", - "type": 16 - }, - "CustomOutput3": { - "field": "m_CustomOutput3", - "classname": "CEntityIOOutput", - "type": 16 - }, - "CustomOutput4": { - "field": "m_CustomOutput4", - "classname": "CEntityIOOutput", - "type": 16 - }, - "CustomOutput5": { - "field": "m_CustomOutput5", - "classname": "CEntityIOOutput", - "type": 16 - }, - "CustomOutput6": { - "field": "m_CustomOutput6", - "classname": "CEntityIOOutput", - "type": 16 - }, - "CustomOutput7": { - "field": "m_CustomOutput7", - "classname": "CEntityIOOutput", - "type": 16 - }, - "CustomOutput8": { - "field": "m_CustomOutput8", - "classname": "CEntityIOOutput", - "type": 16 - }, - "CustomOutput9": { - "field": "m_CustomOutput9", - "classname": "CEntityIOOutput", - "type": 16 - }, - "Parent": { - "field": "CBaseModelEntity", - "type": 11 - } - }, - "CBaseCombatCharacter": { - "ForceServerRagdoll": { - "field": "m_bForceServerRagdoll", - "type": 10 - }, - "ImpactEnergyScale": { - "field": "m_impactEnergyScale", - "type": 8 - }, - "ApplyStressDamage": { - "field": "m_bApplyStressDamage", - "type": 10 - }, - "DamageCount": { - "field": "m_iDamageCount", - "type": 2 - }, - "StrRelationships": { - "field": "m_strRelationships", - "type": 13 - }, - "Hull": { - "field": "m_eHull", - "type": 6 - }, - "NavHullIdx": { - "field": "m_nNavHullIdx", - "type": 6 - }, - "Parent": { - "field": "CBaseFlex", - "type": 11 - } - }, - "CBaseDMStart": { - "Master": { - "field": "m_Master", - "type": 13 - }, - "Parent": { - "field": "CPointEntity", - "type": 11 - } - }, - "CBaseDoor": { - "MoveEntitySpace": { - "field": "m_angMoveEntitySpace", - "type": 20 - }, - "MoveDirParentSpace": { - "field": "m_vecMoveDirParentSpace", - "type": 21 - }, - "Ls": { - "field": "m_ls", - "classname": "locksound_t", - "type": 16 - }, - "ForceClosed": { - "field": "m_bForceClosed", - "type": 10 - }, - "DoorGroup": { - "field": "m_bDoorGroup", - "type": 10 - }, - "Locked": { - "field": "m_bLocked", - "type": 10 - }, - "IgnoreDebris": { - "field": "m_bIgnoreDebris", - "type": 10 - }, - "SpawnPosition": { - "field": "m_eSpawnPosition", - "type": 6 - }, - "BlockDamage": { - "field": "m_flBlockDamage", - "type": 8 - }, - "NoiseMoving": { - "field": "m_NoiseMoving", - "type": 13 - }, - "NoiseArrived": { - "field": "m_NoiseArrived", - "type": 13 - }, - "NoiseMovingClosed": { - "field": "m_NoiseMovingClosed", - "type": 13 - }, - "NoiseArrivedClosed": { - "field": "m_NoiseArrivedClosed", - "type": 13 - }, - "ChainTarget": { - "field": "m_ChainTarget", - "type": 13 - }, - "OnBlockedClosing": { - "field": "m_OnBlockedClosing", - "classname": "CEntityIOOutput", - "type": 16 - }, - "OnBlockedOpening": { - "field": "m_OnBlockedOpening", - "classname": "CEntityIOOutput", - "type": 16 - }, - "OnUnblockedClosing": { - "field": "m_OnUnblockedClosing", - "classname": "CEntityIOOutput", - "type": 16 - }, - "OnUnblockedOpening": { - "field": "m_OnUnblockedOpening", - "classname": "CEntityIOOutput", - "type": 16 - }, - "OnFullyClosed": { - "field": "m_OnFullyClosed", - "classname": "CEntityIOOutput", - "type": 16 - }, - "OnFullyOpen": { - "field": "m_OnFullyOpen", - "classname": "CEntityIOOutput", - "type": 16 - }, - "OnClose": { - "field": "m_OnClose", - "classname": "CEntityIOOutput", - "type": 16 - }, - "OnOpen": { - "field": "m_OnOpen", - "classname": "CEntityIOOutput", - "type": 16 - }, - "OnLockedUse": { - "field": "m_OnLockedUse", - "classname": "CEntityIOOutput", - "type": 16 - }, - "LoopMoveSound": { - "field": "m_bLoopMoveSound", - "type": 10 - }, - "CreateNavObstacle": { - "field": "m_bCreateNavObstacle", - "type": 10 - }, - "IsChaining": { - "field": "m_isChaining", - "type": 10 - }, - "IsUsable": { - "field": "m_bIsUsable", - "type": 10 - }, - "Parent": { - "field": "CBaseToggle", - "type": 11 - } - }, - "CBaseEntity": { - "CBodyComponent": { - "field": "m_CBodyComponent", - "classname": "CBodyComponent", - "type": 24 - }, - "NetworkTransmitComponent": { - "field": "m_NetworkTransmitComponent", - "classname": "CNetworkTransmitComponent", - "type": 16 - }, - "CurrentThinkContext": { - "field": "m_iCurrentThinkContext", - "type": 2 - }, - "LastThinkTick": { - "field": "m_nLastThinkTick", - "type": 2 - }, - "DisabledContextThinks": { - "field": "m_bDisabledContextThinks", - "type": 10 - }, - "LastNetworkChange": { - "field": "m_lastNetworkChange", - "type": 8 - }, - "ResponseContext": { - "field": "m_iszResponseContext", - "type": 13 - }, - "Health": { - "field": "m_iHealth", - "type": 2 - }, - "MaxHealth": { - "field": "m_iMaxHealth", - "type": 2 - }, - "LifeState": { - "field": "m_lifeState", - "type": 4 - }, - "DamageAccumulator": { - "field": "m_flDamageAccumulator", - "type": 8 - }, - "TakesDamage": { - "field": "m_bTakesDamage", - "type": 10 - }, - "TakeDamageFlags": { - "field": "m_nTakeDamageFlags", - "type": 7 - }, - "PlatformType": { - "field": "m_nPlatformType", - "type": 4 - }, - "MoveCollide": { - "field": "m_MoveCollide", - "type": 4 - }, - "MoveType": { - "field": "m_MoveType", - "type": 4 - }, - "ActualMoveType": { - "field": "m_nActualMoveType", - "type": 4 - }, - "WaterTouch": { - "field": "m_nWaterTouch", - "type": 4 - }, - "SlimeTouch": { - "field": "m_nSlimeTouch", - "type": 4 - }, - "RestoreInHierarchy": { - "field": "m_bRestoreInHierarchy", - "type": 10 - }, - "Target": { - "field": "m_target", - "type": 13 - }, - "DamageFilter": { - "field": "m_hDamageFilter", - "type": 17, - "classname": "CBaseFilter" - }, - "DamageFilterName": { - "field": "m_iszDamageFilterName", - "type": 13 - }, - "MoveDoneTime": { - "field": "m_flMoveDoneTime", - "type": 8 - }, - "SubclassID": { - "field": "m_nSubclassID", - "type": 12 - }, - "AnimTime": { - "field": "m_flAnimTime", - "type": 8 - }, - "SimulationTime": { - "field": "m_flSimulationTime", - "type": 8 - }, - "CreateTime": { - "field": "m_flCreateTime", - "type": 8 - }, - "ClientSideRagdoll": { - "field": "m_bClientSideRagdoll", - "type": 10 - }, - "InterpolationFrame": { - "field": "m_ubInterpolationFrame", - "type": 4 - }, - "PrevVPhysicsUpdatePos": { - "field": "m_vPrevVPhysicsUpdatePos", - "type": 21 - }, - "TeamNum": { - "field": "m_iTeamNum", - "type": 4 - }, - "Globalname": { - "field": "m_iGlobalname", - "type": 13 - }, - "SentToClients": { - "field": "m_iSentToClients", - "type": 2 - }, - "Speed": { - "field": "m_flSpeed", - "type": 8 - }, - "UniqueHammerID": { - "field": "m_sUniqueHammerID", - "type": 14 - }, - "Spawnflags": { - "field": "m_spawnflags", - "type": 6 - }, - "NextThinkTick": { - "field": "m_nNextThinkTick", - "type": 2 - }, - "SimulationTick": { - "field": "m_nSimulationTick", - "type": 2 - }, - "OnKilled": { - "field": "m_OnKilled", - "classname": "CEntityIOOutput", - "type": 16 - }, - "Flags": { - "field": "m_fFlags", - "type": 6 - }, - "AbsVelocity": { - "field": "m_vecAbsVelocity", - "type": 21 - }, - "Velocity": { - "field": "m_vecVelocity", - "classname": "CNetworkVelocityVector", - "type": 16 - }, - "BaseVelocity": { - "field": "m_vecBaseVelocity", - "type": 21 - }, - "PushEnumCount": { - "field": "m_nPushEnumCount", - "type": 2 - }, - "Collision": { - "field": "m_pCollision", - "classname": "CCollisionProperty", - "type": 24 - }, - "EffectEntity": { - "field": "m_hEffectEntity", - "type": 17, - "classname": "CBaseEntity" - }, - "OwnerEntity": { - "field": "m_hOwnerEntity", - "type": 17, - "classname": "CBaseEntity" - }, - "Effects": { - "field": "m_fEffects", - "type": 6 - }, - "GroundEntity": { - "field": "m_hGroundEntity", - "type": 17, - "classname": "CBaseEntity" - }, - "GroundBodyIndex": { - "field": "m_nGroundBodyIndex", - "type": 2 - }, - "Friction": { - "field": "m_flFriction", - "type": 8 - }, - "Elasticity": { - "field": "m_flElasticity", - "type": 8 - }, - "GravityScale": { - "field": "m_flGravityScale", - "type": 8 - }, - "TimeScale": { - "field": "m_flTimeScale", - "type": 8 - }, - "WaterLevel": { - "field": "m_flWaterLevel", - "type": 8 - }, - "AnimatedEveryTick": { - "field": "m_bAnimatedEveryTick", - "type": 10 - }, - "DisableLowViolence": { - "field": "m_bDisableLowViolence", - "type": 10 - }, - "WaterType": { - "field": "m_nWaterType", - "type": 4 - }, - "EFlags": { - "field": "m_iEFlags", - "type": 2 - }, - "OnUser1": { - "field": "m_OnUser1", - "classname": "CEntityIOOutput", - "type": 16 - }, - "OnUser2": { - "field": "m_OnUser2", - "classname": "CEntityIOOutput", - "type": 16 - }, - "OnUser3": { - "field": "m_OnUser3", - "classname": "CEntityIOOutput", - "type": 16 - }, - "OnUser4": { - "field": "m_OnUser4", - "classname": "CEntityIOOutput", - "type": 16 - }, - "InitialTeamNum": { - "field": "m_iInitialTeamNum", - "type": 2 - }, - "NavIgnoreUntilTime": { - "field": "m_flNavIgnoreUntilTime", - "type": 8 - }, - "AngVelocity": { - "field": "m_vecAngVelocity", - "type": 20 - }, - "NetworkQuantizeOriginAndAngles": { - "field": "m_bNetworkQuantizeOriginAndAngles", - "type": 10 - }, - "LagCompensate": { - "field": "m_bLagCompensate", - "type": 10 - }, - "OverriddenFriction": { - "field": "m_flOverriddenFriction", - "type": 8 - }, - "Blocker": { - "field": "m_pBlocker", - "type": 17, - "classname": "CBaseEntity" - }, - "LocalTime": { - "field": "m_flLocalTime", - "type": 8 - }, - "VPhysicsUpdateLocalTime": { - "field": "m_flVPhysicsUpdateLocalTime", - "type": 8 - }, - "BloodType": { - "field": "m_nBloodType", - "type": 6 - }, - "Parent": { - "field": "CEntityInstance", - "type": 11 - } - }, - "CBaseEntityAPI": {}, - "CBaseFilter": { - "Negated": { - "field": "m_bNegated", - "type": 10 - }, - "OnPass": { - "field": "m_OnPass", - "classname": "CEntityIOOutput", - "type": 16 - }, - "OnFail": { - "field": "m_OnFail", - "classname": "CEntityIOOutput", - "type": 16 - }, - "Parent": { - "field": "CLogicalEntity", - "type": 11 - } - }, - "CBaseFire": { - "Scale": { - "field": "m_flScale", - "type": 8 - }, - "StartScale": { - "field": "m_flStartScale", - "type": 8 - }, - "ScaleTime": { - "field": "m_flScaleTime", - "type": 8 - }, - "Flags": { - "field": "m_nFlags", - "type": 6 - }, - "Parent": { - "field": "CBaseEntity", - "type": 11 - } - }, - "CBaseFlex": { - "FlexWeight": { - "field": "m_flexWeight", - "type": 59 - }, - "LookTargetPosition": { - "field": "m_vLookTargetPosition", - "type": 21 - }, - "Blinktoggle": { - "field": "m_blinktoggle", - "type": 10 - }, - "AllowResponsesEndTime": { - "field": "m_flAllowResponsesEndTime", - "type": 8 - }, - "LastFlexAnimationTime": { - "field": "m_flLastFlexAnimationTime", - "type": 8 - }, - "NextSceneEventId": { - "field": "m_nNextSceneEventId", - "classname": "SceneEventId_t", - "type": 16 - }, - "UpdateLayerPriorities": { - "field": "m_bUpdateLayerPriorities", - "type": 10 - }, - "Parent": { - "field": "CBaseAnimGraph", - "type": 11 - } - }, - "CBaseFlexAlias_funCBaseFlex": { - "Parent": { - "field": "CBaseFlex", - "type": 11 - } - }, - "CBaseGrenade": { - "OnPlayerPickup": { - "field": "m_OnPlayerPickup", - "classname": "CEntityIOOutput", - "type": 16 - }, - "OnExplode": { - "field": "m_OnExplode", - "classname": "CEntityIOOutput", - "type": 16 - }, - "HasWarnedAI": { - "field": "m_bHasWarnedAI", - "type": 10 - }, - "IsSmokeGrenade": { - "field": "m_bIsSmokeGrenade", - "type": 10 - }, - "IsLive": { - "field": "m_bIsLive", - "type": 10 - }, - "DmgRadius": { - "field": "m_DmgRadius", - "type": 8 - }, - "DetonateTime": { - "field": "m_flDetonateTime", - "type": 8 - }, - "WarnAITime": { - "field": "m_flWarnAITime", - "type": 8 - }, - "Damage": { - "field": "m_flDamage", - "type": 8 - }, - "BounceSound": { - "field": "m_iszBounceSound", - "type": 13 - }, - "ExplosionSound": { - "field": "m_ExplosionSound", - "type": 14 - }, - "Thrower": { - "field": "m_hThrower", - "type": 17, - "classname": "CCSPlayerPawn" - }, - "NextAttack": { - "field": "m_flNextAttack", - "type": 8 - }, - "OriginalThrower": { - "field": "m_hOriginalThrower", - "type": 17, - "classname": "CCSPlayerPawn" - }, - "Parent": { - "field": "CBaseFlex", - "type": 11 - } - }, - "CBaseIssue": { - "TypeString": { - "field": "m_szTypeString", - "type": 15, - "size": 64 - }, - "DetailsString": { - "field": "m_szDetailsString", - "type": 15, - "size": 4096 - }, - "NumYesVotes": { - "field": "m_iNumYesVotes", - "type": 2 - }, - "NumNoVotes": { - "field": "m_iNumNoVotes", - "type": 2 - }, - "NumPotentialVotes": { - "field": "m_iNumPotentialVotes", - "type": 2 - } - }, - "CBaseModelEntity": { - "CRenderComponent": { - "field": "m_CRenderComponent", - "classname": "CRenderComponent", - "type": 24 - }, - "CHitboxComponent": { - "field": "m_CHitboxComponent", - "classname": "CHitboxComponent", - "type": 16 - }, - "DestructiblePartInitialStateDestructed0": { - "field": "m_nDestructiblePartInitialStateDestructed0", - "type": 6 - }, - "DestructiblePartInitialStateDestructed1": { - "field": "m_nDestructiblePartInitialStateDestructed1", - "type": 6 - }, - "DestructiblePartInitialStateDestructed2": { - "field": "m_nDestructiblePartInitialStateDestructed2", - "type": 6 - }, - "DestructiblePartInitialStateDestructed3": { - "field": "m_nDestructiblePartInitialStateDestructed3", - "type": 6 - }, - "DestructiblePartInitialStateDestructed4": { - "field": "m_nDestructiblePartInitialStateDestructed4", - "type": 6 - }, - "LastHitDestructiblePartIndex": { - "field": "m_nLastHitDestructiblePartIndex", - "type": 2 - }, - "LastHitGroup": { - "field": "m_LastHitGroup", - "type": 6 - }, - "DissolveStartTime": { - "field": "m_flDissolveStartTime", - "type": 8 - }, - "OnIgnite": { - "field": "m_OnIgnite", - "classname": "CEntityIOOutput", - "type": 16 - }, - "RenderMode": { - "field": "m_nRenderMode", - "type": 4 - }, - "RenderFX": { - "field": "m_nRenderFX", - "type": 4 - }, - "AllowFadeInView": { - "field": "m_bAllowFadeInView", - "type": 10 - }, - "Render": { - "field": "m_clrRender", - "type": 19 - }, - "RenderToCubemaps": { - "field": "m_bRenderToCubemaps", - "type": 10 - }, - "NoInterpolate": { - "field": "m_bNoInterpolate", - "type": 10 - }, - "Collision": { - "field": "m_Collision", - "classname": "CCollisionProperty", - "type": 16 - }, - "Glow": { - "field": "m_Glow", - "classname": "CGlowProperty", - "type": 16 - }, - "GlowBackfaceMult": { - "field": "m_flGlowBackfaceMult", - "type": 8 - }, - "FadeMinDist": { - "field": "m_fadeMinDist", - "type": 8 - }, - "FadeMaxDist": { - "field": "m_fadeMaxDist", - "type": 8 - }, - "FadeScale": { - "field": "m_flFadeScale", - "type": 8 - }, - "ShadowStrength": { - "field": "m_flShadowStrength", - "type": 8 - }, - "ObjectCulling": { - "field": "m_nObjectCulling", - "type": 4 - }, - "AddDecal": { - "field": "m_nAddDecal", - "type": 2 - }, - "DecalPosition": { - "field": "m_vDecalPosition", - "type": 21 - }, - "DecalForwardAxis": { - "field": "m_vDecalForwardAxis", - "type": 21 - }, - "DecalHealBloodRate": { - "field": "m_flDecalHealBloodRate", - "type": 8 - }, - "DecalHealHeightRate": { - "field": "m_flDecalHealHeightRate", - "type": 8 - }, - "ViewOffset": { - "field": "m_vecViewOffset", - "classname": "CNetworkViewOffsetVector", - "type": 16 - }, - "Parent": { - "field": "CBaseEntity", - "type": 11 - } - }, - "CBaseMoveBehavior": { - "PositionInterpolator": { - "field": "m_iPositionInterpolator", - "type": 2 - }, - "RotationInterpolator": { - "field": "m_iRotationInterpolator", - "type": 2 - }, - "AnimStartTime": { - "field": "m_flAnimStartTime", - "type": 8 - }, - "AnimEndTime": { - "field": "m_flAnimEndTime", - "type": 8 - }, - "AverageSpeedAcrossFrame": { - "field": "m_flAverageSpeedAcrossFrame", - "type": 8 - }, - "CurrentKeyFrame": { - "field": "m_pCurrentKeyFrame", - "classname": "CPathKeyFrame", - "type": 24 - }, - "TargetKeyFrame": { - "field": "m_pTargetKeyFrame", - "classname": "CPathKeyFrame", - "type": 24 - }, - "PreKeyFrame": { - "field": "m_pPreKeyFrame", - "classname": "CPathKeyFrame", - "type": 24 - }, - "PostKeyFrame": { - "field": "m_pPostKeyFrame", - "classname": "CPathKeyFrame", - "type": 24 - }, - "TimeIntoFrame": { - "field": "m_flTimeIntoFrame", - "type": 8 - }, - "Direction": { - "field": "m_iDirection", - "type": 2 - }, - "Parent": { - "field": "CPathKeyFrame", - "type": 11 - } - }, - "CBasePlatTrain": { - "NoiseMoving": { - "field": "m_NoiseMoving", - "type": 13 - }, - "NoiseArrived": { - "field": "m_NoiseArrived", - "type": 13 - }, - "Volume": { - "field": "m_volume", - "type": 8 - }, - "TWidth": { - "field": "m_flTWidth", - "type": 8 - }, - "TLength": { - "field": "m_flTLength", - "type": 8 - }, - "Parent": { - "field": "CBaseToggle", - "type": 11 - } - }, - "CBasePlayerPawn": { - "WeaponServices": { - "field": "m_pWeaponServices", - "classname": "CPlayer_WeaponServices", - "type": 24 - }, - "ItemServices": { - "field": "m_pItemServices", - "classname": "CPlayer_ItemServices", - "type": 24 - }, - "AutoaimServices": { - "field": "m_pAutoaimServices", - "classname": "CPlayer_AutoaimServices", - "type": 24 - }, - "ObserverServices": { - "field": "m_pObserverServices", - "classname": "CPlayer_ObserverServices", - "type": 24 - }, - "WaterServices": { - "field": "m_pWaterServices", - "classname": "CPlayer_WaterServices", - "type": 24 - }, - "UseServices": { - "field": "m_pUseServices", - "classname": "CPlayer_UseServices", - "type": 24 - }, - "FlashlightServices": { - "field": "m_pFlashlightServices", - "classname": "CPlayer_FlashlightServices", - "type": 24 - }, - "CameraServices": { - "field": "m_pCameraServices", - "classname": "CPlayer_CameraServices", - "type": 24 - }, - "MovementServices": { - "field": "m_pMovementServices", - "classname": "CPlayer_MovementServices", - "type": 24 - }, - "HighestGeneratedServerViewAngleChangeIndex": { - "field": "m_nHighestGeneratedServerViewAngleChangeIndex", - "type": 6 - }, - "_angle": { - "field": "v_angle", - "type": 20 - }, - "_anglePrevious": { - "field": "v_anglePrevious", - "type": 20 - }, - "HideHUD": { - "field": "m_iHideHUD", - "type": 6 - }, - "Skybox3d": { - "field": "m_skybox3d", - "classname": "sky3dparams_t", - "type": 16 - }, - "TimeLastHurt": { - "field": "m_fTimeLastHurt", - "type": 8 - }, - "DeathTime": { - "field": "m_flDeathTime", - "type": 8 - }, - "NextSuicideTime": { - "field": "m_fNextSuicideTime", - "type": 8 - }, - "InitHUD": { - "field": "m_fInitHUD", - "type": 10 - }, - "Expresser": { - "field": "m_pExpresser", - "classname": "CAI_Expresser", - "type": 24 - }, - "Controller": { - "field": "m_hController", - "type": 17, - "classname": "CBasePlayerController" - }, - "HltvReplayDelay": { - "field": "m_fHltvReplayDelay", - "type": 8 - }, - "HltvReplayEnd": { - "field": "m_fHltvReplayEnd", - "type": 8 - }, - "HltvReplayEntity": { - "field": "m_iHltvReplayEntity", - "type": 2 - }, - "Parent": { - "field": "CBaseCombatCharacter", - "type": 11 - } - }, - "CBasePlayerWeapon": { - "NextPrimaryAttackTick": { - "field": "m_nNextPrimaryAttackTick", - "type": 2 - }, - "NextPrimaryAttackTickRatio": { - "field": "m_flNextPrimaryAttackTickRatio", - "type": 8 - }, - "NextSecondaryAttackTick": { - "field": "m_nNextSecondaryAttackTick", - "type": 2 - }, - "NextSecondaryAttackTickRatio": { - "field": "m_flNextSecondaryAttackTickRatio", - "type": 8 - }, - "Clip1": { - "field": "m_iClip1", - "type": 2 - }, - "Clip2": { - "field": "m_iClip2", - "type": 2 - }, - "ReserveAmmo": { - "field": "m_pReserveAmmo", - "type": 31, - "size": 2 - }, - "OnPlayerUse": { - "field": "m_OnPlayerUse", - "classname": "CEntityIOOutput", - "type": 16 - }, - "Parent": { - "field": "CEconEntity", - "type": 11 - } - }, - "CBasePropDoor": { - "AutoReturnDelay": { - "field": "m_flAutoReturnDelay", - "type": 8 - }, - "HardwareType": { - "field": "m_nHardwareType", - "type": 2 - }, - "NeedsHardware": { - "field": "m_bNeedsHardware", - "type": 10 - }, - "DoorState": { - "field": "m_eDoorState", - "type": 6 - }, - "Locked": { - "field": "m_bLocked", - "type": 10 - }, - "ClosedPosition": { - "field": "m_closedPosition", - "type": 21 - }, - "ClosedAngles": { - "field": "m_closedAngles", - "type": 20 - }, - "Blocker": { - "field": "m_hBlocker", - "type": 17, - "classname": "CBaseEntity" - }, - "FirstBlocked": { - "field": "m_bFirstBlocked", - "type": 10 - }, - "Ls": { - "field": "m_ls", - "classname": "locksound_t", - "type": 16 - }, - "ForceClosed": { - "field": "m_bForceClosed", - "type": 10 - }, - "LatchWorldPosition": { - "field": "m_vecLatchWorldPosition", - "type": 21 - }, - "Activator": { - "field": "m_hActivator", - "type": 17, - "classname": "CBaseEntity" - }, - "SoundMoving": { - "field": "m_SoundMoving", - "type": 13 - }, - "SoundOpen": { - "field": "m_SoundOpen", - "type": 13 - }, - "SoundClose": { - "field": "m_SoundClose", - "type": 13 - }, - "SoundLock": { - "field": "m_SoundLock", - "type": 13 - }, - "SoundUnlock": { - "field": "m_SoundUnlock", - "type": 13 - }, - "SoundLatch": { - "field": "m_SoundLatch", - "type": 13 - }, - "SoundPound": { - "field": "m_SoundPound", - "type": 13 - }, - "SoundJiggle": { - "field": "m_SoundJiggle", - "type": 13 - }, - "SoundLockedAnim": { - "field": "m_SoundLockedAnim", - "type": 13 - }, - "NumCloseAttempts": { - "field": "m_numCloseAttempts", - "type": 2 - }, - "PhysicsMaterial": { - "field": "m_nPhysicsMaterial", - "type": 12 - }, - "SlaveName": { - "field": "m_SlaveName", - "type": 13 - }, - "Master": { - "field": "m_hMaster", - "type": 17, - "classname": "CBasePropDoor" - }, - "OnBlockedClosing": { - "field": "m_OnBlockedClosing", - "classname": "CEntityIOOutput", - "type": 16 - }, - "OnBlockedOpening": { - "field": "m_OnBlockedOpening", - "classname": "CEntityIOOutput", - "type": 16 - }, - "OnUnblockedClosing": { - "field": "m_OnUnblockedClosing", - "classname": "CEntityIOOutput", - "type": 16 - }, - "OnUnblockedOpening": { - "field": "m_OnUnblockedOpening", - "classname": "CEntityIOOutput", - "type": 16 - }, - "OnFullyClosed": { - "field": "m_OnFullyClosed", - "classname": "CEntityIOOutput", - "type": 16 - }, - "OnFullyOpen": { - "field": "m_OnFullyOpen", - "classname": "CEntityIOOutput", - "type": 16 - }, - "OnClose": { - "field": "m_OnClose", - "classname": "CEntityIOOutput", - "type": 16 - }, - "OnOpen": { - "field": "m_OnOpen", - "classname": "CEntityIOOutput", - "type": 16 - }, - "OnLockedUse": { - "field": "m_OnLockedUse", - "classname": "CEntityIOOutput", - "type": 16 - }, - "OnAjarOpen": { - "field": "m_OnAjarOpen", - "classname": "CEntityIOOutput", - "type": 16 - }, - "Parent": { - "field": "CDynamicProp", - "type": 11 - } - }, - "CBaseToggle": { - "Toggle_state": { - "field": "m_toggle_state", - "type": 6 - }, - "MoveDistance": { - "field": "m_flMoveDistance", - "type": 8 - }, - "Wait": { - "field": "m_flWait", - "type": 8 - }, - "Lip": { - "field": "m_flLip", - "type": 8 - }, - "AlwaysFireBlockedOutputs": { - "field": "m_bAlwaysFireBlockedOutputs", - "type": 10 - }, - "Position1": { - "field": "m_vecPosition1", - "type": 21 - }, - "Position2": { - "field": "m_vecPosition2", - "type": 21 - }, - "MoveAng": { - "field": "m_vecMoveAng", - "type": 20 - }, - "Angle1": { - "field": "m_vecAngle1", - "type": 20 - }, - "Angle2": { - "field": "m_vecAngle2", - "type": 20 - }, - "Height": { - "field": "m_flHeight", - "type": 8 - }, - "Activator": { - "field": "m_hActivator", - "type": 17, - "classname": "CBaseEntity" - }, - "FinalDest": { - "field": "m_vecFinalDest", - "type": 21 - }, - "FinalAngle": { - "field": "m_vecFinalAngle", - "type": 20 - }, - "MovementType": { - "field": "m_movementType", - "type": 2 - }, - "Master": { - "field": "m_sMaster", - "type": 13 - }, - "Parent": { - "field": "CBaseModelEntity", - "type": 11 - } - }, - "CBaseTrigger": { - "Disabled": { - "field": "m_bDisabled", - "type": 10 - }, - "FilterName": { - "field": "m_iFilterName", - "type": 13 - }, - "Filter": { - "field": "m_hFilter", - "type": 17, - "classname": "CBaseFilter" - }, - "OnStartTouch": { - "field": "m_OnStartTouch", - "classname": "CEntityIOOutput", - "type": 16 - }, - "OnStartTouchAll": { - "field": "m_OnStartTouchAll", - "classname": "CEntityIOOutput", - "type": 16 - }, - "OnEndTouch": { - "field": "m_OnEndTouch", - "classname": "CEntityIOOutput", - "type": 16 - }, - "OnEndTouchAll": { - "field": "m_OnEndTouchAll", - "classname": "CEntityIOOutput", - "type": 16 - }, - "OnTouching": { - "field": "m_OnTouching", - "classname": "CEntityIOOutput", - "type": 16 - }, - "OnTouchingEachEntity": { - "field": "m_OnTouchingEachEntity", - "classname": "CEntityIOOutput", - "type": 16 - }, - "OnNotTouching": { - "field": "m_OnNotTouching", - "classname": "CEntityIOOutput", - "type": 16 - }, - "ClientSidePredicted": { - "field": "m_bClientSidePredicted", - "type": 10 - }, - "Parent": { - "field": "CBaseToggle", - "type": 11 - } - }, - "CBaseViewModel": { - "LastFacing": { - "field": "m_vecLastFacing", - "type": 21 - }, - "ViewModelIndex": { - "field": "m_nViewModelIndex", - "type": 6 - }, - "AnimationParity": { - "field": "m_nAnimationParity", - "type": 6 - }, - "AnimationStartTime": { - "field": "m_flAnimationStartTime", - "type": 8 - }, - "Weapon": { - "field": "m_hWeapon", - "type": 17, - "classname": "CBasePlayerWeapon" - }, - "VMName": { - "field": "m_sVMName", - "type": 13 - }, - "AnimationPrefix": { - "field": "m_sAnimationPrefix", - "type": 13 - }, - "OldLayerSequence": { - "field": "m_hOldLayerSequence", - "type": 2 - }, - "OldLayer": { - "field": "m_oldLayer", - "type": 2 - }, - "OldLayerStartTime": { - "field": "m_oldLayerStartTime", - "type": 8 - }, - "ControlPanel": { - "field": "m_hControlPanel", - "type": 17, - "classname": "CBaseEntity" - }, - "Parent": { - "field": "CBaseAnimGraph", - "type": 11 - } - }, - "CBeam": { - "FrameRate": { - "field": "m_flFrameRate", - "type": 8 - }, - "HDRColorScale": { - "field": "m_flHDRColorScale", - "type": 8 - }, - "FireTime": { - "field": "m_flFireTime", - "type": 8 - }, - "Damage": { - "field": "m_flDamage", - "type": 8 - }, - "NumBeamEnts": { - "field": "m_nNumBeamEnts", - "type": 4 - }, - "BeamType": { - "field": "m_nBeamType", - "type": 6 - }, - "BeamFlags": { - "field": "m_nBeamFlags", - "type": 6 - }, - "AttachEntity": { - "field": "m_hAttachEntity", - "type": 46, - "size": 10 - }, - "Width": { - "field": "m_fWidth", - "type": 8 - }, - "EndWidth": { - "field": "m_fEndWidth", - "type": 8 - }, - "FadeLength": { - "field": "m_fFadeLength", - "type": 8 - }, - "HaloScale": { - "field": "m_fHaloScale", - "type": 8 - }, - "Amplitude": { - "field": "m_fAmplitude", - "type": 8 - }, - "StartFrame": { - "field": "m_fStartFrame", - "type": 8 - }, - "Speed": { - "field": "m_fSpeed", - "type": 8 - }, - "Frame": { - "field": "m_flFrame", - "type": 8 - }, - "ClipStyle": { - "field": "m_nClipStyle", - "type": 6 - }, - "TurnedOff": { - "field": "m_bTurnedOff", - "type": 10 - }, - "EndPos": { - "field": "m_vecEndPos", - "type": 21 - }, - "EndEntity": { - "field": "m_hEndEntity", - "type": 17, - "classname": "CBaseEntity" - }, - "DissolveType": { - "field": "m_nDissolveType", - "type": 2 - }, - "Parent": { - "field": "CBaseModelEntity", - "type": 11 - } - }, - "CBlood": { - "SprayAngles": { - "field": "m_vecSprayAngles", - "type": 20 - }, - "SprayDir": { - "field": "m_vecSprayDir", - "type": 21 - }, - "Amount": { - "field": "m_flAmount", - "type": 8 - }, - "Color": { - "field": "m_Color", - "type": 6 - }, - "Parent": { - "field": "CPointEntity", - "type": 11 - } - }, - "CBot": { - "Controller": { - "field": "m_pController", - "classname": "CCSPlayerController", - "type": 24 - }, - "Player": { - "field": "m_pPlayer", - "classname": "CCSPlayerPawn", - "type": 24 - }, - "HasSpawned": { - "field": "m_bHasSpawned", - "type": 10 - }, - "Id": { - "field": "m_id", - "type": 6 - }, - "IsRunning": { - "field": "m_isRunning", - "type": 10 - }, - "IsCrouching": { - "field": "m_isCrouching", - "type": 10 - }, - "ForwardSpeed": { - "field": "m_forwardSpeed", - "type": 8 - }, - "LeftSpeed": { - "field": "m_leftSpeed", - "type": 8 - }, - "VerticalSpeed": { - "field": "m_verticalSpeed", - "type": 8 - }, - "ButtonFlags": { - "field": "m_buttonFlags", - "type": 7 - }, - "JumpTimestamp": { - "field": "m_jumpTimestamp", - "type": 8 - }, - "ViewForward": { - "field": "m_viewForward", - "type": 21 - }, - "PostureStackIndex": { - "field": "m_postureStackIndex", - "type": 2 - } - }, - "CBreakable": { - "CPropDataComponent": { - "field": "m_CPropDataComponent", - "classname": "CPropDataComponent", - "type": 16 - }, - "Material": { - "field": "m_Material", - "type": 6 - }, - "Breaker": { - "field": "m_hBreaker", - "type": 17, - "classname": "CBaseEntity" - }, - "Explosion": { - "field": "m_Explosion", - "type": 6 - }, - "SpawnObject": { - "field": "m_iszSpawnObject", - "type": 13 - }, - "PressureDelay": { - "field": "m_flPressureDelay", - "type": 8 - }, - "MinHealthDmg": { - "field": "m_iMinHealthDmg", - "type": 2 - }, - "PropData": { - "field": "m_iszPropData", - "type": 13 - }, - "ImpactEnergyScale": { - "field": "m_impactEnergyScale", - "type": 8 - }, - "OverrideBlockLOS": { - "field": "m_nOverrideBlockLOS", - "type": 6 - }, - "OnBreak": { - "field": "m_OnBreak", - "classname": "CEntityIOOutput", - "type": 16 - }, - "PerformanceMode": { - "field": "m_PerformanceMode", - "type": 6 - }, - "PhysicsAttacker": { - "field": "m_hPhysicsAttacker", - "type": 17, - "classname": "CBasePlayerPawn" - }, - "LastPhysicsInfluenceTime": { - "field": "m_flLastPhysicsInfluenceTime", - "type": 8 - }, - "Parent": { - "field": "CBaseModelEntity", - "type": 11 - } - }, - "CBreakableProp": { - "CPropDataComponent": { - "field": "m_CPropDataComponent", - "classname": "CPropDataComponent", - "type": 16 - }, - "OnBreak": { - "field": "m_OnBreak", - "classname": "CEntityIOOutput", - "type": 16 - }, - "OnTakeDamage": { - "field": "m_OnTakeDamage", - "classname": "CEntityIOOutput", - "type": 16 - }, - "ImpactEnergyScale": { - "field": "m_impactEnergyScale", - "type": 8 - }, - "MinHealthDmg": { - "field": "m_iMinHealthDmg", - "type": 2 - }, - "PreferredCarryAngles": { - "field": "m_preferredCarryAngles", - "type": 20 - }, - "PressureDelay": { - "field": "m_flPressureDelay", - "type": 8 - }, - "DefBurstScale": { - "field": "m_flDefBurstScale", - "type": 8 - }, - "DefBurstOffset": { - "field": "m_vDefBurstOffset", - "type": 21 - }, - "Breaker": { - "field": "m_hBreaker", - "type": 17, - "classname": "CBaseEntity" - }, - "PerformanceMode": { - "field": "m_PerformanceMode", - "type": 6 - }, - "PreventDamageBeforeTime": { - "field": "m_flPreventDamageBeforeTime", - "type": 8 - }, - "BreakableContentsType": { - "field": "m_BreakableContentsType", - "type": 6 - }, - "StrBreakableContentsPropGroupOverride": { - "field": "m_strBreakableContentsPropGroupOverride", - "type": 14 - }, - "StrBreakableContentsParticleOverride": { - "field": "m_strBreakableContentsParticleOverride", - "type": 14 - }, - "HasBreakPiecesOrCommands": { - "field": "m_bHasBreakPiecesOrCommands", - "type": 10 - }, - "ExplodeDamage": { - "field": "m_explodeDamage", - "type": 8 - }, - "ExplodeRadius": { - "field": "m_explodeRadius", - "type": 8 - }, - "ExplosionDelay": { - "field": "m_explosionDelay", - "type": 8 - }, - "ExplosionBuildupSound": { - "field": "m_explosionBuildupSound", - "type": 13 - }, - "ExplosionCustomEffect": { - "field": "m_explosionCustomEffect", - "type": 13 - }, - "ExplosionCustomSound": { - "field": "m_explosionCustomSound", - "type": 13 - }, - "ExplosionModifier": { - "field": "m_explosionModifier", - "type": 13 - }, - "PhysicsAttacker": { - "field": "m_hPhysicsAttacker", - "type": 17, - "classname": "CBasePlayerPawn" - }, - "LastPhysicsInfluenceTime": { - "field": "m_flLastPhysicsInfluenceTime", - "type": 8 - }, - "OriginalBlockLOS": { - "field": "m_bOriginalBlockLOS", - "type": 10 - }, - "DefaultFadeScale": { - "field": "m_flDefaultFadeScale", - "type": 8 - }, - "LastAttacker": { - "field": "m_hLastAttacker", - "type": 17, - "classname": "CBaseEntity" - }, - "FlareEnt": { - "field": "m_hFlareEnt", - "type": 17, - "classname": "CBaseEntity" - }, - "UsePuntSound": { - "field": "m_bUsePuntSound", - "type": 10 - }, - "PuntSound": { - "field": "m_iszPuntSound", - "type": 13 - }, - "NoGhostCollision": { - "field": "m_noGhostCollision", - "type": 10 - }, - "Parent": { - "field": "CBaseProp", - "type": 11 - } - }, - "CBtActionAim": { - "SensorInputKey": { - "field": "m_szSensorInputKey", - "type": 14 - }, - "AimReadyKey": { - "field": "m_szAimReadyKey", - "type": 14 - }, - "ZoomCooldownTimestamp": { - "field": "m_flZoomCooldownTimestamp", - "type": 8 - }, - "DoneAiming": { - "field": "m_bDoneAiming", - "type": 10 - }, - "LerpStartTime": { - "field": "m_flLerpStartTime", - "type": 8 - }, - "NextLookTargetLerpTime": { - "field": "m_flNextLookTargetLerpTime", - "type": 8 - }, - "PenaltyReductionRatio": { - "field": "m_flPenaltyReductionRatio", - "type": 8 - }, - "NextLookTarget": { - "field": "m_NextLookTarget", - "type": 20 - }, - "AimTimer": { - "field": "m_AimTimer", - "classname": "CountdownTimer", - "type": 16 - }, - "SniperHoldTimer": { - "field": "m_SniperHoldTimer", - "classname": "CountdownTimer", - "type": 16 - }, - "FocusIntervalTimer": { - "field": "m_FocusIntervalTimer", - "classname": "CountdownTimer", - "type": 16 - }, - "Acquired": { - "field": "m_bAcquired", - "type": 10 - }, - "Parent": { - "field": "CBtNode", - "type": 11 - } - }, - "CBtActionCombatPositioning": { - "SensorInputKey": { - "field": "m_szSensorInputKey", - "type": 14 - }, - "IsAttackingKey": { - "field": "m_szIsAttackingKey", - "type": 14 - }, - "ActionTimer": { - "field": "m_ActionTimer", - "classname": "CountdownTimer", - "type": 16 - }, - "Crouching": { - "field": "m_bCrouching", - "type": 10 - }, - "Parent": { - "field": "CBtNode", - "type": 11 - } - }, - "CBtActionMoveTo": { - "DestinationInputKey": { - "field": "m_szDestinationInputKey", - "type": 14 - }, - "HidingSpotInputKey": { - "field": "m_szHidingSpotInputKey", - "type": 14 - }, - "ThreatInputKey": { - "field": "m_szThreatInputKey", - "type": 14 - }, - "Destination": { - "field": "m_vecDestination", - "type": 21 - }, - "AutoLookAdjust": { - "field": "m_bAutoLookAdjust", - "type": 10 - }, - "ComputePath": { - "field": "m_bComputePath", - "type": 10 - }, - "DamagingAreasPenaltyCost": { - "field": "m_flDamagingAreasPenaltyCost", - "type": 8 - }, - "CheckApproximateCornersTimer": { - "field": "m_CheckApproximateCornersTimer", - "classname": "CountdownTimer", - "type": 16 - }, - "CheckHighPriorityItem": { - "field": "m_CheckHighPriorityItem", - "classname": "CountdownTimer", - "type": 16 - }, - "RepathTimer": { - "field": "m_RepathTimer", - "classname": "CountdownTimer", - "type": 16 - }, - "ArrivalEpsilon": { - "field": "m_flArrivalEpsilon", - "type": 8 - }, - "AdditionalArrivalEpsilon2D": { - "field": "m_flAdditionalArrivalEpsilon2D", - "type": 8 - }, - "HidingSpotCheckDistanceThreshold": { - "field": "m_flHidingSpotCheckDistanceThreshold", - "type": 8 - }, - "NearestAreaDistanceThreshold": { - "field": "m_flNearestAreaDistanceThreshold", - "type": 8 - }, - "Parent": { - "field": "CBtNode", - "type": 11 - } - }, - "CBtActionParachutePositioning": { - "ActionTimer": { - "field": "m_ActionTimer", - "classname": "CountdownTimer", - "type": 16 - }, - "Parent": { - "field": "CBtNode", - "type": 11 - } - }, - "CBtNode": {}, - "CBtNodeComposite": { - "Parent": { - "field": "CBtNode", - "type": 11 - } - }, - "CBtNodeCondition": { - "Negated": { - "field": "m_bNegated", - "type": 10 - }, - "Parent": { - "field": "CBtNodeDecorator", - "type": 11 - } - }, - "CBtNodeConditionInactive": { - "RoundStartThresholdSeconds": { - "field": "m_flRoundStartThresholdSeconds", - "type": 8 - }, - "SensorInactivityThresholdSeconds": { - "field": "m_flSensorInactivityThresholdSeconds", - "type": 8 - }, - "SensorInactivityTimer": { - "field": "m_SensorInactivityTimer", - "classname": "CountdownTimer", - "type": 16 - }, - "Parent": { - "field": "CBtNodeCondition", - "type": 11 - } - }, - "CBtNodeDecorator": { - "Parent": { - "field": "CBtNode", - "type": 11 - } - }, - "CBubbling": { - "Density": { - "field": "m_density", - "type": 2 - }, - "Frequency": { - "field": "m_frequency", - "type": 2 - }, - "State": { - "field": "m_state", - "type": 2 - }, - "Parent": { - "field": "CBaseModelEntity", - "type": 11 - } - }, - "CBuyZone": { - "LegacyTeamNum": { - "field": "m_LegacyTeamNum", - "type": 2 - }, - "Parent": { - "field": "CBaseTrigger", - "type": 11 - } - }, - "CC4": { - "LastValidPlayerHeldPosition": { - "field": "m_vecLastValidPlayerHeldPosition", - "type": 21 - }, - "LastValidDroppedPosition": { - "field": "m_vecLastValidDroppedPosition", - "type": 21 - }, - "DoValidDroppedPositionCheck": { - "field": "m_bDoValidDroppedPositionCheck", - "type": 10 - }, - "StartedArming": { - "field": "m_bStartedArming", - "type": 10 - }, - "ArmedTime": { - "field": "m_fArmedTime", - "type": 8 - }, - "BombPlacedAnimation": { - "field": "m_bBombPlacedAnimation", - "type": 10 - }, - "IsPlantingViaUse": { - "field": "m_bIsPlantingViaUse", - "type": 10 - }, - "EntitySpottedState": { - "field": "m_entitySpottedState", - "classname": "EntitySpottedState_t", - "type": 16 - }, - "SpotRules": { - "field": "m_nSpotRules", - "type": 2 - }, - "PlayedArmingBeeps": { - "field": "m_bPlayedArmingBeeps", - "type": 39, - "size": 7 - }, - "BombPlanted": { - "field": "m_bBombPlanted", - "type": 10 - }, - "Parent": { - "field": "CCSWeaponBase", - "type": 11 - } - }, - "CCSBot": { - "EyePosition": { - "field": "m_eyePosition", - "type": 21 - }, - "Name": { - "field": "m_name", - "type": 15, - "size": 64 - }, - "CombatRange": { - "field": "m_combatRange", - "type": 8 - }, - "IsRogue": { - "field": "m_isRogue", - "type": 10 - }, - "RogueTimer": { - "field": "m_rogueTimer", - "classname": "CountdownTimer", - "type": 16 - }, - "DiedLastRound": { - "field": "m_diedLastRound", - "type": 10 - }, - "SafeTime": { - "field": "m_safeTime", - "type": 8 - }, - "WasSafe": { - "field": "m_wasSafe", - "type": 10 - }, - "BlindFire": { - "field": "m_blindFire", - "type": 10 - }, - "SurpriseTimer": { - "field": "m_surpriseTimer", - "classname": "CountdownTimer", - "type": 16 - }, - "AllowActive": { - "field": "m_bAllowActive", - "type": 10 - }, - "IsFollowing": { - "field": "m_isFollowing", - "type": 10 - }, - "Leader": { - "field": "m_leader", - "type": 17, - "classname": "CCSPlayerPawn" - }, - "FollowTimestamp": { - "field": "m_followTimestamp", - "type": 8 - }, - "AllowAutoFollowTime": { - "field": "m_allowAutoFollowTime", - "type": 8 - }, - "HurryTimer": { - "field": "m_hurryTimer", - "classname": "CountdownTimer", - "type": 16 - }, - "AlertTimer": { - "field": "m_alertTimer", - "classname": "CountdownTimer", - "type": 16 - }, - "SneakTimer": { - "field": "m_sneakTimer", - "classname": "CountdownTimer", - "type": 16 - }, - "PanicTimer": { - "field": "m_panicTimer", - "classname": "CountdownTimer", - "type": 16 - }, - "StateTimestamp": { - "field": "m_stateTimestamp", - "type": 8 - }, - "IsAttacking": { - "field": "m_isAttacking", - "type": 10 - }, - "IsOpeningDoor": { - "field": "m_isOpeningDoor", - "type": 10 - }, - "TaskEntity": { - "field": "m_taskEntity", - "type": 17, - "classname": "CBaseEntity" - }, - "GoalPosition": { - "field": "m_goalPosition", - "type": 21 - }, - "GoalEntity": { - "field": "m_goalEntity", - "type": 17, - "classname": "CBaseEntity" - }, - "Avoid": { - "field": "m_avoid", - "type": 17, - "classname": "CBaseEntity" - }, - "AvoidTimestamp": { - "field": "m_avoidTimestamp", - "type": 8 - }, - "IsStopping": { - "field": "m_isStopping", - "type": 10 - }, - "HasVisitedEnemySpawn": { - "field": "m_hasVisitedEnemySpawn", - "type": 10 - }, - "StillTimer": { - "field": "m_stillTimer", - "classname": "IntervalTimer", - "type": 16 - }, - "EyeAnglesUnderPathFinderControl": { - "field": "m_bEyeAnglesUnderPathFinderControl", - "type": 10 - }, - "PathIndex": { - "field": "m_pathIndex", - "type": 2 - }, - "AreaEnteredTimestamp": { - "field": "m_areaEnteredTimestamp", - "type": 8 - }, - "RepathTimer": { - "field": "m_repathTimer", - "classname": "CountdownTimer", - "type": 16 - }, - "AvoidFriendTimer": { - "field": "m_avoidFriendTimer", - "classname": "CountdownTimer", - "type": 16 - }, - "IsFriendInTheWay": { - "field": "m_isFriendInTheWay", - "type": 10 - }, - "PoliteTimer": { - "field": "m_politeTimer", - "classname": "CountdownTimer", - "type": 16 - }, - "IsWaitingBehindFriend": { - "field": "m_isWaitingBehindFriend", - "type": 10 - }, - "PathLadderEnd": { - "field": "m_pathLadderEnd", - "type": 8 - }, - "MustRunTimer": { - "field": "m_mustRunTimer", - "classname": "CountdownTimer", - "type": 16 - }, - "WaitTimer": { - "field": "m_waitTimer", - "classname": "CountdownTimer", - "type": 16 - }, - "UpdateTravelDistanceTimer": { - "field": "m_updateTravelDistanceTimer", - "classname": "CountdownTimer", - "type": 16 - }, - "PlayerTravelDistance": { - "field": "m_playerTravelDistance", - "type": 37, - "size": 64 - }, - "TravelDistancePhase": { - "field": "m_travelDistancePhase", - "type": 4 - }, - "HostageEscortCount": { - "field": "m_hostageEscortCount", - "type": 4 - }, - "HostageEscortCountTimestamp": { - "field": "m_hostageEscortCountTimestamp", - "type": 8 - }, - "DesiredTeam": { - "field": "m_desiredTeam", - "type": 2 - }, - "HasJoined": { - "field": "m_hasJoined", - "type": 10 - }, - "IsWaitingForHostage": { - "field": "m_isWaitingForHostage", - "type": 10 - }, - "InhibitWaitingForHostageTimer": { - "field": "m_inhibitWaitingForHostageTimer", - "classname": "CountdownTimer", - "type": 16 - }, - "WaitForHostageTimer": { - "field": "m_waitForHostageTimer", - "classname": "CountdownTimer", - "type": 16 - }, - "NoisePosition": { - "field": "m_noisePosition", - "type": 21 - }, - "NoiseTravelDistance": { - "field": "m_noiseTravelDistance", - "type": 8 - }, - "NoiseTimestamp": { - "field": "m_noiseTimestamp", - "type": 8 - }, - "NoiseSource": { - "field": "m_noiseSource", - "classname": "CCSPlayerPawn", - "type": 24 - }, - "NoiseBendTimer": { - "field": "m_noiseBendTimer", - "classname": "CountdownTimer", - "type": 16 - }, - "BentNoisePosition": { - "field": "m_bentNoisePosition", - "type": 21 - }, - "BendNoisePositionValid": { - "field": "m_bendNoisePositionValid", - "type": 10 - }, - "LookAroundStateTimestamp": { - "field": "m_lookAroundStateTimestamp", - "type": 8 - }, - "LookAheadAngle": { - "field": "m_lookAheadAngle", - "type": 8 - }, - "ForwardAngle": { - "field": "m_forwardAngle", - "type": 8 - }, - "InhibitLookAroundTimestamp": { - "field": "m_inhibitLookAroundTimestamp", - "type": 8 - }, - "LookAtSpot": { - "field": "m_lookAtSpot", - "type": 21 - }, - "LookAtSpotDuration": { - "field": "m_lookAtSpotDuration", - "type": 8 - }, - "LookAtSpotTimestamp": { - "field": "m_lookAtSpotTimestamp", - "type": 8 - }, - "LookAtSpotAngleTolerance": { - "field": "m_lookAtSpotAngleTolerance", - "type": 8 - }, - "LookAtSpotClearIfClose": { - "field": "m_lookAtSpotClearIfClose", - "type": 10 - }, - "LookAtSpotAttack": { - "field": "m_lookAtSpotAttack", - "type": 10 - }, - "LookAtDesc": { - "field": "m_lookAtDesc", - "type": 15 - }, - "PeripheralTimestamp": { - "field": "m_peripheralTimestamp", - "type": 8 - }, - "ApproachPointCount": { - "field": "m_approachPointCount", - "type": 4 - }, - "ApproachPointViewPosition": { - "field": "m_approachPointViewPosition", - "type": 21 - }, - "ViewSteadyTimer": { - "field": "m_viewSteadyTimer", - "classname": "IntervalTimer", - "type": 16 - }, - "TossGrenadeTimer": { - "field": "m_tossGrenadeTimer", - "classname": "CountdownTimer", - "type": 16 - }, - "IsAvoidingGrenade": { - "field": "m_isAvoidingGrenade", - "classname": "CountdownTimer", - "type": 16 - }, - "SpotCheckTimestamp": { - "field": "m_spotCheckTimestamp", - "type": 8 - }, - "CheckedHidingSpotCount": { - "field": "m_checkedHidingSpotCount", - "type": 2 - }, - "LookPitch": { - "field": "m_lookPitch", - "type": 8 - }, - "LookPitchVel": { - "field": "m_lookPitchVel", - "type": 8 - }, - "LookYaw": { - "field": "m_lookYaw", - "type": 8 - }, - "LookYawVel": { - "field": "m_lookYawVel", - "type": 8 - }, - "TargetSpot": { - "field": "m_targetSpot", - "type": 21 - }, - "TargetSpotVelocity": { - "field": "m_targetSpotVelocity", - "type": 21 - }, - "TargetSpotPredicted": { - "field": "m_targetSpotPredicted", - "type": 21 - }, - "AimError": { - "field": "m_aimError", - "type": 20 - }, - "AimGoal": { - "field": "m_aimGoal", - "type": 20 - }, - "TargetSpotTime": { - "field": "m_targetSpotTime", - "type": 8 - }, - "AimFocus": { - "field": "m_aimFocus", - "type": 8 - }, - "AimFocusInterval": { - "field": "m_aimFocusInterval", - "type": 8 - }, - "AimFocusNextUpdate": { - "field": "m_aimFocusNextUpdate", - "type": 8 - }, - "IgnoreEnemiesTimer": { - "field": "m_ignoreEnemiesTimer", - "classname": "CountdownTimer", - "type": 16 - }, - "Enemy": { - "field": "m_enemy", - "type": 17, - "classname": "CCSPlayerPawn" - }, - "IsEnemyVisible": { - "field": "m_isEnemyVisible", - "type": 10 - }, - "VisibleEnemyParts": { - "field": "m_visibleEnemyParts", - "type": 4 - }, - "LastEnemyPosition": { - "field": "m_lastEnemyPosition", - "type": 21 - }, - "LastSawEnemyTimestamp": { - "field": "m_lastSawEnemyTimestamp", - "type": 8 - }, - "FirstSawEnemyTimestamp": { - "field": "m_firstSawEnemyTimestamp", - "type": 8 - }, - "CurrentEnemyAcquireTimestamp": { - "field": "m_currentEnemyAcquireTimestamp", - "type": 8 - }, - "EnemyDeathTimestamp": { - "field": "m_enemyDeathTimestamp", - "type": 8 - }, - "FriendDeathTimestamp": { - "field": "m_friendDeathTimestamp", - "type": 8 - }, - "IsLastEnemyDead": { - "field": "m_isLastEnemyDead", - "type": 10 - }, - "NearbyEnemyCount": { - "field": "m_nearbyEnemyCount", - "type": 2 - }, - "Bomber": { - "field": "m_bomber", - "type": 17, - "classname": "CCSPlayerPawn" - }, - "NearbyFriendCount": { - "field": "m_nearbyFriendCount", - "type": 2 - }, - "ClosestVisibleFriend": { - "field": "m_closestVisibleFriend", - "type": 17, - "classname": "CCSPlayerPawn" - }, - "ClosestVisibleHumanFriend": { - "field": "m_closestVisibleHumanFriend", - "type": 17, - "classname": "CCSPlayerPawn" - }, - "AttentionInterval": { - "field": "m_attentionInterval", - "classname": "IntervalTimer", - "type": 16 - }, - "Attacker": { - "field": "m_attacker", - "type": 17, - "classname": "CCSPlayerPawn" - }, - "AttackedTimestamp": { - "field": "m_attackedTimestamp", - "type": 8 - }, - "BurnedByFlamesTimer": { - "field": "m_burnedByFlamesTimer", - "classname": "IntervalTimer", - "type": 16 - }, - "LastVictimID": { - "field": "m_lastVictimID", - "type": 2 - }, - "IsAimingAtEnemy": { - "field": "m_isAimingAtEnemy", - "type": 10 - }, - "IsRapidFiring": { - "field": "m_isRapidFiring", - "type": 10 - }, - "EquipTimer": { - "field": "m_equipTimer", - "classname": "IntervalTimer", - "type": 16 - }, - "ZoomTimer": { - "field": "m_zoomTimer", - "classname": "CountdownTimer", - "type": 16 - }, - "FireWeaponTimestamp": { - "field": "m_fireWeaponTimestamp", - "type": 8 - }, - "LookForWeaponsOnGroundTimer": { - "field": "m_lookForWeaponsOnGroundTimer", - "classname": "CountdownTimer", - "type": 16 - }, - "IsSleeping": { - "field": "m_bIsSleeping", - "type": 10 - }, - "IsEnemySniperVisible": { - "field": "m_isEnemySniperVisible", - "type": 10 - }, - "SawEnemySniperTimer": { - "field": "m_sawEnemySniperTimer", - "classname": "CountdownTimer", - "type": 16 - }, - "EnemyQueueIndex": { - "field": "m_enemyQueueIndex", - "type": 4 - }, - "EnemyQueueCount": { - "field": "m_enemyQueueCount", - "type": 4 - }, - "EnemyQueueAttendIndex": { - "field": "m_enemyQueueAttendIndex", - "type": 4 - }, - "IsStuck": { - "field": "m_isStuck", - "type": 10 - }, - "StuckTimestamp": { - "field": "m_stuckTimestamp", - "type": 8 - }, - "StuckSpot": { - "field": "m_stuckSpot", - "type": 21 - }, - "WiggleTimer": { - "field": "m_wiggleTimer", - "classname": "CountdownTimer", - "type": 16 - }, - "StuckJumpTimer": { - "field": "m_stuckJumpTimer", - "classname": "CountdownTimer", - "type": 16 - }, - "NextCleanupCheckTimestamp": { - "field": "m_nextCleanupCheckTimestamp", - "type": 8 - }, - "AvgVel": { - "field": "m_avgVel", - "type": 37, - "size": 10 - }, - "AvgVelIndex": { - "field": "m_avgVelIndex", - "type": 2 - }, - "AvgVelCount": { - "field": "m_avgVelCount", - "type": 2 - }, - "LastOrigin": { - "field": "m_lastOrigin", - "type": 21 - }, - "LastRadioRecievedTimestamp": { - "field": "m_lastRadioRecievedTimestamp", - "type": 8 - }, - "LastRadioSentTimestamp": { - "field": "m_lastRadioSentTimestamp", - "type": 8 - }, - "RadioSubject": { - "field": "m_radioSubject", - "type": 17, - "classname": "CCSPlayerPawn" - }, - "RadioPosition": { - "field": "m_radioPosition", - "type": 21 - }, - "VoiceEndTimestamp": { - "field": "m_voiceEndTimestamp", - "type": 8 - }, - "LastValidReactionQueueFrame": { - "field": "m_lastValidReactionQueueFrame", - "type": 2 - }, - "Parent": { - "field": "CBot", - "type": 11 - } - }, - "CCSGOViewModel": { - "ShouldIgnoreOffsetAndAccuracy": { - "field": "m_bShouldIgnoreOffsetAndAccuracy", - "type": 10 - }, - "Parent": { - "field": "CPredictedViewModel", - "type": 11 - } - }, - "CCSGO_TeamIntroCharacterPosition": { - "Parent": { - "field": "CCSGO_TeamPreviewCharacterPosition", - "type": 11 - } - }, - "CCSGO_TeamIntroCounterTerroristPosition": { - "Parent": { - "field": "CCSGO_TeamIntroCharacterPosition", - "type": 11 - } - }, - "CCSGO_TeamIntroTerroristPosition": { - "Parent": { - "field": "CCSGO_TeamIntroCharacterPosition", - "type": 11 - } - }, - "CCSGO_TeamPreviewCharacterPosition": { - "Variant": { - "field": "m_nVariant", - "type": 2 - }, - "Random": { - "field": "m_nRandom", - "type": 2 - }, - "Ordinal": { - "field": "m_nOrdinal", - "type": 2 - }, - "WeaponName": { - "field": "m_sWeaponName", - "type": 14 - }, - "Xuid": { - "field": "m_xuid", - "type": 7 - }, - "AgentItem": { - "field": "m_agentItem", - "classname": "CEconItemView", - "type": 16 - }, - "GlovesItem": { - "field": "m_glovesItem", - "classname": "CEconItemView", - "type": 16 - }, - "WeaponItem": { - "field": "m_weaponItem", - "classname": "CEconItemView", - "type": 16 - }, - "Parent": { - "field": "CBaseEntity", - "type": 11 - } - }, - "CCSGO_TeamSelectCharacterPosition": { - "Parent": { - "field": "CCSGO_TeamPreviewCharacterPosition", - "type": 11 - } - }, - "CCSGO_TeamSelectCounterTerroristPosition": { - "Parent": { - "field": "CCSGO_TeamSelectCharacterPosition", - "type": 11 - } - }, - "CCSGO_TeamSelectTerroristPosition": { - "Parent": { - "field": "CCSGO_TeamSelectCharacterPosition", - "type": 11 - } - }, - "CCSGameRules": { - "FreezePeriod": { - "field": "m_bFreezePeriod", - "type": 10 - }, - "WarmupPeriod": { - "field": "m_bWarmupPeriod", - "type": 10 - }, - "WarmupPeriodEnd": { - "field": "m_fWarmupPeriodEnd", - "type": 8 - }, - "WarmupPeriodStart": { - "field": "m_fWarmupPeriodStart", - "type": 8 - }, - "ServerPaused": { - "field": "m_bServerPaused", - "type": 10 - }, - "TerroristTimeOutActive": { - "field": "m_bTerroristTimeOutActive", - "type": 10 - }, - "CTTimeOutActive": { - "field": "m_bCTTimeOutActive", - "type": 10 - }, - "TerroristTimeOutRemaining": { - "field": "m_flTerroristTimeOutRemaining", - "type": 8 - }, - "CTTimeOutRemaining": { - "field": "m_flCTTimeOutRemaining", - "type": 8 - }, - "TerroristTimeOuts": { - "field": "m_nTerroristTimeOuts", - "type": 2 - }, - "CTTimeOuts": { - "field": "m_nCTTimeOuts", - "type": 2 - }, - "TechnicalTimeOut": { - "field": "m_bTechnicalTimeOut", - "type": 10 - }, - "MatchWaitingForResume": { - "field": "m_bMatchWaitingForResume", - "type": 10 - }, - "RoundTime": { - "field": "m_iRoundTime", - "type": 2 - }, - "MatchStartTime": { - "field": "m_fMatchStartTime", - "type": 8 - }, - "RoundStartTime": { - "field": "m_fRoundStartTime", - "type": 8 - }, - "RestartRoundTime": { - "field": "m_flRestartRoundTime", - "type": 8 - }, - "GameRestart": { - "field": "m_bGameRestart", - "type": 10 - }, - "GameStartTime": { - "field": "m_flGameStartTime", - "type": 8 - }, - "TimeUntilNextPhaseStarts": { - "field": "m_timeUntilNextPhaseStarts", - "type": 8 - }, - "GamePhase": { - "field": "m_gamePhase", - "type": 2 - }, - "TotalRoundsPlayed": { - "field": "m_totalRoundsPlayed", - "type": 2 - }, - "RoundsPlayedThisPhase": { - "field": "m_nRoundsPlayedThisPhase", - "type": 2 - }, - "OvertimePlaying": { - "field": "m_nOvertimePlaying", - "type": 2 - }, - "HostagesRemaining": { - "field": "m_iHostagesRemaining", - "type": 2 - }, - "AnyHostageReached": { - "field": "m_bAnyHostageReached", - "type": 10 - }, - "MapHasBombTarget": { - "field": "m_bMapHasBombTarget", - "type": 10 - }, - "MapHasRescueZone": { - "field": "m_bMapHasRescueZone", - "type": 10 - }, - "MapHasBuyZone": { - "field": "m_bMapHasBuyZone", - "type": 10 - }, - "IsQueuedMatchmaking": { - "field": "m_bIsQueuedMatchmaking", - "type": 10 - }, - "QueuedMatchmakingMode": { - "field": "m_nQueuedMatchmakingMode", - "type": 2 - }, - "IsValveDS": { - "field": "m_bIsValveDS", - "type": 10 - }, - "LogoMap": { - "field": "m_bLogoMap", - "type": 10 - }, - "PlayAllStepSoundsOnServer": { - "field": "m_bPlayAllStepSoundsOnServer", - "type": 10 - }, - "SpectatorSlotCount": { - "field": "m_iSpectatorSlotCount", - "type": 2 - }, - "MatchDevice": { - "field": "m_MatchDevice", - "type": 2 - }, - "HasMatchStarted": { - "field": "m_bHasMatchStarted", - "type": 10 - }, - "NextMapInMapgroup": { - "field": "m_nNextMapInMapgroup", - "type": 2 - }, - "TournamentEventName": { - "field": "m_szTournamentEventName", - "type": 15, - "size": 512 - }, - "TournamentEventStage": { - "field": "m_szTournamentEventStage", - "type": 15, - "size": 512 - }, - "MatchStatTxt": { - "field": "m_szMatchStatTxt", - "type": 15, - "size": 512 - }, - "TournamentPredictionsTxt": { - "field": "m_szTournamentPredictionsTxt", - "type": 15, - "size": 512 - }, - "TournamentPredictionsPct": { - "field": "m_nTournamentPredictionsPct", - "type": 2 - }, - "CMMItemDropRevealStartTime": { - "field": "m_flCMMItemDropRevealStartTime", - "type": 8 - }, - "CMMItemDropRevealEndTime": { - "field": "m_flCMMItemDropRevealEndTime", - "type": 8 - }, - "IsDroppingItems": { - "field": "m_bIsDroppingItems", - "type": 10 - }, - "IsQuestEligible": { - "field": "m_bIsQuestEligible", - "type": 10 - }, - "IsHltvActive": { - "field": "m_bIsHltvActive", - "type": 10 - }, - "ProhibitedItemIndices": { - "field": "m_arrProhibitedItemIndices", - "type": 34, - "size": 100 - }, - "TournamentActiveCasterAccounts": { - "field": "m_arrTournamentActiveCasterAccounts", - "type": 35, - "size": 4 - }, - "NumBestOfMaps": { - "field": "m_numBestOfMaps", - "type": 2 - }, - "HalloweenMaskListSeed": { - "field": "m_nHalloweenMaskListSeed", - "type": 2 - }, - "BombDropped": { - "field": "m_bBombDropped", - "type": 10 - }, - "BombPlanted": { - "field": "m_bBombPlanted", - "type": 10 - }, - "RoundWinStatus": { - "field": "m_iRoundWinStatus", - "type": 2 - }, - "RoundWinReason": { - "field": "m_eRoundWinReason", - "type": 2 - }, - "TCantBuy": { - "field": "m_bTCantBuy", - "type": 10 - }, - "CTCantBuy": { - "field": "m_bCTCantBuy", - "type": 10 - }, - "MatchStats_RoundResults": { - "field": "m_iMatchStats_RoundResults", - "type": 31, - "size": 30 - }, - "MatchStats_PlayersAlive_CT": { - "field": "m_iMatchStats_PlayersAlive_CT", - "type": 31, - "size": 30 - }, - "MatchStats_PlayersAlive_T": { - "field": "m_iMatchStats_PlayersAlive_T", - "type": 31, - "size": 30 - }, - "TeamRespawnWaveTimes": { - "field": "m_TeamRespawnWaveTimes", - "type": 37, - "size": 32 - }, - "NextRespawnWave": { - "field": "m_flNextRespawnWave", - "type": 37, - "size": 32 - }, - "ServerQuestID": { - "field": "m_nServerQuestID", - "type": 2 - }, - "MinimapMins": { - "field": "m_vMinimapMins", - "type": 21 - }, - "MinimapMaxs": { - "field": "m_vMinimapMaxs", - "type": 21 - }, - "MinimapVerticalSectionHeights": { - "field": "m_MinimapVerticalSectionHeights", - "type": 37, - "size": 8 - }, - "SpawnedTerrorHuntHeavy": { - "field": "m_bSpawnedTerrorHuntHeavy", - "type": 10 - }, - "EndMatchMapGroupVoteTypes": { - "field": "m_nEndMatchMapGroupVoteTypes", - "type": 31, - "size": 10 - }, - "EndMatchMapGroupVoteOptions": { - "field": "m_nEndMatchMapGroupVoteOptions", - "type": 31, - "size": 10 - }, - "EndMatchMapVoteWinner": { - "field": "m_nEndMatchMapVoteWinner", - "type": 2 - }, - "NumConsecutiveCTLoses": { - "field": "m_iNumConsecutiveCTLoses", - "type": 2 - }, - "NumConsecutiveTerroristLoses": { - "field": "m_iNumConsecutiveTerroristLoses", - "type": 2 - }, - "HasHostageBeenTouched": { - "field": "m_bHasHostageBeenTouched", - "type": 10 - }, - "IntermissionStartTime": { - "field": "m_flIntermissionStartTime", - "type": 8 - }, - "IntermissionEndTime": { - "field": "m_flIntermissionEndTime", - "type": 8 - }, - "LevelInitialized": { - "field": "m_bLevelInitialized", - "type": 10 - }, - "TotalRoundsPlayed1": { - "field": "m_iTotalRoundsPlayed", - "type": 2 - }, - "UnBalancedRounds": { - "field": "m_iUnBalancedRounds", - "type": 2 - }, - "EndMatchOnRoundReset": { - "field": "m_endMatchOnRoundReset", - "type": 10 - }, - "EndMatchOnThink": { - "field": "m_endMatchOnThink", - "type": 10 - }, - "FreezeTime": { - "field": "m_iFreezeTime", - "type": 2 - }, - "NumTerrorist": { - "field": "m_iNumTerrorist", - "type": 2 - }, - "NumCT": { - "field": "m_iNumCT", - "type": 2 - }, - "NumSpawnableTerrorist": { - "field": "m_iNumSpawnableTerrorist", - "type": 2 - }, - "NumSpawnableCT": { - "field": "m_iNumSpawnableCT", - "type": 2 - }, - "SelectedHostageSpawnIndices": { - "field": "m_arrSelectedHostageSpawnIndices", - "type": 53 - }, - "SpawnPointsRandomSeed": { - "field": "m_nSpawnPointsRandomSeed", - "type": 2 - }, - "FirstConnected": { - "field": "m_bFirstConnected", - "type": 10 - }, - "CompleteReset": { - "field": "m_bCompleteReset", - "type": 10 - }, - "PickNewTeamsOnReset": { - "field": "m_bPickNewTeamsOnReset", - "type": 10 - }, - "ScrambleTeamsOnRestart": { - "field": "m_bScrambleTeamsOnRestart", - "type": 10 - }, - "SwapTeamsOnRestart": { - "field": "m_bSwapTeamsOnRestart", - "type": 10 - }, - "EndMatchTiedVotes": { - "field": "m_nEndMatchTiedVotes", - "type": 53 - }, - "NeedToAskPlayersForContinueVote": { - "field": "m_bNeedToAskPlayersForContinueVote", - "type": 10 - }, - "NumQueuedMatchmakingAccounts": { - "field": "m_numQueuedMatchmakingAccounts", - "type": 6 - }, - "AvgPlayerRank": { - "field": "m_fAvgPlayerRank", - "type": 8 - }, - "QueuedMatchmakingReservationString": { - "field": "m_pQueuedMatchmakingReservationString", - "type": 15 - }, - "NumTotalTournamentDrops": { - "field": "m_numTotalTournamentDrops", - "type": 6 - }, - "NumSpectatorsCountMax": { - "field": "m_numSpectatorsCountMax", - "type": 6 - }, - "NumSpectatorsCountMaxTV": { - "field": "m_numSpectatorsCountMaxTV", - "type": 6 - }, - "NumSpectatorsCountMaxLnk": { - "field": "m_numSpectatorsCountMaxLnk", - "type": 6 - }, - "ForceTeamChangeSilent": { - "field": "m_bForceTeamChangeSilent", - "type": 10 - }, - "LoadingRoundBackupData": { - "field": "m_bLoadingRoundBackupData", - "type": 10 - }, - "MatchInfoShowType": { - "field": "m_nMatchInfoShowType", - "type": 2 - }, - "MatchInfoDecidedTime": { - "field": "m_flMatchInfoDecidedTime", - "type": 8 - }, - "MTeamDMLastWinningTeamNumber": { - "field": "mTeamDMLastWinningTeamNumber", - "type": 2 - }, - "MTeamDMLastThinkTime": { - "field": "mTeamDMLastThinkTime", - "type": 8 - }, - "TeamDMLastAnnouncementTime": { - "field": "m_flTeamDMLastAnnouncementTime", - "type": 8 - }, - "AccountTerrorist": { - "field": "m_iAccountTerrorist", - "type": 2 - }, - "AccountCT": { - "field": "m_iAccountCT", - "type": 2 - }, - "SpawnPointCount_Terrorist": { - "field": "m_iSpawnPointCount_Terrorist", - "type": 2 - }, - "SpawnPointCount_CT": { - "field": "m_iSpawnPointCount_CT", - "type": 2 - }, - "MaxNumTerrorists": { - "field": "m_iMaxNumTerrorists", - "type": 2 - }, - "MaxNumCTs": { - "field": "m_iMaxNumCTs", - "type": 2 - }, - "LoserBonusMostRecentTeam": { - "field": "m_iLoserBonusMostRecentTeam", - "type": 2 - }, - "TmNextPeriodicThink": { - "field": "m_tmNextPeriodicThink", - "type": 8 - }, - "VoiceWonMatchBragFired": { - "field": "m_bVoiceWonMatchBragFired", - "type": 10 - }, - "WarmupNextChatNoticeTime": { - "field": "m_fWarmupNextChatNoticeTime", - "type": 8 - }, - "HostagesRescued": { - "field": "m_iHostagesRescued", - "type": 2 - }, - "HostagesTouched": { - "field": "m_iHostagesTouched", - "type": 2 - }, - "NextHostageAnnouncement": { - "field": "m_flNextHostageAnnouncement", - "type": 8 - }, - "NoTerroristsKilled": { - "field": "m_bNoTerroristsKilled", - "type": 10 - }, - "NoCTsKilled": { - "field": "m_bNoCTsKilled", - "type": 10 - }, - "NoEnemiesKilled": { - "field": "m_bNoEnemiesKilled", - "type": 10 - }, - "CanDonateWeapons": { - "field": "m_bCanDonateWeapons", - "type": 10 - }, - "FirstKillTime": { - "field": "m_firstKillTime", - "type": 8 - }, - "FirstBloodTime": { - "field": "m_firstBloodTime", - "type": 8 - }, - "HostageWasInjured": { - "field": "m_hostageWasInjured", - "type": 10 - }, - "HostageWasKilled": { - "field": "m_hostageWasKilled", - "type": 10 - }, - "VoteCalled": { - "field": "m_bVoteCalled", - "type": 10 - }, - "ServerVoteOnReset": { - "field": "m_bServerVoteOnReset", - "type": 10 - }, - "VoteCheckThrottle": { - "field": "m_flVoteCheckThrottle", - "type": 8 - }, - "BuyTimeEnded": { - "field": "m_bBuyTimeEnded", - "type": 10 - }, - "LastFreezeEndBeep": { - "field": "m_nLastFreezeEndBeep", - "type": 2 - }, - "TargetBombed": { - "field": "m_bTargetBombed", - "type": 10 - }, - "BombDefused": { - "field": "m_bBombDefused", - "type": 10 - }, - "MapHasBombZone": { - "field": "m_bMapHasBombZone", - "type": 10 - }, - "MainCTSpawnPos": { - "field": "m_vecMainCTSpawnPos", - "type": 21 - }, - "RespawningAllRespawnablePlayers": { - "field": "m_bRespawningAllRespawnablePlayers", - "type": 10 - }, - "NextCTSpawnPoint": { - "field": "m_iNextCTSpawnPoint", - "type": 2 - }, - "CTSpawnPointUsedTime": { - "field": "m_flCTSpawnPointUsedTime", - "type": 8 - }, - "NextTerroristSpawnPoint": { - "field": "m_iNextTerroristSpawnPoint", - "type": 2 - }, - "TerroristSpawnPointUsedTime": { - "field": "m_flTerroristSpawnPointUsedTime", - "type": 8 - }, - "IsUnreservedGameServer": { - "field": "m_bIsUnreservedGameServer", - "type": 10 - }, - "AutobalanceDisplayTime": { - "field": "m_fAutobalanceDisplayTime", - "type": 8 - }, - "AllowWeaponSwitch": { - "field": "m_bAllowWeaponSwitch", - "type": 10 - }, - "RoundTimeWarningTriggered": { - "field": "m_bRoundTimeWarningTriggered", - "type": 10 - }, - "PhaseChangeAnnouncementTime": { - "field": "m_phaseChangeAnnouncementTime", - "type": 8 - }, - "NextUpdateTeamClanNamesTime": { - "field": "m_fNextUpdateTeamClanNamesTime", - "type": 8 - }, - "LastThinkTime": { - "field": "m_flLastThinkTime", - "type": 8 - }, - "AccumulatedRoundOffDamage": { - "field": "m_fAccumulatedRoundOffDamage", - "type": 8 - }, - "ShorthandedBonusLastEvalRound": { - "field": "m_nShorthandedBonusLastEvalRound", - "type": 2 - }, - "MatchAbortedEarlyReason": { - "field": "m_nMatchAbortedEarlyReason", - "type": 2 - }, - "HasTriggeredRoundStartMusic": { - "field": "m_bHasTriggeredRoundStartMusic", - "type": 10 - }, - "SwitchingTeamsAtRoundReset": { - "field": "m_bSwitchingTeamsAtRoundReset", - "type": 10 - }, - "GameModeRules": { - "field": "m_pGameModeRules", - "classname": "CCSGameModeRules", - "type": 24 - }, - "PlayerResource": { - "field": "m_hPlayerResource", - "type": 17, - "classname": "CBaseEntity" - }, - "RetakeRules": { - "field": "m_RetakeRules", - "classname": "CRetakeGameRules", - "type": 16 - }, - "TeamLastKillUsedUniqueWeaponMatch": { - "field": "m_bTeamLastKillUsedUniqueWeaponMatch", - "type": 39, - "size": 4 - }, - "MatchEndCount": { - "field": "m_nMatchEndCount", - "type": 4 - }, - "TTeamIntroVariant": { - "field": "m_nTTeamIntroVariant", - "type": 2 - }, - "CTTeamIntroVariant": { - "field": "m_nCTTeamIntroVariant", - "type": 2 - }, - "TeamIntroPeriod": { - "field": "m_bTeamIntroPeriod", - "type": 10 - }, - "TeamIntroPeriodEnd": { - "field": "m_fTeamIntroPeriodEnd", - "type": 8 - }, - "PlayedTeamIntroVO": { - "field": "m_bPlayedTeamIntroVO", - "type": 10 - }, - "RoundEndWinnerTeam": { - "field": "m_iRoundEndWinnerTeam", - "type": 2 - }, - "RoundEndReason": { - "field": "m_eRoundEndReason", - "type": 2 - }, - "RoundEndShowTimerDefend": { - "field": "m_bRoundEndShowTimerDefend", - "type": 10 - }, - "RoundEndTimerTime": { - "field": "m_iRoundEndTimerTime", - "type": 2 - }, - "RoundEndFunFactToken": { - "field": "m_sRoundEndFunFactToken", - "type": 14 - }, - "RoundEndFunFactPlayerSlot": { - "field": "m_iRoundEndFunFactPlayerSlot", - "type": 2 - }, - "RoundEndFunFactData1": { - "field": "m_iRoundEndFunFactData1", - "type": 2 - }, - "RoundEndFunFactData2": { - "field": "m_iRoundEndFunFactData2", - "type": 2 - }, - "RoundEndFunFactData3": { - "field": "m_iRoundEndFunFactData3", - "type": 2 - }, - "RoundEndMessage": { - "field": "m_sRoundEndMessage", - "type": 14 - }, - "RoundEndPlayerCount": { - "field": "m_iRoundEndPlayerCount", - "type": 2 - }, - "RoundEndNoMusic": { - "field": "m_bRoundEndNoMusic", - "type": 10 - }, - "RoundEndLegacy": { - "field": "m_iRoundEndLegacy", - "type": 2 - }, - "RoundEndCount": { - "field": "m_nRoundEndCount", - "type": 4 - }, - "RoundStartRoundNumber": { - "field": "m_iRoundStartRoundNumber", - "type": 2 - }, - "RoundStartCount": { - "field": "m_nRoundStartCount", - "type": 4 - }, - "LastPerfSampleTime": { - "field": "m_flLastPerfSampleTime", - "type": 9 - }, - "Parent": { - "field": "CTeamplayRules", - "type": 11 - } - }, - "CCSGameRulesProxy": { - "GameRules": { - "field": "m_pGameRules", - "classname": "CCSGameRules", - "type": 24 - }, - "Parent": { - "field": "CGameRulesProxy", - "type": 11 - } - }, - "CCSMinimapBoundary": { - "Parent": { - "field": "CBaseEntity", - "type": 11 - } - }, - "CCSObserverPawn": { - "Parent": { - "field": "CCSPlayerPawnBase", - "type": 11 - } - }, - "CCSPlace": { - "Name": { - "field": "m_name", - "type": 13 - }, - "Parent": { - "field": "CServerOnlyModelEntity", - "type": 11 - } - }, - "CCSPlayerPawn": { - "BulletServices": { - "field": "m_pBulletServices", - "classname": "CCSPlayer_BulletServices", - "type": 24 - }, - "HostageServices": { - "field": "m_pHostageServices", - "classname": "CCSPlayer_HostageServices", - "type": 24 - }, - "BuyServices": { - "field": "m_pBuyServices", - "classname": "CCSPlayer_BuyServices", - "type": 24 - }, - "ActionTrackingServices": { - "field": "m_pActionTrackingServices", - "classname": "CCSPlayer_ActionTrackingServices", - "type": 24 - }, - "RadioServices": { - "field": "m_pRadioServices", - "classname": "CCSPlayer_RadioServices", - "type": 24 - }, - "DamageReactServices": { - "field": "m_pDamageReactServices", - "classname": "CCSPlayer_DamageReactServices", - "type": 24 - }, - "CharacterDefIndex": { - "field": "m_nCharacterDefIndex", - "type": 5 - }, - "HasFemaleVoice": { - "field": "m_bHasFemaleVoice", - "type": 10 - }, - "StrVOPrefix": { - "field": "m_strVOPrefix", - "type": 14 - }, - "LastPlaceName": { - "field": "m_szLastPlaceName", - "type": 15, - "size": 18 - }, - "InHostageResetZone": { - "field": "m_bInHostageResetZone", - "type": 10 - }, - "InBuyZone": { - "field": "m_bInBuyZone", - "type": 10 - }, - "WasInBuyZone": { - "field": "m_bWasInBuyZone", - "type": 10 - }, - "InHostageRescueZone": { - "field": "m_bInHostageRescueZone", - "type": 10 - }, - "InBombZone": { - "field": "m_bInBombZone", - "type": 10 - }, - "WasInHostageRescueZone": { - "field": "m_bWasInHostageRescueZone", - "type": 10 - }, - "RetakesOffering": { - "field": "m_iRetakesOffering", - "type": 2 - }, - "RetakesOfferingCard": { - "field": "m_iRetakesOfferingCard", - "type": 2 - }, - "RetakesHasDefuseKit": { - "field": "m_bRetakesHasDefuseKit", - "type": 10 - }, - "RetakesMVPLastRound": { - "field": "m_bRetakesMVPLastRound", - "type": 10 - }, - "RetakesMVPBoostItem": { - "field": "m_iRetakesMVPBoostItem", - "type": 2 - }, - "RetakesMVPBoostExtraUtility": { - "field": "m_RetakesMVPBoostExtraUtility", - "type": 6 - }, - "HealthShotBoostExpirationTime": { - "field": "m_flHealthShotBoostExpirationTime", - "type": 8 - }, - "LandingTimeSeconds": { - "field": "m_flLandingTimeSeconds", - "type": 8 - }, - "AimPunchAngle": { - "field": "m_aimPunchAngle", - "type": 20 - }, - "AimPunchAngleVel": { - "field": "m_aimPunchAngleVel", - "type": 20 - }, - "AimPunchTickBase": { - "field": "m_aimPunchTickBase", - "type": 2 - }, - "AimPunchTickFraction": { - "field": "m_aimPunchTickFraction", - "type": 8 - }, - "AimPunchCache": { - "field": "m_aimPunchCache", - "type": 62 - }, - "IsBuyMenuOpen": { - "field": "m_bIsBuyMenuOpen", - "type": 10 - }, - "LastHeadBoneTransformIsValid": { - "field": "m_bLastHeadBoneTransformIsValid", - "type": 10 - }, - "LastLandTime": { - "field": "m_lastLandTime", - "type": 8 - }, - "OnGroundLastTick": { - "field": "m_bOnGroundLastTick", - "type": 10 - }, - "PlayerLocked": { - "field": "m_iPlayerLocked", - "type": 2 - }, - "TimeOfLastInjury": { - "field": "m_flTimeOfLastInjury", - "type": 8 - }, - "NextSprayDecalTime": { - "field": "m_flNextSprayDecalTime", - "type": 8 - }, - "NextSprayDecalTimeExpedited": { - "field": "m_bNextSprayDecalTimeExpedited", - "type": 10 - }, - "RagdollDamageBone": { - "field": "m_nRagdollDamageBone", - "type": 2 - }, - "RagdollDamageForce": { - "field": "m_vRagdollDamageForce", - "type": 21 - }, - "RagdollDamagePosition": { - "field": "m_vRagdollDamagePosition", - "type": 21 - }, - "RagdollDamageWeaponName": { - "field": "m_szRagdollDamageWeaponName", - "type": 15, - "size": 64 - }, - "RagdollDamageHeadshot": { - "field": "m_bRagdollDamageHeadshot", - "type": 10 - }, - "RagdollServerOrigin": { - "field": "m_vRagdollServerOrigin", - "type": 21 - }, - "EconGloves": { - "field": "m_EconGloves", - "classname": "CEconItemView", - "type": 16 - }, - "EconGlovesChanged": { - "field": "m_nEconGlovesChanged", - "type": 4 - }, - "DeathEyeAngles": { - "field": "m_qDeathEyeAngles", - "type": 20 - }, - "SkipOneHeadConstraintUpdate": { - "field": "m_bSkipOneHeadConstraintUpdate", - "type": 10 - }, - "LeftHanded": { - "field": "m_bLeftHanded", - "type": 10 - }, - "SwitchedHandednessTime": { - "field": "m_fSwitchedHandednessTime", - "type": 8 - }, - "ViewmodelOffsetX": { - "field": "m_flViewmodelOffsetX", - "type": 8 - }, - "ViewmodelOffsetY": { - "field": "m_flViewmodelOffsetY", - "type": 8 - }, - "ViewmodelOffsetZ": { - "field": "m_flViewmodelOffsetZ", - "type": 8 - }, - "ViewmodelFOV": { - "field": "m_flViewmodelFOV", - "type": 8 - }, - "IsWalking": { - "field": "m_bIsWalking", - "type": 10 - }, - "LastGivenDefuserTime": { - "field": "m_fLastGivenDefuserTime", - "type": 8 - }, - "LastGivenBombTime": { - "field": "m_fLastGivenBombTime", - "type": 8 - }, - "DealtDamageToEnemyMostRecentTimestamp": { - "field": "m_flDealtDamageToEnemyMostRecentTimestamp", - "type": 8 - }, - "DisplayHistoryBits": { - "field": "m_iDisplayHistoryBits", - "type": 6 - }, - "LastAttackedTeammate": { - "field": "m_flLastAttackedTeammate", - "type": 8 - }, - "AllowAutoFollowTime": { - "field": "m_allowAutoFollowTime", - "type": 8 - }, - "ResetArmorNextSpawn": { - "field": "m_bResetArmorNextSpawn", - "type": 10 - }, - "LastKillerIndex": { - "field": "m_nLastKillerIndex", - "type": 2 - }, - "EntitySpottedState": { - "field": "m_entitySpottedState", - "classname": "EntitySpottedState_t", - "type": 16 - }, - "SpotRules": { - "field": "m_nSpotRules", - "type": 2 - }, - "IsScoped": { - "field": "m_bIsScoped", - "type": 10 - }, - "ResumeZoom": { - "field": "m_bResumeZoom", - "type": 10 - }, - "IsDefusing": { - "field": "m_bIsDefusing", - "type": 10 - }, - "IsGrabbingHostage": { - "field": "m_bIsGrabbingHostage", - "type": 10 - }, - "BlockingUseActionInProgress": { - "field": "m_iBlockingUseActionInProgress", - "type": 6 - }, - "EmitSoundTime": { - "field": "m_flEmitSoundTime", - "type": 8 - }, - "InNoDefuseArea": { - "field": "m_bInNoDefuseArea", - "type": 10 - }, - "BombSiteIndex": { - "field": "m_iBombSiteIndex", - "type": 2 - }, - "WhichBombZone": { - "field": "m_nWhichBombZone", - "type": 2 - }, - "InBombZoneTrigger": { - "field": "m_bInBombZoneTrigger", - "type": 10 - }, - "WasInBombZoneTrigger": { - "field": "m_bWasInBombZoneTrigger", - "type": 10 - }, - "ShotsFired": { - "field": "m_iShotsFired", - "type": 2 - }, - "FlinchStack": { - "field": "m_flFlinchStack", - "type": 8 - }, - "VelocityModifier": { - "field": "m_flVelocityModifier", - "type": 8 - }, - "HitHeading": { - "field": "m_flHitHeading", - "type": 8 - }, - "HitBodyPart": { - "field": "m_nHitBodyPart", - "type": 2 - }, - "TotalBulletForce": { - "field": "m_vecTotalBulletForce", - "type": 21 - }, - "WaitForNoAttack": { - "field": "m_bWaitForNoAttack", - "type": 10 - }, - "IgnoreLadderJumpTime": { - "field": "m_ignoreLadderJumpTime", - "type": 8 - }, - "KilledByHeadshot": { - "field": "m_bKilledByHeadshot", - "type": 10 - }, - "LastHitBox": { - "field": "m_LastHitBox", - "type": 2 - }, - "LastHealth": { - "field": "m_LastHealth", - "type": 2 - }, - "Bot": { - "field": "m_pBot", - "classname": "CCSBot", - "type": 24 - }, - "BotAllowActive": { - "field": "m_bBotAllowActive", - "type": 10 - }, - "ThirdPersonHeading": { - "field": "m_thirdPersonHeading", - "type": 20 - }, - "SlopeDropOffset": { - "field": "m_flSlopeDropOffset", - "type": 8 - }, - "SlopeDropHeight": { - "field": "m_flSlopeDropHeight", - "type": 8 - }, - "HeadConstraintOffset": { - "field": "m_vHeadConstraintOffset", - "type": 21 - }, - "LastPickupPriority": { - "field": "m_nLastPickupPriority", - "type": 2 - }, - "LastPickupPriorityTime": { - "field": "m_flLastPickupPriorityTime", - "type": 8 - }, - "ArmorValue": { - "field": "m_ArmorValue", - "type": 2 - }, - "CurrentEquipmentValue": { - "field": "m_unCurrentEquipmentValue", - "type": 5 - }, - "RoundStartEquipmentValue": { - "field": "m_unRoundStartEquipmentValue", - "type": 5 - }, - "FreezetimeEndEquipmentValue": { - "field": "m_unFreezetimeEndEquipmentValue", - "type": 5 - }, - "LastWeaponFireUsercmd": { - "field": "m_iLastWeaponFireUsercmd", - "type": 2 - }, - "IsSpawning": { - "field": "m_bIsSpawning", - "type": 10 - }, - "DeathFlags": { - "field": "m_iDeathFlags", - "type": 2 - }, - "HasDeathInfo": { - "field": "m_bHasDeathInfo", - "type": 10 - }, - "DeathInfoTime": { - "field": "m_flDeathInfoTime", - "type": 8 - }, - "DeathInfoOrigin": { - "field": "m_vecDeathInfoOrigin", - "type": 21 - }, - "PlayerPatchEconIndices": { - "field": "m_vecPlayerPatchEconIndices", - "type": 35, - "size": 5 - }, - "GunGameImmunityColor": { - "field": "m_GunGameImmunityColor", - "type": 19 - }, - "GrenadeParameterStashTime": { - "field": "m_grenadeParameterStashTime", - "type": 8 - }, - "GrenadeParametersStashed": { - "field": "m_bGrenadeParametersStashed", - "type": 10 - }, - "StashedShootAngles": { - "field": "m_angStashedShootAngles", - "type": 20 - }, - "StashedGrenadeThrowPosition": { - "field": "m_vecStashedGrenadeThrowPosition", - "type": 21 - }, - "StashedVelocity": { - "field": "m_vecStashedVelocity", - "type": 21 - }, - "ShootAngleHistory": { - "field": "m_angShootAngleHistory", - "type": 41, - "size": 2 - }, - "ThrowPositionHistory": { - "field": "m_vecThrowPositionHistory", - "type": 42, - "size": 2 - }, - "VelocityHistory": { - "field": "m_vecVelocityHistory", - "type": 42, - "size": 2 - }, - "HighestAppliedDamageTagTick": { - "field": "m_nHighestAppliedDamageTagTick", - "type": 2 - }, - "Parent": { - "field": "CCSPlayerPawnBase", - "type": 11 - } - }, - "CCSPlayerPawnBase": { - "CTouchExpansionComponent": { - "field": "m_CTouchExpansionComponent", - "classname": "CTouchExpansionComponent", - "type": 16 - }, - "PingServices": { - "field": "m_pPingServices", - "classname": "CCSPlayer_PingServices", - "type": 24 - }, - "ViewModelServices": { - "field": "m_pViewModelServices", - "classname": "CPlayer_ViewModelServices", - "type": 24 - }, - "BlindUntilTime": { - "field": "m_blindUntilTime", - "type": 8 - }, - "BlindStartTime": { - "field": "m_blindStartTime", - "type": 8 - }, - "PlayerState": { - "field": "m_iPlayerState", - "type": 6 - }, - "Respawning": { - "field": "m_bRespawning", - "type": 10 - }, - "ImmuneToGunGameDamageTime": { - "field": "m_fImmuneToGunGameDamageTime", - "type": 8 - }, - "GunGameImmunity": { - "field": "m_bGunGameImmunity", - "type": 10 - }, - "MolotovDamageTime": { - "field": "m_fMolotovDamageTime", - "type": 8 - }, - "HasMovedSinceSpawn": { - "field": "m_bHasMovedSinceSpawn", - "type": 10 - }, - "NumSpawns": { - "field": "m_iNumSpawns", - "type": 2 - }, - "IdleTimeSinceLastAction": { - "field": "m_flIdleTimeSinceLastAction", - "type": 8 - }, - "NextRadarUpdateTime": { - "field": "m_fNextRadarUpdateTime", - "type": 8 - }, - "FlashDuration": { - "field": "m_flFlashDuration", - "type": 8 - }, - "FlashMaxAlpha": { - "field": "m_flFlashMaxAlpha", - "type": 8 - }, - "ProgressBarStartTime": { - "field": "m_flProgressBarStartTime", - "type": 8 - }, - "ProgressBarDuration": { - "field": "m_iProgressBarDuration", - "type": 2 - }, - "EyeAngles": { - "field": "m_angEyeAngles", - "type": 20 - }, - "WasNotKilledNaturally": { - "field": "m_wasNotKilledNaturally", - "type": 10 - }, - "CommittingSuicideOnTeamChange": { - "field": "m_bCommittingSuicideOnTeamChange", - "type": 10 - }, - "OriginalController": { - "field": "m_hOriginalController", - "type": 17, - "classname": "CCSPlayerController" - }, - "Parent": { - "field": "CBasePlayerPawn", - "type": 11 - } - }, - "CCSPlayerResource": { - "HostageAlive": { - "field": "m_bHostageAlive", - "type": 39, - "size": 12 - }, - "IsHostageFollowingSomeone": { - "field": "m_isHostageFollowingSomeone", - "type": 39, - "size": 12 - }, - "HostageEntityIDs": { - "field": "m_iHostageEntityIDs", - "type": 31, - "size": 12 - }, - "BombsiteCenterA": { - "field": "m_bombsiteCenterA", - "type": 21 - }, - "BombsiteCenterB": { - "field": "m_bombsiteCenterB", - "type": 21 - }, - "HostageRescueX": { - "field": "m_hostageRescueX", - "type": 31, - "size": 4 - }, - "HostageRescueY": { - "field": "m_hostageRescueY", - "type": 31, - "size": 4 - }, - "HostageRescueZ": { - "field": "m_hostageRescueZ", - "type": 31, - "size": 4 - }, - "EndMatchNextMapAllVoted": { - "field": "m_bEndMatchNextMapAllVoted", - "type": 10 - }, - "FoundGoalPositions": { - "field": "m_foundGoalPositions", - "type": 10 - }, - "Parent": { - "field": "CBaseEntity", - "type": 11 - } - }, - "CCSPlayer_RadioServices": { - "GotHostageTalkTimer": { - "field": "m_flGotHostageTalkTimer", - "type": 8 - }, - "DefusingTalkTimer": { - "field": "m_flDefusingTalkTimer", - "type": 8 - }, - "C4PlantTalkTimer": { - "field": "m_flC4PlantTalkTimer", - "type": 8 - }, - "RadioTokenSlots": { - "field": "m_flRadioTokenSlots", - "type": 37, - "size": 3 - }, - "IgnoreRadio": { - "field": "m_bIgnoreRadio", - "type": 10 - }, - "Parent": { - "field": "CPlayerPawnComponent", - "type": 11 - } - }, - "CCSServerPointScriptEntity": { - "Parent": { - "field": "CCSPointScriptEntity", - "type": 11 - } - }, - "CCSSprite": { - "Parent": { - "field": "CSprite", - "type": 11 - } - }, - "CCSTeam": { - "LastRecievedShorthandedRoundBonus": { - "field": "m_nLastRecievedShorthandedRoundBonus", - "type": 2 - }, - "ShorthandedRoundBonusStartRound": { - "field": "m_nShorthandedRoundBonusStartRound", - "type": 2 - }, - "Surrendered": { - "field": "m_bSurrendered", - "type": 10 - }, - "TeamMatchStat": { - "field": "m_szTeamMatchStat", - "type": 15, - "size": 512 - }, - "NumMapVictories": { - "field": "m_numMapVictories", - "type": 2 - }, - "ScoreFirstHalf": { - "field": "m_scoreFirstHalf", - "type": 2 - }, - "ScoreSecondHalf": { - "field": "m_scoreSecondHalf", - "type": 2 - }, - "ScoreOvertime": { - "field": "m_scoreOvertime", - "type": 2 - }, - "ClanTeamname": { - "field": "m_szClanTeamname", - "type": 15, - "size": 129 - }, - "ClanID": { - "field": "m_iClanID", - "type": 6 - }, - "TeamFlagImage": { - "field": "m_szTeamFlagImage", - "type": 15, - "size": 8 - }, - "TeamLogoImage": { - "field": "m_szTeamLogoImage", - "type": 15, - "size": 8 - }, - "NextResourceTime": { - "field": "m_flNextResourceTime", - "type": 8 - }, - "LastUpdateSentAt": { - "field": "m_iLastUpdateSentAt", - "type": 2 - }, - "Parent": { - "field": "CTeam", - "type": 11 - } - }, - "CCSWeaponBase": { - "Removeable": { - "field": "m_bRemoveable", - "type": 10 - }, - "FireSequenceStartTime": { - "field": "m_flFireSequenceStartTime", - "type": 8 - }, - "FireSequenceStartTimeChange": { - "field": "m_nFireSequenceStartTimeChange", - "type": 2 - }, - "FireSequenceStartTimeAck": { - "field": "m_nFireSequenceStartTimeAck", - "type": 2 - }, - "PlayerFireEvent": { - "field": "m_ePlayerFireEvent", - "type": 6 - }, - "PlayerFireEventAttackType": { - "field": "m_ePlayerFireEventAttackType", - "type": 6 - }, - "SeqIdle": { - "field": "m_seqIdle", - "type": 2 - }, - "SeqFirePrimary": { - "field": "m_seqFirePrimary", - "type": 2 - }, - "SeqFireSecondary": { - "field": "m_seqFireSecondary", - "type": 2 - }, - "ThirdPersonFireSequences": { - "field": "m_thirdPersonFireSequences", - "type": 53 - }, - "CurrentThirdPersonSequence": { - "field": "m_hCurrentThirdPersonSequence", - "type": 2 - }, - "SilencerBoneIndex": { - "field": "m_nSilencerBoneIndex", - "type": 2 - }, - "ThirdPersonSequences": { - "field": "m_thirdPersonSequences", - "type": 31, - "size": 7 - }, - "PlayerAmmoStockOnPickup": { - "field": "m_bPlayerAmmoStockOnPickup", - "type": 10 - }, - "RequireUseToTouch": { - "field": "m_bRequireUseToTouch", - "type": 10 - }, - "State": { - "field": "m_iState", - "type": 6 - }, - "LastTimeInAir": { - "field": "m_flLastTimeInAir", - "type": 8 - }, - "LastDeployTime": { - "field": "m_flLastDeployTime", - "type": 8 - }, - "LastEmptySoundCmdNum": { - "field": "m_nLastEmptySoundCmdNum", - "type": 2 - }, - "ViewModelIndex": { - "field": "m_nViewModelIndex", - "type": 6 - }, - "ReloadsWithClips": { - "field": "m_bReloadsWithClips", - "type": 10 - }, - "TimeWeaponIdle": { - "field": "m_flTimeWeaponIdle", - "type": 8 - }, - "FireOnEmpty": { - "field": "m_bFireOnEmpty", - "type": 10 - }, - "OnPlayerPickup": { - "field": "m_OnPlayerPickup", - "classname": "CEntityIOOutput", - "type": 16 - }, - "WeaponMode": { - "field": "m_weaponMode", - "type": 6 - }, - "TurningInaccuracyDelta": { - "field": "m_flTurningInaccuracyDelta", - "type": 8 - }, - "TurningInaccuracyEyeDirLast": { - "field": "m_vecTurningInaccuracyEyeDirLast", - "type": 21 - }, - "TurningInaccuracy": { - "field": "m_flTurningInaccuracy", - "type": 8 - }, - "AccuracyPenalty": { - "field": "m_fAccuracyPenalty", - "type": 8 - }, - "LastAccuracyUpdateTime": { - "field": "m_flLastAccuracyUpdateTime", - "type": 8 - }, - "AccuracySmoothedForZoom": { - "field": "m_fAccuracySmoothedForZoom", - "type": 8 - }, - "ScopeZoomEndTime": { - "field": "m_fScopeZoomEndTime", - "type": 8 - }, - "RecoilIndex": { - "field": "m_iRecoilIndex", - "type": 2 - }, - "RecoilIndex1": { - "field": "m_flRecoilIndex", - "type": 8 - }, - "BurstMode": { - "field": "m_bBurstMode", - "type": 10 - }, - "PostponeFireReadyTicks": { - "field": "m_nPostponeFireReadyTicks", - "type": 2 - }, - "PostponeFireReadyFrac": { - "field": "m_flPostponeFireReadyFrac", - "type": 8 - }, - "InReload": { - "field": "m_bInReload", - "type": 10 - }, - "ReloadVisuallyComplete": { - "field": "m_bReloadVisuallyComplete", - "type": 10 - }, - "DroppedAtTime": { - "field": "m_flDroppedAtTime", - "type": 8 - }, - "IsHauledBack": { - "field": "m_bIsHauledBack", - "type": 10 - }, - "SilencerOn": { - "field": "m_bSilencerOn", - "type": 10 - }, - "TimeSilencerSwitchComplete": { - "field": "m_flTimeSilencerSwitchComplete", - "type": 8 - }, - "OriginalTeamNumber": { - "field": "m_iOriginalTeamNumber", - "type": 2 - }, - "MostRecentTeamNumber": { - "field": "m_iMostRecentTeamNumber", - "type": 2 - }, - "DroppedNearBuyZone": { - "field": "m_bDroppedNearBuyZone", - "type": 10 - }, - "NextAttackRenderTimeOffset": { - "field": "m_flNextAttackRenderTimeOffset", - "type": 8 - }, - "CanBePickedUp": { - "field": "m_bCanBePickedUp", - "type": 10 - }, - "UseCanOverrideNextOwnerTouchTime": { - "field": "m_bUseCanOverrideNextOwnerTouchTime", - "type": 10 - }, - "NextOwnerTouchTime": { - "field": "m_nextOwnerTouchTime", - "type": 8 - }, - "NextPrevOwnerTouchTime": { - "field": "m_nextPrevOwnerTouchTime", - "type": 8 - }, - "NextPrevOwnerUseTime": { - "field": "m_nextPrevOwnerUseTime", - "type": 8 - }, - "PrevOwner": { - "field": "m_hPrevOwner", - "type": 17, - "classname": "CCSPlayerPawn" - }, - "DropTick": { - "field": "m_nDropTick", - "type": 2 - }, - "Donated": { - "field": "m_donated", - "type": 10 - }, - "LastShotTime": { - "field": "m_fLastShotTime", - "type": 8 - }, - "WasOwnedByCT": { - "field": "m_bWasOwnedByCT", - "type": 10 - }, - "WasOwnedByTerrorist": { - "field": "m_bWasOwnedByTerrorist", - "type": 10 - }, - "FiredOutOfAmmoEvent": { - "field": "m_bFiredOutOfAmmoEvent", - "type": 10 - }, - "NumRemoveUnownedWeaponThink": { - "field": "m_numRemoveUnownedWeaponThink", - "type": 2 - }, - "IronSightController": { - "field": "m_IronSightController", - "classname": "CIronSightController", - "type": 16 - }, - "IronSightMode": { - "field": "m_iIronSightMode", - "type": 2 - }, - "LastLOSTraceFailureTime": { - "field": "m_flLastLOSTraceFailureTime", - "type": 8 - }, - "NumEmptyAttacks": { - "field": "m_iNumEmptyAttacks", - "type": 2 - }, - "WatTickOffset": { - "field": "m_flWatTickOffset", - "type": 8 - }, - "Parent": { - "field": "CBasePlayerWeapon", - "type": 11 - } - }, - "CCSWeaponBaseGun": { - "ZoomLevel": { - "field": "m_zoomLevel", - "type": 2 - }, - "BurstShotsRemaining": { - "field": "m_iBurstShotsRemaining", - "type": 2 - }, - "SilencedModelIndex": { - "field": "m_silencedModelIndex", - "type": 2 - }, - "InPrecache": { - "field": "m_inPrecache", - "type": 10 - }, - "NeedsBoltAction": { - "field": "m_bNeedsBoltAction", - "type": 10 - }, - "SkillReloadAvailable": { - "field": "m_bSkillReloadAvailable", - "type": 10 - }, - "SkillReloadLiftedReloadKey": { - "field": "m_bSkillReloadLiftedReloadKey", - "type": 10 - }, - "SkillBoltInterruptAvailable": { - "field": "m_bSkillBoltInterruptAvailable", - "type": 10 - }, - "SkillBoltLiftedFireKey": { - "field": "m_bSkillBoltLiftedFireKey", - "type": 10 - }, - "Parent": { - "field": "CCSWeaponBase", - "type": 11 - } - }, - "CChangeLevel": { - "MapName": { - "field": "m_sMapName", - "type": 14 - }, - "LandmarkName": { - "field": "m_sLandmarkName", - "type": 14 - }, - "OnChangeLevel": { - "field": "m_OnChangeLevel", - "classname": "CEntityIOOutput", - "type": 16 - }, - "Touched": { - "field": "m_bTouched", - "type": 10 - }, - "NoTouch": { - "field": "m_bNoTouch", - "type": 10 - }, - "NewChapter": { - "field": "m_bNewChapter", - "type": 10 - }, - "OnChangeLevelFired": { - "field": "m_bOnChangeLevelFired", - "type": 10 - }, - "Parent": { - "field": "CBaseTrigger", - "type": 11 - } - }, - "CChicken": { - "AttributeManager": { - "field": "m_AttributeManager", - "classname": "CAttributeContainer", - "type": 16 - }, - "UpdateTimer": { - "field": "m_updateTimer", - "classname": "CountdownTimer", - "type": 16 - }, - "StuckAnchor": { - "field": "m_stuckAnchor", - "type": 21 - }, - "StuckTimer": { - "field": "m_stuckTimer", - "classname": "CountdownTimer", - "type": 16 - }, - "CollisionStuckTimer": { - "field": "m_collisionStuckTimer", - "classname": "CountdownTimer", - "type": 16 - }, - "IsOnGround": { - "field": "m_isOnGround", - "type": 10 - }, - "FallVelocity": { - "field": "m_vFallVelocity", - "type": 21 - }, - "DesiredActivity": { - "field": "m_desiredActivity", - "type": 6 - }, - "CurrentActivity": { - "field": "m_currentActivity", - "type": 6 - }, - "ActivityTimer": { - "field": "m_activityTimer", - "classname": "CountdownTimer", - "type": 16 - }, - "TurnRate": { - "field": "m_turnRate", - "type": 8 - }, - "FleeFrom": { - "field": "m_fleeFrom", - "type": 17, - "classname": "CBaseEntity" - }, - "MoveRateThrottleTimer": { - "field": "m_moveRateThrottleTimer", - "classname": "CountdownTimer", - "type": 16 - }, - "StartleTimer": { - "field": "m_startleTimer", - "classname": "CountdownTimer", - "type": 16 - }, - "VocalizeTimer": { - "field": "m_vocalizeTimer", - "classname": "CountdownTimer", - "type": 16 - }, - "WhenZombified": { - "field": "m_flWhenZombified", - "type": 8 - }, - "JumpedThisFrame": { - "field": "m_jumpedThisFrame", - "type": 10 - }, - "Leader": { - "field": "m_leader", - "type": 17, - "classname": "CCSPlayerPawn" - }, - "ReuseTimer": { - "field": "m_reuseTimer", - "classname": "CountdownTimer", - "type": 16 - }, - "HasBeenUsed": { - "field": "m_hasBeenUsed", - "type": 10 - }, - "JumpTimer": { - "field": "m_jumpTimer", - "classname": "CountdownTimer", - "type": 16 - }, - "LastJumpTime": { - "field": "m_flLastJumpTime", - "type": 8 - }, - "InJump": { - "field": "m_bInJump", - "type": 10 - }, - "RepathTimer": { - "field": "m_repathTimer", - "classname": "CountdownTimer", - "type": 16 - }, - "PathGoal": { - "field": "m_vecPathGoal", - "type": 21 - }, - "ActiveFollowStartTime": { - "field": "m_flActiveFollowStartTime", - "type": 8 - }, - "FollowMinuteTimer": { - "field": "m_followMinuteTimer", - "classname": "CountdownTimer", - "type": 16 - }, - "BlockDirectionTimer": { - "field": "m_BlockDirectionTimer", - "classname": "CountdownTimer", - "type": 16 - }, - "Parent": { - "field": "CDynamicProp", - "type": 11 - } - }, - "CColorCorrection": { - "FadeInDuration": { - "field": "m_flFadeInDuration", - "type": 8 - }, - "FadeOutDuration": { - "field": "m_flFadeOutDuration", - "type": 8 - }, - "StartFadeInWeight": { - "field": "m_flStartFadeInWeight", - "type": 8 - }, - "StartFadeOutWeight": { - "field": "m_flStartFadeOutWeight", - "type": 8 - }, - "TimeStartFadeIn": { - "field": "m_flTimeStartFadeIn", - "type": 8 - }, - "TimeStartFadeOut": { - "field": "m_flTimeStartFadeOut", - "type": 8 - }, - "MaxWeight": { - "field": "m_flMaxWeight", - "type": 8 - }, - "StartDisabled": { - "field": "m_bStartDisabled", - "type": 10 - }, - "Enabled": { - "field": "m_bEnabled", - "type": 10 - }, - "Master": { - "field": "m_bMaster", - "type": 10 - }, - "ClientSide": { - "field": "m_bClientSide", - "type": 10 - }, - "Exclusive": { - "field": "m_bExclusive", - "type": 10 - }, - "MinFalloff": { - "field": "m_MinFalloff", - "type": 8 - }, - "MaxFalloff": { - "field": "m_MaxFalloff", - "type": 8 - }, - "CurWeight": { - "field": "m_flCurWeight", - "type": 8 - }, - "NetlookupFilename": { - "field": "m_netlookupFilename", - "type": 15, - "size": 512 - }, - "LookupFilename": { - "field": "m_lookupFilename", - "type": 13 - }, - "Parent": { - "field": "CBaseEntity", - "type": 11 - } - }, - "CColorCorrectionVolume": { - "Enabled": { - "field": "m_bEnabled", - "type": 10 - }, - "MaxWeight": { - "field": "m_MaxWeight", - "type": 8 - }, - "FadeDuration": { - "field": "m_FadeDuration", - "type": 8 - }, - "StartDisabled": { - "field": "m_bStartDisabled", - "type": 10 - }, - "Weight": { - "field": "m_Weight", - "type": 8 - }, - "LookupFilename": { - "field": "m_lookupFilename", - "type": 15, - "size": 512 - }, - "LastEnterWeight": { - "field": "m_LastEnterWeight", - "type": 8 - }, - "LastEnterTime": { - "field": "m_LastEnterTime", - "type": 8 - }, - "LastExitWeight": { - "field": "m_LastExitWeight", - "type": 8 - }, - "LastExitTime": { - "field": "m_LastExitTime", - "type": 8 - }, - "Parent": { - "field": "CBaseTrigger", - "type": 11 - } - }, - "CCommentaryAuto": { - "OnCommentaryNewGame": { - "field": "m_OnCommentaryNewGame", - "classname": "CEntityIOOutput", - "type": 16 - }, - "OnCommentaryMidGame": { - "field": "m_OnCommentaryMidGame", - "classname": "CEntityIOOutput", - "type": 16 - }, - "OnCommentaryMultiplayerSpawn": { - "field": "m_OnCommentaryMultiplayerSpawn", - "classname": "CEntityIOOutput", - "type": 16 - }, - "Parent": { - "field": "CBaseEntity", - "type": 11 - } - }, - "CCommentarySystem": { - "CommentaryConvarsChanging": { - "field": "m_bCommentaryConvarsChanging", - "type": 10 - }, - "CommentaryEnabledMidGame": { - "field": "m_bCommentaryEnabledMidGame", - "type": 10 - }, - "NextTeleportTime": { - "field": "m_flNextTeleportTime", - "type": 8 - }, - "TeleportStage": { - "field": "m_iTeleportStage", - "type": 2 - }, - "CheatState": { - "field": "m_bCheatState", - "type": 10 - }, - "IsFirstSpawnGroupToLoad": { - "field": "m_bIsFirstSpawnGroupToLoad", - "type": 10 - } - }, - "CCommentaryViewPosition": { - "Parent": { - "field": "CSprite", - "type": 11 - } - }, - "CConstantForceController": { - "Linear": { - "field": "m_linear", - "type": 21 - }, - "Angular": { - "field": "m_angular", - "type": 21 - }, - "LinearSave": { - "field": "m_linearSave", - "type": 21 - }, - "AngularSave": { - "field": "m_angularSave", - "type": 21 - } - }, - "CConstraintAnchor": { - "MassScale": { - "field": "m_massScale", - "type": 8 - }, - "Parent": { - "field": "CBaseAnimGraph", - "type": 11 - } - }, - "CCredits": { - "OnCreditsDone": { - "field": "m_OnCreditsDone", - "classname": "CEntityIOOutput", - "type": 16 - }, - "RolledOutroCredits": { - "field": "m_bRolledOutroCredits", - "type": 10 - }, - "LogoLength": { - "field": "m_flLogoLength", - "type": 8 - }, - "Parent": { - "field": "CPointEntity", - "type": 11 - } - }, - "CDEagle": { - "Parent": { - "field": "CCSWeaponBaseGun", - "type": 11 - } - }, - "CDebugHistory": { - "NpcEvents": { - "field": "m_nNpcEvents", - "type": 2 - }, - "Parent": { - "field": "CBaseEntity", - "type": 11 - } - }, - "CDecoyGrenade": { - "Parent": { - "field": "CBaseCSGrenade", - "type": 11 - } - }, - "CDecoyProjectile": { - "DecoyShotTick": { - "field": "m_nDecoyShotTick", - "type": 2 - }, - "ShotsRemaining": { - "field": "m_shotsRemaining", - "type": 2 - }, - "ExpireTime": { - "field": "m_fExpireTime", - "type": 8 - }, - "DecoyWeaponDefIndex": { - "field": "m_decoyWeaponDefIndex", - "type": 5 - }, - "Parent": { - "field": "CBaseCSGrenadeProjectile", - "type": 11 - } - }, - "CDynamicLight": { - "ActualFlags": { - "field": "m_ActualFlags", - "type": 4 - }, - "Flags": { - "field": "m_Flags", - "type": 4 - }, - "LightStyle": { - "field": "m_LightStyle", - "type": 4 - }, - "On": { - "field": "m_On", - "type": 10 - }, - "Radius": { - "field": "m_Radius", - "type": 8 - }, - "Exponent": { - "field": "m_Exponent", - "type": 2 - }, - "InnerAngle": { - "field": "m_InnerAngle", - "type": 8 - }, - "OuterAngle": { - "field": "m_OuterAngle", - "type": 8 - }, - "SpotRadius": { - "field": "m_SpotRadius", - "type": 8 - }, - "Parent": { - "field": "CBaseModelEntity", - "type": 11 - } - }, - "CDynamicProp": { - "CreateNavObstacle": { - "field": "m_bCreateNavObstacle", - "type": 10 - }, - "NavObstacleUpdatesOverridden": { - "field": "m_bNavObstacleUpdatesOverridden", - "type": 10 - }, - "UseHitboxesForRenderBox": { - "field": "m_bUseHitboxesForRenderBox", - "type": 10 - }, - "UseAnimGraph": { - "field": "m_bUseAnimGraph", - "type": 10 - }, - "OutputAnimBegun": { - "field": "m_pOutputAnimBegun", - "classname": "CEntityIOOutput", - "type": 16 - }, - "OutputAnimOver": { - "field": "m_pOutputAnimOver", - "classname": "CEntityIOOutput", - "type": 16 - }, - "OutputAnimLoopCycleOver": { - "field": "m_pOutputAnimLoopCycleOver", - "classname": "CEntityIOOutput", - "type": 16 - }, - "OnAnimReachedStart": { - "field": "m_OnAnimReachedStart", - "classname": "CEntityIOOutput", - "type": 16 - }, - "OnAnimReachedEnd": { - "field": "m_OnAnimReachedEnd", - "classname": "CEntityIOOutput", - "type": 16 - }, - "IdleAnim": { - "field": "m_iszIdleAnim", - "type": 13 - }, - "IdleAnimLoopMode": { - "field": "m_nIdleAnimLoopMode", - "type": 6 - }, - "RandomizeCycle": { - "field": "m_bRandomizeCycle", - "type": 10 - }, - "StartDisabled": { - "field": "m_bStartDisabled", - "type": 10 - }, - "FiredStartEndOutput": { - "field": "m_bFiredStartEndOutput", - "type": 10 - }, - "ForceNpcExclude": { - "field": "m_bForceNpcExclude", - "type": 10 - }, - "CreateNonSolid": { - "field": "m_bCreateNonSolid", - "type": 10 - }, - "IsOverrideProp": { - "field": "m_bIsOverrideProp", - "type": 10 - }, - "InitialGlowState": { - "field": "m_iInitialGlowState", - "type": 2 - }, - "GlowRange": { - "field": "m_nGlowRange", - "type": 2 - }, - "GlowRangeMin": { - "field": "m_nGlowRangeMin", - "type": 2 - }, - "GlowColor": { - "field": "m_glowColor", - "type": 19 - }, - "GlowTeam": { - "field": "m_nGlowTeam", - "type": 2 - }, - "Parent": { - "field": "CBreakableProp", - "type": 11 - } - }, - "CDynamicPropAlias_cable_dynamic": { - "Parent": { - "field": "CDynamicProp", - "type": 11 - } - }, - "CDynamicPropAlias_dynamic_prop": { - "Parent": { - "field": "CDynamicProp", - "type": 11 - } - }, - "CDynamicPropAlias_prop_dynamic_override": { - "Parent": { - "field": "CDynamicProp", - "type": 11 - } - }, - "CEconEntity": { - "AttributeManager": { - "field": "m_AttributeManager", - "classname": "CAttributeContainer", - "type": 16 - }, - "OriginalOwnerXuidLow": { - "field": "m_OriginalOwnerXuidLow", - "type": 6 - }, - "OriginalOwnerXuidHigh": { - "field": "m_OriginalOwnerXuidHigh", - "type": 6 - }, - "FallbackPaintKit": { - "field": "m_nFallbackPaintKit", - "type": 2 - }, - "FallbackSeed": { - "field": "m_nFallbackSeed", - "type": 2 - }, - "FallbackWear": { - "field": "m_flFallbackWear", - "type": 8 - }, - "FallbackStatTrak": { - "field": "m_nFallbackStatTrak", - "type": 2 - }, - "OldProvidee": { - "field": "m_hOldProvidee", - "type": 17, - "classname": "CBaseEntity" - }, - "OldOwnerClass": { - "field": "m_iOldOwnerClass", - "type": 2 - }, - "Parent": { - "field": "CBaseFlex", - "type": 11 - } - }, - "CEconItemView": { - "ItemDefinitionIndex": { - "field": "m_iItemDefinitionIndex", - "type": 5 - }, - "EntityQuality": { - "field": "m_iEntityQuality", - "type": 2 - }, - "EntityLevel": { - "field": "m_iEntityLevel", - "type": 6 - }, - "ItemID": { - "field": "m_iItemID", - "type": 7 - }, - "ItemIDHigh": { - "field": "m_iItemIDHigh", - "type": 6 - }, - "ItemIDLow": { - "field": "m_iItemIDLow", - "type": 6 - }, - "AccountID": { - "field": "m_iAccountID", - "type": 6 - }, - "InventoryPosition": { - "field": "m_iInventoryPosition", - "type": 6 - }, - "Initialized": { - "field": "m_bInitialized", - "type": 10 - }, - "AttributeList": { - "field": "m_AttributeList", - "classname": "CAttributeList", - "type": 16 - }, - "NetworkedDynamicAttributes": { - "field": "m_NetworkedDynamicAttributes", - "classname": "CAttributeList", - "type": 16 - }, - "CustomName": { - "field": "m_szCustomName", - "type": 15, - "size": 161 - }, - "CustomNameOverride": { - "field": "m_szCustomNameOverride", - "type": 15, - "size": 161 - }, - "Parent": { - "field": "IEconItemInterface", - "type": 11 - } - }, - "CEconWearable": { - "ForceSkin": { - "field": "m_nForceSkin", - "type": 2 - }, - "AlwaysAllow": { - "field": "m_bAlwaysAllow", - "type": 10 - }, - "Parent": { - "field": "CEconEntity", - "type": 11 - } - }, - "CEnableMotionFixup": { - "Parent": { - "field": "CBaseEntity", - "type": 11 - } - }, - "CEntityBlocker": { - "Parent": { - "field": "CBaseModelEntity", - "type": 11 - } - }, - "CEntityDissolve": { - "FadeInStart": { - "field": "m_flFadeInStart", - "type": 8 - }, - "FadeInLength": { - "field": "m_flFadeInLength", - "type": 8 - }, - "FadeOutModelStart": { - "field": "m_flFadeOutModelStart", - "type": 8 - }, - "FadeOutModelLength": { - "field": "m_flFadeOutModelLength", - "type": 8 - }, - "FadeOutStart": { - "field": "m_flFadeOutStart", - "type": 8 - }, - "FadeOutLength": { - "field": "m_flFadeOutLength", - "type": 8 - }, - "StartTime": { - "field": "m_flStartTime", - "type": 8 - }, - "DissolveType": { - "field": "m_nDissolveType", - "type": 6 - }, - "DissolverOrigin": { - "field": "m_vDissolverOrigin", - "type": 21 - }, - "Magnitude": { - "field": "m_nMagnitude", - "type": 6 - }, - "Parent": { - "field": "CBaseModelEntity", - "type": 11 - } - }, - "CEntityFlame": { - "EntAttached": { - "field": "m_hEntAttached", - "type": 17, - "classname": "CBaseEntity" - }, - "CheapEffect": { - "field": "m_bCheapEffect", - "type": 10 - }, - "Size": { - "field": "m_flSize", - "type": 8 - }, - "UseHitboxes": { - "field": "m_bUseHitboxes", - "type": 10 - }, - "NumHitboxFires": { - "field": "m_iNumHitboxFires", - "type": 2 - }, - "HitboxFireScale": { - "field": "m_flHitboxFireScale", - "type": 8 - }, - "Lifetime": { - "field": "m_flLifetime", - "type": 8 - }, - "Attacker": { - "field": "m_hAttacker", - "type": 17, - "classname": "CBaseEntity" - }, - "DangerSound": { - "field": "m_iDangerSound", - "type": 2 - }, - "DirectDamagePerSecond": { - "field": "m_flDirectDamagePerSecond", - "type": 8 - }, - "CustomDamageType": { - "field": "m_iCustomDamageType", - "type": 2 - }, - "Parent": { - "field": "CBaseEntity", - "type": 11 - } - }, - "CEnvBeam": { - "Active": { - "field": "m_active", - "type": 2 - }, - "StartEntity": { - "field": "m_iszStartEntity", - "type": 13 - }, - "EndEntity": { - "field": "m_iszEndEntity", - "type": 13 - }, - "Life": { - "field": "m_life", - "type": 8 - }, - "BoltWidth": { - "field": "m_boltWidth", - "type": 8 - }, - "NoiseAmplitude": { - "field": "m_noiseAmplitude", - "type": 8 - }, - "Speed": { - "field": "m_speed", - "type": 2 - }, - "Restrike": { - "field": "m_restrike", - "type": 8 - }, - "SpriteName": { - "field": "m_iszSpriteName", - "type": 13 - }, - "FrameStart": { - "field": "m_frameStart", - "type": 2 - }, - "EndPointWorld": { - "field": "m_vEndPointWorld", - "type": 21 - }, - "EndPointRelative": { - "field": "m_vEndPointRelative", - "type": 21 - }, - "Radius": { - "field": "m_radius", - "type": 8 - }, - "TouchType": { - "field": "m_TouchType", - "type": 6 - }, - "FilterName": { - "field": "m_iFilterName", - "type": 13 - }, - "Filter": { - "field": "m_hFilter", - "type": 17, - "classname": "CBaseEntity" - }, - "Decal": { - "field": "m_iszDecal", - "type": 13 - }, - "OnTouchedByEntity": { - "field": "m_OnTouchedByEntity", - "classname": "CEntityIOOutput", - "type": 16 - }, - "Parent": { - "field": "CBeam", - "type": 11 - } - }, - "CEnvBeverage": { - "CanInDispenser": { - "field": "m_CanInDispenser", - "type": 10 - }, - "BeverageType": { - "field": "m_nBeverageType", - "type": 2 - }, - "Parent": { - "field": "CBaseEntity", - "type": 11 - } - }, - "CEnvCombinedLightProbeVolume": { - "Entity_Color": { - "field": "m_Entity_Color", - "type": 19 - }, - "Entity_flBrightness": { - "field": "m_Entity_flBrightness", - "type": 8 - }, - "Entity_bCustomCubemapTexture": { - "field": "m_Entity_bCustomCubemapTexture", - "type": 10 - }, - "Entity_vBoxMins": { - "field": "m_Entity_vBoxMins", - "type": 21 - }, - "Entity_vBoxMaxs": { - "field": "m_Entity_vBoxMaxs", - "type": 21 - }, - "Entity_bMoveable": { - "field": "m_Entity_bMoveable", - "type": 10 - }, - "Entity_nHandshake": { - "field": "m_Entity_nHandshake", - "type": 2 - }, - "Entity_nEnvCubeMapArrayIndex": { - "field": "m_Entity_nEnvCubeMapArrayIndex", - "type": 2 - }, - "Entity_nPriority": { - "field": "m_Entity_nPriority", - "type": 2 - }, - "Entity_bStartDisabled": { - "field": "m_Entity_bStartDisabled", - "type": 10 - }, - "Entity_flEdgeFadeDist": { - "field": "m_Entity_flEdgeFadeDist", - "type": 8 - }, - "Entity_vEdgeFadeDists": { - "field": "m_Entity_vEdgeFadeDists", - "type": 21 - }, - "Entity_nLightProbeSizeX": { - "field": "m_Entity_nLightProbeSizeX", - "type": 2 - }, - "Entity_nLightProbeSizeY": { - "field": "m_Entity_nLightProbeSizeY", - "type": 2 - }, - "Entity_nLightProbeSizeZ": { - "field": "m_Entity_nLightProbeSizeZ", - "type": 2 - }, - "Entity_nLightProbeAtlasX": { - "field": "m_Entity_nLightProbeAtlasX", - "type": 2 - }, - "Entity_nLightProbeAtlasY": { - "field": "m_Entity_nLightProbeAtlasY", - "type": 2 - }, - "Entity_nLightProbeAtlasZ": { - "field": "m_Entity_nLightProbeAtlasZ", - "type": 2 - }, - "Entity_bEnabled": { - "field": "m_Entity_bEnabled", - "type": 10 - }, - "Parent": { - "field": "CBaseEntity", - "type": 11 - } - }, - "CEnvCubemap": { - "Entity_bCustomCubemapTexture": { - "field": "m_Entity_bCustomCubemapTexture", - "type": 10 - }, - "Entity_flInfluenceRadius": { - "field": "m_Entity_flInfluenceRadius", - "type": 8 - }, - "Entity_vBoxProjectMins": { - "field": "m_Entity_vBoxProjectMins", - "type": 21 - }, - "Entity_vBoxProjectMaxs": { - "field": "m_Entity_vBoxProjectMaxs", - "type": 21 - }, - "Entity_bMoveable": { - "field": "m_Entity_bMoveable", - "type": 10 - }, - "Entity_nHandshake": { - "field": "m_Entity_nHandshake", - "type": 2 - }, - "Entity_nEnvCubeMapArrayIndex": { - "field": "m_Entity_nEnvCubeMapArrayIndex", - "type": 2 - }, - "Entity_nPriority": { - "field": "m_Entity_nPriority", - "type": 2 - }, - "Entity_flEdgeFadeDist": { - "field": "m_Entity_flEdgeFadeDist", - "type": 8 - }, - "Entity_vEdgeFadeDists": { - "field": "m_Entity_vEdgeFadeDists", - "type": 21 - }, - "Entity_flDiffuseScale": { - "field": "m_Entity_flDiffuseScale", - "type": 8 - }, - "Entity_bStartDisabled": { - "field": "m_Entity_bStartDisabled", - "type": 10 - }, - "Entity_bDefaultEnvMap": { - "field": "m_Entity_bDefaultEnvMap", - "type": 10 - }, - "Entity_bDefaultSpecEnvMap": { - "field": "m_Entity_bDefaultSpecEnvMap", - "type": 10 - }, - "Entity_bIndoorCubeMap": { - "field": "m_Entity_bIndoorCubeMap", - "type": 10 - }, - "Entity_bCopyDiffuseFromDefaultCubemap": { - "field": "m_Entity_bCopyDiffuseFromDefaultCubemap", - "type": 10 - }, - "Entity_bEnabled": { - "field": "m_Entity_bEnabled", - "type": 10 - }, - "Parent": { - "field": "CBaseEntity", - "type": 11 - } - }, - "CEnvCubemapBox": { - "Parent": { - "field": "CEnvCubemap", - "type": 11 - } - }, - "CEnvCubemapFog": { - "EndDistance": { - "field": "m_flEndDistance", - "type": 8 - }, - "StartDistance": { - "field": "m_flStartDistance", - "type": 8 - }, - "FogFalloffExponent": { - "field": "m_flFogFalloffExponent", - "type": 8 - }, - "HeightFogEnabled": { - "field": "m_bHeightFogEnabled", - "type": 10 - }, - "FogHeightWidth": { - "field": "m_flFogHeightWidth", - "type": 8 - }, - "FogHeightEnd": { - "field": "m_flFogHeightEnd", - "type": 8 - }, - "FogHeightStart": { - "field": "m_flFogHeightStart", - "type": 8 - }, - "FogHeightExponent": { - "field": "m_flFogHeightExponent", - "type": 8 - }, - "LODBias": { - "field": "m_flLODBias", - "type": 8 - }, - "Active": { - "field": "m_bActive", - "type": 10 - }, - "StartDisabled": { - "field": "m_bStartDisabled", - "type": 10 - }, - "FogMaxOpacity": { - "field": "m_flFogMaxOpacity", - "type": 8 - }, - "CubemapSourceType": { - "field": "m_nCubemapSourceType", - "type": 2 - }, - "SkyEntity": { - "field": "m_iszSkyEntity", - "type": 13 - }, - "HasHeightFogEnd": { - "field": "m_bHasHeightFogEnd", - "type": 10 - }, - "FirstTime": { - "field": "m_bFirstTime", - "type": 10 - }, - "Parent": { - "field": "CBaseEntity", - "type": 11 - } - }, - "CEnvDecal": { - "Width": { - "field": "m_flWidth", - "type": 8 - }, - "Height": { - "field": "m_flHeight", - "type": 8 - }, - "Depth": { - "field": "m_flDepth", - "type": 8 - }, - "RenderOrder": { - "field": "m_nRenderOrder", - "type": 6 - }, - "ProjectOnWorld": { - "field": "m_bProjectOnWorld", - "type": 10 - }, - "ProjectOnCharacters": { - "field": "m_bProjectOnCharacters", - "type": 10 - }, - "ProjectOnWater": { - "field": "m_bProjectOnWater", - "type": 10 - }, - "DepthSortBias": { - "field": "m_flDepthSortBias", - "type": 8 - }, - "Parent": { - "field": "CBaseModelEntity", - "type": 11 - } - }, - "CEnvDetailController": { - "FadeStartDist": { - "field": "m_flFadeStartDist", - "type": 8 - }, - "FadeEndDist": { - "field": "m_flFadeEndDist", - "type": 8 - }, - "Parent": { - "field": "CBaseEntity", - "type": 11 - } - }, - "CEnvEntityIgniter": { - "Lifetime": { - "field": "m_flLifetime", - "type": 8 - }, - "Parent": { - "field": "CBaseEntity", - "type": 11 - } - }, - "CEnvEntityMaker": { - "EntityMins": { - "field": "m_vecEntityMins", - "type": 21 - }, - "EntityMaxs": { - "field": "m_vecEntityMaxs", - "type": 21 - }, - "CurrentInstance": { - "field": "m_hCurrentInstance", - "type": 17, - "classname": "CBaseEntity" - }, - "CurrentBlocker": { - "field": "m_hCurrentBlocker", - "type": 17, - "classname": "CBaseEntity" - }, - "BlockerOrigin": { - "field": "m_vecBlockerOrigin", - "type": 21 - }, - "PostSpawnDirection": { - "field": "m_angPostSpawnDirection", - "type": 20 - }, - "PostSpawnDirectionVariance": { - "field": "m_flPostSpawnDirectionVariance", - "type": 8 - }, - "PostSpawnSpeed": { - "field": "m_flPostSpawnSpeed", - "type": 8 - }, - "PostSpawnUseAngles": { - "field": "m_bPostSpawnUseAngles", - "type": 10 - }, - "Template": { - "field": "m_iszTemplate", - "type": 13 - }, - "OutputOnSpawned": { - "field": "m_pOutputOnSpawned", - "classname": "CEntityIOOutput", - "type": 16 - }, - "OutputOnFailedSpawn": { - "field": "m_pOutputOnFailedSpawn", - "classname": "CEntityIOOutput", - "type": 16 - }, - "Parent": { - "field": "CPointEntity", - "type": 11 - } - }, - "CEnvExplosion": { - "Magnitude": { - "field": "m_iMagnitude", - "type": 2 - }, - "PlayerDamage": { - "field": "m_flPlayerDamage", - "type": 8 - }, - "RadiusOverride": { - "field": "m_iRadiusOverride", - "type": 2 - }, - "InnerRadius": { - "field": "m_flInnerRadius", - "type": 8 - }, - "SpriteScale": { - "field": "m_spriteScale", - "type": 2 - }, - "DamageForce": { - "field": "m_flDamageForce", - "type": 8 - }, - "Inflictor": { - "field": "m_hInflictor", - "type": 17, - "classname": "CBaseEntity" - }, - "CustomDamageType": { - "field": "m_iCustomDamageType", - "type": 6 - }, - "CreateDebris": { - "field": "m_bCreateDebris", - "type": 10 - }, - "ExplosionType": { - "field": "m_iszExplosionType", - "type": 13 - }, - "CustomEffectName": { - "field": "m_iszCustomEffectName", - "type": 13 - }, - "CustomSoundName": { - "field": "m_iszCustomSoundName", - "type": 13 - }, - "ClassIgnore": { - "field": "m_iClassIgnore", - "type": 6 - }, - "ClassIgnore2": { - "field": "m_iClassIgnore2", - "type": 6 - }, - "EntityIgnoreName": { - "field": "m_iszEntityIgnoreName", - "type": 13 - }, - "EntityIgnore": { - "field": "m_hEntityIgnore", - "type": 17, - "classname": "CBaseEntity" - }, - "Parent": { - "field": "CModelPointEntity", - "type": 11 - } - }, - "CEnvFade": { - "FadeColor": { - "field": "m_fadeColor", - "type": 19 - }, - "Duration": { - "field": "m_Duration", - "type": 8 - }, - "HoldDuration": { - "field": "m_HoldDuration", - "type": 8 - }, - "OnBeginFade": { - "field": "m_OnBeginFade", - "classname": "CEntityIOOutput", - "type": 16 - }, - "Parent": { - "field": "CLogicalEntity", - "type": 11 - } - }, - "CEnvFireSensor": { - "Enabled": { - "field": "m_bEnabled", - "type": 10 - }, - "HeatAtLevel": { - "field": "m_bHeatAtLevel", - "type": 10 - }, - "Radius": { - "field": "m_radius", - "type": 8 - }, - "TargetLevel": { - "field": "m_targetLevel", - "type": 8 - }, - "TargetTime": { - "field": "m_targetTime", - "type": 8 - }, - "LevelTime": { - "field": "m_levelTime", - "type": 8 - }, - "OnHeatLevelStart": { - "field": "m_OnHeatLevelStart", - "classname": "CEntityIOOutput", - "type": 16 - }, - "OnHeatLevelEnd": { - "field": "m_OnHeatLevelEnd", - "classname": "CEntityIOOutput", - "type": 16 - }, - "Parent": { - "field": "CBaseEntity", - "type": 11 - } - }, - "CEnvFireSource": { - "Enabled": { - "field": "m_bEnabled", - "type": 10 - }, - "Radius": { - "field": "m_radius", - "type": 8 - }, - "Damage": { - "field": "m_damage", - "type": 8 - }, - "Parent": { - "field": "CBaseEntity", - "type": 11 - } - }, - "CEnvFunnel": { - "Parent": { - "field": "CBaseEntity", - "type": 11 - } - }, - "CEnvGlobal": { - "Globalstate": { - "field": "m_globalstate", - "type": 13 - }, - "Triggermode": { - "field": "m_triggermode", - "type": 2 - }, - "Initialstate": { - "field": "m_initialstate", - "type": 2 - }, - "Counter": { - "field": "m_counter", - "type": 2 - }, - "Parent": { - "field": "CLogicalEntity", - "type": 11 - } - }, - "CEnvHudHint": { - "Message": { - "field": "m_iszMessage", - "type": 13 - }, - "Parent": { - "field": "CPointEntity", - "type": 11 - } - }, - "CEnvInstructorHint": { - "Name": { - "field": "m_iszName", - "type": 13 - }, - "Replace_Key": { - "field": "m_iszReplace_Key", - "type": 13 - }, - "HintTargetEntity": { - "field": "m_iszHintTargetEntity", - "type": 13 - }, - "Timeout": { - "field": "m_iTimeout", - "type": 2 - }, - "DisplayLimit": { - "field": "m_iDisplayLimit", - "type": 2 - }, - "Icon_Onscreen": { - "field": "m_iszIcon_Onscreen", - "type": 13 - }, - "Icon_Offscreen": { - "field": "m_iszIcon_Offscreen", - "type": 13 - }, - "Caption": { - "field": "m_iszCaption", - "type": 13 - }, - "ActivatorCaption": { - "field": "m_iszActivatorCaption", - "type": 13 - }, - "Color": { - "field": "m_Color", - "type": 19 - }, - "IconOffset": { - "field": "m_fIconOffset", - "type": 8 - }, - "Range": { - "field": "m_fRange", - "type": 8 - }, - "PulseOption": { - "field": "m_iPulseOption", - "type": 4 - }, - "AlphaOption": { - "field": "m_iAlphaOption", - "type": 4 - }, - "ShakeOption": { - "field": "m_iShakeOption", - "type": 4 - }, - "Static": { - "field": "m_bStatic", - "type": 10 - }, - "NoOffscreen": { - "field": "m_bNoOffscreen", - "type": 10 - }, - "ForceCaption": { - "field": "m_bForceCaption", - "type": 10 - }, - "InstanceType": { - "field": "m_iInstanceType", - "type": 2 - }, - "SuppressRest": { - "field": "m_bSuppressRest", - "type": 10 - }, - "Binding": { - "field": "m_iszBinding", - "type": 13 - }, - "AllowNoDrawTarget": { - "field": "m_bAllowNoDrawTarget", - "type": 10 - }, - "AutoStart": { - "field": "m_bAutoStart", - "type": 10 - }, - "LocalPlayerOnly": { - "field": "m_bLocalPlayerOnly", - "type": 10 - }, - "Parent": { - "field": "CPointEntity", - "type": 11 - } - }, - "CEnvInstructorVRHint": { - "Name": { - "field": "m_iszName", - "type": 13 - }, - "HintTargetEntity": { - "field": "m_iszHintTargetEntity", - "type": 13 - }, - "Timeout": { - "field": "m_iTimeout", - "type": 2 - }, - "Caption": { - "field": "m_iszCaption", - "type": 13 - }, - "StartSound": { - "field": "m_iszStartSound", - "type": 13 - }, - "LayoutFileType": { - "field": "m_iLayoutFileType", - "type": 2 - }, - "CustomLayoutFile": { - "field": "m_iszCustomLayoutFile", - "type": 13 - }, - "AttachType": { - "field": "m_iAttachType", - "type": 2 - }, - "HeightOffset": { - "field": "m_flHeightOffset", - "type": 8 - }, - "Parent": { - "field": "CPointEntity", - "type": 11 - } - }, - "CEnvLaser": { - "LaserTarget": { - "field": "m_iszLaserTarget", - "type": 13 - }, - "Sprite": { - "field": "m_pSprite", - "classname": "CSprite", - "type": 24 - }, - "SpriteName": { - "field": "m_iszSpriteName", - "type": 13 - }, - "FirePosition": { - "field": "m_firePosition", - "type": 21 - }, - "StartFrame": { - "field": "m_flStartFrame", - "type": 8 - }, - "Parent": { - "field": "CBeam", - "type": 11 - } - }, - "CEnvLightProbeVolume": { - "Entity_vBoxMins": { - "field": "m_Entity_vBoxMins", - "type": 21 - }, - "Entity_vBoxMaxs": { - "field": "m_Entity_vBoxMaxs", - "type": 21 - }, - "Entity_bMoveable": { - "field": "m_Entity_bMoveable", - "type": 10 - }, - "Entity_nHandshake": { - "field": "m_Entity_nHandshake", - "type": 2 - }, - "Entity_nPriority": { - "field": "m_Entity_nPriority", - "type": 2 - }, - "Entity_bStartDisabled": { - "field": "m_Entity_bStartDisabled", - "type": 10 - }, - "Entity_nLightProbeSizeX": { - "field": "m_Entity_nLightProbeSizeX", - "type": 2 - }, - "Entity_nLightProbeSizeY": { - "field": "m_Entity_nLightProbeSizeY", - "type": 2 - }, - "Entity_nLightProbeSizeZ": { - "field": "m_Entity_nLightProbeSizeZ", - "type": 2 - }, - "Entity_nLightProbeAtlasX": { - "field": "m_Entity_nLightProbeAtlasX", - "type": 2 - }, - "Entity_nLightProbeAtlasY": { - "field": "m_Entity_nLightProbeAtlasY", - "type": 2 - }, - "Entity_nLightProbeAtlasZ": { - "field": "m_Entity_nLightProbeAtlasZ", - "type": 2 - }, - "Entity_bEnabled": { - "field": "m_Entity_bEnabled", - "type": 10 - }, - "Parent": { - "field": "CBaseEntity", - "type": 11 - } - }, - "CEnvMicrophone": { - "Disabled": { - "field": "m_bDisabled", - "type": 10 - }, - "MeasureTarget": { - "field": "m_hMeasureTarget", - "type": 17, - "classname": "CBaseEntity" - }, - "SoundType": { - "field": "m_nSoundType", - "type": 5 - }, - "SoundFlags": { - "field": "m_nSoundFlags", - "type": 5 - }, - "Sensitivity": { - "field": "m_flSensitivity", - "type": 8 - }, - "SmoothFactor": { - "field": "m_flSmoothFactor", - "type": 8 - }, - "MaxRange": { - "field": "m_flMaxRange", - "type": 8 - }, - "SpeakerName": { - "field": "m_iszSpeakerName", - "type": 13 - }, - "Speaker": { - "field": "m_hSpeaker", - "type": 17, - "classname": "CBaseEntity" - }, - "AvoidFeedback": { - "field": "m_bAvoidFeedback", - "type": 10 - }, - "SpeakerDSPPreset": { - "field": "m_iSpeakerDSPPreset", - "type": 2 - }, - "ListenFilter": { - "field": "m_iszListenFilter", - "type": 13 - }, - "ListenFilter1": { - "field": "m_hListenFilter", - "type": 17, - "classname": "CBaseFilter" - }, - "OnRoutedSound": { - "field": "m_OnRoutedSound", - "classname": "CEntityIOOutput", - "type": 16 - }, - "OnHeardSound": { - "field": "m_OnHeardSound", - "classname": "CEntityIOOutput", - "type": 16 - }, - "LastSound": { - "field": "m_szLastSound", - "type": 15, - "size": 256 - }, - "LastRoutedFrame": { - "field": "m_iLastRoutedFrame", - "type": 2 - }, - "Parent": { - "field": "CPointEntity", - "type": 11 - } - }, - "CEnvMuzzleFlash": { - "Scale": { - "field": "m_flScale", - "type": 8 - }, - "ParentAttachment": { - "field": "m_iszParentAttachment", - "type": 13 - }, - "Parent": { - "field": "CPointEntity", - "type": 11 - } - }, - "CEnvParticleGlow": { - "AlphaScale": { - "field": "m_flAlphaScale", - "type": 8 - }, - "RadiusScale": { - "field": "m_flRadiusScale", - "type": 8 - }, - "SelfIllumScale": { - "field": "m_flSelfIllumScale", - "type": 8 - }, - "ColorTint": { - "field": "m_ColorTint", - "type": 19 - }, - "Parent": { - "field": "CParticleSystem", - "type": 11 - } - }, - "CEnvProjectedTexture": { - "TargetEntity": { - "field": "m_hTargetEntity", - "type": 17, - "classname": "CBaseEntity" - }, - "State": { - "field": "m_bState", - "type": 10 - }, - "AlwaysUpdate": { - "field": "m_bAlwaysUpdate", - "type": 10 - }, - "LightFOV": { - "field": "m_flLightFOV", - "type": 8 - }, - "EnableShadows": { - "field": "m_bEnableShadows", - "type": 10 - }, - "SimpleProjection": { - "field": "m_bSimpleProjection", - "type": 10 - }, - "LightOnlyTarget": { - "field": "m_bLightOnlyTarget", - "type": 10 - }, - "LightWorld": { - "field": "m_bLightWorld", - "type": 10 - }, - "CameraSpace": { - "field": "m_bCameraSpace", - "type": 10 - }, - "BrightnessScale": { - "field": "m_flBrightnessScale", - "type": 8 - }, - "LightColor": { - "field": "m_LightColor", - "type": 19 - }, - "Intensity": { - "field": "m_flIntensity", - "type": 8 - }, - "LinearAttenuation": { - "field": "m_flLinearAttenuation", - "type": 8 - }, - "QuadraticAttenuation": { - "field": "m_flQuadraticAttenuation", - "type": 8 - }, - "Volumetric": { - "field": "m_bVolumetric", - "type": 10 - }, - "NoiseStrength": { - "field": "m_flNoiseStrength", - "type": 8 - }, - "FlashlightTime": { - "field": "m_flFlashlightTime", - "type": 8 - }, - "NumPlanes": { - "field": "m_nNumPlanes", - "type": 6 - }, - "PlaneOffset": { - "field": "m_flPlaneOffset", - "type": 8 - }, - "VolumetricIntensity": { - "field": "m_flVolumetricIntensity", - "type": 8 - }, - "ColorTransitionTime": { - "field": "m_flColorTransitionTime", - "type": 8 - }, - "Ambient": { - "field": "m_flAmbient", - "type": 8 - }, - "SpotlightTextureName": { - "field": "m_SpotlightTextureName", - "type": 15, - "size": 512 - }, - "SpotlightTextureFrame": { - "field": "m_nSpotlightTextureFrame", - "type": 2 - }, - "ShadowQuality": { - "field": "m_nShadowQuality", - "type": 6 - }, - "NearZ": { - "field": "m_flNearZ", - "type": 8 - }, - "FarZ": { - "field": "m_flFarZ", - "type": 8 - }, - "ProjectionSize": { - "field": "m_flProjectionSize", - "type": 8 - }, - "Rotation": { - "field": "m_flRotation", - "type": 8 - }, - "FlipHorizontal": { - "field": "m_bFlipHorizontal", - "type": 10 - }, - "Parent": { - "field": "CModelPointEntity", - "type": 11 - } - }, - "CEnvScreenOverlay": { - "OverlayNames": { - "field": "m_iszOverlayNames", - "type": 26, - "size": 10 - }, - "OverlayTimes": { - "field": "m_flOverlayTimes", - "type": 37, - "size": 10 - }, - "StartTime": { - "field": "m_flStartTime", - "type": 8 - }, - "DesiredOverlay": { - "field": "m_iDesiredOverlay", - "type": 2 - }, - "IsActive": { - "field": "m_bIsActive", - "type": 10 - }, - "Parent": { - "field": "CPointEntity", - "type": 11 - } - }, - "CEnvShake": { - "LimitToEntity": { - "field": "m_limitToEntity", - "type": 13 - }, - "Amplitude": { - "field": "m_Amplitude", - "type": 8 - }, - "Frequency": { - "field": "m_Frequency", - "type": 8 - }, - "Duration": { - "field": "m_Duration", - "type": 8 - }, - "Radius": { - "field": "m_Radius", - "type": 8 - }, - "StopTime": { - "field": "m_stopTime", - "type": 8 - }, - "NextShake": { - "field": "m_nextShake", - "type": 8 - }, - "CurrentAmp": { - "field": "m_currentAmp", - "type": 8 - }, - "MaxForce": { - "field": "m_maxForce", - "type": 21 - }, - "ShakeCallback": { - "field": "m_shakeCallback", - "classname": "CPhysicsShake", - "type": 16 - }, - "Parent": { - "field": "CPointEntity", - "type": 11 - } - }, - "CEnvSky": { - "StartDisabled": { - "field": "m_bStartDisabled", - "type": 10 - }, - "TintColor": { - "field": "m_vTintColor", - "type": 19 - }, - "TintColorLightingOnly": { - "field": "m_vTintColorLightingOnly", - "type": 19 - }, - "BrightnessScale": { - "field": "m_flBrightnessScale", - "type": 8 - }, - "FogType": { - "field": "m_nFogType", - "type": 2 - }, - "FogMinStart": { - "field": "m_flFogMinStart", - "type": 8 - }, - "FogMinEnd": { - "field": "m_flFogMinEnd", - "type": 8 - }, - "FogMaxStart": { - "field": "m_flFogMaxStart", - "type": 8 - }, - "FogMaxEnd": { - "field": "m_flFogMaxEnd", - "type": 8 - }, - "Enabled": { - "field": "m_bEnabled", - "type": 10 - }, - "Parent": { - "field": "CBaseModelEntity", - "type": 11 - } - }, - "CEnvSpark": { - "Delay": { - "field": "m_flDelay", - "type": 8 - }, - "Magnitude": { - "field": "m_nMagnitude", - "type": 2 - }, - "TrailLength": { - "field": "m_nTrailLength", - "type": 2 - }, - "Type": { - "field": "m_nType", - "type": 2 - }, - "OnSpark": { - "field": "m_OnSpark", - "classname": "CEntityIOOutput", - "type": 16 - }, - "Parent": { - "field": "CPointEntity", - "type": 11 - } - }, - "CEnvSplash": { - "Scale": { - "field": "m_flScale", - "type": 8 - }, - "Parent": { - "field": "CPointEntity", - "type": 11 - } - }, - "CEnvTilt": { - "Duration": { - "field": "m_Duration", - "type": 8 - }, - "Radius": { - "field": "m_Radius", - "type": 8 - }, - "TiltTime": { - "field": "m_TiltTime", - "type": 8 - }, - "StopTime": { - "field": "m_stopTime", - "type": 8 - }, - "Parent": { - "field": "CPointEntity", - "type": 11 - } - }, - "CEnvTracer": { - "End": { - "field": "m_vecEnd", - "type": 21 - }, - "Delay": { - "field": "m_flDelay", - "type": 8 - }, - "Parent": { - "field": "CPointEntity", - "type": 11 - } - }, - "CEnvViewPunch": { - "Radius": { - "field": "m_flRadius", - "type": 8 - }, - "ViewPunch": { - "field": "m_angViewPunch", - "type": 20 - }, - "Parent": { - "field": "CPointEntity", - "type": 11 - } - }, - "CEnvVolumetricFogController": { - "Scattering": { - "field": "m_flScattering", - "type": 8 - }, - "Anisotropy": { - "field": "m_flAnisotropy", - "type": 8 - }, - "FadeSpeed": { - "field": "m_flFadeSpeed", - "type": 8 - }, - "DrawDistance": { - "field": "m_flDrawDistance", - "type": 8 - }, - "FadeInStart": { - "field": "m_flFadeInStart", - "type": 8 - }, - "FadeInEnd": { - "field": "m_flFadeInEnd", - "type": 8 - }, - "IndirectStrength": { - "field": "m_flIndirectStrength", - "type": 8 - }, - "VolumeDepth": { - "field": "m_nVolumeDepth", - "type": 2 - }, - "FirstVolumeSliceThickness": { - "field": "m_fFirstVolumeSliceThickness", - "type": 8 - }, - "IndirectTextureDimX": { - "field": "m_nIndirectTextureDimX", - "type": 2 - }, - "IndirectTextureDimY": { - "field": "m_nIndirectTextureDimY", - "type": 2 - }, - "IndirectTextureDimZ": { - "field": "m_nIndirectTextureDimZ", - "type": 2 - }, - "BoxMins": { - "field": "m_vBoxMins", - "type": 21 - }, - "BoxMaxs": { - "field": "m_vBoxMaxs", - "type": 21 - }, - "Active": { - "field": "m_bActive", - "type": 10 - }, - "StartAnisoTime": { - "field": "m_flStartAnisoTime", - "type": 8 - }, - "StartScatterTime": { - "field": "m_flStartScatterTime", - "type": 8 - }, - "StartDrawDistanceTime": { - "field": "m_flStartDrawDistanceTime", - "type": 8 - }, - "StartAnisotropy": { - "field": "m_flStartAnisotropy", - "type": 8 - }, - "StartScattering": { - "field": "m_flStartScattering", - "type": 8 - }, - "StartDrawDistance": { - "field": "m_flStartDrawDistance", - "type": 8 - }, - "DefaultAnisotropy": { - "field": "m_flDefaultAnisotropy", - "type": 8 - }, - "DefaultScattering": { - "field": "m_flDefaultScattering", - "type": 8 - }, - "DefaultDrawDistance": { - "field": "m_flDefaultDrawDistance", - "type": 8 - }, - "StartDisabled": { - "field": "m_bStartDisabled", - "type": 10 - }, - "EnableIndirect": { - "field": "m_bEnableIndirect", - "type": 10 - }, - "IndirectUseLPVs": { - "field": "m_bIndirectUseLPVs", - "type": 10 - }, - "IsMaster": { - "field": "m_bIsMaster", - "type": 10 - }, - "ForceRefreshCount": { - "field": "m_nForceRefreshCount", - "type": 2 - }, - "NoiseSpeed": { - "field": "m_fNoiseSpeed", - "type": 8 - }, - "NoiseStrength": { - "field": "m_fNoiseStrength", - "type": 8 - }, - "NoiseScale": { - "field": "m_vNoiseScale", - "type": 21 - }, - "FirstTime": { - "field": "m_bFirstTime", - "type": 10 - }, - "Parent": { - "field": "CBaseEntity", - "type": 11 - } - }, - "CEnvVolumetricFogVolume": { - "Active": { - "field": "m_bActive", - "type": 10 - }, - "BoxMins": { - "field": "m_vBoxMins", - "type": 21 - }, - "BoxMaxs": { - "field": "m_vBoxMaxs", - "type": 21 - }, - "StartDisabled": { - "field": "m_bStartDisabled", - "type": 10 - }, - "Strength": { - "field": "m_flStrength", - "type": 8 - }, - "FalloffShape": { - "field": "m_nFalloffShape", - "type": 2 - }, - "FalloffExponent": { - "field": "m_flFalloffExponent", - "type": 8 - }, - "HeightFogDepth": { - "field": "m_flHeightFogDepth", - "type": 8 - }, - "HeightFogEdgeWidth": { - "field": "m_fHeightFogEdgeWidth", - "type": 8 - }, - "IndirectLightStrength": { - "field": "m_fIndirectLightStrength", - "type": 8 - }, - "SunLightStrength": { - "field": "m_fSunLightStrength", - "type": 8 - }, - "NoiseStrength": { - "field": "m_fNoiseStrength", - "type": 8 - }, - "OverrideIndirectLightStrength": { - "field": "m_bOverrideIndirectLightStrength", - "type": 10 - }, - "OverrideSunLightStrength": { - "field": "m_bOverrideSunLightStrength", - "type": 10 - }, - "OverrideNoiseStrength": { - "field": "m_bOverrideNoiseStrength", - "type": 10 - }, - "AllowLPVIndirect": { - "field": "m_bAllowLPVIndirect", - "type": 10 - }, - "Parent": { - "field": "CBaseEntity", - "type": 11 - } - }, - "CEnvWind": { - "EnvWindShared": { - "field": "m_EnvWindShared", - "classname": "CEnvWindShared", - "type": 16 - }, - "Parent": { - "field": "CBaseEntity", - "type": 11 - } - }, - "CEnvWindShared": { - "StartTime": { - "field": "m_flStartTime", - "type": 8 - }, - "WindSeed": { - "field": "m_iWindSeed", - "type": 6 - }, - "MinWind": { - "field": "m_iMinWind", - "type": 5 - }, - "MaxWind": { - "field": "m_iMaxWind", - "type": 5 - }, - "WindRadius": { - "field": "m_windRadius", - "type": 2 - }, - "MinGust": { - "field": "m_iMinGust", - "type": 5 - }, - "MaxGust": { - "field": "m_iMaxGust", - "type": 5 - }, - "MinGustDelay": { - "field": "m_flMinGustDelay", - "type": 8 - }, - "MaxGustDelay": { - "field": "m_flMaxGustDelay", - "type": 8 - }, - "GustDuration": { - "field": "m_flGustDuration", - "type": 8 - }, - "GustDirChange": { - "field": "m_iGustDirChange", - "type": 5 - }, - "Location": { - "field": "m_location", - "type": 21 - }, - "GustSound": { - "field": "m_iszGustSound", - "type": 2 - }, - "WindDir": { - "field": "m_iWindDir", - "type": 2 - }, - "WindSpeed": { - "field": "m_flWindSpeed", - "type": 8 - }, - "CurrentWindVector": { - "field": "m_currentWindVector", - "type": 21 - }, - "CurrentSwayVector": { - "field": "m_CurrentSwayVector", - "type": 21 - }, - "PrevSwayVector": { - "field": "m_PrevSwayVector", - "type": 21 - }, - "InitialWindDir": { - "field": "m_iInitialWindDir", - "type": 5 - }, - "InitialWindSpeed": { - "field": "m_flInitialWindSpeed", - "type": 8 - }, - "OnGustStart": { - "field": "m_OnGustStart", - "classname": "CEntityIOOutput", - "type": 16 - }, - "OnGustEnd": { - "field": "m_OnGustEnd", - "classname": "CEntityIOOutput", - "type": 16 - }, - "VariationTime": { - "field": "m_flVariationTime", - "type": 8 - }, - "SwayTime": { - "field": "m_flSwayTime", - "type": 8 - }, - "SimTime": { - "field": "m_flSimTime", - "type": 8 - }, - "SwitchTime": { - "field": "m_flSwitchTime", - "type": 8 - }, - "AveWindSpeed": { - "field": "m_flAveWindSpeed", - "type": 8 - }, - "Gusting": { - "field": "m_bGusting", - "type": 10 - }, - "WindAngleVariation": { - "field": "m_flWindAngleVariation", - "type": 8 - }, - "WindSpeedVariation": { - "field": "m_flWindSpeedVariation", - "type": 8 - }, - "EntOwner": { - "field": "m_hEntOwner", - "type": 17, - "classname": "CBaseEntity" - } - }, - "CFilterAttributeInt": { - "AttributeName": { - "field": "m_sAttributeName", - "type": 12 - }, - "Parent": { - "field": "CBaseFilter", - "type": 11 - } - }, - "CFilterClass": { - "FilterClass": { - "field": "m_iFilterClass", - "type": 13 - }, - "Parent": { - "field": "CBaseFilter", - "type": 11 - } - }, - "CFilterContext": { - "FilterContext": { - "field": "m_iFilterContext", - "type": 13 - }, - "Parent": { - "field": "CBaseFilter", - "type": 11 - } - }, - "CFilterEnemy": { - "EnemyName": { - "field": "m_iszEnemyName", - "type": 13 - }, - "Radius": { - "field": "m_flRadius", - "type": 8 - }, - "OuterRadius": { - "field": "m_flOuterRadius", - "type": 8 - }, - "MaxSquadmatesPerEnemy": { - "field": "m_nMaxSquadmatesPerEnemy", - "type": 2 - }, - "PlayerName": { - "field": "m_iszPlayerName", - "type": 13 - }, - "Parent": { - "field": "CBaseFilter", - "type": 11 - } - }, - "CFilterLOS": { - "Parent": { - "field": "CBaseFilter", - "type": 11 - } - }, - "CFilterMassGreater": { - "FilterMass": { - "field": "m_fFilterMass", - "type": 8 - }, - "Parent": { - "field": "CBaseFilter", - "type": 11 - } - }, - "CFilterModel": { - "FilterModel": { - "field": "m_iFilterModel", - "type": 13 - }, - "Parent": { - "field": "CBaseFilter", - "type": 11 - } - }, - "CFilterMultiple": { - "FilterType": { - "field": "m_nFilterType", - "type": 6 - }, - "FilterName": { - "field": "m_iFilterName", - "type": 26, - "size": 10 - }, - "Filter": { - "field": "m_hFilter", - "type": 46, - "size": 10 - }, - "FilterCount": { - "field": "m_nFilterCount", - "type": 2 - }, - "Parent": { - "field": "CBaseFilter", - "type": 11 - } - }, - "CFilterName": { - "FilterName": { - "field": "m_iFilterName", - "type": 13 - }, - "Parent": { - "field": "CBaseFilter", - "type": 11 - } - }, - "CFilterProximity": { - "Radius": { - "field": "m_flRadius", - "type": 8 - }, - "Parent": { - "field": "CBaseFilter", - "type": 11 - } - }, - "CFire": { - "Effect": { - "field": "m_hEffect", - "type": 17, - "classname": "CBaseFire" - }, - "Owner": { - "field": "m_hOwner", - "type": 17, - "classname": "CBaseEntity" - }, - "FireType": { - "field": "m_nFireType", - "type": 2 - }, - "Fuel": { - "field": "m_flFuel", - "type": 8 - }, - "DamageTime": { - "field": "m_flDamageTime", - "type": 8 - }, - "LastDamage": { - "field": "m_lastDamage", - "type": 8 - }, - "FireSize": { - "field": "m_flFireSize", - "type": 8 - }, - "LastNavUpdateTime": { - "field": "m_flLastNavUpdateTime", - "type": 8 - }, - "HeatLevel": { - "field": "m_flHeatLevel", - "type": 8 - }, - "HeatAbsorb": { - "field": "m_flHeatAbsorb", - "type": 8 - }, - "DamageScale": { - "field": "m_flDamageScale", - "type": 8 - }, - "MaxHeat": { - "field": "m_flMaxHeat", - "type": 8 - }, - "LastHeatLevel": { - "field": "m_flLastHeatLevel", - "type": 8 - }, - "AttackTime": { - "field": "m_flAttackTime", - "type": 8 - }, - "Enabled": { - "field": "m_bEnabled", - "type": 10 - }, - "StartDisabled": { - "field": "m_bStartDisabled", - "type": 10 - }, - "DidActivate": { - "field": "m_bDidActivate", - "type": 10 - }, - "OnIgnited": { - "field": "m_OnIgnited", - "classname": "CEntityIOOutput", - "type": 16 - }, - "OnExtinguished": { - "field": "m_OnExtinguished", - "classname": "CEntityIOOutput", - "type": 16 - }, - "Parent": { - "field": "CBaseModelEntity", - "type": 11 - } - }, - "CFireCrackerBlast": { - "Parent": { - "field": "CInferno", - "type": 11 - } - }, - "CFireSmoke": { - "FlameModelIndex": { - "field": "m_nFlameModelIndex", - "type": 2 - }, - "FlameFromAboveModelIndex": { - "field": "m_nFlameFromAboveModelIndex", - "type": 2 - }, - "Parent": { - "field": "CBaseFire", - "type": 11 - } - }, - "CFish": { - "Pool": { - "field": "m_pool", - "type": 17, - "classname": "CFishPool" - }, - "Id": { - "field": "m_id", - "type": 6 - }, - "X": { - "field": "m_x", - "type": 8 - }, - "Y": { - "field": "m_y", - "type": 8 - }, - "Z": { - "field": "m_z", - "type": 8 - }, - "Angle": { - "field": "m_angle", - "type": 8 - }, - "AngleChange": { - "field": "m_angleChange", - "type": 8 - }, - "Forward": { - "field": "m_forward", - "type": 21 - }, - "Perp": { - "field": "m_perp", - "type": 21 - }, - "PoolOrigin": { - "field": "m_poolOrigin", - "type": 21 - }, - "WaterLevel": { - "field": "m_waterLevel", - "type": 8 - }, - "Speed": { - "field": "m_speed", - "type": 8 - }, - "DesiredSpeed": { - "field": "m_desiredSpeed", - "type": 8 - }, - "CalmSpeed": { - "field": "m_calmSpeed", - "type": 8 - }, - "PanicSpeed": { - "field": "m_panicSpeed", - "type": 8 - }, - "AvoidRange": { - "field": "m_avoidRange", - "type": 8 - }, - "TurnTimer": { - "field": "m_turnTimer", - "classname": "CountdownTimer", - "type": 16 - }, - "TurnClockwise": { - "field": "m_turnClockwise", - "type": 10 - }, - "GoTimer": { - "field": "m_goTimer", - "classname": "CountdownTimer", - "type": 16 - }, - "MoveTimer": { - "field": "m_moveTimer", - "classname": "CountdownTimer", - "type": 16 - }, - "PanicTimer": { - "field": "m_panicTimer", - "classname": "CountdownTimer", - "type": 16 - }, - "DisperseTimer": { - "field": "m_disperseTimer", - "classname": "CountdownTimer", - "type": 16 - }, - "ProximityTimer": { - "field": "m_proximityTimer", - "classname": "CountdownTimer", - "type": 16 - }, - "Parent": { - "field": "CBaseAnimGraph", - "type": 11 - } - }, - "CFishPool": { - "FishCount": { - "field": "m_fishCount", - "type": 2 - }, - "MaxRange": { - "field": "m_maxRange", - "type": 8 - }, - "SwimDepth": { - "field": "m_swimDepth", - "type": 8 - }, - "WaterLevel": { - "field": "m_waterLevel", - "type": 8 - }, - "IsDormant": { - "field": "m_isDormant", - "type": 10 - }, - "VisTimer": { - "field": "m_visTimer", - "classname": "CountdownTimer", - "type": 16 - }, - "Parent": { - "field": "CBaseEntity", - "type": 11 - } - }, - "CFists": { - "PlayingUninterruptableAct": { - "field": "m_bPlayingUninterruptableAct", - "type": 10 - }, - "UninterruptableActivity": { - "field": "m_nUninterruptableActivity", - "type": 6 - }, - "RestorePrevWep": { - "field": "m_bRestorePrevWep", - "type": 10 - }, - "WeaponBeforePrevious": { - "field": "m_hWeaponBeforePrevious", - "type": 17, - "classname": "CBasePlayerWeapon" - }, - "WeaponPrevious": { - "field": "m_hWeaponPrevious", - "type": 17, - "classname": "CBasePlayerWeapon" - }, - "DelayedHardPunchIncoming": { - "field": "m_bDelayedHardPunchIncoming", - "type": 10 - }, - "DestroyAfterTaunt": { - "field": "m_bDestroyAfterTaunt", - "type": 10 - }, - "Parent": { - "field": "CCSWeaponBase", - "type": 11 - } - }, - "CFlashbang": { - "Parent": { - "field": "CBaseCSGrenade", - "type": 11 - } - }, - "CFlashbangProjectile": { - "TimeToDetonate": { - "field": "m_flTimeToDetonate", - "type": 8 - }, - "NumOpponentsHit": { - "field": "m_numOpponentsHit", - "type": 4 - }, - "NumTeammatesHit": { - "field": "m_numTeammatesHit", - "type": 4 - }, - "Parent": { - "field": "CBaseCSGrenadeProjectile", - "type": 11 - } - }, - "CFogController": { - "Fog": { - "field": "m_fog", - "classname": "fogparams_t", - "type": 16 - }, - "UseAngles": { - "field": "m_bUseAngles", - "type": 10 - }, - "ChangedVariables": { - "field": "m_iChangedVariables", - "type": 2 - }, - "Parent": { - "field": "CBaseEntity", - "type": 11 - } - }, - "CFogTrigger": { - "Fog": { - "field": "m_fog", - "classname": "fogparams_t", - "type": 16 - }, - "Parent": { - "field": "CBaseTrigger", - "type": 11 - } - }, - "CFogVolume": { - "FogName": { - "field": "m_fogName", - "type": 13 - }, - "PostProcessName": { - "field": "m_postProcessName", - "type": 13 - }, - "ColorCorrectionName": { - "field": "m_colorCorrectionName", - "type": 13 - }, - "Disabled": { - "field": "m_bDisabled", - "type": 10 - }, - "InFogVolumesList": { - "field": "m_bInFogVolumesList", - "type": 10 - }, - "Parent": { - "field": "CServerOnlyModelEntity", - "type": 11 - } - }, - "CFootstepControl": { - "Source": { - "field": "m_source", - "type": 13 - }, - "Destination": { - "field": "m_destination", - "type": 13 - }, - "Parent": { - "field": "CBaseTrigger", - "type": 11 - } - }, - "CFuncBrush": { - "Solidity": { - "field": "m_iSolidity", - "type": 6 - }, - "Disabled": { - "field": "m_iDisabled", - "type": 2 - }, - "SolidBsp": { - "field": "m_bSolidBsp", - "type": 10 - }, - "ExcludedClass": { - "field": "m_iszExcludedClass", - "type": 13 - }, - "InvertExclusion": { - "field": "m_bInvertExclusion", - "type": 10 - }, - "ScriptedMovement": { - "field": "m_bScriptedMovement", - "type": 10 - }, - "Parent": { - "field": "CBaseModelEntity", - "type": 11 - } - }, - "CFuncConveyor": { - "ConveyorModels": { - "field": "m_szConveyorModels", - "type": 13 - }, - "TransitionDurationSeconds": { - "field": "m_flTransitionDurationSeconds", - "type": 8 - }, - "MoveEntitySpace": { - "field": "m_angMoveEntitySpace", - "type": 20 - }, - "MoveDirEntitySpace": { - "field": "m_vecMoveDirEntitySpace", - "type": 21 - }, - "TargetSpeed": { - "field": "m_flTargetSpeed", - "type": 8 - }, - "TransitionStartTick": { - "field": "m_nTransitionStartTick", - "type": 2 - }, - "TransitionDurationTicks": { - "field": "m_nTransitionDurationTicks", - "type": 2 - }, - "TransitionStartSpeed": { - "field": "m_flTransitionStartSpeed", - "type": 8 - }, - "Parent": { - "field": "CBaseModelEntity", - "type": 11 - } - }, - "CFuncElectrifiedVolume": { - "EffectName": { - "field": "m_EffectName", - "type": 13 - }, - "EffectInterpenetrateName": { - "field": "m_EffectInterpenetrateName", - "type": 13 - }, - "EffectZapName": { - "field": "m_EffectZapName", - "type": 13 - }, - "EffectSource": { - "field": "m_iszEffectSource", - "type": 13 - }, - "Parent": { - "field": "CFuncBrush", - "type": 11 - } - }, - "CFuncIllusionary": { - "Parent": { - "field": "CBaseModelEntity", - "type": 11 - } - }, - "CFuncInteractionLayerClip": { - "Disabled": { - "field": "m_bDisabled", - "type": 10 - }, - "InteractsAs": { - "field": "m_iszInteractsAs", - "type": 13 - }, - "InteractsWith": { - "field": "m_iszInteractsWith", - "type": 13 - }, - "Parent": { - "field": "CBaseModelEntity", - "type": 11 - } - }, - "CFuncLadder": { - "LadderDir": { - "field": "m_vecLadderDir", - "type": 21 - }, - "LocalTop": { - "field": "m_vecLocalTop", - "type": 21 - }, - "PlayerMountPositionTop": { - "field": "m_vecPlayerMountPositionTop", - "type": 21 - }, - "PlayerMountPositionBottom": { - "field": "m_vecPlayerMountPositionBottom", - "type": 21 - }, - "AutoRideSpeed": { - "field": "m_flAutoRideSpeed", - "type": 8 - }, - "Disabled": { - "field": "m_bDisabled", - "type": 10 - }, - "FakeLadder": { - "field": "m_bFakeLadder", - "type": 10 - }, - "HasSlack": { - "field": "m_bHasSlack", - "type": 10 - }, - "SurfacePropName": { - "field": "m_surfacePropName", - "type": 13 - }, - "OnPlayerGotOnLadder": { - "field": "m_OnPlayerGotOnLadder", - "classname": "CEntityIOOutput", - "type": 16 - }, - "OnPlayerGotOffLadder": { - "field": "m_OnPlayerGotOffLadder", - "classname": "CEntityIOOutput", - "type": 16 - }, - "Parent": { - "field": "CBaseModelEntity", - "type": 11 - } - }, - "CFuncLadderAlias_func_useableladder": { - "Parent": { - "field": "CFuncLadder", - "type": 11 - } - }, - "CFuncMonitor": { - "TargetCamera": { - "field": "m_targetCamera", - "type": 14 - }, - "ResolutionEnum": { - "field": "m_nResolutionEnum", - "type": 2 - }, - "RenderShadows": { - "field": "m_bRenderShadows", - "type": 10 - }, - "UseUniqueColorTarget": { - "field": "m_bUseUniqueColorTarget", - "type": 10 - }, - "BrushModelName": { - "field": "m_brushModelName", - "type": 14 - }, - "TargetCamera1": { - "field": "m_hTargetCamera", - "type": 17, - "classname": "CBaseEntity" - }, - "Enabled": { - "field": "m_bEnabled", - "type": 10 - }, - "Draw3DSkybox": { - "field": "m_bDraw3DSkybox", - "type": 10 - }, - "StartEnabled": { - "field": "m_bStartEnabled", - "type": 10 - }, - "Parent": { - "field": "CFuncBrush", - "type": 11 - } - }, - "CFuncMoveLinear": { - "AuthoredPosition": { - "field": "m_authoredPosition", - "type": 6 - }, - "MoveEntitySpace": { - "field": "m_angMoveEntitySpace", - "type": 20 - }, - "MoveDirParentSpace": { - "field": "m_vecMoveDirParentSpace", - "type": 21 - }, - "SoundStart": { - "field": "m_soundStart", - "type": 13 - }, - "SoundStop": { - "field": "m_soundStop", - "type": 13 - }, - "CurrentSound": { - "field": "m_currentSound", - "type": 13 - }, - "BlockDamage": { - "field": "m_flBlockDamage", - "type": 8 - }, - "StartPosition": { - "field": "m_flStartPosition", - "type": 8 - }, - "OnFullyOpen": { - "field": "m_OnFullyOpen", - "classname": "CEntityIOOutput", - "type": 16 - }, - "OnFullyClosed": { - "field": "m_OnFullyClosed", - "classname": "CEntityIOOutput", - "type": 16 - }, - "CreateMovableNavMesh": { - "field": "m_bCreateMovableNavMesh", - "type": 10 - }, - "CreateNavObstacle": { - "field": "m_bCreateNavObstacle", - "type": 10 - }, - "Parent": { - "field": "CBaseToggle", - "type": 11 - } - }, - "CFuncMoveLinearAlias_momentary_door": { - "Parent": { - "field": "CFuncMoveLinear", - "type": 11 - } - }, - "CFuncMover": { - "CreateMovableNavMesh": { - "field": "m_bCreateMovableNavMesh", - "type": 10 - }, - "PathName": { - "field": "m_iszPathName", - "type": 13 - }, - "PathMover": { - "field": "m_hPathMover", - "type": 17, - "classname": "CPathMover" - }, - "PathNodeStart": { - "field": "m_iszPathNodeStart", - "type": 13 - }, - "MoveType": { - "field": "m_eMoveType", - "type": 6 - }, - "IsReversing": { - "field": "m_bIsReversing", - "type": 10 - }, - "Target": { - "field": "m_vTarget", - "type": 21 - }, - "StartSpeed": { - "field": "m_flStartSpeed", - "type": 8 - }, - "PathLocation": { - "field": "m_flPathLocation", - "type": 8 - }, - "T": { - "field": "m_flT", - "type": 8 - }, - "CurrentNodeIndex": { - "field": "m_nCurrentNodeIndex", - "type": 2 - }, - "PreviousNodeIndex": { - "field": "m_nPreviousNodeIndex", - "type": 2 - }, - "FixedOrientation": { - "field": "m_bFixedOrientation", - "type": 10 - }, - "FixedPitch": { - "field": "m_bFixedPitch", - "type": 10 - }, - "SolidType": { - "field": "m_eSolidType", - "type": 4 - }, - "IsMoving": { - "field": "m_bIsMoving", - "type": 10 - }, - "TimeToReachMaxSpeed": { - "field": "m_flTimeToReachMaxSpeed", - "type": 8 - }, - "DistanceToReachMaxSpeed": { - "field": "m_flDistanceToReachMaxSpeed", - "type": 8 - }, - "TimeToReachZeroSpeed": { - "field": "m_flTimeToReachZeroSpeed", - "type": 8 - }, - "DistanceToReachZeroSpeed": { - "field": "m_flDistanceToReachZeroSpeed", - "type": 8 - }, - "TimeMovementStart": { - "field": "m_flTimeMovementStart", - "type": 8 - }, - "TimeMovementStop": { - "field": "m_flTimeMovementStop", - "type": 8 - }, - "StopAtNode": { - "field": "m_hStopAtNode", - "type": 17, - "classname": "CMoverPathNode" - }, - "PathLocationToBeginStop": { - "field": "m_flPathLocationToBeginStop", - "type": 8 - }, - "StartForwardSound": { - "field": "m_iszStartForwardSound", - "type": 13 - }, - "LoopForwardSound": { - "field": "m_iszLoopForwardSound", - "type": 13 - }, - "StopForwardSound": { - "field": "m_iszStopForwardSound", - "type": 13 - }, - "StartReverseSound": { - "field": "m_iszStartReverseSound", - "type": 13 - }, - "LoopReverseSound": { - "field": "m_iszLoopReverseSound", - "type": 13 - }, - "StopReverseSound": { - "field": "m_iszStopReverseSound", - "type": 13 - }, - "ArriveAtDestinationSound": { - "field": "m_iszArriveAtDestinationSound", - "type": 13 - }, - "OnMovementEnd": { - "field": "m_OnMovementEnd", - "classname": "CEntityIOOutput", - "type": 16 - }, - "StartAtEnd": { - "field": "m_bStartAtEnd", - "type": 10 - }, - "OrientationUpdate": { - "field": "m_eOrientationUpdate", - "type": 6 - }, - "TimeStartOrientationChange": { - "field": "m_flTimeStartOrientationChange", - "type": 8 - }, - "TimeToBlendToNewOrientation": { - "field": "m_flTimeToBlendToNewOrientation", - "type": 8 - }, - "DurationBlendToNewOrientationRan": { - "field": "m_flDurationBlendToNewOrientationRan", - "type": 8 - }, - "Parent": { - "field": "CBaseModelEntity", - "type": 11 - } - }, - "CFuncMoverAPI": {}, - "CFuncNavBlocker": { - "Disabled": { - "field": "m_bDisabled", - "type": 10 - }, - "BlockedTeamNumber": { - "field": "m_nBlockedTeamNumber", - "type": 2 - }, - "Parent": { - "field": "CBaseModelEntity", - "type": 11 - } - }, - "CFuncNavObstruction": { - "Disabled": { - "field": "m_bDisabled", - "type": 10 - }, - "Parent": { - "field": "CBaseModelEntity", - "type": 11 - } - }, - "CFuncPlat": { - "Noise": { - "field": "m_sNoise", - "type": 13 - }, - "Parent": { - "field": "CBasePlatTrain", - "type": 11 - } - }, - "CFuncPlatRot": { - "End": { - "field": "m_end", - "type": 20 - }, - "Start": { - "field": "m_start", - "type": 20 - }, - "Parent": { - "field": "CFuncPlat", - "type": 11 - } - }, - "CFuncPropRespawnZone": { - "Parent": { - "field": "CBaseEntity", - "type": 11 - } - }, - "CFuncRotating": { - "OnStopped": { - "field": "m_OnStopped", - "classname": "CEntityIOOutput", - "type": 16 - }, - "OnStarted": { - "field": "m_OnStarted", - "classname": "CEntityIOOutput", - "type": 16 - }, - "OnReachedStart": { - "field": "m_OnReachedStart", - "classname": "CEntityIOOutput", - "type": 16 - }, - "LocalRotationVector": { - "field": "m_localRotationVector", - "type": 21 - }, - "FanFriction": { - "field": "m_flFanFriction", - "type": 8 - }, - "Attenuation": { - "field": "m_flAttenuation", - "type": 8 - }, - "Volume": { - "field": "m_flVolume", - "type": 8 - }, - "TargetSpeed": { - "field": "m_flTargetSpeed", - "type": 8 - }, - "MaxSpeed": { - "field": "m_flMaxSpeed", - "type": 8 - }, - "BlockDamage": { - "field": "m_flBlockDamage", - "type": 8 - }, - "NoiseRunning": { - "field": "m_NoiseRunning", - "type": 13 - }, - "Reversed": { - "field": "m_bReversed", - "type": 10 - }, - "AccelDecel": { - "field": "m_bAccelDecel", - "type": 10 - }, - "PrevLocalAngles": { - "field": "m_prevLocalAngles", - "type": 20 - }, - "Start": { - "field": "m_angStart", - "type": 20 - }, - "StopAtStartPos": { - "field": "m_bStopAtStartPos", - "type": 10 - }, - "ClientOrigin": { - "field": "m_vecClientOrigin", - "type": 21 - }, - "ClientAngles": { - "field": "m_vecClientAngles", - "type": 20 - }, - "Parent": { - "field": "CBaseModelEntity", - "type": 11 - } - }, - "CFuncShatterglass": { - "ShatterGlassShards": { - "field": "m_vecShatterGlassShards", - "type": 57 - }, - "PanelSize": { - "field": "m_PanelSize", - "type": 22 - }, - "LastShatterSoundEmitTime": { - "field": "m_flLastShatterSoundEmitTime", - "type": 8 - }, - "LastCleanupTime": { - "field": "m_flLastCleanupTime", - "type": 8 - }, - "InitAtTime": { - "field": "m_flInitAtTime", - "type": 8 - }, - "GlassThickness": { - "field": "m_flGlassThickness", - "type": 8 - }, - "SpawnInvulnerability": { - "field": "m_flSpawnInvulnerability", - "type": 8 - }, - "BreakSilent": { - "field": "m_bBreakSilent", - "type": 10 - }, - "BreakShardless": { - "field": "m_bBreakShardless", - "type": 10 - }, - "Broken": { - "field": "m_bBroken", - "type": 10 - }, - "GlassNavIgnore": { - "field": "m_bGlassNavIgnore", - "type": 10 - }, - "GlassInFrame": { - "field": "m_bGlassInFrame", - "type": 10 - }, - "StartBroken": { - "field": "m_bStartBroken", - "type": 10 - }, - "InitialDamageType": { - "field": "m_iInitialDamageType", - "type": 4 - }, - "DamagePositioningEntityName01": { - "field": "m_szDamagePositioningEntityName01", - "type": 13 - }, - "DamagePositioningEntityName02": { - "field": "m_szDamagePositioningEntityName02", - "type": 13 - }, - "DamagePositioningEntityName03": { - "field": "m_szDamagePositioningEntityName03", - "type": 13 - }, - "DamagePositioningEntityName04": { - "field": "m_szDamagePositioningEntityName04", - "type": 13 - }, - "InitialDamagePositions": { - "field": "m_vInitialDamagePositions", - "type": 63 - }, - "ExtraDamagePositions": { - "field": "m_vExtraDamagePositions", - "type": 63 - }, - "InitialPanelVertices": { - "field": "m_vInitialPanelVertices", - "type": 65 - }, - "OnBroken": { - "field": "m_OnBroken", - "classname": "CEntityIOOutput", - "type": 16 - }, - "SurfaceType": { - "field": "m_iSurfaceType", - "type": 4 - }, - "Parent": { - "field": "CBaseModelEntity", - "type": 11 - } - }, - "CFuncTankTrain": { - "OnDeath": { - "field": "m_OnDeath", - "classname": "CEntityIOOutput", - "type": 16 - }, - "Parent": { - "field": "CFuncTrackTrain", - "type": 11 - } - }, - "CFuncTimescale": { - "DesiredTimescale": { - "field": "m_flDesiredTimescale", - "type": 8 - }, - "Acceleration": { - "field": "m_flAcceleration", - "type": 8 - }, - "MinBlendRate": { - "field": "m_flMinBlendRate", - "type": 8 - }, - "BlendDeltaMultiplier": { - "field": "m_flBlendDeltaMultiplier", - "type": 8 - }, - "IsStarted": { - "field": "m_isStarted", - "type": 10 - }, - "Parent": { - "field": "CBaseEntity", - "type": 11 - } - }, - "CFuncTrackAuto": { - "Parent": { - "field": "CFuncTrackChange", - "type": 11 - } - }, - "CFuncTrackChange": { - "TrackTop": { - "field": "m_trackTop", - "classname": "CPathTrack", - "type": 24 - }, - "TrackBottom": { - "field": "m_trackBottom", - "classname": "CPathTrack", - "type": 24 - }, - "Train": { - "field": "m_train", - "classname": "CFuncTrackTrain", - "type": 24 - }, - "TrackTopName": { - "field": "m_trackTopName", - "type": 13 - }, - "TrackBottomName": { - "field": "m_trackBottomName", - "type": 13 - }, - "TrainName": { - "field": "m_trainName", - "type": 13 - }, - "Code": { - "field": "m_code", - "type": 6 - }, - "TargetState": { - "field": "m_targetState", - "type": 2 - }, - "Use": { - "field": "m_use", - "type": 2 - }, - "Parent": { - "field": "CFuncPlatRot", - "type": 11 - } - }, - "CFuncTrackTrain": { - "Ppath": { - "field": "m_ppath", - "type": 17, - "classname": "CPathTrack" - }, - "Length": { - "field": "m_length", - "type": 8 - }, - "PosPrev": { - "field": "m_vPosPrev", - "type": 21 - }, - "Prev": { - "field": "m_angPrev", - "type": 20 - }, - "ControlMins": { - "field": "m_controlMins", - "type": 21 - }, - "ControlMaxs": { - "field": "m_controlMaxs", - "type": 21 - }, - "LastBlockPos": { - "field": "m_lastBlockPos", - "type": 21 - }, - "LastBlockTick": { - "field": "m_lastBlockTick", - "type": 2 - }, - "Volume": { - "field": "m_flVolume", - "type": 8 - }, - "Bank": { - "field": "m_flBank", - "type": 8 - }, - "OldSpeed": { - "field": "m_oldSpeed", - "type": 8 - }, - "BlockDamage": { - "field": "m_flBlockDamage", - "type": 8 - }, - "Height": { - "field": "m_height", - "type": 8 - }, - "MaxSpeed": { - "field": "m_maxSpeed", - "type": 8 - }, - "Dir": { - "field": "m_dir", - "type": 8 - }, - "SoundMove": { - "field": "m_iszSoundMove", - "type": 13 - }, - "SoundMovePing": { - "field": "m_iszSoundMovePing", - "type": 13 - }, - "SoundStart": { - "field": "m_iszSoundStart", - "type": 13 - }, - "SoundStop": { - "field": "m_iszSoundStop", - "type": 13 - }, - "StrPathTarget": { - "field": "m_strPathTarget", - "type": 13 - }, - "MoveSoundMinDuration": { - "field": "m_flMoveSoundMinDuration", - "type": 8 - }, - "MoveSoundMaxDuration": { - "field": "m_flMoveSoundMaxDuration", - "type": 8 - }, - "NextMoveSoundTime": { - "field": "m_flNextMoveSoundTime", - "type": 8 - }, - "MoveSoundMinPitch": { - "field": "m_flMoveSoundMinPitch", - "type": 8 - }, - "MoveSoundMaxPitch": { - "field": "m_flMoveSoundMaxPitch", - "type": 8 - }, - "OrientationType": { - "field": "m_eOrientationType", - "type": 6 - }, - "VelocityType": { - "field": "m_eVelocityType", - "type": 6 - }, - "OnStart": { - "field": "m_OnStart", - "classname": "CEntityIOOutput", - "type": 16 - }, - "OnNext": { - "field": "m_OnNext", - "classname": "CEntityIOOutput", - "type": 16 - }, - "OnArrivedAtDestinationNode": { - "field": "m_OnArrivedAtDestinationNode", - "classname": "CEntityIOOutput", - "type": 16 - }, - "ManualSpeedChanges": { - "field": "m_bManualSpeedChanges", - "type": 10 - }, - "DesiredSpeed": { - "field": "m_flDesiredSpeed", - "type": 8 - }, - "SpeedChangeTime": { - "field": "m_flSpeedChangeTime", - "type": 8 - }, - "AccelSpeed": { - "field": "m_flAccelSpeed", - "type": 8 - }, - "DecelSpeed": { - "field": "m_flDecelSpeed", - "type": 8 - }, - "AccelToSpeed": { - "field": "m_bAccelToSpeed", - "type": 10 - }, - "NextMPSoundTime": { - "field": "m_flNextMPSoundTime", - "type": 8 - }, - "Parent": { - "field": "CBaseModelEntity", - "type": 11 - } - }, - "CFuncTrain": { - "CurrentTarget": { - "field": "m_hCurrentTarget", - "type": 17, - "classname": "CBaseEntity" - }, - "Activated": { - "field": "m_activated", - "type": 10 - }, - "Enemy": { - "field": "m_hEnemy", - "type": 17, - "classname": "CBaseEntity" - }, - "BlockDamage": { - "field": "m_flBlockDamage", - "type": 8 - }, - "NextBlockTime": { - "field": "m_flNextBlockTime", - "type": 8 - }, - "LastTarget": { - "field": "m_iszLastTarget", - "type": 13 - }, - "Parent": { - "field": "CBasePlatTrain", - "type": 11 - } - }, - "CFuncTrainControls": { - "Parent": { - "field": "CBaseModelEntity", - "type": 11 - } - }, - "CFuncVPhysicsClip": { - "Disabled": { - "field": "m_bDisabled", - "type": 10 - }, - "Parent": { - "field": "CBaseModelEntity", - "type": 11 - } - }, - "CFuncVehicleClip": { - "Parent": { - "field": "CBaseModelEntity", - "type": 11 - } - }, - "CFuncWall": { - "State": { - "field": "m_nState", - "type": 2 - }, - "Parent": { - "field": "CBaseModelEntity", - "type": 11 - } - }, - "CFuncWallToggle": { - "Parent": { - "field": "CFuncWall", - "type": 11 - } - }, - "CGameChoreoServices": { - "Owner": { - "field": "m_hOwner", - "type": 17, - "classname": "CBaseAnimGraph" - }, - "ScriptedSequence": { - "field": "m_hScriptedSequence", - "type": 17, - "classname": "CScriptedSequence" - }, - "TimeStartedState": { - "field": "m_flTimeStartedState", - "type": 8 - }, - "Parent": { - "field": "IChoreoServices", - "type": 11 - } - }, - "CGameEnd": { - "Parent": { - "field": "CRulePointEntity", - "type": 11 - } - }, - "CGameGibManager": { - "AllowNewGibs": { - "field": "m_bAllowNewGibs", - "type": 10 - }, - "CurrentMaxPieces": { - "field": "m_iCurrentMaxPieces", - "type": 2 - }, - "MaxPieces": { - "field": "m_iMaxPieces", - "type": 2 - }, - "LastFrame": { - "field": "m_iLastFrame", - "type": 2 - }, - "Parent": { - "field": "CBaseEntity", - "type": 11 - } - }, - "CGameMoney": { - "OnMoneySpent": { - "field": "m_OnMoneySpent", - "classname": "CEntityIOOutput", - "type": 16 - }, - "OnMoneySpentFail": { - "field": "m_OnMoneySpentFail", - "classname": "CEntityIOOutput", - "type": 16 - }, - "Money": { - "field": "m_nMoney", - "type": 2 - }, - "StrAwardText": { - "field": "m_strAwardText", - "type": 14 - }, - "Parent": { - "field": "CRulePointEntity", - "type": 11 - } - }, - "CGamePlayerEquip": { - "Parent": { - "field": "CRulePointEntity", - "type": 11 - } - }, - "CGamePlayerZone": { - "OnPlayerInZone": { - "field": "m_OnPlayerInZone", - "classname": "CEntityIOOutput", - "type": 16 - }, - "OnPlayerOutZone": { - "field": "m_OnPlayerOutZone", - "classname": "CEntityIOOutput", - "type": 16 - }, - "Parent": { - "field": "CRuleBrushEntity", - "type": 11 - } - }, - "CGameRules": { - "__pChainEntity": { - "field": "__m_pChainEntity", - "classname": "CNetworkVarChainer", - "type": 16 - }, - "QuestName": { - "field": "m_szQuestName", - "type": 15, - "size": 128 - }, - "QuestPhase": { - "field": "m_nQuestPhase", - "type": 2 - }, - "TotalPausedTicks": { - "field": "m_nTotalPausedTicks", - "type": 2 - }, - "PauseStartTick": { - "field": "m_nPauseStartTick", - "type": 2 - }, - "GamePaused": { - "field": "m_bGamePaused", - "type": 10 - } - }, - "CGameRulesProxy": { - "Parent": { - "field": "CBaseEntity", - "type": 11 - } - }, - "CGameScriptedMoveData": { - "AccumulatedRootMotion": { - "field": "m_vAccumulatedRootMotion", - "type": 21 - }, - "Dest": { - "field": "m_vDest", - "type": 21 - }, - "Src": { - "field": "m_vSrc", - "type": 21 - }, - "Src1": { - "field": "m_angSrc", - "type": 20 - }, - "Dst": { - "field": "m_angDst", - "type": 20 - }, - "Current": { - "field": "m_angCurrent", - "type": 20 - }, - "DestEntity": { - "field": "m_hDestEntity", - "type": 17, - "classname": "CBaseEntity" - }, - "LockedSpeed": { - "field": "m_flLockedSpeed", - "type": 8 - }, - "AngRate": { - "field": "m_flAngRate", - "type": 8 - }, - "Duration": { - "field": "m_flDuration", - "type": 8 - }, - "StartTime": { - "field": "m_flStartTime", - "type": 8 - }, - "Active": { - "field": "m_bActive", - "type": 10 - }, - "TeleportOnEnd": { - "field": "m_bTeleportOnEnd", - "type": 10 - }, - "IgnoreRotation": { - "field": "m_bIgnoreRotation", - "type": 10 - }, - "Type": { - "field": "m_nType", - "type": 6 - }, - "Success": { - "field": "m_bSuccess", - "type": 10 - }, - "ForcedCrouchState": { - "field": "m_nForcedCrouchState", - "type": 6 - }, - "IgnoreCollisions": { - "field": "m_bIgnoreCollisions", - "type": 10 - } - }, - "CGameScriptedMoveDef_t": { - "Type": { - "field": "m_nType", - "type": 6 - }, - "DestOffset": { - "field": "m_vDestOffset", - "type": 21 - }, - "DestEntity": { - "field": "m_hDestEntity", - "type": 17, - "classname": "CBaseEntity" - }, - "Dest": { - "field": "m_angDest", - "type": 20 - }, - "Duration": { - "field": "m_flDuration", - "type": 8 - }, - "AngRate": { - "field": "m_flAngRate", - "type": 8 - } - }, - "CGameText": { - "Message": { - "field": "m_iszMessage", - "type": 13 - }, - "TextParms": { - "field": "m_textParms", - "classname": "hudtextparms_t", - "type": 16 - }, - "Parent": { - "field": "CRulePointEntity", - "type": 11 - } - }, - "CGenericConstraint": { - "LinearMotionX": { - "field": "m_nLinearMotionX", - "type": 6 - }, - "LinearMotionY": { - "field": "m_nLinearMotionY", - "type": 6 - }, - "LinearMotionZ": { - "field": "m_nLinearMotionZ", - "type": 6 - }, - "LinearFrequencyX": { - "field": "m_flLinearFrequencyX", - "type": 8 - }, - "LinearFrequencyY": { - "field": "m_flLinearFrequencyY", - "type": 8 - }, - "LinearFrequencyZ": { - "field": "m_flLinearFrequencyZ", - "type": 8 - }, - "LinearDampingRatioX": { - "field": "m_flLinearDampingRatioX", - "type": 8 - }, - "LinearDampingRatioY": { - "field": "m_flLinearDampingRatioY", - "type": 8 - }, - "LinearDampingRatioZ": { - "field": "m_flLinearDampingRatioZ", - "type": 8 - }, - "MaxLinearImpulseX": { - "field": "m_flMaxLinearImpulseX", - "type": 8 - }, - "MaxLinearImpulseY": { - "field": "m_flMaxLinearImpulseY", - "type": 8 - }, - "MaxLinearImpulseZ": { - "field": "m_flMaxLinearImpulseZ", - "type": 8 - }, - "BreakAfterTimeX": { - "field": "m_flBreakAfterTimeX", - "type": 8 - }, - "BreakAfterTimeY": { - "field": "m_flBreakAfterTimeY", - "type": 8 - }, - "BreakAfterTimeZ": { - "field": "m_flBreakAfterTimeZ", - "type": 8 - }, - "BreakAfterTimeStartTimeX": { - "field": "m_flBreakAfterTimeStartTimeX", - "type": 8 - }, - "BreakAfterTimeStartTimeY": { - "field": "m_flBreakAfterTimeStartTimeY", - "type": 8 - }, - "BreakAfterTimeStartTimeZ": { - "field": "m_flBreakAfterTimeStartTimeZ", - "type": 8 - }, - "BreakAfterTimeThresholdX": { - "field": "m_flBreakAfterTimeThresholdX", - "type": 8 - }, - "BreakAfterTimeThresholdY": { - "field": "m_flBreakAfterTimeThresholdY", - "type": 8 - }, - "BreakAfterTimeThresholdZ": { - "field": "m_flBreakAfterTimeThresholdZ", - "type": 8 - }, - "NotifyForceX": { - "field": "m_flNotifyForceX", - "type": 8 - }, - "NotifyForceY": { - "field": "m_flNotifyForceY", - "type": 8 - }, - "NotifyForceZ": { - "field": "m_flNotifyForceZ", - "type": 8 - }, - "NotifyForceMinTimeX": { - "field": "m_flNotifyForceMinTimeX", - "type": 8 - }, - "NotifyForceMinTimeY": { - "field": "m_flNotifyForceMinTimeY", - "type": 8 - }, - "NotifyForceMinTimeZ": { - "field": "m_flNotifyForceMinTimeZ", - "type": 8 - }, - "NotifyForceLastTimeX": { - "field": "m_flNotifyForceLastTimeX", - "type": 8 - }, - "NotifyForceLastTimeY": { - "field": "m_flNotifyForceLastTimeY", - "type": 8 - }, - "NotifyForceLastTimeZ": { - "field": "m_flNotifyForceLastTimeZ", - "type": 8 - }, - "AxisNotifiedX": { - "field": "m_bAxisNotifiedX", - "type": 10 - }, - "AxisNotifiedY": { - "field": "m_bAxisNotifiedY", - "type": 10 - }, - "AxisNotifiedZ": { - "field": "m_bAxisNotifiedZ", - "type": 10 - }, - "AngularMotionX": { - "field": "m_nAngularMotionX", - "type": 6 - }, - "AngularMotionY": { - "field": "m_nAngularMotionY", - "type": 6 - }, - "AngularMotionZ": { - "field": "m_nAngularMotionZ", - "type": 6 - }, - "AngularFrequencyX": { - "field": "m_flAngularFrequencyX", - "type": 8 - }, - "AngularFrequencyY": { - "field": "m_flAngularFrequencyY", - "type": 8 - }, - "AngularFrequencyZ": { - "field": "m_flAngularFrequencyZ", - "type": 8 - }, - "AngularDampingRatioX": { - "field": "m_flAngularDampingRatioX", - "type": 8 - }, - "AngularDampingRatioY": { - "field": "m_flAngularDampingRatioY", - "type": 8 - }, - "AngularDampingRatioZ": { - "field": "m_flAngularDampingRatioZ", - "type": 8 - }, - "MaxAngularImpulseX": { - "field": "m_flMaxAngularImpulseX", - "type": 8 - }, - "MaxAngularImpulseY": { - "field": "m_flMaxAngularImpulseY", - "type": 8 - }, - "MaxAngularImpulseZ": { - "field": "m_flMaxAngularImpulseZ", - "type": 8 - }, - "NotifyForceReachedX": { - "field": "m_NotifyForceReachedX", - "classname": "CEntityIOOutput", - "type": 16 - }, - "NotifyForceReachedY": { - "field": "m_NotifyForceReachedY", - "classname": "CEntityIOOutput", - "type": 16 - }, - "NotifyForceReachedZ": { - "field": "m_NotifyForceReachedZ", - "classname": "CEntityIOOutput", - "type": 16 - }, - "Parent": { - "field": "CPhysConstraint", - "type": 11 - } - }, - "CGradientFog": { - "FogStartDistance": { - "field": "m_flFogStartDistance", - "type": 8 - }, - "FogEndDistance": { - "field": "m_flFogEndDistance", - "type": 8 - }, - "HeightFogEnabled": { - "field": "m_bHeightFogEnabled", - "type": 10 - }, - "FogStartHeight": { - "field": "m_flFogStartHeight", - "type": 8 - }, - "FogEndHeight": { - "field": "m_flFogEndHeight", - "type": 8 - }, - "FarZ": { - "field": "m_flFarZ", - "type": 8 - }, - "FogMaxOpacity": { - "field": "m_flFogMaxOpacity", - "type": 8 - }, - "FogFalloffExponent": { - "field": "m_flFogFalloffExponent", - "type": 8 - }, - "FogVerticalExponent": { - "field": "m_flFogVerticalExponent", - "type": 8 - }, - "FogColor": { - "field": "m_fogColor", - "type": 19 - }, - "FogStrength": { - "field": "m_flFogStrength", - "type": 8 - }, - "FadeTime": { - "field": "m_flFadeTime", - "type": 8 - }, - "StartDisabled": { - "field": "m_bStartDisabled", - "type": 10 - }, - "IsEnabled": { - "field": "m_bIsEnabled", - "type": 10 - }, - "GradientFogNeedsTextures": { - "field": "m_bGradientFogNeedsTextures", - "type": 10 - }, - "Parent": { - "field": "CBaseEntity", - "type": 11 - } - }, - "CGunTarget": { - "On": { - "field": "m_on", - "type": 10 - }, - "TargetEnt": { - "field": "m_hTargetEnt", - "type": 17, - "classname": "CBaseEntity" - }, - "OnDeath": { - "field": "m_OnDeath", - "classname": "CEntityIOOutput", - "type": 16 - }, - "Parent": { - "field": "CBaseToggle", - "type": 11 - } - }, - "CHEGrenade": { - "Parent": { - "field": "CBaseCSGrenade", - "type": 11 - } - }, - "CHEGrenadeProjectile": { - "Parent": { - "field": "CBaseCSGrenadeProjectile", - "type": 11 - } - }, - "CHandleDummy": { - "Parent": { - "field": "CBaseEntity", - "type": 11 - } - }, - "CHandleTest": { - "Handle": { - "field": "m_Handle", - "type": 17, - "classname": "CBaseEntity" - }, - "SendHandle": { - "field": "m_bSendHandle", - "type": 10 - }, - "Parent": { - "field": "CBaseEntity", - "type": 11 - } - }, - "CHostage": { - "OnHostageBeginGrab": { - "field": "m_OnHostageBeginGrab", - "classname": "CEntityIOOutput", - "type": 16 - }, - "OnFirstPickedUp": { - "field": "m_OnFirstPickedUp", - "classname": "CEntityIOOutput", - "type": 16 - }, - "OnDroppedNotRescued": { - "field": "m_OnDroppedNotRescued", - "classname": "CEntityIOOutput", - "type": 16 - }, - "OnRescued": { - "field": "m_OnRescued", - "classname": "CEntityIOOutput", - "type": 16 - }, - "EntitySpottedState": { - "field": "m_entitySpottedState", - "classname": "EntitySpottedState_t", - "type": 16 - }, - "SpotRules": { - "field": "m_nSpotRules", - "type": 2 - }, - "UiHostageSpawnExclusionGroupMask": { - "field": "m_uiHostageSpawnExclusionGroupMask", - "type": 6 - }, - "HostageSpawnRandomFactor": { - "field": "m_nHostageSpawnRandomFactor", - "type": 6 - }, - "Remove": { - "field": "m_bRemove", - "type": 10 - }, - "Vel": { - "field": "m_vel", - "type": 21 - }, - "IsRescued": { - "field": "m_isRescued", - "type": 10 - }, - "JumpedThisFrame": { - "field": "m_jumpedThisFrame", - "type": 10 - }, - "HostageState": { - "field": "m_nHostageState", - "type": 2 - }, - "Leader": { - "field": "m_leader", - "type": 17, - "classname": "CBaseEntity" - }, - "LastLeader": { - "field": "m_lastLeader", - "type": 17, - "classname": "CCSPlayerPawnBase" - }, - "ReuseTimer": { - "field": "m_reuseTimer", - "classname": "CountdownTimer", - "type": 16 - }, - "HasBeenUsed": { - "field": "m_hasBeenUsed", - "type": 10 - }, - "Accel": { - "field": "m_accel", - "type": 21 - }, - "IsRunning": { - "field": "m_isRunning", - "type": 10 - }, - "IsCrouching": { - "field": "m_isCrouching", - "type": 10 - }, - "JumpTimer": { - "field": "m_jumpTimer", - "classname": "CountdownTimer", - "type": 16 - }, - "IsWaitingForLeader": { - "field": "m_isWaitingForLeader", - "type": 10 - }, - "RepathTimer": { - "field": "m_repathTimer", - "classname": "CountdownTimer", - "type": 16 - }, - "InhibitDoorTimer": { - "field": "m_inhibitDoorTimer", - "classname": "CountdownTimer", - "type": 16 - }, - "InhibitObstacleAvoidanceTimer": { - "field": "m_inhibitObstacleAvoidanceTimer", - "classname": "CountdownTimer", - "type": 16 - }, - "WiggleTimer": { - "field": "m_wiggleTimer", - "classname": "CountdownTimer", - "type": 16 - }, - "IsAdjusted": { - "field": "m_isAdjusted", - "type": 10 - }, - "HandsHaveBeenCut": { - "field": "m_bHandsHaveBeenCut", - "type": 10 - }, - "HostageGrabber": { - "field": "m_hHostageGrabber", - "type": 17, - "classname": "CCSPlayerPawn" - }, - "LastGrabTime": { - "field": "m_fLastGrabTime", - "type": 8 - }, - "PositionWhenStartedDroppingToGround": { - "field": "m_vecPositionWhenStartedDroppingToGround", - "type": 21 - }, - "GrabbedPos": { - "field": "m_vecGrabbedPos", - "type": 21 - }, - "RescueStartTime": { - "field": "m_flRescueStartTime", - "type": 8 - }, - "GrabSuccessTime": { - "field": "m_flGrabSuccessTime", - "type": 8 - }, - "DropStartTime": { - "field": "m_flDropStartTime", - "type": 8 - }, - "ApproachRewardPayouts": { - "field": "m_nApproachRewardPayouts", - "type": 2 - }, - "PickupEventCount": { - "field": "m_nPickupEventCount", - "type": 2 - }, - "SpawnGroundPos": { - "field": "m_vecSpawnGroundPos", - "type": 21 - }, - "HostageResetPosition": { - "field": "m_vecHostageResetPosition", - "type": 21 - }, - "Parent": { - "field": "CHostageExpresserShim", - "type": 11 - } - }, - "CHostageAlias_info_hostage_spawn": { - "Parent": { - "field": "CHostage", - "type": 11 - } - }, - "CHostageCarriableProp": { - "Parent": { - "field": "CBaseAnimGraph", - "type": 11 - } - }, - "CHostageExpresserShim": { - "Expresser": { - "field": "m_pExpresser", - "classname": "CAI_Expresser", - "type": 24 - }, - "Parent": { - "field": "CBaseCombatCharacter", - "type": 11 - } - }, - "CIncendiaryGrenade": { - "Parent": { - "field": "CMolotovGrenade", - "type": 11 - } - }, - "CInferno": { - "FirePositions": { - "field": "m_firePositions", - "type": 42, - "size": 64 - }, - "FireParentPositions": { - "field": "m_fireParentPositions", - "type": 42, - "size": 64 - }, - "FireIsBurning": { - "field": "m_bFireIsBurning", - "type": 39, - "size": 64 - }, - "BurnNormal": { - "field": "m_BurnNormal", - "type": 42, - "size": 64 - }, - "FireCount": { - "field": "m_fireCount", - "type": 2 - }, - "InfernoType": { - "field": "m_nInfernoType", - "type": 2 - }, - "FireEffectTickBegin": { - "field": "m_nFireEffectTickBegin", - "type": 2 - }, - "FireLifetime": { - "field": "m_nFireLifetime", - "type": 8 - }, - "InPostEffectTime": { - "field": "m_bInPostEffectTime", - "type": 10 - }, - "FiresExtinguishCount": { - "field": "m_nFiresExtinguishCount", - "type": 2 - }, - "WasCreatedInSmoke": { - "field": "m_bWasCreatedInSmoke", - "type": 10 - }, - "Extent": { - "field": "m_extent", - "classname": "Extent", - "type": 16 - }, - "DamageTimer": { - "field": "m_damageTimer", - "classname": "CountdownTimer", - "type": 16 - }, - "DamageRampTimer": { - "field": "m_damageRampTimer", - "classname": "CountdownTimer", - "type": 16 - }, - "SplashVelocity": { - "field": "m_splashVelocity", - "type": 21 - }, - "InitialSplashVelocity": { - "field": "m_InitialSplashVelocity", - "type": 21 - }, - "StartPos": { - "field": "m_startPos", - "type": 21 - }, - "OriginalSpawnLocation": { - "field": "m_vecOriginalSpawnLocation", - "type": 21 - }, - "ActiveTimer": { - "field": "m_activeTimer", - "classname": "IntervalTimer", - "type": 16 - }, - "FireSpawnOffset": { - "field": "m_fireSpawnOffset", - "type": 2 - }, - "MaxFlames": { - "field": "m_nMaxFlames", - "type": 2 - }, - "SpreadCount": { - "field": "m_nSpreadCount", - "type": 2 - }, - "BookkeepingTimer": { - "field": "m_BookkeepingTimer", - "classname": "CountdownTimer", - "type": 16 - }, - "NextSpreadTimer": { - "field": "m_NextSpreadTimer", - "classname": "CountdownTimer", - "type": 16 - }, - "SourceItemDefIndex": { - "field": "m_nSourceItemDefIndex", - "type": 5 - }, - "Parent": { - "field": "CBaseModelEntity", - "type": 11 - } - }, - "CInfoData": { - "Parent": { - "field": "CServerOnlyEntity", - "type": 11 - } - }, - "CInfoDeathmatchSpawn": { - "Parent": { - "field": "SpawnPoint", - "type": 11 - } - }, - "CInfoGameEventProxy": { - "EventName": { - "field": "m_iszEventName", - "type": 13 - }, - "Range": { - "field": "m_flRange", - "type": 8 - }, - "Parent": { - "field": "CPointEntity", - "type": 11 - } - }, - "CInfoInstructorHintBombTargetA": { - "Parent": { - "field": "CPointEntity", - "type": 11 - } - }, - "CInfoInstructorHintBombTargetB": { - "Parent": { - "field": "CPointEntity", - "type": 11 - } - }, - "CInfoInstructorHintHostageRescueZone": { - "Parent": { - "field": "CPointEntity", - "type": 11 - } - }, - "CInfoInstructorHintTarget": { - "Parent": { - "field": "CPointEntity", - "type": 11 - } - }, - "CInfoLadderDismount": { - "Parent": { - "field": "CBaseEntity", - "type": 11 - } - }, - "CInfoLandmark": { - "Parent": { - "field": "CPointEntity", - "type": 11 - } - }, - "CInfoPlayerCounterterrorist": { - "Parent": { - "field": "SpawnPoint", - "type": 11 - } - }, - "CInfoPlayerStart": { - "Disabled": { - "field": "m_bDisabled", - "type": 10 - }, - "IsMaster": { - "field": "m_bIsMaster", - "type": 10 - }, - "Parent": { - "field": "CPointEntity", - "type": 11 - } - }, - "CInfoPlayerTerrorist": { - "Parent": { - "field": "SpawnPoint", - "type": 11 - } - }, - "CInfoSpawnGroupLandmark": { - "Parent": { - "field": "CPointEntity", - "type": 11 - } - }, - "CInfoSpawnGroupLoadUnload": { - "OnSpawnGroupLoadStarted": { - "field": "m_OnSpawnGroupLoadStarted", - "classname": "CEntityIOOutput", - "type": 16 - }, - "OnSpawnGroupLoadFinished": { - "field": "m_OnSpawnGroupLoadFinished", - "classname": "CEntityIOOutput", - "type": 16 - }, - "OnSpawnGroupUnloadStarted": { - "field": "m_OnSpawnGroupUnloadStarted", - "classname": "CEntityIOOutput", - "type": 16 - }, - "OnSpawnGroupUnloadFinished": { - "field": "m_OnSpawnGroupUnloadFinished", - "classname": "CEntityIOOutput", - "type": 16 - }, - "SpawnGroupName": { - "field": "m_iszSpawnGroupName", - "type": 13 - }, - "SpawnGroupFilterName": { - "field": "m_iszSpawnGroupFilterName", - "type": 13 - }, - "LandmarkName": { - "field": "m_iszLandmarkName", - "type": 13 - }, - "FixedSpawnGroupName": { - "field": "m_sFixedSpawnGroupName", - "type": 14 - }, - "TimeoutInterval": { - "field": "m_flTimeoutInterval", - "type": 8 - }, - "StreamingStarted": { - "field": "m_bStreamingStarted", - "type": 10 - }, - "UnloadingStarted": { - "field": "m_bUnloadingStarted", - "type": 10 - }, - "Parent": { - "field": "CLogicalEntity", - "type": 11 - } - }, - "CInfoTargetServerOnly": { - "Parent": { - "field": "CServerOnlyPointEntity", - "type": 11 - } - }, - "CInfoTeleportDestination": { - "Parent": { - "field": "CPointEntity", - "type": 11 - } - }, - "CInfoVisibilityBox": { - "Mode": { - "field": "m_nMode", - "type": 2 - }, - "BoxSize": { - "field": "m_vBoxSize", - "type": 21 - }, - "Enabled": { - "field": "m_bEnabled", - "type": 10 - }, - "Parent": { - "field": "CBaseEntity", - "type": 11 - } - }, - "CInstancedSceneEntity": { - "Owner": { - "field": "m_hOwner", - "type": 17, - "classname": "CBaseEntity" - }, - "HadOwner": { - "field": "m_bHadOwner", - "type": 10 - }, - "PostSpeakDelay": { - "field": "m_flPostSpeakDelay", - "type": 8 - }, - "PreDelay": { - "field": "m_flPreDelay", - "type": 8 - }, - "IsBackground": { - "field": "m_bIsBackground", - "type": 10 - }, - "RemoveOnCompletion": { - "field": "m_bRemoveOnCompletion", - "type": 10 - }, - "Target": { - "field": "m_hTarget", - "type": 17, - "classname": "CBaseEntity" - }, - "Parent": { - "field": "CSceneEntity", - "type": 11 - } - }, - "CInstructorEventEntity": { - "Name": { - "field": "m_iszName", - "type": 13 - }, - "HintTargetEntity": { - "field": "m_iszHintTargetEntity", - "type": 13 - }, - "TargetPlayer": { - "field": "m_hTargetPlayer", - "type": 17, - "classname": "CBasePlayerPawn" - }, - "Parent": { - "field": "CPointEntity", - "type": 11 - } - }, - "CIronSightController": { - "IronSightAvailable": { - "field": "m_bIronSightAvailable", - "type": 10 - }, - "IronSightAmount": { - "field": "m_flIronSightAmount", - "type": 8 - }, - "IronSightAmountGained": { - "field": "m_flIronSightAmountGained", - "type": 8 - }, - "IronSightAmountBiased": { - "field": "m_flIronSightAmountBiased", - "type": 8 - } - }, - "CItem": { - "OnPlayerTouch": { - "field": "m_OnPlayerTouch", - "classname": "CEntityIOOutput", - "type": 16 - }, - "OnPlayerPickup": { - "field": "m_OnPlayerPickup", - "classname": "CEntityIOOutput", - "type": 16 - }, - "ActivateWhenAtRest": { - "field": "m_bActivateWhenAtRest", - "type": 10 - }, - "OnCacheInteraction": { - "field": "m_OnCacheInteraction", - "classname": "CEntityIOOutput", - "type": 16 - }, - "OnGlovePulled": { - "field": "m_OnGlovePulled", - "classname": "CEntityIOOutput", - "type": 16 - }, - "OriginalSpawnOrigin": { - "field": "m_vOriginalSpawnOrigin", - "type": 21 - }, - "OriginalSpawnAngles": { - "field": "m_vOriginalSpawnAngles", - "type": 20 - }, - "PhysStartAsleep": { - "field": "m_bPhysStartAsleep", - "type": 10 - }, - "Parent": { - "field": "CBaseAnimGraph", - "type": 11 - } - }, - "CItemAssaultSuit": { - "Parent": { - "field": "CItem", - "type": 11 - } - }, - "CItemDefuser": { - "EntitySpottedState": { - "field": "m_entitySpottedState", - "classname": "EntitySpottedState_t", - "type": 16 - }, - "SpotRules": { - "field": "m_nSpotRules", - "type": 2 - }, - "Parent": { - "field": "CItem", - "type": 11 - } - }, - "CItemDefuserAlias_item_defuser": { - "Parent": { - "field": "CItemDefuser", - "type": 11 - } - }, - "CItemDogtags": { - "OwningPlayer": { - "field": "m_OwningPlayer", - "type": 17, - "classname": "CCSPlayerPawn" - }, - "KillingPlayer": { - "field": "m_KillingPlayer", - "type": 17, - "classname": "CCSPlayerPawn" - }, - "Parent": { - "field": "CItem", - "type": 11 - } - }, - "CItemHeavyAssaultSuit": { - "Parent": { - "field": "CItemAssaultSuit", - "type": 11 - } - }, - "CItemKevlar": { - "Parent": { - "field": "CItem", - "type": 11 - } - }, - "CItemSoda": { - "Parent": { - "field": "CBaseAnimGraph", - "type": 11 - } - }, - "CItem_Healthshot": { - "Parent": { - "field": "CWeaponBaseItem", - "type": 11 - } - }, - "CKeepUpright": { - "WorldGoalAxis": { - "field": "m_worldGoalAxis", - "type": 21 - }, - "LocalTestAxis": { - "field": "m_localTestAxis", - "type": 21 - }, - "NameAttach": { - "field": "m_nameAttach", - "type": 13 - }, - "AttachedObject": { - "field": "m_attachedObject", - "type": 17, - "classname": "CBaseEntity" - }, - "AngularLimit": { - "field": "m_angularLimit", - "type": 8 - }, - "Active": { - "field": "m_bActive", - "type": 10 - }, - "DampAllRotation": { - "field": "m_bDampAllRotation", - "type": 10 - }, - "Parent": { - "field": "CPointEntity", - "type": 11 - } - }, - "CKnife": { - "FirstAttack": { - "field": "m_bFirstAttack", - "type": 10 - }, - "Parent": { - "field": "CCSWeaponBase", - "type": 11 - } - }, - "CLightDirectionalEntity": { - "Parent": { - "field": "CLightEntity", - "type": 11 - } - }, - "CLightEntity": { - "CLightComponent": { - "field": "m_CLightComponent", - "classname": "CLightComponent", - "type": 24 - }, - "Parent": { - "field": "CBaseModelEntity", - "type": 11 - } - }, - "CLightEnvironmentEntity": { - "Parent": { - "field": "CLightDirectionalEntity", - "type": 11 - } - }, - "CLightGlow": { - "HorizontalSize": { - "field": "m_nHorizontalSize", - "type": 6 - }, - "VerticalSize": { - "field": "m_nVerticalSize", - "type": 6 - }, - "MinDist": { - "field": "m_nMinDist", - "type": 6 - }, - "MaxDist": { - "field": "m_nMaxDist", - "type": 6 - }, - "OuterMaxDist": { - "field": "m_nOuterMaxDist", - "type": 6 - }, - "GlowProxySize": { - "field": "m_flGlowProxySize", - "type": 8 - }, - "HDRColorScale": { - "field": "m_flHDRColorScale", - "type": 8 - }, - "Parent": { - "field": "CBaseModelEntity", - "type": 11 - } - }, - "CLightOrthoEntity": { - "Parent": { - "field": "CLightEntity", - "type": 11 - } - }, - "CLightSpotEntity": { - "Parent": { - "field": "CLightEntity", - "type": 11 - } - }, - "CLogicAchievement": { - "Disabled": { - "field": "m_bDisabled", - "type": 10 - }, - "AchievementEventID": { - "field": "m_iszAchievementEventID", - "type": 13 - }, - "OnFired": { - "field": "m_OnFired", - "classname": "CEntityIOOutput", - "type": 16 - }, - "Parent": { - "field": "CLogicalEntity", - "type": 11 - } - }, - "CLogicActiveAutosave": { - "TriggerHitPoints": { - "field": "m_TriggerHitPoints", - "type": 2 - }, - "TimeToTrigger": { - "field": "m_flTimeToTrigger", - "type": 8 - }, - "StartTime": { - "field": "m_flStartTime", - "type": 8 - }, - "DangerousTime": { - "field": "m_flDangerousTime", - "type": 8 - }, - "Parent": { - "field": "CLogicAutosave", - "type": 11 - } - }, - "CLogicAuto": { - "OnMapSpawn": { - "field": "m_OnMapSpawn", - "classname": "CEntityIOOutput", - "type": 16 - }, - "OnDemoMapSpawn": { - "field": "m_OnDemoMapSpawn", - "classname": "CEntityIOOutput", - "type": 16 - }, - "OnNewGame": { - "field": "m_OnNewGame", - "classname": "CEntityIOOutput", - "type": 16 - }, - "OnLoadGame": { - "field": "m_OnLoadGame", - "classname": "CEntityIOOutput", - "type": 16 - }, - "OnMapTransition": { - "field": "m_OnMapTransition", - "classname": "CEntityIOOutput", - "type": 16 - }, - "OnBackgroundMap": { - "field": "m_OnBackgroundMap", - "classname": "CEntityIOOutput", - "type": 16 - }, - "OnMultiNewMap": { - "field": "m_OnMultiNewMap", - "classname": "CEntityIOOutput", - "type": 16 - }, - "OnMultiNewRound": { - "field": "m_OnMultiNewRound", - "classname": "CEntityIOOutput", - "type": 16 - }, - "OnVREnabled": { - "field": "m_OnVREnabled", - "classname": "CEntityIOOutput", - "type": 16 - }, - "OnVRNotEnabled": { - "field": "m_OnVRNotEnabled", - "classname": "CEntityIOOutput", - "type": 16 - }, - "Globalstate": { - "field": "m_globalstate", - "type": 13 - }, - "Parent": { - "field": "CBaseEntity", - "type": 11 - } - }, - "CLogicAutosave": { - "ForceNewLevelUnit": { - "field": "m_bForceNewLevelUnit", - "type": 10 - }, - "MinHitPoints": { - "field": "m_minHitPoints", - "type": 2 - }, - "MinHitPointsToCommit": { - "field": "m_minHitPointsToCommit", - "type": 2 - }, - "Parent": { - "field": "CLogicalEntity", - "type": 11 - } - }, - "CLogicBranch": { - "InValue": { - "field": "m_bInValue", - "type": 10 - }, - "OnTrue": { - "field": "m_OnTrue", - "classname": "CEntityIOOutput", - "type": 16 - }, - "OnFalse": { - "field": "m_OnFalse", - "classname": "CEntityIOOutput", - "type": 16 - }, - "Parent": { - "field": "CLogicalEntity", - "type": 11 - } - }, - "CLogicBranchList": { - "LogicBranchNames": { - "field": "m_nLogicBranchNames", - "type": 26, - "size": 16 - }, - "OnAllTrue": { - "field": "m_OnAllTrue", - "classname": "CEntityIOOutput", - "type": 16 - }, - "OnAllFalse": { - "field": "m_OnAllFalse", - "classname": "CEntityIOOutput", - "type": 16 - }, - "OnMixed": { - "field": "m_OnMixed", - "classname": "CEntityIOOutput", - "type": 16 - }, - "Parent": { - "field": "CLogicalEntity", - "type": 11 - } - }, - "CLogicCase": { - "Case": { - "field": "m_nCase", - "type": 26, - "size": 32 - }, - "ShuffleCases": { - "field": "m_nShuffleCases", - "type": 2 - }, - "LastShuffleCase": { - "field": "m_nLastShuffleCase", - "type": 2 - }, - "UchShuffleCaseMap": { - "field": "m_uchShuffleCaseMap", - "type": 33, - "size": 32 - }, - "OnCase": { - "field": "m_OnCase", - "type": 45, - "size": 32 - }, - "Parent": { - "field": "CLogicalEntity", - "type": 11 - } - }, - "CLogicCollisionPair": { - "NameAttach1": { - "field": "m_nameAttach1", - "type": 13 - }, - "NameAttach2": { - "field": "m_nameAttach2", - "type": 13 - }, - "SupportMultipleEntitiesWithSameName": { - "field": "m_supportMultipleEntitiesWithSameName", - "type": 10 - }, - "Disabled": { - "field": "m_disabled", - "type": 10 - }, - "Succeeded": { - "field": "m_succeeded", - "type": 10 - }, - "Parent": { - "field": "CLogicalEntity", - "type": 11 - } - }, - "CLogicCompare": { - "InValue": { - "field": "m_flInValue", - "type": 8 - }, - "CompareValue": { - "field": "m_flCompareValue", - "type": 8 - }, - "Parent": { - "field": "CLogicalEntity", - "type": 11 - } - }, - "CLogicDistanceAutosave": { - "TargetEntity": { - "field": "m_iszTargetEntity", - "type": 13 - }, - "DistanceToPlayer": { - "field": "m_flDistanceToPlayer", - "type": 8 - }, - "ForceNewLevelUnit": { - "field": "m_bForceNewLevelUnit", - "type": 10 - }, - "CheckCough": { - "field": "m_bCheckCough", - "type": 10 - }, - "ThinkDangerous": { - "field": "m_bThinkDangerous", - "type": 10 - }, - "DangerousTime": { - "field": "m_flDangerousTime", - "type": 8 - }, - "Parent": { - "field": "CLogicalEntity", - "type": 11 - } - }, - "CLogicDistanceCheck": { - "EntityA": { - "field": "m_iszEntityA", - "type": 13 - }, - "EntityB": { - "field": "m_iszEntityB", - "type": 13 - }, - "Zone1Distance": { - "field": "m_flZone1Distance", - "type": 8 - }, - "Zone2Distance": { - "field": "m_flZone2Distance", - "type": 8 - }, - "InZone1": { - "field": "m_InZone1", - "classname": "CEntityIOOutput", - "type": 16 - }, - "InZone2": { - "field": "m_InZone2", - "classname": "CEntityIOOutput", - "type": 16 - }, - "InZone3": { - "field": "m_InZone3", - "classname": "CEntityIOOutput", - "type": 16 - }, - "Parent": { - "field": "CLogicalEntity", - "type": 11 - } - }, - "CLogicEventListener": { - "StrEventName": { - "field": "m_strEventName", - "type": 14 - }, - "IsEnabled": { - "field": "m_bIsEnabled", - "type": 10 - }, - "Team": { - "field": "m_nTeam", - "type": 2 - }, - "OnEventFired": { - "field": "m_OnEventFired", - "classname": "CEntityIOOutput", - "type": 16 - }, - "Parent": { - "field": "CLogicalEntity", - "type": 11 - } - }, - "CLogicGameEvent": { - "EventName": { - "field": "m_iszEventName", - "type": 13 - }, - "Parent": { - "field": "CLogicalEntity", - "type": 11 - } - }, - "CLogicGameEventListener": { - "OnEventFired": { - "field": "m_OnEventFired", - "classname": "CEntityIOOutput", - "type": 16 - }, - "GameEventName": { - "field": "m_iszGameEventName", - "type": 13 - }, - "GameEventItem": { - "field": "m_iszGameEventItem", - "type": 13 - }, - "Enabled": { - "field": "m_bEnabled", - "type": 10 - }, - "StartDisabled": { - "field": "m_bStartDisabled", - "type": 10 - }, - "Parent": { - "field": "CLogicalEntity", - "type": 11 - } - }, - "CLogicLineToEntity": { - "SourceName": { - "field": "m_SourceName", - "type": 13 - }, - "StartEntity": { - "field": "m_StartEntity", - "type": 17, - "classname": "CBaseEntity" - }, - "EndEntity": { - "field": "m_EndEntity", - "type": 17, - "classname": "CBaseEntity" - }, - "Parent": { - "field": "CLogicalEntity", - "type": 11 - } - }, - "CLogicMeasureMovement": { - "StrMeasureTarget": { - "field": "m_strMeasureTarget", - "type": 13 - }, - "StrMeasureReference": { - "field": "m_strMeasureReference", - "type": 13 - }, - "StrTargetReference": { - "field": "m_strTargetReference", - "type": 13 - }, - "MeasureTarget": { - "field": "m_hMeasureTarget", - "type": 17, - "classname": "CBaseEntity" - }, - "MeasureReference": { - "field": "m_hMeasureReference", - "type": 17, - "classname": "CBaseEntity" - }, - "Target": { - "field": "m_hTarget", - "type": 17, - "classname": "CBaseEntity" - }, - "TargetReference": { - "field": "m_hTargetReference", - "type": 17, - "classname": "CBaseEntity" - }, - "Scale": { - "field": "m_flScale", - "type": 8 - }, - "MeasureType": { - "field": "m_nMeasureType", - "type": 2 - }, - "Parent": { - "field": "CLogicalEntity", - "type": 11 - } - }, - "CLogicNPCCounter": { - "OnMinCountAll": { - "field": "m_OnMinCountAll", - "classname": "CEntityIOOutput", - "type": 16 - }, - "OnMaxCountAll": { - "field": "m_OnMaxCountAll", - "classname": "CEntityIOOutput", - "type": 16 - }, - "OnMinCount_1": { - "field": "m_OnMinCount_1", - "classname": "CEntityIOOutput", - "type": 16 - }, - "OnMaxCount_1": { - "field": "m_OnMaxCount_1", - "classname": "CEntityIOOutput", - "type": 16 - }, - "OnMinCount_2": { - "field": "m_OnMinCount_2", - "classname": "CEntityIOOutput", - "type": 16 - }, - "OnMaxCount_2": { - "field": "m_OnMaxCount_2", - "classname": "CEntityIOOutput", - "type": 16 - }, - "OnMinCount_3": { - "field": "m_OnMinCount_3", - "classname": "CEntityIOOutput", - "type": 16 - }, - "OnMaxCount_3": { - "field": "m_OnMaxCount_3", - "classname": "CEntityIOOutput", - "type": 16 - }, - "Source": { - "field": "m_hSource", - "type": 17, - "classname": "CEntityInstance" - }, - "SourceEntityName": { - "field": "m_iszSourceEntityName", - "type": 13 - }, - "DistanceMax": { - "field": "m_flDistanceMax", - "type": 8 - }, - "Disabled": { - "field": "m_bDisabled", - "type": 10 - }, - "MinCountAll": { - "field": "m_nMinCountAll", - "type": 2 - }, - "MaxCountAll": { - "field": "m_nMaxCountAll", - "type": 2 - }, - "MinFactorAll": { - "field": "m_nMinFactorAll", - "type": 2 - }, - "MaxFactorAll": { - "field": "m_nMaxFactorAll", - "type": 2 - }, - "NPCClassname_1": { - "field": "m_iszNPCClassname_1", - "type": 13 - }, - "NPCState_1": { - "field": "m_nNPCState_1", - "type": 2 - }, - "InvertState_1": { - "field": "m_bInvertState_1", - "type": 10 - }, - "MinCount_1": { - "field": "m_nMinCount_1", - "type": 2 - }, - "MaxCount_1": { - "field": "m_nMaxCount_1", - "type": 2 - }, - "MinFactor_1": { - "field": "m_nMinFactor_1", - "type": 2 - }, - "MaxFactor_1": { - "field": "m_nMaxFactor_1", - "type": 2 - }, - "DefaultDist_1": { - "field": "m_flDefaultDist_1", - "type": 8 - }, - "NPCClassname_2": { - "field": "m_iszNPCClassname_2", - "type": 13 - }, - "NPCState_2": { - "field": "m_nNPCState_2", - "type": 2 - }, - "InvertState_2": { - "field": "m_bInvertState_2", - "type": 10 - }, - "MinCount_2": { - "field": "m_nMinCount_2", - "type": 2 - }, - "MaxCount_2": { - "field": "m_nMaxCount_2", - "type": 2 - }, - "MinFactor_2": { - "field": "m_nMinFactor_2", - "type": 2 - }, - "MaxFactor_2": { - "field": "m_nMaxFactor_2", - "type": 2 - }, - "DefaultDist_2": { - "field": "m_flDefaultDist_2", - "type": 8 - }, - "NPCClassname_3": { - "field": "m_iszNPCClassname_3", - "type": 13 - }, - "NPCState_3": { - "field": "m_nNPCState_3", - "type": 2 - }, - "InvertState_3": { - "field": "m_bInvertState_3", - "type": 10 - }, - "MinCount_3": { - "field": "m_nMinCount_3", - "type": 2 - }, - "MaxCount_3": { - "field": "m_nMaxCount_3", - "type": 2 - }, - "MinFactor_3": { - "field": "m_nMinFactor_3", - "type": 2 - }, - "MaxFactor_3": { - "field": "m_nMaxFactor_3", - "type": 2 - }, - "DefaultDist_3": { - "field": "m_flDefaultDist_3", - "type": 8 - }, - "Parent": { - "field": "CBaseEntity", - "type": 11 - } - }, - "CLogicNPCCounterAABB": { - "DistanceOuterMins": { - "field": "m_vDistanceOuterMins", - "type": 21 - }, - "DistanceOuterMaxs": { - "field": "m_vDistanceOuterMaxs", - "type": 21 - }, - "OuterMins": { - "field": "m_vOuterMins", - "type": 21 - }, - "OuterMaxs": { - "field": "m_vOuterMaxs", - "type": 21 - }, - "Parent": { - "field": "CLogicNPCCounter", - "type": 11 - } - }, - "CLogicNPCCounterOBB": { - "Parent": { - "field": "CLogicNPCCounterAABB", - "type": 11 - } - }, - "CLogicNavigation": { - "IsOn": { - "field": "m_isOn", - "type": 10 - }, - "NavProperty": { - "field": "m_navProperty", - "type": 6 - }, - "Parent": { - "field": "CLogicalEntity", - "type": 11 - } - }, - "CLogicPlayerProxy": { - "Player": { - "field": "m_hPlayer", - "type": 17, - "classname": "CBaseEntity" - }, - "PlayerHasAmmo": { - "field": "m_PlayerHasAmmo", - "classname": "CEntityIOOutput", - "type": 16 - }, - "PlayerHasNoAmmo": { - "field": "m_PlayerHasNoAmmo", - "classname": "CEntityIOOutput", - "type": 16 - }, - "PlayerDied": { - "field": "m_PlayerDied", - "classname": "CEntityIOOutput", - "type": 16 - }, - "Parent": { - "field": "CLogicalEntity", - "type": 11 - } - }, - "CLogicProximity": { - "Parent": { - "field": "CPointEntity", - "type": 11 - } - }, - "CLogicScript": { - "Parent": { - "field": "CPointEntity", - "type": 11 - } - }, - "CMapVetoPickController": { - "PlayedIntroVcd": { - "field": "m_bPlayedIntroVcd", - "type": 10 - }, - "NeedToPlayFiveSecondsRemaining": { - "field": "m_bNeedToPlayFiveSecondsRemaining", - "type": 10 - }, - "DblPreMatchDraftSequenceTime": { - "field": "m_dblPreMatchDraftSequenceTime", - "type": 9 - }, - "PreMatchDraftStateChanged": { - "field": "m_bPreMatchDraftStateChanged", - "type": 10 - }, - "DraftType": { - "field": "m_nDraftType", - "type": 2 - }, - "TeamWinningCoinToss": { - "field": "m_nTeamWinningCoinToss", - "type": 2 - }, - "TeamWithFirstChoice": { - "field": "m_nTeamWithFirstChoice", - "type": 31, - "size": 64 - }, - "VoteMapIdsList": { - "field": "m_nVoteMapIdsList", - "type": 31, - "size": 7 - }, - "AccountIDs": { - "field": "m_nAccountIDs", - "type": 31, - "size": 64 - }, - "MapId0": { - "field": "m_nMapId0", - "type": 31, - "size": 64 - }, - "MapId1": { - "field": "m_nMapId1", - "type": 31, - "size": 64 - }, - "MapId2": { - "field": "m_nMapId2", - "type": 31, - "size": 64 - }, - "MapId3": { - "field": "m_nMapId3", - "type": 31, - "size": 64 - }, - "MapId4": { - "field": "m_nMapId4", - "type": 31, - "size": 64 - }, - "MapId5": { - "field": "m_nMapId5", - "type": 31, - "size": 64 - }, - "StartingSide0": { - "field": "m_nStartingSide0", - "type": 31, - "size": 64 - }, - "CurrentPhase": { - "field": "m_nCurrentPhase", - "type": 2 - }, - "PhaseStartTick": { - "field": "m_nPhaseStartTick", - "type": 2 - }, - "PhaseDurationTicks": { - "field": "m_nPhaseDurationTicks", - "type": 2 - }, - "Parent": { - "field": "CBaseEntity", - "type": 11 - } - }, - "CMarkupVolume": { - "Disabled": { - "field": "m_bDisabled", - "type": 10 - }, - "Parent": { - "field": "CBaseModelEntity", - "type": 11 - } - }, - "CMarkupVolumeTagged": { - "IsGroup": { - "field": "m_bIsGroup", - "type": 10 - }, - "GroupByPrefab": { - "field": "m_bGroupByPrefab", - "type": 10 - }, - "GroupByVolume": { - "field": "m_bGroupByVolume", - "type": 10 - }, - "GroupOtherGroups": { - "field": "m_bGroupOtherGroups", - "type": 10 - }, - "IsInGroup": { - "field": "m_bIsInGroup", - "type": 10 - }, - "Parent": { - "field": "CMarkupVolume", - "type": 11 - } - }, - "CMarkupVolumeTagged_Nav": { - "Parent": { - "field": "CMarkupVolumeTagged", - "type": 11 - } - }, - "CMarkupVolumeTagged_NavGame": { - "FloodFillAttribute": { - "field": "m_bFloodFillAttribute", - "type": 10 - }, - "Parent": { - "field": "CMarkupVolumeWithRef", - "type": 11 - } - }, - "CMarkupVolumeWithRef": { - "UseRef": { - "field": "m_bUseRef", - "type": 10 - }, - "RefPos": { - "field": "m_vRefPos", - "type": 21 - }, - "RefDot": { - "field": "m_flRefDot", - "type": 8 - }, - "Parent": { - "field": "CMarkupVolumeTagged", - "type": 11 - } - }, - "CMathColorBlend": { - "InMin": { - "field": "m_flInMin", - "type": 8 - }, - "InMax": { - "field": "m_flInMax", - "type": 8 - }, - "OutColor1": { - "field": "m_OutColor1", - "type": 19 - }, - "OutColor2": { - "field": "m_OutColor2", - "type": 19 - }, - "Parent": { - "field": "CLogicalEntity", - "type": 11 - } - }, - "CMathCounter": { - "Min": { - "field": "m_flMin", - "type": 8 - }, - "Max": { - "field": "m_flMax", - "type": 8 - }, - "HitMin": { - "field": "m_bHitMin", - "type": 10 - }, - "HitMax": { - "field": "m_bHitMax", - "type": 10 - }, - "Disabled": { - "field": "m_bDisabled", - "type": 10 - }, - "OnHitMin": { - "field": "m_OnHitMin", - "classname": "CEntityIOOutput", - "type": 16 - }, - "OnHitMax": { - "field": "m_OnHitMax", - "classname": "CEntityIOOutput", - "type": 16 - }, - "OnChangedFromMin": { - "field": "m_OnChangedFromMin", - "classname": "CEntityIOOutput", - "type": 16 - }, - "OnChangedFromMax": { - "field": "m_OnChangedFromMax", - "classname": "CEntityIOOutput", - "type": 16 - }, - "Parent": { - "field": "CLogicalEntity", - "type": 11 - } - }, - "CMathRemap": { - "InMin": { - "field": "m_flInMin", - "type": 8 - }, - "InMax": { - "field": "m_flInMax", - "type": 8 - }, - "Out1": { - "field": "m_flOut1", - "type": 8 - }, - "Out2": { - "field": "m_flOut2", - "type": 8 - }, - "OldInValue": { - "field": "m_flOldInValue", - "type": 8 - }, - "Enabled": { - "field": "m_bEnabled", - "type": 10 - }, - "OnRoseAboveMin": { - "field": "m_OnRoseAboveMin", - "classname": "CEntityIOOutput", - "type": 16 - }, - "OnRoseAboveMax": { - "field": "m_OnRoseAboveMax", - "classname": "CEntityIOOutput", - "type": 16 - }, - "OnFellBelowMin": { - "field": "m_OnFellBelowMin", - "classname": "CEntityIOOutput", - "type": 16 - }, - "OnFellBelowMax": { - "field": "m_OnFellBelowMax", - "classname": "CEntityIOOutput", - "type": 16 - }, - "Parent": { - "field": "CLogicalEntity", - "type": 11 - } - }, - "CMelee": { - "Parent": { - "field": "CCSWeaponBase", - "type": 11 - } - }, - "CMessage": { - "Message": { - "field": "m_iszMessage", - "type": 13 - }, - "MessageVolume": { - "field": "m_MessageVolume", - "type": 8 - }, - "MessageAttenuation": { - "field": "m_MessageAttenuation", - "type": 2 - }, - "Radius": { - "field": "m_Radius", - "type": 8 - }, - "Noise": { - "field": "m_sNoise", - "type": 13 - }, - "OnShowMessage": { - "field": "m_OnShowMessage", - "classname": "CEntityIOOutput", - "type": 16 - }, - "Parent": { - "field": "CPointEntity", - "type": 11 - } - }, - "CMessageEntity": { - "Radius": { - "field": "m_radius", - "type": 2 - }, - "MessageText": { - "field": "m_messageText", - "type": 13 - }, - "DrawText": { - "field": "m_drawText", - "type": 10 - }, - "DeveloperOnly": { - "field": "m_bDeveloperOnly", - "type": 10 - }, - "Enabled": { - "field": "m_bEnabled", - "type": 10 - }, - "Parent": { - "field": "CPointEntity", - "type": 11 - } - }, - "CModelPointEntity": { - "Parent": { - "field": "CBaseModelEntity", - "type": 11 - } - }, - "CMolotovGrenade": { - "Parent": { - "field": "CBaseCSGrenade", - "type": 11 - } - }, - "CMolotovProjectile": { - "IsIncGrenade": { - "field": "m_bIsIncGrenade", - "type": 10 - }, - "Detonated": { - "field": "m_bDetonated", - "type": 10 - }, - "StillTimer": { - "field": "m_stillTimer", - "classname": "IntervalTimer", - "type": 16 - }, - "HasBouncedOffPlayer": { - "field": "m_bHasBouncedOffPlayer", - "type": 10 - }, - "Parent": { - "field": "CBaseCSGrenadeProjectile", - "type": 11 - } - }, - "CMomentaryRotButton": { - "OnUnpressed": { - "field": "m_OnUnpressed", - "classname": "CEntityIOOutput", - "type": 16 - }, - "OnFullyOpen": { - "field": "m_OnFullyOpen", - "classname": "CEntityIOOutput", - "type": 16 - }, - "OnFullyClosed": { - "field": "m_OnFullyClosed", - "classname": "CEntityIOOutput", - "type": 16 - }, - "OnReachedPosition": { - "field": "m_OnReachedPosition", - "classname": "CEntityIOOutput", - "type": 16 - }, - "LastUsed": { - "field": "m_lastUsed", - "type": 2 - }, - "Start": { - "field": "m_start", - "type": 20 - }, - "End": { - "field": "m_end", - "type": 20 - }, - "IdealYaw": { - "field": "m_IdealYaw", - "type": 8 - }, - "Noise": { - "field": "m_sNoise", - "type": 13 - }, - "UpdateTarget": { - "field": "m_bUpdateTarget", - "type": 10 - }, - "Direction": { - "field": "m_direction", - "type": 2 - }, - "ReturnSpeed": { - "field": "m_returnSpeed", - "type": 8 - }, - "StartPosition": { - "field": "m_flStartPosition", - "type": 8 - }, - "Parent": { - "field": "CRotButton", - "type": 11 - } - }, - "CMotorController": { - "Speed": { - "field": "m_speed", - "type": 8 - }, - "MaxTorque": { - "field": "m_maxTorque", - "type": 8 - }, - "Axis": { - "field": "m_axis", - "type": 21 - }, - "InertiaFactor": { - "field": "m_inertiaFactor", - "type": 8 - } - }, - "CMoverPathNode": { - "InTangentLocal": { - "field": "m_vInTangentLocal", - "type": 21 - }, - "OutTangentLocal": { - "field": "m_vOutTangentLocal", - "type": 21 - }, - "ParentPathUniqueID": { - "field": "m_szParentPathUniqueID", - "type": 13 - }, - "OnPassThrough": { - "field": "m_OnPassThrough", - "classname": "CEntityIOOutput", - "type": 16 - }, - "OnPassThroughForward": { - "field": "m_OnPassThroughForward", - "classname": "CEntityIOOutput", - "type": 16 - }, - "OnPassThroughReverse": { - "field": "m_OnPassThroughReverse", - "classname": "CEntityIOOutput", - "type": 16 - }, - "Mover": { - "field": "m_hMover", - "type": 17, - "classname": "CPathMover" - }, - "Parent": { - "field": "CPointEntity", - "type": 11 - } - }, - "CMultiLightProxy": { - "LightNameFilter": { - "field": "m_iszLightNameFilter", - "type": 13 - }, - "LightClassFilter": { - "field": "m_iszLightClassFilter", - "type": 13 - }, - "LightRadiusFilter": { - "field": "m_flLightRadiusFilter", - "type": 8 - }, - "BrightnessDelta": { - "field": "m_flBrightnessDelta", - "type": 8 - }, - "PerformScreenFade": { - "field": "m_bPerformScreenFade", - "type": 10 - }, - "TargetBrightnessMultiplier": { - "field": "m_flTargetBrightnessMultiplier", - "type": 8 - }, - "CurrentBrightnessMultiplier": { - "field": "m_flCurrentBrightnessMultiplier", - "type": 8 - }, - "Parent": { - "field": "CLogicalEntity", - "type": 11 - } - }, - "CMultiSource": { - "RgEntities": { - "field": "m_rgEntities", - "type": 46, - "size": 32 - }, - "RgTriggered": { - "field": "m_rgTriggered", - "type": 31, - "size": 32 - }, - "OnTrigger": { - "field": "m_OnTrigger", - "classname": "CEntityIOOutput", - "type": 16 - }, - "Total": { - "field": "m_iTotal", - "type": 2 - }, - "Globalstate": { - "field": "m_globalstate", - "type": 13 - }, - "Parent": { - "field": "CLogicalEntity", - "type": 11 - } - }, - "CMultiplayRules": { - "Parent": { - "field": "CGameRules", - "type": 11 - } - }, - "CMultiplayer_Expresser": { - "AllowMultipleScenes": { - "field": "m_bAllowMultipleScenes", - "type": 10 - }, - "Parent": { - "field": "CAI_ExpresserWithFollowup", - "type": 11 - } - }, - "CNavLinkAreaEntity": { - "Width": { - "field": "m_flWidth", - "type": 8 - }, - "LocatorOffset": { - "field": "m_vLocatorOffset", - "type": 21 - }, - "LocatorAnglesOffset": { - "field": "m_qLocatorAnglesOffset", - "type": 20 - }, - "StrMovementForward": { - "field": "m_strMovementForward", - "type": 13 - }, - "StrMovementReverse": { - "field": "m_strMovementReverse", - "type": 13 - }, - "NavLinkIdForward": { - "field": "m_nNavLinkIdForward", - "type": 2 - }, - "NavLinkIdReverse": { - "field": "m_nNavLinkIdReverse", - "type": 2 - }, - "Enabled": { - "field": "m_bEnabled", - "type": 10 - }, - "StrFilterName": { - "field": "m_strFilterName", - "type": 13 - }, - "Filter": { - "field": "m_hFilter", - "type": 17, - "classname": "CBaseFilter" - }, - "OnNavLinkStart": { - "field": "m_OnNavLinkStart", - "classname": "CEntityIOOutput", - "type": 16 - }, - "OnNavLinkFinish": { - "field": "m_OnNavLinkFinish", - "classname": "CEntityIOOutput", - "type": 16 - }, - "IsTerminus": { - "field": "m_bIsTerminus", - "type": 10 - }, - "Parent": { - "field": "CPointEntity", - "type": 11 - } - }, - "CNavSpaceInfo": { - "CreateFlightSpace": { - "field": "m_bCreateFlightSpace", - "type": 10 - }, - "Parent": { - "field": "CPointEntity", - "type": 11 - } - }, - "CNavVolumeBreadthFirstSearch": { - "StartPos": { - "field": "m_vStartPos", - "type": 21 - }, - "SearchDist": { - "field": "m_flSearchDist", - "type": 8 - }, - "Parent": { - "field": "CNavVolumeCalculatedVector", - "type": 11 - } - }, - "CNavVolumeCalculatedVector": { - "Parent": { - "field": "CNavVolume", - "type": 11 - } - }, - "CNavVolumeMarkupVolume": { - "Parent": { - "field": "CNavVolume", - "type": 11 - } - }, - "CNavWalkable": { - "Parent": { - "field": "CPointEntity", - "type": 11 - } - }, - "CNullEntity": { - "Parent": { - "field": "CBaseEntity", - "type": 11 - } - }, - "COmniLight": { - "InnerAngle": { - "field": "m_flInnerAngle", - "type": 8 - }, - "OuterAngle": { - "field": "m_flOuterAngle", - "type": 8 - }, - "ShowLight": { - "field": "m_bShowLight", - "type": 10 - }, - "Parent": { - "field": "CBarnLight", - "type": 11 - } - }, - "COrnamentProp": { - "InitialOwner": { - "field": "m_initialOwner", - "type": 13 - }, - "Parent": { - "field": "CDynamicProp", - "type": 11 - } - }, - "CParticleSystem": { - "SnapshotFileName": { - "field": "m_szSnapshotFileName", - "type": 15, - "size": 512 - }, - "Active": { - "field": "m_bActive", - "type": 10 - }, - "Frozen": { - "field": "m_bFrozen", - "type": 10 - }, - "FreezeTransitionDuration": { - "field": "m_flFreezeTransitionDuration", - "type": 8 - }, - "StopType": { - "field": "m_nStopType", - "type": 2 - }, - "AnimateDuringGameplayPause": { - "field": "m_bAnimateDuringGameplayPause", - "type": 10 - }, - "StartTime": { - "field": "m_flStartTime", - "type": 8 - }, - "PreSimTime": { - "field": "m_flPreSimTime", - "type": 8 - }, - "ServerControlPoints": { - "field": "m_vServerControlPoints", - "type": 42, - "size": 4 - }, - "ServerControlPointAssignments": { - "field": "m_iServerControlPointAssignments", - "type": 33, - "size": 4 - }, - "ControlPointEnts": { - "field": "m_hControlPointEnts", - "type": 46, - "size": 64 - }, - "NoSave": { - "field": "m_bNoSave", - "type": 10 - }, - "NoFreeze": { - "field": "m_bNoFreeze", - "type": 10 - }, - "NoRamp": { - "field": "m_bNoRamp", - "type": 10 - }, - "StartActive": { - "field": "m_bStartActive", - "type": 10 - }, - "EffectName": { - "field": "m_iszEffectName", - "type": 13 - }, - "ControlPointNames": { - "field": "m_iszControlPointNames", - "type": 26, - "size": 64 - }, - "DataCP": { - "field": "m_nDataCP", - "type": 2 - }, - "DataCPValue": { - "field": "m_vecDataCPValue", - "type": 21 - }, - "TintCP": { - "field": "m_nTintCP", - "type": 2 - }, - "Tint": { - "field": "m_clrTint", - "type": 19 - }, - "Parent": { - "field": "CBaseModelEntity", - "type": 11 - } - }, - "CPathCorner": { - "Wait": { - "field": "m_flWait", - "type": 8 - }, - "Radius": { - "field": "m_flRadius", - "type": 8 - }, - "OnPass": { - "field": "m_OnPass", - "classname": "CEntityIOOutput", - "type": 16 - }, - "Parent": { - "field": "CPointEntity", - "type": 11 - } - }, - "CPathCornerCrash": { - "Parent": { - "field": "CPathCorner", - "type": 11 - } - }, - "CPathKeyFrame": { - "Origin": { - "field": "m_Origin", - "type": 21 - }, - "Angles": { - "field": "m_Angles", - "type": 20 - }, - "NextKey": { - "field": "m_iNextKey", - "type": 13 - }, - "NextTime": { - "field": "m_flNextTime", - "type": 8 - }, - "NextKey1": { - "field": "m_pNextKey", - "classname": "CPathKeyFrame", - "type": 24 - }, - "PrevKey": { - "field": "m_pPrevKey", - "classname": "CPathKeyFrame", - "type": 24 - }, - "MoveSpeed": { - "field": "m_flMoveSpeed", - "type": 8 - }, - "Parent": { - "field": "CLogicalEntity", - "type": 11 - } - }, - "CPathMover": { - "PathLength": { - "field": "m_flPathLength", - "type": 8 - }, - "ClosedLoop": { - "field": "m_bClosedLoop", - "type": 10 - }, - "Parent": { - "field": "CBaseEntity", - "type": 11 - } - }, - "CPathParticleRope": { - "StartActive": { - "field": "m_bStartActive", - "type": 10 - }, - "MaxSimulationTime": { - "field": "m_flMaxSimulationTime", - "type": 8 - }, - "EffectName": { - "field": "m_iszEffectName", - "type": 13 - }, - "PathNodes_Name": { - "field": "m_PathNodes_Name", - "type": 48 - }, - "ParticleSpacing": { - "field": "m_flParticleSpacing", - "type": 8 - }, - "Slack": { - "field": "m_flSlack", - "type": 8 - }, - "Radius": { - "field": "m_flRadius", - "type": 8 - }, - "ColorTint": { - "field": "m_ColorTint", - "type": 19 - }, - "EffectState": { - "field": "m_nEffectState", - "type": 2 - }, - "PathNodes_Position": { - "field": "m_PathNodes_Position", - "type": 63 - }, - "PathNodes_TangentIn": { - "field": "m_PathNodes_TangentIn", - "type": 63 - }, - "PathNodes_TangentOut": { - "field": "m_PathNodes_TangentOut", - "type": 63 - }, - "PathNodes_Color": { - "field": "m_PathNodes_Color", - "type": 63 - }, - "PathNodes_PinEnabled": { - "field": "m_PathNodes_PinEnabled", - "type": 66 - }, - "PathNodes_RadiusScale": { - "field": "m_PathNodes_RadiusScale", - "type": 59 - }, - "Parent": { - "field": "CBaseEntity", - "type": 11 - } - }, - "CPathParticleRopeAlias_path_particle_rope_clientside": { - "Parent": { - "field": "CPathParticleRope", - "type": 11 - } - }, - "CPathTrack": { - "Pnext": { - "field": "m_pnext", - "classname": "CPathTrack", - "type": 24 - }, - "Pprevious": { - "field": "m_pprevious", - "classname": "CPathTrack", - "type": 24 - }, - "Paltpath": { - "field": "m_paltpath", - "classname": "CPathTrack", - "type": 24 - }, - "Radius": { - "field": "m_flRadius", - "type": 8 - }, - "Length": { - "field": "m_length", - "type": 8 - }, - "AltName": { - "field": "m_altName", - "type": 13 - }, - "IterVal": { - "field": "m_nIterVal", - "type": 2 - }, - "OrientationType": { - "field": "m_eOrientationType", - "type": 6 - }, - "OnPass": { - "field": "m_OnPass", - "classname": "CEntityIOOutput", - "type": 16 - }, - "Parent": { - "field": "CPointEntity", - "type": 11 - } - }, - "CPhysBallSocket": { - "JointFriction": { - "field": "m_flJointFriction", - "type": 8 - }, - "EnableSwingLimit": { - "field": "m_bEnableSwingLimit", - "type": 10 - }, - "SwingLimit": { - "field": "m_flSwingLimit", - "type": 8 - }, - "EnableTwistLimit": { - "field": "m_bEnableTwistLimit", - "type": 10 - }, - "MinTwistAngle": { - "field": "m_flMinTwistAngle", - "type": 8 - }, - "MaxTwistAngle": { - "field": "m_flMaxTwistAngle", - "type": 8 - }, - "Parent": { - "field": "CPhysConstraint", - "type": 11 - } - }, - "CPhysBox": { - "DamageType": { - "field": "m_damageType", - "type": 2 - }, - "DamageToEnableMotion": { - "field": "m_damageToEnableMotion", - "type": 2 - }, - "ForceToEnableMotion": { - "field": "m_flForceToEnableMotion", - "type": 8 - }, - "PreferredCarryAngles": { - "field": "m_angPreferredCarryAngles", - "type": 20 - }, - "NotSolidToWorld": { - "field": "m_bNotSolidToWorld", - "type": 10 - }, - "EnableUseOutput": { - "field": "m_bEnableUseOutput", - "type": 10 - }, - "ExploitableByPlayer": { - "field": "m_iExploitableByPlayer", - "type": 2 - }, - "TouchOutputPerEntityDelay": { - "field": "m_flTouchOutputPerEntityDelay", - "type": 8 - }, - "OnDamaged": { - "field": "m_OnDamaged", - "classname": "CEntityIOOutput", - "type": 16 - }, - "OnAwakened": { - "field": "m_OnAwakened", - "classname": "CEntityIOOutput", - "type": 16 - }, - "OnMotionEnabled": { - "field": "m_OnMotionEnabled", - "classname": "CEntityIOOutput", - "type": 16 - }, - "OnPlayerUse": { - "field": "m_OnPlayerUse", - "classname": "CEntityIOOutput", - "type": 16 - }, - "OnStartTouch": { - "field": "m_OnStartTouch", - "classname": "CEntityIOOutput", - "type": 16 - }, - "CarryingPlayer": { - "field": "m_hCarryingPlayer", - "type": 17, - "classname": "CBasePlayerPawn" - }, - "Parent": { - "field": "CBreakable", - "type": 11 - } - }, - "CPhysConstraint": { - "NameAttach1": { - "field": "m_nameAttach1", - "type": 13 - }, - "NameAttach2": { - "field": "m_nameAttach2", - "type": 13 - }, - "Attach1": { - "field": "m_hAttach1", - "type": 17, - "classname": "CBaseEntity" - }, - "Attach2": { - "field": "m_hAttach2", - "type": 17, - "classname": "CBaseEntity" - }, - "NameAttachment1": { - "field": "m_nameAttachment1", - "type": 13 - }, - "NameAttachment2": { - "field": "m_nameAttachment2", - "type": 13 - }, - "BreakSound": { - "field": "m_breakSound", - "type": 13 - }, - "ForceLimit": { - "field": "m_forceLimit", - "type": 8 - }, - "TorqueLimit": { - "field": "m_torqueLimit", - "type": 8 - }, - "TeleportTick": { - "field": "m_teleportTick", - "type": 6 - }, - "MinTeleportDistance": { - "field": "m_minTeleportDistance", - "type": 8 - }, - "SnapObjectPositions": { - "field": "m_bSnapObjectPositions", - "type": 10 - }, - "OnBreak": { - "field": "m_OnBreak", - "classname": "CEntityIOOutput", - "type": 16 - }, - "Parent": { - "field": "CLogicalEntity", - "type": 11 - } - }, - "CPhysExplosion": { - "ExplodeOnSpawn": { - "field": "m_bExplodeOnSpawn", - "type": 10 - }, - "Magnitude": { - "field": "m_flMagnitude", - "type": 8 - }, - "Damage": { - "field": "m_flDamage", - "type": 8 - }, - "Radius": { - "field": "m_radius", - "type": 8 - }, - "TargetEntityName": { - "field": "m_targetEntityName", - "type": 13 - }, - "InnerRadius": { - "field": "m_flInnerRadius", - "type": 8 - }, - "PushScale": { - "field": "m_flPushScale", - "type": 8 - }, - "ConvertToDebrisWhenPossible": { - "field": "m_bConvertToDebrisWhenPossible", - "type": 10 - }, - "OnPushedPlayer": { - "field": "m_OnPushedPlayer", - "classname": "CEntityIOOutput", - "type": 16 - }, - "Parent": { - "field": "CPointEntity", - "type": 11 - } - }, - "CPhysFixed": { - "LinearFrequency": { - "field": "m_flLinearFrequency", - "type": 8 - }, - "LinearDampingRatio": { - "field": "m_flLinearDampingRatio", - "type": 8 - }, - "AngularFrequency": { - "field": "m_flAngularFrequency", - "type": 8 - }, - "AngularDampingRatio": { - "field": "m_flAngularDampingRatio", - "type": 8 - }, - "EnableLinearConstraint": { - "field": "m_bEnableLinearConstraint", - "type": 10 - }, - "EnableAngularConstraint": { - "field": "m_bEnableAngularConstraint", - "type": 10 - }, - "Parent": { - "field": "CPhysConstraint", - "type": 11 - } - }, - "CPhysForce": { - "NameAttach": { - "field": "m_nameAttach", - "type": 13 - }, - "Force": { - "field": "m_force", - "type": 8 - }, - "ForceTime": { - "field": "m_forceTime", - "type": 8 - }, - "AttachedObject": { - "field": "m_attachedObject", - "type": 17, - "classname": "CBaseEntity" - }, - "WasRestored": { - "field": "m_wasRestored", - "type": 10 - }, - "Integrator": { - "field": "m_integrator", - "classname": "CConstantForceController", - "type": 16 - }, - "Parent": { - "field": "CPointEntity", - "type": 11 - } - }, - "CPhysHinge": { - "SoundInfo": { - "field": "m_soundInfo", - "classname": "ConstraintSoundInfo", - "type": 16 - }, - "NotifyMinLimitReached": { - "field": "m_NotifyMinLimitReached", - "classname": "CEntityIOOutput", - "type": 16 - }, - "NotifyMaxLimitReached": { - "field": "m_NotifyMaxLimitReached", - "classname": "CEntityIOOutput", - "type": 16 - }, - "AtMinLimit": { - "field": "m_bAtMinLimit", - "type": 10 - }, - "AtMaxLimit": { - "field": "m_bAtMaxLimit", - "type": 10 - }, - "Hinge": { - "field": "m_hinge", - "classname": "constraint_hingeparams_t", - "type": 16 - }, - "HingeFriction": { - "field": "m_hingeFriction", - "type": 8 - }, - "SystemLoadScale": { - "field": "m_systemLoadScale", - "type": 8 - }, - "IsAxisLocal": { - "field": "m_bIsAxisLocal", - "type": 10 - }, - "MinRotation": { - "field": "m_flMinRotation", - "type": 8 - }, - "MaxRotation": { - "field": "m_flMaxRotation", - "type": 8 - }, - "InitialRotation": { - "field": "m_flInitialRotation", - "type": 8 - }, - "MotorFrequency": { - "field": "m_flMotorFrequency", - "type": 8 - }, - "MotorDampingRatio": { - "field": "m_flMotorDampingRatio", - "type": 8 - }, - "AngleSpeed": { - "field": "m_flAngleSpeed", - "type": 8 - }, - "AngleSpeedThreshold": { - "field": "m_flAngleSpeedThreshold", - "type": 8 - }, - "OnStartMoving": { - "field": "m_OnStartMoving", - "classname": "CEntityIOOutput", - "type": 16 - }, - "OnStopMoving": { - "field": "m_OnStopMoving", - "classname": "CEntityIOOutput", - "type": 16 - }, - "Parent": { - "field": "CPhysConstraint", - "type": 11 - } - }, - "CPhysHingeAlias_phys_hinge_local": { - "Parent": { - "field": "CPhysHinge", - "type": 11 - } - }, - "CPhysImpact": { - "Damage": { - "field": "m_damage", - "type": 8 - }, - "Distance": { - "field": "m_distance", - "type": 8 - }, - "DirectionEntityName": { - "field": "m_directionEntityName", - "type": 13 - }, - "Parent": { - "field": "CPointEntity", - "type": 11 - } - }, - "CPhysLength": { - "Offset": { - "field": "m_offset", - "type": 42, - "size": 2 - }, - "Attach": { - "field": "m_vecAttach", - "type": 21 - }, - "AddLength": { - "field": "m_addLength", - "type": 8 - }, - "MinLength": { - "field": "m_minLength", - "type": 8 - }, - "TotalLength": { - "field": "m_totalLength", - "type": 8 - }, - "EnableCollision": { - "field": "m_bEnableCollision", - "type": 10 - }, - "Parent": { - "field": "CPhysConstraint", - "type": 11 - } - }, - "CPhysMagnet": { - "OnMagnetAttach": { - "field": "m_OnMagnetAttach", - "classname": "CEntityIOOutput", - "type": 16 - }, - "OnMagnetDetach": { - "field": "m_OnMagnetDetach", - "classname": "CEntityIOOutput", - "type": 16 - }, - "MassScale": { - "field": "m_massScale", - "type": 8 - }, - "ForceLimit": { - "field": "m_forceLimit", - "type": 8 - }, - "TorqueLimit": { - "field": "m_torqueLimit", - "type": 8 - }, - "Active": { - "field": "m_bActive", - "type": 10 - }, - "HasHitSomething": { - "field": "m_bHasHitSomething", - "type": 10 - }, - "TotalMass": { - "field": "m_flTotalMass", - "type": 8 - }, - "Radius": { - "field": "m_flRadius", - "type": 8 - }, - "NextSuckTime": { - "field": "m_flNextSuckTime", - "type": 8 - }, - "MaxObjectsAttached": { - "field": "m_iMaxObjectsAttached", - "type": 2 - }, - "Parent": { - "field": "CBaseAnimGraph", - "type": 11 - } - }, - "CPhysMotor": { - "NameAttach": { - "field": "m_nameAttach", - "type": 13 - }, - "AttachedObject": { - "field": "m_hAttachedObject", - "type": 17, - "classname": "CBaseEntity" - }, - "SpinUp": { - "field": "m_spinUp", - "type": 8 - }, - "AdditionalAcceleration": { - "field": "m_additionalAcceleration", - "type": 8 - }, - "AngularAcceleration": { - "field": "m_angularAcceleration", - "type": 8 - }, - "LastTime": { - "field": "m_lastTime", - "type": 8 - }, - "Motor": { - "field": "m_motor", - "classname": "CMotorController", - "type": 16 - }, - "Parent": { - "field": "CLogicalEntity", - "type": 11 - } - }, - "CPhysPulley": { - "Position2": { - "field": "m_position2", - "type": 21 - }, - "Offset": { - "field": "m_offset", - "type": 42, - "size": 2 - }, - "AddLength": { - "field": "m_addLength", - "type": 8 - }, - "GearRatio": { - "field": "m_gearRatio", - "type": 8 - }, - "Parent": { - "field": "CPhysConstraint", - "type": 11 - } - }, - "CPhysSlideConstraint": { - "AxisEnd": { - "field": "m_axisEnd", - "type": 21 - }, - "SlideFriction": { - "field": "m_slideFriction", - "type": 8 - }, - "SystemLoadScale": { - "field": "m_systemLoadScale", - "type": 8 - }, - "InitialOffset": { - "field": "m_initialOffset", - "type": 8 - }, - "EnableLinearConstraint": { - "field": "m_bEnableLinearConstraint", - "type": 10 - }, - "EnableAngularConstraint": { - "field": "m_bEnableAngularConstraint", - "type": 10 - }, - "MotorFrequency": { - "field": "m_flMotorFrequency", - "type": 8 - }, - "MotorDampingRatio": { - "field": "m_flMotorDampingRatio", - "type": 8 - }, - "UseEntityPivot": { - "field": "m_bUseEntityPivot", - "type": 10 - }, - "SoundInfo": { - "field": "m_soundInfo", - "classname": "ConstraintSoundInfo", - "type": 16 - }, - "Parent": { - "field": "CPhysConstraint", - "type": 11 - } - }, - "CPhysThruster": { - "LocalOrigin": { - "field": "m_localOrigin", - "type": 21 - }, - "Parent": { - "field": "CPhysForce", - "type": 11 - } - }, - "CPhysTorque": { - "Axis": { - "field": "m_axis", - "type": 21 - }, - "Parent": { - "field": "CPhysForce", - "type": 11 - } - }, - "CPhysWheelConstraint": { - "SuspensionFrequency": { - "field": "m_flSuspensionFrequency", - "type": 8 - }, - "SuspensionDampingRatio": { - "field": "m_flSuspensionDampingRatio", - "type": 8 - }, - "SuspensionHeightOffset": { - "field": "m_flSuspensionHeightOffset", - "type": 8 - }, - "EnableSuspensionLimit": { - "field": "m_bEnableSuspensionLimit", - "type": 10 - }, - "MinSuspensionOffset": { - "field": "m_flMinSuspensionOffset", - "type": 8 - }, - "MaxSuspensionOffset": { - "field": "m_flMaxSuspensionOffset", - "type": 8 - }, - "EnableSteeringLimit": { - "field": "m_bEnableSteeringLimit", - "type": 10 - }, - "MinSteeringAngle": { - "field": "m_flMinSteeringAngle", - "type": 8 - }, - "MaxSteeringAngle": { - "field": "m_flMaxSteeringAngle", - "type": 8 - }, - "SteeringAxisFriction": { - "field": "m_flSteeringAxisFriction", - "type": 8 - }, - "SpinAxisFriction": { - "field": "m_flSpinAxisFriction", - "type": 8 - }, - "Parent": { - "field": "CPhysConstraint", - "type": 11 - } - }, - "CPhysicalButton": { - "Parent": { - "field": "CBaseButton", - "type": 11 - } - }, - "CPhysicsEntitySolver": { - "MovingEntity": { - "field": "m_hMovingEntity", - "type": 17, - "classname": "CBaseEntity" - }, - "PhysicsBlocker": { - "field": "m_hPhysicsBlocker", - "type": 17, - "classname": "CBaseEntity" - }, - "SeparationDuration": { - "field": "m_separationDuration", - "type": 8 - }, - "CancelTime": { - "field": "m_cancelTime", - "type": 8 - }, - "Parent": { - "field": "CLogicalEntity", - "type": 11 - } - }, - "CPhysicsProp": { - "MotionEnabled": { - "field": "m_MotionEnabled", - "classname": "CEntityIOOutput", - "type": 16 - }, - "OnAwakened": { - "field": "m_OnAwakened", - "classname": "CEntityIOOutput", - "type": 16 - }, - "OnAwake": { - "field": "m_OnAwake", - "classname": "CEntityIOOutput", - "type": 16 - }, - "OnAsleep": { - "field": "m_OnAsleep", - "classname": "CEntityIOOutput", - "type": 16 - }, - "OnPlayerUse": { - "field": "m_OnPlayerUse", - "classname": "CEntityIOOutput", - "type": 16 - }, - "OnOutOfWorld": { - "field": "m_OnOutOfWorld", - "classname": "CEntityIOOutput", - "type": 16 - }, - "OnPlayerPickup": { - "field": "m_OnPlayerPickup", - "classname": "CEntityIOOutput", - "type": 16 - }, - "ForceNavIgnore": { - "field": "m_bForceNavIgnore", - "type": 10 - }, - "NoNavmeshBlocker": { - "field": "m_bNoNavmeshBlocker", - "type": 10 - }, - "ForceNpcExclude": { - "field": "m_bForceNpcExclude", - "type": 10 - }, - "MassScale": { - "field": "m_massScale", - "type": 8 - }, - "InertiaScale": { - "field": "m_inertiaScale", - "type": 8 - }, - "BuoyancyScale": { - "field": "m_buoyancyScale", - "type": 8 - }, - "DamageType": { - "field": "m_damageType", - "type": 2 - }, - "DamageToEnableMotion": { - "field": "m_damageToEnableMotion", - "type": 2 - }, - "ForceToEnableMotion": { - "field": "m_flForceToEnableMotion", - "type": 8 - }, - "ThrownByPlayer": { - "field": "m_bThrownByPlayer", - "type": 10 - }, - "DroppedByPlayer": { - "field": "m_bDroppedByPlayer", - "type": 10 - }, - "TouchedByPlayer": { - "field": "m_bTouchedByPlayer", - "type": 10 - }, - "FirstCollisionAfterLaunch": { - "field": "m_bFirstCollisionAfterLaunch", - "type": 10 - }, - "ExploitableByPlayer": { - "field": "m_iExploitableByPlayer", - "type": 2 - }, - "HasBeenAwakened": { - "field": "m_bHasBeenAwakened", - "type": 10 - }, - "IsOverrideProp": { - "field": "m_bIsOverrideProp", - "type": 10 - }, - "NextCheckDisableMotionContactsTime": { - "field": "m_fNextCheckDisableMotionContactsTime", - "type": 8 - }, - "InitialGlowState": { - "field": "m_iInitialGlowState", - "type": 2 - }, - "GlowRange": { - "field": "m_nGlowRange", - "type": 2 - }, - "GlowRangeMin": { - "field": "m_nGlowRangeMin", - "type": 2 - }, - "GlowColor": { - "field": "m_glowColor", - "type": 19 - }, - "ShouldAutoConvertBackFromDebris": { - "field": "m_bShouldAutoConvertBackFromDebris", - "type": 10 - }, - "MuteImpactEffects": { - "field": "m_bMuteImpactEffects", - "type": 10 - }, - "AcceptDamageFromHeldObjects": { - "field": "m_bAcceptDamageFromHeldObjects", - "type": 10 - }, - "EnableUseOutput": { - "field": "m_bEnableUseOutput", - "type": 10 - }, - "CrateType": { - "field": "m_CrateType", - "type": 6 - }, - "StrItemClass": { - "field": "m_strItemClass", - "type": 26, - "size": 4 - }, - "ItemCount": { - "field": "m_nItemCount", - "type": 31, - "size": 4 - }, - "RemovableForAmmoBalancing": { - "field": "m_bRemovableForAmmoBalancing", - "type": 10 - }, - "Awake": { - "field": "m_bAwake", - "type": 10 - }, - "Parent": { - "field": "CBreakableProp", - "type": 11 - } - }, - "CPhysicsPropMultiplayer": { - "Parent": { - "field": "CPhysicsProp", - "type": 11 - } - }, - "CPhysicsPropOverride": { - "Parent": { - "field": "CPhysicsProp", - "type": 11 - } - }, - "CPhysicsPropRespawnable": { - "OriginalSpawnOrigin": { - "field": "m_vOriginalSpawnOrigin", - "type": 21 - }, - "OriginalSpawnAngles": { - "field": "m_vOriginalSpawnAngles", - "type": 20 - }, - "OriginalMins": { - "field": "m_vOriginalMins", - "type": 21 - }, - "OriginalMaxs": { - "field": "m_vOriginalMaxs", - "type": 21 - }, - "RespawnDuration": { - "field": "m_flRespawnDuration", - "type": 8 - }, - "Parent": { - "field": "CPhysicsProp", - "type": 11 - } - }, - "CPhysicsShake": { - "Force": { - "field": "m_force", - "type": 21 - } - }, - "CPhysicsSpring": { - "Frequency": { - "field": "m_flFrequency", - "type": 8 - }, - "DampingRatio": { - "field": "m_flDampingRatio", - "type": 8 - }, - "RestLength": { - "field": "m_flRestLength", - "type": 8 - }, - "NameAttachStart": { - "field": "m_nameAttachStart", - "type": 13 - }, - "NameAttachEnd": { - "field": "m_nameAttachEnd", - "type": 13 - }, - "Start": { - "field": "m_start", - "type": 21 - }, - "End": { - "field": "m_end", - "type": 21 - }, - "TeleportTick": { - "field": "m_teleportTick", - "type": 6 - }, - "Parent": { - "field": "CBaseEntity", - "type": 11 - } - }, - "CPhysicsWire": { - "Density": { - "field": "m_nDensity", - "type": 2 - }, - "Parent": { - "field": "CBaseEntity", - "type": 11 - } - }, - "CPlantedC4": { - "BombTicking": { - "field": "m_bBombTicking", - "type": 10 - }, - "C4Blow": { - "field": "m_flC4Blow", - "type": 8 - }, - "BombSite": { - "field": "m_nBombSite", - "type": 2 - }, - "SourceSoundscapeHash": { - "field": "m_nSourceSoundscapeHash", - "type": 2 - }, - "AttributeManager": { - "field": "m_AttributeManager", - "classname": "CAttributeContainer", - "type": 16 - }, - "OnBombDefused": { - "field": "m_OnBombDefused", - "classname": "CEntityIOOutput", - "type": 16 - }, - "OnBombBeginDefuse": { - "field": "m_OnBombBeginDefuse", - "classname": "CEntityIOOutput", - "type": 16 - }, - "OnBombDefuseAborted": { - "field": "m_OnBombDefuseAborted", - "classname": "CEntityIOOutput", - "type": 16 - }, - "CannotBeDefused": { - "field": "m_bCannotBeDefused", - "type": 10 - }, - "EntitySpottedState": { - "field": "m_entitySpottedState", - "classname": "EntitySpottedState_t", - "type": 16 - }, - "SpotRules": { - "field": "m_nSpotRules", - "type": 2 - }, - "TrainingPlacedByPlayer": { - "field": "m_bTrainingPlacedByPlayer", - "type": 10 - }, - "HasExploded": { - "field": "m_bHasExploded", - "type": 10 - }, - "TimerLength": { - "field": "m_flTimerLength", - "type": 8 - }, - "BeingDefused": { - "field": "m_bBeingDefused", - "type": 10 - }, - "LastDefuseTime": { - "field": "m_fLastDefuseTime", - "type": 8 - }, - "DefuseLength": { - "field": "m_flDefuseLength", - "type": 8 - }, - "DefuseCountDown": { - "field": "m_flDefuseCountDown", - "type": 8 - }, - "BombDefused": { - "field": "m_bBombDefused", - "type": 10 - }, - "BombDefuser": { - "field": "m_hBombDefuser", - "type": 17, - "classname": "CCSPlayerPawn" - }, - "ControlPanel": { - "field": "m_hControlPanel", - "type": 17, - "classname": "CBaseEntity" - }, - "ProgressBarTime": { - "field": "m_iProgressBarTime", - "type": 2 - }, - "VoiceAlertFired": { - "field": "m_bVoiceAlertFired", - "type": 10 - }, - "VoiceAlertPlayed": { - "field": "m_bVoiceAlertPlayed", - "type": 39, - "size": 4 - }, - "NextBotBeepTime": { - "field": "m_flNextBotBeepTime", - "type": 8 - }, - "CatchUpToPlayerEye": { - "field": "m_angCatchUpToPlayerEye", - "type": 20 - }, - "LastSpinDetectionTime": { - "field": "m_flLastSpinDetectionTime", - "type": 8 - }, - "Parent": { - "field": "CBaseAnimGraph", - "type": 11 - } - }, - "CPlatTrigger": { - "Platform": { - "field": "m_pPlatform", - "type": 17, - "classname": "CFuncPlat" - }, - "Parent": { - "field": "CBaseModelEntity", - "type": 11 - } - }, - "CPlayerPing": { - "Player": { - "field": "m_hPlayer", - "type": 17, - "classname": "CCSPlayerPawn" - }, - "PingedEntity": { - "field": "m_hPingedEntity", - "type": 17, - "classname": "CBaseEntity" - }, - "Type": { - "field": "m_iType", - "type": 2 - }, - "Urgent": { - "field": "m_bUrgent", - "type": 10 - }, - "PlaceName": { - "field": "m_szPlaceName", - "type": 15, - "size": 18 - }, - "Parent": { - "field": "CBaseEntity", - "type": 11 - } - }, - "CPlayerSprayDecal": { - "UniqueID": { - "field": "m_nUniqueID", - "type": 2 - }, - "AccountID": { - "field": "m_unAccountID", - "type": 6 - }, - "TraceID": { - "field": "m_unTraceID", - "type": 6 - }, - "RtGcTime": { - "field": "m_rtGcTime", - "type": 6 - }, - "EndPos": { - "field": "m_vecEndPos", - "type": 21 - }, - "Start": { - "field": "m_vecStart", - "type": 21 - }, - "Left": { - "field": "m_vecLeft", - "type": 21 - }, - "Normal": { - "field": "m_vecNormal", - "type": 21 - }, - "Player": { - "field": "m_nPlayer", - "type": 2 - }, - "Entity": { - "field": "m_nEntity", - "type": 2 - }, - "Hitbox": { - "field": "m_nHitbox", - "type": 2 - }, - "CreationTime": { - "field": "m_flCreationTime", - "type": 8 - }, - "TintID": { - "field": "m_nTintID", - "type": 2 - }, - "Version": { - "field": "m_nVersion", - "type": 4 - }, - "Signature": { - "field": "m_ubSignature", - "type": 33, - "size": 128 - }, - "Parent": { - "field": "CModelPointEntity", - "type": 11 - } - }, - "CPlayerVisibility": { - "VisibilityStrength": { - "field": "m_flVisibilityStrength", - "type": 8 - }, - "FogDistanceMultiplier": { - "field": "m_flFogDistanceMultiplier", - "type": 8 - }, - "FogMaxDensityMultiplier": { - "field": "m_flFogMaxDensityMultiplier", - "type": 8 - }, - "FadeTime": { - "field": "m_flFadeTime", - "type": 8 - }, - "StartDisabled": { - "field": "m_bStartDisabled", - "type": 10 - }, - "IsEnabled": { - "field": "m_bIsEnabled", - "type": 10 - }, - "Parent": { - "field": "CBaseEntity", - "type": 11 - } - }, - "CPointAngleSensor": { - "Disabled": { - "field": "m_bDisabled", - "type": 10 - }, - "LookAtName": { - "field": "m_nLookAtName", - "type": 13 - }, - "TargetEntity": { - "field": "m_hTargetEntity", - "type": 17, - "classname": "CBaseEntity" - }, - "LookAtEntity": { - "field": "m_hLookAtEntity", - "type": 17, - "classname": "CBaseEntity" - }, - "Duration": { - "field": "m_flDuration", - "type": 8 - }, - "DotTolerance": { - "field": "m_flDotTolerance", - "type": 8 - }, - "FacingTime": { - "field": "m_flFacingTime", - "type": 8 - }, - "Fired": { - "field": "m_bFired", - "type": 10 - }, - "OnFacingLookat": { - "field": "m_OnFacingLookat", - "classname": "CEntityIOOutput", - "type": 16 - }, - "OnNotFacingLookat": { - "field": "m_OnNotFacingLookat", - "classname": "CEntityIOOutput", - "type": 16 - }, - "Parent": { - "field": "CPointEntity", - "type": 11 - } - }, - "CPointAngularVelocitySensor": { - "TargetEntity": { - "field": "m_hTargetEntity", - "type": 17, - "classname": "CBaseEntity" - }, - "Threshold": { - "field": "m_flThreshold", - "type": 8 - }, - "LastCompareResult": { - "field": "m_nLastCompareResult", - "type": 2 - }, - "LastFireResult": { - "field": "m_nLastFireResult", - "type": 2 - }, - "FireTime": { - "field": "m_flFireTime", - "type": 8 - }, - "FireInterval": { - "field": "m_flFireInterval", - "type": 8 - }, - "LastAngVelocity": { - "field": "m_flLastAngVelocity", - "type": 8 - }, - "LastOrientation": { - "field": "m_lastOrientation", - "type": 20 - }, - "Axis": { - "field": "m_vecAxis", - "type": 21 - }, - "UseHelper": { - "field": "m_bUseHelper", - "type": 10 - }, - "OnLessThan": { - "field": "m_OnLessThan", - "classname": "CEntityIOOutput", - "type": 16 - }, - "OnLessThanOrEqualTo": { - "field": "m_OnLessThanOrEqualTo", - "classname": "CEntityIOOutput", - "type": 16 - }, - "OnGreaterThan": { - "field": "m_OnGreaterThan", - "classname": "CEntityIOOutput", - "type": 16 - }, - "OnGreaterThanOrEqualTo": { - "field": "m_OnGreaterThanOrEqualTo", - "classname": "CEntityIOOutput", - "type": 16 - }, - "OnEqualTo": { - "field": "m_OnEqualTo", - "classname": "CEntityIOOutput", - "type": 16 - }, - "Parent": { - "field": "CPointEntity", - "type": 11 - } - }, - "CPointBroadcastClientCommand": { - "Parent": { - "field": "CPointEntity", - "type": 11 - } - }, - "CPointCamera": { - "FOV": { - "field": "m_FOV", - "type": 8 - }, - "Resolution": { - "field": "m_Resolution", - "type": 8 - }, - "FogEnable": { - "field": "m_bFogEnable", - "type": 10 - }, - "FogColor": { - "field": "m_FogColor", - "type": 19 - }, - "FogStart": { - "field": "m_flFogStart", - "type": 8 - }, - "FogEnd": { - "field": "m_flFogEnd", - "type": 8 - }, - "FogMaxDensity": { - "field": "m_flFogMaxDensity", - "type": 8 - }, - "Active": { - "field": "m_bActive", - "type": 10 - }, - "UseScreenAspectRatio": { - "field": "m_bUseScreenAspectRatio", - "type": 10 - }, - "AspectRatio": { - "field": "m_flAspectRatio", - "type": 8 - }, - "NoSky": { - "field": "m_bNoSky", - "type": 10 - }, - "Brightness": { - "field": "m_fBrightness", - "type": 8 - }, - "ZFar": { - "field": "m_flZFar", - "type": 8 - }, - "ZNear": { - "field": "m_flZNear", - "type": 8 - }, - "CanHLTVUse": { - "field": "m_bCanHLTVUse", - "type": 10 - }, - "AlignWithParent": { - "field": "m_bAlignWithParent", - "type": 10 - }, - "DofEnabled": { - "field": "m_bDofEnabled", - "type": 10 - }, - "DofNearBlurry": { - "field": "m_flDofNearBlurry", - "type": 8 - }, - "DofNearCrisp": { - "field": "m_flDofNearCrisp", - "type": 8 - }, - "DofFarCrisp": { - "field": "m_flDofFarCrisp", - "type": 8 - }, - "DofFarBlurry": { - "field": "m_flDofFarBlurry", - "type": 8 - }, - "DofTiltToGround": { - "field": "m_flDofTiltToGround", - "type": 8 - }, - "TargetFOV": { - "field": "m_TargetFOV", - "type": 8 - }, - "DegreesPerSecond": { - "field": "m_DegreesPerSecond", - "type": 8 - }, - "IsOn": { - "field": "m_bIsOn", - "type": 10 - }, - "Next": { - "field": "m_pNext", - "classname": "CPointCamera", - "type": 24 - }, - "Parent": { - "field": "CBaseEntity", - "type": 11 - } - }, - "CPointCameraVFOV": { - "VerticalFOV": { - "field": "m_flVerticalFOV", - "type": 8 - }, - "Parent": { - "field": "CPointCamera", - "type": 11 - } - }, - "CPointClientCommand": { - "Parent": { - "field": "CPointEntity", - "type": 11 - } - }, - "CPointClientUIDialog": { - "Activator": { - "field": "m_hActivator", - "type": 17, - "classname": "CBaseEntity" - }, - "StartEnabled": { - "field": "m_bStartEnabled", - "type": 10 - }, - "Parent": { - "field": "CBaseClientUIEntity", - "type": 11 - } - }, - "CPointClientUIWorldPanel": { - "IgnoreInput": { - "field": "m_bIgnoreInput", - "type": 10 - }, - "Lit": { - "field": "m_bLit", - "type": 10 - }, - "FollowPlayerAcrossTeleport": { - "field": "m_bFollowPlayerAcrossTeleport", - "type": 10 - }, - "Width": { - "field": "m_flWidth", - "type": 8 - }, - "Height": { - "field": "m_flHeight", - "type": 8 - }, - "DPI": { - "field": "m_flDPI", - "type": 8 - }, - "InteractDistance": { - "field": "m_flInteractDistance", - "type": 8 - }, - "DepthOffset": { - "field": "m_flDepthOffset", - "type": 8 - }, - "OwnerContext": { - "field": "m_unOwnerContext", - "type": 6 - }, - "HorizontalAlign": { - "field": "m_unHorizontalAlign", - "type": 6 - }, - "VerticalAlign": { - "field": "m_unVerticalAlign", - "type": 6 - }, - "Orientation": { - "field": "m_unOrientation", - "type": 6 - }, - "AllowInteractionFromAllSceneWorlds": { - "field": "m_bAllowInteractionFromAllSceneWorlds", - "type": 10 - }, - "CSSClasses": { - "field": "m_vecCSSClasses", - "type": 48 - }, - "Opaque": { - "field": "m_bOpaque", - "type": 10 - }, - "NoDepth": { - "field": "m_bNoDepth", - "type": 10 - }, - "RenderBackface": { - "field": "m_bRenderBackface", - "type": 10 - }, - "UseOffScreenIndicator": { - "field": "m_bUseOffScreenIndicator", - "type": 10 - }, - "ExcludeFromSaveGames": { - "field": "m_bExcludeFromSaveGames", - "type": 10 - }, - "Grabbable": { - "field": "m_bGrabbable", - "type": 10 - }, - "OnlyRenderToTexture": { - "field": "m_bOnlyRenderToTexture", - "type": 10 - }, - "DisableMipGen": { - "field": "m_bDisableMipGen", - "type": 10 - }, - "ExplicitImageLayout": { - "field": "m_nExplicitImageLayout", - "type": 2 - }, - "Parent": { - "field": "CBaseClientUIEntity", - "type": 11 - } - }, - "CPointClientUIWorldTextPanel": { - "MessageText": { - "field": "m_messageText", - "type": 15, - "size": 512 - }, - "Parent": { - "field": "CPointClientUIWorldPanel", - "type": 11 - } - }, - "CPointEntity": { - "Parent": { - "field": "CBaseEntity", - "type": 11 - } - }, - "CPointEntityFinder": { - "Entity": { - "field": "m_hEntity", - "type": 17, - "classname": "CBaseEntity" - }, - "FilterName": { - "field": "m_iFilterName", - "type": 13 - }, - "Filter": { - "field": "m_hFilter", - "type": 17, - "classname": "CBaseFilter" - }, - "RefName": { - "field": "m_iRefName", - "type": 13 - }, - "Reference": { - "field": "m_hReference", - "type": 17, - "classname": "CBaseEntity" - }, - "FindMethod": { - "field": "m_FindMethod", - "type": 6 - }, - "OnFoundEntity": { - "field": "m_OnFoundEntity", - "classname": "CEntityIOOutput", - "type": 16 - }, - "Parent": { - "field": "CBaseEntity", - "type": 11 - } - }, - "CPointGamestatsCounter": { - "StrStatisticName": { - "field": "m_strStatisticName", - "type": 13 - }, - "Disabled": { - "field": "m_bDisabled", - "type": 10 - }, - "Parent": { - "field": "CPointEntity", - "type": 11 - } - }, - "CPointGiveAmmo": { - "Activator": { - "field": "m_pActivator", - "type": 17, - "classname": "CBaseEntity" - }, - "Parent": { - "field": "CPointEntity", - "type": 11 - } - }, - "CPointHurt": { - "Damage": { - "field": "m_nDamage", - "type": 2 - }, - "BitsDamageType": { - "field": "m_bitsDamageType", - "type": 6 - }, - "Radius": { - "field": "m_flRadius", - "type": 8 - }, - "Delay": { - "field": "m_flDelay", - "type": 8 - }, - "StrTarget": { - "field": "m_strTarget", - "type": 13 - }, - "Activator": { - "field": "m_pActivator", - "type": 17, - "classname": "CBaseEntity" - }, - "Parent": { - "field": "CPointEntity", - "type": 11 - } - }, - "CPointPrefab": { - "TargetMapName": { - "field": "m_targetMapName", - "type": 13 - }, - "ForceWorldGroupID": { - "field": "m_forceWorldGroupID", - "type": 13 - }, - "AssociatedRelayTargetName": { - "field": "m_associatedRelayTargetName", - "type": 13 - }, - "FixupNames": { - "field": "m_fixupNames", - "type": 10 - }, - "LoadDynamic": { - "field": "m_bLoadDynamic", - "type": 10 - }, - "AssociatedRelayEntity": { - "field": "m_associatedRelayEntity", - "type": 17, - "classname": "CPointPrefab" - }, - "Parent": { - "field": "CServerOnlyPointEntity", - "type": 11 - } - }, - "CPointProximitySensor": { - "Disabled": { - "field": "m_bDisabled", - "type": 10 - }, - "TargetEntity": { - "field": "m_hTargetEntity", - "type": 17, - "classname": "CBaseEntity" - }, - "Parent": { - "field": "CPointEntity", - "type": 11 - } - }, - "CPointPush": { - "Enabled": { - "field": "m_bEnabled", - "type": 10 - }, - "Magnitude": { - "field": "m_flMagnitude", - "type": 8 - }, - "Radius": { - "field": "m_flRadius", - "type": 8 - }, - "InnerRadius": { - "field": "m_flInnerRadius", - "type": 8 - }, - "ConeOfInfluence": { - "field": "m_flConeOfInfluence", - "type": 8 - }, - "FilterName": { - "field": "m_iszFilterName", - "type": 13 - }, - "Filter": { - "field": "m_hFilter", - "type": 17, - "classname": "CBaseFilter" - }, - "Parent": { - "field": "CPointEntity", - "type": 11 - } - }, - "CPointServerCommand": { - "Parent": { - "field": "CPointEntity", - "type": 11 - } - }, - "CPointTeleport": { - "SaveOrigin": { - "field": "m_vSaveOrigin", - "type": 21 - }, - "SaveAngles": { - "field": "m_vSaveAngles", - "type": 20 - }, - "TeleportParentedEntities": { - "field": "m_bTeleportParentedEntities", - "type": 10 - }, - "TeleportUseCurrentAngle": { - "field": "m_bTeleportUseCurrentAngle", - "type": 10 - }, - "Parent": { - "field": "CServerOnlyPointEntity", - "type": 11 - } - }, - "CPointValueRemapper": { - "Disabled": { - "field": "m_bDisabled", - "type": 10 - }, - "UpdateOnClient": { - "field": "m_bUpdateOnClient", - "type": 10 - }, - "InputType": { - "field": "m_nInputType", - "type": 6 - }, - "RemapLineStartName": { - "field": "m_iszRemapLineStartName", - "type": 13 - }, - "RemapLineEndName": { - "field": "m_iszRemapLineEndName", - "type": 13 - }, - "RemapLineStart": { - "field": "m_hRemapLineStart", - "type": 17, - "classname": "CBaseEntity" - }, - "RemapLineEnd": { - "field": "m_hRemapLineEnd", - "type": 17, - "classname": "CBaseEntity" - }, - "MaximumChangePerSecond": { - "field": "m_flMaximumChangePerSecond", - "type": 8 - }, - "DisengageDistance": { - "field": "m_flDisengageDistance", - "type": 8 - }, - "EngageDistance": { - "field": "m_flEngageDistance", - "type": 8 - }, - "RequiresUseKey": { - "field": "m_bRequiresUseKey", - "type": 10 - }, - "OutputType": { - "field": "m_nOutputType", - "type": 6 - }, - "OutputEntityName": { - "field": "m_iszOutputEntityName", - "type": 13 - }, - "OutputEntity2Name": { - "field": "m_iszOutputEntity2Name", - "type": 13 - }, - "OutputEntity3Name": { - "field": "m_iszOutputEntity3Name", - "type": 13 - }, - "OutputEntity4Name": { - "field": "m_iszOutputEntity4Name", - "type": 13 - }, - "HapticsType": { - "field": "m_nHapticsType", - "type": 6 - }, - "MomentumType": { - "field": "m_nMomentumType", - "type": 6 - }, - "MomentumModifier": { - "field": "m_flMomentumModifier", - "type": 8 - }, - "SnapValue": { - "field": "m_flSnapValue", - "type": 8 - }, - "CurrentMomentum": { - "field": "m_flCurrentMomentum", - "type": 8 - }, - "RatchetType": { - "field": "m_nRatchetType", - "type": 6 - }, - "RatchetOffset": { - "field": "m_flRatchetOffset", - "type": 8 - }, - "InputOffset": { - "field": "m_flInputOffset", - "type": 8 - }, - "Engaged": { - "field": "m_bEngaged", - "type": 10 - }, - "FirstUpdate": { - "field": "m_bFirstUpdate", - "type": 10 - }, - "PreviousValue": { - "field": "m_flPreviousValue", - "type": 8 - }, - "PreviousUpdateTickTime": { - "field": "m_flPreviousUpdateTickTime", - "type": 8 - }, - "PreviousTestPoint": { - "field": "m_vecPreviousTestPoint", - "type": 21 - }, - "UsingPlayer": { - "field": "m_hUsingPlayer", - "type": 17, - "classname": "CBasePlayerPawn" - }, - "CustomOutputValue": { - "field": "m_flCustomOutputValue", - "type": 8 - }, - "SoundEngage": { - "field": "m_iszSoundEngage", - "type": 13 - }, - "SoundDisengage": { - "field": "m_iszSoundDisengage", - "type": 13 - }, - "SoundReachedValueZero": { - "field": "m_iszSoundReachedValueZero", - "type": 13 - }, - "SoundReachedValueOne": { - "field": "m_iszSoundReachedValueOne", - "type": 13 - }, - "SoundMovingLoop": { - "field": "m_iszSoundMovingLoop", - "type": 13 - }, - "OnReachedValueZero": { - "field": "m_OnReachedValueZero", - "classname": "CEntityIOOutput", - "type": 16 - }, - "OnReachedValueOne": { - "field": "m_OnReachedValueOne", - "classname": "CEntityIOOutput", - "type": 16 - }, - "OnReachedValueCustom": { - "field": "m_OnReachedValueCustom", - "classname": "CEntityIOOutput", - "type": 16 - }, - "OnEngage": { - "field": "m_OnEngage", - "classname": "CEntityIOOutput", - "type": 16 - }, - "OnDisengage": { - "field": "m_OnDisengage", - "classname": "CEntityIOOutput", - "type": 16 - }, - "Parent": { - "field": "CBaseEntity", - "type": 11 - } - }, - "CPointVelocitySensor": { - "TargetEntity": { - "field": "m_hTargetEntity", - "type": 17, - "classname": "CBaseEntity" - }, - "Axis": { - "field": "m_vecAxis", - "type": 21 - }, - "Enabled": { - "field": "m_bEnabled", - "type": 10 - }, - "PrevVelocity": { - "field": "m_fPrevVelocity", - "type": 8 - }, - "AvgInterval": { - "field": "m_flAvgInterval", - "type": 8 - }, - "Parent": { - "field": "CPointEntity", - "type": 11 - } - }, - "CPointWorldText": { - "MessageText": { - "field": "m_messageText", - "type": 15, - "size": 512 - }, - "FontName": { - "field": "m_FontName", - "type": 15, - "size": 64 - }, - "BackgroundMaterialName": { - "field": "m_BackgroundMaterialName", - "type": 15, - "size": 64 - }, - "Enabled": { - "field": "m_bEnabled", - "type": 10 - }, - "Fullbright": { - "field": "m_bFullbright", - "type": 10 - }, - "WorldUnitsPerPx": { - "field": "m_flWorldUnitsPerPx", - "type": 8 - }, - "FontSize": { - "field": "m_flFontSize", - "type": 8 - }, - "DepthOffset": { - "field": "m_flDepthOffset", - "type": 8 - }, - "DrawBackground": { - "field": "m_bDrawBackground", - "type": 10 - }, - "BackgroundBorderWidth": { - "field": "m_flBackgroundBorderWidth", - "type": 8 - }, - "BackgroundBorderHeight": { - "field": "m_flBackgroundBorderHeight", - "type": 8 - }, - "BackgroundWorldToUV": { - "field": "m_flBackgroundWorldToUV", - "type": 8 - }, - "Color": { - "field": "m_Color", - "type": 19 - }, - "JustifyHorizontal": { - "field": "m_nJustifyHorizontal", - "type": 6 - }, - "JustifyVertical": { - "field": "m_nJustifyVertical", - "type": 6 - }, - "ReorientMode": { - "field": "m_nReorientMode", - "type": 6 - }, - "Parent": { - "field": "CModelPointEntity", - "type": 11 - } - }, - "CPostProcessingVolume": { - "FadeDuration": { - "field": "m_flFadeDuration", - "type": 8 - }, - "MinLogExposure": { - "field": "m_flMinLogExposure", - "type": 8 - }, - "MaxLogExposure": { - "field": "m_flMaxLogExposure", - "type": 8 - }, - "MinExposure": { - "field": "m_flMinExposure", - "type": 8 - }, - "MaxExposure": { - "field": "m_flMaxExposure", - "type": 8 - }, - "ExposureCompensation": { - "field": "m_flExposureCompensation", - "type": 8 - }, - "ExposureFadeSpeedUp": { - "field": "m_flExposureFadeSpeedUp", - "type": 8 - }, - "ExposureFadeSpeedDown": { - "field": "m_flExposureFadeSpeedDown", - "type": 8 - }, - "TonemapEVSmoothingRange": { - "field": "m_flTonemapEVSmoothingRange", - "type": 8 - }, - "Master": { - "field": "m_bMaster", - "type": 10 - }, - "ExposureControl": { - "field": "m_bExposureControl", - "type": 10 - }, - "Rate": { - "field": "m_flRate", - "type": 8 - }, - "TonemapPercentTarget": { - "field": "m_flTonemapPercentTarget", - "type": 8 - }, - "TonemapPercentBrightPixels": { - "field": "m_flTonemapPercentBrightPixels", - "type": 8 - }, - "TonemapMinAvgLum": { - "field": "m_flTonemapMinAvgLum", - "type": 8 - }, - "Parent": { - "field": "CBaseTrigger", - "type": 11 - } - }, - "CPrecipitation": { - "Parent": { - "field": "CBaseTrigger", - "type": 11 - } - }, - "CPrecipitationBlocker": { - "Parent": { - "field": "CBaseModelEntity", - "type": 11 - } - }, - "CPredictedViewModel": { - "Parent": { - "field": "CBaseViewModel", - "type": 11 - } - }, - "CProjectedDecal": { - "Texture": { - "field": "m_nTexture", - "type": 2 - }, - "Distance": { - "field": "m_flDistance", - "type": 8 - }, - "Parent": { - "field": "CPointEntity", - "type": 11 - } - }, - "CPropDoorRotating": { - "Axis": { - "field": "m_vecAxis", - "type": 21 - }, - "Distance": { - "field": "m_flDistance", - "type": 8 - }, - "SpawnPosition": { - "field": "m_eSpawnPosition", - "type": 6 - }, - "OpenDirection": { - "field": "m_eOpenDirection", - "type": 6 - }, - "CurrentOpenDirection": { - "field": "m_eCurrentOpenDirection", - "type": 6 - }, - "AjarAngle": { - "field": "m_flAjarAngle", - "type": 8 - }, - "RotationAjarDeprecated": { - "field": "m_angRotationAjarDeprecated", - "type": 20 - }, - "RotationClosed": { - "field": "m_angRotationClosed", - "type": 20 - }, - "RotationOpenForward": { - "field": "m_angRotationOpenForward", - "type": 20 - }, - "RotationOpenBack": { - "field": "m_angRotationOpenBack", - "type": 20 - }, - "Goal": { - "field": "m_angGoal", - "type": 20 - }, - "ForwardBoundsMin": { - "field": "m_vecForwardBoundsMin", - "type": 21 - }, - "ForwardBoundsMax": { - "field": "m_vecForwardBoundsMax", - "type": 21 - }, - "BackBoundsMin": { - "field": "m_vecBackBoundsMin", - "type": 21 - }, - "BackBoundsMax": { - "field": "m_vecBackBoundsMax", - "type": 21 - }, - "AjarDoorShouldntAlwaysOpen": { - "field": "m_bAjarDoorShouldntAlwaysOpen", - "type": 10 - }, - "EntityBlocker": { - "field": "m_hEntityBlocker", - "type": 17, - "classname": "CEntityBlocker" - }, - "Parent": { - "field": "CBasePropDoor", - "type": 11 - } - }, - "CPropDoorRotatingBreakable": { - "Breakable": { - "field": "m_bBreakable", - "type": 10 - }, - "IsAbleToCloseAreaPortals": { - "field": "m_isAbleToCloseAreaPortals", - "type": 10 - }, - "CurrentDamageState": { - "field": "m_currentDamageState", - "type": 2 - }, - "DamageStates": { - "field": "m_damageStates", - "type": 48 - }, - "Parent": { - "field": "CPropDoorRotating", - "type": 11 - } - }, - "CPushable": { - "Parent": { - "field": "CBreakable", - "type": 11 - } - }, - "CRagdollConstraint": { - "Xmin": { - "field": "m_xmin", - "type": 8 - }, - "Xmax": { - "field": "m_xmax", - "type": 8 - }, - "Ymin": { - "field": "m_ymin", - "type": 8 - }, - "Ymax": { - "field": "m_ymax", - "type": 8 - }, - "Zmin": { - "field": "m_zmin", - "type": 8 - }, - "Zmax": { - "field": "m_zmax", - "type": 8 - }, - "Xfriction": { - "field": "m_xfriction", - "type": 8 - }, - "Yfriction": { - "field": "m_yfriction", - "type": 8 - }, - "Zfriction": { - "field": "m_zfriction", - "type": 8 - }, - "Parent": { - "field": "CPhysConstraint", - "type": 11 - } - }, - "CRagdollMagnet": { - "Disabled": { - "field": "m_bDisabled", - "type": 10 - }, - "Radius": { - "field": "m_radius", - "type": 8 - }, - "Force": { - "field": "m_force", - "type": 8 - }, - "Axis": { - "field": "m_axis", - "type": 21 - }, - "Parent": { - "field": "CPointEntity", - "type": 11 - } - }, - "CRagdollProp": { - "Ragdoll": { - "field": "m_ragdoll", - "classname": "ragdoll_t", - "type": 16 - }, - "StartDisabled": { - "field": "m_bStartDisabled", - "type": 10 - }, - "RagPos": { - "field": "m_ragPos", - "type": 63 - }, - "RagAngles": { - "field": "m_ragAngles", - "type": 62 - }, - "RagdollSource": { - "field": "m_hRagdollSource", - "type": 17, - "classname": "CBaseEntity" - }, - "LastUpdateTickCount": { - "field": "m_lastUpdateTickCount", - "type": 6 - }, - "AllAsleep": { - "field": "m_allAsleep", - "type": 10 - }, - "FirstCollisionAfterLaunch": { - "field": "m_bFirstCollisionAfterLaunch", - "type": 10 - }, - "DamageEntity": { - "field": "m_hDamageEntity", - "type": 17, - "classname": "CBaseEntity" - }, - "Killer": { - "field": "m_hKiller", - "type": 17, - "classname": "CBaseEntity" - }, - "PhysicsAttacker": { - "field": "m_hPhysicsAttacker", - "type": 17, - "classname": "CBasePlayerPawn" - }, - "LastPhysicsInfluenceTime": { - "field": "m_flLastPhysicsInfluenceTime", - "type": 8 - }, - "FadeOutStartTime": { - "field": "m_flFadeOutStartTime", - "type": 8 - }, - "FadeTime": { - "field": "m_flFadeTime", - "type": 8 - }, - "LastOrigin": { - "field": "m_vecLastOrigin", - "type": 21 - }, - "AwakeTime": { - "field": "m_flAwakeTime", - "type": 8 - }, - "LastOriginChangeTime": { - "field": "m_flLastOriginChangeTime", - "type": 8 - }, - "StrOriginClassName": { - "field": "m_strOriginClassName", - "type": 13 - }, - "StrSourceClassName": { - "field": "m_strSourceClassName", - "type": 13 - }, - "HasBeenPhysgunned": { - "field": "m_bHasBeenPhysgunned", - "type": 10 - }, - "ShouldTeleportPhysics": { - "field": "m_bShouldTeleportPhysics", - "type": 10 - }, - "BlendWeight": { - "field": "m_flBlendWeight", - "type": 8 - }, - "DefaultFadeScale": { - "field": "m_flDefaultFadeScale", - "type": 8 - }, - "RagdollMins": { - "field": "m_ragdollMins", - "type": 63 - }, - "RagdollMaxs": { - "field": "m_ragdollMaxs", - "type": 63 - }, - "ShouldDeleteActivationRecord": { - "field": "m_bShouldDeleteActivationRecord", - "type": 10 - }, - "ValidatePoweredRagdollPose": { - "field": "m_bValidatePoweredRagdollPose", - "type": 10 - }, - "Parent": { - "field": "CBaseAnimGraph", - "type": 11 - } - }, - "CRagdollPropAlias_physics_prop_ragdoll": { - "Parent": { - "field": "CRagdollProp", - "type": 11 - } - }, - "CRagdollPropAttached": { - "BoneIndexAttached": { - "field": "m_boneIndexAttached", - "type": 6 - }, - "RagdollAttachedObjectIndex": { - "field": "m_ragdollAttachedObjectIndex", - "type": 6 - }, - "AttachmentPointBoneSpace": { - "field": "m_attachmentPointBoneSpace", - "type": 21 - }, - "AttachmentPointRagdollSpace": { - "field": "m_attachmentPointRagdollSpace", - "type": 21 - }, - "ShouldDetach": { - "field": "m_bShouldDetach", - "type": 10 - }, - "ShouldDeleteAttachedActivationRecord": { - "field": "m_bShouldDeleteAttachedActivationRecord", - "type": 10 - }, - "Parent": { - "field": "CRagdollProp", - "type": 11 - } - }, - "CRectLight": { - "ShowLight": { - "field": "m_bShowLight", - "type": 10 - }, - "Parent": { - "field": "CBarnLight", - "type": 11 - } - }, - "CResponseQueue": {}, - "CRetakeGameRules": { - "MatchSeed": { - "field": "m_nMatchSeed", - "type": 2 - }, - "BlockersPresent": { - "field": "m_bBlockersPresent", - "type": 10 - }, - "RoundInProgress": { - "field": "m_bRoundInProgress", - "type": 10 - }, - "FirstSecondHalfRound": { - "field": "m_iFirstSecondHalfRound", - "type": 2 - }, - "BombSite": { - "field": "m_iBombSite", - "type": 2 - } - }, - "CRevertSaved": { - "LoadTime": { - "field": "m_loadTime", - "type": 8 - }, - "Duration": { - "field": "m_Duration", - "type": 8 - }, - "HoldTime": { - "field": "m_HoldTime", - "type": 8 - }, - "Parent": { - "field": "CModelPointEntity", - "type": 11 - } - }, - "CRopeKeyframe": { - "RopeFlags": { - "field": "m_RopeFlags", - "type": 5 - }, - "NextLinkName": { - "field": "m_iNextLinkName", - "type": 13 - }, - "Slack": { - "field": "m_Slack", - "type": 1 - }, - "Width": { - "field": "m_Width", - "type": 8 - }, - "TextureScale": { - "field": "m_TextureScale", - "type": 8 - }, - "Segments": { - "field": "m_nSegments", - "type": 4 - }, - "ConstrainBetweenEndpoints": { - "field": "m_bConstrainBetweenEndpoints", - "type": 10 - }, - "StrRopeMaterialModel": { - "field": "m_strRopeMaterialModel", - "type": 13 - }, - "Subdiv": { - "field": "m_Subdiv", - "type": 4 - }, - "ChangeCount": { - "field": "m_nChangeCount", - "type": 4 - }, - "RopeLength": { - "field": "m_RopeLength", - "type": 1 - }, - "LockedPoints": { - "field": "m_fLockedPoints", - "type": 4 - }, - "CreatedFromMapFile": { - "field": "m_bCreatedFromMapFile", - "type": 10 - }, - "ScrollSpeed": { - "field": "m_flScrollSpeed", - "type": 8 - }, - "StartPointValid": { - "field": "m_bStartPointValid", - "type": 10 - }, - "EndPointValid": { - "field": "m_bEndPointValid", - "type": 10 - }, - "StartPoint": { - "field": "m_hStartPoint", - "type": 17, - "classname": "CBaseEntity" - }, - "EndPoint": { - "field": "m_hEndPoint", - "type": 17, - "classname": "CBaseEntity" - }, - "Parent": { - "field": "CBaseModelEntity", - "type": 11 - } - }, - "CRopeKeyframeAlias_move_rope": { - "Parent": { - "field": "CRopeKeyframe", - "type": 11 - } - }, - "CRotButton": { - "Parent": { - "field": "CBaseButton", - "type": 11 - } - }, - "CRotDoor": { - "SolidBsp": { - "field": "m_bSolidBsp", - "type": 10 - }, - "Parent": { - "field": "CBaseDoor", - "type": 11 - } - }, - "CRuleBrushEntity": { - "Parent": { - "field": "CRuleEntity", - "type": 11 - } - }, - "CRuleEntity": { - "Master": { - "field": "m_iszMaster", - "type": 13 - }, - "Parent": { - "field": "CBaseModelEntity", - "type": 11 - } - }, - "CRulePointEntity": { - "Score": { - "field": "m_Score", - "type": 2 - }, - "Parent": { - "field": "CRuleEntity", - "type": 11 - } - }, - "CSAdditionalMatchStats_t": { - "NumRoundsSurvived": { - "field": "m_numRoundsSurvived", - "type": 2 - }, - "MaxNumRoundsSurvived": { - "field": "m_maxNumRoundsSurvived", - "type": 2 - }, - "NumRoundsSurvivedTotal": { - "field": "m_numRoundsSurvivedTotal", - "type": 2 - }, - "RoundsWonWithoutPurchase": { - "field": "m_iRoundsWonWithoutPurchase", - "type": 2 - }, - "RoundsWonWithoutPurchaseTotal": { - "field": "m_iRoundsWonWithoutPurchaseTotal", - "type": 2 - }, - "NumFirstKills": { - "field": "m_numFirstKills", - "type": 2 - }, - "NumClutchKills": { - "field": "m_numClutchKills", - "type": 2 - }, - "NumPistolKills": { - "field": "m_numPistolKills", - "type": 2 - }, - "NumSniperKills": { - "field": "m_numSniperKills", - "type": 2 - }, - "NumSuicides": { - "field": "m_iNumSuicides", - "type": 2 - }, - "NumTeamKills": { - "field": "m_iNumTeamKills", - "type": 2 - }, - "TeamDamage": { - "field": "m_iTeamDamage", - "type": 2 - }, - "Parent": { - "field": "CSAdditionalPerRoundStats_t", - "type": 11 - } - }, - "CSAdditionalPerRoundStats_t": { - "NumChickensKilled": { - "field": "m_numChickensKilled", - "type": 2 - }, - "KillsWhileBlind": { - "field": "m_killsWhileBlind", - "type": 2 - }, - "BombCarrierkills": { - "field": "m_bombCarrierkills", - "type": 2 - }, - "BurnDamageInflicted": { - "field": "m_iBurnDamageInflicted", - "type": 2 - }, - "BlastDamageInflicted": { - "field": "m_iBlastDamageInflicted", - "type": 2 - }, - "Dinks": { - "field": "m_iDinks", - "type": 2 - } - }, - "CSceneEntity": { - "SceneFile": { - "field": "m_iszSceneFile", - "type": 13 - }, - "ResumeSceneFile": { - "field": "m_iszResumeSceneFile", - "type": 13 - }, - "Target1": { - "field": "m_iszTarget1", - "type": 13 - }, - "Target2": { - "field": "m_iszTarget2", - "type": 13 - }, - "Target3": { - "field": "m_iszTarget3", - "type": 13 - }, - "Target4": { - "field": "m_iszTarget4", - "type": 13 - }, - "Target5": { - "field": "m_iszTarget5", - "type": 13 - }, - "Target6": { - "field": "m_iszTarget6", - "type": 13 - }, - "Target7": { - "field": "m_iszTarget7", - "type": 13 - }, - "Target8": { - "field": "m_iszTarget8", - "type": 13 - }, - "Target11": { - "field": "m_hTarget1", - "type": 17, - "classname": "CBaseEntity" - }, - "Target21": { - "field": "m_hTarget2", - "type": 17, - "classname": "CBaseEntity" - }, - "Target31": { - "field": "m_hTarget3", - "type": 17, - "classname": "CBaseEntity" - }, - "Target41": { - "field": "m_hTarget4", - "type": 17, - "classname": "CBaseEntity" - }, - "Target51": { - "field": "m_hTarget5", - "type": 17, - "classname": "CBaseEntity" - }, - "Target61": { - "field": "m_hTarget6", - "type": 17, - "classname": "CBaseEntity" - }, - "Target71": { - "field": "m_hTarget7", - "type": 17, - "classname": "CBaseEntity" - }, - "Target81": { - "field": "m_hTarget8", - "type": 17, - "classname": "CBaseEntity" - }, - "TargetAttachment": { - "field": "m_sTargetAttachment", - "type": 13 - }, - "IsPlayingBack": { - "field": "m_bIsPlayingBack", - "type": 10 - }, - "Paused": { - "field": "m_bPaused", - "type": 10 - }, - "Multiplayer": { - "field": "m_bMultiplayer", - "type": 10 - }, - "Autogenerated": { - "field": "m_bAutogenerated", - "type": 10 - }, - "ForceClientTime": { - "field": "m_flForceClientTime", - "type": 8 - }, - "CurrentTime": { - "field": "m_flCurrentTime", - "type": 8 - }, - "FrameTime": { - "field": "m_flFrameTime", - "type": 8 - }, - "CancelAtNextInterrupt": { - "field": "m_bCancelAtNextInterrupt", - "type": 10 - }, - "Pitch": { - "field": "m_fPitch", - "type": 8 - }, - "Automated": { - "field": "m_bAutomated", - "type": 10 - }, - "AutomatedAction": { - "field": "m_nAutomatedAction", - "type": 2 - }, - "AutomationDelay": { - "field": "m_flAutomationDelay", - "type": 8 - }, - "AutomationTime": { - "field": "m_flAutomationTime", - "type": 8 - }, - "WaitingForThisResumeScene": { - "field": "m_hWaitingForThisResumeScene", - "type": 17, - "classname": "CBaseEntity" - }, - "WaitingForResumeScene": { - "field": "m_bWaitingForResumeScene", - "type": 10 - }, - "PausedViaInput": { - "field": "m_bPausedViaInput", - "type": 10 - }, - "PauseAtNextInterrupt": { - "field": "m_bPauseAtNextInterrupt", - "type": 10 - }, - "WaitingForActor": { - "field": "m_bWaitingForActor", - "type": 10 - }, - "WaitingForInterrupt": { - "field": "m_bWaitingForInterrupt", - "type": 10 - }, - "InterruptedActorsScenes": { - "field": "m_bInterruptedActorsScenes", - "type": 10 - }, - "BreakOnNonIdle": { - "field": "m_bBreakOnNonIdle", - "type": 10 - }, - "SceneFinished": { - "field": "m_bSceneFinished", - "type": 10 - }, - "SceneFlushCounter": { - "field": "m_nSceneFlushCounter", - "type": 2 - }, - "SceneStringIndex": { - "field": "m_nSceneStringIndex", - "type": 5 - }, - "OnStart": { - "field": "m_OnStart", - "classname": "CEntityIOOutput", - "type": 16 - }, - "OnCompletion": { - "field": "m_OnCompletion", - "classname": "CEntityIOOutput", - "type": 16 - }, - "OnCanceled": { - "field": "m_OnCanceled", - "classname": "CEntityIOOutput", - "type": 16 - }, - "OnPaused": { - "field": "m_OnPaused", - "classname": "CEntityIOOutput", - "type": 16 - }, - "OnResumed": { - "field": "m_OnResumed", - "classname": "CEntityIOOutput", - "type": 16 - }, - "OnTrigger": { - "field": "m_OnTrigger", - "type": 45, - "size": 16 - }, - "InterruptScene": { - "field": "m_hInterruptScene", - "type": 17, - "classname": "CSceneEntity" - }, - "InterruptCount": { - "field": "m_nInterruptCount", - "type": 2 - }, - "SceneMissing": { - "field": "m_bSceneMissing", - "type": 10 - }, - "Interrupted": { - "field": "m_bInterrupted", - "type": 10 - }, - "CompletedEarly": { - "field": "m_bCompletedEarly", - "type": 10 - }, - "InterruptSceneFinished": { - "field": "m_bInterruptSceneFinished", - "type": 10 - }, - "Restoring": { - "field": "m_bRestoring", - "type": 10 - }, - "SoundName": { - "field": "m_iszSoundName", - "type": 13 - }, - "SequenceName": { - "field": "m_iszSequenceName", - "type": 13 - }, - "Actor": { - "field": "m_hActor", - "type": 17, - "classname": "CBaseFlex" - }, - "Activator": { - "field": "m_hActivator", - "type": 17, - "classname": "CBaseEntity" - }, - "BusyActor": { - "field": "m_BusyActor", - "type": 2 - }, - "PlayerDeathBehavior": { - "field": "m_iPlayerDeathBehavior", - "type": 6 - }, - "Parent": { - "field": "CPointEntity", - "type": 11 - } - }, - "CSceneEntityAlias_logic_choreographed_scene": { - "Parent": { - "field": "CSceneEntity", - "type": 11 - } - }, - "CSceneListManager": { - "Scenes": { - "field": "m_iszScenes", - "type": 26, - "size": 16 - }, - "Scenes1": { - "field": "m_hScenes", - "type": 46, - "size": 16 - }, - "Parent": { - "field": "CLogicalEntity", - "type": 11 - } - }, - "CScriptItem": { - "MoveTypeOverride": { - "field": "m_MoveTypeOverride", - "type": 4 - }, - "Parent": { - "field": "CItem", - "type": 11 - } - }, - "CScriptNavBlocker": { - "Extent": { - "field": "m_vExtent", - "type": 21 - }, - "Parent": { - "field": "CFuncNavBlocker", - "type": 11 - } - }, - "CScriptTriggerHurt": { - "Extent": { - "field": "m_vExtent", - "type": 21 - }, - "Parent": { - "field": "CTriggerHurt", - "type": 11 - } - }, - "CScriptTriggerMultiple": { - "Extent": { - "field": "m_vExtent", - "type": 21 - }, - "Parent": { - "field": "CTriggerMultiple", - "type": 11 - } - }, - "CScriptTriggerOnce": { - "Extent": { - "field": "m_vExtent", - "type": 21 - }, - "Parent": { - "field": "CTriggerOnce", - "type": 11 - } - }, - "CScriptTriggerPush": { - "Extent": { - "field": "m_vExtent", - "type": 21 - }, - "Parent": { - "field": "CTriggerPush", - "type": 11 - } - }, - "CScriptedSequence": { - "Entry": { - "field": "m_iszEntry", - "type": 13 - }, - "PreIdle": { - "field": "m_iszPreIdle", - "type": 13 - }, - "Play": { - "field": "m_iszPlay", - "type": 13 - }, - "PostIdle": { - "field": "m_iszPostIdle", - "type": 13 - }, - "ModifierToAddOnPlay": { - "field": "m_iszModifierToAddOnPlay", - "type": 13 - }, - "NextScript": { - "field": "m_iszNextScript", - "type": 13 - }, - "Entity": { - "field": "m_iszEntity", - "type": 13 - }, - "SyncGroup": { - "field": "m_iszSyncGroup", - "type": 13 - }, - "MoveTo": { - "field": "m_nMoveTo", - "type": 6 - }, - "MoveToGait": { - "field": "m_nMoveToGait", - "type": 4 - }, - "HeldWeaponBehavior": { - "field": "m_nHeldWeaponBehavior", - "type": 6 - }, - "IsPlayingPreIdle": { - "field": "m_bIsPlayingPreIdle", - "type": 10 - }, - "IsPlayingEntry": { - "field": "m_bIsPlayingEntry", - "type": 10 - }, - "IsPlayingAction": { - "field": "m_bIsPlayingAction", - "type": 10 - }, - "IsPlayingPostIdle": { - "field": "m_bIsPlayingPostIdle", - "type": 10 - }, - "DontRotateOther": { - "field": "m_bDontRotateOther", - "type": 10 - }, - "IsRepeatable": { - "field": "m_bIsRepeatable", - "type": 10 - }, - "ShouldLeaveCorpse": { - "field": "m_bShouldLeaveCorpse", - "type": 10 - }, - "StartOnSpawn": { - "field": "m_bStartOnSpawn", - "type": 10 - }, - "DisallowInterrupts": { - "field": "m_bDisallowInterrupts", - "type": 10 - }, - "CanOverrideNPCState": { - "field": "m_bCanOverrideNPCState", - "type": 10 - }, - "DontTeleportAtEnd": { - "field": "m_bDontTeleportAtEnd", - "type": 10 - }, - "HighPriority": { - "field": "m_bHighPriority", - "type": 10 - }, - "HideDebugComplaints": { - "field": "m_bHideDebugComplaints", - "type": 10 - }, - "ContinueOnDeath": { - "field": "m_bContinueOnDeath", - "type": 10 - }, - "LoopPreIdleSequence": { - "field": "m_bLoopPreIdleSequence", - "type": 10 - }, - "LoopActionSequence": { - "field": "m_bLoopActionSequence", - "type": 10 - }, - "LoopPostIdleSequence": { - "field": "m_bLoopPostIdleSequence", - "type": 10 - }, - "SynchPostIdles": { - "field": "m_bSynchPostIdles", - "type": 10 - }, - "IgnoreLookAt": { - "field": "m_bIgnoreLookAt", - "type": 10 - }, - "IgnoreGravity": { - "field": "m_bIgnoreGravity", - "type": 10 - }, - "DisableNPCCollisions": { - "field": "m_bDisableNPCCollisions", - "type": 10 - }, - "KeepAnimgraphLockedPost": { - "field": "m_bKeepAnimgraphLockedPost", - "type": 10 - }, - "DontAddModifiers": { - "field": "m_bDontAddModifiers", - "type": 10 - }, - "Radius": { - "field": "m_flRadius", - "type": 8 - }, - "Repeat": { - "field": "m_flRepeat", - "type": 8 - }, - "PlayAnimFadeInTime": { - "field": "m_flPlayAnimFadeInTime", - "type": 8 - }, - "MoveInterpTime": { - "field": "m_flMoveInterpTime", - "type": 8 - }, - "AngRate": { - "field": "m_flAngRate", - "type": 8 - }, - "WaitUntilMoveCompletesToStartAnimation": { - "field": "m_bWaitUntilMoveCompletesToStartAnimation", - "type": 10 - }, - "NotReadySequenceCount": { - "field": "m_nNotReadySequenceCount", - "type": 2 - }, - "StartTime": { - "field": "m_startTime", - "type": 8 - }, - "WaitForBeginSequence": { - "field": "m_bWaitForBeginSequence", - "type": 10 - }, - "Saved_effects": { - "field": "m_saved_effects", - "type": 2 - }, - "SavedFlags": { - "field": "m_savedFlags", - "type": 2 - }, - "SavedCollisionGroup": { - "field": "m_savedCollisionGroup", - "type": 2 - }, - "Interruptable": { - "field": "m_bInterruptable", - "type": 10 - }, - "SequenceStarted": { - "field": "m_sequenceStarted", - "type": 10 - }, - "PositionRelativeToOtherEntity": { - "field": "m_bPositionRelativeToOtherEntity", - "type": 10 - }, - "TargetEnt": { - "field": "m_hTargetEnt", - "type": 17, - "classname": "CBaseEntity" - }, - "NextCine": { - "field": "m_hNextCine", - "type": 17, - "classname": "CScriptedSequence" - }, - "Thinking": { - "field": "m_bThinking", - "type": 10 - }, - "InitiatedSelfDelete": { - "field": "m_bInitiatedSelfDelete", - "type": 10 - }, - "IsTeleportingDueToMoveTo": { - "field": "m_bIsTeleportingDueToMoveTo", - "type": 10 - }, - "AllowCustomInterruptConditions": { - "field": "m_bAllowCustomInterruptConditions", - "type": 10 - }, - "ForcedTarget": { - "field": "m_hForcedTarget", - "type": 17, - "classname": "CBaseAnimGraph" - }, - "DontCancelOtherSequences": { - "field": "m_bDontCancelOtherSequences", - "type": 10 - }, - "ForceSynch": { - "field": "m_bForceSynch", - "type": 10 - }, - "PreventUpdateYawOnFinish": { - "field": "m_bPreventUpdateYawOnFinish", - "type": 10 - }, - "EnsureOnNavmeshOnFinish": { - "field": "m_bEnsureOnNavmeshOnFinish", - "type": 10 - }, - "OnDeathBehavior": { - "field": "m_onDeathBehavior", - "type": 6 - }, - "ConflictResponse": { - "field": "m_ConflictResponse", - "type": 6 - }, - "OnBeginSequence": { - "field": "m_OnBeginSequence", - "classname": "CEntityIOOutput", - "type": 16 - }, - "OnActionStartOrLoop": { - "field": "m_OnActionStartOrLoop", - "classname": "CEntityIOOutput", - "type": 16 - }, - "OnEndSequence": { - "field": "m_OnEndSequence", - "classname": "CEntityIOOutput", - "type": 16 - }, - "OnPostIdleEndSequence": { - "field": "m_OnPostIdleEndSequence", - "classname": "CEntityIOOutput", - "type": 16 - }, - "OnCancelSequence": { - "field": "m_OnCancelSequence", - "classname": "CEntityIOOutput", - "type": 16 - }, - "OnCancelFailedSequence": { - "field": "m_OnCancelFailedSequence", - "classname": "CEntityIOOutput", - "type": 16 - }, - "OnScriptEvent": { - "field": "m_OnScriptEvent", - "type": 45, - "size": 8 - }, - "InteractionMainEntity": { - "field": "m_hInteractionMainEntity", - "type": 17, - "classname": "CBaseEntity" - }, - "PlayerDeathBehavior": { - "field": "m_iPlayerDeathBehavior", - "type": 2 - }, - "Parent": { - "field": "CBaseEntity", - "type": 11 - } - }, - "CSensorGrenade": { - "Parent": { - "field": "CBaseCSGrenade", - "type": 11 - } - }, - "CSensorGrenadeProjectile": { - "ExpireTime": { - "field": "m_fExpireTime", - "type": 8 - }, - "NextDetectPlayerSound": { - "field": "m_fNextDetectPlayerSound", - "type": 8 - }, - "DisplayGrenade": { - "field": "m_hDisplayGrenade", - "type": 17, - "classname": "CBaseEntity" - }, - "Parent": { - "field": "CBaseCSGrenadeProjectile", - "type": 11 - } - }, - "CServerOnlyEntity": { - "Parent": { - "field": "CBaseEntity", - "type": 11 - } - }, - "CServerOnlyPointEntity": { - "Parent": { - "field": "CServerOnlyEntity", - "type": 11 - } - }, - "CServerRagdollTrigger": { - "Parent": { - "field": "CBaseTrigger", - "type": 11 - } - }, - "CShatterGlassShard": { - "ShardHandle": { - "field": "m_hShardHandle", - "type": 6 - }, - "PanelVertices": { - "field": "m_vecPanelVertices", - "type": 64 - }, - "LocalPanelSpaceOrigin": { - "field": "m_vLocalPanelSpaceOrigin", - "type": 22 - }, - "PhysicsEntity": { - "field": "m_hPhysicsEntity", - "type": 17, - "classname": "CShatterGlassShardPhysics" - }, - "ParentPanel": { - "field": "m_hParentPanel", - "type": 17, - "classname": "CFuncShatterglass" - }, - "ParentShard": { - "field": "m_hParentShard", - "type": 6 - }, - "ShatterStressType": { - "field": "m_ShatterStressType", - "type": 4 - }, - "StressVelocity": { - "field": "m_vecStressVelocity", - "type": 21 - }, - "CreatedModel": { - "field": "m_bCreatedModel", - "type": 10 - }, - "LongestEdge": { - "field": "m_flLongestEdge", - "type": 8 - }, - "ShortestEdge": { - "field": "m_flShortestEdge", - "type": 8 - }, - "LongestAcross": { - "field": "m_flLongestAcross", - "type": 8 - }, - "ShortestAcross": { - "field": "m_flShortestAcross", - "type": 8 - }, - "SumOfAllEdges": { - "field": "m_flSumOfAllEdges", - "type": 8 - }, - "Area": { - "field": "m_flArea", - "type": 8 - }, - "OnFrameEdge": { - "field": "m_nOnFrameEdge", - "type": 4 - }, - "SubShardGeneration": { - "field": "m_nSubShardGeneration", - "type": 2 - }, - "AverageVertPosition": { - "field": "m_vecAverageVertPosition", - "type": 22 - }, - "AverageVertPositionIsValid": { - "field": "m_bAverageVertPositionIsValid", - "type": 10 - }, - "PanelSpaceStressPositionA": { - "field": "m_vecPanelSpaceStressPositionA", - "type": 22 - }, - "PanelSpaceStressPositionB": { - "field": "m_vecPanelSpaceStressPositionB", - "type": 22 - }, - "StressPositionAIsValid": { - "field": "m_bStressPositionAIsValid", - "type": 10 - }, - "StressPositionBIsValid": { - "field": "m_bStressPositionBIsValid", - "type": 10 - }, - "FlaggedForRemoval": { - "field": "m_bFlaggedForRemoval", - "type": 10 - }, - "PhysicsEntitySpawnedAtTime": { - "field": "m_flPhysicsEntitySpawnedAtTime", - "type": 8 - }, - "EntityHittingMe": { - "field": "m_hEntityHittingMe", - "type": 17, - "classname": "CBaseEntity" - }, - "Neighbors": { - "field": "m_vecNeighbors", - "type": 57 - } - }, - "CShatterGlassShardPhysics": { - "Debris": { - "field": "m_bDebris", - "type": 10 - }, - "ParentShard": { - "field": "m_hParentShard", - "type": 6 - }, - "ShardDesc": { - "field": "m_ShardDesc", - "classname": "shard_model_desc_t", - "type": 16 - }, - "Parent": { - "field": "CPhysicsProp", - "type": 11 - } - }, - "CShower": { - "Parent": { - "field": "CModelPointEntity", - "type": 11 - } - }, - "CSimpleMarkupVolumeTagged": { - "Parent": { - "field": "CMarkupVolumeTagged", - "type": 11 - } - }, - "CSingleplayRules": { - "SinglePlayerGameEnding": { - "field": "m_bSinglePlayerGameEnding", - "type": 10 - }, - "Parent": { - "field": "CGameRules", - "type": 11 - } - }, - "CSkyCamera": { - "SkyboxData": { - "field": "m_skyboxData", - "classname": "sky3dparams_t", - "type": 16 - }, - "SkyboxSlotToken": { - "field": "m_skyboxSlotToken", - "type": 12 - }, - "UseAngles": { - "field": "m_bUseAngles", - "type": 10 - }, - "Next": { - "field": "m_pNext", - "classname": "CSkyCamera", - "type": 24 - }, - "Parent": { - "field": "CBaseEntity", - "type": 11 - } - }, - "CSmokeGrenade": { - "Parent": { - "field": "CBaseCSGrenade", - "type": 11 - } - }, - "CSmokeGrenadeProjectile": { - "SmokeEffectTickBegin": { - "field": "m_nSmokeEffectTickBegin", - "type": 2 - }, - "DidSmokeEffect": { - "field": "m_bDidSmokeEffect", - "type": 10 - }, - "RandomSeed": { - "field": "m_nRandomSeed", - "type": 2 - }, - "SmokeColor": { - "field": "m_vSmokeColor", - "type": 21 - }, - "SmokeDetonationPos": { - "field": "m_vSmokeDetonationPos", - "type": 21 - }, - "VoxelFrameData": { - "field": "m_VoxelFrameData", - "type": 55 - }, - "VoxelFrameDataSize": { - "field": "m_nVoxelFrameDataSize", - "type": 2 - }, - "VoxelUpdate": { - "field": "m_nVoxelUpdate", - "type": 2 - }, - "LastBounce": { - "field": "m_flLastBounce", - "type": 8 - }, - "FllastSimulationTime": { - "field": "m_fllastSimulationTime", - "type": 8 - }, - "ExplodeFromInferno": { - "field": "m_bExplodeFromInferno", - "type": 10 - }, - "Parent": { - "field": "CBaseCSGrenadeProjectile", - "type": 11 - } - }, - "CSmoothFunc": { - "SmoothAmplitude": { - "field": "m_flSmoothAmplitude", - "type": 8 - }, - "SmoothBias": { - "field": "m_flSmoothBias", - "type": 8 - }, - "SmoothDuration": { - "field": "m_flSmoothDuration", - "type": 8 - }, - "SmoothRemainingTime": { - "field": "m_flSmoothRemainingTime", - "type": 8 - }, - "SmoothDir": { - "field": "m_nSmoothDir", - "type": 2 - } - }, - "CSound": { - "Owner": { - "field": "m_hOwner", - "type": 17, - "classname": "CBaseEntity" - }, - "Target": { - "field": "m_hTarget", - "type": 17, - "classname": "CBaseEntity" - }, - "Volume": { - "field": "m_iVolume", - "type": 2 - }, - "OcclusionScale": { - "field": "m_flOcclusionScale", - "type": 8 - }, - "NextAudible": { - "field": "m_iNextAudible", - "type": 2 - }, - "ExpireTime": { - "field": "m_flExpireTime", - "type": 8 - }, - "Next": { - "field": "m_iNext", - "type": 1 - }, - "NoExpirationTime": { - "field": "m_bNoExpirationTime", - "type": 10 - }, - "OwnerChannelIndex": { - "field": "m_ownerChannelIndex", - "type": 2 - }, - "Origin": { - "field": "m_vecOrigin", - "type": 21 - }, - "HasOwner": { - "field": "m_bHasOwner", - "type": 10 - } - }, - "CSoundAreaEntityBase": { - "Disabled": { - "field": "m_bDisabled", - "type": 10 - }, - "SoundAreaType": { - "field": "m_iszSoundAreaType", - "type": 13 - }, - "Pos": { - "field": "m_vPos", - "type": 21 - }, - "Parent": { - "field": "CBaseEntity", - "type": 11 - } - }, - "CSoundAreaEntityOrientedBox": { - "Min": { - "field": "m_vMin", - "type": 21 - }, - "Max": { - "field": "m_vMax", - "type": 21 - }, - "Parent": { - "field": "CSoundAreaEntityBase", - "type": 11 - } - }, - "CSoundAreaEntitySphere": { - "Radius": { - "field": "m_flRadius", - "type": 8 - }, - "Parent": { - "field": "CSoundAreaEntityBase", - "type": 11 - } - }, - "CSoundEnt": { - "FreeSound": { - "field": "m_iFreeSound", - "type": 2 - }, - "ActiveSound": { - "field": "m_iActiveSound", - "type": 2 - }, - "CLastActiveSounds": { - "field": "m_cLastActiveSounds", - "type": 2 - }, - "SoundPool": { - "field": "m_SoundPool", - "type": 45, - "size": 128 - }, - "Parent": { - "field": "CPointEntity", - "type": 11 - } - }, - "CSoundEventAABBEntity": { - "Mins": { - "field": "m_vMins", - "type": 21 - }, - "Maxs": { - "field": "m_vMaxs", - "type": 21 - }, - "Parent": { - "field": "CSoundEventEntity", - "type": 11 - } - }, - "CSoundEventEntity": { - "StartOnSpawn": { - "field": "m_bStartOnSpawn", - "type": 10 - }, - "ToLocalPlayer": { - "field": "m_bToLocalPlayer", - "type": 10 - }, - "StopOnNew": { - "field": "m_bStopOnNew", - "type": 10 - }, - "SaveRestore": { - "field": "m_bSaveRestore", - "type": 10 - }, - "SavedIsPlaying": { - "field": "m_bSavedIsPlaying", - "type": 10 - }, - "SavedElapsedTime": { - "field": "m_flSavedElapsedTime", - "type": 8 - }, - "SourceEntityName": { - "field": "m_iszSourceEntityName", - "type": 13 - }, - "AttachmentName": { - "field": "m_iszAttachmentName", - "type": 13 - }, - "OnSoundFinished": { - "field": "m_onSoundFinished", - "classname": "CEntityIOOutput", - "type": 16 - }, - "ClientCullRadius": { - "field": "m_flClientCullRadius", - "type": 8 - }, - "SoundName": { - "field": "m_iszSoundName", - "type": 13 - }, - "Source": { - "field": "m_hSource", - "type": 17, - "classname": "CEntityInstance" - }, - "EntityIndexSelection": { - "field": "m_nEntityIndexSelection", - "type": 2 - }, - "Parent": { - "field": "CBaseEntity", - "type": 11 - } - }, - "CSoundEventEntityAlias_snd_event_point": { - "Parent": { - "field": "CSoundEventEntity", - "type": 11 - } - }, - "CSoundEventOBBEntity": { - "Mins": { - "field": "m_vMins", - "type": 21 - }, - "Maxs": { - "field": "m_vMaxs", - "type": 21 - }, - "Parent": { - "field": "CSoundEventEntity", - "type": 11 - } - }, - "CSoundEventParameter": { - "ParamName": { - "field": "m_iszParamName", - "type": 13 - }, - "FloatValue": { - "field": "m_flFloatValue", - "type": 8 - }, - "Parent": { - "field": "CBaseEntity", - "type": 11 - } - }, - "CSoundEventPathCornerEntity": { - "PathCorner": { - "field": "m_iszPathCorner", - "type": 13 - }, - "CountMax": { - "field": "m_iCountMax", - "type": 2 - }, - "DistanceMax": { - "field": "m_flDistanceMax", - "type": 8 - }, - "DistMaxSqr": { - "field": "m_flDistMaxSqr", - "type": 8 - }, - "DotProductMax": { - "field": "m_flDotProductMax", - "type": 8 - }, - "Playing": { - "field": "m_bPlaying", - "type": 10 - }, - "Parent": { - "field": "CSoundEventEntity", - "type": 11 - } - }, - "CSoundEventSphereEntity": { - "Radius": { - "field": "m_flRadius", - "type": 8 - }, - "Parent": { - "field": "CSoundEventEntity", - "type": 11 - } - }, - "CSoundOpvarSetAABBEntity": { - "DistanceInnerMins": { - "field": "m_vDistanceInnerMins", - "type": 21 - }, - "DistanceInnerMaxs": { - "field": "m_vDistanceInnerMaxs", - "type": 21 - }, - "DistanceOuterMins": { - "field": "m_vDistanceOuterMins", - "type": 21 - }, - "DistanceOuterMaxs": { - "field": "m_vDistanceOuterMaxs", - "type": 21 - }, - "AABBDirection": { - "field": "m_nAABBDirection", - "type": 2 - }, - "InnerMins": { - "field": "m_vInnerMins", - "type": 21 - }, - "InnerMaxs": { - "field": "m_vInnerMaxs", - "type": 21 - }, - "OuterMins": { - "field": "m_vOuterMins", - "type": 21 - }, - "OuterMaxs": { - "field": "m_vOuterMaxs", - "type": 21 - }, - "Parent": { - "field": "CSoundOpvarSetPointEntity", - "type": 11 - } - }, - "CSoundOpvarSetAutoRoomEntity": { - "Size": { - "field": "m_flSize", - "type": 8 - }, - "HeightTolerance": { - "field": "m_flHeightTolerance", - "type": 8 - }, - "SizeSqr": { - "field": "m_flSizeSqr", - "type": 8 - }, - "Parent": { - "field": "CSoundOpvarSetPointEntity", - "type": 11 - } - }, - "CSoundOpvarSetEntity": { - "StackName": { - "field": "m_iszStackName", - "type": 13 - }, - "OperatorName": { - "field": "m_iszOperatorName", - "type": 13 - }, - "OpvarName": { - "field": "m_iszOpvarName", - "type": 13 - }, - "OpvarType": { - "field": "m_nOpvarType", - "type": 2 - }, - "OpvarIndex": { - "field": "m_nOpvarIndex", - "type": 2 - }, - "OpvarValue": { - "field": "m_flOpvarValue", - "type": 8 - }, - "OpvarValueString": { - "field": "m_OpvarValueString", - "type": 13 - }, - "SetOnSpawn": { - "field": "m_bSetOnSpawn", - "type": 10 - }, - "Parent": { - "field": "CBaseEntity", - "type": 11 - } - }, - "CSoundOpvarSetOBBEntity": { - "Parent": { - "field": "CSoundOpvarSetAABBEntity", - "type": 11 - } - }, - "CSoundOpvarSetOBBWindEntity": { - "Mins": { - "field": "m_vMins", - "type": 21 - }, - "Maxs": { - "field": "m_vMaxs", - "type": 21 - }, - "DistanceMins": { - "field": "m_vDistanceMins", - "type": 21 - }, - "DistanceMaxs": { - "field": "m_vDistanceMaxs", - "type": 21 - }, - "WindMin": { - "field": "m_flWindMin", - "type": 8 - }, - "WindMax": { - "field": "m_flWindMax", - "type": 8 - }, - "WindMapMin": { - "field": "m_flWindMapMin", - "type": 8 - }, - "WindMapMax": { - "field": "m_flWindMapMax", - "type": 8 - }, - "Parent": { - "field": "CSoundOpvarSetPointBase", - "type": 11 - } - }, - "CSoundOpvarSetPathCornerEntity": { - "DistMinSqr": { - "field": "m_flDistMinSqr", - "type": 8 - }, - "DistMaxSqr": { - "field": "m_flDistMaxSqr", - "type": 8 - }, - "PathCornerEntityName": { - "field": "m_iszPathCornerEntityName", - "type": 13 - }, - "Parent": { - "field": "CSoundOpvarSetPointEntity", - "type": 11 - } - }, - "CSoundOpvarSetPointBase": { - "Disabled": { - "field": "m_bDisabled", - "type": 10 - }, - "Source": { - "field": "m_hSource", - "type": 17, - "classname": "CEntityInstance" - }, - "SourceEntityName": { - "field": "m_iszSourceEntityName", - "type": 13 - }, - "LastPosition": { - "field": "m_vLastPosition", - "type": 21 - }, - "StackName": { - "field": "m_iszStackName", - "type": 13 - }, - "OperatorName": { - "field": "m_iszOperatorName", - "type": 13 - }, - "OpvarName": { - "field": "m_iszOpvarName", - "type": 13 - }, - "OpvarIndex": { - "field": "m_iOpvarIndex", - "type": 2 - }, - "UseAutoCompare": { - "field": "m_bUseAutoCompare", - "type": 10 - }, - "Parent": { - "field": "CBaseEntity", - "type": 11 - } - }, - "CSoundOpvarSetPointEntity": { - "OnEnter": { - "field": "m_OnEnter", - "classname": "CEntityIOOutput", - "type": 16 - }, - "OnExit": { - "field": "m_OnExit", - "classname": "CEntityIOOutput", - "type": 16 - }, - "AutoDisable": { - "field": "m_bAutoDisable", - "type": 10 - }, - "DistanceMin": { - "field": "m_flDistanceMin", - "type": 8 - }, - "DistanceMax": { - "field": "m_flDistanceMax", - "type": 8 - }, - "DistanceMapMin": { - "field": "m_flDistanceMapMin", - "type": 8 - }, - "DistanceMapMax": { - "field": "m_flDistanceMapMax", - "type": 8 - }, - "OcclusionRadius": { - "field": "m_flOcclusionRadius", - "type": 8 - }, - "OcclusionMin": { - "field": "m_flOcclusionMin", - "type": 8 - }, - "OcclusionMax": { - "field": "m_flOcclusionMax", - "type": 8 - }, - "ValSetOnDisable": { - "field": "m_flValSetOnDisable", - "type": 8 - }, - "SetValueOnDisable": { - "field": "m_bSetValueOnDisable", - "type": 10 - }, - "Reloading": { - "field": "m_bReloading", - "type": 10 - }, - "SimulationMode": { - "field": "m_nSimulationMode", - "type": 2 - }, - "VisibilitySamples": { - "field": "m_nVisibilitySamples", - "type": 2 - }, - "DynamicProxyPoint": { - "field": "m_vDynamicProxyPoint", - "type": 21 - }, - "DynamicMaximumOcclusion": { - "field": "m_flDynamicMaximumOcclusion", - "type": 8 - }, - "DynamicEntity": { - "field": "m_hDynamicEntity", - "type": 17, - "classname": "CEntityInstance" - }, - "DynamicEntityName": { - "field": "m_iszDynamicEntityName", - "type": 13 - }, - "PathingDistanceNormFactor": { - "field": "m_flPathingDistanceNormFactor", - "type": 8 - }, - "PathingSourcePos": { - "field": "m_vPathingSourcePos", - "type": 21 - }, - "PathingListenerPos": { - "field": "m_vPathingListenerPos", - "type": 21 - }, - "PathingDirection": { - "field": "m_vPathingDirection", - "type": 21 - }, - "PathingSourceIndex": { - "field": "m_nPathingSourceIndex", - "type": 2 - }, - "Parent": { - "field": "CSoundOpvarSetPointBase", - "type": 11 - } - }, - "CSoundStackSave": { - "StackName": { - "field": "m_iszStackName", - "type": 13 - }, - "Parent": { - "field": "CLogicalEntity", - "type": 11 - } - }, - "CSplineConstraint": { - "AnchorOffsetRestore": { - "field": "m_vAnchorOffsetRestore", - "type": 21 - }, - "Parent": { - "field": "CPhysConstraint", - "type": 11 - } - }, - "CSpotlightEnd": { - "LightScale": { - "field": "m_flLightScale", - "type": 8 - }, - "Radius": { - "field": "m_Radius", - "type": 8 - }, - "SpotlightDir": { - "field": "m_vSpotlightDir", - "type": 21 - }, - "SpotlightOrg": { - "field": "m_vSpotlightOrg", - "type": 21 - }, - "Parent": { - "field": "CBaseModelEntity", - "type": 11 - } - }, - "CSprite": { - "AttachedToEntity": { - "field": "m_hAttachedToEntity", - "type": 17, - "classname": "CBaseEntity" - }, - "SpriteFramerate": { - "field": "m_flSpriteFramerate", - "type": 8 - }, - "Frame": { - "field": "m_flFrame", - "type": 8 - }, - "DieTime": { - "field": "m_flDieTime", - "type": 8 - }, - "Brightness": { - "field": "m_nBrightness", - "type": 6 - }, - "BrightnessDuration": { - "field": "m_flBrightnessDuration", - "type": 8 - }, - "SpriteScale": { - "field": "m_flSpriteScale", - "type": 8 - }, - "ScaleDuration": { - "field": "m_flScaleDuration", - "type": 8 - }, - "WorldSpaceScale": { - "field": "m_bWorldSpaceScale", - "type": 10 - }, - "GlowProxySize": { - "field": "m_flGlowProxySize", - "type": 8 - }, - "HDRColorScale": { - "field": "m_flHDRColorScale", - "type": 8 - }, - "LastTime": { - "field": "m_flLastTime", - "type": 8 - }, - "MaxFrame": { - "field": "m_flMaxFrame", - "type": 8 - }, - "StartScale": { - "field": "m_flStartScale", - "type": 8 - }, - "DestScale": { - "field": "m_flDestScale", - "type": 8 - }, - "ScaleTimeStart": { - "field": "m_flScaleTimeStart", - "type": 8 - }, - "StartBrightness": { - "field": "m_nStartBrightness", - "type": 2 - }, - "DestBrightness": { - "field": "m_nDestBrightness", - "type": 2 - }, - "BrightnessTimeStart": { - "field": "m_flBrightnessTimeStart", - "type": 8 - }, - "SpriteWidth": { - "field": "m_nSpriteWidth", - "type": 2 - }, - "SpriteHeight": { - "field": "m_nSpriteHeight", - "type": 2 - }, - "Parent": { - "field": "CBaseModelEntity", - "type": 11 - } - }, - "CSpriteAlias_env_glow": { - "Parent": { - "field": "CSprite", - "type": 11 - } - }, - "CSun": { - "Direction": { - "field": "m_vDirection", - "type": 21 - }, - "Overlay": { - "field": "m_clrOverlay", - "type": 19 - }, - "EffectName": { - "field": "m_iszEffectName", - "type": 13 - }, - "SSEffectName": { - "field": "m_iszSSEffectName", - "type": 13 - }, - "On": { - "field": "m_bOn", - "type": 10 - }, - "BmaxColor": { - "field": "m_bmaxColor", - "type": 10 - }, - "Size": { - "field": "m_flSize", - "type": 8 - }, - "Rotation": { - "field": "m_flRotation", - "type": 8 - }, - "HazeScale": { - "field": "m_flHazeScale", - "type": 8 - }, - "AlphaHaze": { - "field": "m_flAlphaHaze", - "type": 8 - }, - "AlphaHdr": { - "field": "m_flAlphaHdr", - "type": 8 - }, - "AlphaScale": { - "field": "m_flAlphaScale", - "type": 8 - }, - "HDRColorScale": { - "field": "m_flHDRColorScale", - "type": 8 - }, - "FarZScale": { - "field": "m_flFarZScale", - "type": 8 - }, - "Parent": { - "field": "CBaseModelEntity", - "type": 11 - } - }, - "CTankTargetChange": { - "NewTargetName": { - "field": "m_newTargetName", - "type": 13 - }, - "Parent": { - "field": "CPointEntity", - "type": 11 - } - }, - "CTankTrainAI": { - "Train": { - "field": "m_hTrain", - "type": 17, - "classname": "CFuncTrackTrain" - }, - "TargetEntity": { - "field": "m_hTargetEntity", - "type": 17, - "classname": "CBaseEntity" - }, - "SoundPlaying": { - "field": "m_soundPlaying", - "type": 2 - }, - "StartSoundName": { - "field": "m_startSoundName", - "type": 13 - }, - "EngineSoundName": { - "field": "m_engineSoundName", - "type": 13 - }, - "MovementSoundName": { - "field": "m_movementSoundName", - "type": 13 - }, - "TargetEntityName": { - "field": "m_targetEntityName", - "type": 13 - }, - "Parent": { - "field": "CPointEntity", - "type": 11 - } - }, - "CTeam": { - "Score": { - "field": "m_iScore", - "type": 2 - }, - "Teamname": { - "field": "m_szTeamname", - "type": 15, - "size": 129 - }, - "Parent": { - "field": "CBaseEntity", - "type": 11 - } - }, - "CTeamplayRules": { - "Parent": { - "field": "CMultiplayRules", - "type": 11 - } - }, - "CTestEffect": { - "Loop": { - "field": "m_iLoop", - "type": 2 - }, - "Beam": { - "field": "m_iBeam", - "type": 2 - }, - "Beam1": { - "field": "m_pBeam", - "classname": "CBeam", - "type": 24 - }, - "BeamTime": { - "field": "m_flBeamTime", - "type": 37, - "size": 24 - }, - "StartTime": { - "field": "m_flStartTime", - "type": 8 - }, - "Parent": { - "field": "CBaseEntity", - "type": 11 - } - }, - "CTextureBasedAnimatable": { - "Loop": { - "field": "m_bLoop", - "type": 10 - }, - "FPS": { - "field": "m_flFPS", - "type": 8 - }, - "AnimationBoundsMin": { - "field": "m_vAnimationBoundsMin", - "type": 21 - }, - "AnimationBoundsMax": { - "field": "m_vAnimationBoundsMax", - "type": 21 - }, - "StartTime": { - "field": "m_flStartTime", - "type": 8 - }, - "StartFrame": { - "field": "m_flStartFrame", - "type": 8 - }, - "Parent": { - "field": "CBaseModelEntity", - "type": 11 - } - }, - "CTimerEntity": { - "OnTimer": { - "field": "m_OnTimer", - "classname": "CEntityIOOutput", - "type": 16 - }, - "OnTimerHigh": { - "field": "m_OnTimerHigh", - "classname": "CEntityIOOutput", - "type": 16 - }, - "OnTimerLow": { - "field": "m_OnTimerLow", - "classname": "CEntityIOOutput", - "type": 16 - }, - "Disabled": { - "field": "m_iDisabled", - "type": 2 - }, - "InitialDelay": { - "field": "m_flInitialDelay", - "type": 8 - }, - "RefireTime": { - "field": "m_flRefireTime", - "type": 8 - }, - "UpDownState": { - "field": "m_bUpDownState", - "type": 10 - }, - "UseRandomTime": { - "field": "m_iUseRandomTime", - "type": 2 - }, - "PauseAfterFiring": { - "field": "m_bPauseAfterFiring", - "type": 10 - }, - "LowerRandomBound": { - "field": "m_flLowerRandomBound", - "type": 8 - }, - "UpperRandomBound": { - "field": "m_flUpperRandomBound", - "type": 8 - }, - "RemainingTime": { - "field": "m_flRemainingTime", - "type": 8 - }, - "Paused": { - "field": "m_bPaused", - "type": 10 - }, - "Parent": { - "field": "CLogicalEntity", - "type": 11 - } - }, - "CTonemapController2": { - "AutoExposureMin": { - "field": "m_flAutoExposureMin", - "type": 8 - }, - "AutoExposureMax": { - "field": "m_flAutoExposureMax", - "type": 8 - }, - "TonemapPercentTarget": { - "field": "m_flTonemapPercentTarget", - "type": 8 - }, - "TonemapPercentBrightPixels": { - "field": "m_flTonemapPercentBrightPixels", - "type": 8 - }, - "TonemapMinAvgLum": { - "field": "m_flTonemapMinAvgLum", - "type": 8 - }, - "ExposureAdaptationSpeedUp": { - "field": "m_flExposureAdaptationSpeedUp", - "type": 8 - }, - "ExposureAdaptationSpeedDown": { - "field": "m_flExposureAdaptationSpeedDown", - "type": 8 - }, - "TonemapEVSmoothingRange": { - "field": "m_flTonemapEVSmoothingRange", - "type": 8 - }, - "Parent": { - "field": "CBaseEntity", - "type": 11 - } - }, - "CTonemapController2Alias_env_tonemap_controller2": { - "Parent": { - "field": "CTonemapController2", - "type": 11 - } - }, - "CTonemapTrigger": { - "TonemapControllerName": { - "field": "m_tonemapControllerName", - "type": 13 - }, - "TonemapController": { - "field": "m_hTonemapController", - "type": 17, - "classname": "CEntityInstance" - }, - "Parent": { - "field": "CBaseTrigger", - "type": 11 - } - }, - "CTouchExpansionComponent": { - "Parent": { - "field": "CEntityComponent", - "type": 11 - } - }, - "CTriggerActiveWeaponDetect": { - "OnTouchedActiveWeapon": { - "field": "m_OnTouchedActiveWeapon", - "classname": "CEntityIOOutput", - "type": 16 - }, - "WeaponClassName": { - "field": "m_iszWeaponClassName", - "type": 13 - }, - "Parent": { - "field": "CBaseTrigger", - "type": 11 - } - }, - "CTriggerBombReset": { - "Parent": { - "field": "CBaseTrigger", - "type": 11 - } - }, - "CTriggerBrush": { - "OnStartTouch": { - "field": "m_OnStartTouch", - "classname": "CEntityIOOutput", - "type": 16 - }, - "OnEndTouch": { - "field": "m_OnEndTouch", - "classname": "CEntityIOOutput", - "type": 16 - }, - "OnUse": { - "field": "m_OnUse", - "classname": "CEntityIOOutput", - "type": 16 - }, - "InputFilter": { - "field": "m_iInputFilter", - "type": 2 - }, - "DontMessageParent": { - "field": "m_iDontMessageParent", - "type": 2 - }, - "Parent": { - "field": "CBaseModelEntity", - "type": 11 - } - }, - "CTriggerBuoyancy": { - "BuoyancyHelper": { - "field": "m_BuoyancyHelper", - "classname": "CBuoyancyHelper", - "type": 16 - }, - "FluidDensity": { - "field": "m_flFluidDensity", - "type": 8 - }, - "Parent": { - "field": "CBaseTrigger", - "type": 11 - } - }, - "CTriggerCallback": { - "Parent": { - "field": "CBaseTrigger", - "type": 11 - } - }, - "CTriggerDetectBulletFire": { - "PlayerFireOnly": { - "field": "m_bPlayerFireOnly", - "type": 10 - }, - "OnDetectedBulletFire": { - "field": "m_OnDetectedBulletFire", - "classname": "CEntityIOOutput", - "type": 16 - }, - "Parent": { - "field": "CBaseTrigger", - "type": 11 - } - }, - "CTriggerDetectExplosion": { - "OnDetectedExplosion": { - "field": "m_OnDetectedExplosion", - "classname": "CEntityIOOutput", - "type": 16 - }, - "Parent": { - "field": "CBaseTrigger", - "type": 11 - } - }, - "CTriggerFan": { - "FanOrigin": { - "field": "m_vFanOrigin", - "type": 21 - }, - "FanEnd": { - "field": "m_vFanEnd", - "type": 21 - }, - "Noise": { - "field": "m_vNoise", - "type": 21 - }, - "Force": { - "field": "m_flForce", - "type": 8 - }, - "RopeForceScale": { - "field": "m_flRopeForceScale", - "type": 8 - }, - "PlayerForce": { - "field": "m_flPlayerForce", - "type": 8 - }, - "RampTime": { - "field": "m_flRampTime", - "type": 8 - }, - "Falloff": { - "field": "m_bFalloff", - "type": 10 - }, - "PushPlayer": { - "field": "m_bPushPlayer", - "type": 10 - }, - "RampDown": { - "field": "m_bRampDown", - "type": 10 - }, - "AddNoise": { - "field": "m_bAddNoise", - "type": 10 - }, - "RampTimer": { - "field": "m_RampTimer", - "classname": "CountdownTimer", - "type": 16 - }, - "Parent": { - "field": "CBaseTrigger", - "type": 11 - } - }, - "CTriggerGameEvent": { - "StrStartTouchEventName": { - "field": "m_strStartTouchEventName", - "type": 14 - }, - "StrEndTouchEventName": { - "field": "m_strEndTouchEventName", - "type": 14 - }, - "StrTriggerID": { - "field": "m_strTriggerID", - "type": 14 - }, - "Parent": { - "field": "CBaseTrigger", - "type": 11 - } - }, - "CTriggerGravity": { - "Parent": { - "field": "CBaseTrigger", - "type": 11 - } - }, - "CTriggerHostageReset": { - "Parent": { - "field": "CBaseTrigger", - "type": 11 - } - }, - "CTriggerHurt": { - "OriginalDamage": { - "field": "m_flOriginalDamage", - "type": 8 - }, - "Damage": { - "field": "m_flDamage", - "type": 8 - }, - "DamageCap": { - "field": "m_flDamageCap", - "type": 8 - }, - "LastDmgTime": { - "field": "m_flLastDmgTime", - "type": 8 - }, - "ForgivenessDelay": { - "field": "m_flForgivenessDelay", - "type": 8 - }, - "BitsDamageInflict": { - "field": "m_bitsDamageInflict", - "type": 6 - }, - "DamageModel": { - "field": "m_damageModel", - "type": 2 - }, - "NoDmgForce": { - "field": "m_bNoDmgForce", - "type": 10 - }, - "DamageForce": { - "field": "m_vDamageForce", - "type": 21 - }, - "ThinkAlways": { - "field": "m_thinkAlways", - "type": 10 - }, - "HurtThinkPeriod": { - "field": "m_hurtThinkPeriod", - "type": 8 - }, - "OnHurt": { - "field": "m_OnHurt", - "classname": "CEntityIOOutput", - "type": 16 - }, - "OnHurtPlayer": { - "field": "m_OnHurtPlayer", - "classname": "CEntityIOOutput", - "type": 16 - }, - "Parent": { - "field": "CBaseTrigger", - "type": 11 - } - }, - "CTriggerImpact": { - "Magnitude": { - "field": "m_flMagnitude", - "type": 8 - }, - "Noise": { - "field": "m_flNoise", - "type": 8 - }, - "Viewkick": { - "field": "m_flViewkick", - "type": 8 - }, - "Parent": { - "field": "CTriggerMultiple", - "type": 11 - } - }, - "CTriggerLerpObject": { - "LerpTarget": { - "field": "m_iszLerpTarget", - "type": 13 - }, - "LerpTarget1": { - "field": "m_hLerpTarget", - "type": 17, - "classname": "CBaseEntity" - }, - "LerpTargetAttachment": { - "field": "m_iszLerpTargetAttachment", - "type": 13 - }, - "LerpDuration": { - "field": "m_flLerpDuration", - "type": 8 - }, - "LerpRestoreMoveType": { - "field": "m_bLerpRestoreMoveType", - "type": 10 - }, - "SingleLerpObject": { - "field": "m_bSingleLerpObject", - "type": 10 - }, - "LerpEffect": { - "field": "m_iszLerpEffect", - "type": 13 - }, - "LerpSound": { - "field": "m_iszLerpSound", - "type": 13 - }, - "AttachTouchingObject": { - "field": "m_bAttachTouchingObject", - "type": 10 - }, - "EntityToWaitForDisconnect": { - "field": "m_hEntityToWaitForDisconnect", - "type": 17, - "classname": "CBaseEntity" - }, - "OnLerpStarted": { - "field": "m_OnLerpStarted", - "classname": "CEntityIOOutput", - "type": 16 - }, - "OnLerpFinished": { - "field": "m_OnLerpFinished", - "classname": "CEntityIOOutput", - "type": 16 - }, - "Parent": { - "field": "CBaseTrigger", - "type": 11 - } - }, - "CTriggerLook": { - "LookTarget": { - "field": "m_hLookTarget", - "type": 17, - "classname": "CBaseEntity" - }, - "FieldOfView": { - "field": "m_flFieldOfView", - "type": 8 - }, - "LookTime": { - "field": "m_flLookTime", - "type": 8 - }, - "LookTimeTotal": { - "field": "m_flLookTimeTotal", - "type": 8 - }, - "LookTimeLast": { - "field": "m_flLookTimeLast", - "type": 8 - }, - "TimeoutDuration": { - "field": "m_flTimeoutDuration", - "type": 8 - }, - "TimeoutFired": { - "field": "m_bTimeoutFired", - "type": 10 - }, - "IsLooking": { - "field": "m_bIsLooking", - "type": 10 - }, - "2DFOV": { - "field": "m_b2DFOV", - "type": 10 - }, - "UseVelocity": { - "field": "m_bUseVelocity", - "type": 10 - }, - "TestOcclusion": { - "field": "m_bTestOcclusion", - "type": 10 - }, - "OnTimeout": { - "field": "m_OnTimeout", - "classname": "CEntityIOOutput", - "type": 16 - }, - "OnStartLook": { - "field": "m_OnStartLook", - "classname": "CEntityIOOutput", - "type": 16 - }, - "OnEndLook": { - "field": "m_OnEndLook", - "classname": "CEntityIOOutput", - "type": 16 - }, - "Parent": { - "field": "CTriggerOnce", - "type": 11 - } - }, - "CTriggerMultiple": { - "OnTrigger": { - "field": "m_OnTrigger", - "classname": "CEntityIOOutput", - "type": 16 - }, - "Parent": { - "field": "CBaseTrigger", - "type": 11 - } - }, - "CTriggerOnce": { - "Parent": { - "field": "CTriggerMultiple", - "type": 11 - } - }, - "CTriggerPhysics": { - "GravityScale": { - "field": "m_gravityScale", - "type": 8 - }, - "LinearLimit": { - "field": "m_linearLimit", - "type": 8 - }, - "LinearDamping": { - "field": "m_linearDamping", - "type": 8 - }, - "AngularLimit": { - "field": "m_angularLimit", - "type": 8 - }, - "AngularDamping": { - "field": "m_angularDamping", - "type": 8 - }, - "LinearForce": { - "field": "m_linearForce", - "type": 8 - }, - "Frequency": { - "field": "m_flFrequency", - "type": 8 - }, - "DampingRatio": { - "field": "m_flDampingRatio", - "type": 8 - }, - "LinearForcePointAt": { - "field": "m_vecLinearForcePointAt", - "type": 21 - }, - "CollapseToForcePoint": { - "field": "m_bCollapseToForcePoint", - "type": 10 - }, - "LinearForcePointAtWorld": { - "field": "m_vecLinearForcePointAtWorld", - "type": 21 - }, - "LinearForceDirection": { - "field": "m_vecLinearForceDirection", - "type": 21 - }, - "ConvertToDebrisWhenPossible": { - "field": "m_bConvertToDebrisWhenPossible", - "type": 10 - }, - "Parent": { - "field": "CBaseTrigger", - "type": 11 - } - }, - "CTriggerProximity": { - "MeasureTarget": { - "field": "m_hMeasureTarget", - "type": 17, - "classname": "CBaseEntity" - }, - "MeasureTarget1": { - "field": "m_iszMeasureTarget", - "type": 13 - }, - "Radius": { - "field": "m_fRadius", - "type": 8 - }, - "Touchers": { - "field": "m_nTouchers", - "type": 2 - }, - "Parent": { - "field": "CBaseTrigger", - "type": 11 - } - }, - "CTriggerPush": { - "PushEntitySpace": { - "field": "m_angPushEntitySpace", - "type": 20 - }, - "PushDirEntitySpace": { - "field": "m_vecPushDirEntitySpace", - "type": 21 - }, - "TriggerOnStartTouch": { - "field": "m_bTriggerOnStartTouch", - "type": 10 - }, - "UsePathSimple": { - "field": "m_bUsePathSimple", - "type": 10 - }, - "PathSimpleName": { - "field": "m_iszPathSimpleName", - "type": 13 - }, - "PathSimple": { - "field": "m_PathSimple", - "classname": "CPathSimple", - "type": 24 - }, - "SplinePushType": { - "field": "m_splinePushType", - "type": 6 - }, - "Parent": { - "field": "CBaseTrigger", - "type": 11 - } - }, - "CTriggerRemove": { - "OnRemove": { - "field": "m_OnRemove", - "classname": "CEntityIOOutput", - "type": 16 - }, - "Parent": { - "field": "CBaseTrigger", - "type": 11 - } - }, - "CTriggerSave": { - "ForceNewLevelUnit": { - "field": "m_bForceNewLevelUnit", - "type": 10 - }, - "DangerousTimer": { - "field": "m_fDangerousTimer", - "type": 8 - }, - "MinHitPoints": { - "field": "m_minHitPoints", - "type": 2 - }, - "Parent": { - "field": "CBaseTrigger", - "type": 11 - } - }, - "CTriggerSndSosOpvar": { - "Position": { - "field": "m_flPosition", - "type": 21 - }, - "CenterSize": { - "field": "m_flCenterSize", - "type": 8 - }, - "MinVal": { - "field": "m_flMinVal", - "type": 8 - }, - "MaxVal": { - "field": "m_flMaxVal", - "type": 8 - }, - "OpvarName": { - "field": "m_opvarName", - "type": 13 - }, - "StackName": { - "field": "m_stackName", - "type": 13 - }, - "OperatorName": { - "field": "m_operatorName", - "type": 13 - }, - "VolIs2D": { - "field": "m_bVolIs2D", - "type": 10 - }, - "OpvarNameChar": { - "field": "m_opvarNameChar", - "type": 15, - "size": 256 - }, - "StackNameChar": { - "field": "m_stackNameChar", - "type": 15, - "size": 256 - }, - "OperatorNameChar": { - "field": "m_operatorNameChar", - "type": 15, - "size": 256 - }, - "VecNormPos": { - "field": "m_VecNormPos", - "type": 21 - }, - "NormCenterSize": { - "field": "m_flNormCenterSize", - "type": 8 - }, - "Parent": { - "field": "CBaseTrigger", - "type": 11 - } - }, - "CTriggerSoundscape": { - "Soundscape": { - "field": "m_hSoundscape", - "type": 17, - "classname": "CEnvSoundscapeTriggerable" - }, - "SoundscapeName": { - "field": "m_SoundscapeName", - "type": 13 - }, - "Parent": { - "field": "CBaseTrigger", - "type": 11 - } - }, - "CTriggerTeleport": { - "Landmark": { - "field": "m_iLandmark", - "type": 13 - }, - "UseLandmarkAngles": { - "field": "m_bUseLandmarkAngles", - "type": 10 - }, - "MirrorPlayer": { - "field": "m_bMirrorPlayer", - "type": 10 - }, - "CheckDestIfClearForPlayer": { - "field": "m_bCheckDestIfClearForPlayer", - "type": 10 - }, - "Parent": { - "field": "CBaseTrigger", - "type": 11 - } - }, - "CTriggerToggleSave": { - "Parent": { - "field": "CBaseTrigger", - "type": 11 - } - }, - "CTriggerTripWire": { - "Parent": { - "field": "CBaseTrigger", - "type": 11 - } - }, - "CTriggerVolume": { - "FilterName": { - "field": "m_iFilterName", - "type": 13 - }, - "Filter": { - "field": "m_hFilter", - "type": 17, - "classname": "CBaseFilter" - }, - "Parent": { - "field": "CBaseModelEntity", - "type": 11 - } - }, - "CWaterBullet": { - "Parent": { - "field": "CBaseAnimGraph", - "type": 11 - } - }, - "CWeaponAWP": { - "Parent": { - "field": "CCSWeaponBaseGun", - "type": 11 - } - }, - "CWeaponAug": { - "Parent": { - "field": "CCSWeaponBaseGun", - "type": 11 - } - }, - "CWeaponBaseItem": { - "SequenceCompleteTimer": { - "field": "m_SequenceCompleteTimer", - "classname": "CountdownTimer", - "type": 16 - }, - "Redraw": { - "field": "m_bRedraw", - "type": 10 - }, - "Parent": { - "field": "CCSWeaponBase", - "type": 11 - } - }, - "CWeaponBizon": { - "Parent": { - "field": "CCSWeaponBaseGun", - "type": 11 - } - }, - "CWeaponCZ75a": { - "Parent": { - "field": "CCSWeaponBaseGun", - "type": 11 - } - }, - "CWeaponElite": { - "Parent": { - "field": "CCSWeaponBaseGun", - "type": 11 - } - }, - "CWeaponFamas": { - "Parent": { - "field": "CCSWeaponBaseGun", - "type": 11 - } - }, - "CWeaponFiveSeven": { - "Parent": { - "field": "CCSWeaponBaseGun", - "type": 11 - } - }, - "CWeaponG3SG1": { - "Parent": { - "field": "CCSWeaponBaseGun", - "type": 11 - } - }, - "CWeaponGalilAR": { - "Parent": { - "field": "CCSWeaponBaseGun", - "type": 11 - } - }, - "CWeaponGlock": { - "Parent": { - "field": "CCSWeaponBaseGun", - "type": 11 - } - }, - "CWeaponHKP2000": { - "Parent": { - "field": "CCSWeaponBaseGun", - "type": 11 - } - }, - "CWeaponM249": { - "Parent": { - "field": "CCSWeaponBaseGun", - "type": 11 - } - }, - "CWeaponM4A1": { - "Parent": { - "field": "CCSWeaponBaseGun", - "type": 11 - } - }, - "CWeaponM4A1Silencer": { - "Parent": { - "field": "CCSWeaponBaseGun", - "type": 11 - } - }, - "CWeaponMAC10": { - "Parent": { - "field": "CCSWeaponBaseGun", - "type": 11 - } - }, - "CWeaponMP5SD": { - "Parent": { - "field": "CCSWeaponBaseGun", - "type": 11 - } - }, - "CWeaponMP7": { - "Parent": { - "field": "CCSWeaponBaseGun", - "type": 11 - } - }, - "CWeaponMP9": { - "Parent": { - "field": "CCSWeaponBaseGun", - "type": 11 - } - }, - "CWeaponMag7": { - "Parent": { - "field": "CCSWeaponBaseGun", - "type": 11 - } - }, - "CWeaponNOVA": { - "Parent": { - "field": "CCSWeaponBase", - "type": 11 - } - }, - "CWeaponNegev": { - "Parent": { - "field": "CCSWeaponBaseGun", - "type": 11 - } - }, - "CWeaponP250": { - "Parent": { - "field": "CCSWeaponBaseGun", - "type": 11 - } - }, - "CWeaponP90": { - "Parent": { - "field": "CCSWeaponBaseGun", - "type": 11 - } - }, - "CWeaponRevolver": { - "Parent": { - "field": "CCSWeaponBaseGun", - "type": 11 - } - }, - "CWeaponSCAR20": { - "Parent": { - "field": "CCSWeaponBaseGun", - "type": 11 - } - }, - "CWeaponSG556": { - "Parent": { - "field": "CCSWeaponBaseGun", - "type": 11 - } - }, - "CWeaponSSG08": { - "Parent": { - "field": "CCSWeaponBaseGun", - "type": 11 - } - }, - "CWeaponSawedoff": { - "Parent": { - "field": "CCSWeaponBase", - "type": 11 - } - }, - "CWeaponShield": { - "BulletDamageAbsorbed": { - "field": "m_flBulletDamageAbsorbed", - "type": 8 - }, - "LastBulletHitSoundTime": { - "field": "m_flLastBulletHitSoundTime", - "type": 8 - }, - "DisplayHealth": { - "field": "m_flDisplayHealth", - "type": 8 - }, - "Parent": { - "field": "CCSWeaponBaseGun", - "type": 11 - } - }, - "CWeaponTaser": { - "FireTime": { - "field": "m_fFireTime", - "type": 8 - }, - "LastAttackTick": { - "field": "m_nLastAttackTick", - "type": 2 - }, - "Parent": { - "field": "CCSWeaponBaseGun", - "type": 11 - } - }, - "CWeaponTec9": { - "Parent": { - "field": "CCSWeaponBaseGun", - "type": 11 - } - }, - "CWeaponUMP45": { - "Parent": { - "field": "CCSWeaponBaseGun", - "type": 11 - } - }, - "CWeaponUSPSilencer": { - "Parent": { - "field": "CCSWeaponBaseGun", - "type": 11 - } - }, - "CWeaponXM1014": { - "Parent": { - "field": "CCSWeaponBase", - "type": 11 - } - }, - "CWorld": { - "Parent": { - "field": "CBaseModelEntity", - "type": 11 - } - }, - "ConstraintSoundInfo": { - "Sampler": { - "field": "m_vSampler", - "classname": "VelocitySampler", - "type": 16 - }, - "SoundProfile": { - "field": "m_soundProfile", - "classname": "SimpleConstraintSoundProfile", - "type": 16 - }, - "ForwardAxis": { - "field": "m_forwardAxis", - "type": 21 - }, - "TravelSoundFwd": { - "field": "m_iszTravelSoundFwd", - "type": 13 - }, - "TravelSoundBack": { - "field": "m_iszTravelSoundBack", - "type": 13 - }, - "ReversalSounds": { - "field": "m_iszReversalSounds", - "type": 26, - "size": 3 - }, - "PlayTravelSound": { - "field": "m_bPlayTravelSound", - "type": 10 - }, - "PlayReversalSound": { - "field": "m_bPlayReversalSound", - "type": 10 - } - }, - "FilterDamageType": { - "DamageType": { - "field": "m_iDamageType", - "type": 2 - }, - "Parent": { - "field": "CBaseFilter", - "type": 11 - } - }, - "FilterHealth": { - "AdrenalineActive": { - "field": "m_bAdrenalineActive", - "type": 10 - }, - "HealthMin": { - "field": "m_iHealthMin", - "type": 2 - }, - "HealthMax": { - "field": "m_iHealthMax", - "type": 2 - }, - "Parent": { - "field": "CBaseFilter", - "type": 11 - } - }, - "FilterTeam": { - "FilterTeam": { - "field": "m_iFilterTeam", - "type": 2 - }, - "Parent": { - "field": "CBaseFilter", - "type": 11 - } - }, - "RelationshipOverride_t": { - "Entity": { - "field": "entity", - "type": 17, - "classname": "CBaseEntity" - }, - "ClassType": { - "field": "classType", - "type": 6 - }, - "Parent": { - "field": "Relationship_t", - "type": 11 - } - }, - "Relationship_t": { - "Disposition": { - "field": "disposition", - "type": 6 - }, - "Priority": { - "field": "priority", - "type": 2 - } - }, - "ResponseContext_t": { - "Name": { - "field": "m_iszName", - "type": 13 - }, - "Value": { - "field": "m_iszValue", - "type": 13 - }, - "ExpirationTime": { - "field": "m_fExpirationTime", - "type": 8 - } - }, - "SimpleConstraintSoundProfile": { - "KeyPoints": { - "field": "m_keyPoints", - "type": 37, - "size": 2 - }, - "ReversalSoundThresholds": { - "field": "m_reversalSoundThresholds", - "type": 37, - "size": 3 - } - }, - "SoundOpvarTraceResult_t": { - "Pos": { - "field": "vPos", - "type": 21 - }, - "DidHit": { - "field": "bDidHit", - "type": 10 - }, - "DistSqrToCenter": { - "field": "flDistSqrToCenter", - "type": 8 - } - }, - "SpawnPoint": { - "Priority": { - "field": "m_iPriority", - "type": 2 - }, - "Enabled": { - "field": "m_bEnabled", - "type": 10 - }, - "Type": { - "field": "m_nType", - "type": 2 - }, - "Parent": { - "field": "CServerOnlyPointEntity", - "type": 11 - } - }, - "VelocitySampler": { - "PrevSample": { - "field": "m_prevSample", - "type": 21 - }, - "PrevSampleTime": { - "field": "m_fPrevSampleTime", - "type": 8 - }, - "IdealSampleRate": { - "field": "m_fIdealSampleRate", - "type": 8 - } - }, - "dynpitchvol_base_t": { - "Preset": { - "field": "preset", - "type": 2 - }, - "Pitchrun": { - "field": "pitchrun", - "type": 2 - }, - "Pitchstart": { - "field": "pitchstart", - "type": 2 - }, - "Spinup": { - "field": "spinup", - "type": 2 - }, - "Spindown": { - "field": "spindown", - "type": 2 - }, - "Volrun": { - "field": "volrun", - "type": 2 - }, - "Volstart": { - "field": "volstart", - "type": 2 - }, - "Fadein": { - "field": "fadein", - "type": 2 - }, - "Fadeout": { - "field": "fadeout", - "type": 2 - }, - "Lfotype": { - "field": "lfotype", - "type": 2 - }, - "Lforate": { - "field": "lforate", - "type": 2 - }, - "Lfomodpitch": { - "field": "lfomodpitch", - "type": 2 - }, - "Lfomodvol": { - "field": "lfomodvol", - "type": 2 - }, - "Cspinup": { - "field": "cspinup", - "type": 2 - }, - "Cspincount": { - "field": "cspincount", - "type": 2 - }, - "Pitch": { - "field": "pitch", - "type": 2 - }, - "Spinupsav": { - "field": "spinupsav", - "type": 2 - }, - "Spindownsav": { - "field": "spindownsav", - "type": 2 - }, - "Pitchfrac": { - "field": "pitchfrac", - "type": 2 - }, - "Vol": { - "field": "vol", - "type": 2 - }, - "Fadeinsav": { - "field": "fadeinsav", - "type": 2 - }, - "Fadeoutsav": { - "field": "fadeoutsav", - "type": 2 - }, - "Volfrac": { - "field": "volfrac", - "type": 2 - }, - "Lfofrac": { - "field": "lfofrac", - "type": 2 - }, - "Lfomult": { - "field": "lfomult", - "type": 2 - } - }, - "dynpitchvol_t": { - "Parent": { - "field": "dynpitchvol_base_t", - "type": 11 - } - }, - "fogplayerparams_t": { - "Ctrl": { - "field": "m_hCtrl", - "type": 17, - "classname": "CFogController" - }, - "TransitionTime": { - "field": "m_flTransitionTime", - "type": 8 - }, - "OldColor": { - "field": "m_OldColor", - "type": 19 - }, - "OldStart": { - "field": "m_flOldStart", - "type": 8 - }, - "OldEnd": { - "field": "m_flOldEnd", - "type": 8 - }, - "OldMaxDensity": { - "field": "m_flOldMaxDensity", - "type": 8 - }, - "OldHDRColorScale": { - "field": "m_flOldHDRColorScale", - "type": 8 - }, - "OldFarZ": { - "field": "m_flOldFarZ", - "type": 8 - }, - "NewColor": { - "field": "m_NewColor", - "type": 19 - }, - "NewStart": { - "field": "m_flNewStart", - "type": 8 - }, - "NewEnd": { - "field": "m_flNewEnd", - "type": 8 - }, - "NewMaxDensity": { - "field": "m_flNewMaxDensity", - "type": 8 - }, - "NewHDRColorScale": { - "field": "m_flNewHDRColorScale", - "type": 8 - }, - "NewFarZ": { - "field": "m_flNewFarZ", - "type": 8 - } - }, - "lerpdata_t": { - "Ent": { - "field": "m_hEnt", - "type": 17, - "classname": "CBaseEntity" - }, - "MoveType": { - "field": "m_MoveType", - "type": 4 - }, - "StartTime": { - "field": "m_flStartTime", - "type": 8 - }, - "StartOrigin": { - "field": "m_vecStartOrigin", - "type": 21 - }, - "FXIndex": { - "field": "m_nFXIndex", - "classname": "ParticleIndex_t", - "type": 16 - } - }, - "locksound_t": { - "LockedSound": { - "field": "sLockedSound", - "type": 13 - }, - "UnlockedSound": { - "field": "sUnlockedSound", - "type": 13 - }, - "FlwaitSound": { - "field": "flwaitSound", - "type": 8 - } - }, - "magnetted_objects_t": { - "Entity": { - "field": "hEntity", - "type": 17, - "classname": "CBaseEntity" - } - }, - "CDSPMixgroupModifier": { - "Mixgroup": { - "field": "m_mixgroup", - "type": 14 - }, - "Modifier": { - "field": "m_flModifier", - "type": 8 - }, - "ModifierMin": { - "field": "m_flModifierMin", - "type": 8 - }, - "SourceModifier": { - "field": "m_flSourceModifier", - "type": 8 - }, - "SourceModifierMin": { - "field": "m_flSourceModifierMin", - "type": 8 - }, - "ListenerReverbModifierWhenSourceReverbIsActive": { - "field": "m_flListenerReverbModifierWhenSourceReverbIsActive", - "type": 8 - } - }, - "CDSPPresetMixgroupModifierTable": {}, - "CDspPresetModifierList": { - "DspName": { - "field": "m_dspName", - "type": 14 - } - }, - "CSosGroupActionLimitSchema": { - "MaxCount": { - "field": "m_nMaxCount", - "type": 2 - }, - "StopType": { - "field": "m_nStopType", - "type": 6 - }, - "SortType": { - "field": "m_nSortType", - "type": 6 - }, - "Parent": { - "field": "CSosGroupActionSchema", - "type": 11 - } - }, - "CSosGroupActionMemberCountEnvelopeSchema": { - "BaseCount": { - "field": "m_nBaseCount", - "type": 2 - }, - "TargetCount": { - "field": "m_nTargetCount", - "type": 2 - }, - "BaseValue": { - "field": "m_flBaseValue", - "type": 8 - }, - "TargetValue": { - "field": "m_flTargetValue", - "type": 8 - }, - "Attack": { - "field": "m_flAttack", - "type": 8 - }, - "Decay": { - "field": "m_flDecay", - "type": 8 - }, - "ResultVarName": { - "field": "m_resultVarName", - "type": 14 - }, - "SaveToGroup": { - "field": "m_bSaveToGroup", - "type": 10 - }, - "Parent": { - "field": "CSosGroupActionSchema", - "type": 11 - } - }, - "CSosGroupActionSchema": { - "Name": { - "field": "m_name", - "type": 14 - }, - "ActionType": { - "field": "m_actionType", - "type": 6 - }, - "ActionInstanceType": { - "field": "m_actionInstanceType", - "type": 6 - } - }, - "CSosGroupActionSetSoundeventParameterSchema": { - "MaxCount": { - "field": "m_nMaxCount", - "type": 2 - }, - "MinValue": { - "field": "m_flMinValue", - "type": 8 - }, - "MaxValue": { - "field": "m_flMaxValue", - "type": 8 - }, - "OpvarName": { - "field": "m_opvarName", - "type": 14 - }, - "SortType": { - "field": "m_nSortType", - "type": 6 - }, - "Parent": { - "field": "CSosGroupActionSchema", - "type": 11 - } - }, - "CSosGroupActionSoundeventClusterSchema": { - "MinNearby": { - "field": "m_nMinNearby", - "type": 2 - }, - "ClusterEpsilon": { - "field": "m_flClusterEpsilon", - "type": 8 - }, - "ShouldPlayOpvar": { - "field": "m_shouldPlayOpvar", - "type": 14 - }, - "ShouldPlayClusterChild": { - "field": "m_shouldPlayClusterChild", - "type": 14 - }, - "ClusterSizeOpvar": { - "field": "m_clusterSizeOpvar", - "type": 14 - }, - "GroupBoundingBoxMinsOpvar": { - "field": "m_groupBoundingBoxMinsOpvar", - "type": 14 - }, - "GroupBoundingBoxMaxsOpvar": { - "field": "m_groupBoundingBoxMaxsOpvar", - "type": 14 - }, - "Parent": { - "field": "CSosGroupActionSchema", - "type": 11 - } - }, - "CSosGroupActionSoundeventCountSchema": { - "ExcludeStoppedSounds": { - "field": "m_bExcludeStoppedSounds", - "type": 10 - }, - "StrCountKeyName": { - "field": "m_strCountKeyName", - "type": 14 - }, - "Parent": { - "field": "CSosGroupActionSchema", - "type": 11 - } - }, - "CSosGroupActionSoundeventMinMaxValuesSchema": { - "StrQueryPublicFieldName": { - "field": "m_strQueryPublicFieldName", - "type": 14 - }, - "StrDelayPublicFieldName": { - "field": "m_strDelayPublicFieldName", - "type": 14 - }, - "ExcludeStoppedSounds": { - "field": "m_bExcludeStoppedSounds", - "type": 10 - }, - "ExcludeDelayedSounds": { - "field": "m_bExcludeDelayedSounds", - "type": 10 - }, - "ExcludeSoundsBelowThreshold": { - "field": "m_bExcludeSoundsBelowThreshold", - "type": 10 - }, - "ExcludeSoundsMinThresholdValue": { - "field": "m_flExcludeSoundsMinThresholdValue", - "type": 8 - }, - "ExcludSoundsAboveThreshold": { - "field": "m_bExcludSoundsAboveThreshold", - "type": 10 - }, - "ExcludeSoundsMaxThresholdValue": { - "field": "m_flExcludeSoundsMaxThresholdValue", - "type": 8 - }, - "StrMinValueName": { - "field": "m_strMinValueName", - "type": 14 - }, - "StrMaxValueName": { - "field": "m_strMaxValueName", - "type": 14 - }, - "Parent": { - "field": "CSosGroupActionSchema", - "type": 11 - } - }, - "CSosGroupActionSoundeventPrioritySchema": { - "PriorityValue": { - "field": "m_priorityValue", - "type": 14 - }, - "PriorityVolumeScalar": { - "field": "m_priorityVolumeScalar", - "type": 14 - }, - "PriorityContributeButDontRead": { - "field": "m_priorityContributeButDontRead", - "type": 14 - }, - "PriorityReadButDontContribute": { - "field": "m_bPriorityReadButDontContribute", - "type": 14 - }, - "Parent": { - "field": "CSosGroupActionSchema", - "type": 11 - } - }, - "CSosGroupActionTimeBlockLimitSchema": { - "MaxCount": { - "field": "m_nMaxCount", - "type": 2 - }, - "MaxDuration": { - "field": "m_flMaxDuration", - "type": 8 - }, - "Parent": { - "field": "CSosGroupActionSchema", - "type": 11 - } - }, - "CSosGroupActionTimeLimitSchema": { - "MaxDuration": { - "field": "m_flMaxDuration", - "type": 8 - }, - "Parent": { - "field": "CSosGroupActionSchema", - "type": 11 - } - }, - "CSosGroupBranchPattern": { - "MatchEventName": { - "field": "m_bMatchEventName", - "type": 10 - }, - "MatchEventSubString": { - "field": "m_bMatchEventSubString", - "type": 10 - }, - "MatchEntIndex": { - "field": "m_bMatchEntIndex", - "type": 10 - }, - "MatchOpvar": { - "field": "m_bMatchOpvar", - "type": 10 - }, - "MatchString": { - "field": "m_bMatchString", - "type": 10 - } - }, - "CSosGroupMatchPattern": { - "MatchSoundEventName": { - "field": "m_matchSoundEventName", - "type": 14 - }, - "MatchSoundEventSubString": { - "field": "m_matchSoundEventSubString", - "type": 14 - }, - "EntIndex": { - "field": "m_flEntIndex", - "type": 8 - }, - "Opvar": { - "field": "m_flOpvar", - "type": 8 - }, - "OpvarString": { - "field": "m_opvarString", - "type": 14 - }, - "Parent": { - "field": "CSosGroupBranchPattern", - "type": 11 - } - }, - "CSosSoundEventGroupListSchema": {}, - "CSosSoundEventGroupSchema": { - "Name": { - "field": "m_name", - "type": 14 - }, - "Type": { - "field": "m_nType", - "type": 6 - }, - "IsBlocking": { - "field": "m_bIsBlocking", - "type": 10 - }, - "BlockMaxCount": { - "field": "m_nBlockMaxCount", - "type": 2 - }, - "InvertMatch": { - "field": "m_bInvertMatch", - "type": 10 - }, - "MatchPattern": { - "field": "m_matchPattern", - "classname": "CSosGroupMatchPattern", - "type": 16 - }, - "BranchPattern": { - "field": "m_branchPattern", - "classname": "CSosGroupBranchPattern", - "type": 16 - }, - "LifeSpanTime": { - "field": "m_flLifeSpanTime", - "type": 8 - }, - "Actions": { - "field": "m_vActions", - "classname": "CSosGroupActionSchema", - "type": 24 - } - }, - "CSoundEventMetaData": {}, - "CTestBlendContainer": { - "Parent": { - "field": "CVoiceContainerBase", - "type": 11 - } - }, - "SelectedEditItemInfo_t": {}, - "SosEditItemInfo_t": { - "ItemType": { - "field": "itemType", - "type": 6 - }, - "ItemName": { - "field": "itemName", - "type": 14 - }, - "ItemTypeName": { - "field": "itemTypeName", - "type": 14 - }, - "ItemKVString": { - "field": "itemKVString", - "type": 14 - }, - "ItemPos": { - "field": "itemPos", - "type": 22 - } - }, - "VMixAutoFilterDesc_t": { - "EnvelopeAmount": { - "field": "m_flEnvelopeAmount", - "type": 8 - }, - "AttackTimeMS": { - "field": "m_flAttackTimeMS", - "type": 8 - }, - "ReleaseTimeMS": { - "field": "m_flReleaseTimeMS", - "type": 8 - }, - "Filter": { - "field": "m_filter", - "classname": "VMixFilterDesc_t", - "type": 16 - }, - "LFOAmount": { - "field": "m_flLFOAmount", - "type": 8 - }, - "LFORate": { - "field": "m_flLFORate", - "type": 8 - }, - "Phase": { - "field": "m_flPhase", - "type": 8 - }, - "LFOShape": { - "field": "m_nLFOShape", - "type": 6 - } - }, - "VMixBoxverbDesc_t": { - "SizeMax": { - "field": "m_flSizeMax", - "type": 8 - }, - "SizeMin": { - "field": "m_flSizeMin", - "type": 8 - }, - "Complexity": { - "field": "m_flComplexity", - "type": 8 - }, - "Diffusion": { - "field": "m_flDiffusion", - "type": 8 - }, - "ModDepth": { - "field": "m_flModDepth", - "type": 8 - }, - "ModRate": { - "field": "m_flModRate", - "type": 8 - }, - "Parallel": { - "field": "m_bParallel", - "type": 10 - }, - "FilterType": { - "field": "m_filterType", - "classname": "VMixFilterDesc_t", - "type": 16 - }, - "Width": { - "field": "m_flWidth", - "type": 8 - }, - "Height": { - "field": "m_flHeight", - "type": 8 - }, - "Depth": { - "field": "m_flDepth", - "type": 8 - }, - "FeedbackScale": { - "field": "m_flFeedbackScale", - "type": 8 - }, - "FeedbackWidth": { - "field": "m_flFeedbackWidth", - "type": 8 - }, - "FeedbackHeight": { - "field": "m_flFeedbackHeight", - "type": 8 - }, - "FeedbackDepth": { - "field": "m_flFeedbackDepth", - "type": 8 - }, - "OutputGain": { - "field": "m_flOutputGain", - "type": 8 - }, - "Taps": { - "field": "m_flTaps", - "type": 8 - } - }, - "VMixConvolutionDesc_t": { - "FldbGain": { - "field": "m_fldbGain", - "type": 8 - }, - "PreDelayMS": { - "field": "m_flPreDelayMS", - "type": 8 - }, - "WetMix": { - "field": "m_flWetMix", - "type": 8 - }, - "FldbLow": { - "field": "m_fldbLow", - "type": 8 - }, - "FldbMid": { - "field": "m_fldbMid", - "type": 8 - }, - "FldbHigh": { - "field": "m_fldbHigh", - "type": 8 - }, - "LowCutoffFreq": { - "field": "m_flLowCutoffFreq", - "type": 8 - }, - "HighCutoffFreq": { - "field": "m_flHighCutoffFreq", - "type": 8 - } - }, - "VMixDelayDesc_t": { - "FeedbackFilter": { - "field": "m_feedbackFilter", - "classname": "VMixFilterDesc_t", - "type": 16 - }, - "EnableFilter": { - "field": "m_bEnableFilter", - "type": 10 - }, - "Delay": { - "field": "m_flDelay", - "type": 8 - }, - "DirectGain": { - "field": "m_flDirectGain", - "type": 8 - }, - "DelayGain": { - "field": "m_flDelayGain", - "type": 8 - }, - "FeedbackGain": { - "field": "m_flFeedbackGain", - "type": 8 - }, - "Width": { - "field": "m_flWidth", - "type": 8 - } - }, - "VMixDiffusorDesc_t": { - "Size": { - "field": "m_flSize", - "type": 8 - }, - "Complexity": { - "field": "m_flComplexity", - "type": 8 - }, - "Feedback": { - "field": "m_flFeedback", - "type": 8 - }, - "OutputGain": { - "field": "m_flOutputGain", - "type": 8 - } - }, - "VMixDynamics3BandDesc_t": { - "FldbGainOutput": { - "field": "m_fldbGainOutput", - "type": 8 - }, - "RMSTimeMS": { - "field": "m_flRMSTimeMS", - "type": 8 - }, - "FldbKneeWidth": { - "field": "m_fldbKneeWidth", - "type": 8 - }, - "Depth": { - "field": "m_flDepth", - "type": 8 - }, - "WetMix": { - "field": "m_flWetMix", - "type": 8 - }, - "TimeScale": { - "field": "m_flTimeScale", - "type": 8 - }, - "LowCutoffFreq": { - "field": "m_flLowCutoffFreq", - "type": 8 - }, - "HighCutoffFreq": { - "field": "m_flHighCutoffFreq", - "type": 8 - }, - "PeakMode": { - "field": "m_bPeakMode", - "type": 10 - }, - "BandDesc": { - "field": "m_bandDesc", - "type": 45, - "size": 3 - } - }, - "VMixDynamicsBand_t": { - "FldbGainInput": { - "field": "m_fldbGainInput", - "type": 8 - }, - "FldbGainOutput": { - "field": "m_fldbGainOutput", - "type": 8 - }, - "FldbThresholdBelow": { - "field": "m_fldbThresholdBelow", - "type": 8 - }, - "FldbThresholdAbove": { - "field": "m_fldbThresholdAbove", - "type": 8 - }, - "RatioBelow": { - "field": "m_flRatioBelow", - "type": 8 - }, - "RatioAbove": { - "field": "m_flRatioAbove", - "type": 8 - }, - "AttackTimeMS": { - "field": "m_flAttackTimeMS", - "type": 8 - }, - "ReleaseTimeMS": { - "field": "m_flReleaseTimeMS", - "type": 8 - }, - "Enable": { - "field": "m_bEnable", - "type": 10 - }, - "Solo": { - "field": "m_bSolo", - "type": 10 - } - }, - "VMixDynamicsCompressorDesc_t": { - "FldbOutputGain": { - "field": "m_fldbOutputGain", - "type": 8 - }, - "FldbCompressionThreshold": { - "field": "m_fldbCompressionThreshold", - "type": 8 - }, - "FldbKneeWidth": { - "field": "m_fldbKneeWidth", - "type": 8 - }, - "CompressionRatio": { - "field": "m_flCompressionRatio", - "type": 8 - }, - "AttackTimeMS": { - "field": "m_flAttackTimeMS", - "type": 8 - }, - "ReleaseTimeMS": { - "field": "m_flReleaseTimeMS", - "type": 8 - }, - "RMSTimeMS": { - "field": "m_flRMSTimeMS", - "type": 8 - }, - "WetMix": { - "field": "m_flWetMix", - "type": 8 - }, - "PeakMode": { - "field": "m_bPeakMode", - "type": 10 - } - }, - "VMixDynamicsDesc_t": { - "FldbGain": { - "field": "m_fldbGain", - "type": 8 - }, - "FldbNoiseGateThreshold": { - "field": "m_fldbNoiseGateThreshold", - "type": 8 - }, - "FldbCompressionThreshold": { - "field": "m_fldbCompressionThreshold", - "type": 8 - }, - "FldbLimiterThreshold": { - "field": "m_fldbLimiterThreshold", - "type": 8 - }, - "FldbKneeWidth": { - "field": "m_fldbKneeWidth", - "type": 8 - }, - "Ratio": { - "field": "m_flRatio", - "type": 8 - }, - "LimiterRatio": { - "field": "m_flLimiterRatio", - "type": 8 - }, - "AttackTimeMS": { - "field": "m_flAttackTimeMS", - "type": 8 - }, - "ReleaseTimeMS": { - "field": "m_flReleaseTimeMS", - "type": 8 - }, - "RMSTimeMS": { - "field": "m_flRMSTimeMS", - "type": 8 - }, - "WetMix": { - "field": "m_flWetMix", - "type": 8 - }, - "PeakMode": { - "field": "m_bPeakMode", - "type": 10 - } - }, - "VMixEQ8Desc_t": { - "Stages": { - "field": "m_stages", - "type": 45, - "size": 8 - } - }, - "VMixEffectChainDesc_t": { - "CrossfadeTime": { - "field": "m_flCrossfadeTime", - "type": 8 - } - }, - "VMixEnvelopeDesc_t": { - "AttackTimeMS": { - "field": "m_flAttackTimeMS", - "type": 8 - }, - "HoldTimeMS": { - "field": "m_flHoldTimeMS", - "type": 8 - }, - "ReleaseTimeMS": { - "field": "m_flReleaseTimeMS", - "type": 8 - } - }, - "VMixFilterDesc_t": { - "FilterType": { - "field": "m_nFilterType", - "type": 5 - }, - "FilterSlope": { - "field": "m_nFilterSlope", - "type": 4 - }, - "Enabled": { - "field": "m_bEnabled", - "type": 10 - }, - "FldbGain": { - "field": "m_fldbGain", - "type": 8 - }, - "CutoffFreq": { - "field": "m_flCutoffFreq", - "type": 8 - }, - "Q": { - "field": "m_flQ", - "type": 8 - } - }, - "VMixFreeverbDesc_t": { - "RoomSize": { - "field": "m_flRoomSize", - "type": 8 - }, - "Damp": { - "field": "m_flDamp", - "type": 8 - }, - "Width": { - "field": "m_flWidth", - "type": 8 - }, - "LateReflections": { - "field": "m_flLateReflections", - "type": 8 - } - }, - "VMixModDelayDesc_t": { - "FeedbackFilter": { - "field": "m_feedbackFilter", - "classname": "VMixFilterDesc_t", - "type": 16 - }, - "PhaseInvert": { - "field": "m_bPhaseInvert", - "type": 10 - }, - "GlideTime": { - "field": "m_flGlideTime", - "type": 8 - }, - "Delay": { - "field": "m_flDelay", - "type": 8 - }, - "OutputGain": { - "field": "m_flOutputGain", - "type": 8 - }, - "FeedbackGain": { - "field": "m_flFeedbackGain", - "type": 8 - }, - "ModRate": { - "field": "m_flModRate", - "type": 8 - }, - "ModDepth": { - "field": "m_flModDepth", - "type": 8 - }, - "ApplyAntialiasing": { - "field": "m_bApplyAntialiasing", - "type": 10 - } - }, - "VMixOscDesc_t": { - "OscType": { - "field": "oscType", - "type": 6 - }, - "Freq": { - "field": "m_freq", - "type": 8 - }, - "Phase": { - "field": "m_flPhase", - "type": 8 - } - }, - "VMixPannerDesc_t": { - "Type": { - "field": "m_type", - "type": 6 - }, - "Strength": { - "field": "m_flStrength", - "type": 8 - } - }, - "VMixPitchShiftDesc_t": { - "GrainSampleCount": { - "field": "m_nGrainSampleCount", - "type": 2 - }, - "PitchShift": { - "field": "m_flPitchShift", - "type": 8 - }, - "Quality": { - "field": "m_nQuality", - "type": 2 - }, - "ProcType": { - "field": "m_nProcType", - "type": 2 - } - }, - "VMixPlateverbDesc_t": { - "Prefilter": { - "field": "m_flPrefilter", - "type": 8 - }, - "InputDiffusion1": { - "field": "m_flInputDiffusion1", - "type": 8 - }, - "InputDiffusion2": { - "field": "m_flInputDiffusion2", - "type": 8 - }, - "Decay": { - "field": "m_flDecay", - "type": 8 - }, - "Damp": { - "field": "m_flDamp", - "type": 8 - }, - "FeedbackDiffusion1": { - "field": "m_flFeedbackDiffusion1", - "type": 8 - }, - "FeedbackDiffusion2": { - "field": "m_flFeedbackDiffusion2", - "type": 8 - } - }, - "VMixShaperDesc_t": { - "Shape": { - "field": "m_nShape", - "type": 2 - }, - "FldbDrive": { - "field": "m_fldbDrive", - "type": 8 - }, - "FldbOutputGain": { - "field": "m_fldbOutputGain", - "type": 8 - }, - "WetMix": { - "field": "m_flWetMix", - "type": 8 - }, - "OversampleFactor": { - "field": "m_nOversampleFactor", - "type": 2 - } - }, - "VMixSubgraphSwitchDesc_t": { - "InterpolationMode": { - "field": "m_interpolationMode", - "type": 6 - }, - "OnlyTailsOnFadeOut": { - "field": "m_bOnlyTailsOnFadeOut", - "type": 10 - }, - "InterpolationTime": { - "field": "m_flInterpolationTime", - "type": 8 - } - }, - "VMixUtilityDesc_t": { - "Op": { - "field": "m_nOp", - "type": 6 - }, - "InputPan": { - "field": "m_flInputPan", - "type": 8 - }, - "OutputBalance": { - "field": "m_flOutputBalance", - "type": 8 - }, - "FldbOutputGain": { - "field": "m_fldbOutputGain", - "type": 8 - }, - "BassMono": { - "field": "m_bBassMono", - "type": 10 - }, - "BassFreq": { - "field": "m_flBassFreq", - "type": 8 - } - }, - "VMixVocoderDesc_t": { - "BandCount": { - "field": "m_nBandCount", - "type": 2 - }, - "Bandwidth": { - "field": "m_flBandwidth", - "type": 8 - }, - "FldBModGain": { - "field": "m_fldBModGain", - "type": 8 - }, - "FreqRangeStart": { - "field": "m_flFreqRangeStart", - "type": 8 - }, - "FreqRangeEnd": { - "field": "m_flFreqRangeEnd", - "type": 8 - }, - "FldBUnvoicedGain": { - "field": "m_fldBUnvoicedGain", - "type": 8 - }, - "AttackTimeMS": { - "field": "m_flAttackTimeMS", - "type": 8 - }, - "ReleaseTimeMS": { - "field": "m_flReleaseTimeMS", - "type": 8 - }, - "DebugBand": { - "field": "m_nDebugBand", - "type": 2 - }, - "PeakMode": { - "field": "m_bPeakMode", - "type": 10 - } - }, - "CAudioEmphasisSample": { - "Time": { - "field": "m_flTime", - "type": 8 - }, - "Value": { - "field": "m_flValue", - "type": 8 - } - }, - "CAudioMorphData": { - "Times": { - "field": "m_times", - "type": 59 - }, - "NameHashCodes": { - "field": "m_nameHashCodes", - "type": 57 - }, - "NameStrings": { - "field": "m_nameStrings", - "type": 50 - }, - "EaseIn": { - "field": "m_flEaseIn", - "type": 8 - }, - "EaseOut": { - "field": "m_flEaseOut", - "type": 8 - } - }, - "CAudioPhonemeTag": { - "StartTime": { - "field": "m_flStartTime", - "type": 8 - }, - "EndTime": { - "field": "m_flEndTime", - "type": 8 - }, - "PhonemeCode": { - "field": "m_nPhonemeCode", - "type": 2 - } - }, - "CAudioSentence": { - "ShouldVoiceDuck": { - "field": "m_bShouldVoiceDuck", - "type": 10 - }, - "MorphData": { - "field": "m_morphData", - "classname": "CAudioMorphData", - "type": 16 - } - }, - "CSoundContainerReference": { - "UseReference": { - "field": "m_bUseReference", - "type": 10 - }, - "Sound": { - "field": "m_pSound", - "classname": "CVoiceContainerBase", - "type": 24 - } - }, - "CSoundContainerReferenceArray": { - "UseReference": { - "field": "m_bUseReference", - "type": 10 - } - }, - "CSoundInfoHeader": {}, - "CVoiceContainerAmpedDecayingSineWave": { - "GainAmount": { - "field": "m_flGainAmount", - "type": 8 - }, - "Parent": { - "field": "CVoiceContainerDecayingSineWave", - "type": 11 - } - }, - "CVoiceContainerAnalysisBase": { - "RegenerateCurveOnCompile": { - "field": "m_bRegenerateCurveOnCompile", - "type": 10 - } - }, - "CVoiceContainerBase": { - "EnvelopeAnalyzer": { - "field": "m_pEnvelopeAnalyzer", - "classname": "CVoiceContainerAnalysisBase", - "type": 24 - } - }, - "CVoiceContainerBlender": { - "FirstSound": { - "field": "m_firstSound", - "classname": "CSoundContainerReference", - "type": 16 - }, - "SecondSound": { - "field": "m_secondSound", - "classname": "CSoundContainerReference", - "type": 16 - }, - "BlendFactor": { - "field": "m_flBlendFactor", - "type": 8 - }, - "Parent": { - "field": "CVoiceContainerBase", - "type": 11 - } - }, - "CVoiceContainerDecayingSineWave": { - "Frequency": { - "field": "m_flFrequency", - "type": 8 - }, - "DecayTime": { - "field": "m_flDecayTime", - "type": 8 - }, - "Parent": { - "field": "CVoiceContainerBase", - "type": 11 - } - }, - "CVoiceContainerDefault": { - "Parent": { - "field": "CVoiceContainerBase", - "type": 11 - } - }, - "CVoiceContainerEnvelope": { - "AnalysisContainer": { - "field": "m_analysisContainer", - "classname": "CVoiceContainerAnalysisBase", - "type": 24 - }, - "Parent": { - "field": "CVoiceContainerBase", - "type": 11 - } - }, - "CVoiceContainerEnvelopeAnalyzer": { - "Mode": { - "field": "m_mode", - "type": 6 - }, - "Samples": { - "field": "m_nSamples", - "type": 2 - }, - "Threshold": { - "field": "m_flThreshold", - "type": 8 - }, - "Parent": { - "field": "CVoiceContainerAnalysisBase", - "type": 11 - } - }, - "CVoiceContainerGranulator": { - "GrainLength": { - "field": "m_flGrainLength", - "type": 8 - }, - "GrainCrossfadeAmount": { - "field": "m_flGrainCrossfadeAmount", - "type": 8 - }, - "StartJitter": { - "field": "m_flStartJitter", - "type": 8 - }, - "PlaybackJitter": { - "field": "m_flPlaybackJitter", - "type": 8 - }, - "Parent": { - "field": "CVoiceContainerBase", - "type": 11 - } - }, - "CVoiceContainerLoopTrigger": { - "Sound": { - "field": "m_sound", - "classname": "CSoundContainerReference", - "type": 16 - }, - "RetriggerTimeMin": { - "field": "m_flRetriggerTimeMin", - "type": 8 - }, - "RetriggerTimeMax": { - "field": "m_flRetriggerTimeMax", - "type": 8 - }, - "FadeTime": { - "field": "m_flFadeTime", - "type": 8 - }, - "CrossFade": { - "field": "m_bCrossFade", - "type": 10 - }, - "Parent": { - "field": "CVoiceContainerBase", - "type": 11 - } - }, - "CVoiceContainerNull": { - "Parent": { - "field": "CVoiceContainerBase", - "type": 11 - } - }, - "CVoiceContainerRandomSampler": { - "Amplitude": { - "field": "m_flAmplitude", - "type": 8 - }, - "AmplitudeJitter": { - "field": "m_flAmplitudeJitter", - "type": 8 - }, - "TimeJitter": { - "field": "m_flTimeJitter", - "type": 8 - }, - "MaxLength": { - "field": "m_flMaxLength", - "type": 8 - }, - "NumDelayVariations": { - "field": "m_nNumDelayVariations", - "type": 2 - }, - "Parent": { - "field": "CVoiceContainerBase", - "type": 11 - } - }, - "CVoiceContainerRealtimeFMSineWave": { - "CarrierFrequency": { - "field": "m_flCarrierFrequency", - "type": 8 - }, - "ModulatorFrequency": { - "field": "m_flModulatorFrequency", - "type": 8 - }, - "ModulatorAmount": { - "field": "m_flModulatorAmount", - "type": 8 - }, - "Parent": { - "field": "CVoiceContainerBase", - "type": 11 - } - }, - "CVoiceContainerSelector": { - "Mode": { - "field": "m_mode", - "type": 6 - }, - "SoundsToPlay": { - "field": "m_soundsToPlay", - "classname": "CSoundContainerReferenceArray", - "type": 16 - }, - "ProbabilityWeights": { - "field": "m_fProbabilityWeights", - "type": 59 - }, - "Parent": { - "field": "CVoiceContainerBase", - "type": 11 - } - }, - "CVoiceContainerSet": { - "Parent": { - "field": "CVoiceContainerBase", - "type": 11 - } - }, - "CVoiceContainerSetElement": { - "Sound": { - "field": "m_sound", - "classname": "CSoundContainerReference", - "type": 16 - }, - "VolumeDB": { - "field": "m_flVolumeDB", - "type": 8 - } - }, - "CVoiceContainerShapedNoise": { - "UseCurveForFrequency": { - "field": "m_bUseCurveForFrequency", - "type": 10 - }, - "Frequency": { - "field": "m_flFrequency", - "type": 8 - }, - "UseCurveForResonance": { - "field": "m_bUseCurveForResonance", - "type": 10 - }, - "Resonance": { - "field": "m_flResonance", - "type": 8 - }, - "UseCurveForAmplitude": { - "field": "m_bUseCurveForAmplitude", - "type": 10 - }, - "GainInDecibels": { - "field": "m_flGainInDecibels", - "type": 8 - }, - "Parent": { - "field": "CVoiceContainerBase", - "type": 11 - } - }, - "CVoiceContainerStaticAdditiveSynth": { - "Parent": { - "field": "CVoiceContainerBase", - "type": 11 - } - }, - "CVoiceContainerSwitch": { - "Parent": { - "field": "CVoiceContainerBase", - "type": 11 - } - }, - "CRangeFloat": { - "Value": { - "field": "m_pValue", - "type": 37, - "size": 2 - } - }, - "CRangeInt": { - "Value": { - "field": "m_pValue", - "type": 31, - "size": 2 - } - }, - "IPhysicsPlayerController": {}, - "constraint_axislimit_t": { - "MinRotation": { - "field": "flMinRotation", - "type": 8 - }, - "MaxRotation": { - "field": "flMaxRotation", - "type": 8 - }, - "MotorTargetAngSpeed": { - "field": "flMotorTargetAngSpeed", - "type": 8 - }, - "MotorMaxTorque": { - "field": "flMotorMaxTorque", - "type": 8 - } - }, - "constraint_breakableparams_t": { - "Strength": { - "field": "strength", - "type": 8 - }, - "ForceLimit": { - "field": "forceLimit", - "type": 8 - }, - "TorqueLimit": { - "field": "torqueLimit", - "type": 8 - }, - "BodyMassScale": { - "field": "bodyMassScale", - "type": 37, - "size": 2 - }, - "IsActive": { - "field": "isActive", - "type": 10 - } - }, - "constraint_hingeparams_t": { - "WorldPosition": { - "field": "worldPosition", - "type": 21 - }, - "WorldAxisDirection": { - "field": "worldAxisDirection", - "type": 21 - }, - "HingeAxis": { - "field": "hingeAxis", - "classname": "constraint_axislimit_t", - "type": 16 - }, - "Constraint": { - "field": "constraint", - "classname": "constraint_breakableparams_t", - "type": 16 - } - }, - "vphysics_save_cphysicsbody_t": { - "OldPointer": { - "field": "m_nOldPointer", - "type": 7 - }, - "Parent": { - "field": "RnBodyDesc_t", - "type": 11 - } - }, - "AggregateLODSetup_t": { - "LODOrigin": { - "field": "m_vLODOrigin", - "type": 21 - }, - "MaxObjectScale": { - "field": "m_fMaxObjectScale", - "type": 8 - }, - "SwitchDistances": { - "field": "m_fSwitchDistances", - "type": 59 - } - }, - "AggregateMeshInfo_t": { - "VisClusterMemberOffset": { - "field": "m_nVisClusterMemberOffset", - "type": 6 - }, - "VisClusterMemberCount": { - "field": "m_nVisClusterMemberCount", - "type": 4 - }, - "HasTransform": { - "field": "m_bHasTransform", - "type": 10 - }, - "DrawCallIndex": { - "field": "m_nDrawCallIndex", - "type": 1 - }, - "LODSetupIndex": { - "field": "m_nLODSetupIndex", - "type": 1 - }, - "LODGroupMask": { - "field": "m_nLODGroupMask", - "type": 4 - }, - "TintColor": { - "field": "m_vTintColor", - "type": 19 - }, - "ObjectFlags": { - "field": "m_objectFlags", - "type": 6 - }, - "LightProbeVolumePrecomputedHandshake": { - "field": "m_nLightProbeVolumePrecomputedHandshake", - "type": 2 - } - }, - "AggregateSceneObject_t": { - "AllFlags": { - "field": "m_allFlags", - "type": 6 - }, - "AnyFlags": { - "field": "m_anyFlags", - "type": 6 - }, - "Layer": { - "field": "m_nLayer", - "type": 1 - }, - "VisClusterMembership": { - "field": "m_visClusterMembership", - "type": 56 - } - }, - "BakedLightingInfo_t": { - "LightmapVersionNumber": { - "field": "m_nLightmapVersionNumber", - "type": 6 - }, - "LightmapGameVersionNumber": { - "field": "m_nLightmapGameVersionNumber", - "type": 6 - }, - "LightmapUvScale": { - "field": "m_vLightmapUvScale", - "type": 22 - }, - "HasLightmaps": { - "field": "m_bHasLightmaps", - "type": 10 - }, - "BakedShadowsGamma20": { - "field": "m_bBakedShadowsGamma20", - "type": 10 - }, - "CompressionEnabled": { - "field": "m_bCompressionEnabled", - "type": 10 - }, - "ChartPackIterations": { - "field": "m_nChartPackIterations", - "type": 4 - }, - "VradQuality": { - "field": "m_nVradQuality", - "type": 4 - } - }, - "BaseSceneObjectOverride_t": { - "SceneObjectIndex": { - "field": "m_nSceneObjectIndex", - "type": 6 - } - }, - "CVoxelVisibility": { - "BaseClusterCount": { - "field": "m_nBaseClusterCount", - "type": 6 - }, - "PVSBytesPerCluster": { - "field": "m_nPVSBytesPerCluster", - "type": 6 - }, - "MinBounds": { - "field": "m_vMinBounds", - "type": 21 - }, - "MaxBounds": { - "field": "m_vMaxBounds", - "type": 21 - }, - "GridSize": { - "field": "m_flGridSize", - "type": 8 - }, - "SkyVisibilityCluster": { - "field": "m_nSkyVisibilityCluster", - "type": 6 - }, - "SunVisibilityCluster": { - "field": "m_nSunVisibilityCluster", - "type": 6 - }, - "NodeBlock": { - "field": "m_NodeBlock", - "classname": "VoxelVisBlockOffset_t", - "type": 16 - }, - "RegionBlock": { - "field": "m_RegionBlock", - "classname": "VoxelVisBlockOffset_t", - "type": 16 - }, - "EnclosedClusterListBlock": { - "field": "m_EnclosedClusterListBlock", - "classname": "VoxelVisBlockOffset_t", - "type": 16 - }, - "EnclosedClustersBlock": { - "field": "m_EnclosedClustersBlock", - "classname": "VoxelVisBlockOffset_t", - "type": 16 - }, - "MasksBlock": { - "field": "m_MasksBlock", - "classname": "VoxelVisBlockOffset_t", - "type": 16 - }, - "VisBlocks": { - "field": "m_nVisBlocks", - "classname": "VoxelVisBlockOffset_t", - "type": 16 - } - }, - "ClutterSceneObject_t": { - "Bounds": { - "field": "m_Bounds", - "classname": "AABB_t", - "type": 16 - }, - "Flags": { - "field": "m_flags", - "type": 6 - }, - "Layer": { - "field": "m_nLayer", - "type": 1 - }, - "InstancePositions": { - "field": "m_instancePositions", - "type": 63 - }, - "InstanceScales": { - "field": "m_instanceScales", - "type": 59 - }, - "InstanceTintSrgb": { - "field": "m_instanceTintSrgb", - "type": 61 - } - }, - "ClutterTile_t": { - "FirstInstance": { - "field": "m_nFirstInstance", - "type": 6 - }, - "LastInstance": { - "field": "m_nLastInstance", - "type": 6 - }, - "BoundsWs": { - "field": "m_BoundsWs", - "classname": "AABB_t", - "type": 16 - } - }, - "EntityIOConnectionData_t": { - "OutputName": { - "field": "m_outputName", - "type": 14 - }, - "TargetType": { - "field": "m_targetType", - "type": 6 - }, - "TargetName": { - "field": "m_targetName", - "type": 14 - }, - "InputName": { - "field": "m_inputName", - "type": 14 - }, - "OverrideParam": { - "field": "m_overrideParam", - "type": 14 - }, - "Delay": { - "field": "m_flDelay", - "type": 8 - }, - "TimesToFire": { - "field": "m_nTimesToFire", - "type": 2 - } - }, - "EntityKeyValueData_t": {}, - "ExtraVertexStreamOverride_t": { - "SubSceneObject": { - "field": "m_nSubSceneObject", - "type": 6 - }, - "DrawCallIndex": { - "field": "m_nDrawCallIndex", - "type": 6 - }, - "AdditionalMeshDrawPrimitiveFlags": { - "field": "m_nAdditionalMeshDrawPrimitiveFlags", - "type": 6 - }, - "ExtraBufferBinding": { - "field": "m_extraBufferBinding", - "classname": "CRenderBufferBinding", - "type": 16 - }, - "Parent": { - "field": "BaseSceneObjectOverride_t", - "type": 11 - } - }, - "InfoOverlayData_t": { - "Width": { - "field": "m_flWidth", - "type": 8 - }, - "Height": { - "field": "m_flHeight", - "type": 8 - }, - "Depth": { - "field": "m_flDepth", - "type": 8 - }, - "UVStart": { - "field": "m_vUVStart", - "type": 22 - }, - "UVEnd": { - "field": "m_vUVEnd", - "type": 22 - }, - "RenderOrder": { - "field": "m_nRenderOrder", - "type": 2 - }, - "TintColor": { - "field": "m_vTintColor", - "type": 23 - }, - "SequenceOverride": { - "field": "m_nSequenceOverride", - "type": 2 - } - }, - "MaterialOverride_t": { - "SubSceneObject": { - "field": "m_nSubSceneObject", - "type": 6 - }, - "DrawCallIndex": { - "field": "m_nDrawCallIndex", - "type": 6 - }, - "Parent": { - "field": "BaseSceneObjectOverride_t", - "type": 11 - } - }, - "NodeData_t": { - "Parent": { - "field": "m_nParent", - "type": 2 - }, - "Origin": { - "field": "m_vOrigin", - "type": 21 - }, - "MinBounds": { - "field": "m_vMinBounds", - "type": 21 - }, - "MaxBounds": { - "field": "m_vMaxBounds", - "type": 21 - }, - "MinimumDistance": { - "field": "m_flMinimumDistance", - "type": 8 - }, - "ChildNodeIndices": { - "field": "m_ChildNodeIndices", - "type": 53 - }, - "WorldNodePrefix": { - "field": "m_worldNodePrefix", - "type": 14 - } - }, - "PermEntityLumpData_t": { - "Name": { - "field": "m_name", - "type": 14 - } - }, - "SceneObject_t": { - "ObjectID": { - "field": "m_nObjectID", - "type": 6 - }, - "Transform": { - "field": "m_vTransform", - "type": 44, - "size": 3 - }, - "FadeStartDistance": { - "field": "m_flFadeStartDistance", - "type": 8 - }, - "FadeEndDistance": { - "field": "m_flFadeEndDistance", - "type": 8 - }, - "TintColor": { - "field": "m_vTintColor", - "type": 23 - }, - "Skin": { - "field": "m_skin", - "type": 14 - }, - "ObjectTypeFlags": { - "field": "m_nObjectTypeFlags", - "type": 6 - }, - "LightingOrigin": { - "field": "m_vLightingOrigin", - "type": 21 - }, - "OverlayRenderOrder": { - "field": "m_nOverlayRenderOrder", - "type": 1 - }, - "LODOverride": { - "field": "m_nLODOverride", - "type": 1 - }, - "CubeMapPrecomputedHandshake": { - "field": "m_nCubeMapPrecomputedHandshake", - "type": 2 - }, - "LightProbeVolumePrecomputedHandshake": { - "field": "m_nLightProbeVolumePrecomputedHandshake", - "type": 2 - } - }, - "VMapResourceData_t": {}, - "VoxelVisBlockOffset_t": { - "Offset": { - "field": "m_nOffset", - "type": 6 - }, - "ElementCount": { - "field": "m_nElementCount", - "type": 6 - } - }, - "WorldBuilderParams_t": { - "MinDrawVolumeSize": { - "field": "m_flMinDrawVolumeSize", - "type": 8 - }, - "BuildBakedLighting": { - "field": "m_bBuildBakedLighting", - "type": 10 - }, - "BakedLightingInfo": { - "field": "m_bakedLightingInfo", - "classname": "BakedLightingInfo_t", - "type": 16 - }, - "CompileTimestamp": { - "field": "m_nCompileTimestamp", - "type": 7 - }, - "CompileFingerprint": { - "field": "m_nCompileFingerprint", - "type": 7 - } - }, - "WorldNodeOnDiskBufferData_t": { - "ElementCount": { - "field": "m_nElementCount", - "type": 2 - }, - "ElementSizeInBytes": { - "field": "m_nElementSizeInBytes", - "type": 2 - }, - "Data": { - "field": "m_pData", - "type": 55 - } - }, - "WorldNode_t": { - "VisClusterMembership": { - "field": "m_visClusterMembership", - "type": 56 - }, - "LayerNames": { - "field": "m_layerNames", - "type": 50 - }, - "SceneObjectLayerIndices": { - "field": "m_sceneObjectLayerIndices", - "type": 55 - }, - "OverlayLayerIndices": { - "field": "m_overlayLayerIndices", - "type": 55 - }, - "GrassFileName": { - "field": "m_grassFileName", - "type": 14 - }, - "NodeLightingInfo": { - "field": "m_nodeLightingInfo", - "classname": "BakedLightingInfo_t", - "type": 16 - }, - "HasBakedGeometryFlag": { - "field": "m_bHasBakedGeometryFlag", - "type": 10 - } - }, - "World_t": { - "BuilderParams": { - "field": "m_builderParams", - "classname": "WorldBuilderParams_t", - "type": 16 - }, - "WorldLightingInfo": { - "field": "m_worldLightingInfo", - "classname": "BakedLightingInfo_t", - "type": 16 - } - } -} \ No newline at end of file diff --git a/plugin_files/gamedata/sdk_types.json b/plugin_files/gamedata/sdk_types.json deleted file mode 100644 index 88824b27a..000000000 --- a/plugin_files/gamedata/sdk_types.json +++ /dev/null @@ -1,2933 +0,0 @@ -{ - "AnimParamButton_t": { - "ANIMPARAM_BUTTON_NONE": 0, - "ANIMPARAM_BUTTON_DPAD_UP": 1, - "ANIMPARAM_BUTTON_DPAD_RIGHT": 2, - "ANIMPARAM_BUTTON_DPAD_DOWN": 3, - "ANIMPARAM_BUTTON_DPAD_LEFT": 4, - "ANIMPARAM_BUTTON_A": 5, - "ANIMPARAM_BUTTON_B": 6, - "ANIMPARAM_BUTTON_X": 7, - "ANIMPARAM_BUTTON_Y": 8, - "ANIMPARAM_BUTTON_LEFT_SHOULDER": 9, - "ANIMPARAM_BUTTON_RIGHT_SHOULDER": 10, - "ANIMPARAM_BUTTON_LTRIGGER": 11, - "ANIMPARAM_BUTTON_RTRIGGER": 12 - }, - "AnimParamNetworkSetting": { - "Auto": 0, - "AlwaysNetwork": 1, - "NeverNetwork": 2 - }, - "AnimParamType_t": { - "ANIMPARAM_UNKNOWN": 0, - "ANIMPARAM_BOOL": 1, - "ANIMPARAM_ENUM": 2, - "ANIMPARAM_INT": 3, - "ANIMPARAM_FLOAT": 4, - "ANIMPARAM_VECTOR": 5, - "ANIMPARAM_QUATERNION": 6, - "ANIMPARAM_GLOBALSYMBOL": 7, - "ANIMPARAM_COUNT": 8 - }, - "AnimPoseControl": { - "NoPoseControl": 0, - "AbsolutePoseControl": 1, - "RelativePoseControl": 2 - }, - "AnimationProcessingType_t": { - "ANIMATION_PROCESSING_SERVER_SIMULATION": 0, - "ANIMATION_PROCESSING_CLIENT_SIMULATION": 1, - "ANIMATION_PROCESSING_CLIENT_PREDICTION": 2, - "ANIMATION_PROCESSING_CLIENT_INTERPOLATION": 3, - "ANIMATION_PROCESSING_CLIENT_RENDER": 4, - "ANIMATION_PROCESSING_MAX": 5 - }, - "AnimationSnapshotType_t": { - "ANIMATION_SNAPSHOT_SERVER_SIMULATION": 0, - "ANIMATION_SNAPSHOT_CLIENT_SIMULATION": 1, - "ANIMATION_SNAPSHOT_CLIENT_PREDICTION": 2, - "ANIMATION_SNAPSHOT_CLIENT_INTERPOLATION": 3, - "ANIMATION_SNAPSHOT_CLIENT_RENDER": 4, - "ANIMATION_SNAPSHOT_FINAL_COMPOSITE": 5, - "ANIMATION_SNAPSHOT_MAX": 6 - }, - "BoneTransformSpace_t": { - "BoneTransformSpace_Invalid": -1, - "BoneTransformSpace_Parent": 0, - "BoneTransformSpace_Model": 1, - "BoneTransformSpace_World": 2 - }, - "FootstepLandedFootSoundType_t": { - "FOOTSOUND_Left": 0, - "FOOTSOUND_Right": 1, - "FOOTSOUND_UseOverrideSound": 2 - }, - "MoodType_t": { - "eMoodType_Head": 0, - "eMoodType_Body": 1 - }, - "ParticleAttachment_t": { - "PATTACH_INVALID": -1, - "PATTACH_ABSORIGIN": 0, - "PATTACH_ABSORIGIN_FOLLOW": 1, - "PATTACH_CUSTOMORIGIN": 2, - "PATTACH_CUSTOMORIGIN_FOLLOW": 3, - "PATTACH_POINT": 4, - "PATTACH_POINT_FOLLOW": 5, - "PATTACH_EYES_FOLLOW": 6, - "PATTACH_OVERHEAD_FOLLOW": 7, - "PATTACH_WORLDORIGIN": 8, - "PATTACH_ROOTBONE_FOLLOW": 9, - "PATTACH_RENDERORIGIN_FOLLOW": 10, - "PATTACH_MAIN_VIEW": 11, - "PATTACH_WATERWAKE": 12, - "PATTACH_CENTER_FOLLOW": 13, - "PATTACH_CUSTOM_GAME_STATE_1": 14, - "PATTACH_HEALTHBAR": 15, - "MAX_PATTACH_TYPES": 16 - }, - "RagdollPoseControl": { - "Absolute": 0, - "Relative": 1 - }, - "SeqCmd_t": { - "SeqCmd_Nop": 0, - "SeqCmd_LinearDelta": 1, - "SeqCmd_FetchFrameRange": 2, - "SeqCmd_Slerp": 3, - "SeqCmd_Add": 4, - "SeqCmd_Subtract": 5, - "SeqCmd_Scale": 6, - "SeqCmd_Copy": 7, - "SeqCmd_Blend": 8, - "SeqCmd_Worldspace": 9, - "SeqCmd_Sequence": 10, - "SeqCmd_FetchCycle": 11, - "SeqCmd_FetchFrame": 12, - "SeqCmd_IKLockInPlace": 13, - "SeqCmd_IKRestoreAll": 14, - "SeqCmd_ReverseSequence": 15, - "SeqCmd_Transform": 16 - }, - "SeqPoseSetting_t": { - "SEQ_POSE_SETTING_CONSTANT": 0, - "SEQ_POSE_SETTING_ROTATION": 1, - "SEQ_POSE_SETTING_POSITION": 2, - "SEQ_POSE_SETTING_VELOCITY": 3 - }, - "AimMatrixBlendMode": { - "AimMatrixBlendMode_None": 0, - "AimMatrixBlendMode_Additive": 1, - "AimMatrixBlendMode_ModelSpaceAdditive": 2, - "AimMatrixBlendMode_BoneMask": 3 - }, - "AnimNodeNetworkMode": { - "ServerAuthoritative": 0, - "ClientSimulate": 1 - }, - "AnimScriptType": { - "ANIMSCRIPT_TYPE_INVALID": -1, - "ANIMSCRIPT_FUSE_GENERAL": 0, - "ANIMSCRIPT_FUSE_STATEMACHINE": 1 - }, - "AnimValueSource": { - "MoveHeading": 0, - "MoveSpeed": 1, - "ForwardSpeed": 2, - "StrafeSpeed": 3, - "FacingHeading": 4, - "LookHeading": 5, - "LookPitch": 6, - "LookDistance": 7, - "Parameter": 8, - "WayPointHeading": 9, - "WayPointDistance": 10, - "BoundaryRadius": 11, - "TargetMoveHeading": 12, - "TargetMoveSpeed": 13, - "AccelerationHeading": 14, - "AccelerationSpeed": 15, - "SlopeHeading": 16, - "SlopeAngle": 17, - "SlopePitch": 18, - "SlopeYaw": 19, - "GoalDistance": 20, - "AccelerationLeftRight": 21, - "AccelerationFrontBack": 22, - "RootMotionSpeed": 23, - "RootMotionTurnSpeed": 24, - "MoveHeadingRelativeToLookHeading": 25, - "MaxMoveSpeed": 26, - "FingerCurl_Thumb": 27, - "FingerCurl_Index": 28, - "FingerCurl_Middle": 29, - "FingerCurl_Ring": 30, - "FingerCurl_Pinky": 31, - "FingerSplay_Thumb_Index": 32, - "FingerSplay_Index_Middle": 33, - "FingerSplay_Middle_Ring": 34, - "FingerSplay_Ring_Pinky": 35 - }, - "AnimVectorSource": { - "MoveDirection": 0, - "FacingPosition": 1, - "LookDirection": 2, - "VectorParameter": 3, - "WayPointDirection": 4, - "Acceleration": 5, - "SlopeNormal": 6, - "SlopeNormal_WorldSpace": 7, - "LookTarget": 8, - "LookTarget_WorldSpace": 9, - "WayPointPosition": 10, - "GoalPosition": 11, - "RootMotionVelocity": 12, - "ManualTarget_WorldSpace": 13 - }, - "BinaryNodeChildOption": { - "Child1": 0, - "Child2": 1 - }, - "BinaryNodeTiming": { - "UseChild1": 0, - "UseChild2": 1, - "SyncChildren": 2 - }, - "Blend2DMode": { - "Blend2DMode_General": 0, - "Blend2DMode_Directional": 1 - }, - "BlendKeyType": { - "BlendKey_UserValue": 0, - "BlendKey_Velocity": 1, - "BlendKey_Distance": 2, - "BlendKey_RemainingDistance": 3 - }, - "BoneMaskBlendSpace": { - "BlendSpace_Parent": 0, - "BlendSpace_Model": 1, - "BlendSpace_Model_RotationOnly": 2, - "BlendSpace_Model_TranslationOnly": 3 - }, - "CAnimationGraphVisualizerPrimitiveType": { - "ANIMATIONGRAPHVISUALIZERPRIMITIVETYPE_Text": 0, - "ANIMATIONGRAPHVISUALIZERPRIMITIVETYPE_Sphere": 1, - "ANIMATIONGRAPHVISUALIZERPRIMITIVETYPE_Line": 2, - "ANIMATIONGRAPHVISUALIZERPRIMITIVETYPE_Pie": 3, - "ANIMATIONGRAPHVISUALIZERPRIMITIVETYPE_Axis": 4 - }, - "ChoiceBlendMethod": { - "SingleBlendTime": 0, - "PerChoiceBlendTimes": 1 - }, - "ChoiceChangeMethod": { - "OnReset": 0, - "OnCycleEnd": 1, - "OnResetOrCycleEnd": 2 - }, - "ChoiceMethod": { - "WeightedRandom": 0, - "WeightedRandomNoRepeat": 1, - "Iterate": 2, - "IterateRandom": 3 - }, - "DampingSpeedFunction": { - "NoDamping": 0, - "Constant": 1, - "Spring": 2 - }, - "EDemoBoneSelectionMode": { - "CaptureAllBones": 0, - "CaptureSelectedBones": 1 - }, - "EIKEndEffectorRotationFixUpMode": { - "None": 0, - "MatchTargetOrientation": 1, - "LookAtTargetForward": 2, - "MaintainParentOrientation": 3, - "Count": 4 - }, - "FacingMode": { - "FacingMode_Invalid": 0, - "FacingMode_Manual": 1, - "FacingMode_Path": 2, - "FacingMode_LookTarget": 3, - "FacingMode_ManualPosition": 4 - }, - "FieldNetworkOption": { - "Auto": 0, - "ForceEnable": 1, - "ForceDisable": 2 - }, - "FootFallTagFoot_t": { - "FOOT1": 0, - "FOOT2": 1, - "FOOT3": 2, - "FOOT4": 3, - "FOOT5": 4, - "FOOT6": 5, - "FOOT7": 6, - "FOOT8": 7 - }, - "FootLockSubVisualization": { - "FOOTLOCKSUBVISUALIZATION_ReachabilityAnalysis": 0, - "FOOTLOCKSUBVISUALIZATION_IKSolve": 1 - }, - "FootPinningTimingSource": { - "FootMotion": 0, - "Tag": 1, - "Parameter": 2 - }, - "HandshakeTagType_t": { - "eInvalid": -1, - "eTask": 0, - "eMovement": 1, - "eCount": 2 - }, - "IKChannelMode": { - "TwoBone": 0, - "TwoBone_Translate": 1, - "OneBone": 2, - "OneBone_Translate": 3 - }, - "IKSolverType": { - "IKSOLVER_Perlin": 0, - "IKSOLVER_TwoBone": 1, - "IKSOLVER_Fabrik": 2, - "IKSOLVER_DogLeg3Bone": 3, - "IKSOLVER_CCD": 4, - "IKSOLVER_COUNT": 5 - }, - "IKTargetCoordinateSystem": { - "IKTARGETCOORDINATESYSTEM_WorldSpace": 0, - "IKTARGETCOORDINATESYSTEM_ModelSpace": 1, - "IKTARGETCOORDINATESYSTEM_COUNT": 2 - }, - "IKTargetSource": { - "IKTARGETSOURCE_Bone": 0, - "IKTARGETSOURCE_AnimgraphParameter": 1, - "IKTARGETSOURCE_COUNT": 2 - }, - "IkEndEffectorType": { - "IkEndEffector_Attachment": 0, - "IkEndEffector_Bone": 1 - }, - "IkTargetType": { - "IkTarget_Attachment": 0, - "IkTarget_Bone": 1, - "IkTarget_Parameter_ModelSpace": 2, - "IkTarget_Parameter_WorldSpace": 3 - }, - "JiggleBoneSimSpace": { - "SimSpace_Local": 0, - "SimSpace_Model": 1, - "SimSpace_World": 2 - }, - "JumpCorrectionMethod": { - "ScaleMotion": 0, - "AddCorrectionDelta": 1 - }, - "MatterialAttributeTagType_t": { - "MATERIAL_ATTRIBUTE_TAG_VALUE": 0, - "MATERIAL_ATTRIBUTE_TAG_COLOR": 1 - }, - "PoseType_t": { - "POSETYPE_STATIC": 0, - "POSETYPE_DYNAMIC": 1, - "POSETYPE_INVALID": 255 - }, - "ResetCycleOption": { - "Beginning": 0, - "SameCycleAsSource": 1, - "InverseSourceCycle": 2, - "FixedValue": 3, - "SameTimeAsSource": 4 - }, - "SelectorTagBehavior_t": { - "SelectorTagBehavior_OnWhileCurrent": 0, - "SelectorTagBehavior_OffWhenFinished": 1, - "SelectorTagBehavior_OffBeforeFinished": 2 - }, - "SolveIKChainAnimNodeDebugSetting": { - "SOLVEIKCHAINANIMNODEDEBUGSETTING_None": 0, - "SOLVEIKCHAINANIMNODEDEBUGSETTING_X_Axis_Circle": 1, - "SOLVEIKCHAINANIMNODEDEBUGSETTING_Y_Axis_Circle": 2, - "SOLVEIKCHAINANIMNODEDEBUGSETTING_Z_Axis_Circle": 3, - "SOLVEIKCHAINANIMNODEDEBUGSETTING_Forward": 4, - "SOLVEIKCHAINANIMNODEDEBUGSETTING_Up": 5, - "SOLVEIKCHAINANIMNODEDEBUGSETTING_Left": 6 - }, - "StanceOverrideMode": { - "Sequence": 0, - "Node": 1 - }, - "StateActionBehavior": { - "STATETAGBEHAVIOR_ACTIVE_WHILE_CURRENT": 0, - "STATETAGBEHAVIOR_FIRE_ON_ENTER": 1, - "STATETAGBEHAVIOR_FIRE_ON_EXIT": 2, - "STATETAGBEHAVIOR_FIRE_ON_ENTER_AND_EXIT": 3 - }, - "StepPhase": { - "StepPhase_OnGround": 0, - "StepPhase_InAir": 1 - }, - "VelocityMetricMode": { - "DirectionOnly": 0, - "MagnitudeOnly": 1, - "DirectionAndMagnitude": 2 - }, - "NmCachedValueMode_t": { - "OnEntry": 0, - "OnExit": 1 - }, - "NmEasingFunction_t": { - "Linear": 0, - "Quad": 1, - "Cubic": 2, - "Quart": 3, - "Quint": 4, - "Sine": 5, - "Expo": 6, - "Circ": 7, - "Back": 8 - }, - "NmEasingOperation_t": { - "Linear": 0, - "InQuad": 1, - "OutQuad": 2, - "InOutQuad": 3, - "InCubic": 4, - "OutCubic": 5, - "InOutCubic": 6, - "InQuart": 7, - "OutQuart": 8, - "InOutQuart": 9, - "InQuint": 10, - "OutQuint": 11, - "InOutQuint": 12, - "InSine": 13, - "OutSine": 14, - "InOutSine": 15, - "InExpo": 16, - "OutExpo": 17, - "InOutExpo": 18, - "InCirc": 19, - "OutCirc": 20, - "InOutCirc": 21, - "None": 22 - }, - "NmEventConditionRules_t": { - "LimitSearchToSourceState": 0, - "IgnoreInactiveEvents": 1, - "PreferHighestWeight": 2, - "PreferHighestProgress": 3, - "OperatorOr": 4, - "OperatorAnd": 5, - "SearchOnlyStateEvents": 6, - "SearchOnlyAnimEvents": 7, - "SearchBothStateAndAnimEvents": 8 - }, - "NmFootPhaseCondition_t": { - "LeftFootDown": 0, - "LeftFootPassing": 1, - "LeftPhase": 4, - "RightFootDown": 2, - "RightFootPassing": 3, - "RightPhase": 5 - }, - "NmFootPhase_t": { - "LeftFootDown": 0, - "RightFootPassing": 1, - "RightFootDown": 2, - "LeftFootPassing": 3 - }, - "NmFrameSnapEventMode_t": { - "Floor": 0, - "Round": 1 - }, - "NmGraphValueType_t": { - "Unknown": 0, - "Bool": 1, - "ID": 2, - "Float": 3, - "Vector": 4, - "Target": 5, - "BoneMask": 6, - "Pose": 7, - "Special": 8 - }, - "NmPoseBlendMode_t": { - "Overlay": 0, - "Additive": 1, - "ModelSpace": 2 - }, - "NmRootMotionBlendMode_t": { - "Blend": 0, - "Additive": 1, - "IgnoreSource": 2, - "IgnoreTarget": 3 - }, - "NmStateEventTypeCondition_t": { - "Entry": 0, - "FullyInState": 1, - "Exit": 2, - "Timed": 3, - "Any": 4 - }, - "NmTargetWarpAlgorithm_t": { - "Lerp": 0, - "Hermite": 1, - "HermiteFeaturePreserving": 2, - "Bezier": 3 - }, - "NmTargetWarpRule_t": { - "WarpXY": 0, - "WarpZ": 1, - "WarpXYZ": 2, - "RotationOnly": 3 - }, - "NmTransitionRuleCondition_t": { - "AnyAllowed": 0, - "FullyAllowed": 1, - "ConditionallyAllowed": 2, - "Blocked": 3 - }, - "NmTransitionRule_t": { - "AllowTransition": 0, - "ConditionallyAllowTransition": 1, - "BlockTransition": 2 - }, - "AmmoFlags_t": { - "AMMO_FORCE_DROP_IF_CARRIED": 1, - "AMMO_RESERVE_STAYS_WITH_WEAPON": 2, - "AMMO_FLAG_MAX": 2 - }, - "AmmoPosition_t": { - "AMMO_POSITION_INVALID": -1, - "AMMO_POSITION_PRIMARY": 0, - "AMMO_POSITION_SECONDARY": 1, - "AMMO_POSITION_COUNT": 2 - }, - "AnimLoopMode_t": { - "ANIM_LOOP_MODE_INVALID": -1, - "ANIM_LOOP_MODE_NOT_LOOPING": 0, - "ANIM_LOOP_MODE_LOOPING": 1, - "ANIM_LOOP_MODE_USE_SEQUENCE_SETTINGS": 2, - "ANIM_LOOP_MODE_COUNT": 3 - }, - "BaseExplosionTypes_t": { - "EXPLOSION_TYPE_DEFAULT": 0, - "EXPLOSION_TYPE_GRENADE": 1, - "EXPLOSION_TYPE_MOLOTOV": 2, - "EXPLOSION_TYPE_FIREWORKS": 3, - "EXPLOSION_TYPE_GASCAN": 4, - "EXPLOSION_TYPE_GASCYLINDER": 5, - "EXPLOSION_TYPE_EXPLOSIVEBARREL": 6, - "EXPLOSION_TYPE_ELECTRICAL": 7, - "EXPLOSION_TYPE_EMP": 8, - "EXPLOSION_TYPE_SHRAPNEL": 9, - "EXPLOSION_TYPE_SMOKEGRENADE": 10, - "EXPLOSION_TYPE_FLASHBANG": 11, - "EXPLOSION_TYPE_TRIPMINE": 12, - "EXPLOSION_TYPE_ICE": 13, - "EXPLOSION_TYPE_NONE": 14, - "EXPLOSION_TYPE_CUSTOM": 15, - "EXPLOSION_TYPE_COUNT": 16 - }, - "BeamClipStyle_t": { - "kNOCLIP": 0, - "kGEOCLIP": 1, - "kMODELCLIP": 2, - "kBEAMCLIPSTYLE_NUMBITS": 2 - }, - "BeamType_t": { - "BEAM_INVALID": 0, - "BEAM_POINTS": 1, - "BEAM_ENTPOINT": 2, - "BEAM_ENTS": 3, - "BEAM_HOSE": 4, - "BEAM_SPLINE": 5, - "BEAM_LASER": 6 - }, - "BeginDeathLifeStateTransition_t": { - "NO_CHANGE_IN_LIFESTATE": 0, - "TRANSITION_TO_LIFESTATE_DYING": 1, - "TRANSITION_TO_LIFESTATE_DEAD": 2 - }, - "BloodType": { - "None": -1, - "ColorRed": 0, - "ColorYellow": 1, - "ColorGreen": 2, - "ColorRedLVL2": 3, - "ColorRedLVL3": 4, - "ColorRedLVL4": 5, - "ColorRedLVL5": 6, - "ColorRedLVL6": 7 - }, - "BreakableContentsType_t": { - "BC_DEFAULT": 0, - "BC_EMPTY": 1, - "BC_PROP_GROUP_OVERRIDE": 2, - "BC_PARTICLE_SYSTEM_OVERRIDE": 3 - }, - "BrushSolidities_e": { - "BRUSHSOLID_TOGGLE": 0, - "BRUSHSOLID_NEVER": 1, - "BRUSHSOLID_ALWAYS": 2 - }, - "C4LightEffect_t": { - "eLightEffectNone": 0, - "eLightEffectDropped": 1, - "eLightEffectThirdPersonHeld": 2 - }, - "CDebugOverlayCombinedTypes_t": { - "ALL": 0, - "ANY": 1, - "COUNT": 2 - }, - "CDebugOverlayFilterType_t": { - "NONE": 0, - "TEXT": 1, - "ENTITY": 2, - "COUNT": 3, - "TACTICAL_SEARCH": 4, - "AI_SCHEDULE": 5, - "AI_TASK": 6, - "AI_EVENT": 7, - "END_SIM_HISTORY_TYPES": 8, - "COMBINED": -1 - }, - "CSPlayerBlockingUseAction_t": { - "k_CSPlayerBlockingUseAction_None": 0, - "k_CSPlayerBlockingUseAction_DefusingDefault": 1, - "k_CSPlayerBlockingUseAction_DefusingWithKit": 2, - "k_CSPlayerBlockingUseAction_HostageGrabbing": 3, - "k_CSPlayerBlockingUseAction_HostageDropping": 4, - "k_CSPlayerBlockingUseAction_OpeningSafe": 5, - "k_CSPlayerBlockingUseAction_EquippingParachute": 6, - "k_CSPlayerBlockingUseAction_EquippingHeavyArmor": 7, - "k_CSPlayerBlockingUseAction_EquippingContract": 8, - "k_CSPlayerBlockingUseAction_EquippingTabletUpgrade": 9, - "k_CSPlayerBlockingUseAction_TakingOffHeavyArmor": 10, - "k_CSPlayerBlockingUseAction_PayingToOpenDoor": 11, - "k_CSPlayerBlockingUseAction_CancelingSpawnRappelling": 12, - "k_CSPlayerBlockingUseAction_EquippingExoJump": 13, - "k_CSPlayerBlockingUseAction_PickingUpBumpMine": 14, - "k_CSPlayerBlockingUseAction_MapLongUseEntity_Pickup": 15, - "k_CSPlayerBlockingUseAction_MapLongUseEntity_Place": 16, - "k_CSPlayerBlockingUseAction_MaxCount": 17 - }, - "CSPlayerState": { - "STATE_ACTIVE": 0, - "STATE_WELCOME": 1, - "STATE_PICKINGTEAM": 2, - "STATE_PICKINGCLASS": 3, - "STATE_DEATH_ANIM": 4, - "STATE_DEATH_WAIT_FOR_KEY": 5, - "STATE_OBSERVER_MODE": 6, - "STATE_GUNGAME_RESPAWN": 7, - "STATE_DORMANT": 8, - "NUM_PLAYER_STATES": 9 - }, - "CSWeaponCategory": { - "WEAPONCATEGORY_OTHER": 0, - "WEAPONCATEGORY_MELEE": 1, - "WEAPONCATEGORY_SECONDARY": 2, - "WEAPONCATEGORY_SMG": 3, - "WEAPONCATEGORY_RIFLE": 4, - "WEAPONCATEGORY_HEAVY": 5, - "WEAPONCATEGORY_COUNT": 6 - }, - "CSWeaponMode": { - "Primary_Mode": 0, - "Secondary_Mode": 1, - "WeaponMode_MAX": 2 - }, - "CSWeaponSilencerType": { - "WEAPONSILENCER_NONE": 0, - "WEAPONSILENCER_DETACHABLE": 1, - "WEAPONSILENCER_INTEGRATED": 2 - }, - "CSWeaponState_t": { - "WEAPON_NOT_CARRIED": 0, - "WEAPON_IS_CARRIED_BY_PLAYER": 1, - "WEAPON_IS_ACTIVE": 2 - }, - "CSWeaponType": { - "WEAPONTYPE_KNIFE": 0, - "WEAPONTYPE_PISTOL": 1, - "WEAPONTYPE_SUBMACHINEGUN": 2, - "WEAPONTYPE_RIFLE": 3, - "WEAPONTYPE_SHOTGUN": 4, - "WEAPONTYPE_SNIPER_RIFLE": 5, - "WEAPONTYPE_MACHINEGUN": 6, - "WEAPONTYPE_C4": 7, - "WEAPONTYPE_TASER": 8, - "WEAPONTYPE_GRENADE": 9, - "WEAPONTYPE_EQUIPMENT": 10, - "WEAPONTYPE_STACKABLEITEM": 11, - "WEAPONTYPE_FISTS": 12, - "WEAPONTYPE_BREACHCHARGE": 13, - "WEAPONTYPE_BUMPMINE": 14, - "WEAPONTYPE_TABLET": 15, - "WEAPONTYPE_MELEE": 16, - "WEAPONTYPE_SHIELD": 17, - "WEAPONTYPE_ZONE_REPULSOR": 18, - "WEAPONTYPE_UNKNOWN": 19 - }, - "CanPlaySequence_t": { - "CANNOT_PLAY": 0, - "CAN_PLAY_NOW": 1, - "CAN_PLAY_ENQUEUED": 2 - }, - "ChatIgnoreType_t": { - "CHAT_IGNORE_NONE": 0, - "CHAT_IGNORE_ALL": 1, - "CHAT_IGNORE_TEAM": 2 - }, - "ChoreoLookAtMode_t": { - "eInvalid": -1, - "eChest": 0, - "eHead": 1, - "eEyesOnly": 2 - }, - "ChoreoLookAtSpeed_t": { - "eInvalid": -1, - "eSlow": 0, - "eMedium": 1, - "eFast": 2 - }, - "Class_T": { - "CLASS_NONE": 0, - "CLASS_PLAYER": 1, - "CLASS_PLAYER_ALLY": 2, - "CLASS_BOMB": 3, - "CLASS_FOOT_CONTACT_SHADOW": 4, - "CLASS_WEAPON": 5, - "CLASS_WATER_SPLASHER": 6, - "CLASS_WEAPON_VIEWMODEL": 7, - "CLASS_DOOR": 8, - "NUM_CLASSIFY_CLASSES": 9 - }, - "CommandEntitySpecType_t": { - "SPEC_SEARCH": 0, - "SPEC_TYPES_COUNT": 1 - }, - "CommandExecMode_t": { - "EXEC_MANUAL": 0, - "EXEC_LEVELSTART": 1, - "EXEC_PERIODIC": 2, - "EXEC_MODES_COUNT": 3 - }, - "CompMatPropertyMutatorConditionType_t": { - "COMP_MAT_MUTATOR_CONDITION_INPUT_CONTAINER_EXISTS": 0, - "COMP_MAT_MUTATOR_CONDITION_INPUT_CONTAINER_VALUE_EXISTS": 1, - "COMP_MAT_MUTATOR_CONDITION_INPUT_CONTAINER_VALUE_EQUALS": 2 - }, - "CompMatPropertyMutatorType_t": { - "COMP_MAT_PROPERTY_MUTATOR_INIT": 0, - "COMP_MAT_PROPERTY_MUTATOR_COPY_MATCHING_KEYS": 1, - "COMP_MAT_PROPERTY_MUTATOR_COPY_KEYS_WITH_SUFFIX": 2, - "COMP_MAT_PROPERTY_MUTATOR_COPY_PROPERTY": 3, - "COMP_MAT_PROPERTY_MUTATOR_SET_VALUE": 4, - "COMP_MAT_PROPERTY_MUTATOR_GENERATE_TEXTURE": 5, - "COMP_MAT_PROPERTY_MUTATOR_CONDITIONAL_MUTATORS": 6, - "COMP_MAT_PROPERTY_MUTATOR_POP_INPUT_QUEUE": 7, - "COMP_MAT_PROPERTY_MUTATOR_DRAW_TEXT": 8, - "COMP_MAT_PROPERTY_MUTATOR_RANDOM_ROLL_INPUT_VARIABLES": 9 - }, - "CompositeMaterialInputContainerSourceType_t": { - "CONTAINER_SOURCE_TYPE_TARGET_MATERIAL": 0, - "CONTAINER_SOURCE_TYPE_MATERIAL_FROM_TARGET_ATTR": 1, - "CONTAINER_SOURCE_TYPE_SPECIFIC_MATERIAL": 2, - "CONTAINER_SOURCE_TYPE_LOOSE_VARIABLES": 3, - "CONTAINER_SOURCE_TYPE_VARIABLE_FROM_TARGET_ATTR": 4, - "CONTAINER_SOURCE_TYPE_TARGET_INSTANCE_MATERIAL": 5 - }, - "CompositeMaterialInputLooseVariableType_t": { - "LOOSE_VARIABLE_TYPE_BOOLEAN": 0, - "LOOSE_VARIABLE_TYPE_INTEGER1": 1, - "LOOSE_VARIABLE_TYPE_INTEGER2": 2, - "LOOSE_VARIABLE_TYPE_INTEGER3": 3, - "LOOSE_VARIABLE_TYPE_INTEGER4": 4, - "LOOSE_VARIABLE_TYPE_FLOAT1": 5, - "LOOSE_VARIABLE_TYPE_FLOAT2": 6, - "LOOSE_VARIABLE_TYPE_FLOAT3": 7, - "LOOSE_VARIABLE_TYPE_FLOAT4": 8, - "LOOSE_VARIABLE_TYPE_COLOR4": 9, - "LOOSE_VARIABLE_TYPE_STRING": 10, - "LOOSE_VARIABLE_TYPE_SYSTEMVAR": 11, - "LOOSE_VARIABLE_TYPE_RESOURCE_MATERIAL": 12, - "LOOSE_VARIABLE_TYPE_RESOURCE_TEXTURE": 13, - "LOOSE_VARIABLE_TYPE_PANORAMA_RENDER": 14 - }, - "CompositeMaterialInputTextureType_t": { - "INPUT_TEXTURE_TYPE_DEFAULT": 0, - "INPUT_TEXTURE_TYPE_NORMALMAP": 1, - "INPUT_TEXTURE_TYPE_COLOR": 2, - "INPUT_TEXTURE_TYPE_MASKS": 3, - "INPUT_TEXTURE_TYPE_ROUGHNESS": 4, - "INPUT_TEXTURE_TYPE_PEARLESCENCE_MASK": 5, - "INPUT_TEXTURE_TYPE_AO": 6 - }, - "CompositeMaterialMatchFilterType_t": { - "MATCH_FILTER_MATERIAL_ATTRIBUTE_EXISTS": 0, - "MATCH_FILTER_MATERIAL_SHADER": 1, - "MATCH_FILTER_MATERIAL_NAME_SUBSTR": 2, - "MATCH_FILTER_MATERIAL_ATTRIBUTE_EQUALS": 3, - "MATCH_FILTER_MATERIAL_PROPERTY_EXISTS": 4, - "MATCH_FILTER_MATERIAL_PROPERTY_EQUALS": 5 - }, - "CompositeMaterialVarSystemVar_t": { - "COMPMATSYSVAR_COMPOSITETIME": 0, - "COMPMATSYSVAR_EMPTY_RESOURCE_SPACER": 1 - }, - "DamageTypes_t": { - "DMG_GENERIC": 0, - "DMG_CRUSH": 1, - "DMG_BULLET": 2, - "DMG_SLASH": 4, - "DMG_BURN": 8, - "DMG_VEHICLE": 16, - "DMG_FALL": 32, - "DMG_BLAST": 64, - "DMG_CLUB": 128, - "DMG_SHOCK": 256, - "DMG_SONIC": 512, - "DMG_ENERGYBEAM": 1024, - "DMG_DROWN": 16384, - "DMG_POISON": 32768, - "DMG_RADIATION": 65536, - "DMG_DROWNRECOVER": 131072, - "DMG_ACID": 262144, - "DMG_PHYSGUN": 1048576, - "DMG_DISSOLVE": 2097152, - "DMG_BLAST_SURFACE": 4194304, - "DMG_BUCKSHOT": 16777216, - "DMG_LASTGENERICFLAG": 16777216, - "DMG_HEADSHOT": 33554432, - "DMG_DANGERZONE": 67108864 - }, - "DebugOverlayBits_t": { - "OVERLAY_TEXT_BIT": 1, - "OVERLAY_NAME_BIT": 2, - "OVERLAY_BBOX_BIT": 4, - "OVERLAY_PIVOT_BIT": 8, - "OVERLAY_MESSAGE_BIT": 16, - "OVERLAY_ABSBOX_BIT": 32, - "OVERLAY_RBOX_BIT": 64, - "OVERLAY_SHOW_BLOCKSLOS": 128, - "OVERLAY_ATTACHMENTS_BIT": 256, - "OVERLAY_INTERPOLATED_ATTACHMENTS_BIT": 512, - "OVERLAY_INTERPOLATED_PIVOT_BIT": 1024, - "OVERLAY_SKELETON_BIT": 2048, - "OVERLAY_INTERPOLATED_SKELETON_BIT": 4096, - "OVERLAY_TRIGGER_BOUNDS_BIT": 8192, - "OVERLAY_HITBOX_BIT": 16384, - "OVERLAY_INTERPOLATED_HITBOX_BIT": 32768, - "OVERLAY_AUTOAIM_BIT": 65536, - "OVERLAY_NPC_SELECTED_BIT": 131072, - "OVERLAY_JOINT_INFO_BIT": 262144, - "OVERLAY_NPC_ROUTE_BIT": 524288, - "OVERLAY_VISIBILITY_TRACES_BIT": 1048576, - "OVERLAY_NPC_ENEMIES_BIT": 4194304, - "OVERLAY_NPC_CONDITIONS_BIT": 8388608, - "OVERLAY_NPC_COMBAT_BIT": 16777216, - "OVERLAY_NPC_TASK_BIT": 33554432, - "OVERLAY_NPC_BODYLOCATIONS": 67108864, - "OVERLAY_NPC_VIEWCONE_BIT": 134217728, - "OVERLAY_NPC_KILL_BIT": 268435456, - "OVERLAY_WC_CHANGE_ENTITY": 536870912, - "OVERLAY_BUDDHA_MODE": 1073741824, - "OVERLAY_NPC_STEERING_REGULATIONS": 2147483648, - "OVERLAY_NPC_TASK_TEXT_BIT": 4294967296, - "OVERLAY_PROP_DEBUG": 8589934592, - "OVERLAY_NPC_RELATION_BIT": 17179869184, - "OVERLAY_VIEWOFFSET": 34359738368, - "OVERLAY_VCOLLIDE_WIREFRAME_BIT": 68719476736, - "OVERLAY_NPC_SCRIPTED_COMMANDS_BIT": 137438953472, - "OVERLAY_ACTORNAME_BIT": 274877906944, - "OVERLAY_NPC_CONDITIONS_TEXT_BIT": 549755813888, - "OVERLAY_NPC_ABILITY_RANGE_DEBUG_BIT": 1099511627776 - }, - "Disposition_t": { - "D_ER": 0, - "D_HT": 1, - "D_FR": 2, - "D_LI": 3, - "D_NU": 4, - "D_ERROR": 0, - "D_HATE": 1, - "D_FEAR": 2, - "D_LIKE": 3, - "D_NEUTRAL": 4 - }, - "DoorState_t": { - "DOOR_STATE_CLOSED": 0, - "DOOR_STATE_OPENING": 1, - "DOOR_STATE_OPEN": 2, - "DOOR_STATE_CLOSING": 3, - "DOOR_STATE_AJAR": 4 - }, - "EContributionScoreFlag_t": { - "k_EContributionScoreFlag_Default": 0, - "k_EContributionScoreFlag_Objective": 1, - "k_EContributionScoreFlag_Bullets": 2 - }, - "EDestructiblePartDamagePassThroughType": { - "Normal": 0, - "Absorb": 1 - }, - "EInButtonState": { - "IN_BUTTON_UP": 0, - "IN_BUTTON_DOWN": 1, - "IN_BUTTON_DOWN_UP": 2, - "IN_BUTTON_UP_DOWN": 3, - "IN_BUTTON_UP_DOWN_UP": 4, - "IN_BUTTON_DOWN_UP_DOWN": 5, - "IN_BUTTON_DOWN_UP_DOWN_UP": 6, - "IN_BUTTON_UP_DOWN_UP_DOWN": 7, - "IN_BUTTON_STATE_COUNT": 8 - }, - "EKillTypes_t": { - "KILL_NONE": 0, - "KILL_DEFAULT": 1, - "KILL_HEADSHOT": 2, - "KILL_BLAST": 3, - "KILL_BURN": 4, - "KILL_SLASH": 5, - "KILL_SHOCK": 6, - "KILLTYPE_COUNT": 7 - }, - "EProceduralRagdollWeightIndexPropagationMethod": { - "Bone": 0, - "BoneAndChildren": 1 - }, - "EntityDisolveType_t": { - "ENTITY_DISSOLVE_INVALID": -1, - "ENTITY_DISSOLVE_NORMAL": 0, - "ENTITY_DISSOLVE_ELECTRICAL": 1, - "ENTITY_DISSOLVE_ELECTRICAL_LIGHT": 2, - "ENTITY_DISSOLVE_CORE": 3 - }, - "EntityDistanceMode_t": { - "eOriginToOrigin": 0, - "eCenterToCenter": 1, - "eAxisToAxis": 2 - }, - "EntityPlatformTypes_t": { - "ENTITY_NOT_PLATFORM": 0, - "ENTITY_PLATFORM_PLAYER_FOLLOWS_YAW": 1, - "ENTITY_PLATFORM_PLAYER_IGNORES_YAW": 2 - }, - "EntitySubclassScope_t": { - "SUBCLASS_SCOPE_NONE": -1, - "SUBCLASS_SCOPE_PRECIPITATION": 0, - "SUBCLASS_SCOPE_PLAYER_WEAPONS": 1, - "SUBCLASS_SCOPE_COUNT": 2 - }, - "FixAngleSet_t": { - "None": 0, - "Absolute": 1, - "Relative": 2 - }, - "GameAnimEventIndex_t": { - "AE_EMPTY": 0, - "AE_CL_PLAYSOUND": 1, - "AE_CL_PLAYSOUND_ATTACHMENT": 2, - "AE_CL_PLAYSOUND_POSITION": 3, - "AE_SV_PLAYSOUND": 4, - "AE_CL_STOPSOUND": 5, - "AE_CL_PLAYSOUND_LOOPING": 6, - "AE_CL_CREATE_PARTICLE_EFFECT": 7, - "AE_CL_STOP_PARTICLE_EFFECT": 8, - "AE_CL_CREATE_PARTICLE_EFFECT_CFG": 9, - "AE_SV_CREATE_PARTICLE_EFFECT_CFG": 10, - "AE_SV_STOP_PARTICLE_EFFECT": 11, - "AE_FOOTSTEP": 12, - "AE_RAGDOLL": 13, - "AE_CL_STOP_RAGDOLL_CONTROL": 14, - "AE_CL_ENABLE_BODYGROUP": 15, - "AE_CL_DISABLE_BODYGROUP": 16, - "AE_BODYGROUP_SET_VALUE": 17, - "AE_CL_BODYGROUP_SET_VALUE_CMODEL_WPN": 18, - "AE_WEAPON_PERFORM_ATTACK": 19, - "AE_FIRE_INPUT": 20, - "AE_CL_CLOTH_ATTR": 21, - "AE_CL_CLOTH_GROUND_OFFSET": 22, - "AE_CL_CLOTH_STIFFEN": 23, - "AE_CL_CLOTH_EFFECT": 24, - "AE_CL_CREATE_ANIM_SCOPE_PROP": 25, - "AE_SV_IKLOCK": 26, - "AE_PULSE_GRAPH": 27, - "AE_PULSE_GRAPH_LOOKAT": 28, - "AE_PULSE_GRAPH_AIMAT": 29, - "AE_PULSE_GRAPH_IKLOCKLEFTARM": 30, - "AE_PULSE_GRAPH_IKLOCKRIGHTARM": 31, - "AE_DISABLE_PLATFORM": 32, - "AE_ENABLE_PLATFORM": 33, - "AE_ANIMGRAPH_SET_PARAM": 34, - "AE_CL_WEAPON_TRANSITION_INTO_HAND": 35, - "AE_CL_BODYGROUP_SET_TO_CLIP": 36, - "AE_CL_BODYGROUP_SET_TO_NEXTCLIP": 37, - "AE_SV_SHOW_SILENCER": 38, - "AE_SV_ATTACH_SILENCER_COMPLETE": 39, - "AE_SV_HIDE_SILENCER": 40, - "AE_SV_DETACH_SILENCER_COMPLETE": 41, - "AE_CL_EJECT_MAG": 42, - "AE_WPN_COMPLETE_RELOAD": 43, - "AE_WPN_HEALTHSHOT_INJECT": 44, - "AE_CL_C4_SCREEN_TEXT": 45, - "AE_GRENADE_THROW_COMPLETE": 46 - }, - "GrenadeType_t": { - "GRENADE_TYPE_EXPLOSIVE": 0, - "GRENADE_TYPE_FLASH": 1, - "GRENADE_TYPE_FIRE": 2, - "GRENADE_TYPE_DECOY": 3, - "GRENADE_TYPE_SMOKE": 4, - "GRENADE_TYPE_SENSOR": 5, - "GRENADE_TYPE_SNOWBALL": 6, - "GRENADE_TYPE_TOTAL": 7 - }, - "HierarchyType_t": { - "HIERARCHY_NONE": 0, - "HIERARCHY_BONE_MERGE": 1, - "HIERARCHY_ATTACHMENT": 2, - "HIERARCHY_ABSORIGIN": 3, - "HIERARCHY_BONE": 4, - "HIERARCHY_TYPE_COUNT": 5 - }, - "HitGroup_t": { - "HITGROUP_INVALID": -1, - "HITGROUP_GENERIC": 0, - "HITGROUP_HEAD": 1, - "HITGROUP_CHEST": 2, - "HITGROUP_STOMACH": 3, - "HITGROUP_LEFTARM": 4, - "HITGROUP_RIGHTARM": 5, - "HITGROUP_LEFTLEG": 6, - "HITGROUP_RIGHTLEG": 7, - "HITGROUP_NECK": 8, - "HITGROUP_UNUSED": 9, - "HITGROUP_GEAR": 10, - "HITGROUP_SPECIAL": 11, - "HITGROUP_COUNT": 12 - }, - "Hull_t": { - "HULL_HUMAN": 0, - "HULL_SMALL_CENTERED": 1, - "HULL_WIDE_HUMAN": 2, - "HULL_TINY": 3, - "HULL_MEDIUM": 4, - "HULL_TINY_CENTERED": 5, - "HULL_LARGE": 6, - "HULL_LARGE_CENTERED": 7, - "HULL_MEDIUM_TALL": 8, - "HULL_SMALL": 9, - "NUM_HULLS": 10, - "HULL_NONE": 11 - }, - "InputBitMask_t": { - "IN_NONE": 0, - "IN_ALL": -1, - "IN_ATTACK": 1, - "IN_JUMP": 2, - "IN_DUCK": 4, - "IN_FORWARD": 8, - "IN_BACK": 16, - "IN_USE": 32, - "IN_TURNLEFT": 128, - "IN_TURNRIGHT": 256, - "IN_MOVELEFT": 512, - "IN_MOVERIGHT": 1024, - "IN_ATTACK2": 2048, - "IN_RELOAD": 8192, - "IN_SPEED": 65536, - "IN_JOYAUTOSPRINT": 131072, - "IN_FIRST_MOD_SPECIFIC_BIT": 4294967296, - "IN_USEORRELOAD": 4294967296, - "IN_SCORE": 8589934592, - "IN_ZOOM": 17179869184, - "IN_LOOK_AT_WEAPON": 34359738368 - }, - "ItemFlagTypes_t": { - "ITEM_FLAG_NONE": 0, - "ITEM_FLAG_CAN_SELECT_WITHOUT_AMMO": 1, - "ITEM_FLAG_NOAUTORELOAD": 2, - "ITEM_FLAG_NOAUTOSWITCHEMPTY": 4, - "ITEM_FLAG_LIMITINWORLD": 8, - "ITEM_FLAG_EXHAUSTIBLE": 16, - "ITEM_FLAG_DOHITLOCATIONDMG": 32, - "ITEM_FLAG_NOAMMOPICKUPS": 64, - "ITEM_FLAG_NOITEMPICKUP": 128 - }, - "LatchDirtyPermission_t": { - "LATCH_DIRTY_DISALLOW": 0, - "LATCH_DIRTY_SERVER_CONTROLLED": 1, - "LATCH_DIRTY_CLIENT_SIMULATED": 2, - "LATCH_DIRTY_PREDICTION": 3, - "LATCH_DIRTY_FRAMESIMULATE": 4, - "LATCH_DIRTY_PARTICLE_SIMULATE": 5 - }, - "LifeState_t": { - "LIFE_ALIVE": 0, - "LIFE_DYING": 1, - "LIFE_DEAD": 2, - "LIFE_RESPAWNABLE": 3, - "LIFE_RESPAWNING": 4 - }, - "MedalRank_t": { - "MEDAL_RANK_NONE": 0, - "MEDAL_RANK_BRONZE": 1, - "MEDAL_RANK_SILVER": 2, - "MEDAL_RANK_GOLD": 3, - "MEDAL_RANK_COUNT": 4 - }, - "ModifyDamageReturn_t": { - "CONTINUE_TO_APPLY_DAMAGE": 0, - "ABORT_DO_NOT_APPLY_DAMAGE": 1 - }, - "MoveCollide_t": { - "MOVECOLLIDE_DEFAULT": 0, - "MOVECOLLIDE_FLY_BOUNCE": 1, - "MOVECOLLIDE_FLY_CUSTOM": 2, - "MOVECOLLIDE_FLY_SLIDE": 3, - "MOVECOLLIDE_COUNT": 4, - "MOVECOLLIDE_MAX_BITS": 3 - }, - "MoveMountingAmount_t": { - "MOVE_MOUNT_NONE": 0, - "MOVE_MOUNT_LOW": 1, - "MOVE_MOUNT_HIGH": 2, - "MOVE_MOUNT_MAXCOUNT": 3 - }, - "MoveType_t": { - "MOVETYPE_NONE": 0, - "MOVETYPE_OBSOLETE": 1, - "MOVETYPE_WALK": 2, - "MOVETYPE_FLY": 3, - "MOVETYPE_FLYGRAVITY": 4, - "MOVETYPE_VPHYSICS": 5, - "MOVETYPE_PUSH": 6, - "MOVETYPE_NOCLIP": 7, - "MOVETYPE_OBSERVER": 8, - "MOVETYPE_LADDER": 9, - "MOVETYPE_CUSTOM": 10, - "MOVETYPE_LAST": 11, - "MOVETYPE_INVALID": 11, - "MOVETYPE_MAX_BITS": 5 - }, - "ObserverInterpState_t": { - "OBSERVER_INTERP_NONE": 0, - "OBSERVER_INTERP_TRAVELING": 1, - "OBSERVER_INTERP_SETTLING": 2 - }, - "ObserverMode_t": { - "OBS_MODE_NONE": 0, - "OBS_MODE_FIXED": 1, - "OBS_MODE_IN_EYE": 2, - "OBS_MODE_CHASE": 3, - "OBS_MODE_ROAMING": 4, - "OBS_MODE_DIRECTED": 5, - "NUM_OBSERVER_MODES": 6 - }, - "OnFrame": { - "ONFRAME_UNKNOWN": 0, - "ONFRAME_TRUE": 1, - "ONFRAME_FALSE": 2 - }, - "PerformanceMode_t": { - "PM_NORMAL": 0, - "PM_NO_GIBS": 1, - "PM_FULL_GIBS": 2, - "PM_REDUCED_GIBS": 3 - }, - "PlayerAnimEvent_t": { - "PLAYERANIMEVENT_FIRE_GUN_PRIMARY": 0, - "PLAYERANIMEVENT_FIRE_GUN_SECONDARY": 1, - "PLAYERANIMEVENT_GRENADE_PULL_PIN": 2, - "PLAYERANIMEVENT_THROW_GRENADE": 3, - "PLAYERANIMEVENT_JUMP": 4, - "PLAYERANIMEVENT_RELOAD": 5, - "PLAYERANIMEVENT_CLEAR_FIRING": 6, - "PLAYERANIMEVENT_DEPLOY": 7, - "PLAYERANIMEVENT_SILENCER_STATE": 8, - "PLAYERANIMEVENT_SILENCER_TOGGLE": 9, - "PLAYERANIMEVENT_THROW_GRENADE_UNDERHAND": 10, - "PLAYERANIMEVENT_CATCH_WEAPON": 11, - "PLAYERANIMEVENT_LOOKATWEAPON_REQUEST": 12, - "PLAYERANIMEVENT_RELOAD_CANCEL_LOOKATWEAPON": 13, - "PLAYERANIMEVENT_HAULBACK": 14, - "PLAYERANIMEVENT_IDLE": 15, - "PLAYERANIMEVENT_STRIKE_HIT": 16, - "PLAYERANIMEVENT_STRIKE_MISS": 17, - "PLAYERANIMEVENT_BACKSTAB": 18, - "PLAYERANIMEVENT_DRYFIRE": 19, - "PLAYERANIMEVENT_FIDGET": 20, - "PLAYERANIMEVENT_RELEASE": 21, - "PLAYERANIMEVENT_TAUNT": 22, - "PLAYERANIMEVENT_COUNT": 23 - }, - "PlayerConnectedState": { - "PlayerNeverConnected": -1, - "PlayerConnected": 0, - "PlayerConnecting": 1, - "PlayerReconnecting": 2, - "PlayerDisconnecting": 3, - "PlayerDisconnected": 4, - "PlayerReserved": 5 - }, - "PointTemplateClientOnlyEntityBehavior_t": { - "CREATE_FOR_CURRENTLY_CONNECTED_CLIENTS_ONLY": 0, - "CREATE_FOR_CLIENTS_WHO_CONNECT_LATER": 1 - }, - "PointTemplateOwnerSpawnGroupType_t": { - "INSERT_INTO_POINT_TEMPLATE_SPAWN_GROUP": 0, - "INSERT_INTO_CURRENTLY_ACTIVE_SPAWN_GROUP": 1, - "INSERT_INTO_NEWLY_CREATED_SPAWN_GROUP": 2 - }, - "PointWorldTextJustifyHorizontal_t": { - "POINT_WORLD_TEXT_JUSTIFY_HORIZONTAL_LEFT": 0, - "POINT_WORLD_TEXT_JUSTIFY_HORIZONTAL_CENTER": 1, - "POINT_WORLD_TEXT_JUSTIFY_HORIZONTAL_RIGHT": 2 - }, - "PointWorldTextJustifyVertical_t": { - "POINT_WORLD_TEXT_JUSTIFY_VERTICAL_BOTTOM": 0, - "POINT_WORLD_TEXT_JUSTIFY_VERTICAL_CENTER": 1, - "POINT_WORLD_TEXT_JUSTIFY_VERTICAL_TOP": 2 - }, - "PointWorldTextReorientMode_t": { - "POINT_WORLD_TEXT_REORIENT_NONE": 0, - "POINT_WORLD_TEXT_REORIENT_AROUND_UP": 1 - }, - "PreviewCharacterMode": { - "DIORAMA": 0, - "MAIN_MENU": 1, - "BUY_MENU": 2, - "TEAM_SELECT": 3, - "END_OF_MATCH": 4, - "INVENTORY_INSPECT": 5, - "WALKING": 6, - "TEAM_INTRO": 7, - "WINGMAN_INTRO": 8, - "BANNER": 9 - }, - "PreviewEOMCelebration": { - "WALKUP": 0, - "PUNCHING": 1, - "SWAGGER": 2, - "DROPDOWN": 3, - "STRETCH": 4, - "SWAT_FEMALE": 5, - "MASK_F": 6, - "GUERILLA": 7, - "GUERILLA02": 8, - "GENDARMERIE": 9, - "SCUBA_FEMALE": 10, - "SCUBA_MALE": 11, - "AVA_DEFEAT": 12, - "GENDARMERIE_DEFEAT": 13, - "MAE_DEFEAT": 14, - "RICKSAW_DEFEAT": 15, - "SCUBA_FEMALE_DEFEAT": 16, - "SCUBA_MALE_DEFEAT": 17, - "CRASSWATER_DEFEAT": 18, - "DARRYL_DEFEAT": 19, - "DOCTOR_DEFEAT": 20, - "MUHLIK_DEFEAT": 21, - "VYPA_DEFEAT": 22 - }, - "PreviewWeaponState": { - "DROPPED": 0, - "HOLSTERED": 1, - "DEPLOYED": 2, - "PLANTED": 3, - "INSPECT": 4, - "ICON": 5 - }, - "RenderFx_t": { - "kRenderFxNone": 0, - "kRenderFxPulseSlow": 1, - "kRenderFxPulseFast": 2, - "kRenderFxPulseSlowWide": 3, - "kRenderFxPulseFastWide": 4, - "kRenderFxFadeSlow": 5, - "kRenderFxFadeFast": 6, - "kRenderFxSolidSlow": 7, - "kRenderFxSolidFast": 8, - "kRenderFxStrobeSlow": 9, - "kRenderFxStrobeFast": 10, - "kRenderFxStrobeFaster": 11, - "kRenderFxFlickerSlow": 12, - "kRenderFxFlickerFast": 13, - "kRenderFxNoDissipation": 14, - "kRenderFxFadeOut": 15, - "kRenderFxFadeIn": 16, - "kRenderFxPulseFastWider": 17, - "kRenderFxGlowShell": 18, - "kRenderFxMax": 19 - }, - "RenderMode_t": { - "kRenderNormal": 0, - "kRenderTransColor": 1, - "kRenderTransTexture": 2, - "kRenderGlow": 3, - "kRenderTransAlpha": 4, - "kRenderTransAdd": 5, - "kRenderEnvironmental": 6, - "kRenderTransAddFrameBlend": 7, - "kRenderTransAlphaAdd": 8, - "kRenderWorldGlow": 9, - "kRenderNone": 10, - "kRenderDevVisualizer": 11, - "kRenderModeCount": 12 - }, - "RumbleEffect_t": { - "RUMBLE_INVALID": -1, - "RUMBLE_STOP_ALL": 0, - "RUMBLE_PISTOL": 1, - "RUMBLE_357": 2, - "RUMBLE_SMG1": 3, - "RUMBLE_AR2": 4, - "RUMBLE_SHOTGUN_SINGLE": 5, - "RUMBLE_SHOTGUN_DOUBLE": 6, - "RUMBLE_AR2_ALT_FIRE": 7, - "RUMBLE_RPG_MISSILE": 8, - "RUMBLE_CROWBAR_SWING": 9, - "RUMBLE_AIRBOAT_GUN": 10, - "RUMBLE_JEEP_ENGINE_LOOP": 11, - "RUMBLE_FLAT_LEFT": 12, - "RUMBLE_FLAT_RIGHT": 13, - "RUMBLE_FLAT_BOTH": 14, - "RUMBLE_DMG_LOW": 15, - "RUMBLE_DMG_MED": 16, - "RUMBLE_DMG_HIGH": 17, - "RUMBLE_FALL_LONG": 18, - "RUMBLE_FALL_SHORT": 19, - "RUMBLE_PHYSCANNON_OPEN": 20, - "RUMBLE_PHYSCANNON_PUNT": 21, - "RUMBLE_PHYSCANNON_LOW": 22, - "RUMBLE_PHYSCANNON_MEDIUM": 23, - "RUMBLE_PHYSCANNON_HIGH": 24, - "NUM_RUMBLE_EFFECTS": 25 - }, - "ScriptedHeldWeaponBehavior_t": { - "eInvalid": -1, - "eHolster": 0, - "eDeploy": 1, - "eDrop": 2 - }, - "ScriptedMoveTo_t": { - "eWait": 0, - "eMoveWithGait": 3, - "eTeleport": 4, - "eWaitFacing": 5, - "eObsoleteBackCompat1": 1, - "eObsoleteBackCompat2": 2 - }, - "ScriptedOnDeath_t": { - "SS_ONDEATH_NOT_APPLICABLE": -1, - "SS_ONDEATH_UNDEFINED": 0, - "SS_ONDEATH_RAGDOLL": 1, - "SS_ONDEATH_ANIMATED_DEATH": 2 - }, - "SequenceFinishNotifyState_t": { - "eDoNotNotify": 0, - "eNotifyWhenFinished": 1, - "eNotifyTriggered": 2 - }, - "ShadowType_t": { - "SHADOWS_NONE": 0, - "SHADOWS_SIMPLE": 1 - }, - "ShakeCommand_t": { - "SHAKE_START": 0, - "SHAKE_STOP": 1, - "SHAKE_AMPLITUDE": 2, - "SHAKE_FREQUENCY": 3, - "SHAKE_START_RUMBLEONLY": 4, - "SHAKE_START_NORUMBLE": 5 - }, - "ShardSolid_t": { - "SHARD_SOLID": 0, - "SHARD_DEBRIS": 1 - }, - "ShatterDamageCause": { - "SHATTERDAMAGE_BULLET": 0, - "SHATTERDAMAGE_MELEE": 1, - "SHATTERDAMAGE_THROWN": 2, - "SHATTERDAMAGE_SCRIPT": 3, - "SHATTERDAMAGE_EXPLOSIVE": 4 - }, - "ShatterGlassStressType": { - "SHATTERGLASS_BLUNT": 0, - "SHATTERGLASS_BALLISTIC": 1, - "SHATTERGLASS_PULSE": 2, - "SHATTERGLASS_EXPLOSIVE": 3 - }, - "SolidType_t": { - "SOLID_NONE": 0, - "SOLID_BSP": 1, - "SOLID_BBOX": 2, - "SOLID_OBB": 3, - "SOLID_SPHERE": 4, - "SOLID_POINT": 5, - "SOLID_VPHYSICS": 6, - "SOLID_CAPSULE": 7, - "SOLID_LAST": 8 - }, - "StanceType_t": { - "STANCE_CURRENT": -1, - "STANCE_DEFAULT": 0, - "STANCE_CROUCHING": 1, - "STANCE_PRONE": 2, - "NUM_STANCES": 3 - }, - "SubclassVDataChangeType_t": { - "SUBCLASS_VDATA_CREATED": 0, - "SUBCLASS_VDATA_SUBCLASS_CHANGED": 1, - "SUBCLASS_VDATA_RELOADED": 2 - }, - "SurroundingBoundsType_t": { - "USE_OBB_COLLISION_BOUNDS": 0, - "USE_BEST_COLLISION_BOUNDS": 1, - "USE_HITBOXES": 2, - "USE_SPECIFIED_BOUNDS": 3, - "USE_GAME_CODE": 4, - "USE_ROTATION_EXPANDED_BOUNDS": 5, - "USE_ROTATION_EXPANDED_ORIENTED_BOUNDS": 6, - "USE_COLLISION_BOUNDS_NEVER_VPHYSICS": 7, - "USE_ROTATION_EXPANDED_SEQUENCE_BOUNDS": 8, - "SURROUNDING_TYPE_BIT_COUNT": 3 - }, - "TakeDamageFlags_t": { - "DFLAG_NONE": 0, - "DFLAG_SUPPRESS_HEALTH_CHANGES": 1, - "DFLAG_SUPPRESS_PHYSICS_FORCE": 2, - "DFLAG_SUPPRESS_EFFECTS": 4, - "DFLAG_PREVENT_DEATH": 8, - "DFLAG_FORCE_DEATH": 16, - "DFLAG_ALWAYS_GIB": 32, - "DFLAG_NEVER_GIB": 64, - "DFLAG_REMOVE_NO_RAGDOLL": 128, - "DFLAG_SUPPRESS_DAMAGE_MODIFICATION": 256, - "DFLAG_ALWAYS_FIRE_DAMAGE_EVENTS": 512, - "DFLAG_RADIUS_DMG": 1024, - "DFLAG_FORCEREDUCEARMOR_DMG": 2048, - "DFLAG_SUPPRESS_INTERRUPT_FLINCH": 4096, - "DMG_LASTDFLAG": 4096, - "DFLAG_IGNORE_ARMOR": 8192, - "DFLAG_SUPPRESS_UTILREMOVE": 16384 - }, - "TimelineCompression_t": { - "TIMELINE_COMPRESSION_SUM": 0, - "TIMELINE_COMPRESSION_COUNT_PER_INTERVAL": 1, - "TIMELINE_COMPRESSION_AVERAGE": 2, - "TIMELINE_COMPRESSION_AVERAGE_BLEND": 3, - "TIMELINE_COMPRESSION_TOTAL": 4 - }, - "ValueRemapperHapticsType_t": { - "HaticsType_Default": 0, - "HaticsType_None": 1 - }, - "ValueRemapperInputType_t": { - "InputType_PlayerShootPosition": 0, - "InputType_PlayerShootPositionAroundAxis": 1 - }, - "ValueRemapperMomentumType_t": { - "MomentumType_None": 0, - "MomentumType_Friction": 1, - "MomentumType_SpringTowardSnapValue": 2, - "MomentumType_SpringAwayFromSnapValue": 3 - }, - "ValueRemapperOutputType_t": { - "OutputType_AnimationCycle": 0, - "OutputType_RotationX": 1, - "OutputType_RotationY": 2, - "OutputType_RotationZ": 3 - }, - "ValueRemapperRatchetType_t": { - "RatchetType_Absolute": 0, - "RatchetType_EachEngage": 1 - }, - "WaterLevel_t": { - "WL_NotInWater": 0, - "WL_Feet": 1, - "WL_Knees": 2, - "WL_Waist": 3, - "WL_Chest": 4, - "WL_FullyUnderwater": 5, - "WL_Count": 6 - }, - "WeaponAttackType_t": { - "eInvalid": -1, - "ePrimary": 0, - "eSecondary": 1, - "eCount": 2 - }, - "WeaponSound_t": { - "WEAPON_SOUND_EMPTY": 0, - "WEAPON_SOUND_SECONDARY_EMPTY": 1, - "WEAPON_SOUND_SINGLE": 2, - "WEAPON_SOUND_SECONDARY_ATTACK": 3, - "WEAPON_SOUND_MELEE_MISS": 4, - "WEAPON_SOUND_MELEE_HIT": 5, - "WEAPON_SOUND_MELEE_HIT_WORLD": 6, - "WEAPON_SOUND_MELEE_HIT_PLAYER": 7, - "WEAPON_SOUND_MELEE_HIT_NPC": 8, - "WEAPON_SOUND_SPECIAL1": 9, - "WEAPON_SOUND_SPECIAL2": 10, - "WEAPON_SOUND_SPECIAL3": 11, - "WEAPON_SOUND_NEARLYEMPTY": 12, - "WEAPON_SOUND_IMPACT": 13, - "WEAPON_SOUND_REFLECT": 14, - "WEAPON_SOUND_SECONDARY_IMPACT": 15, - "WEAPON_SOUND_SECONDARY_REFLECT": 16, - "WEAPON_SOUND_RELOAD": 17, - "WEAPON_SOUND_SINGLE_ACCURATE": 18, - "WEAPON_SOUND_ZOOM_IN": 19, - "WEAPON_SOUND_ZOOM_OUT": 20, - "WEAPON_SOUND_MOUSE_PRESSED": 21, - "WEAPON_SOUND_DROP": 22, - "WEAPON_SOUND_RADIO_USE": 23, - "WEAPON_SOUND_NUM_TYPES": 24 - }, - "WeaponSwitchReason_t": { - "eDrawn": 0, - "eEquipped": 1, - "eUserInitiatedSwitchToLast": 2, - "eUserInitiatedSwitchHands": 3 - }, - "WorldTextPanelHorizontalAlign_t": { - "WORLDTEXT_HORIZONTAL_ALIGN_LEFT": 0, - "WORLDTEXT_HORIZONTAL_ALIGN_CENTER": 1, - "WORLDTEXT_HORIZONTAL_ALIGN_RIGHT": 2 - }, - "WorldTextPanelOrientation_t": { - "WORLDTEXT_ORIENTATION_DEFAULT": 0, - "WORLDTEXT_ORIENTATION_FACEUSER": 1, - "WORLDTEXT_ORIENTATION_FACEUSER_UPRIGHT": 2 - }, - "WorldTextPanelVerticalAlign_t": { - "WORLDTEXT_VERTICAL_ALIGN_TOP": 0, - "WORLDTEXT_VERTICAL_ALIGN_CENTER": 1, - "WORLDTEXT_VERTICAL_ALIGN_BOTTOM": 2 - }, - "attributeprovidertypes_t": { - "PROVIDER_GENERIC": 0, - "PROVIDER_WEAPON": 1 - }, - "gear_slot_t": { - "GEAR_SLOT_INVALID": -1, - "GEAR_SLOT_RIFLE": 0, - "GEAR_SLOT_PISTOL": 1, - "GEAR_SLOT_KNIFE": 2, - "GEAR_SLOT_GRENADES": 3, - "GEAR_SLOT_C4": 4, - "GEAR_SLOT_RESERVED_SLOT6": 5, - "GEAR_SLOT_RESERVED_SLOT7": 6, - "GEAR_SLOT_RESERVED_SLOT8": 7, - "GEAR_SLOT_RESERVED_SLOT9": 8, - "GEAR_SLOT_RESERVED_SLOT10": 9, - "GEAR_SLOT_RESERVED_SLOT11": 10, - "GEAR_SLOT_BOOSTS": 11, - "GEAR_SLOT_UTILITY": 12, - "GEAR_SLOT_COUNT": 13, - "GEAR_SLOT_FIRST": 0, - "GEAR_SLOT_LAST": 12 - }, - "loadout_slot_t": { - "LOADOUT_SLOT_PROMOTED": -2, - "LOADOUT_SLOT_INVALID": -1, - "LOADOUT_SLOT_MELEE": 0, - "LOADOUT_SLOT_C4": 1, - "LOADOUT_SLOT_FIRST_AUTO_BUY_WEAPON": 0, - "LOADOUT_SLOT_LAST_AUTO_BUY_WEAPON": 1, - "LOADOUT_SLOT_SECONDARY0": 2, - "LOADOUT_SLOT_SECONDARY1": 3, - "LOADOUT_SLOT_SECONDARY2": 4, - "LOADOUT_SLOT_SECONDARY3": 5, - "LOADOUT_SLOT_SECONDARY4": 6, - "LOADOUT_SLOT_SECONDARY5": 7, - "LOADOUT_SLOT_SMG0": 8, - "LOADOUT_SLOT_SMG1": 9, - "LOADOUT_SLOT_SMG2": 10, - "LOADOUT_SLOT_SMG3": 11, - "LOADOUT_SLOT_SMG4": 12, - "LOADOUT_SLOT_SMG5": 13, - "LOADOUT_SLOT_RIFLE0": 14, - "LOADOUT_SLOT_RIFLE1": 15, - "LOADOUT_SLOT_RIFLE2": 16, - "LOADOUT_SLOT_RIFLE3": 17, - "LOADOUT_SLOT_RIFLE4": 18, - "LOADOUT_SLOT_RIFLE5": 19, - "LOADOUT_SLOT_HEAVY0": 20, - "LOADOUT_SLOT_HEAVY1": 21, - "LOADOUT_SLOT_HEAVY2": 22, - "LOADOUT_SLOT_HEAVY3": 23, - "LOADOUT_SLOT_HEAVY4": 24, - "LOADOUT_SLOT_HEAVY5": 25, - "LOADOUT_SLOT_FIRST_WHEEL_WEAPON": 2, - "LOADOUT_SLOT_LAST_WHEEL_WEAPON": 25, - "LOADOUT_SLOT_FIRST_PRIMARY_WEAPON": 8, - "LOADOUT_SLOT_LAST_PRIMARY_WEAPON": 25, - "LOADOUT_SLOT_FIRST_WHEEL_GRENADE": 26, - "LOADOUT_SLOT_GRENADE0": 26, - "LOADOUT_SLOT_GRENADE1": 27, - "LOADOUT_SLOT_GRENADE2": 28, - "LOADOUT_SLOT_GRENADE3": 29, - "LOADOUT_SLOT_GRENADE4": 30, - "LOADOUT_SLOT_GRENADE5": 31, - "LOADOUT_SLOT_LAST_WHEEL_GRENADE": 31, - "LOADOUT_SLOT_EQUIPMENT0": 32, - "LOADOUT_SLOT_EQUIPMENT1": 33, - "LOADOUT_SLOT_EQUIPMENT2": 34, - "LOADOUT_SLOT_EQUIPMENT3": 35, - "LOADOUT_SLOT_EQUIPMENT4": 36, - "LOADOUT_SLOT_EQUIPMENT5": 37, - "LOADOUT_SLOT_FIRST_WHEEL_EQUIPMENT": 32, - "LOADOUT_SLOT_LAST_WHEEL_EQUIPMENT": 37, - "LOADOUT_SLOT_CLOTHING_CUSTOMPLAYER": 38, - "LOADOUT_SLOT_CLOTHING_CUSTOMHEAD": 39, - "LOADOUT_SLOT_CLOTHING_FACEMASK": 40, - "LOADOUT_SLOT_CLOTHING_HANDS": 41, - "LOADOUT_SLOT_FIRST_COSMETIC": 41, - "LOADOUT_SLOT_LAST_COSMETIC": 41, - "LOADOUT_SLOT_CLOTHING_EYEWEAR": 42, - "LOADOUT_SLOT_CLOTHING_HAT": 43, - "LOADOUT_SLOT_CLOTHING_LOWERBODY": 44, - "LOADOUT_SLOT_CLOTHING_TORSO": 45, - "LOADOUT_SLOT_CLOTHING_APPEARANCE": 46, - "LOADOUT_SLOT_MISC0": 47, - "LOADOUT_SLOT_MISC1": 48, - "LOADOUT_SLOT_MISC2": 49, - "LOADOUT_SLOT_MISC3": 50, - "LOADOUT_SLOT_MISC4": 51, - "LOADOUT_SLOT_MISC5": 52, - "LOADOUT_SLOT_MISC6": 53, - "LOADOUT_SLOT_MUSICKIT": 54, - "LOADOUT_SLOT_FLAIR0": 55, - "LOADOUT_SLOT_SPRAY0": 56, - "LOADOUT_SLOT_FIRST_ALL_CHARACTER": 54, - "LOADOUT_SLOT_LAST_ALL_CHARACTER": 56, - "LOADOUT_SLOT_COUNT": 57 - }, - "vote_create_failed_t": { - "VOTE_FAILED_GENERIC": 0, - "VOTE_FAILED_TRANSITIONING_PLAYERS": 1, - "VOTE_FAILED_RATE_EXCEEDED": 2, - "VOTE_FAILED_YES_MUST_EXCEED_NO": 3, - "VOTE_FAILED_QUORUM_FAILURE": 4, - "VOTE_FAILED_ISSUE_DISABLED": 5, - "VOTE_FAILED_MAP_NOT_FOUND": 6, - "VOTE_FAILED_MAP_NAME_REQUIRED": 7, - "VOTE_FAILED_FAILED_RECENTLY": 8, - "VOTE_FAILED_TEAM_CANT_CALL": 9, - "VOTE_FAILED_WAITINGFORPLAYERS": 10, - "VOTE_FAILED_PLAYERNOTFOUND": 11, - "VOTE_FAILED_CANNOT_KICK_ADMIN": 12, - "VOTE_FAILED_SCRAMBLE_IN_PROGRESS": 13, - "VOTE_FAILED_SPECTATOR": 14, - "VOTE_FAILED_FAILED_RECENT_KICK": 15, - "VOTE_FAILED_FAILED_RECENT_CHANGEMAP": 16, - "VOTE_FAILED_FAILED_RECENT_SWAPTEAMS": 17, - "VOTE_FAILED_FAILED_RECENT_SCRAMBLETEAMS": 18, - "VOTE_FAILED_FAILED_RECENT_RESTART": 19, - "VOTE_FAILED_SWAP_IN_PROGRESS": 20, - "VOTE_FAILED_DISABLED": 21, - "VOTE_FAILED_NEXTLEVEL_SET": 22, - "VOTE_FAILED_TOO_EARLY_SURRENDER": 23, - "VOTE_FAILED_MATCH_PAUSED": 24, - "VOTE_FAILED_MATCH_NOT_PAUSED": 25, - "VOTE_FAILED_NOT_IN_WARMUP": 26, - "VOTE_FAILED_NOT_10_PLAYERS": 27, - "VOTE_FAILED_TIMEOUT_ACTIVE": 28, - "VOTE_FAILED_TIMEOUT_INACTIVE": 29, - "VOTE_FAILED_TIMEOUT_EXHAUSTED": 30, - "VOTE_FAILED_CANT_ROUND_END": 31, - "VOTE_FAILED_REMATCH": 32, - "VOTE_FAILED_CONTINUE": 33, - "VOTE_FAILED_MAX": 34 - }, - "SpawnDebugOverrideState_t": { - "SPAWN_DEBUG_OVERRIDE_NONE": 0, - "SPAWN_DEBUG_OVERRIDE_FORCE_ENABLED": 1, - "SPAWN_DEBUG_OVERRIDE_FORCE_DISABLED": 2 - }, - "SpawnDebugRestrictionOverrideState_t": { - "SPAWN_DEBUG_RESTRICT_NONE": 0, - "SPAWN_DEBUG_RESTRICT_IGNORE_MANAGER_DISTANCE_REQS": 1, - "SPAWN_DEBUG_RESTRICT_IGNORE_TEMPLATE_DISTANCE_LOS_REQS": 2, - "SPAWN_DEBUG_RESTRICT_IGNORE_TEMPLATE_COOLDOWN_LIMITS": 4, - "SPAWN_DEBUG_RESTRICT_IGNORE_TARGET_COOLDOWN_LIMITS": 8 - }, - "EntityDormancyType_t": { - "ENTITY_NOT_DORMANT": 0, - "ENTITY_DORMANT": 1, - "ENTITY_SUSPENDED": 2 - }, - "EntityIOTargetType_t": { - "ENTITY_IO_TARGET_INVALID": -1, - "ENTITY_IO_TARGET_ENTITYNAME": 2, - "ENTITY_IO_TARGET_EHANDLE": 6, - "ENTITY_IO_TARGET_ENTITYNAME_OR_CLASSNAME": 7 - }, - "BloomBlendMode_t": { - "BLOOM_BLEND_ADD": 0, - "BLOOM_BLEND_SCREEN": 1, - "BLOOM_BLEND_BLUR": 2 - }, - "HorizJustification_e": { - "HORIZ_JUSTIFICATION_LEFT": 0, - "HORIZ_JUSTIFICATION_CENTER": 1, - "HORIZ_JUSTIFICATION_RIGHT": 2, - "HORIZ_JUSTIFICATION_NONE": 3 - }, - "LayoutPositionType_e": { - "LAYOUTPOSITIONTYPE_VIEWPORT_RELATIVE": 0, - "LAYOUTPOSITIONTYPE_FRACTIONAL": 1, - "LAYOUTPOSITIONTYPE_NONE": 2 - }, - "VertJustification_e": { - "VERT_JUSTIFICATION_TOP": 0, - "VERT_JUSTIFICATION_CENTER": 1, - "VERT_JUSTIFICATION_BOTTOM": 2, - "VERT_JUSTIFICATION_NONE": 3 - }, - "ViewFadeMode_t": { - "VIEW_FADE_CONSTANT_COLOR": 0, - "VIEW_FADE_MODULATE": 1, - "VIEW_FADE_MOD2X": 2 - }, - "FuseVariableAccess_t": { - "WRITABLE": 0, - "READ_ONLY": 1 - }, - "FuseVariableType_t": { - "INVALID": 0, - "BOOL": 1, - "INT8": 2, - "INT16": 3, - "INT32": 4, - "UINT8": 5, - "UINT16": 6, - "UINT32": 7, - "FLOAT32": 8 - }, - "FlexOpCode_t": { - "FLEX_OP_CONST": 1, - "FLEX_OP_FETCH1": 2, - "FLEX_OP_FETCH2": 3, - "FLEX_OP_ADD": 4, - "FLEX_OP_SUB": 5, - "FLEX_OP_MUL": 6, - "FLEX_OP_DIV": 7, - "FLEX_OP_NEG": 8, - "FLEX_OP_EXP": 9, - "FLEX_OP_OPEN": 10, - "FLEX_OP_CLOSE": 11, - "FLEX_OP_COMMA": 12, - "FLEX_OP_MAX": 13, - "FLEX_OP_MIN": 14, - "FLEX_OP_2WAY_0": 15, - "FLEX_OP_2WAY_1": 16, - "FLEX_OP_NWAY": 17, - "FLEX_OP_COMBO": 18, - "FLEX_OP_DOMINATE": 19, - "FLEX_OP_DME_LOWER_EYELID": 20, - "FLEX_OP_DME_UPPER_EYELID": 21, - "FLEX_OP_SQRT": 22, - "FLEX_OP_REMAPVALCLAMPED": 23, - "FLEX_OP_SIN": 24, - "FLEX_OP_COS": 25, - "FLEX_OP_ABS": 26 - }, - "MeshDrawPrimitiveFlags_t": { - "MESH_DRAW_FLAGS_NONE": 0, - "MESH_DRAW_FLAGS_USE_SHADOW_FAST_PATH": 1, - "MESH_DRAW_FLAGS_USE_COMPRESSED_NORMAL_TANGENT": 2, - "MESH_DRAW_INPUT_LAYOUT_IS_NOT_MATCHED_TO_MATERIAL": 8, - "MESH_DRAW_FLAGS_USE_COMPRESSED_PER_VERTEX_LIGHTING": 16, - "MESH_DRAW_FLAGS_USE_UNCOMPRESSED_PER_VERTEX_LIGHTING": 32, - "MESH_DRAW_FLAGS_CAN_BATCH_WITH_DYNAMIC_SHADER_CONSTANTS": 64, - "MESH_DRAW_FLAGS_DRAW_LAST": 128 - }, - "ModelBoneFlexComponent_t": { - "MODEL_BONE_FLEX_INVALID": -1, - "MODEL_BONE_FLEX_TX": 0, - "MODEL_BONE_FLEX_TY": 1, - "MODEL_BONE_FLEX_TZ": 2 - }, - "ModelConfigAttachmentType_t": { - "MODEL_CONFIG_ATTACHMENT_INVALID": -1, - "MODEL_CONFIG_ATTACHMENT_BONE_OR_ATTACHMENT": 0, - "MODEL_CONFIG_ATTACHMENT_ROOT_RELATIVE": 1, - "MODEL_CONFIG_ATTACHMENT_BONEMERGE": 2, - "MODEL_CONFIG_ATTACHMENT_COUNT": 3 - }, - "MorphBundleType_t": { - "MORPH_BUNDLE_TYPE_NONE": 0, - "MORPH_BUNDLE_TYPE_POSITION_SPEED": 1, - "MORPH_BUNDLE_TYPE_NORMAL_WRINKLE": 2, - "MORPH_BUNDLE_TYPE_COUNT": 3 - }, - "MorphFlexControllerRemapType_t": { - "MORPH_FLEXCONTROLLER_REMAP_PASSTHRU": 0, - "MORPH_FLEXCONTROLLER_REMAP_2WAY": 1, - "MORPH_FLEXCONTROLLER_REMAP_NWAY": 2, - "MORPH_FLEXCONTROLLER_REMAP_EYELID": 3 - }, - "MovementGait_t": { - "eInvalid": -1, - "eSlow": 0, - "eMedium": 1, - "eFast": 2, - "eVeryFast": 3, - "eCount": 4 - }, - "NavAttributeEnum": { - "NAV_MESH_AVOID": 128, - "NAV_MESH_STAIRS": 4096, - "NAV_MESH_NON_ZUP": 32768, - "NAV_MESH_SHORT_HEIGHT": 65536, - "NAV_MESH_NON_ZUP_TRANSITION": 131072, - "NAV_MESH_CROUCH": 65536, - "NAV_MESH_JUMP": 2, - "NAV_MESH_PRECISE": 4, - "NAV_MESH_NO_JUMP": 8, - "NAV_MESH_STOP": 16, - "NAV_MESH_RUN": 32, - "NAV_MESH_WALK": 64, - "NAV_MESH_TRANSIENT": 256, - "NAV_MESH_DONT_HIDE": 512, - "NAV_MESH_STAND": 1024, - "NAV_MESH_NO_HOSTAGES": 2048, - "NAV_MESH_NO_MERGE": 8192, - "NAV_MESH_OBSTACLE_TOP": 16384, - "NAV_ATTR_FIRST_GAME_INDEX": 19, - "NAV_ATTR_LAST_INDEX": 31 - }, - "NavDirType": { - "NORTH": 0, - "EAST": 1, - "SOUTH": 2, - "WEST": 3, - "NUM_NAV_DIR_TYPE_DIRECTIONS": 4 - }, - "ELayoutNodeType": { - "ROOT": 0, - "STYLES": 1, - "SCRIPT_BODY": 2, - "SCRIPTS": 3, - "SNIPPETS": 4, - "INCLUDE": 5, - "SNIPPET": 6, - "PANEL": 7, - "PANEL_ATTRIBUTE": 8, - "PANEL_ATTRIBUTE_VALUE": 9, - "REFERENCE_CONTENT": 10, - "REFERENCE_COMPILED": 11, - "REFERENCE_PASSTHROUGH": 12 - }, - "EStyleNodeType": { - "ROOT": 0, - "EXPRESSION": 1, - "PROPERTY": 2, - "DEFINE": 3, - "IMPORT": 4, - "KEYFRAMES": 5, - "KEYFRAME_SELECTOR": 6, - "STYLE_SELECTOR": 7, - "WHITESPACE": 8, - "EXPRESSION_TEXT": 9, - "EXPRESSION_URL": 10, - "EXPRESSION_CONCAT": 11, - "REFERENCE_CONTENT": 12, - "REFERENCE_COMPILED": 13, - "REFERENCE_PASSTHROUGH": 14, - "COMPILER_CONDITIONAL": 15 - }, - "AnimationType_t": { - "ANIMATION_TYPE_FIXED_RATE": 0, - "ANIMATION_TYPE_FIT_LIFETIME": 1, - "ANIMATION_TYPE_MANUAL_FRAMES": 2 - }, - "BBoxVolumeType_t": { - "BBOX_VOLUME": 0, - "BBOX_DIMENSIONS": 1, - "BBOX_MINS_MAXS": 2 - }, - "BlurFilterType_t": { - "BLURFILTER_GAUSSIAN": 0, - "BLURFILTER_BOX": 1 - }, - "ClosestPointTestType_t": { - "PARTICLE_CLOSEST_TYPE_BOX": 0, - "PARTICLE_CLOSEST_TYPE_CAPSULE": 1, - "PARTICLE_CLOSEST_TYPE_HYBRID": 2 - }, - "Detail2Combo_t": { - "DETAIL_2_COMBO_UNINITIALIZED": -1, - "DETAIL_2_COMBO_OFF": 0, - "DETAIL_2_COMBO_ADD": 1, - "DETAIL_2_COMBO_ADD_SELF_ILLUM": 2, - "DETAIL_2_COMBO_MOD2X": 3, - "DETAIL_2_COMBO_MUL": 4, - "DETAIL_2_COMBO_CROSSFADE": 5 - }, - "DetailCombo_t": { - "DETAIL_COMBO_OFF": 0, - "DETAIL_COMBO_ADD": 1, - "DETAIL_COMBO_ADD_SELF_ILLUM": 2, - "DETAIL_COMBO_MOD2X": 3 - }, - "EventTypeSelection_t": { - "PARTICLE_EVENT_TYPE_MASK_NONE": 0, - "PARTICLE_EVENT_TYPE_MASK_SPAWNED": 1, - "PARTICLE_EVENT_TYPE_MASK_KILLED": 2, - "PARTICLE_EVENT_TYPE_MASK_COLLISION": 4, - "PARTICLE_EVENT_TYPE_MASK_FIRST_COLLISION": 8, - "PARTICLE_EVENT_TYPE_MASK_COLLISION_STOPPED": 16, - "PARTICLE_EVENT_TYPE_MASK_KILLED_ON_COLLISION": 32, - "PARTICLE_EVENT_TYPE_MASK_USER_1": 64, - "PARTICLE_EVENT_TYPE_MASK_USER_2": 128, - "PARTICLE_EVENT_TYPE_MASK_USER_3": 256, - "PARTICLE_EVENT_TYPE_MASK_USER_4": 512 - }, - "HitboxLerpType_t": { - "HITBOX_LERP_LIFETIME": 0, - "HITBOX_LERP_CONSTANT": 1 - }, - "InheritableBoolType_t": { - "INHERITABLE_BOOL_INHERIT": 0, - "INHERITABLE_BOOL_FALSE": 1, - "INHERITABLE_BOOL_TRUE": 2 - }, - "MaterialProxyType_t": { - "MATERIAL_PROXY_STATUS_EFFECT": 0, - "MATERIAL_PROXY_TINT": 1 - }, - "MissingParentInheritBehavior_t": { - "MISSING_PARENT_DO_NOTHING": -1, - "MISSING_PARENT_KILL": 0, - "MISSING_PARENT_FIND_NEW": 1, - "MISSING_PARENT_SAME_INDEX": 2 - }, - "ModelHitboxType_t": { - "MODEL_HITBOX_TYPE_STANDARD": 0, - "MODEL_HITBOX_TYPE_RAW_BONES": 1, - "MODEL_HITBOX_TYPE_RENDERBOUNDS": 2, - "MODEL_HITBOX_TYPE_SNAPSHOT": 3 - }, - "PFuncVisualizationType_t": { - "PFUNC_VISUALIZATION_SPHERE_WIREFRAME": 0, - "PFUNC_VISUALIZATION_SPHERE_SOLID": 1, - "PFUNC_VISUALIZATION_BOX": 2, - "PFUNC_VISUALIZATION_RING": 3, - "PFUNC_VISUALIZATION_PLANE": 4, - "PFUNC_VISUALIZATION_LINE": 5, - "PFUNC_VISUALIZATION_CYLINDER": 6 - }, - "ParticleAlphaReferenceType_t": { - "PARTICLE_ALPHA_REFERENCE_ALPHA_ALPHA": 0, - "PARTICLE_ALPHA_REFERENCE_OPAQUE_ALPHA": 1, - "PARTICLE_ALPHA_REFERENCE_ALPHA_OPAQUE": 2, - "PARTICLE_ALPHA_REFERENCE_OPAQUE_OPAQUE": 3 - }, - "ParticleAttrBoxFlags_t": { - "PARTICLE_ATTR_BOX_FLAGS_NONE": 0, - "PARTICLE_ATTR_BOX_FLAGS_WATER": 1 - }, - "ParticleCollisionMode_t": { - "COLLISION_MODE_PER_PARTICLE_TRACE": 3, - "COLLISION_MODE_USE_NEAREST_TRACE": 2, - "COLLISION_MODE_PER_FRAME_PLANESET": 1, - "COLLISION_MODE_INITIAL_TRACE_DOWN": 0, - "COLLISION_MODE_DISABLED": -1 - }, - "ParticleColorBlendMode_t": { - "PARTICLEBLEND_DEFAULT": 0, - "PARTICLEBLEND_OVERLAY": 1, - "PARTICLEBLEND_DARKEN": 2, - "PARTICLEBLEND_LIGHTEN": 3, - "PARTICLEBLEND_MULTIPLY": 4 - }, - "ParticleColorBlendType_t": { - "PARTICLE_COLOR_BLEND_MULTIPLY": 0, - "PARTICLE_COLOR_BLEND_MULTIPLY2X": 1, - "PARTICLE_COLOR_BLEND_DIVIDE": 2, - "PARTICLE_COLOR_BLEND_ADD": 3, - "PARTICLE_COLOR_BLEND_SUBTRACT": 4, - "PARTICLE_COLOR_BLEND_MOD2X": 5, - "PARTICLE_COLOR_BLEND_SCREEN": 6, - "PARTICLE_COLOR_BLEND_MAX": 7, - "PARTICLE_COLOR_BLEND_MIN": 8, - "PARTICLE_COLOR_BLEND_REPLACE": 9, - "PARTICLE_COLOR_BLEND_AVERAGE": 10, - "PARTICLE_COLOR_BLEND_NEGATE": 11, - "PARTICLE_COLOR_BLEND_LUMINANCE": 12 - }, - "ParticleControlPointAxis_t": { - "PARTICLE_CP_AXIS_X": 0, - "PARTICLE_CP_AXIS_Y": 1, - "PARTICLE_CP_AXIS_Z": 2, - "PARTICLE_CP_AXIS_NEGATIVE_X": 3, - "PARTICLE_CP_AXIS_NEGATIVE_Y": 4, - "PARTICLE_CP_AXIS_NEGATIVE_Z": 5 - }, - "ParticleDepthFeatheringMode_t": { - "PARTICLE_DEPTH_FEATHERING_OFF": 0, - "PARTICLE_DEPTH_FEATHERING_ON_OPTIONAL": 1, - "PARTICLE_DEPTH_FEATHERING_ON_REQUIRED": 2 - }, - "ParticleDetailLevel_t": { - "PARTICLEDETAIL_LOW": 0, - "PARTICLEDETAIL_MEDIUM": 1, - "PARTICLEDETAIL_HIGH": 2, - "PARTICLEDETAIL_ULTRA": 3 - }, - "ParticleDirectionNoiseType_t": { - "PARTICLE_DIR_NOISE_PERLIN": 0, - "PARTICLE_DIR_NOISE_CURL": 1, - "PARTICLE_DIR_NOISE_WORLEY_BASIC": 2 - }, - "ParticleEndcapMode_t": { - "PARTICLE_ENDCAP_ALWAYS_ON": -1, - "PARTICLE_ENDCAP_ENDCAP_OFF": 0, - "PARTICLE_ENDCAP_ENDCAP_ON": 1 - }, - "ParticleFalloffFunction_t": { - "PARTICLE_FALLOFF_CONSTANT": 0, - "PARTICLE_FALLOFF_LINEAR": 1, - "PARTICLE_FALLOFF_EXPONENTIAL": 2 - }, - "ParticleFogType_t": { - "PARTICLE_FOG_GAME_DEFAULT": 0, - "PARTICLE_FOG_ENABLED": 1, - "PARTICLE_FOG_DISABLED": 2 - }, - "ParticleHitboxBiasType_t": { - "PARTICLE_HITBOX_BIAS_ENTITY": 0, - "PARTICLE_HITBOX_BIAS_HITBOX": 1 - }, - "ParticleHitboxDataSelection_t": { - "PARTICLE_HITBOX_AVERAGE_SPEED": 0, - "PARTICLE_HITBOX_COUNT": 1 - }, - "ParticleImpulseType_t": { - "IMPULSE_TYPE_NONE": 0, - "IMPULSE_TYPE_GENERIC": 1, - "IMPULSE_TYPE_ROPE": 2, - "IMPULSE_TYPE_EXPLOSION": 4, - "IMPULSE_TYPE_EXPLOSION_UNDERWATER": 8, - "IMPULSE_TYPE_PARTICLE_SYSTEM": 16 - }, - "ParticleLightBehaviorChoiceList_t": { - "PARTICLE_LIGHT_BEHAVIOR_FOLLOW_DIRECTION": 0, - "PARTICLE_LIGHT_BEHAVIOR_ROPE": 1, - "PARTICLE_LIGHT_BEHAVIOR_TRAILS": 2 - }, - "ParticleLightFogLightingMode_t": { - "PARTICLE_LIGHT_FOG_LIGHTING_MODE_NONE": 0, - "PARTICLE_LIGHT_FOG_LIGHTING_MODE_DYNAMIC": 2, - "PARTICLE_LIGHT_FOG_LIGHTING_MODE_DYNAMIC_NOSHADOWS": 4 - }, - "ParticleLightTypeChoiceList_t": { - "PARTICLE_LIGHT_TYPE_POINT": 0, - "PARTICLE_LIGHT_TYPE_SPOT": 1, - "PARTICLE_LIGHT_TYPE_FX": 2, - "PARTICLE_LIGHT_TYPE_CAPSULE": 3 - }, - "ParticleLightUnitChoiceList_t": { - "PARTICLE_LIGHT_UNIT_CANDELAS": 0, - "PARTICLE_LIGHT_UNIT_LUMENS": 1 - }, - "ParticleLightingQuality_t": { - "PARTICLE_LIGHTING_PER_PARTICLE": 0, - "PARTICLE_LIGHTING_PER_VERTEX": 1, - "PARTICLE_LIGHTING_PER_PIXEL": -1 - }, - "ParticleLightnintBranchBehavior_t": { - "PARTICLE_LIGHTNING_BRANCH_CURRENT_DIR": 0, - "PARTICLE_LIGHTNING_BRANCH_ENDPOINT_DIR": 1 - }, - "ParticleMassMode_t": { - "PARTICLE_MASSMODE_RADIUS_CUBED": 0, - "PARTICLE_MASSMODE_RADIUS_SQUARED": 2 - }, - "ParticleOmni2LightTypeChoiceList_t": { - "PARTICLE_OMNI2_LIGHT_TYPE_POINT": 0, - "PARTICLE_OMNI2_LIGHT_TYPE_SPHERE": 1 - }, - "ParticleOrientationChoiceList_t": { - "PARTICLE_ORIENTATION_SCREEN_ALIGNED": 0, - "PARTICLE_ORIENTATION_SCREEN_Z_ALIGNED": 1, - "PARTICLE_ORIENTATION_WORLD_Z_ALIGNED": 2, - "PARTICLE_ORIENTATION_ALIGN_TO_PARTICLE_NORMAL": 3, - "PARTICLE_ORIENTATION_SCREENALIGN_TO_PARTICLE_NORMAL": 4, - "PARTICLE_ORIENTATION_FULL_3AXIS_ROTATION": 5 - }, - "ParticleOrientationSetMode_t": { - "PARTICLE_ORIENTATION_SET_FROM_VELOCITY": 0, - "PARTICLE_ORIENTATION_SET_FROM_ROTATIONS": 1 - }, - "ParticleOutputBlendMode_t": { - "PARTICLE_OUTPUT_BLEND_MODE_ALPHA": 0, - "PARTICLE_OUTPUT_BLEND_MODE_ADD": 1, - "PARTICLE_OUTPUT_BLEND_MODE_BLEND_ADD": 2, - "PARTICLE_OUTPUT_BLEND_MODE_HALF_BLEND_ADD": 3, - "PARTICLE_OUTPUT_BLEND_MODE_NEG_HALF_BLEND_ADD": 4, - "PARTICLE_OUTPUT_BLEND_MODE_MOD2X": 5, - "PARTICLE_OUTPUT_BLEND_MODE_LIGHTEN": 6 - }, - "ParticleParentSetMode_t": { - "PARTICLE_SET_PARENT_NO": 0, - "PARTICLE_SET_PARENT_IMMEDIATE": 1, - "PARTICLE_SET_PARENT_ROOT": 1 - }, - "ParticlePinDistance_t": { - "PARTICLE_PIN_DISTANCE_NONE": -1, - "PARTICLE_PIN_DISTANCE_NEIGHBOR": 0, - "PARTICLE_PIN_DISTANCE_FARTHEST": 1, - "PARTICLE_PIN_DISTANCE_FIRST": 2, - "PARTICLE_PIN_DISTANCE_LAST": 3, - "PARTICLE_PIN_DISTANCE_CENTER": 5, - "PARTICLE_PIN_DISTANCE_CP": 6, - "PARTICLE_PIN_DISTANCE_CP_PAIR_EITHER": 7, - "PARTICLE_PIN_DISTANCE_CP_PAIR_BOTH": 8, - "PARTICLE_PIN_SPEED": 9, - "PARTICLE_PIN_COLLECTION_AGE": 10, - "PARTICLE_PIN_FLOAT_VALUE": 11 - }, - "ParticlePostProcessPriorityGroup_t": { - "PARTICLE_POST_PROCESS_PRIORITY_LEVEL_VOLUME": 0, - "PARTICLE_POST_PROCESS_PRIORITY_LEVEL_OVERRIDE": 1, - "PARTICLE_POST_PROCESS_PRIORITY_GAMEPLAY_EFFECT": 2, - "PARTICLE_POST_PROCESS_PRIORITY_GAMEPLAY_STATE_LOW": 3, - "PARTICLE_POST_PROCESS_PRIORITY_GAMEPLAY_STATE_HIGH": 4, - "PARTICLE_POST_PROCESS_PRIORITY_GLOBAL_UI": 5 - }, - "ParticleReplicationMode_t": { - "PARTICLE_REPLICATIONMODE_NONE": 0, - "PARTICLE_REPLICATIONMODE_REPLICATE_FOR_EACH_PARENT_PARTICLE": 1 - }, - "ParticleRotationLockType_t": { - "PARTICLE_ROTATION_LOCK_NONE": 0, - "PARTICLE_ROTATION_LOCK_ROTATIONS": 1, - "PARTICLE_ROTATION_LOCK_NORMAL": 2 - }, - "ParticleSelection_t": { - "PARTICLE_SELECTION_FIRST": 0, - "PARTICLE_SELECTION_LAST": 1, - "PARTICLE_SELECTION_NUMBER": 2 - }, - "ParticleSequenceCropOverride_t": { - "PARTICLE_SEQUENCE_CROP_OVERRIDE_DEFAULT": -1, - "PARTICLE_SEQUENCE_CROP_OVERRIDE_FORCE_OFF": 0, - "PARTICLE_SEQUENCE_CROP_OVERRIDE_FORCE_ON": 1 - }, - "ParticleSetMethod_t": { - "PARTICLE_SET_REPLACE_VALUE": 0, - "PARTICLE_SET_SCALE_INITIAL_VALUE": 1, - "PARTICLE_SET_ADD_TO_INITIAL_VALUE": 2, - "PARTICLE_SET_RAMP_CURRENT_VALUE": 3, - "PARTICLE_SET_SCALE_CURRENT_VALUE": 4, - "PARTICLE_SET_ADD_TO_CURRENT_VALUE": 5 - }, - "ParticleSortingChoiceList_t": { - "PARTICLE_SORTING_NEAREST": 0, - "PARTICLE_SORTING_CREATION_TIME": 1 - }, - "ParticleTextureLayerBlendType_t": { - "SPRITECARD_TEXTURE_BLEND_MULTIPLY": 0, - "SPRITECARD_TEXTURE_BLEND_MOD2X": 1, - "SPRITECARD_TEXTURE_BLEND_REPLACE": 2, - "SPRITECARD_TEXTURE_BLEND_ADD": 3, - "SPRITECARD_TEXTURE_BLEND_SUBTRACT": 4, - "SPRITECARD_TEXTURE_BLEND_AVERAGE": 5, - "SPRITECARD_TEXTURE_BLEND_LUMINANCE": 6 - }, - "ParticleTopology_t": { - "PARTICLE_TOPOLOGY_POINTS": 0, - "PARTICLE_TOPOLOGY_LINES": 1, - "PARTICLE_TOPOLOGY_TRIS": 2, - "PARTICLE_TOPOLOGY_QUADS": 3, - "PARTICLE_TOPOLOGY_CUBES": 4 - }, - "ParticleTraceMissBehavior_t": { - "PARTICLE_TRACE_MISS_BEHAVIOR_NONE": 0, - "PARTICLE_TRACE_MISS_BEHAVIOR_KILL": 1, - "PARTICLE_TRACE_MISS_BEHAVIOR_TRACE_END": 2 - }, - "ParticleTraceSet_t": { - "PARTICLE_TRACE_SET_ALL": 0, - "PARTICLE_TRACE_SET_STATIC": 1, - "PARTICLE_TRACE_SET_STATIC_AND_KEYFRAMED": 2, - "PARTICLE_TRACE_SET_DYNAMIC": 3 - }, - "ParticleVRHandChoiceList_t": { - "PARTICLE_VRHAND_LEFT": 0, - "PARTICLE_VRHAND_RIGHT": 1, - "PARTICLE_VRHAND_CP": 2, - "PARTICLE_VRHAND_CP_OBJECT": 3 - }, - "PetGroundType_t": { - "PET_GROUND_NONE": 0, - "PET_GROUND_GRID": 1, - "PET_GROUND_PLANE": 2 - }, - "RenderModelSubModelFieldType_t": { - "SUBMODEL_AS_BODYGROUP_SUBMODEL": 0, - "SUBMODEL_AS_MESHGROUP_INDEX": 1, - "SUBMODEL_AS_MESHGROUP_MASK": 2, - "SUBMODEL_IGNORED_USE_MODEL_DEFAULT_MESHGROUP_MASK": 3 - }, - "ScalarExpressionType_t": { - "SCALAR_EXPRESSION_UNINITIALIZED": -1, - "SCALAR_EXPRESSION_ADD": 0, - "SCALAR_EXPRESSION_SUBTRACT": 1, - "SCALAR_EXPRESSION_MUL": 2, - "SCALAR_EXPRESSION_DIVIDE": 3, - "SCALAR_EXPRESSION_INPUT_1": 4, - "SCALAR_EXPRESSION_MIN": 5, - "SCALAR_EXPRESSION_MAX": 6, - "SCALAR_EXPRESSION_MOD": 7 - }, - "SnapshotIndexType_t": { - "SNAPSHOT_INDEX_INCREMENT": 0, - "SNAPSHOT_INDEX_DIRECT": 1 - }, - "SpriteCardPerParticleScale_t": { - "SPRITECARD_TEXTURE_PP_SCALE_NONE": 0, - "SPRITECARD_TEXTURE_PP_SCALE_PARTICLE_AGE": 1, - "SPRITECARD_TEXTURE_PP_SCALE_ANIMATION_FRAME": 2, - "SPRITECARD_TEXTURE_PP_SCALE_SHADER_EXTRA_DATA1": 3, - "SPRITECARD_TEXTURE_PP_SCALE_SHADER_EXTRA_DATA2": 4, - "SPRITECARD_TEXTURE_PP_SCALE_PARTICLE_ALPHA": 5, - "SPRITECARD_TEXTURE_PP_SCALE_SHADER_RADIUS": 6, - "SPRITECARD_TEXTURE_PP_SCALE_ROLL": 7, - "SPRITECARD_TEXTURE_PP_SCALE_YAW": 8, - "SPRITECARD_TEXTURE_PP_SCALE_PITCH": 9, - "SPRITECARD_TEXTURE_PP_SCALE_RANDOM": 10, - "SPRITECARD_TEXTURE_PP_SCALE_NEG_RANDOM": 11, - "SPRITECARD_TEXTURE_PP_SCALE_RANDOM_TIME": 12, - "SPRITECARD_TEXTURE_PP_SCALE_NEG_RANDOM_TIME": 13 - }, - "SpriteCardShaderType_t": { - "SPRITECARD_SHADER_BASE": 0, - "SPRITECARD_SHADER_CUSTOM": 1 - }, - "SpriteCardTextureChannel_t": { - "SPRITECARD_TEXTURE_CHANNEL_MIX_RGB": 0, - "SPRITECARD_TEXTURE_CHANNEL_MIX_RGBA": 1, - "SPRITECARD_TEXTURE_CHANNEL_MIX_A": 2, - "SPRITECARD_TEXTURE_CHANNEL_MIX_RGB_A": 3, - "SPRITECARD_TEXTURE_CHANNEL_MIX_RGB_ALPHAMASK": 4, - "SPRITECARD_TEXTURE_CHANNEL_MIX_RGB_RGBMASK": 5, - "SPRITECARD_TEXTURE_CHANNEL_MIX_RGBA_RGBALPHA": 6, - "SPRITECARD_TEXTURE_CHANNEL_MIX_A_RGBALPHA": 7, - "SPRITECARD_TEXTURE_CHANNEL_MIX_RGB_A_RGBALPHA": 8, - "SPRITECARD_TEXTURE_CHANNEL_MIX_R": 9, - "SPRITECARD_TEXTURE_CHANNEL_MIX_G": 10, - "SPRITECARD_TEXTURE_CHANNEL_MIX_B": 11, - "SPRITECARD_TEXTURE_CHANNEL_MIX_RALPHA": 12, - "SPRITECARD_TEXTURE_CHANNEL_MIX_GALPHA": 13, - "SPRITECARD_TEXTURE_CHANNEL_MIX_BALPHA": 14 - }, - "SpriteCardTextureType_t": { - "SPRITECARD_TEXTURE_DIFFUSE": 0, - "SPRITECARD_TEXTURE_ZOOM": 1, - "SPRITECARD_TEXTURE_1D_COLOR_LOOKUP": 2, - "SPRITECARD_TEXTURE_UVDISTORTION": 3, - "SPRITECARD_TEXTURE_UVDISTORTION_ZOOM": 4, - "SPRITECARD_TEXTURE_NORMALMAP": 5, - "SPRITECARD_TEXTURE_ANIMMOTIONVEC": 6, - "SPRITECARD_TEXTURE_SPHERICAL_HARMONICS_A": 7, - "SPRITECARD_TEXTURE_SPHERICAL_HARMONICS_B": 8, - "SPRITECARD_TEXTURE_SPHERICAL_HARMONICS_C": 9 - }, - "StandardLightingAttenuationStyle_t": { - "LIGHT_STYLE_OLD": 0, - "LIGHT_STYLE_NEW": 1 - }, - "TextureRepetitionMode_t": { - "TEXTURE_REPETITION_PARTICLE": 0, - "TEXTURE_REPETITION_PATH": 1 - }, - "VectorExpressionType_t": { - "VECTOR_EXPRESSION_UNINITIALIZED": -1, - "VECTOR_EXPRESSION_ADD": 0, - "VECTOR_EXPRESSION_SUBTRACT": 1, - "VECTOR_EXPRESSION_MUL": 2, - "VECTOR_EXPRESSION_DIVIDE": 3, - "VECTOR_EXPRESSION_INPUT_1": 4, - "VECTOR_EXPRESSION_MIN": 5, - "VECTOR_EXPRESSION_MAX": 6, - "VECTOR_EXPRESSION_CROSSPRODUCT": 7 - }, - "VectorFloatExpressionType_t": { - "VECTOR_FLOAT_EXPRESSION_UNINITIALIZED": -1, - "VECTOR_FLOAT_EXPRESSION_DOTPRODUCT": 0, - "VECTOR_FLOAT_EXPRESSION_DISTANCE": 1, - "VECTOR_FLOAT_EXPRESSION_DISTANCESQR": 2, - "VECTOR_FLOAT_EXPRESSION_INPUT1_LENGTH": 3, - "VECTOR_FLOAT_EXPRESSION_INPUT1_LENGTHSQR": 4, - "VECTOR_FLOAT_EXPRESSION_INPUT1_NOISE": 5 - }, - "PFNoiseModifier_t": { - "PF_NOISE_MODIFIER_NONE": 0, - "PF_NOISE_MODIFIER_LINES": 1, - "PF_NOISE_MODIFIER_CLUMPS": 2, - "PF_NOISE_MODIFIER_RINGS": 3 - }, - "PFNoiseTurbulence_t": { - "PF_NOISE_TURB_NONE": 0, - "PF_NOISE_TURB_HIGHLIGHT": 1, - "PF_NOISE_TURB_FEEDBACK": 2, - "PF_NOISE_TURB_LOOPY": 3, - "PF_NOISE_TURB_CONTRAST": 4, - "PF_NOISE_TURB_ALTERNATE": 5 - }, - "PFNoiseType_t": { - "PF_NOISE_TYPE_PERLIN": 0, - "PF_NOISE_TYPE_SIMPLEX": 1, - "PF_NOISE_TYPE_WORLEY": 2, - "PF_NOISE_TYPE_CURL": 3 - }, - "ParticleFloatBiasType_t": { - "PF_BIAS_TYPE_INVALID": -1, - "PF_BIAS_TYPE_STANDARD": 0, - "PF_BIAS_TYPE_GAIN": 1, - "PF_BIAS_TYPE_EXPONENTIAL": 2, - "PF_BIAS_TYPE_COUNT": 3 - }, - "ParticleFloatInputMode_t": { - "PF_INPUT_MODE_INVALID": -1, - "PF_INPUT_MODE_CLAMPED": 0, - "PF_INPUT_MODE_LOOPED": 1, - "PF_INPUT_MODE_COUNT": 2 - }, - "ParticleFloatMapType_t": { - "PF_MAP_TYPE_INVALID": -1, - "PF_MAP_TYPE_DIRECT": 0, - "PF_MAP_TYPE_MULT": 1, - "PF_MAP_TYPE_REMAP": 2, - "PF_MAP_TYPE_REMAP_BIASED": 3, - "PF_MAP_TYPE_CURVE": 4, - "PF_MAP_TYPE_NOTCHED": 5, - "PF_MAP_TYPE_ROUND": 6, - "PF_MAP_TYPE_COUNT": 7 - }, - "ParticleFloatRandomMode_t": { - "PF_RANDOM_MODE_INVALID": -1, - "PF_RANDOM_MODE_CONSTANT": 0, - "PF_RANDOM_MODE_VARYING": 1, - "PF_RANDOM_MODE_COUNT": 2 - }, - "ParticleFloatRoundType_t": { - "PF_ROUND_TYPE_INVALID": -1, - "PF_ROUND_TYPE_NEAREST": 0, - "PF_ROUND_TYPE_FLOOR": 1, - "PF_ROUND_TYPE_CEIL": 2, - "PF_ROUND_TYPE_COUNT": 3 - }, - "ParticleFloatType_t": { - "PF_TYPE_INVALID": -1, - "PF_TYPE_LITERAL": 0, - "PF_TYPE_NAMED_VALUE": 1, - "PF_TYPE_RANDOM_UNIFORM": 2, - "PF_TYPE_RANDOM_BIASED": 3, - "PF_TYPE_COLLECTION_AGE": 4, - "PF_TYPE_ENDCAP_AGE": 5, - "PF_TYPE_CONTROL_POINT_COMPONENT": 6, - "PF_TYPE_CONTROL_POINT_CHANGE_AGE": 7, - "PF_TYPE_CONTROL_POINT_SPEED": 8, - "PF_TYPE_PARTICLE_DETAIL_LEVEL": 9, - "PF_TYPE_CONCURRENT_DEF_COUNT": 10, - "PF_TYPE_CLOSEST_CAMERA_DISTANCE": 11, - "PF_TYPE_RENDERER_CAMERA_DISTANCE": 12, - "PF_TYPE_RENDERER_CAMERA_DOT_PRODUCT": 13, - "PF_TYPE_PARTICLE_NOISE": 14, - "PF_TYPE_PARTICLE_AGE": 15, - "PF_TYPE_PARTICLE_AGE_NORMALIZED": 16, - "PF_TYPE_PARTICLE_FLOAT": 17, - "PF_TYPE_PARTICLE_VECTOR_COMPONENT": 18, - "PF_TYPE_PARTICLE_SPEED": 19, - "PF_TYPE_PARTICLE_NUMBER": 20, - "PF_TYPE_PARTICLE_NUMBER_NORMALIZED": 21, - "PF_TYPE_COUNT": 22 - }, - "ParticleModelType_t": { - "PM_TYPE_INVALID": 0, - "PM_TYPE_NAMED_VALUE_MODEL": 1, - "PM_TYPE_NAMED_VALUE_EHANDLE": 2, - "PM_TYPE_CONTROL_POINT": 3, - "PM_TYPE_COUNT": 4 - }, - "ParticleTransformType_t": { - "PT_TYPE_INVALID": 0, - "PT_TYPE_NAMED_VALUE": 1, - "PT_TYPE_CONTROL_POINT": 2, - "PT_TYPE_CONTROL_POINT_RANGE": 3, - "PT_TYPE_COUNT": 4 - }, - "ParticleVecType_t": { - "PVEC_TYPE_INVALID": -1, - "PVEC_TYPE_LITERAL": 0, - "PVEC_TYPE_LITERAL_COLOR": 1, - "PVEC_TYPE_NAMED_VALUE": 2, - "PVEC_TYPE_PARTICLE_VECTOR": 3, - "PVEC_TYPE_PARTICLE_VELOCITY": 4, - "PVEC_TYPE_CP_VALUE": 5, - "PVEC_TYPE_CP_RELATIVE_POSITION": 6, - "PVEC_TYPE_CP_RELATIVE_DIR": 7, - "PVEC_TYPE_CP_RELATIVE_RANDOM_DIR": 8, - "PVEC_TYPE_FLOAT_COMPONENTS": 9, - "PVEC_TYPE_FLOAT_INTERP_CLAMPED": 10, - "PVEC_TYPE_FLOAT_INTERP_OPEN": 11, - "PVEC_TYPE_FLOAT_INTERP_GRADIENT": 12, - "PVEC_TYPE_RANDOM_UNIFORM": 13, - "PVEC_TYPE_RANDOM_UNIFORM_OFFSET": 14, - "PVEC_TYPE_CP_DELTA": 15, - "PVEC_TYPE_CLOSEST_CAMERA_POSITION": 16, - "PVEC_TYPE_COUNT": 17 - }, - "JointAxis_t": { - "JOINT_AXIS_X": 0, - "JOINT_AXIS_Y": 1, - "JOINT_AXIS_Z": 2, - "JOINT_AXIS_COUNT": 3 - }, - "JointMotion_t": { - "JOINT_MOTION_FREE": 0, - "JOINT_MOTION_LOCKED": 1, - "JOINT_MOTION_COUNT": 2 - }, - "InputLayoutVariation_t": { - "INPUT_LAYOUT_VARIATION_DEFAULT": 0, - "INPUT_LAYOUT_VARIATION_STREAM1_INSTANCEID": 1, - "INPUT_LAYOUT_VARIATION_STREAM1_INSTANCEID_MORPH_VERT_ID": 2, - "INPUT_LAYOUT_VARIATION_MAX": 3 - }, - "RenderBufferFlags_t": { - "RENDER_BUFFER_USAGE_VERTEX_BUFFER": 1, - "RENDER_BUFFER_USAGE_INDEX_BUFFER": 2, - "RENDER_BUFFER_USAGE_SHADER_RESOURCE": 4, - "RENDER_BUFFER_USAGE_UNORDERED_ACCESS": 8, - "RENDER_BUFFER_BYTEADDRESS_BUFFER": 16, - "RENDER_BUFFER_STRUCTURED_BUFFER": 32, - "RENDER_BUFFER_APPEND_CONSUME_BUFFER": 64, - "RENDER_BUFFER_UAV_COUNTER": 128, - "RENDER_BUFFER_UAV_DRAW_INDIRECT_ARGS": 256, - "RENDER_BUFFER_ACCELERATION_STRUCTURE": 512, - "RENDER_BUFFER_SHADER_BINDING_TABLE": 1024, - "RENDER_BUFFER_PER_FRAME_WRITE_ONCE": 2048, - "RENDER_BUFFER_POOL_ALLOCATED": 4096 - }, - "RenderMultisampleType_t": { - "RENDER_MULTISAMPLE_INVALID": -1, - "RENDER_MULTISAMPLE_NONE": 0, - "RENDER_MULTISAMPLE_2X": 1, - "RENDER_MULTISAMPLE_4X": 2, - "RENDER_MULTISAMPLE_6X": 3, - "RENDER_MULTISAMPLE_8X": 4, - "RENDER_MULTISAMPLE_16X": 5, - "RENDER_MULTISAMPLE_TYPE_COUNT": 6 - }, - "RenderPrimitiveType_t": { - "RENDER_PRIM_POINTS": 0, - "RENDER_PRIM_LINES": 1, - "RENDER_PRIM_LINES_WITH_ADJACENCY": 2, - "RENDER_PRIM_LINE_STRIP": 3, - "RENDER_PRIM_LINE_STRIP_WITH_ADJACENCY": 4, - "RENDER_PRIM_TRIANGLES": 5, - "RENDER_PRIM_TRIANGLES_WITH_ADJACENCY": 6, - "RENDER_PRIM_TRIANGLE_STRIP": 7, - "RENDER_PRIM_TRIANGLE_STRIP_WITH_ADJACENCY": 8, - "RENDER_PRIM_INSTANCED_QUADS": 9, - "RENDER_PRIM_HETEROGENOUS": 10, - "RENDER_PRIM_COMPUTE_SHADER": 11, - "RENDER_PRIM_TYPE_COUNT": 12 - }, - "RenderSlotType_t": { - "RENDER_SLOT_INVALID": -1, - "RENDER_SLOT_PER_VERTEX": 0, - "RENDER_SLOT_PER_INSTANCE": 1 - }, - "DisableShadows_t": { - "kDisableShadows_None": 0, - "kDisableShadows_All": 1, - "kDisableShadows_Baked": 2, - "kDisableShadows_Realtime": 3 - }, - "ThreeState_t": { - "TRS_FALSE": 0, - "TRS_TRUE": 1, - "TRS_NONE": 2 - }, - "fieldtype_t": { - "FIELD_VOID": 0, - "FIELD_FLOAT32": 1, - "FIELD_STRING": 2, - "FIELD_VECTOR": 3, - "FIELD_QUATERNION": 4, - "FIELD_INT32": 5, - "FIELD_BOOLEAN": 6, - "FIELD_INT16": 7, - "FIELD_CHARACTER": 8, - "FIELD_COLOR32": 9, - "FIELD_EMBEDDED": 10, - "FIELD_CUSTOM": 11, - "FIELD_CLASSPTR": 12, - "FIELD_EHANDLE": 13, - "FIELD_POSITION_VECTOR": 14, - "FIELD_TIME": 15, - "FIELD_TICK": 16, - "FIELD_SOUNDNAME": 17, - "FIELD_INPUT": 18, - "FIELD_FUNCTION": 19, - "FIELD_VMATRIX": 20, - "FIELD_VMATRIX_WORLDSPACE": 21, - "FIELD_MATRIX3X4_WORLDSPACE": 22, - "FIELD_INTERVAL": 23, - "FIELD_UNUSED": 24, - "FIELD_VECTOR2D": 25, - "FIELD_INT64": 26, - "FIELD_VECTOR4D": 27, - "FIELD_RESOURCE": 28, - "FIELD_TYPEUNKNOWN": 29, - "FIELD_CSTRING": 30, - "FIELD_HSCRIPT": 31, - "FIELD_VARIANT": 32, - "FIELD_UINT64": 33, - "FIELD_FLOAT64": 34, - "FIELD_POSITIVEINTEGER_OR_NULL": 35, - "FIELD_HSCRIPT_NEW_INSTANCE": 36, - "FIELD_UINT32": 37, - "FIELD_UTLSTRINGTOKEN": 38, - "FIELD_QANGLE": 39, - "FIELD_NETWORK_ORIGIN_CELL_QUANTIZED_VECTOR": 40, - "FIELD_HMATERIAL": 41, - "FIELD_HMODEL": 42, - "FIELD_NETWORK_QUANTIZED_VECTOR": 43, - "FIELD_NETWORK_QUANTIZED_FLOAT": 44, - "FIELD_DIRECTION_VECTOR_WORLDSPACE": 45, - "FIELD_QANGLE_WORLDSPACE": 46, - "FIELD_QUATERNION_WORLDSPACE": 47, - "FIELD_HSCRIPT_LIGHTBINDING": 48, - "FIELD_V8_VALUE": 49, - "FIELD_V8_OBJECT": 50, - "FIELD_V8_ARRAY": 51, - "FIELD_V8_CALLBACK_INFO": 52, - "FIELD_UTLSTRING": 53, - "FIELD_NETWORK_ORIGIN_CELL_QUANTIZED_POSITION_VECTOR": 54, - "FIELD_HRENDERTEXTURE": 55, - "FIELD_HPARTICLESYSTEMDEFINITION": 56, - "FIELD_UINT8": 57, - "FIELD_UINT16": 58, - "FIELD_CTRANSFORM": 59, - "FIELD_CTRANSFORM_WORLDSPACE": 60, - "FIELD_HPOSTPROCESSING": 61, - "FIELD_MATRIX3X4": 62, - "FIELD_SHIM": 63, - "FIELD_CMOTIONTRANSFORM": 64, - "FIELD_CMOTIONTRANSFORM_WORLDSPACE": 65, - "FIELD_ATTACHMENT_HANDLE": 66, - "FIELD_AMMO_INDEX": 67, - "FIELD_CONDITION_ID": 68, - "FIELD_AI_SCHEDULE_BITS": 69, - "FIELD_MODIFIER_HANDLE": 70, - "FIELD_ROTATION_VECTOR": 71, - "FIELD_ROTATION_VECTOR_WORLDSPACE": 72, - "FIELD_HVDATA": 73, - "FIELD_SCALE32": 74, - "FIELD_STRING_AND_TOKEN": 75, - "FIELD_ENGINE_TIME": 76, - "FIELD_ENGINE_TICK": 77, - "FIELD_WORLD_GROUP_ID": 78, - "FIELD_GLOBALSYMBOL": 79, - "FIELD_TYPECOUNT": 80 - }, - "ChickenActivity": { - "IDLE": 0, - "SQUAT": 1, - "WALK": 2, - "RUN": 3, - "GLIDE": 4, - "LAND": 5, - "PANIC": 6, - "TRICK": 7, - "TURN_IN_PLACE": 8 - }, - "EOverrideBlockLOS_t": { - "BLOCK_LOS_DEFAULT": 0, - "BLOCK_LOS_FORCE_FALSE": 1, - "BLOCK_LOS_FORCE_TRUE": 2 - }, - "EntFinderMethod_t": { - "ENT_FIND_METHOD_NEAREST": 0, - "ENT_FIND_METHOD_FARTHEST": 1, - "ENT_FIND_METHOD_RANDOM": 2 - }, - "Explosions": { - "expRandom": 0, - "expDirected": 1, - "expUsePrecise": 2 - }, - "ForcedCrouchState_t": { - "FORCEDCROUCH_NONE": 0, - "FORCEDCROUCH_CROUCHED": 1, - "FORCEDCROUCH_UNCROUCHED": 2 - }, - "FuncDoorSpawnPos_t": { - "FUNC_DOOR_SPAWN_CLOSED": 0, - "FUNC_DOOR_SPAWN_OPEN": 1 - }, - "LessonPanelLayoutFileTypes_t": { - "LAYOUT_HAND_DEFAULT": 0, - "LAYOUT_WORLD_DEFAULT": 1, - "LAYOUT_CUSTOM": 2 - }, - "Materials": { - "matGlass": 0, - "matWood": 1, - "matMetal": 2, - "matFlesh": 3, - "matCinderBlock": 4, - "matCeilingTile": 5, - "matComputer": 6, - "matUnbreakableGlass": 7, - "matRocks": 8, - "matWeb": 9, - "matNone": 10, - "matLastMaterial": 11 - }, - "MoveLinearAuthoredPos_t": { - "MOVELINEAR_AUTHORED_AT_START_POSITION": 0, - "MOVELINEAR_AUTHORED_AT_OPEN_POSITION": 1, - "MOVELINEAR_AUTHORED_AT_CLOSED_POSITION": 2 - }, - "NPCFollowFormation_t": { - "Default": -1, - "CloseCircle": 0, - "WideCircle": 1, - "MediumCircle": 5, - "Sidekick": 6 - }, - "PropDoorRotatingOpenDirection_e": { - "DOOR_ROTATING_OPEN_BOTH_WAYS": 0, - "DOOR_ROTATING_OPEN_FORWARD": 1, - "DOOR_ROTATING_OPEN_BACKWARD": 2 - }, - "PropDoorRotatingSpawnPos_t": { - "DOOR_SPAWN_CLOSED": 0, - "DOOR_SPAWN_OPEN_FORWARD": 1, - "DOOR_SPAWN_OPEN_BACK": 2, - "DOOR_SPAWN_AJAR": 3 - }, - "SceneOnPlayerDeath_t": { - "SCENE_ONPLAYERDEATH_DO_NOTHING": 0, - "SCENE_ONPLAYERDEATH_CANCEL": 1 - }, - "ScriptedConflictResponse_t": { - "SS_CONFLICT_ENQUEUE": 0, - "SS_CONFLICT_INTERRUPT": 1 - }, - "ScriptedMoveType_t": { - "SCRIPTED_MOVETYPE_NONE": 0, - "SCRIPTED_MOVETYPE_TO_WITH_DURATION": 1, - "SCRIPTED_MOVETYPE_TO_WITH_MOVESPEED": 2, - "SCRIPTED_MOVETYPE_SWEEP_TO_AT_MOVEMENT_SPEED": 3 - }, - "SoundEventStartType_t": { - "SOUNDEVENT_START_PLAYER": 0, - "SOUNDEVENT_START_WORLD": 1, - "SOUNDEVENT_START_ENTITY": 2 - }, - "SoundFlags_t": { - "SOUND_FLAGS_NONE": 0, - "SOUND_FLAG_GUNFIRE": 1, - "SOUND_FLAG_COMBINE_ONLY": 2, - "SOUND_FLAG_REACT_TO_SOURCE": 4, - "SOUND_FLAG_EXPLOSION": 8, - "SOUND_FLAG_EXCLUDE_COMBINE": 16, - "SOUND_FLAG_DANGER_APPROACH": 32, - "SOUND_FLAG_ALLIES_ONLY": 64, - "SOUND_FLAG_PANIC_NPCS": 128, - "SOUND_FLAG_SQUAD_ONLY": 256 - }, - "SoundTypes_t": { - "SOUND_NONE": 0, - "SOUND_COMBAT": 1, - "SOUND_PLAYER": 2, - "SOUND_DANGER": 3, - "SOUND_BULLET_IMPACT": 4, - "SOUND_THUMPER": 5, - "SOUND_PHYSICS_DANGER": 6, - "SOUND_MOVE_AWAY": 7, - "SOUND_PLAYER_VEHICLE": 8, - "SOUND_GLASS_BREAK": 9, - "SOUND_PHYSICS_OBJECT": 10, - "SOUND_WARN_FRIENDS": 11, - "SOUND_FOOD": 12, - "NUM_AI_SOUND_TYPES": 13 - }, - "TOGGLE_STATE": { - "TS_AT_TOP": 0, - "TS_AT_BOTTOM": 1, - "TS_GOING_UP": 2, - "TS_GOING_DOWN": 3, - "DOOR_OPEN": 0, - "DOOR_CLOSED": 1, - "DOOR_OPENING": 2, - "DOOR_CLOSING": 3 - }, - "TRAIN_CODE": { - "TRAIN_SAFE": 0, - "TRAIN_BLOCKING": 1, - "TRAIN_FOLLOWING": 2 - }, - "Touch_t": { - "touch_none": 0, - "touch_player_only": 1, - "touch_npc_only": 2, - "touch_player_or_npc": 3, - "touch_player_or_npc_or_physicsprop": 4 - }, - "TrackOrientationType_t": { - "TrackOrientation_Fixed": 0, - "TrackOrientation_FacePath": 1, - "TrackOrientation_FacePathAngles": 2 - }, - "TrainOrientationType_t": { - "TrainOrientation_Fixed": 0, - "TrainOrientation_AtPathTracks": 1, - "TrainOrientation_LinearBlend": 2, - "TrainOrientation_EaseInEaseOut": 3 - }, - "TrainVelocityType_t": { - "TrainVelocity_Instantaneous": 0, - "TrainVelocity_LinearBlend": 1, - "TrainVelocity_EaseInEaseOut": 2 - }, - "doorCheck_e": { - "DOOR_CHECK_FORWARD": 0, - "DOOR_CHECK_BACKWARD": 1, - "DOOR_CHECK_FULL": 2 - }, - "eSplinePushType": { - "k_eSplinePushAlong": 0, - "k_eSplinePushAway": 1, - "k_eSplinePushTowards": 2 - }, - "filter_t": { - "FILTER_AND": 0, - "FILTER_OR": 1 - }, - "navproperties_t": { - "NAV_IGNORE": 1 - }, - "ActionType_t": { - "SOS_ACTION_NONE": 0, - "SOS_ACTION_LIMITER": 1, - "SOS_ACTION_TIME_LIMIT": 2, - "SOS_ACTION_TIME_BLOCK_LIMITER": 3, - "SOS_ACTION_SET_SOUNDEVENT_PARAM": 4, - "SOS_ACTION_SOUNDEVENT_CLUSTER": 5, - "SOS_ACTION_SOUNDEVENT_PRIORITY": 6, - "SOS_ACTION_COUNT_ENVELOPE": 7, - "SOS_ACTION_SOUNDEVENT_COUNT": 8, - "SOS_ACTION_SOUNDEVENT_MIN_MAX_VALUES": 9 - }, - "SosActionSortType_t": { - "SOS_SORTTYPE_HIGHEST": 0, - "SOS_SORTTYPE_LOWEST": 1 - }, - "SosActionStopType_t": { - "SOS_STOPTYPE_NONE": 0, - "SOS_STOPTYPE_TIME": 1, - "SOS_STOPTYPE_OPVAR": 2 - }, - "SosEditItemType_t": { - "SOS_EDIT_ITEM_TYPE_SOUNDEVENTS": 0, - "SOS_EDIT_ITEM_TYPE_SOUNDEVENT": 1, - "SOS_EDIT_ITEM_TYPE_LIBRARYSTACKS": 2, - "SOS_EDIT_ITEM_TYPE_STACK": 3, - "SOS_EDIT_ITEM_TYPE_OPERATOR": 4, - "SOS_EDIT_ITEM_TYPE_FIELD": 5 - }, - "SosGroupType_t": { - "SOS_GROUPTYPE_DYNAMIC": 0, - "SOS_GROUPTYPE_STATIC": 1 - }, - "soundlevel_t": { - "SNDLVL_NONE": 0, - "SNDLVL_20dB": 20, - "SNDLVL_25dB": 25, - "SNDLVL_30dB": 30, - "SNDLVL_35dB": 35, - "SNDLVL_40dB": 40, - "SNDLVL_45dB": 45, - "SNDLVL_50dB": 50, - "SNDLVL_55dB": 55, - "SNDLVL_IDLE": 60, - "SNDLVL_60dB": 60, - "SNDLVL_65dB": 65, - "SNDLVL_STATIC": 66, - "SNDLVL_70dB": 70, - "SNDLVL_NORM": 75, - "SNDLVL_75dB": 75, - "SNDLVL_80dB": 80, - "SNDLVL_TALKING": 80, - "SNDLVL_85dB": 85, - "SNDLVL_90dB": 90, - "SNDLVL_95dB": 95, - "SNDLVL_100dB": 100, - "SNDLVL_105dB": 105, - "SNDLVL_110dB": 110, - "SNDLVL_120dB": 120, - "SNDLVL_130dB": 130, - "SNDLVL_GUNFIRE": 140, - "SNDLVL_140dB": 140, - "SNDLVL_150dB": 150, - "SNDLVL_180dB": 180 - }, - "VMixChannelOperation_t": { - "VMIX_CHAN_STEREO": 0, - "VMIX_CHAN_LEFT": 1, - "VMIX_CHAN_RIGHT": 2, - "VMIX_CHAN_SWAP": 3, - "VMIX_CHAN_MONO": 4, - "VMIX_CHAN_MID_SIDE": 5 - }, - "VMixFilterSlope_t": { - "FILTER_SLOPE_1POLE_6dB": 0, - "FILTER_SLOPE_1POLE_12dB": 1, - "FILTER_SLOPE_1POLE_18dB": 2, - "FILTER_SLOPE_1POLE_24dB": 3, - "FILTER_SLOPE_12dB": 4, - "FILTER_SLOPE_24dB": 5, - "FILTER_SLOPE_36dB": 6, - "FILTER_SLOPE_48dB": 7, - "FILTER_SLOPE_MAX": 7 - }, - "VMixFilterType_t": { - "FILTER_UNKNOWN": -1, - "FILTER_LOWPASS": 0, - "FILTER_HIGHPASS": 1, - "FILTER_BANDPASS": 2, - "FILTER_NOTCH": 3, - "FILTER_PEAKING_EQ": 4, - "FILTER_LOW_SHELF": 5, - "FILTER_HIGH_SHELF": 6, - "FILTER_ALLPASS": 7, - "FILTER_PASSTHROUGH": 8 - }, - "VMixLFOShape_t": { - "LFO_SHAPE_SINE": 0, - "LFO_SHAPE_SQUARE": 1, - "LFO_SHAPE_TRI": 2, - "LFO_SHAPE_SAW": 3, - "LFO_SHAPE_NOISE": 4 - }, - "VMixPannerType_t": { - "PANNER_TYPE_LINEAR": 0, - "PANNER_TYPE_EQUAL_POWER": 1 - }, - "VMixProcessorType_t": { - "VPROCESSOR_UNKNOWN": 0, - "VPROCESSOR_RT_PITCH": 1, - "VPROCESSOR_STEAMAUDIO_HRTF": 2, - "VPROCESSOR_DYNAMICS": 3, - "VPROCESSOR_PRESETDSP": 4, - "VPROCESSOR_DELAY": 5, - "VPROCESSOR_MOD_DELAY": 6, - "VPROCESSOR_DIFFUSOR": 7, - "VPROCESSOR_BOXVERB": 8, - "VPROCESSOR_FREEVERB": 9, - "VPROCESSOR_PLATEVERB": 10, - "VPROCESSOR_FULLWAVE_INTEGRATOR": 11, - "VPROCESSOR_FILTER": 12, - "VPROCESSOR_STEAMAUDIO_PATHING": 13, - "VPROCESSOR_EQ8": 14, - "VPROCESSOR_ENVELOPE": 15, - "VPROCESSOR_VOCODER": 16, - "VPROCESSOR_CONVOLUTION": 17, - "VPROCESSOR_DYNAMICS_3BAND": 18, - "VPROCESSOR_DYNAMICS_COMPRESSOR": 19, - "VPROCESSOR_SHAPER": 20, - "VPROCESSOR_PANNER": 21, - "VPROCESSOR_UTILITY": 22, - "VPROCESSOR_AUTOFILTER": 23, - "VPROCESSOR_OSC": 24, - "VPROCESSOR_STEREODELAY": 25, - "VPROCESSOR_EFFECT_CHAIN": 26, - "VPROCESSOR_SUBGRAPH_SWITCH": 27, - "VPROCESSOR_STEAMAUDIO_DIRECT": 28, - "VPROCESSOR_STEAMAUDIO_HYBRIDREVERB": 29 - }, - "VMixSubgraphSwitchInterpolationType_t": { - "SUBGRAPH_INTERPOLATION_TEMPORAL_CROSSFADE": 0, - "SUBGRAPH_INTERPOLATION_TEMPORAL_FADE_OUT": 1, - "SUBGRAPH_INTERPOLATION_KEEP_LAST_SUBGRAPH_RUNNING": 2 - }, - "CVSoundFormat_t": { - "PCM16": 0, - "PCM8": 1, - "MP3": 2, - "ADPCM": 3 - }, - "EMidiNote": { - "C": 0, - "C_Sharp": 1, - "D": 2, - "D_Sharp": 3, - "E": 4, - "F": 5, - "F_Sharp": 6, - "G": 7, - "G_Sharp": 8, - "A": 9, - "A_Sharp": 10, - "B": 11, - "Count": 12 - }, - "EMode_t": { - "Peak": 0, - "RMS": 1 - }, - "EWaveform": { - "Sine": 0, - "Square": 1, - "Saw": 2, - "Triangle": 3, - "Noise": 4 - }, - "PlayBackMode_t": { - "Random": 0, - "RandomNoRepeats": 1, - "RandomAvoidLast": 2, - "Sequential": 3, - "RandomWeights": 4 - }, - "ObjectTypeFlags_t": { - "OBJECT_TYPE_NONE": 0, - "OBJECT_TYPE_MODEL": 8, - "OBJECT_TYPE_BLOCK_LIGHT": 16, - "OBJECT_TYPE_NO_SHADOWS": 32, - "OBJECT_TYPE_WORLDSPACE_TEXURE_BLEND": 64, - "OBJECT_TYPE_DISABLED_IN_LOW_QUALITY": 128, - "OBJECT_TYPE_NO_SUN_SHADOWS": 256, - "OBJECT_TYPE_RENDER_WITH_DYNAMIC": 512, - "OBJECT_TYPE_RENDER_TO_CUBEMAPS": 1024, - "OBJECT_TYPE_MODEL_HAS_LODS": 2048, - "OBJECT_TYPE_OVERLAY": 8192, - "OBJECT_TYPE_PRECOMPUTED_VISMEMBERS": 16384, - "OBJECT_TYPE_STATIC_CUBE_MAP": 32768, - "OBJECT_TYPE_DISABLE_VIS_CULLING": 65536, - "OBJECT_TYPE_BAKED_GEOMETRY": 131072 - } -} \ No newline at end of file diff --git a/plugin_files/logs/.gitignore b/plugin_files/logs/.gitignore deleted file mode 100644 index e69de29bb..000000000 diff --git a/plugin_files/logs/plugins/.gitignore b/plugin_files/logs/plugins/.gitignore deleted file mode 100644 index e69de29bb..000000000 diff --git a/plugin_files/plugins/.gitignore b/plugin_files/plugins/.gitignore deleted file mode 100644 index 1c2d77b5c..000000000 --- a/plugin_files/plugins/.gitignore +++ /dev/null @@ -1 +0,0 @@ -test_plugin/ \ No newline at end of file diff --git a/plugin_files/translations/.gitignore b/plugin_files/translations/.gitignore deleted file mode 100644 index e69de29bb..000000000 diff --git a/plugin_files/translations/translation.core.json b/plugin_files/translations/translation.core.json deleted file mode 100644 index 2899be9fc..000000000 --- a/plugin_files/translations/translation.core.json +++ /dev/null @@ -1,92 +0,0 @@ -{ - "seconds": { - "en": "{TIME} second(s)", - "ro": "{TIME} secunde", - "es": "{TIME} segundo(s)", - "pl": "{TIME} sekund(a/y)", - "de": "{TIME} sekunde(n)" - }, - "minutes": { - "en": "{TIME} minute(s)", - "ro": "{TIME} minut(e)", - "es": "{TIME} minuto(s)", - "pl": "{TIME} minut(a/y)", - "de": "{TIME} minute(n)" - }, - "hours": { - "en": "{TIME} hour(s)", - "ro": "{TIME} ore", - "es": "{TIME} hora(s)", - "pl": "{TIME} godzin(a/y)", - "de": "{TIME} stunde(n)" - }, - "days": { - "en": "{TIME} day(s)", - "ro": "{TIME} zi(le)", - "es": "{TIME} día(s)", - "pl": "{TIME} dzień/dni", - "de": "{TIME} tag(e)" - }, - "forever": { - "en": "Forever", - "ro": "Pentru totdeauna", - "es": "Para siempre", - "pl": "Na zawsze", - "de": "Für immer" - }, - "never": { - "en": "Never", - "ro": "Niciodată", - "es": "Nunca", - "pl": "Nigdy", - "de": "Niemals" - }, - "menu.next": { - "en": "Next", - "ro": "Următorul", - "pl": "Następny", - "de": "Nächstes" - }, - "menu.back": { - "en": "Back", - "ro": "Înapoi", - "pl": "Wstecz", - "de": "Zurück" - }, - "menu.exit": { - "en": "Exit", - "ro": "Ieșire", - "pl": "Wyjście", - "de": "Beenden" - }, - "menu.input.chat": { - "en": "Page {PAGE}/{MAXPAGES} | {PREFIX}1 - {PREFIX}9", - "ro": "Pagina {PAGE}/{MAXPAGES} | {PREFIX}1 - {PREFIX}9", - "pl": "Strona {PAGE}/{MAXPAGES} | {PREFIX}1 - {PREFIX}9", - "de": "Seite {PAGE}/{MAXPAGES} | {PREFIX}1 - {PREFIX}9" - }, - "menu.center.footer": { - "en": "{CYCLE_BUTTON} - Cycle | {USE_BUTTON} - Select | Page {PAGE}/{MAXPAGES}", - "ro": "{CYCLE_BUTTON} - Schimbă | {USE_BUTTON} - Selectează | Pagina {PAGE}/{MAXPAGES}", - "pl": "{CYCLE_BUTTON} - Przeglądaj | {USE_BUTTON} - Wybierz | Strona {PAGE}/{MAXPAGES}", - "de": "{CYCLE_BUTTON} - Durchblättern | {USE_BUTTON} - Auswählen | Seite {PAGE}/{MAXPAGES}" - }, - "menu.center.footer.nooption": { - "en": "{CYCLE_BUTTON} - Cycle | {USE_BUTTON} - Select | {EXIT_BUTTON} - Exit | Page {PAGE}/{MAXPAGES}", - "ro": "{CYCLE_BUTTON} - Schimbă | {USE_BUTTON} - Selectează | {EXIT_BUTTON} - Ieșire | Pagina {PAGE}/{MAXPAGES}", - "pl": "{CYCLE_BUTTON} - Przeglądaj | {USE_BUTTON} - Wybierz | {EXIT_BUTTON} - Wyjście | Strona {PAGE}/{MAXPAGES}", - "de": "{CYCLE_BUTTON} - Durchblättern | {USE_BUTTON} - Auswählen | {EXIT_BUTTON} - Beenden | Seite {PAGE}/{MAXPAGES}" - }, - "menu.screen.footer": { - "en": "{CYCLE_BUTTON} - Cycle | {USE_BUTTON} - Select\nPage {PAGE}/{MAXPAGES}", - "ro": "{CYCLE_BUTTON} - Schimbă | {USE_BUTTON} - Selectează\nPagina {PAGE}/{MAXPAGES}", - "pl": "{CYCLE_BUTTON} - Przeglądaj | {USE_BUTTON} - Wybierz\nStrona {PAGE}/{MAXPAGES}", - "de": "{CYCLE_BUTTON} - Durchblättern | {USE_BUTTON} - Auswählen\nSeite {PAGE}/{MAXPAGES}" - }, - "menu.screen.footer.nooption": { - "en": "{CYCLE_BUTTON} - Cycle | {USE_BUTTON} - Select\n{EXIT_BUTTON} - Exit | Page {PAGE}/{MAXPAGES}", - "ro": "{CYCLE_BUTTON} - Schimbă | {USE_BUTTON} - Selectează\n{EXIT_BUTTON} - Ieșire | Pagina {PAGE}/{MAXPAGES}", - "pl": "{CYCLE_BUTTON} - Przeglądaj | {USE_BUTTON} - Wybierz\n{EXIT_BUTTON} - Wyjście | Strona {PAGE}/{MAXPAGES}", - "de": "{CYCLE_BUTTON} - Durchblättern | {USE_BUTTON} - Auswählen\n{EXIT_BUTTON} - Beenden | Seite {PAGE}/{MAXPAGES}" - } -} \ No newline at end of file diff --git a/protobufs/clientmessages.proto b/protobufs/clientmessages.proto deleted file mode 100644 index 484ae5744..000000000 --- a/protobufs/clientmessages.proto +++ /dev/null @@ -1,53 +0,0 @@ -enum EBaseClientMessages { - CM_CustomGameEvent = 280; - CM_CustomGameEventBounce = 281; - CM_ClientUIEvent = 282; - CM_DevPaletteVisibilityChanged = 283; - CM_WorldUIControllerHasPanelChanged = 284; - CM_RotateAnchor = 285; - CM_ListenForResponseFound = 286; - CM_MAX_BASE = 300; -} - -enum EClientUIEvent { - EClientUIEvent_Invalid = 0; - EClientUIEvent_DialogFinished = 1; - EClientUIEvent_FireOutput = 2; -} - -message CClientMsg_CustomGameEvent { - optional string event_name = 1; - optional bytes data = 2; -} - -message CClientMsg_CustomGameEventBounce { - optional string event_name = 1; - optional bytes data = 2; - optional int32 player_slot = 3 [default = -1]; -} - -message CClientMsg_ClientUIEvent { - optional .EClientUIEvent event = 1 [default = EClientUIEvent_Invalid]; - optional uint32 ent_ehandle = 2; - optional uint32 client_ehandle = 3; - optional string data1 = 4; - optional string data2 = 5; -} - -message CClientMsg_DevPaletteVisibilityChangedEvent { - optional bool visible = 1; -} - -message CClientMsg_WorldUIControllerHasPanelChangedEvent { - optional bool has_panel = 1; - optional uint32 client_ehandle = 2; - optional uint32 literal_hand_type = 3; -} - -message CClientMsg_RotateAnchor { - optional float angle = 1; -} - -message CClientMsg_ListenForResponseFound { - optional int32 player_slot = 1 [default = -1]; -} diff --git a/protobufs/cs_gameevents.proto b/protobufs/cs_gameevents.proto deleted file mode 100644 index eb6a8feb9..000000000 --- a/protobufs/cs_gameevents.proto +++ /dev/null @@ -1,35 +0,0 @@ -import "networkbasetypes.proto"; - -enum ECsgoGameEvents { - GE_PlayerAnimEventId = 450; - GE_RadioIconEventId = 451; - GE_FireBulletsId = 452; -} - -message CMsgTEPlayerAnimEvent { - optional fixed32 player = 1 [default = 16777215]; - optional uint32 event = 2; - optional int32 data = 3; -} - -message CMsgTERadioIcon { - optional fixed32 player = 1 [default = 16777215]; -} - -message CMsgTEFireBullets { - optional .CMsgVector origin = 1; - optional .CMsgQAngle angles = 2; - optional uint32 weapon_id = 3 [default = 16777215]; - optional uint32 mode = 4; - optional uint32 seed = 5; - optional fixed32 player = 6 [default = 16777215]; - optional float inaccuracy = 7; - optional float recoil_index = 8; - optional float spread = 9; - optional int32 sound_type = 10; - optional uint32 item_def_index = 11; - optional fixed32 sound_dsp_effect = 12; - optional .CMsgVector ent_origin = 13; - optional uint32 num_bullets_remaining = 14; - optional uint32 attack_type = 15; -} diff --git a/protobufs/cs_usercmd.proto b/protobufs/cs_usercmd.proto deleted file mode 100644 index 87dd3ad3d..000000000 --- a/protobufs/cs_usercmd.proto +++ /dev/null @@ -1,42 +0,0 @@ -import "networkbasetypes.proto"; -import "usercmd.proto"; - -message CSGOInterpolationInfoPB { - optional int32 src_tick = 1 [default = -1]; - optional int32 dst_tick = 2 [default = -1]; - optional float frac = 3 [default = 0]; -} - -message CSGOInterpolationInfoPB_CL { - optional float frac = 3 [default = 0]; -} - -message CSGOInputHistoryEntryPB { - optional .CMsgQAngle view_angles = 2; - optional int32 render_tick_count = 4; - optional float render_tick_fraction = 5; - optional int32 player_tick_count = 6; - optional float player_tick_fraction = 7; - optional .CSGOInterpolationInfoPB_CL cl_interp = 12; - optional .CSGOInterpolationInfoPB sv_interp0 = 13; - optional .CSGOInterpolationInfoPB sv_interp1 = 14; - optional .CSGOInterpolationInfoPB player_interp = 15; - optional int32 frame_number = 64; - optional int32 target_ent_index = 65 [default = -1]; - optional .CMsgVector shoot_position = 66; - optional .CMsgVector target_head_pos_check = 67; - optional .CMsgVector target_abs_pos_check = 68; - optional .CMsgQAngle target_abs_ang_check = 69; -} - -message CSGOUserCmdPB { - optional .CBaseUserCmdPB base = 1; - repeated .CSGOInputHistoryEntryPB input_history = 2; - optional int32 attack1_start_history_index = 6 [default = -1]; - optional int32 attack2_start_history_index = 7 [default = -1]; - optional int32 attack3_start_history_index = 8 [default = -1]; - optional bool left_hand_desired = 9 [default = false]; - optional bool is_predicting_body_shot_fx = 11 [default = false]; - optional bool is_predicting_head_shot_fx = 12 [default = false]; - optional bool is_predicting_kill_ragdolls = 13 [default = false]; -} diff --git a/protobufs/cstrike15_gcmessages.proto b/protobufs/cstrike15_gcmessages.proto deleted file mode 100644 index 485974efd..000000000 --- a/protobufs/cstrike15_gcmessages.proto +++ /dev/null @@ -1,1505 +0,0 @@ -import "steammessages.proto"; -import "engine_gcmessages.proto"; -import "gcsdk_gcmessages.proto"; - -enum ECsgoGCMsg { - k_EMsgGCCStrike15_v2_Base = 9100; - k_EMsgGCCStrike15_v2_MatchmakingStart = 9101; - k_EMsgGCCStrike15_v2_MatchmakingStop = 9102; - k_EMsgGCCStrike15_v2_MatchmakingClient2ServerPing = 9103; - k_EMsgGCCStrike15_v2_MatchmakingGC2ClientUpdate = 9104; - k_EMsgGCCStrike15_v2_MatchmakingServerReservationResponse = 9106; - k_EMsgGCCStrike15_v2_MatchmakingGC2ClientReserve = 9107; - k_EMsgGCCStrike15_v2_MatchmakingClient2GCHello = 9109; - k_EMsgGCCStrike15_v2_MatchmakingGC2ClientHello = 9110; - k_EMsgGCCStrike15_v2_MatchmakingGC2ClientAbandon = 9112; - k_EMsgGCCStrike15_v2_MatchmakingOperator2GCBlogUpdate = 9117; - k_EMsgGCCStrike15_v2_ServerNotificationForUserPenalty = 9118; - k_EMsgGCCStrike15_v2_ClientReportPlayer = 9119; - k_EMsgGCCStrike15_v2_ClientReportServer = 9120; - k_EMsgGCCStrike15_v2_ClientCommendPlayer = 9121; - k_EMsgGCCStrike15_v2_ClientReportResponse = 9122; - k_EMsgGCCStrike15_v2_ClientCommendPlayerQuery = 9123; - k_EMsgGCCStrike15_v2_ClientCommendPlayerQueryResponse = 9124; - k_EMsgGCCStrike15_v2_WatchInfoUsers = 9126; - k_EMsgGCCStrike15_v2_ClientRequestPlayersProfile = 9127; - k_EMsgGCCStrike15_v2_PlayersProfile = 9128; - k_EMsgGCCStrike15_v2_PlayerOverwatchCaseUpdate = 9131; - k_EMsgGCCStrike15_v2_PlayerOverwatchCaseAssignment = 9132; - k_EMsgGCCStrike15_v2_PlayerOverwatchCaseStatus = 9133; - k_EMsgGCCStrike15_v2_GC2ClientTextMsg = 9134; - k_EMsgGCCStrike15_v2_Client2GCTextMsg = 9135; - k_EMsgGCCStrike15_v2_MatchEndRunRewardDrops = 9136; - k_EMsgGCCStrike15_v2_MatchEndRewardDropsNotification = 9137; - k_EMsgGCCStrike15_v2_ClientRequestWatchInfoFriends2 = 9138; - k_EMsgGCCStrike15_v2_MatchList = 9139; - k_EMsgGCCStrike15_v2_MatchListRequestCurrentLiveGames = 9140; - k_EMsgGCCStrike15_v2_MatchListRequestRecentUserGames = 9141; - k_EMsgGCCStrike15_v2_GC2ServerReservationUpdate = 9142; - k_EMsgGCCStrike15_v2_ClientVarValueNotificationInfo = 9144; - k_EMsgGCCStrike15_v2_MatchListRequestTournamentGames = 9146; - k_EMsgGCCStrike15_v2_MatchListRequestFullGameInfo = 9147; - k_EMsgGCCStrike15_v2_GiftsLeaderboardRequest = 9148; - k_EMsgGCCStrike15_v2_GiftsLeaderboardResponse = 9149; - k_EMsgGCCStrike15_v2_ServerVarValueNotificationInfo = 9150; - k_EMsgGCCStrike15_v2_ClientSubmitSurveyVote = 9152; - k_EMsgGCCStrike15_v2_Server2GCClientValidate = 9153; - k_EMsgGCCStrike15_v2_MatchListRequestLiveGameForUser = 9154; - k_EMsgGCCStrike15_v2_Client2GCEconPreviewDataBlockRequest = 9156; - k_EMsgGCCStrike15_v2_Client2GCEconPreviewDataBlockResponse = 9157; - k_EMsgGCCStrike15_v2_AccountPrivacySettings = 9158; - k_EMsgGCCStrike15_v2_SetMyActivityInfo = 9159; - k_EMsgGCCStrike15_v2_MatchListRequestTournamentPredictions = 9160; - k_EMsgGCCStrike15_v2_MatchListUploadTournamentPredictions = 9161; - k_EMsgGCCStrike15_v2_DraftSummary = 9162; - k_EMsgGCCStrike15_v2_ClientRequestJoinFriendData = 9163; - k_EMsgGCCStrike15_v2_ClientRequestJoinServerData = 9164; - k_EMsgGCCStrike15_v2_ClientRequestNewMission = 9165; - k_EMsgGCCStrike15_v2_GC2ClientTournamentInfo = 9167; - k_EMsgGC_GlobalGame_Subscribe = 9168; - k_EMsgGC_GlobalGame_Unsubscribe = 9169; - k_EMsgGC_GlobalGame_Play = 9170; - k_EMsgGCCStrike15_v2_AcknowledgePenalty = 9171; - k_EMsgGCCStrike15_v2_Client2GCRequestPrestigeCoin = 9172; - k_EMsgGCCStrike15_v2_GC2ClientGlobalStats = 9173; - k_EMsgGCCStrike15_v2_Client2GCStreamUnlock = 9174; - k_EMsgGCCStrike15_v2_FantasyRequestClientData = 9175; - k_EMsgGCCStrike15_v2_FantasyUpdateClientData = 9176; - k_EMsgGCCStrike15_v2_GCToClientSteamdatagramTicket = 9177; - k_EMsgGCCStrike15_v2_ClientToGCRequestTicket = 9178; - k_EMsgGCCStrike15_v2_ClientToGCRequestElevate = 9179; - k_EMsgGCCStrike15_v2_GlobalChat = 9180; - k_EMsgGCCStrike15_v2_GlobalChat_Subscribe = 9181; - k_EMsgGCCStrike15_v2_GlobalChat_Unsubscribe = 9182; - k_EMsgGCCStrike15_v2_ClientAuthKeyCode = 9183; - k_EMsgGCCStrike15_v2_GotvSyncPacket = 9184; - k_EMsgGCCStrike15_v2_ClientPlayerDecalSign = 9185; - k_EMsgGCCStrike15_v2_ClientLogonFatalError = 9187; - k_EMsgGCCStrike15_v2_ClientPollState = 9188; - k_EMsgGCCStrike15_v2_Party_Register = 9189; - k_EMsgGCCStrike15_v2_Party_Unregister = 9190; - k_EMsgGCCStrike15_v2_Party_Search = 9191; - k_EMsgGCCStrike15_v2_Party_Invite = 9192; - k_EMsgGCCStrike15_v2_Account_RequestCoPlays = 9193; - k_EMsgGCCStrike15_v2_ClientGCRankUpdate = 9194; - k_EMsgGCCStrike15_v2_ClientRequestOffers = 9195; - k_EMsgGCCStrike15_v2_ClientAccountBalance = 9196; - k_EMsgGCCStrike15_v2_ClientPartyJoinRelay = 9197; - k_EMsgGCCStrike15_v2_ClientPartyWarning = 9198; - k_EMsgGCCStrike15_v2_SetEventFavorite = 9200; - k_EMsgGCCStrike15_v2_GetEventFavorites_Request = 9201; - k_EMsgGCCStrike15_v2_ClientPerfReport = 9202; - k_EMsgGCCStrike15_v2_GetEventFavorites_Response = 9203; - k_EMsgGCCStrike15_v2_ClientRequestSouvenir = 9204; - k_EMsgGCCStrike15_v2_ClientReportValidation = 9205; - k_EMsgGCCStrike15_v2_GC2ClientRefuseSecureMode = 9206; - k_EMsgGCCStrike15_v2_GC2ClientRequestValidation = 9207; - k_EMsgGCCStrike15_v2_ClientRedeemMissionReward = 9209; - k_EMsgGCCStrike15_ClientDeepStats = 9210; - k_EMsgGCCStrike15_StartAgreementSessionInGame = 9211; - k_EMsgGCCStrike15_v2_GC2ClientInitSystem = 9212; - k_EMsgGCCStrike15_v2_GC2ClientInitSystem_Response = 9213; - k_EMsgGCCStrike15_v2_PrivateQueues = 9214; - k_EMsgGCCStrike15_v2_MatchListTournamentOperatorMgmt = 9215; - k_EMsgGCCStrike15_v2_BetaEnrollment = 9217; - k_EMsgGCCStrike15_v2_SetPlayerLeaderboardSafeName = 9218; - k_EMsgGCCStrike15_v2_ClientRedeemFreeReward = 9219; - k_EMsgGCCStrike15_v2_ClientNetworkConfig = 9220; - k_EMsgGCCStrike15_v2_GC2ClientNotifyXPShop = 9221; - k_EMsgGCCStrike15_v2_Client2GcAckXPShopTracks = 9222; - k_EMsgGCCStrike15_v2_MatchmakingGC2ClientSearchStats = 9223; - k_EMsgGCCStrike15_v2_PremierSeasonSummary = 9224; -} - -enum ECsgoSteamUserStat { - k_ECsgoSteamUserStat_XpEarnedGames = 1; - k_ECsgoSteamUserStat_MatchWinsCompetitive = 2; - k_ECsgoSteamUserStat_SurvivedDangerZone = 3; -} - -enum EClientReportingVersion { - k_EClientReportingVersion_OldVersion = 0; - k_EClientReportingVersion_BetaVersion = 1; - k_EClientReportingVersion_SupportsTrustedMode = 2; -} - -enum EInitSystemResult { - k_EInitSystemResult_Invalid = 0; - k_EInitSystemResult_Success = 1; - k_EInitSystemResult_None = 2; - k_EInitSystemResult_NotFound = 3; - k_EInitSystemResult_Existing = 4; - k_EInitSystemResult_FailedOpen = 5; - k_EInitSystemResult_Mismatch = 6; - k_EInitSystemResult_FailedInit = 7; - k_EInitSystemResult_Max = 8; -} - -message GameServerPing { - optional int32 ping = 2; - optional uint32 ip = 3; - optional uint32 instances = 5; -} - -message DataCenterPing { - optional fixed32 data_center_id = 1; - optional sint32 ping = 2; -} - -message DetailedSearchStatistic { - optional uint32 game_type = 1; - optional uint32 search_time_avg = 2; - optional uint32 players_searching = 4; -} - -message TournamentPlayer { - optional uint32 account_id = 1; - optional string player_nick = 2; - optional string player_name = 3; - optional uint32 player_dob = 4; - optional string player_flag = 5; - optional string player_location = 6; - optional string player_desc = 7; -} - -message TournamentTeam { - optional int32 team_id = 1; - optional string team_tag = 2; - optional string team_flag = 3; - optional string team_name = 4; - repeated .TournamentPlayer players = 5; -} - -message TournamentEvent { - optional int32 event_id = 1; - optional string event_tag = 2; - optional string event_name = 3; - optional uint32 event_time_start = 4; - optional uint32 event_time_end = 5; - optional int32 event_public = 6; - optional int32 event_stage_id = 7; - optional string event_stage_name = 8; - optional uint32 active_section_id = 9; -} - -message GlobalStatistics { - optional uint32 players_online = 1; - optional uint32 servers_online = 2; - optional uint32 players_searching = 3; - optional uint32 servers_available = 4; - optional uint32 ongoing_matches = 5; - optional uint32 search_time_avg = 6; - repeated .DetailedSearchStatistic search_statistics = 7; - optional string main_post_url = 8; - optional uint32 required_appid_version = 9; - optional uint32 pricesheet_version = 10; - optional uint32 twitch_streams_version = 11; - optional uint32 active_tournament_eventid = 12; - optional uint32 active_survey_id = 13; - optional uint32 rtime32_cur = 14; - optional uint32 rtime32_event_start = 15; - optional uint32 required_appid_version2 = 16; -} - -message OperationalStatisticDescription { - optional string name = 1; - optional uint32 idkey = 2; -} - -message OperationalStatisticElement { - optional uint32 idkey = 1; - repeated int32 values = 2; -} - -message OperationalStatisticsPacket { - optional int32 packetid = 1; - optional int32 mstimestamp = 2; - repeated .OperationalStatisticElement values = 3; -} - -message OperationalVarValue { - optional string name = 1; - optional int32 ivalue = 2; - optional float fvalue = 3; - optional bytes svalue = 4; -} - -message PlayerRankingInfo { - message PerMapRank { - optional uint32 map_id = 1; - optional uint32 rank_id = 2; - optional uint32 wins = 3; - } - - optional uint32 account_id = 1; - optional uint32 rank_id = 2; - optional uint32 wins = 3; - optional float rank_change = 4; - optional uint32 rank_type_id = 6; - optional uint32 tv_control = 7; - optional uint64 rank_window_stats = 8; - optional string leaderboard_name = 9; - optional uint32 rank_if_win = 10; - optional uint32 rank_if_lose = 11; - optional uint32 rank_if_tie = 12; - repeated .PlayerRankingInfo.PerMapRank per_map_rank = 13; - optional uint32 leaderboard_name_status = 14; - optional uint32 highest_rank = 15; - optional uint32 rank_expiry = 16; -} - -message PlayerCommendationInfo { - optional uint32 cmd_friendly = 1; - optional uint32 cmd_teaching = 2; - optional uint32 cmd_leader = 4; -} - -message PlayerMedalsInfo { - repeated uint32 display_items_defidx = 7; - optional uint32 featured_display_item_defidx = 8; -} - -message AccountActivity { - optional uint32 activity = 1; - optional uint32 mode = 2; - optional uint32 map = 3; - optional uint64 matchid = 4; -} - -message TournamentMatchSetup { - optional int32 event_id = 1; - optional int32 team_id_ct = 2; - optional int32 team_id_t = 3; - optional int32 event_stage_id = 4; -} - -message ServerHltvInfo { - optional uint32 tv_udp_port = 1; - optional uint64 tv_watch_key = 2; - optional uint32 tv_slots = 3; - optional uint32 tv_clients = 4; - optional uint32 tv_proxies = 5; - optional uint32 tv_time = 6; - optional uint32 game_type = 8; - optional string game_mapgroup = 9; - optional string game_map = 10; - optional uint64 tv_master_steamid = 11; - optional uint32 tv_local_slots = 12; - optional uint32 tv_local_clients = 13; - optional uint32 tv_local_proxies = 14; - optional uint32 tv_relay_slots = 15; - optional uint32 tv_relay_clients = 16; - optional uint32 tv_relay_proxies = 17; - optional uint32 tv_relay_address = 18; - optional uint32 tv_relay_port = 19; - optional uint64 tv_relay_steamid = 20; - optional uint32 flags = 21; -} - -message IpAddressMask { - optional uint32 a = 1; - optional uint32 b = 2; - optional uint32 c = 3; - optional uint32 d = 4; - optional uint32 bits = 5; - optional uint32 token = 6; -} - -message CMsgCsgoSteamUserStatChange { - optional int32 ecsgosteamuserstat = 1; - optional int32 delta = 2; - optional bool absolute = 3; -} - -message XpProgressData { - optional uint32 xp_points = 1; - optional int32 xp_category = 2; -} - -message MatchEndItemUpdates { - optional uint64 item_id = 1; - optional uint32 item_attr_defidx = 2; - optional uint32 item_attr_delta_value = 3; -} - -message ScoreLeaderboardData { - message Entry { - optional uint32 tag = 1; - optional uint32 val = 2; - } - - message AccountEntries { - optional uint32 accountid = 1; - repeated .ScoreLeaderboardData.Entry entries = 2; - } - - optional uint64 quest_id = 1; - optional uint32 score = 2; - repeated .ScoreLeaderboardData.AccountEntries accountentries = 3; - repeated .ScoreLeaderboardData.Entry matchentries = 5; - optional string leaderboard_name = 6; -} - -message PlayerQuestData { - message QuestItemData { - optional uint64 quest_id = 1; - optional int32 quest_normal_points_earned = 2; - optional int32 quest_bonus_points_earned = 3; - } - - optional uint32 quester_account_id = 1; - repeated .PlayerQuestData.QuestItemData quest_item_data = 2; - repeated .XpProgressData xp_progress_data = 3; - optional uint32 time_played = 4; - optional uint32 mm_game_mode = 5; - repeated .MatchEndItemUpdates item_updates = 6; - optional bool operation_points_eligible = 7; - repeated .CMsgCsgoSteamUserStatChange userstatchanges = 8; -} - -message DeepPlayerStatsEntry { - optional uint32 accountid = 1; - optional uint64 match_id = 2; - optional uint32 mm_game_mode = 3; - optional uint32 mapid = 4; - optional bool b_starting_ct = 5; - optional uint32 match_outcome = 6; - optional uint32 rounds_won = 7; - optional uint32 rounds_lost = 8; - optional uint32 stat_score = 9; - optional uint32 stat_deaths = 12; - optional uint32 stat_mvps = 13; - optional uint32 enemy_kills = 14; - optional uint32 enemy_headshots = 15; - optional uint32 enemy_2ks = 16; - optional uint32 enemy_3ks = 17; - optional uint32 enemy_4ks = 18; - optional uint32 total_damage = 19; - optional uint32 engagements_entry_count = 23; - optional uint32 engagements_entry_wins = 24; - optional uint32 engagements_1v1_count = 25; - optional uint32 engagements_1v1_wins = 26; - optional uint32 engagements_1v2_count = 27; - optional uint32 engagements_1v2_wins = 28; - optional uint32 utility_count = 29; - optional uint32 utility_success = 30; - optional uint32 flash_count = 32; - optional uint32 flash_success = 33; - repeated uint32 mates = 34; -} - -message DeepPlayerMatchEvent { - optional uint32 accountid = 1; - optional uint64 match_id = 2; - optional uint32 event_id = 3; - optional uint32 event_type = 4; - optional bool b_playing_ct = 5; - optional int32 user_pos_x = 6; - optional int32 user_pos_y = 7; - optional int32 user_pos_z = 12; - optional uint32 user_defidx = 8; - optional int32 other_pos_x = 9; - optional int32 other_pos_y = 10; - optional int32 other_pos_z = 13; - optional uint32 other_defidx = 11; - optional int32 event_data = 14; -} - -message CMsgGC_ServerQuestUpdateData { - repeated .PlayerQuestData player_quest_data = 1; - optional bytes binary_data = 2; - optional uint32 mm_game_mode = 3; - optional .ScoreLeaderboardData missionlbsdata = 4; - optional uint32 flags = 5; -} - -message CMsgGCCStrike15_v2_MatchmakingGC2ServerConfirm { - optional uint32 token = 1; - optional uint32 stamp = 2; - optional uint64 exchange = 3; - optional uint32 retry = 4; -} - -message CMsgGCCStrike15_v2_GC2ServerReservationUpdate { - optional uint32 viewers_external_total = 1; - optional uint32 viewers_external_steam = 2; -} - -message CMsgGCCStrike15_v2_MatchmakingStart { - repeated uint32 account_ids = 1; - optional uint32 game_type = 2; - optional string ticket_data = 3; - optional uint32 client_version = 4; - optional .TournamentMatchSetup tournament_match = 5; - optional bool prime_only = 6; - optional uint32 tv_control = 7; - optional uint64 lobby_id = 8; -} - -message CMsgGCCStrike15_v2_MatchmakingStop { - optional int32 abandon = 1; -} - -message CMsgGCCStrike15_v2_MatchmakingGC2ClientUpdate_Note { - optional int32 type = 1; - optional int32 region_id = 2; - optional float region_r = 3; - optional float distance = 4; -} - -message CMsgGCCStrike15_v2_MatchmakingClient2ServerPing { - repeated .GameServerPing gameserverpings = 1; - optional int32 offset_index = 2; - optional int32 final_batch = 3; - repeated .DataCenterPing data_center_pings = 4; - optional uint32 max_ping = 5; - optional fixed32 test_token = 6; - optional bytes search_key = 7; - repeated .CMsgGCCStrike15_v2_MatchmakingGC2ClientUpdate_Note notes = 8; - optional string debug_message = 9; -} - -message CMsgGCCStrike15_v2_MatchmakingGC2ClientUpdate { - optional int32 matchmaking = 1; - repeated uint32 waiting_account_id_sessions = 2; - optional string error = 3; - repeated uint32 ongoingmatch_account_id_sessions = 6; - optional .GlobalStatistics global_stats = 7; - repeated uint32 failping_account_id_sessions = 8; - repeated uint32 penalty_account_id_sessions = 9; - repeated uint32 failready_account_id_sessions = 10; - repeated uint32 vacbanned_account_id_sessions = 11; - optional .IpAddressMask server_ipaddress_mask = 12; - repeated .CMsgGCCStrike15_v2_MatchmakingGC2ClientUpdate_Note notes = 13; - repeated uint32 penalty_account_id_sessions_green = 14; - repeated uint32 insufficientlevel_sessions = 15; - repeated uint32 vsncheck_account_id_sessions = 16; - repeated uint32 launcher_mismatch_sessions = 17; - repeated uint32 insecure_account_id_sessions = 18; -} - -message CDataGCCStrike15_v2_TournamentMatchDraft { - message Entry { - optional int32 mapid = 1; - optional int32 team_id_ct = 2; - } - - optional int32 event_id = 1; - optional int32 event_stage_id = 2; - optional int32 team_id_0 = 3; - optional int32 team_id_1 = 4; - optional int32 maps_count = 5; - optional int32 maps_current = 6; - optional int32 team_id_start = 7; - optional int32 team_id_veto1 = 8; - optional int32 team_id_pickn = 9; - repeated .CDataGCCStrike15_v2_TournamentMatchDraft.Entry drafts = 10; - repeated int32 vote_mapid_0 = 11; - repeated int32 vote_mapid_1 = 12; - repeated int32 vote_mapid_2 = 13; - repeated int32 vote_mapid_3 = 14; - repeated int32 vote_mapid_4 = 15; - repeated int32 vote_mapid_5 = 16; - repeated int32 vote_starting_side = 17; - optional int32 vote_phase = 18; - optional float vote_phase_start = 19; - optional float vote_phase_length = 20; -} - -message CPreMatchInfoData { - message TeamStats { - optional int32 match_info_idxtxt = 1; - optional string match_info_txt = 2; - repeated string match_info_teams = 3; - } - - optional int32 predictions_pct = 1; - optional .CDataGCCStrike15_v2_TournamentMatchDraft draft = 4; - repeated .CPreMatchInfoData.TeamStats stats = 5; - repeated int32 wins = 6; -} - -message CMsgGCCStrike15_v2_MatchmakingGC2ServerReserve { - repeated uint32 account_ids = 1; - optional uint32 game_type = 2; - optional uint64 match_id = 3; - optional uint32 server_version = 4; - optional uint32 flags = 18; - repeated .PlayerRankingInfo rankings = 5; - optional uint64 encryption_key = 6; - optional uint64 encryption_key_pub = 7; - repeated uint32 party_ids = 8; - repeated .IpAddressMask whitelist = 9; - optional uint64 tv_master_steamid = 10; - optional .TournamentEvent tournament_event = 11; - repeated .TournamentTeam tournament_teams = 12; - repeated uint32 tournament_casters_account_ids = 13; - optional uint64 tv_relay_steamid = 14; - optional .CPreMatchInfoData pre_match_data = 15; - optional uint32 rtime32_event_start = 16; - optional uint32 tv_control = 17; - repeated .OperationalVarValue op_var_values = 19; - optional uint32 socache_control = 20; - repeated int32 teammate_colors = 21; -} - -message CMsgGCCStrike15_v2_MatchmakingServerReservationResponse { - optional uint64 reservationid = 1; - optional .CMsgGCCStrike15_v2_MatchmakingGC2ServerReserve reservation = 2; - optional string map = 3; - optional uint64 gc_reservation_sent = 4; - optional uint32 server_version = 5; - optional .ServerHltvInfo tv_info = 6; - repeated uint32 reward_player_accounts = 7; - repeated uint32 idle_player_accounts = 8; - optional uint32 reward_item_attr_def_idx = 9; - optional uint32 reward_item_attr_value = 10; - optional uint32 reward_item_attr_reward_idx = 11; - optional uint32 reward_drop_list = 12; - optional string tournament_tag = 13; - optional uint32 legacy_steamdatagram_port = 14; - optional uint32 steamdatagram_routing = 17; - optional fixed32 test_token = 15; - optional uint32 flags = 16; - optional uint32 system_load = 18; - optional uint32 cpus_online = 19; -} - -message CMsgGCCStrike15_v2_MatchmakingGC2ClientReserve { - optional uint64 serverid = 1; - optional uint32 direct_udp_ip = 2; - optional uint32 direct_udp_port = 3; - optional uint64 reservationid = 4; - optional .CMsgGCCStrike15_v2_MatchmakingGC2ServerReserve reservation = 5; - optional string map = 6; - optional string server_address = 7; - optional .DataCenterPing gs_ping = 8; - optional uint32 gs_location_id = 9; -} - -message CMsgGCCStrike15_v2_MatchmakingServerRoundStats { - message DropInfo { - optional uint32 account_mvp = 1; - } - - optional uint64 reservationid = 1; - optional .CMsgGCCStrike15_v2_MatchmakingGC2ServerReserve reservation = 2; - optional string map = 3; - optional int32 round = 4; - repeated int32 kills = 5; - repeated int32 assists = 6; - repeated int32 deaths = 7; - repeated int32 scores = 8; - repeated int32 pings = 9; - optional int32 round_result = 10; - optional int32 match_result = 11; - repeated int32 team_scores = 12; - optional .CMsgGCCStrike15_v2_MatchmakingGC2ServerConfirm confirm = 13; - optional int32 reservation_stage = 14; - optional int32 match_duration = 15; - repeated int32 enemy_kills = 16; - repeated int32 enemy_headshots = 17; - repeated int32 enemy_3ks = 18; - repeated int32 enemy_4ks = 19; - repeated int32 enemy_5ks = 20; - repeated int32 mvps = 21; - optional uint32 spectators_count = 22; - optional uint32 spectators_count_tv = 23; - optional uint32 spectators_count_lnk = 24; - repeated int32 enemy_kills_agg = 25; - optional .CMsgGCCStrike15_v2_MatchmakingServerRoundStats.DropInfo drop_info = 26; - optional bool b_switched_teams = 27; - repeated int32 enemy_2ks = 28; - repeated int32 player_spawned = 29; - repeated int32 team_spawn_count = 30; - optional uint32 max_rounds = 31; - optional int32 map_id = 32; -} - -message CMsgGCCStrike15_v2_MatchmakingClient2GCHello { -} - -message CMsgGCCStrike15_v2_MatchmakingGC2ClientHello { - optional uint32 account_id = 1; - optional .CMsgGCCStrike15_v2_MatchmakingGC2ClientReserve ongoingmatch = 2; - optional .GlobalStatistics global_stats = 3; - optional uint32 penalty_seconds = 4; - optional uint32 penalty_reason = 5; - optional int32 vac_banned = 6; - optional .PlayerRankingInfo ranking = 7; - optional .PlayerCommendationInfo commendation = 8; - optional .PlayerMedalsInfo medals = 9; - optional .TournamentEvent my_current_event = 10; - repeated .TournamentTeam my_current_event_teams = 11; - optional .TournamentTeam my_current_team = 12; - repeated .TournamentEvent my_current_event_stages = 13; - optional uint32 survey_vote = 14; - optional .AccountActivity activity = 15; - optional int32 player_level = 17; - optional int32 player_cur_xp = 18; - optional int32 player_xp_bonus_flags = 19; - repeated .PlayerRankingInfo rankings = 20; - optional uint64 owcaseid = 21; -} - -message CMsgGCCStrike15_v2_AccountPrivacySettings { - message Setting { - optional uint32 setting_type = 1; - optional uint32 setting_value = 2; - } - - repeated .CMsgGCCStrike15_v2_AccountPrivacySettings.Setting settings = 1; -} - -message CMsgGCCStrike15_v2_MatchmakingGC2ClientAbandon { - optional uint32 account_id = 1; - optional .CMsgGCCStrike15_v2_MatchmakingGC2ClientReserve abandoned_match = 2; - optional uint32 penalty_seconds = 3; - optional uint32 penalty_reason = 4; -} - -message CMsgGCCStrike15_v2_ClientGCRankUpdate { - repeated .PlayerRankingInfo rankings = 1; -} - -message CMsgGCCStrike15_v2_MatchmakingOperator2GCBlogUpdate { - optional string main_post_url = 1; -} - -message CMsgGCCStrike15_v2_ServerNotificationForUserPenalty { - optional uint32 account_id = 1; - optional uint32 reason = 2; - optional uint32 seconds = 3; - optional bool communication_cooldown = 4; -} - -message CMsgGCCStrike15_v2_ClientReportPlayer { - optional uint32 account_id = 1; - optional uint32 rpt_aimbot = 2; - optional uint32 rpt_wallhack = 3; - optional uint32 rpt_speedhack = 4; - optional uint32 rpt_teamharm = 5; - optional uint32 rpt_textabuse = 6; - optional uint32 rpt_voiceabuse = 7; - optional uint64 match_id = 8; - optional bool report_from_demo = 9; -} - -message CMsgGCCStrike15_v2_ClientCommendPlayer { - optional uint32 account_id = 1; - optional uint64 match_id = 8; - optional .PlayerCommendationInfo commendation = 9; - optional uint32 tokens = 10; -} - -message CMsgGCCStrike15_v2_ClientReportServer { - optional uint32 rpt_poorperf = 1; - optional uint32 rpt_abusivemodels = 2; - optional uint32 rpt_badmotd = 3; - optional uint32 rpt_listingabuse = 4; - optional uint32 rpt_inventoryabuse = 5; - optional uint64 match_id = 8; -} - -message CMsgGCCStrike15_v2_ClientReportResponse { - optional uint64 confirmation_id = 1; - optional uint32 account_id = 2; - optional uint32 server_ip = 3; - optional uint32 response_type = 4; - optional uint32 response_result = 5; - optional uint32 tokens = 6; -} - -message CMsgGCCStrike15_v2_ClientRequestWatchInfoFriends { - optional uint32 request_id = 1; - repeated uint32 account_ids = 2; - optional uint64 serverid = 3; - optional uint64 matchid = 4; - optional uint32 client_launcher = 5; - repeated .DataCenterPing data_center_pings = 6; -} - -message WatchableMatchInfo { - optional uint32 server_ip = 1; - optional uint32 tv_port = 2; - optional uint32 tv_spectators = 3; - optional uint32 tv_time = 4; - optional bytes tv_watch_password = 5; - optional uint64 cl_decryptdata_key = 6; - optional uint64 cl_decryptdata_key_pub = 7; - optional uint32 game_type = 8; - optional string game_mapgroup = 9; - optional string game_map = 10; - optional uint64 server_id = 11; - optional uint64 match_id = 12; - optional uint64 reservation_id = 13; -} - -message CMsgGCCStrike15_v2_ClientRequestJoinFriendData { - optional uint32 version = 1; - optional uint32 account_id = 2; - optional uint32 join_token = 3; - optional uint32 join_ipp = 4; - optional .CMsgGCCStrike15_v2_MatchmakingGC2ClientReserve res = 5; - optional string errormsg = 6; -} - -message CMsgGCCStrike15_v2_ClientRequestJoinServerData { - optional uint32 version = 1; - optional uint32 account_id = 2; - optional uint64 serverid = 3; - optional uint32 server_ip = 4; - optional uint32 server_port = 5; - optional .CMsgGCCStrike15_v2_MatchmakingGC2ClientReserve res = 6; - optional string errormsg = 7; -} - -message CMsgGCCstrike15_v2_ClientRequestNewMission { - optional uint32 mission_id = 2; - optional uint32 campaign_id = 3; -} - -message CMsgGCCstrike15_v2_ClientRedeemMissionReward { - optional uint32 campaign_id = 1; - optional uint32 redeem_id = 2; - optional uint32 redeemable_balance = 3; - optional uint32 expected_cost = 4; -} - -message CMsgGCCstrike15_v2_ClientRedeemFreeReward { - optional uint32 generation_time = 1; - optional uint32 redeemable_balance = 2; - repeated uint64 items = 3; -} - -message CMsgGCCstrike15_v2_GC2ServerNotifyXPRewarded { - repeated .XpProgressData xp_progress_data = 1; - optional uint32 account_id = 2; - optional uint32 current_xp = 3; - optional uint32 current_level = 4; - optional uint32 upgraded_defidx = 5; - optional uint32 operation_points_awarded = 6; - optional uint32 free_rewards = 7; - optional uint32 xp_trail_remaining = 8; - optional int32 xp_trail_xp_needed = 9; - optional uint32 xp_trail_level = 10; -} - -message CMsgGCCStrike15_v2_ClientNetworkConfig { - optional bytes data = 1; -} - -message CMsgGCCStrike15_ClientDeepStats { - message DeepStatsRange { - optional uint32 begin = 1; - optional uint32 end = 2; - optional bool frozen = 3; - } - - message DeepStatsMatch { - optional .DeepPlayerStatsEntry player = 1; - repeated .DeepPlayerMatchEvent events = 2; - } - - optional uint32 account_id = 1; - optional .CMsgGCCStrike15_ClientDeepStats.DeepStatsRange range = 2; - repeated .CMsgGCCStrike15_ClientDeepStats.DeepStatsMatch matches = 3; -} - -message CMsgGCCStrike15_v2_WatchInfoUsers { - optional uint32 request_id = 1; - repeated uint32 account_ids = 2; - repeated .WatchableMatchInfo watchable_match_infos = 3; - optional uint32 extended_timeout = 5; -} - -message CMsgGCCStrike15_v2_ClientRequestPlayersProfile { - optional uint32 request_id__deprecated = 1; - repeated uint32 account_ids__deprecated = 2; - optional uint32 account_id = 3; - optional uint32 request_level = 4; -} - -message CMsgGCCStrike15_v2_PlayersProfile { - optional uint32 request_id = 1; - repeated .CMsgGCCStrike15_v2_MatchmakingGC2ClientHello account_profiles = 2; -} - -message CMsgGCCStrike15_v2_PremierSeasonSummary { - message DataPerWeek { - optional uint64 week_id = 1; - optional uint32 rank_id = 2; - optional uint32 matches_played = 3; - } - - message DataPerMap { - optional uint32 map_id = 1; - optional uint32 wins = 2; - optional uint32 ties = 3; - optional uint32 losses = 4; - optional uint32 rounds = 5; - optional uint32 kills = 6; - optional uint32 headshots = 7; - optional uint32 assists = 8; - optional uint32 deaths = 9; - optional uint32 mvps = 10; - optional uint32 rounds_3k = 11; - optional uint32 rounds_4k = 12; - optional uint32 rounds_5k = 13; - } - - optional uint32 account_id = 1; - optional uint32 season_id = 2; - repeated .CMsgGCCStrike15_v2_PremierSeasonSummary.DataPerWeek data_per_week = 3; - repeated .CMsgGCCStrike15_v2_PremierSeasonSummary.DataPerMap data_per_map = 4; -} - -message CMsgGCCStrike15_v2_PlayerOverwatchCaseUpdate { - optional uint64 caseid = 1; - optional uint32 suspectid = 3; - optional uint32 fractionid = 4; - optional uint32 rpt_aimbot = 5; - optional uint32 rpt_wallhack = 6; - optional uint32 rpt_speedhack = 7; - optional uint32 rpt_teamharm = 8; - optional uint32 reason = 9; -} - -message CMsgGCCStrike15_v2_PlayerOverwatchCaseAssignment { - optional uint64 caseid = 1; - optional string caseurl = 2; - optional uint32 verdict = 3; - optional uint32 timestamp = 4; - optional uint32 throttleseconds = 5; - optional uint32 suspectid = 6; - optional uint32 fractionid = 7; - optional uint32 numrounds = 8; - optional uint32 fractionrounds = 9; - optional int32 streakconvictions = 10; - optional uint32 reason = 11; -} - -message CMsgGCCStrike15_v2_PlayerOverwatchCaseStatus { - optional uint64 caseid = 1; - optional uint32 statusid = 2; -} - -message CClientHeaderOverwatchEvidence { - optional uint32 accountid = 1; - optional uint64 caseid = 2; -} - -message CMsgGCCStrike15_v2_GC2ClientTextMsg { - optional uint32 id = 1; - optional uint32 type = 2; - optional bytes payload = 3; -} - -message CMsgGCCStrike15_v2_Client2GCTextMsg { - optional uint32 id = 1; - repeated bytes args = 2; -} - -message CMsgGCCStrike15_v2_MatchEndRunRewardDrops { - optional .CMsgGCCStrike15_v2_MatchmakingServerReservationResponse serverinfo = 3; - optional .CMsgGC_ServerQuestUpdateData match_end_quest_data = 4; -} - -message CEconItemPreviewDataBlock { - message Sticker { - optional uint32 slot = 1; - optional uint32 sticker_id = 2; - optional float wear = 3; - optional float scale = 4; - optional float rotation = 5; - optional uint32 tint_id = 6; - optional float offset_x = 7; - optional float offset_y = 8; - optional float offset_z = 9; - optional uint32 pattern = 10; - } - - optional uint32 accountid = 1; - optional uint64 itemid = 2; - optional uint32 defindex = 3; - optional uint32 paintindex = 4; - optional uint32 rarity = 5; - optional uint32 quality = 6; - optional uint32 paintwear = 7; - optional uint32 paintseed = 8; - optional uint32 killeaterscoretype = 9; - optional uint32 killeatervalue = 10; - optional string customname = 11; - repeated .CEconItemPreviewDataBlock.Sticker stickers = 12; - optional uint32 inventory = 13; - optional uint32 origin = 14; - optional uint32 questid = 15; - optional uint32 dropreason = 16; - optional uint32 musicindex = 17; - optional int32 entindex = 18; - optional uint32 petindex = 19; - repeated .CEconItemPreviewDataBlock.Sticker keychains = 20; -} - -message CMsgGCCStrike15_v2_MatchEndRewardDropsNotification { - optional .CEconItemPreviewDataBlock iteminfo = 6; -} - -message CMsgItemAcknowledged { - optional .CEconItemPreviewDataBlock iteminfo = 1; -} - -message CMsgGCCStrike15_v2_Client2GCEconPreviewDataBlockRequest { - optional uint64 param_s = 1; - optional uint64 param_a = 2; - optional uint64 param_d = 3; - optional uint64 param_m = 4; -} - -message CMsgGCCStrike15_v2_Client2GCEconPreviewDataBlockResponse { - optional .CEconItemPreviewDataBlock iteminfo = 1; -} - -message CMsgGCCStrike15_v2_MatchListRequestCurrentLiveGames { -} - -message CMsgGCCStrike15_v2_MatchListRequestLiveGameForUser { - optional uint32 accountid = 1; -} - -message CMsgGCCStrike15_v2_MatchListRequestRecentUserGames { - optional uint32 accountid = 1; -} - -message CMsgGCCStrike15_v2_MatchListRequestTournamentGames { - optional int32 eventid = 1; -} - -message CMsgGCCStrike15_v2_MatchListRequestFullGameInfo { - optional uint64 matchid = 1; - optional uint64 outcomeid = 2; - optional uint32 token = 3; -} - -message CDataGCCStrike15_v2_MatchInfo { - optional uint64 matchid = 1; - optional uint32 matchtime = 2; - optional .WatchableMatchInfo watchablematchinfo = 3; - optional .CMsgGCCStrike15_v2_MatchmakingServerRoundStats roundstats_legacy = 4; - repeated .CMsgGCCStrike15_v2_MatchmakingServerRoundStats roundstatsall = 5; -} - -message CDataGCCStrike15_v2_TournamentGroupTeam { - optional int32 team_id = 1; - optional int32 score = 2; - optional bool correctpick = 3; -} - -message CDataGCCStrike15_v2_TournamentGroup { - message Picks { - repeated int32 pickids = 1; - } - - optional uint32 groupid = 1; - optional string name = 2; - optional string desc = 3; - optional uint32 picks__deprecated = 4; - repeated .CDataGCCStrike15_v2_TournamentGroupTeam teams = 5; - repeated int32 stage_ids = 6; - optional uint32 picklockuntiltime = 7; - optional uint32 pickableteams = 8; - optional uint32 points_per_pick = 9; - repeated .CDataGCCStrike15_v2_TournamentGroup.Picks picks = 10; -} - -message CDataGCCStrike15_v2_TournamentSection { - optional uint32 sectionid = 1; - optional string name = 2; - optional string desc = 3; - repeated .CDataGCCStrike15_v2_TournamentGroup groups = 4; -} - -message CDataGCCStrike15_v2_TournamentInfo { - repeated .CDataGCCStrike15_v2_TournamentSection sections = 1; - optional .TournamentEvent tournament_event = 2; - repeated .TournamentTeam tournament_teams = 3; -} - -message CMsgGCCStrike15_v2_MatchList { - optional uint32 msgrequestid = 1; - optional uint32 accountid = 2; - optional uint32 servertime = 3; - repeated .CDataGCCStrike15_v2_MatchInfo matches = 4; - repeated .TournamentTeam streams = 5; - optional .CDataGCCStrike15_v2_TournamentInfo tournamentinfo = 6; -} - -message CMsgGCCStrike15_v2_MatchListTournamentOperatorMgmt { - optional int32 eventid = 1; - repeated .CDataGCCStrike15_v2_MatchInfo matches = 2; - optional uint32 accountid = 3; -} - -message CMsgGCCStrike15_v2_Predictions { - message GroupMatchTeamPick { - optional int32 sectionid = 1; - optional int32 groupid = 2; - optional int32 index = 3; - optional int32 teamid = 4; - optional uint64 itemid = 5; - } - - optional uint32 event_id = 1; - repeated .CMsgGCCStrike15_v2_Predictions.GroupMatchTeamPick group_match_team_picks = 2; -} - -message CMsgGCCStrike15_v2_Fantasy { - message FantasySlot { - optional int32 type = 1; - optional int32 pick = 2; - optional uint64 itemid = 3; - } - - message FantasyTeam { - optional int32 sectionid = 1; - repeated .CMsgGCCStrike15_v2_Fantasy.FantasySlot slots = 2; - } - - optional uint32 event_id = 1; - repeated .CMsgGCCStrike15_v2_Fantasy.FantasyTeam teams = 2; -} - -message CAttribute_String { - optional string value = 1; -} - -message CMsgLegacySource1ClientWelcome { - message Location { - optional float latitude = 1; - optional float longitude = 2; - optional string country = 3; - } - - optional uint32 version = 1; - optional bytes game_data = 2; - repeated .CMsgSOCacheSubscribed outofdate_subscribed_caches = 3; - repeated .CMsgSOCacheSubscriptionCheck uptodate_subscribed_caches = 4; - optional .CMsgLegacySource1ClientWelcome.Location location = 5; - optional bytes game_data2 = 6; - optional uint32 rtime32_gc_welcome_timestamp = 7; - optional uint32 currency = 8; - optional uint32 balance = 9; - optional string balance_url = 10; - optional string txn_country_code = 11; -} - -message CMsgCStrike15Welcome { - optional uint32 store_item_hash = 5; - optional uint32 timeplayedconsecutively = 6; - optional uint32 time_first_played = 10; - optional uint32 last_time_played = 12; - optional uint32 last_ip_address = 13; - optional uint64 gscookieid = 18; - optional uint64 uniqueid = 19; -} - -message CMsgGCCStrike15_v2_ClientVarValueNotificationInfo { - optional string value_name = 1; - optional int32 value_int = 2; - optional uint32 server_addr = 3; - optional uint32 server_port = 4; - repeated string choked_blocks = 5; -} - -message CMsgGCCStrike15_v2_ServerVarValueNotificationInfo { - optional uint32 accountid = 1; - repeated uint32 viewangles = 2; - optional uint32 type = 3; - repeated uint32 userdata = 4; -} - -message CMsgGCCStrike15_v2_GiftsLeaderboardRequest { -} - -message CMsgGCCStrike15_v2_GiftsLeaderboardResponse { - message GiftLeaderboardEntry { - optional uint32 accountid = 1; - optional uint32 gifts = 2; - } - - optional uint32 servertime = 1; - optional uint32 time_period_seconds = 2; - optional uint32 total_gifts_given = 3; - optional uint32 total_givers = 4; - repeated .CMsgGCCStrike15_v2_GiftsLeaderboardResponse.GiftLeaderboardEntry entries = 5; -} - -message CMsgGCCStrike15_v2_ClientSubmitSurveyVote { - optional uint32 survey_id = 1; - optional uint32 vote = 2; -} - -message CMsgGCCStrike15_v2_Server2GCClientValidate { - optional uint32 accountid = 1; -} - -message CMsgGCCStrike15_v2_GC2ClientTournamentInfo { - optional uint32 eventid = 1; - optional uint32 stageid = 2; - optional uint32 game_type = 3; - repeated uint32 teamids = 4; -} - -message CSOEconCoupon { - optional uint32 entryid = 1 [(key_field) = true]; - optional uint32 defidx = 2; - optional fixed32 expiration_date = 3; -} - -message CSOAccountItemPersonalStore { - optional uint32 generation_time = 1; - optional uint32 redeemable_balance = 2; - repeated uint64 items = 3; -} - -message CSOAccountXpShop { - optional uint32 generation_time = 1; - optional uint32 redeemable_balance = 2; - repeated uint32 xp_tracks = 3; -} - -message CSOAccountKeychainRemoveToolCharges { - optional uint32 charges = 1; -} - -message CSOQuestProgress { - optional uint32 questid = 1 [(key_field) = true]; - optional uint32 points_remaining = 2; - optional uint32 bonus_points = 3; -} - -message CSOAccountSeasonalOperation { - optional uint32 season_value = 1 [(key_field) = true]; - optional uint32 tier_unlocked = 2; - optional uint32 premium_tiers = 3; - optional uint32 mission_id = 4; - optional uint32 missions_completed = 5; - optional uint32 redeemable_balance = 6; - optional uint32 season_pass_time = 7; -} - -message CSOAccountRecurringSubscription { - optional uint32 time_next_cycle = 1; - optional uint32 time_initiated = 2; -} - -message CSOPersonaDataPublic { - optional int32 player_level = 1; - optional .PlayerCommendationInfo commendation = 2; - optional bool elevated_state = 3; - optional uint32 xp_trail_timestamp_refresh = 4; - optional uint32 xp_trail_level = 5; -} - -message CMsgGCCStrike15_v2_GC2ClientNotifyXPShop { - optional .CSOAccountXpShop prematch = 1; - optional .CSOAccountXpShop postmatch = 2; - optional uint32 current_xp = 3; - optional uint32 current_level = 4; -} - -message CMsgGCCStrike15_v2_Client2GcAckXPShopTracks { -} - -message CMsgGCCStrike15_v2_MatchmakingGC2ClientSearchStats { - optional uint32 gs_location_id = 1; - optional uint32 data_center_id = 2; - optional uint32 num_locked_in = 3; - optional uint32 num_found_nearby = 4; - optional uint32 note_level = 5; -} - -message CMsgGC_GlobalGame_Subscribe { - optional uint64 ticket = 1; -} - -message CMsgGC_GlobalGame_Unsubscribe { - optional int32 timeleft = 1; -} - -message CMsgGC_GlobalGame_Play { - optional uint64 ticket = 1; - optional uint32 gametimems = 2; - optional uint32 msperpoint = 3; -} - -message CMsgGCCStrike15_v2_AcknowledgePenalty { - optional int32 acknowledged = 1; -} - -message CMsgGCCStrike15_v2_Client2GCRequestPrestigeCoin { - optional uint32 defindex = 1; - optional uint64 upgradeid = 2; - optional uint32 hours = 3; - optional uint32 prestigetime = 4; -} - -message CMsgGCCStrike15_v2_Client2GCStreamUnlock { - optional uint64 ticket = 1; - optional int32 os = 2; -} - -message CMsgGCCStrike15_v2_ClientToGCRequestElevate { - optional uint32 stage = 1; -} - -message CMsgGCCStrike15_v2_ClientToGCChat { - optional uint64 match_id = 1; - optional string text = 2; -} - -message CMsgGCCStrike15_v2_GCToClientChat { - optional uint32 account_id = 1; - optional string text = 2; -} - -message CMsgGCCStrike15_v2_ClientAuthKeyCode { - optional uint32 eventid = 1; - optional string code = 2; -} - -message CMsgGCCStrike15_GotvSyncPacket { - optional .CEngineGotvSyncPacket data = 1; -} - -message PlayerDecalDigitalSignature { - optional bytes signature = 1; - optional uint32 accountid = 2; - optional uint32 rtime = 3; - repeated float endpos = 4; - repeated float startpos = 5; - repeated float left = 6; - optional uint32 tx_defidx = 7; - optional int32 entindex = 8; - optional uint32 hitbox = 9; - optional float creationtime = 10; - optional uint32 equipslot = 11; - optional uint32 trace_id = 12; - repeated float normal = 13; - optional uint32 tint_id = 14; -} - -message CMsgGCCStrike15_v2_ClientPlayerDecalSign { - optional .PlayerDecalDigitalSignature data = 1; - optional uint64 itemid = 2; -} - -message CMsgGCCStrike15_v2_BetaEnrollment { - optional uint32 eresult = 1; -} - -message CMsgGCCStrike15_v2_ClientLogonFatalError { - optional uint32 errorcode = 1; - optional string message = 2; - optional string country = 3; -} - -message CMsgGCCStrike15_v2_ClientPollState { - optional uint32 pollid = 1; - repeated string names = 2; - repeated int32 values = 3; -} - -message CMsgGCCStrike15_v2_Party_Register { - optional uint32 id = 1; - optional uint32 ver = 2; - optional uint32 apr = 3; - optional uint32 ark = 4; - optional uint32 nby = 5; - optional uint32 grp = 6; - optional uint32 slots = 7; - optional uint32 launcher = 8; - optional uint32 game_type = 9; -} - -message CMsgGCCStrike15_v2_Party_Search { - optional uint32 ver = 1; - optional uint32 apr = 2; - optional uint32 ark = 3; - repeated uint32 grps = 4; - optional uint32 launcher = 5; - optional uint32 game_type = 6; -} - -message CMsgGCCStrike15_v2_Party_SearchResults { - message Entry { - optional uint32 id = 1; - optional uint32 grp = 2; - optional uint32 game_type = 3; - optional uint32 apr = 4; - optional uint32 ark = 5; - optional uint32 loc = 6; - optional uint32 accountid = 7; - } - - repeated .CMsgGCCStrike15_v2_Party_SearchResults.Entry entries = 1; -} - -message CMsgGCCStrike15_v2_Party_Invite { - optional uint32 accountid = 1; - optional uint32 lobbyid = 2; -} - -message CMsgGCCStrike15_v2_Account_RequestCoPlays { - message Player { - optional uint32 accountid = 1; - optional uint32 rtcoplay = 2; - optional bool online = 3; - } - - repeated .CMsgGCCStrike15_v2_Account_RequestCoPlays.Player players = 1; - optional uint32 servertime = 2; -} - -message CMsgGCCStrike15_v2_ClientToGCRequestTicket { - optional fixed64 authorized_steam_id = 1; - optional fixed32 authorized_public_ip = 2; - optional fixed64 gameserver_steam_id = 3; - optional string gameserver_sdr_routing = 5; -} - -message CMsgGCToClientSteamDatagramTicket { - optional bytes serialized_ticket = 16; -} - -message CMsgGCCStrike15_v2_ClientRequestOffers { -} - -message CMsgGCCStrike15_v2_ClientRequestSouvenir { - optional uint64 itemid = 1; - optional uint64 matchid = 2; - optional int32 eventid = 3; -} - -message CMsgGCCStrike15_v2_ClientAccountBalance { - optional uint64 amount = 1; - optional string url = 2; -} - -message CMsgGCCStrike15_v2_ClientPartyJoinRelay { - optional uint32 accountid = 1; - optional uint64 lobbyid = 2; -} - -message CMsgGCCStrike15_v2_ClientPartyWarning { - message Entry { - optional uint32 accountid = 1; - optional uint32 warntype = 2; - } - - repeated .CMsgGCCStrike15_v2_ClientPartyWarning.Entry entries = 1; -} - -message CMsgGCCStrike15_v2_SetEventFavorite { - optional uint64 eventid = 1; - optional bool is_favorite = 2; -} - -message CMsgGCCStrike15_v2_GetEventFavorites_Request { - optional bool all_events = 1; -} - -message CMsgGCCStrike15_v2_GetEventFavorites_Response { - optional bool all_events = 1; - optional string json_favorites = 2; - optional string json_featured = 3; -} - -message CMsgGCCStrike15_v2_ClientPerfReport { - message Entry { - optional uint32 perfcounter = 1; - optional uint32 length = 2; - optional bytes reference = 3; - optional bytes actual = 4; - optional uint32 sourceid = 5; - optional uint32 status = 6; - } - - repeated .CMsgGCCStrike15_v2_ClientPerfReport.Entry entries = 1; -} - -message CVDiagnostic { - optional uint32 id = 1; - optional uint32 extended = 2; - optional uint64 value = 3; - optional string string_value = 4; -} - -message CMsgGCCStrike15_v2_ClientReportValidation { - optional string file_report = 1; - optional string command_line = 2; - optional uint32 total_files = 3; - optional uint32 internal_error = 4; - optional uint32 trust_time = 5; - optional uint32 count_pending = 6; - optional uint32 count_completed = 7; - optional uint32 process_id = 8; - optional int32 osversion = 9; - optional uint32 clientreportversion = 10; - optional uint32 status_id = 11; - optional uint32 diagnostic1 = 12; - optional uint64 diagnostic2 = 13; - optional uint64 diagnostic3 = 14; - optional string last_launch_data = 15; - optional uint32 report_count = 16; - optional uint64 client_time = 17; - optional uint64 diagnostic4 = 18; - optional uint64 diagnostic5 = 19; - repeated .CVDiagnostic diagnostics = 20; -} - -message CMsgGCCStrike15_v2_GC2ClientRefuseSecureMode { - optional string file_report = 1; - optional bool offer_insecure_mode = 2; - optional bool offer_secure_mode = 3; - optional bool show_unsigned_ui = 4; - optional bool kick_user = 5; - optional bool show_trusted_ui = 6; - optional bool show_warning_not_trusted = 7; - optional bool show_warning_not_trusted_2 = 8; - optional string files_prevented_trusted = 9; -} - -message CMsgGCCStrike15_v2_GC2ClientRequestValidation { - optional bool full_report = 1; - optional string module = 2; -} - -message CMsgGCCStrike15_v2_GC2ClientInitSystem { - optional bool load = 1; - optional string name = 2; - optional string outputname = 3; - optional bytes key_data = 4; - optional bytes sha_hash = 5; - optional int32 cookie = 6; - optional string manifest = 7; - optional bytes system_package = 8; - optional bool load_system = 9; -} - -message CMsgGCCStrike15_v2_GC2ClientInitSystem_Response { - optional bool success = 1; - optional string diagnostic = 2; - optional bytes sha_hash = 3; - optional int32 response = 4; - optional int32 error_code1 = 5; - optional int32 error_code2 = 6; - optional int64 handle = 7; - optional .EInitSystemResult einit_result = 8 [default = k_EInitSystemResult_Invalid]; - optional int32 aux_system1 = 9; - optional int32 aux_system2 = 10; -} - -message CMsgGCCStrike15_v2_SetPlayerLeaderboardSafeName { - optional string leaderboard_safe_name = 1; -} diff --git a/protobufs/cstrike15_usermessages.proto b/protobufs/cstrike15_usermessages.proto deleted file mode 100644 index 9bba307a7..000000000 --- a/protobufs/cstrike15_usermessages.proto +++ /dev/null @@ -1,613 +0,0 @@ -import "networkbasetypes.proto"; -import "cstrike15_gcmessages.proto"; - -enum ECstrike15UserMessages { - CS_UM_VGUIMenu = 301; - CS_UM_Geiger = 302; - CS_UM_Train = 303; - CS_UM_HudText = 304; - CS_UM_SayText = 305; - CS_UM_SayText2 = 306; - CS_UM_TextMsg = 307; - CS_UM_HudMsg = 308; - CS_UM_ResetHud = 309; - CS_UM_GameTitle = 310; - CS_UM_Shake = 312; - CS_UM_Fade = 313; - CS_UM_Rumble = 314; - CS_UM_CloseCaption = 315; - CS_UM_CloseCaptionDirect = 316; - CS_UM_SendAudio = 317; - CS_UM_RawAudio = 318; - CS_UM_VoiceMask = 319; - CS_UM_RequestState = 320; - CS_UM_Damage = 321; - CS_UM_RadioText = 322; - CS_UM_HintText = 323; - CS_UM_KeyHintText = 324; - CS_UM_ProcessSpottedEntityUpdate = 325; - CS_UM_ReloadEffect = 326; - CS_UM_AdjustMoney = 327; - CS_UM_UpdateTeamMoney = 328; - CS_UM_StopSpectatorMode = 329; - CS_UM_KillCam = 330; - CS_UM_DesiredTimescale = 331; - CS_UM_CurrentTimescale = 332; - CS_UM_AchievementEvent = 333; - CS_UM_MatchEndConditions = 334; - CS_UM_DisconnectToLobby = 335; - CS_UM_PlayerStatsUpdate = 336; - CS_UM_WarmupHasEnded = 338; - CS_UM_ClientInfo = 339; - CS_UM_XRankGet = 340; - CS_UM_XRankUpd = 341; - CS_UM_CallVoteFailed = 345; - CS_UM_VoteStart = 346; - CS_UM_VotePass = 347; - CS_UM_VoteFailed = 348; - CS_UM_VoteSetup = 349; - CS_UM_ServerRankRevealAll = 350; - CS_UM_SendLastKillerDamageToClient = 351; - CS_UM_ServerRankUpdate = 352; - CS_UM_ItemPickup = 353; - CS_UM_ShowMenu = 354; - CS_UM_BarTime = 355; - CS_UM_AmmoDenied = 356; - CS_UM_MarkAchievement = 357; - CS_UM_MatchStatsUpdate = 358; - CS_UM_ItemDrop = 359; - CS_UM_GlowPropTurnOff = 360; - CS_UM_SendPlayerItemDrops = 361; - CS_UM_RoundBackupFilenames = 362; - CS_UM_SendPlayerItemFound = 363; - CS_UM_ReportHit = 364; - CS_UM_XpUpdate = 365; - CS_UM_QuestProgress = 366; - CS_UM_ScoreLeaderboardData = 367; - CS_UM_PlayerDecalDigitalSignature = 368; - CS_UM_WeaponSound = 369; - CS_UM_UpdateScreenHealthBar = 370; - CS_UM_EntityOutlineHighlight = 371; - CS_UM_SSUI = 372; - CS_UM_SurvivalStats = 373; - CS_UM_DisconnectToLobby2 = 374; - CS_UM_EndOfMatchAllPlayersData = 375; - CS_UM_PostRoundDamageReport = 376; - CS_UM_RoundEndReportData = 379; - CS_UM_CurrentRoundOdds = 380; - CS_UM_DeepStats = 381; - CS_UM_ShootInfo = 383; - CS_UM_CounterStrafe = 385; - CS_UM_DamagePrediction = 386; -} - -enum ECSUsrMsg_DisconnectToLobby_Action { - k_ECSUsrMsg_DisconnectToLobby_Action_Default = 0; - k_ECSUsrMsg_DisconnectToLobby_Action_GoQueue = 1; -} - -message CCSUsrMsg_VGUIMenu { - message Keys { - optional string name = 1; - optional string value = 2; - } - - optional string name = 1; - optional bool show = 2; - repeated .CCSUsrMsg_VGUIMenu.Keys keys = 3; -} - -message CCSUsrMsg_Geiger { - optional int32 range = 1; -} - -message CCSUsrMsg_Train { - optional int32 train = 1; -} - -message CCSUsrMsg_HudText { - optional string text = 1; -} - -message CCSUsrMsg_HudMsg { - optional int32 channel = 1; - optional .CMsgVector2D pos = 2; - optional .CMsgRGBA clr1 = 3; - optional .CMsgRGBA clr2 = 4; - optional int32 effect = 5; - optional float fade_in_time = 6; - optional float fade_out_time = 7; - optional float hold_time = 9; - optional float fx_time = 10; - optional string text = 11; -} - -message CCSUsrMsg_Shake { - optional int32 command = 1; - optional float local_amplitude = 2; - optional float frequency = 3; - optional float duration = 4; -} - -message CCSUsrMsg_Fade { - optional int32 duration = 1; - optional int32 hold_time = 2; - optional int32 flags = 3; - optional .CMsgRGBA clr = 4; -} - -message CCSUsrMsg_Rumble { - optional int32 index = 1; - optional int32 data = 2; - optional int32 flags = 3; -} - -message CCSUsrMsg_CloseCaption { - optional uint32 hash = 1; - optional int32 duration = 2; - optional bool from_player = 3; - optional string cctoken = 4; -} - -message CCSUsrMsg_CloseCaptionDirect { - optional uint32 hash = 1; - optional int32 duration = 2; - optional bool from_player = 3; -} - -message CCSUsrMsg_SendAudio { - optional string radio_sound = 1; -} - -message CCSUsrMsg_RawAudio { - optional int32 pitch = 1; - optional int32 entidx = 2 [default = -1]; - optional float duration = 3; - optional string voice_filename = 4; -} - -message CCSUsrMsg_VoiceMask { - message PlayerMask { - optional int32 game_rules_mask = 1; - optional int32 ban_masks = 2; - } - - repeated .CCSUsrMsg_VoiceMask.PlayerMask player_masks = 1; - optional bool player_mod_enable = 2; -} - -message CCSUsrMsg_Damage { - optional int32 amount = 1; - optional .CMsgVector inflictor_world_pos = 2; - optional int32 victim_entindex = 3 [default = -1]; -} - -message CCSUsrMsg_RadioText { - optional int32 msg_dst = 1; - optional int32 client = 2 [default = -1]; - optional string msg_name = 3; - repeated string params = 4; -} - -message CCSUsrMsg_HintText { - optional string message = 1; -} - -message CCSUsrMsg_KeyHintText { - repeated string messages = 1; -} - -message CCSUsrMsg_ProcessSpottedEntityUpdate { - message SpottedEntityUpdate { - optional int32 entity_idx = 1 [default = -1]; - optional int32 class_id = 2; - optional int32 origin_x = 3; - optional int32 origin_y = 4; - optional int32 origin_z = 5; - optional int32 angle_y = 6; - optional bool defuser = 7; - optional bool player_has_defuser = 8; - optional bool player_has_c4 = 9; - } - - optional bool new_update = 1; - repeated .CCSUsrMsg_ProcessSpottedEntityUpdate.SpottedEntityUpdate entity_updates = 2; -} - -message CCSUsrMsg_SendPlayerItemDrops { - repeated .CEconItemPreviewDataBlock entity_updates = 1; -} - -message CCSUsrMsg_SendPlayerItemFound { - optional .CEconItemPreviewDataBlock iteminfo = 1; - optional int32 playerslot = 2 [default = -1]; -} - -message CCSUsrMsg_ReloadEffect { - optional int32 entidx = 1 [default = -1]; - optional int32 actanim = 2; - optional float origin_x = 3; - optional float origin_y = 4; - optional float origin_z = 5; -} - -message CCSUsrMsg_WeaponSound { - optional int32 entidx = 1 [default = -1]; - optional float origin_x = 2; - optional float origin_y = 3; - optional float origin_z = 4; - optional string sound = 5; - optional float game_timestamp = 6; - optional fixed32 source_soundscapeid = 7; -} - -message CCSUsrMsg_UpdateScreenHealthBar { - optional int32 entidx = 1 [default = -1]; - optional float healthratio_old = 2; - optional float healthratio_new = 3; - optional int32 style = 4; -} - -message CCSUsrMsg_EntityOutlineHighlight { - optional int32 entidx = 1 [default = -1]; - optional bool removehighlight = 2; -} - -message CCSUsrMsg_AdjustMoney { - optional int32 amount = 1; -} - -message CCSUsrMsg_ReportHit { - optional float pos_x = 1; - optional float pos_y = 2; - optional float timestamp = 4; - optional float pos_z = 3; -} - -message CCSUsrMsg_KillCam { - optional int32 obs_mode = 1; - optional int32 first_target = 2 [default = -1]; - optional int32 second_target = 3 [default = -1]; -} - -message CCSUsrMsg_DesiredTimescale { - optional float desired_timescale = 1; - optional float duration_realtime_sec = 2; - optional int32 interpolator_type = 3; - optional float start_blend_time = 4; -} - -message CCSUsrMsg_CurrentTimescale { - optional float cur_timescale = 1; -} - -message CCSUsrMsg_AchievementEvent { - optional int32 achievement = 1; - optional int32 count = 2; - optional int32 user_id = 3; -} - -message CCSUsrMsg_MatchEndConditions { - optional int32 fraglimit = 1; - optional int32 mp_maxrounds = 2; - optional int32 mp_winlimit = 3; - optional float mp_timelimit = 4; -} - -message CCSUsrMsg_PlayerStatsUpdate { - message Stat { - optional int32 idx = 1; - optional int32 delta = 2; - } - - optional int32 version = 1; - repeated .CCSUsrMsg_PlayerStatsUpdate.Stat stats = 4; - optional uint32 ehandle = 5; - optional int32 crc = 6; -} - -message CCSUsrMsg_QuestProgress { - optional uint32 quest_id = 1; - optional uint32 normal_points = 2; - optional uint32 bonus_points = 3; - optional bool is_event_quest = 4; -} - -message CCSUsrMsg_ScoreLeaderboardData { - optional .ScoreLeaderboardData data = 1; -} - -message CCSUsrMsg_PlayerDecalDigitalSignature { - optional .PlayerDecalDigitalSignature data = 1; -} - -message CCSUsrMsg_XRankGet { - optional int32 mode_idx = 1; - optional int32 controller = 2; -} - -message CCSUsrMsg_XRankUpd { - optional int32 mode_idx = 1; - optional int32 controller = 2; - optional int32 ranking = 3; -} - -message CCSUsrMsg_CallVoteFailed { - optional int32 reason = 1; - optional int32 time = 2; -} - -message CCSUsrMsg_VoteStart { - optional int32 team = 1; - optional int32 player_slot = 2 [default = -1]; - optional int32 vote_type = 3; - optional string disp_str = 4; - optional string details_str = 5; - optional string other_team_str = 6; - optional bool is_yes_no_vote = 7; - optional int32 player_slot_target = 8 [default = -1]; -} - -message CCSUsrMsg_VotePass { - optional int32 team = 1; - optional int32 vote_type = 2; - optional string disp_str = 3; - optional string details_str = 4; -} - -message CCSUsrMsg_VoteFailed { - optional int32 team = 1; - optional int32 reason = 2; -} - -message CCSUsrMsg_VoteSetup { - repeated string potential_issues = 1; -} - -message CCSUsrMsg_SendLastKillerDamageToClient { - optional int32 num_hits_given = 1; - optional int32 damage_given = 2; - optional int32 num_hits_taken = 3; - optional int32 damage_taken = 4; - optional int32 actual_damage_given = 5; - optional int32 actual_damage_taken = 6; -} - -message CCSUsrMsg_ServerRankUpdate { - message RankUpdate { - optional int32 account_id = 1; - optional int32 rank_old = 2; - optional int32 rank_new = 3; - optional int32 num_wins = 4; - optional float rank_change = 5; - optional int32 rank_type_id = 6; - } - - repeated .CCSUsrMsg_ServerRankUpdate.RankUpdate rank_update = 1; -} - -message CCSUsrMsg_XpUpdate { - optional .CMsgGCCstrike15_v2_GC2ServerNotifyXPRewarded data = 1; -} - -message CCSUsrMsg_ItemPickup { - optional string item = 1; -} - -message CCSUsrMsg_ShowMenu { - optional int32 bits_valid_slots = 1; - optional int32 display_time = 2; - optional string menu_string = 3; -} - -message CCSUsrMsg_BarTime { - optional string time = 1; -} - -message CCSUsrMsg_AmmoDenied { - optional int32 ammoidx = 1; -} - -message CCSUsrMsg_MarkAchievement { - optional string achievement = 1; -} - -message CCSUsrMsg_MatchStatsUpdate { - optional string update = 1; -} - -message CCSUsrMsg_ItemDrop { - optional int64 itemid = 1; - optional bool death = 2; -} - -message CCSUsrMsg_GlowPropTurnOff { - optional int32 entidx = 1 [default = -1]; -} - -message CCSUsrMsg_RoundBackupFilenames { - optional int32 count = 1; - optional int32 index = 2; - optional string filename = 3; - optional string nicename = 4; -} - -message CCSUsrMsg_SSUI { - optional bool show = 1; - optional float start_time = 2; - optional float end_time = 3; -} - -message CCSUsrMsg_SurvivalStats { - message Fact { - optional int32 type = 1; - optional int32 display = 2; - optional int32 value = 3; - optional float interestingness = 4; - } - - message Placement { - optional uint64 xuid = 1; - optional int32 teamnumber = 2; - optional int32 placement = 3; - } - - message Damage { - optional uint64 xuid = 1; - optional int32 to = 2; - optional int32 to_hits = 3; - optional int32 from = 4; - optional int32 from_hits = 5; - } - - optional uint64 xuid = 1; - repeated .CCSUsrMsg_SurvivalStats.Fact facts = 2; - repeated .CCSUsrMsg_SurvivalStats.Placement users = 3; - repeated .CCSUsrMsg_SurvivalStats.Damage damages = 5; - optional int32 ticknumber = 4; -} - -message CCSUsrMsg_EndOfMatchAllPlayersData { - message Accolade { - optional int32 eaccolade = 1; - optional float value = 2; - optional int32 position = 3; - } - - message PlayerData { - optional int32 slot = 1 [default = -1]; - optional uint64 xuid = 2; - optional string name = 3; - optional int32 teamnumber = 4; - optional .CCSUsrMsg_EndOfMatchAllPlayersData.Accolade nomination = 5; - repeated .CEconItemPreviewDataBlock items = 6; - optional int32 playercolor = 7; - optional bool isbot = 8; - } - - repeated .CCSUsrMsg_EndOfMatchAllPlayersData.PlayerData allplayerdata = 1; - optional int32 scene = 2; -} - -message CCSUsrMsg_RoundEndReportData { - message RerEvent { - message Victim { - optional int32 team_number = 1; - optional int32 playerslot = 2 [default = -1]; - optional uint64 xuid = 3; - optional int32 color = 4; - optional bool is_bot = 5; - optional bool is_dead = 6; - } - - message Objective { - optional int32 type = 1; - } - - message Damage { - optional int32 other_playerslot = 1 [default = -1]; - optional uint64 other_xuid = 2; - optional int32 health_removed = 3; - optional int32 num_hits = 4; - optional int32 return_health_removed = 5; - optional int32 return_num_hits = 6; - } - - optional float timestamp = 1; - optional int32 terrorist_odds = 2; - optional int32 ct_alive = 3; - optional int32 t_alive = 4; - optional .CCSUsrMsg_RoundEndReportData.RerEvent.Victim victim_data = 5; - optional .CCSUsrMsg_RoundEndReportData.RerEvent.Objective objective_data = 6; - repeated .CCSUsrMsg_RoundEndReportData.RerEvent.Damage all_damage_data = 7; - } - - message InitialConditions { - optional int32 ct_equip_value = 1; - optional int32 t_equip_value = 2; - optional int32 terrorist_odds = 3; - } - - optional .CCSUsrMsg_RoundEndReportData.InitialConditions init_conditions = 1; - repeated .CCSUsrMsg_RoundEndReportData.RerEvent all_rer_event_data = 2; -} - -message CCSUsrMsg_PostRoundDamageReport { - optional uint64 other_xuid = 1; - optional int32 given_kill_type = 2; - optional int32 given_health_removed = 3; - optional int32 given_num_hits = 4; - optional int32 taken_kill_type = 5; - optional int32 taken_health_removed = 6; - optional int32 taken_num_hits = 7; -} - -message CCSUsrMsg_CurrentRoundOdds { - optional int32 odds = 1; -} - -message CCSUsrMsg_DeepStats { - optional .CMsgGCCStrike15_ClientDeepStats stats = 1; -} - -message CCSUsrMsg_ShootInfo { - optional int32 frame_number = 1; - repeated .CMsgTransform hitbox_transforms = 2; - optional .CMsgVector shoot_pos = 3; - optional .CMsgQAngle shoot_dir = 4; -} - -message CCSUsrMsg_ResetHud { - optional bool reset = 1; -} - -message CCSUsrMsg_GameTitle { - optional int32 dummy = 1; -} - -message CCSUsrMsg_RequestState { - optional int32 dummy = 1; -} - -message CCSUsrMsg_StopSpectatorMode { - optional int32 dummy = 1; -} - -message CCSUsrMsg_DisconnectToLobby { - optional int32 dummy = 1; -} - -message CCSUsrMsg_WarmupHasEnded { - optional int32 dummy = 1; -} - -message CCSUsrMsg_ClientInfo { - optional int32 dummy = 1; -} - -message CCSUsrMsg_ServerRankRevealAll { - optional int32 seconds_till_shutdown = 1; - optional .CMsgGCCStrike15_v2_MatchmakingGC2ServerReserve reservation = 2; -} - -message CCSUsrMsgPreMatchSayText { - optional uint32 account_id = 1; - optional string text = 2; - optional bool all_chat = 3; -} - -message CCSUsrMsg_CounterStrafe { - optional int32 press_to_release_ns = 1; - optional int32 total_keys_down = 2; -} - -message CCSUsrMsg_DamagePrediction { - optional int32 command_num = 1; - optional int32 pellet_idx = 2; - optional int32 victim_slot = 3; - optional int32 victim_starting_health = 4; - optional int32 victim_damage = 5; - optional .CMsgVector shoot_pos = 6; - optional .CMsgQAngle shoot_dir = 7; - optional .CMsgQAngle aim_punch = 8; -} diff --git a/protobufs/engine_gcmessages.proto b/protobufs/engine_gcmessages.proto deleted file mode 100644 index 7f81bb6af..000000000 --- a/protobufs/engine_gcmessages.proto +++ /dev/null @@ -1,14 +0,0 @@ -import "google/protobuf/descriptor.proto"; - -message CEngineGotvSyncPacket { - optional uint64 match_id = 1; - optional uint32 instance_id = 2; - optional uint32 signupfragment = 3; - optional uint32 currentfragment = 4; - optional float tickrate = 5; - optional uint32 tick = 6; - optional float rtdelay = 8; - optional float rcvage = 9; - optional float keyframe_interval = 10; - optional uint32 cdndelay = 11; -} diff --git a/protobufs/gcsdk_gcmessages.proto b/protobufs/gcsdk_gcmessages.proto deleted file mode 100644 index 3ed729c47..000000000 --- a/protobufs/gcsdk_gcmessages.proto +++ /dev/null @@ -1,325 +0,0 @@ -import "steammessages.proto"; - -enum GCClientLauncherType { - GCClientLauncherType_DEFAULT = 0; - GCClientLauncherType_PERFECTWORLD = 1; - GCClientLauncherType_STEAMCHINA = 2; - GCClientLauncherType_SOURCE2 = 3; -} - -enum GCConnectionStatus { - GCConnectionStatus_HAVE_SESSION = 0; - GCConnectionStatus_GC_GOING_DOWN = 1; - GCConnectionStatus_NO_SESSION = 2; - GCConnectionStatus_NO_SESSION_IN_LOGON_QUEUE = 3; - GCConnectionStatus_NO_STEAM = 4; -} - -message CMsgSOIDOwner { - optional uint32 type = 1; - optional uint64 id = 2; -} - -message CMsgSOSingleObject { - optional int32 type_id = 2; - optional bytes object_data = 3; - optional fixed64 version = 4; - optional .CMsgSOIDOwner owner_soid = 5; -} - -message CMsgSOMultipleObjects { - message SingleObject { - option (msgpool_soft_limit) = 256; - option (msgpool_hard_limit) = 1024; - - optional int32 type_id = 1; - optional bytes object_data = 2; - } - - repeated .CMsgSOMultipleObjects.SingleObject objects_modified = 2; - optional fixed64 version = 3; - optional .CMsgSOIDOwner owner_soid = 6; -} - -message CMsgSOCacheSubscribed { - message SubscribedType { - optional int32 type_id = 1; - repeated bytes object_data = 2; - } - - repeated .CMsgSOCacheSubscribed.SubscribedType objects = 2; - optional fixed64 version = 3; - optional .CMsgSOIDOwner owner_soid = 4; -} - -message CMsgSOCacheUnsubscribed { - optional .CMsgSOIDOwner owner_soid = 2; -} - -message CMsgSOCacheSubscriptionCheck { - optional fixed64 version = 2; - optional .CMsgSOIDOwner owner_soid = 3; -} - -message CMsgSOCacheSubscriptionRefresh { - optional .CMsgSOIDOwner owner_soid = 2; -} - -message CMsgSOCacheVersion { - optional fixed64 version = 1; -} - -message CMsgAccountDetails { - optional bool valid = 1; - optional string account_name = 2; - optional bool public_profile = 4; - optional bool public_inventory = 5; - optional bool vac_banned = 6; - optional bool cyber_cafe = 7; - optional bool school_account = 8; - optional bool free_trial_account = 9; - optional bool subscribed = 10; - optional bool low_violence = 11; - optional bool limited = 12; - optional bool trusted = 13; - optional uint32 package = 14; - optional fixed32 time_cached = 15; - optional bool account_locked = 16; - optional bool community_banned = 17; - optional bool trade_banned = 18; - optional bool eligible_for_community_market = 19; -} - -message CMsgGCMultiplexMessage { - optional uint32 msgtype = 1; - optional bytes payload = 2; - repeated fixed64 steamids = 3; - optional bool replytogc = 4; -} - -message CMsgGCMultiplexMessage_Response { - optional uint32 msgtype = 1; -} - -message CGCToGCMsgMasterAck { - optional uint32 dir_index = 1; - optional uint32 gc_type = 2; -} - -message CGCToGCMsgMasterAck_Response { - optional int32 eresult = 1 [default = 2]; -} - -message CGCToGCMsgMasterStartupComplete { -} - -message CGCToGCMsgRouted { - optional uint32 msg_type = 1; - optional fixed64 sender_id = 2; - optional bytes net_message = 3; - optional uint32 ip = 4; -} - -message CGCToGCMsgRoutedReply { - optional uint32 msg_type = 1; - optional bytes net_message = 2; -} - -message CMsgGCUpdateSessionIP { - optional fixed64 steamid = 1; - optional fixed32 ip = 2; -} - -message CMsgGCRequestSessionIP { - optional fixed64 steamid = 1; -} - -message CMsgGCRequestSessionIPResponse { - optional fixed32 ip = 1; -} - -message CMsgSOCacheHaveVersion { - optional .CMsgSOIDOwner soid = 1; - optional fixed64 version = 2; -} - -message CMsgClientHello { - optional uint32 version = 1; - repeated .CMsgSOCacheHaveVersion socache_have_versions = 2; - optional uint32 client_session_need = 3; - optional uint32 client_launcher = 4; - optional uint32 partner_srcid = 5; - optional uint32 partner_accountid = 6; - optional uint32 partner_accountflags = 7; - optional uint32 partner_accountbalance = 8; - optional uint32 steam_launcher = 9; -} - -message CMsgServerHello { - optional uint32 version = 1; - repeated .CMsgSOCacheHaveVersion socache_have_versions = 2; - optional uint32 legacy_client_session_need = 3; - optional uint32 client_launcher = 4; - optional bytes legacy_steamdatagram_routing = 6; - optional uint32 required_internal_addr = 7; - optional bytes steamdatagram_login = 8; - optional uint32 socache_control = 9; -} - -message CMsgClientWelcome { - message Location { - optional float latitude = 1; - optional float longitude = 2; - optional string country = 3; - } - - optional uint32 version = 1; - optional bytes game_data = 2; - repeated .CMsgSOCacheSubscribed outofdate_subscribed_caches = 3; - repeated .CMsgSOCacheSubscriptionCheck uptodate_subscribed_caches = 4; - optional .CMsgClientWelcome.Location location = 5; - optional bytes game_data2 = 6; - optional uint32 rtime32_gc_welcome_timestamp = 7; - optional uint32 currency = 8; - optional uint32 balance = 9; - optional string balance_url = 10; - optional string txn_country_code = 11; -} - -message CMsgConnectionStatus { - optional .GCConnectionStatus status = 1 [default = GCConnectionStatus_HAVE_SESSION]; - optional uint32 client_session_need = 2; - optional int32 queue_position = 3; - optional int32 queue_size = 4; - optional int32 wait_seconds = 5; - optional int32 estimated_wait_seconds_remaining = 6; -} - -message CWorkshop_PopulateItemDescriptions_Request { - message SingleItemDescription { - optional uint32 gameitemid = 1; - optional string item_description = 2; - optional bool one_per_account = 3; - } - - message ItemDescriptionsLanguageBlock { - optional string language = 1; - repeated .CWorkshop_PopulateItemDescriptions_Request.SingleItemDescription descriptions = 2; - } - - optional uint32 appid = 1; - repeated .CWorkshop_PopulateItemDescriptions_Request.ItemDescriptionsLanguageBlock languages = 2; -} - -message CWorkshop_GetContributors_Request { - optional uint32 appid = 1; - optional uint32 gameitemid = 2; -} - -message CWorkshop_GetContributors_Response { - repeated fixed64 contributors = 1; -} - -message CWorkshop_SetItemPaymentRules_Request { - message WorkshopItemPaymentRule { - optional uint64 workshop_file_id = 1; - optional float revenue_percentage = 2; - optional string rule_description = 3; - optional uint32 rule_type = 4 [default = 1]; - } - - message WorkshopDirectPaymentRule { - optional uint64 workshop_file_id = 1; - optional string rule_description = 2; - } - - message PartnerItemPaymentRule { - optional uint32 account_id = 1; - optional float revenue_percentage = 2; - optional string rule_description = 3; - } - - optional uint32 appid = 1; - optional uint32 gameitemid = 2; - repeated .CWorkshop_SetItemPaymentRules_Request.WorkshopItemPaymentRule associated_workshop_files = 3; - repeated .CWorkshop_SetItemPaymentRules_Request.PartnerItemPaymentRule partner_accounts = 4; - optional bool validate_only = 5; - optional bool make_workshop_files_subscribable = 6; - optional .CWorkshop_SetItemPaymentRules_Request.WorkshopDirectPaymentRule associated_workshop_file_for_direct_payments = 7; -} - -message CWorkshop_SetItemPaymentRules_Response { -} - -message CGameServers_AggregationQuery_Request { - optional string filter = 1; - repeated string group_fields = 3; -} - -message CGameServers_AggregationQuery_Response { - message Group { - repeated string group_values = 1; - optional uint32 servers_empty = 2; - optional uint32 servers_full = 3; - optional uint32 servers_total = 4; - optional uint32 players_humans = 5; - optional uint32 players_bots = 6; - optional uint32 player_capacity = 7; - } - - repeated .CGameServers_AggregationQuery_Response.Group groups = 1; -} - -message CWorkshop_AddSpecialPayment_Request { - optional uint32 appid = 1; - optional uint32 gameitemid = 2; - optional string date = 3; - optional uint64 payment_us_usd = 4; - optional uint64 payment_row_usd = 5; -} - -message CWorkshop_AddSpecialPayment_Response { -} - -message CProductInfo_SetRichPresenceLocalization_Request { - message Token { - optional string token = 1; - optional string value = 2; - } - - message LanguageSection { - optional string language = 1; - repeated .CProductInfo_SetRichPresenceLocalization_Request.Token tokens = 2; - } - - optional uint32 appid = 1; - repeated .CProductInfo_SetRichPresenceLocalization_Request.LanguageSection languages = 2; - optional uint64 steamid = 3; -} - -message CProductInfo_SetRichPresenceLocalization_Response { -} - -message CMsgSerializedSOCache { - message TypeCache { - optional uint32 type = 1; - repeated bytes objects = 2; - optional uint32 service_id = 3; - } - - message Cache { - message Version { - optional uint32 service = 1; - optional uint64 version = 2; - } - - optional uint32 type = 1; - optional uint64 id = 2; - repeated .CMsgSerializedSOCache.Cache.Version versions = 3; - repeated .CMsgSerializedSOCache.TypeCache type_caches = 4; - } - - optional uint32 file_version = 1; - repeated .CMsgSerializedSOCache.Cache caches = 2; - optional uint32 gc_socache_file_version = 3; -} diff --git a/protobufs/netmessages.proto b/protobufs/netmessages.proto deleted file mode 100644 index 60eab0d45..000000000 --- a/protobufs/netmessages.proto +++ /dev/null @@ -1,710 +0,0 @@ -import "networkbasetypes.proto"; - -enum CLC_Messages { - clc_ClientInfo = 20; - clc_Move = 21; - clc_VoiceData = 22; - clc_BaselineAck = 23; - clc_RespondCvarValue = 25; - clc_FileCRCCheck = 26; - clc_LoadingProgress = 27; - clc_SplitPlayerConnect = 28; - clc_SplitPlayerDisconnect = 30; - clc_ServerStatus = 31; - clc_RequestPause = 33; - clc_CmdKeyValues = 34; - clc_RconServerDetails = 35; - clc_HltvReplay = 36; - clc_Diagnostic = 37; -} - -enum SVC_Messages { - svc_ServerInfo = 40; - svc_FlattenedSerializer = 41; - svc_ClassInfo = 42; - svc_SetPause = 43; - svc_CreateStringTable = 44; - svc_UpdateStringTable = 45; - svc_VoiceInit = 46; - svc_VoiceData = 47; - svc_Print = 48; - svc_Sounds = 49; - svc_SetView = 50; - svc_ClearAllStringTables = 51; - svc_CmdKeyValues = 52; - svc_BSPDecal = 53; - svc_SplitScreen = 54; - svc_PacketEntities = 55; - svc_Prefetch = 56; - svc_Menu = 57; - svc_GetCvarValue = 58; - svc_StopSound = 59; - svc_PeerList = 60; - svc_PacketReliable = 61; - svc_HLTVStatus = 62; - svc_ServerSteamID = 63; - svc_FullFrameSplit = 70; - svc_RconServerDetails = 71; - svc_UserMessage = 72; - svc_Broadcast_Command = 74; - svc_HltvFixupOperatorStatus = 75; - svc_UserCmds = 76; -} - -enum VoiceDataFormat_t { - VOICEDATA_FORMAT_STEAM = 0; - VOICEDATA_FORMAT_ENGINE = 1; - VOICEDATA_FORMAT_OPUS = 2; -} - -enum RequestPause_t { - RP_PAUSE = 0; - RP_UNPAUSE = 1; - RP_TOGGLEPAUSE = 2; -} - -enum PrefetchType { - PFT_SOUND = 0; -} - -enum ESplitScreenMessageType { - MSG_SPLITSCREEN_ADDUSER = 0; - MSG_SPLITSCREEN_REMOVEUSER = 1; -} - -enum EQueryCvarValueStatus { - eQueryCvarValueStatus_ValueIntact = 0; - eQueryCvarValueStatus_CvarNotFound = 1; - eQueryCvarValueStatus_NotACvar = 2; - eQueryCvarValueStatus_CvarProtected = 3; -} - -enum DIALOG_TYPE { - DIALOG_MSG = 0; - DIALOG_MENU = 1; - DIALOG_TEXT = 2; - DIALOG_ENTRY = 3; - DIALOG_ASKCONNECT = 4; -} - -enum SVC_Messages_LowFrequency { - svc_dummy = 600; -} - -enum Bidirectional_Messages { - bi_RebroadcastGameEvent = 16; - bi_RebroadcastSource = 17; - bi_GameEvent = 18; -} - -enum Bidirectional_Messages_LowFrequency { - bi_RelayInfo = 700; - bi_RelayPacket = 701; -} - -enum ReplayEventType_t { - REPLAY_EVENT_CANCEL = 0; - REPLAY_EVENT_DEATH = 1; - REPLAY_EVENT_GENERIC = 2; - REPLAY_EVENT_STUCK_NEED_FULL_UPDATE = 3; - REPLAY_EVENT_VICTORY = 4; -} - -message CCLCMsg_ClientInfo { - optional fixed32 send_table_crc = 1; - optional uint32 server_count = 2; - optional bool is_hltv = 3; - optional uint32 friends_id = 5; - optional string friends_name = 6; -} - -message CCLCMsg_Move { - optional bytes data = 3; - optional uint32 last_command_number = 4; -} - -message CMsgVoiceAudio { - optional .VoiceDataFormat_t format = 1 [default = VOICEDATA_FORMAT_STEAM]; - optional bytes voice_data = 2; - optional int32 sequence_bytes = 3; - optional uint32 section_number = 4; - optional uint32 sample_rate = 5; - optional uint32 uncompressed_sample_offset = 6; - optional uint32 num_packets = 7; - repeated uint32 packet_offsets = 8 [packed = true]; - optional float voice_level = 9; -} - -message CCLCMsg_VoiceData { - optional .CMsgVoiceAudio audio = 1; - optional fixed64 xuid = 2; - optional uint32 tick = 3; -} - -message CCLCMsg_BaselineAck { - optional int32 baseline_tick = 1; - optional int32 baseline_nr = 2; -} - -message CCLCMsg_ListenEvents { - repeated fixed32 event_mask = 1; -} - -message CCLCMsg_RespondCvarValue { - optional int32 cookie = 1; - optional int32 status_code = 2; - optional string name = 3; - optional string value = 4; -} - -message CCLCMsg_FileCRCCheck { - optional int32 code_path = 1; - optional string path = 2; - optional int32 code_filename = 3; - optional string filename = 4; - optional fixed32 crc = 5; -} - -message CCLCMsg_LoadingProgress { - optional int32 progress = 1; -} - -message CCLCMsg_SplitPlayerConnect { - optional string playername = 1; -} - -message CCLCMsg_SplitPlayerDisconnect { - optional int32 slot = 1; -} - -message CCLCMsg_ServerStatus { - optional bool simplified = 1; -} - -message CCLCMsg_RequestPause { - optional .RequestPause_t pause_type = 1 [default = RP_PAUSE]; - optional int32 pause_group = 2; -} - -message CCLCMsg_CmdKeyValues { - optional bytes data = 1; -} - -message CCLCMsg_RconServerDetails { - optional bytes token = 1; -} - -message CMsgSource2SystemSpecs { - optional string cpu_id = 1; - optional string cpu_brand = 2; - optional uint32 cpu_model = 3; - optional uint32 cpu_num_physical = 4; - optional uint32 ram_physical_total_mb = 21; - optional string gpu_rendersystem_dll_name = 41; - optional uint32 gpu_vendor_id = 42; - optional string gpu_driver_name = 43; - optional uint32 gpu_driver_version_high = 44; - optional uint32 gpu_driver_version_low = 45; - optional uint32 gpu_dx_support_level = 46; - optional uint32 gpu_texture_memory_size_mb = 47; -} - -message CMsgSource2VProfLiteReportItem { - optional string name = 1; - optional uint32 active_samples = 2; - optional uint32 active_samples_1secmax = 4; - optional uint32 usec_max = 3; - optional uint32 usec_avg_active = 11; - optional uint32 usec_p50_active = 12; - optional uint32 usec_p99_active = 13; - optional uint32 usec_avg_all = 21; - optional uint32 usec_p50_all = 22; - optional uint32 usec_p99_all = 23; - optional uint32 usec_1secmax_avg_active = 31; - optional uint32 usec_1secmax_p50_active = 32; - optional uint32 usec_1secmax_p95_active = 33; - optional uint32 usec_1secmax_p99_active = 34; - optional uint32 usec_1secmax_avg_all = 41; - optional uint32 usec_1secmax_p50_all = 42; - optional uint32 usec_1secmax_p95_all = 43; - optional uint32 usec_1secmax_p99_all = 44; -} - -message CMsgSource2VProfLiteReport { - optional .CMsgSource2VProfLiteReportItem total = 1; - repeated .CMsgSource2VProfLiteReportItem items = 2; - optional uint32 discarded_frames = 3; -} - -message CMsgSource2NetworkFlowQuality { - optional uint32 duration = 1; - optional uint64 bytes_total = 5; - optional uint64 bytes_total_reliable = 6; - optional uint64 bytes_total_voice = 7; - optional uint32 bytes_sec_p95 = 10; - optional uint32 bytes_sec_p99 = 11; - optional uint32 enginemsgs_total = 20; - optional uint32 enginemsgs_sec_p95 = 21; - optional uint32 enginemsgs_sec_p99 = 22; - optional uint32 ticks_total = 40; - optional uint32 ticks_good = 41; - optional uint32 ticks_good_almost_late = 42; - optional uint32 ticks_fixed_dropped = 43; - optional uint32 ticks_fixed_late = 44; - optional uint32 ticks_bad_dropped = 45; - optional uint32 ticks_bad_late = 46; - optional uint32 ticks_bad_other = 47; - optional uint32 tick_missrate_samples_total = 50; - optional uint32 tick_missrate_samples_perfect = 51; - optional uint32 tick_missrate_samples_perfectnet = 52; - optional uint32 tick_missratenet_p75_x10 = 53; - optional uint32 tick_missratenet_p95_x10 = 54; - optional uint32 tick_missratenet_p99_x10 = 55; - optional sint32 recvmargin_p1 = 61; - optional sint32 recvmargin_p5 = 62; - optional sint32 recvmargin_p25 = 63; - optional sint32 recvmargin_p50 = 64; - optional sint32 recvmargin_p75 = 65; - optional sint32 recvmargin_p95 = 66; -} - -message CCLCMsg_Diagnostic { - optional .CMsgSource2SystemSpecs system_specs = 1; - optional .CMsgSource2VProfLiteReport vprof_report = 2; -} - -message CSource2Metrics_MatchPerfSummary_Notification { - message Client { - optional .CMsgSource2SystemSpecs system_specs = 1; - optional .CMsgSource2VProfLiteReport profile = 2; - optional uint32 build_id = 3; - optional fixed64 steamid = 10; - } - - optional uint32 appid = 1; - optional string game_mode = 2; - optional uint32 server_build_id = 3; - optional .CMsgSource2VProfLiteReport server_profile = 10; - repeated .CSource2Metrics_MatchPerfSummary_Notification.Client clients = 11; - optional string map = 20; -} - -message CSVCMsg_ServerInfo { - optional int32 protocol = 1; - optional int32 server_count = 2; - optional bool is_dedicated = 3; - optional bool is_hltv = 4; - optional int32 c_os = 6; - optional int32 max_clients = 10; - optional int32 max_classes = 11; - optional int32 player_slot = 12 [default = -1]; - optional float tick_interval = 13; - optional string game_dir = 14; - optional string map_name = 15; - optional string sky_name = 16; - optional string host_name = 17; - optional string addon_name = 18; - optional .CSVCMsg_GameSessionConfiguration game_session_config = 19; - optional bytes game_session_manifest = 20; -} - -message CSVCMsg_ClassInfo { - message class_t { - optional int32 class_id = 1; - optional string class_name = 3; - } - - optional bool create_on_client = 1; - repeated .CSVCMsg_ClassInfo.class_t classes = 2; -} - -message CSVCMsg_SetPause { - optional bool paused = 1; -} - -message CSVCMsg_VoiceInit { - optional int32 quality = 1; - optional string codec = 2; - optional int32 version = 3 [default = 0]; -} - -message CSVCMsg_Print { - optional string text = 1; -} - -message CSVCMsg_Sounds { - message sounddata_t { - optional sint32 origin_x = 1; - optional sint32 origin_y = 2; - optional sint32 origin_z = 3; - optional uint32 volume = 4; - optional float delay_value = 5; - optional int32 sequence_number = 6; - optional int32 entity_index = 7 [default = -1]; - optional int32 channel = 8; - optional int32 pitch = 9; - optional int32 flags = 10; - optional uint32 sound_num = 11; - optional fixed32 sound_num_handle = 12; - optional int32 speaker_entity = 13; - optional int32 random_seed = 14; - optional int32 sound_level = 15; - optional bool is_sentence = 16; - optional bool is_ambient = 17; - optional uint32 guid = 18; - optional fixed64 sound_resource_id = 19; - } - - optional bool reliable_sound = 1; - repeated .CSVCMsg_Sounds.sounddata_t sounds = 2; -} - -message CSVCMsg_Prefetch { - optional int32 sound_index = 1; - optional .PrefetchType resource_type = 2 [default = PFT_SOUND]; -} - -message CSVCMsg_SetView { - optional int32 entity_index = 1 [default = -1]; - optional int32 slot = 2 [default = -1]; -} - -message CSVCMsg_FixAngle { - optional bool relative = 1; - optional .CMsgQAngle angle = 2; -} - -message CSVCMsg_CrosshairAngle { - optional .CMsgQAngle angle = 1; -} - -message CSVCMsg_BSPDecal { - optional .CMsgVector pos = 1; - optional int32 decal_texture_index = 2; - optional int32 entity_index = 3 [default = -1]; - optional int32 model_index = 4; - optional bool low_priority = 5; -} - -message CSVCMsg_SplitScreen { - optional .ESplitScreenMessageType type = 1 [default = MSG_SPLITSCREEN_ADDUSER]; - optional int32 slot = 2; - optional int32 player_index = 3 [default = -1]; -} - -message CSVCMsg_GetCvarValue { - optional int32 cookie = 1; - optional string cvar_name = 2; -} - -message CSVCMsg_Menu { - optional int32 dialog_type = 1; - optional bytes menu_key_values = 2; -} - -message CSVCMsg_UserMessage { - optional int32 msg_type = 1; - optional bytes msg_data = 2; - optional int32 passthrough = 3; -} - -message CSVCMsg_SendTable { - message sendprop_t { - optional int32 type = 1; - optional string var_name = 2; - optional int32 flags = 3; - optional int32 priority = 4; - optional string dt_name = 5; - optional int32 num_elements = 6; - optional float low_value = 7; - optional float high_value = 8; - optional int32 num_bits = 9; - } - - optional bool is_end = 1; - optional string net_table_name = 2; - optional bool needs_decoder = 3; - repeated .CSVCMsg_SendTable.sendprop_t props = 4; -} - -message CSVCMsg_GameEventList { - message key_t { - optional int32 type = 1; - optional string name = 2; - } - - message descriptor_t { - optional int32 eventid = 1; - optional string name = 2; - repeated .CSVCMsg_GameEventList.key_t keys = 3; - } - - repeated .CSVCMsg_GameEventList.descriptor_t descriptors = 1; -} - -message CSVCMsg_PacketEntities { - message alternate_baseline_t { - optional int32 entity_index = 1; - optional int32 baseline_index = 2; - } - - message non_transmitted_entities_t { - optional int32 header_count = 1; - optional bytes data = 2; - } - - optional int32 max_entries = 1; - optional int32 updated_entries = 2; - optional bool legacy_is_delta = 3; - optional bool update_baseline = 4; - optional int32 baseline = 5; - optional int32 delta_from = 6; - optional bytes entity_data = 7; - optional bool pending_full_frame = 8; - optional uint32 active_spawngroup_handle = 9; - optional uint32 max_spawngroup_creationsequence = 10; - optional uint32 last_cmd_number_executed = 11; - optional sint32 last_cmd_number_recv_delta = 17; - optional uint32 server_tick = 12; - optional bytes serialized_entities = 13; - repeated .CSVCMsg_PacketEntities.alternate_baseline_t alternate_baselines = 15; - optional uint32 has_pvs_vis_bits = 16; - repeated sint32 cmd_recv_status = 22 [packed = true]; - optional .CSVCMsg_PacketEntities.non_transmitted_entities_t non_transmitted_entities = 19; - optional uint32 cq_starved_command_ticks = 20; - optional uint32 cq_discarded_command_ticks = 21; - optional bytes dev_padding = 999; -} - -message CSVCMsg_TempEntities { - optional bool reliable = 1; - optional int32 num_entries = 2; - optional bytes entity_data = 3; -} - -message CSVCMsg_CreateStringTable { - optional string name = 1; - optional int32 num_entries = 2; - optional bool user_data_fixed_size = 3; - optional int32 user_data_size = 4; - optional int32 user_data_size_bits = 5; - optional int32 flags = 6; - optional bytes string_data = 7; - optional int32 uncompressed_size = 8; - optional bool data_compressed = 9; - optional bool using_varint_bitcounts = 10; -} - -message CSVCMsg_UpdateStringTable { - optional int32 table_id = 1; - optional int32 num_changed_entries = 2; - optional bytes string_data = 3; -} - -message CSVCMsg_VoiceData { - optional .CMsgVoiceAudio audio = 1; - optional int32 client = 2 [default = -1]; - optional bool proximity = 3; - optional fixed64 xuid = 4; - optional int32 audible_mask = 5; - optional uint32 tick = 6; - optional int32 passthrough = 7; -} - -message CSVCMsg_PacketReliable { - optional int32 tick = 1; - optional int32 messagessize = 2; - optional bool state = 3; -} - -message CSVCMsg_FullFrameSplit { - optional int32 tick = 1; - optional int32 section = 2; - optional int32 total = 3; - optional bytes data = 4; -} - -message CSVCMsg_HLTVStatus { - optional string master = 1; - optional int32 clients = 2; - optional int32 slots = 3; - optional int32 proxies = 4; -} - -message CSVCMsg_ServerSteamID { - optional uint64 steam_id = 1; -} - -message CSVCMsg_CmdKeyValues { - optional bytes data = 1; -} - -message CSVCMsg_RconServerDetails { - optional bytes token = 1; - optional string details = 2; -} - -message CMsgIPCAddress { - optional fixed64 computer_guid = 1; - optional uint32 process_id = 2; -} - -message CMsgServerPeer { - optional int32 player_slot = 1 [default = -1]; - optional fixed64 steamid = 2; - optional .CMsgIPCAddress ipc = 3; - optional bool they_hear_you = 4; - optional bool you_hear_them = 5; - optional bool is_listenserver_host = 6; -} - -message CSVCMsg_PeerList { - repeated .CMsgServerPeer peer = 1; -} - -message CSVCMsg_ClearAllStringTables { - optional string mapname = 1; - optional bool create_tables_skipped = 3; -} - -message ProtoFlattenedSerializerField_t { - message polymorphic_field_t { - optional int32 polymorphic_field_serializer_name_sym = 1; - optional int32 polymorphic_field_serializer_version = 2; - } - - optional int32 var_type_sym = 1; - optional int32 var_name_sym = 2; - optional int32 bit_count = 3; - optional float low_value = 4; - optional float high_value = 5; - optional int32 encode_flags = 6; - optional int32 field_serializer_name_sym = 7; - optional int32 field_serializer_version = 8; - optional int32 send_node_sym = 9; - optional int32 var_encoder_sym = 10; - repeated .ProtoFlattenedSerializerField_t.polymorphic_field_t polymorphic_types = 11; - optional int32 var_serializer_sym = 12; -} - -message ProtoFlattenedSerializer_t { - optional int32 serializer_name_sym = 1; - optional int32 serializer_version = 2; - repeated int32 fields_index = 3; -} - -message CSVCMsg_FlattenedSerializer { - repeated .ProtoFlattenedSerializer_t serializers = 1; - repeated string symbols = 2; - repeated .ProtoFlattenedSerializerField_t fields = 3; -} - -message CSVCMsg_StopSound { - optional fixed32 guid = 1; -} - -message CBidirMsg_RebroadcastGameEvent { - optional bool posttoserver = 1; - optional int32 buftype = 2; - optional uint32 clientbitcount = 3; - optional uint64 receivingclients = 4; -} - -message CBidirMsg_RebroadcastSource { - optional int32 eventsource = 1; -} - -message CMsgServerNetworkStats { - message Port { - optional int32 port = 1; - optional string name = 2; - } - - message Player { - optional uint64 steamid = 1; - optional string remote_addr = 2; - optional int32 ping_avg_ms = 4; - optional float packet_loss_pct = 5; - optional bool is_bot = 6; - optional float loss_in = 7; - optional float loss_out = 8; - optional int32 engine_latency_ms = 9; - } - - optional bool dedicated = 1; - optional int32 cpu_usage = 2; - optional int32 memory_used_mb = 3; - optional int32 memory_free_mb = 4; - optional int32 uptime = 5; - optional int32 spawn_count = 6; - optional int32 num_clients = 8; - optional int32 num_bots = 9; - optional int32 num_spectators = 10; - optional int32 num_tv_relays = 11; - optional float fps = 12; - repeated .CMsgServerNetworkStats.Port ports = 17; - optional float avg_ping_ms = 18; - optional float avg_engine_latency_out = 19; - optional float avg_packets_out = 20; - optional float avg_packets_in = 21; - optional float avg_loss_out = 22; - optional float avg_loss_in = 23; - optional float avg_data_out = 24; - optional float avg_data_in = 25; - optional uint64 total_data_in = 26; - optional uint64 total_packets_in = 27; - optional uint64 total_data_out = 28; - optional uint64 total_packets_out = 29; - repeated .CMsgServerNetworkStats.Player players = 30; -} - -message CSVCMsg_HltvReplay { - optional int32 delay = 1; - optional int32 primary_target = 2 [default = -1]; - optional int32 replay_stop_at = 3; - optional int32 replay_start_at = 4; - optional int32 replay_slowdown_begin = 5; - optional int32 replay_slowdown_end = 6; - optional float replay_slowdown_rate = 7; - optional int32 reason = 8; -} - -message CCLCMsg_HltvReplay { - optional int32 request = 1; - optional float slowdown_length = 2; - optional float slowdown_rate = 3; - optional int32 primary_target = 4 [default = -1]; - optional float event_time = 5; -} - -message CSVCMsg_Broadcast_Command { - optional string cmd = 1; -} - -message CCLCMsg_HltvFixupOperatorTick { - optional int32 tick = 1; - optional bytes props_data = 2; - optional .CMsgVector origin = 3; - optional .CMsgQAngle eye_angles = 4; - optional int32 observer_mode = 5; - optional bool cameraman_scoreboard = 6; - optional int32 observer_target = 7; - optional .CMsgVector view_offset = 8; -} - -message CSVCMsg_HltvFixupOperatorStatus { - optional uint32 mode = 1; - optional string override_operator_name = 2; -} - -message CMsgServerUserCmd { - optional bytes data = 1; - optional int32 cmd_number = 2; - optional int32 player_slot = 3 [default = -1]; - optional int32 server_tick_executed = 4; - optional int32 client_tick = 5; -} - -message CSVCMsg_UserCommands { - repeated .CMsgServerUserCmd commands = 1; -} diff --git a/protobufs/network_connection.proto b/protobufs/network_connection.proto deleted file mode 100644 index ac8b68787..000000000 --- a/protobufs/network_connection.proto +++ /dev/null @@ -1,130 +0,0 @@ -import "google/protobuf/descriptor.proto"; - -extend .google.protobuf.EnumValueOptions { - optional string network_connection_token = 50500; - optional string network_connection_detail_token = 50501; -} - -enum ENetworkDisconnectionReason { - NETWORK_DISCONNECT_INVALID = 0; - NETWORK_DISCONNECT_SHUTDOWN = 1; - NETWORK_DISCONNECT_DISCONNECT_BY_USER = 2 [(network_connection_token) = "#GameUI_Disconnect_User"]; - NETWORK_DISCONNECT_DISCONNECT_BY_SERVER = 3 [(network_connection_token) = "#GameUI_Disconnect_Server"]; - NETWORK_DISCONNECT_LOST = 4 [(network_connection_token) = "#GameUI_Disconnect_ConnectionLost"]; - NETWORK_DISCONNECT_OVERFLOW = 5 [(network_connection_token) = "#GameUI_Disconnect_ConnectionOverflow"]; - NETWORK_DISCONNECT_STEAM_BANNED = 6 [(network_connection_token) = "#GameUI_Disconnect_SteamIDBanned"]; - NETWORK_DISCONNECT_STEAM_INUSE = 7 [(network_connection_token) = "#GameUI_Disconnect_SteamIDInUse"]; - NETWORK_DISCONNECT_STEAM_TICKET = 8 [(network_connection_token) = "#GameUI_Disconnect_SteamTicket"]; - NETWORK_DISCONNECT_STEAM_LOGON = 9 [(network_connection_token) = "#GameUI_Disconnect_SteamLogon"]; - NETWORK_DISCONNECT_STEAM_AUTHCANCELLED = 10 [(network_connection_token) = "#GameUI_Disconnect_SteamLogon"]; - NETWORK_DISCONNECT_STEAM_AUTHALREADYUSED = 11 [(network_connection_token) = "#GameUI_Disconnect_SteamLogon"]; - NETWORK_DISCONNECT_STEAM_AUTHINVALID = 12 [(network_connection_token) = "#GameUI_Disconnect_SteamLogon"]; - NETWORK_DISCONNECT_STEAM_VACBANSTATE = 13 [(network_connection_token) = "#GameUI_Disconnect_SteamVAC"]; - NETWORK_DISCONNECT_STEAM_LOGGED_IN_ELSEWHERE = 14 [(network_connection_token) = "#GameUI_Disconnect_SteamInUse"]; - NETWORK_DISCONNECT_STEAM_VAC_CHECK_TIMEDOUT = 15 [(network_connection_token) = "#GameUI_Disconnect_SteamTimeOut"]; - NETWORK_DISCONNECT_STEAM_DROPPED = 16 [(network_connection_token) = "#GameUI_Disconnect_SteamDropped"]; - NETWORK_DISCONNECT_STEAM_OWNERSHIP = 17 [(network_connection_token) = "#GameUI_Disconnect_SteamOwnership"]; - NETWORK_DISCONNECT_SERVERINFO_OVERFLOW = 18 [(network_connection_token) = "#GameUI_Disconnect_ServerInfoOverflow"]; - NETWORK_DISCONNECT_TICKMSG_OVERFLOW = 19 [(network_connection_token) = "#GameUI_Disconnect_TickMessage"]; - NETWORK_DISCONNECT_STRINGTABLEMSG_OVERFLOW = 20 [(network_connection_token) = "#GameUI_Disconnect_StringTableMessage"]; - NETWORK_DISCONNECT_DELTAENTMSG_OVERFLOW = 21 [(network_connection_token) = "#GameUI_Disconnect_DeltaEntMessage"]; - NETWORK_DISCONNECT_TEMPENTMSG_OVERFLOW = 22 [(network_connection_token) = "#GameUI_Disconnect_TempEntMessage"]; - NETWORK_DISCONNECT_SOUNDSMSG_OVERFLOW = 23 [(network_connection_token) = "#GameUI_Disconnect_SoundsMessage"]; - NETWORK_DISCONNECT_SNAPSHOTOVERFLOW = 24 [(network_connection_token) = "#GameUI_Disconnect_SnapshotOverflow"]; - NETWORK_DISCONNECT_SNAPSHOTERROR = 25 [(network_connection_token) = "#GameUI_Disconnect_SnapshotError"]; - NETWORK_DISCONNECT_RELIABLEOVERFLOW = 26 [(network_connection_token) = "#GameUI_Disconnect_ReliableOverflow"]; - NETWORK_DISCONNECT_BADDELTATICK = 27 [(network_connection_token) = "#GameUI_Disconnect_BadClientDeltaTick"]; - NETWORK_DISCONNECT_NOMORESPLITS = 28 [(network_connection_token) = "#GameUI_Disconnect_NoMoreSplits"]; - NETWORK_DISCONNECT_TIMEDOUT = 29 [(network_connection_token) = "#GameUI_Disconnect_TimedOut"]; - NETWORK_DISCONNECT_DISCONNECTED = 30 [(network_connection_token) = "#GameUI_Disconnect_Disconnected"]; - NETWORK_DISCONNECT_LEAVINGSPLIT = 31 [(network_connection_token) = "#GameUI_Disconnect_LeavingSplit"]; - NETWORK_DISCONNECT_DIFFERENTCLASSTABLES = 32 [(network_connection_token) = "#GameUI_Disconnect_DifferentClassTables"]; - NETWORK_DISCONNECT_BADRELAYPASSWORD = 33 [(network_connection_token) = "#GameUI_Disconnect_BadRelayPassword"]; - NETWORK_DISCONNECT_BADSPECTATORPASSWORD = 34 [(network_connection_token) = "#GameUI_Disconnect_BadSpectatorPassword"]; - NETWORK_DISCONNECT_HLTVRESTRICTED = 35 [(network_connection_token) = "#GameUI_Disconnect_HLTVRestricted"]; - NETWORK_DISCONNECT_NOSPECTATORS = 36 [(network_connection_token) = "#GameUI_Disconnect_NoSpectators"]; - NETWORK_DISCONNECT_HLTVUNAVAILABLE = 37 [(network_connection_token) = "#GameUI_Disconnect_HLTVUnavailable"]; - NETWORK_DISCONNECT_HLTVSTOP = 38 [(network_connection_token) = "#GameUI_Disconnect_HLTVStop"]; - NETWORK_DISCONNECT_KICKED = 39 [(network_connection_token) = "#GameUI_Disconnect_Kicked"]; - NETWORK_DISCONNECT_BANADDED = 40 [(network_connection_token) = "#GameUI_Disconnect_BanAdded"]; - NETWORK_DISCONNECT_KICKBANADDED = 41 [(network_connection_token) = "#GameUI_Disconnect_KickBanAdded"]; - NETWORK_DISCONNECT_HLTVDIRECT = 42 [(network_connection_token) = "#GameUI_Disconnect_HLTVDirect"]; - NETWORK_DISCONNECT_PURESERVER_CLIENTEXTRA = 43 [(network_connection_token) = "#GameUI_Disconnect_PureServer_ClientExtra"]; - NETWORK_DISCONNECT_PURESERVER_MISMATCH = 44 [(network_connection_token) = "#GameUI_Disconnect_PureServer_Mismatch"]; - NETWORK_DISCONNECT_USERCMD = 45 [(network_connection_token) = "#GameUI_Disconnect_UserCmd"]; - NETWORK_DISCONNECT_REJECTED_BY_GAME = 46 [(network_connection_token) = "#GameUI_Disconnect_RejectedByGame"]; - NETWORK_DISCONNECT_MESSAGE_PARSE_ERROR = 47 [(network_connection_token) = "#GameUI_Disconnect_MessageParseError"]; - NETWORK_DISCONNECT_INVALID_MESSAGE_ERROR = 48 [(network_connection_token) = "#GameUI_Disconnect_InvalidMessageError"]; - NETWORK_DISCONNECT_BAD_SERVER_PASSWORD = 49 [(network_connection_token) = "#GameUI_Disconnect_BadServerPassword"]; - NETWORK_DISCONNECT_DIRECT_CONNECT_RESERVATION = 50; - NETWORK_DISCONNECT_CONNECTION_FAILURE = 51 [(network_connection_token) = "#GameUI_Disconnect_ConnectionFailure"]; - NETWORK_DISCONNECT_NO_PEER_GROUP_HANDLERS = 52 [(network_connection_token) = "#GameUI_Disconnect_NoPeerGroupHandlers"]; - NETWORK_DISCONNECT_RECONNECTION = 53; - NETWORK_DISCONNECT_LOOPSHUTDOWN = 54 [(network_connection_token) = "#GameUI_Disconnect_LoopShutdown"]; - NETWORK_DISCONNECT_LOOPDEACTIVATE = 55 [(network_connection_token) = "#GameUI_Disconnect_LoopDeactivate"]; - NETWORK_DISCONNECT_HOST_ENDGAME = 56 [(network_connection_token) = "#GameUI_Disconnect_Host_EndGame"]; - NETWORK_DISCONNECT_LOOP_LEVELLOAD_ACTIVATE = 57 [(network_connection_token) = "#GameUI_Disconnect_LoopLevelLoadActivate"]; - NETWORK_DISCONNECT_CREATE_SERVER_FAILED = 58 [(network_connection_token) = "#GameUI_Disconnect_CreateServerFailed"]; - NETWORK_DISCONNECT_EXITING = 59 [(network_connection_token) = "#GameUI_Disconnect_ExitingEngine"]; - NETWORK_DISCONNECT_REQUEST_HOSTSTATE_IDLE = 60 [(network_connection_token) = "#GameUI_Disconnect_Request_HSIdle"]; - NETWORK_DISCONNECT_REQUEST_HOSTSTATE_HLTVRELAY = 61 [(network_connection_token) = "#GameUI_Disconnect_Request_HLTVRelay"]; - NETWORK_DISCONNECT_CLIENT_CONSISTENCY_FAIL = 62 [(network_connection_token) = "#GameUI_ClientConsistencyFail"]; - NETWORK_DISCONNECT_CLIENT_UNABLE_TO_CRC_MAP = 63 [(network_connection_token) = "#GameUI_ClientUnableToCRCMap"]; - NETWORK_DISCONNECT_CLIENT_NO_MAP = 64 [(network_connection_token) = "#GameUI_ClientNoMap"]; - NETWORK_DISCONNECT_CLIENT_DIFFERENT_MAP = 65 [(network_connection_token) = "#GameUI_ClientDifferentMap"]; - NETWORK_DISCONNECT_SERVER_REQUIRES_STEAM = 66 [(network_connection_token) = "#GameUI_ServerRequireSteams"]; - NETWORK_DISCONNECT_STEAM_DENY_MISC = 67 [(network_connection_token) = "#GameUI_Disconnect_SteamDeny_Misc"]; - NETWORK_DISCONNECT_STEAM_DENY_BAD_ANTI_CHEAT = 68 [(network_connection_token) = "#GameUI_Disconnect_SteamDeny_BadAntiCheat"]; - NETWORK_DISCONNECT_SERVER_SHUTDOWN = 69 [(network_connection_token) = "#GameUI_Disconnect_ServerShutdown"]; - NETWORK_DISCONNECT_REPLAY_INCOMPATIBLE = 71 [(network_connection_token) = "#GameUI_Disconnect_ReplayIncompatible"]; - NETWORK_DISCONNECT_CONNECT_REQUEST_TIMEDOUT = 72 [(network_connection_token) = "#GameUI_Disconnect_ConnectionTimedout"]; - NETWORK_DISCONNECT_SERVER_INCOMPATIBLE = 73 [(network_connection_token) = "#GameUI_Disconnect_ServerIncompatible"]; - NETWORK_DISCONNECT_LOCALPROBLEM_MANYRELAYS = 74 [(network_connection_token) = "#GameUI_Disconnect_LocalProblem_ManyRelays"]; - NETWORK_DISCONNECT_LOCALPROBLEM_HOSTEDSERVERPRIMARYRELAY = 75 [(network_connection_token) = "#GameUI_Disconnect_LocalProblem_HostedServerPrimaryRelay"]; - NETWORK_DISCONNECT_LOCALPROBLEM_NETWORKCONFIG = 76 [(network_connection_token) = "#GameUI_Disconnect_LocalProblem_NetworkConfig"]; - NETWORK_DISCONNECT_LOCALPROBLEM_OTHER = 77 [(network_connection_token) = "#GameUI_Disconnect_LocalProblem_Other"]; - NETWORK_DISCONNECT_REMOTE_TIMEOUT = 79 [(network_connection_token) = "#GameUI_Disconnect_RemoteProblem_Timeout"]; - NETWORK_DISCONNECT_REMOTE_TIMEOUT_CONNECTING = 80 [(network_connection_token) = "#GameUI_Disconnect_RemoteProblem_TimeoutConnecting"]; - NETWORK_DISCONNECT_REMOTE_OTHER = 81 [(network_connection_token) = "#GameUI_Disconnect_RemoteProblem_Other"]; - NETWORK_DISCONNECT_REMOTE_BADCRYPT = 82 [(network_connection_token) = "#GameUI_Disconnect_RemoteProblem_BadCrypt"]; - NETWORK_DISCONNECT_REMOTE_CERTNOTTRUSTED = 83 [(network_connection_token) = "#GameUI_Disconnect_RemoteProblem_BadCert"]; - NETWORK_DISCONNECT_UNUSUAL = 84 [(network_connection_token) = "#GameUI_Disconnect_Unusual"]; - NETWORK_DISCONNECT_INTERNAL_ERROR = 85 [(network_connection_token) = "#GameUI_Disconnect_InternalError"]; - NETWORK_DISCONNECT_REJECT_BADCHALLENGE = 128 [(network_connection_token) = "#GameUI_ServerRejectBadChallenge"]; - NETWORK_DISCONNECT_REJECT_NOLOBBY = 129 [(network_connection_token) = "#GameUI_ServerNoLobby"]; - NETWORK_DISCONNECT_REJECT_BACKGROUND_MAP = 130 [(network_connection_token) = "#Valve_Reject_Background_Map"]; - NETWORK_DISCONNECT_REJECT_SINGLE_PLAYER = 131 [(network_connection_token) = "#Valve_Reject_Single_Player"]; - NETWORK_DISCONNECT_REJECT_HIDDEN_GAME = 132 [(network_connection_token) = "#Valve_Reject_Hidden_Game"]; - NETWORK_DISCONNECT_REJECT_LANRESTRICT = 133 [(network_connection_token) = "#GameUI_ServerRejectLANRestrict"]; - NETWORK_DISCONNECT_REJECT_BADPASSWORD = 134 [(network_connection_token) = "#GameUI_ServerRejectBadPassword"]; - NETWORK_DISCONNECT_REJECT_SERVERFULL = 135 [(network_connection_token) = "#GameUI_ServerRejectServerFull"]; - NETWORK_DISCONNECT_REJECT_INVALIDRESERVATION = 136 [(network_connection_token) = "#GameUI_ServerRejectInvalidReservation"]; - NETWORK_DISCONNECT_REJECT_FAILEDCHANNEL = 137 [(network_connection_token) = "#GameUI_ServerRejectFailedChannel"]; - NETWORK_DISCONNECT_REJECT_CONNECT_FROM_LOBBY = 138 [(network_connection_token) = "#Valve_Reject_Connect_From_Lobby"]; - NETWORK_DISCONNECT_REJECT_RESERVED_FOR_LOBBY = 139 [(network_connection_token) = "#Valve_Reject_Reserved_For_Lobby"]; - NETWORK_DISCONNECT_REJECT_INVALIDKEYLENGTH = 140 [(network_connection_token) = "#GameUI_ServerReject_InvalidKeyLength"]; - NETWORK_DISCONNECT_REJECT_OLDPROTOCOL = 141 [(network_connection_token) = "#GameUI_ServerRejectOldProtocol"]; - NETWORK_DISCONNECT_REJECT_NEWPROTOCOL = 142 [(network_connection_token) = "#GameUI_ServerRejectNewProtocol"]; - NETWORK_DISCONNECT_REJECT_INVALIDCONNECTION = 143 [(network_connection_token) = "#GameUI_ServerRejectInvalidConnection"]; - NETWORK_DISCONNECT_REJECT_INVALIDCERTLEN = 144 [(network_connection_token) = "#GameUI_ServerRejectInvalidCertLen"]; - NETWORK_DISCONNECT_REJECT_INVALIDSTEAMCERTLEN = 145 [(network_connection_token) = "#GameUI_ServerRejectInvalidSteamCertLen"]; - NETWORK_DISCONNECT_REJECT_STEAM = 146 [(network_connection_token) = "#GameUI_ServerRejectSteam"]; - NETWORK_DISCONNECT_REJECT_SERVERAUTHDISABLED = 147 [(network_connection_token) = "#GameUI_ServerAuthDisabled"]; - NETWORK_DISCONNECT_REJECT_SERVERCDKEYAUTHINVALID = 148 [(network_connection_token) = "#GameUI_ServerCDKeyAuthInvalid"]; - NETWORK_DISCONNECT_REJECT_BANNED = 149 [(network_connection_token) = "#GameUI_ServerRejectBanned"]; - NETWORK_DISCONNECT_KICKED_TEAMKILLING = 150 [(network_connection_token) = "#Player_DisconnectReason_TeamKilling"]; - NETWORK_DISCONNECT_KICKED_TK_START = 151 [(network_connection_token) = "#Player_DisconnectReason_TK_Start"]; - NETWORK_DISCONNECT_KICKED_UNTRUSTEDACCOUNT = 152 [(network_connection_token) = "#Player_DisconnectReason_UntrustedAccount"]; - NETWORK_DISCONNECT_KICKED_CONVICTEDACCOUNT = 153 [(network_connection_token) = "#Player_DisconnectReason_ConvictedAccount"]; - NETWORK_DISCONNECT_KICKED_COMPETITIVECOOLDOWN = 154 [(network_connection_token) = "#Player_DisconnectReason_CompetitiveCooldown"]; - NETWORK_DISCONNECT_KICKED_TEAMHURTING = 155 [(network_connection_token) = "#Player_DisconnectReason_TeamHurting"]; - NETWORK_DISCONNECT_KICKED_HOSTAGEKILLING = 156 [(network_connection_token) = "#Player_DisconnectReason_HostageKilling"]; - NETWORK_DISCONNECT_KICKED_VOTEDOFF = 157 [(network_connection_token) = "#Player_DisconnectReason_VotedOff"]; - NETWORK_DISCONNECT_KICKED_IDLE = 158 [(network_connection_token) = "#Player_DisconnectReason_Idle"]; - NETWORK_DISCONNECT_KICKED_SUICIDE = 159 [(network_connection_token) = "#Player_DisconnectReason_Suicide"]; - NETWORK_DISCONNECT_KICKED_NOSTEAMLOGIN = 160 [(network_connection_token) = "#Player_DisconnectReason_NoSteamLogin"]; - NETWORK_DISCONNECT_KICKED_NOSTEAMTICKET = 161 [(network_connection_token) = "#Player_DisconnectReason_NoSteamTicket"]; - NETWORK_DISCONNECT_KICKED_INPUTAUTOMATION = 162 [(network_connection_token) = "#Player_DisconnectReason_InputAutomation", (network_connection_detail_token) = "#Player_DisconnectReason_InputAutomation_Detail"]; - NETWORK_DISCONNECT_KICKED_VACNETABNORMALBEHAVIOR = 163 [(network_connection_token) = "#Player_DisconnectReason_VacNetAbnormalBehavior"]; - NETWORK_DISCONNECT_KICKED_INSECURECLIENT = 164 [(network_connection_token) = "#Player_DisconnectReason_InsecureClient"]; -} diff --git a/protobufs/networkbasetypes.proto b/protobufs/networkbasetypes.proto deleted file mode 100644 index 9a3a60d9c..000000000 --- a/protobufs/networkbasetypes.proto +++ /dev/null @@ -1,241 +0,0 @@ -import "network_connection.proto"; - -enum SignonState_t { - SIGNONSTATE_NONE = 0; - SIGNONSTATE_CHALLENGE = 1; - SIGNONSTATE_CONNECTED = 2; - SIGNONSTATE_NEW = 3; - SIGNONSTATE_PRESPAWN = 4; - SIGNONSTATE_SPAWN = 5; - SIGNONSTATE_FULL = 6; - SIGNONSTATE_CHANGELEVEL = 7; -} - -enum NET_Messages { - net_NOP = 0; - net_Disconnect_Legacy = 1; - net_SplitScreenUser = 3; - net_Tick = 4; - net_StringCmd = 5; - net_SetConVar = 6; - net_SignonState = 7; - net_SpawnGroup_Load = 8; - net_SpawnGroup_ManifestUpdate = 9; - net_SpawnGroup_SetCreationTick = 11; - net_SpawnGroup_Unload = 12; - net_SpawnGroup_LoadCompleted = 13; - net_DebugOverlay = 15; -} - -enum SpawnGroupFlags_t { - SPAWN_GROUP_LOAD_ENTITIES_FROM_SAVE = 1; - SPAWN_GROUP_DONT_SPAWN_ENTITIES = 2; - SPAWN_GROUP_SYNCHRONOUS_SPAWN = 4; - SPAWN_GROUP_IS_INITIAL_SPAWN_GROUP = 8; - SPAWN_GROUP_CREATE_CLIENT_ONLY_ENTITIES = 16; - SPAWN_GROUP_BLOCK_UNTIL_LOADED = 64; - SPAWN_GROUP_LOAD_STREAMING_DATA = 128; - SPAWN_GROUP_CREATE_NEW_SCENE_WORLD = 256; -} - -message CMsgVector { - optional float x = 1; - optional float y = 2; - optional float z = 3; - optional float w = 4; -} - -message CMsgVector2D { - optional float x = 1; - optional float y = 2; -} - -message CMsgQAngle { - optional float x = 1; - optional float y = 2; - optional float z = 3; -} - -message CMsgQuaternion { - optional float x = 1; - optional float y = 2; - optional float z = 3; - optional float w = 4; -} - -message CMsgTransform { - optional .CMsgVector position = 1; - optional float scale = 2; - optional .CMsgQuaternion orientation = 3; -} - -message CMsgRGBA { - optional int32 r = 1; - optional int32 g = 2; - optional int32 b = 3; - optional int32 a = 4; -} - -message CMsgPlayerInfo { - optional string name = 1; - optional fixed64 xuid = 2; - optional int32 userid = 3; - optional fixed64 steamid = 4; - optional bool fakeplayer = 5; - optional bool ishltv = 6; -} - -message CEntityMsg { - optional uint32 target_entity = 1 [default = 16777215]; -} - -message CMsg_CVars { - message CVar { - optional string name = 1; - optional string value = 2; - } - - repeated .CMsg_CVars.CVar cvars = 1; -} - -message CNETMsg_NOP { -} - -message CNETMsg_SplitScreenUser { - optional int32 slot = 1; -} - -message CNETMsg_Tick { - optional uint32 tick = 1; - optional uint32 host_computationtime = 4; - optional uint32 host_computationtime_std_deviation = 5; - optional uint32 legacy_host_loss = 7; - optional uint32 host_unfiltered_frametime = 8; - optional uint32 hltv_replay_flags = 9; - optional uint32 expected_long_tick = 10; - optional string expected_long_tick_reason = 11; - optional uint32 host_frame_dropped_pct_x10 = 12; - optional uint32 host_frame_irregular_arrival_pct_x10 = 13; -} - -message CNETMsg_StringCmd { - optional string command = 1; - optional uint32 prediction_sync = 2; -} - -message CNETMsg_SetConVar { - optional .CMsg_CVars convars = 1; -} - -message CNETMsg_SignonState { - optional .SignonState_t signon_state = 1 [default = SIGNONSTATE_NONE]; - optional uint32 spawn_count = 2; - optional uint32 num_server_players = 3; - repeated string players_networkids = 4; - optional string map_name = 5; - optional string addons = 6; -} - -message CSVCMsg_GameEvent { - message key_t { - optional int32 type = 1; - optional string val_string = 2; - optional float val_float = 3; - optional int32 val_long = 4; - optional int32 val_short = 5; - optional int32 val_byte = 6; - optional bool val_bool = 7; - optional uint64 val_uint64 = 8; - } - - optional string event_name = 1; - optional int32 eventid = 2; - repeated .CSVCMsg_GameEvent.key_t keys = 3; -} - -message CSVCMsgList_GameEvents { - message event_t { - optional int32 tick = 1; - optional .CSVCMsg_GameEvent event = 2; - } - - repeated .CSVCMsgList_GameEvents.event_t events = 1; -} - -message CNETMsg_SpawnGroup_Load { - optional string worldname = 1; - optional string entitylumpname = 2; - optional string entityfiltername = 3; - optional uint32 spawngrouphandle = 4; - optional uint32 spawngroupownerhandle = 5; - optional .CMsgVector world_offset_pos = 6; - optional .CMsgQAngle world_offset_angle = 7; - optional bytes spawngroupmanifest = 8; - optional uint32 flags = 9; - optional int32 tickcount = 10; - optional bool manifestincomplete = 11; - optional string localnamefixup = 12; - optional string parentnamefixup = 13; - optional int32 manifestloadpriority = 14; - optional uint32 worldgroupid = 15; - optional uint32 creationsequence = 16; - optional string savegamefilename = 17; - optional uint32 spawngroupparenthandle = 18; - optional bool leveltransition = 19; - optional string worldgroupname = 20; -} - -message CNETMsg_SpawnGroup_ManifestUpdate { - optional uint32 spawngrouphandle = 1; - optional bytes spawngroupmanifest = 2; - optional bool manifestincomplete = 3; -} - -message CNETMsg_SpawnGroup_SetCreationTick { - optional uint32 spawngrouphandle = 1; - optional int32 tickcount = 2; - optional uint32 creationsequence = 3; -} - -message CNETMsg_SpawnGroup_Unload { - optional uint32 spawngrouphandle = 1; - optional uint32 flags = 2; - optional int32 tickcount = 3; -} - -message CNETMsg_SpawnGroup_LoadCompleted { - optional uint32 spawngrouphandle = 1; -} - -message CSVCMsg_GameSessionConfiguration { - optional bool is_multiplayer = 1; - optional bool is_loadsavegame = 2; - optional bool is_background_map = 3; - optional bool is_headless = 4; - optional uint32 min_client_limit = 5; - optional uint32 max_client_limit = 6; - optional uint32 max_clients = 7; - optional fixed32 tick_interval = 8; - optional string hostname = 9; - optional string savegamename = 10; - optional string s1_mapname = 11; - optional string gamemode = 12; - optional string server_ip_address = 13; - optional bytes data = 14; - optional bool is_localonly = 15; - optional bool no_steam_server = 19; - optional bool is_transition = 16; - optional string previouslevel = 17; - optional string landmarkname = 18; -} - -message CNETMsg_DebugOverlay { - optional int32 etype = 1; - repeated .CMsgVector vectors = 2; - repeated .CMsgRGBA colors = 3; - repeated float dimensions = 4; - repeated float times = 5; - repeated bool bools = 6; - repeated uint64 uint64s = 7; - repeated string strings = 8; -} diff --git a/protobufs/networksystem_protomessages.proto b/protobufs/networksystem_protomessages.proto deleted file mode 100644 index 1f51cf364..000000000 --- a/protobufs/networksystem_protomessages.proto +++ /dev/null @@ -1,19 +0,0 @@ -message NetMessageSplitscreenUserChanged { - optional uint32 slot = 1; -} - -message NetMessageConnectionClosed { - optional uint32 reason = 1; - optional string message = 2; -} - -message NetMessageConnectionCrashed { - optional uint32 reason = 1; - optional string message = 2; -} - -message NetMessagePacketStart { -} - -message NetMessagePacketEnd { -} diff --git a/protobufs/steammessages.proto b/protobufs/steammessages.proto deleted file mode 100644 index 96cdf6978..000000000 --- a/protobufs/steammessages.proto +++ /dev/null @@ -1,45 +0,0 @@ -import "google/protobuf/descriptor.proto"; - -extend .google.protobuf.FieldOptions { - optional bool key_field = 60000 [default = false]; -} - -extend .google.protobuf.MessageOptions { - optional int32 msgpool_soft_limit = 60000 [default = 32]; - optional int32 msgpool_hard_limit = 60001 [default = 384]; -} - -enum GCProtoBufMsgSrc { - GCProtoBufMsgSrc_Unspecified = 0; - GCProtoBufMsgSrc_FromSystem = 1; - GCProtoBufMsgSrc_FromSteamID = 2; - GCProtoBufMsgSrc_FromGC = 3; - GCProtoBufMsgSrc_ReplySystem = 4; -} - -message CMsgProtoBufHeader { - option (msgpool_soft_limit) = 256; - option (msgpool_hard_limit) = 1024; - - optional fixed64 client_steam_id = 1; - optional int32 client_session_id = 2; - optional uint32 source_app_id = 3; - optional fixed64 job_id_source = 10 [default = 18446744073709551615]; - optional fixed64 job_id_target = 11 [default = 18446744073709551615]; - optional string target_job_name = 12; - optional int32 eresult = 13 [default = 2]; - optional string error_message = 14; - optional uint32 ip = 15; - optional .GCProtoBufMsgSrc gc_msg_src = 200 [default = GCProtoBufMsgSrc_Unspecified]; - optional uint32 gc_dir_index_source = 201; -} - -message CChinaAgreementSessions_StartAgreementSessionInGame_Request { - optional uint32 appid = 1; - optional fixed64 steamid = 2; - optional string client_ipaddress = 3; -} - -message CChinaAgreementSessions_StartAgreementSessionInGame_Response { - optional string agreement_url = 1; -} diff --git a/protobufs/te.proto b/protobufs/te.proto deleted file mode 100644 index da76e3077..000000000 --- a/protobufs/te.proto +++ /dev/null @@ -1,262 +0,0 @@ -import "networkbasetypes.proto"; - -enum ETEProtobufIds { - TE_EffectDispatchId = 400; - TE_ArmorRicochetId = 401; - TE_BeamEntPointId = 402; - TE_BeamEntsId = 403; - TE_BeamPointsId = 404; - TE_BeamRingId = 405; - TE_BSPDecalId = 407; - TE_BubblesId = 408; - TE_BubbleTrailId = 409; - TE_DecalId = 410; - TE_WorldDecalId = 411; - TE_EnergySplashId = 412; - TE_FizzId = 413; - TE_ShatterSurfaceId = 414; - TE_GlowSpriteId = 415; - TE_ImpactId = 416; - TE_MuzzleFlashId = 417; - TE_BloodStreamId = 418; - TE_ExplosionId = 419; - TE_DustId = 420; - TE_LargeFunnelId = 421; - TE_SparksId = 422; - TE_PhysicsPropId = 423; - TE_PlayerDecalId = 424; - TE_ProjectedDecalId = 425; - TE_SmokeId = 426; -} - -message CMsgTEArmorRicochet { - optional .CMsgVector pos = 1; - optional .CMsgVector dir = 2; -} - -message CMsgTEBaseBeam { - optional fixed64 modelindex = 1; - optional fixed64 haloindex = 2; - optional uint32 startframe = 3; - optional uint32 framerate = 4; - optional float life = 5; - optional float width = 6; - optional float endwidth = 7; - optional uint32 fadelength = 8; - optional float amplitude = 9; - optional fixed32 color = 10; - optional uint32 speed = 11; - optional uint32 flags = 12; -} - -message CMsgTEBeamEntPoint { - optional .CMsgTEBaseBeam base = 1; - optional uint32 startentity = 2; - optional uint32 endentity = 3; - optional .CMsgVector start = 4; - optional .CMsgVector end = 5; -} - -message CMsgTEBeamEnts { - optional .CMsgTEBaseBeam base = 1; - optional uint32 startentity = 2; - optional uint32 endentity = 3; -} - -message CMsgTEBeamPoints { - optional .CMsgTEBaseBeam base = 1; - optional .CMsgVector start = 2; - optional .CMsgVector end = 3; -} - -message CMsgTEBeamRing { - optional .CMsgTEBaseBeam base = 1; - optional uint32 startentity = 2; - optional uint32 endentity = 3; -} - -message CMsgTEBSPDecal { - optional .CMsgVector origin = 1; - optional .CMsgVector normal = 2; - optional .CMsgVector saxis = 3; - optional int32 entity = 4 [default = -1]; - optional uint32 index = 5; -} - -message CMsgTEBubbles { - optional .CMsgVector mins = 1; - optional .CMsgVector maxs = 2; - optional float height = 3; - optional uint32 count = 4; - optional float speed = 5; -} - -message CMsgTEBubbleTrail { - optional .CMsgVector mins = 1; - optional .CMsgVector maxs = 2; - optional float waterz = 3; - optional uint32 count = 4; - optional float speed = 5; -} - -message CMsgTEDecal { - optional .CMsgVector origin = 1; - optional .CMsgVector start = 2; - optional int32 entity = 3 [default = -1]; - optional uint32 hitbox = 4; - optional uint32 index = 5; -} - -message CMsgEffectData { - optional .CMsgVector origin = 1; - optional .CMsgVector start = 2; - optional .CMsgVector normal = 3; - optional .CMsgQAngle angles = 4; - optional fixed32 entity = 5 [default = 16777215]; - optional fixed32 otherentity = 6 [default = 16777215]; - optional float scale = 7; - optional float magnitude = 8; - optional float radius = 9; - optional fixed32 surfaceprop = 10; - optional fixed64 effectindex = 11; - optional uint32 damagetype = 12; - optional uint32 material = 13; - optional uint32 hitbox = 14; - optional uint32 color = 15; - optional uint32 flags = 16; - optional int32 attachmentindex = 17; - optional uint32 effectname = 18; - optional uint32 attachmentname = 19; -} - -message CMsgTEEffectDispatch { - optional .CMsgEffectData effectdata = 1; -} - -message CMsgTEEnergySplash { - optional .CMsgVector pos = 1; - optional .CMsgVector dir = 2; - optional bool explosive = 3; -} - -message CMsgTEFizz { - optional int32 entity = 1 [default = -1]; - optional uint32 density = 2; - optional int32 current = 3; -} - -message CMsgTEShatterSurface { - optional .CMsgVector origin = 1; - optional .CMsgQAngle angles = 2; - optional .CMsgVector force = 3; - optional .CMsgVector forcepos = 4; - optional float width = 5; - optional float height = 6; - optional float shardsize = 7; - optional uint32 surfacetype = 8; - optional fixed32 frontcolor = 9; - optional fixed32 backcolor = 10; -} - -message CMsgTEGlowSprite { - optional .CMsgVector origin = 1; - optional float scale = 2; - optional float life = 3; - optional uint32 brightness = 4; -} - -message CMsgTEImpact { - optional .CMsgVector origin = 1; - optional .CMsgVector normal = 2; - optional uint32 type = 3; -} - -message CMsgTEMuzzleFlash { - optional .CMsgVector origin = 1; - optional .CMsgQAngle angles = 2; - optional float scale = 3; - optional uint32 type = 4; -} - -message CMsgTEBloodStream { - optional .CMsgVector origin = 1; - optional .CMsgVector direction = 2; - optional fixed32 color = 3; - optional uint32 amount = 4; -} - -message CMsgTEExplosion { - optional .CMsgVector origin = 1; - optional uint32 framerate = 2; - optional uint32 flags = 3; - optional .CMsgVector normal = 4; - optional uint32 materialtype = 5; - optional uint32 radius = 6; - optional uint32 magnitude = 7; - optional float scale = 8; - optional bool affect_ragdolls = 9; - optional string effect_name = 10; - optional uint32 explosion_type = 11; - optional bool create_debris = 12; - optional .CMsgVector debris_origin = 13; - optional fixed32 debris_surfaceprop = 14; -} - -message CMsgTEDust { - optional .CMsgVector origin = 1; - optional float size = 2; - optional float speed = 3; - optional .CMsgVector direction = 4; -} - -message CMsgTELargeFunnel { - optional .CMsgVector origin = 1; - optional uint32 reversed = 2; -} - -message CMsgTESparks { - optional .CMsgVector origin = 1; - optional uint32 magnitude = 2; - optional uint32 length = 3; - optional .CMsgVector direction = 4; -} - -message CMsgTEPhysicsProp { - optional .CMsgVector origin = 1; - optional .CMsgVector velocity = 2; - optional .CMsgQAngle angles = 3; - optional fixed32 skin = 4; - optional uint32 flags = 5; - optional uint32 effects = 6; - optional fixed32 color = 7; - optional fixed64 modelindex = 8; - optional uint32 unused_breakmodelsnottomake = 9; - optional float scale = 10; - optional .CMsgVector dmgpos = 11; - optional .CMsgVector dmgdir = 12; - optional int32 dmgtype = 13; -} - -message CMsgTEPlayerDecal { - optional .CMsgVector origin = 1; - optional int32 player = 2 [default = -1]; - optional int32 entity = 3 [default = -1]; -} - -message CMsgTEProjectedDecal { - optional .CMsgVector origin = 1; - optional .CMsgQAngle angles = 2; - optional uint32 index = 3; - optional float distance = 4; -} - -message CMsgTESmoke { - optional .CMsgVector origin = 1; - optional float scale = 2; -} - -message CMsgTEWorldDecal { - optional .CMsgVector origin = 1; - optional .CMsgVector normal = 2; - optional uint32 index = 3; -} diff --git a/protobufs/usercmd.proto b/protobufs/usercmd.proto deleted file mode 100644 index e0ffba8a5..000000000 --- a/protobufs/usercmd.proto +++ /dev/null @@ -1,39 +0,0 @@ -import "networkbasetypes.proto"; - -message CInButtonStatePB { - optional uint64 buttonstate1 = 1; - optional uint64 buttonstate2 = 2; - optional uint64 buttonstate3 = 3; -} - -message CSubtickMoveStep { - optional uint64 button = 1; - optional bool pressed = 2; - optional float when = 3; - optional float analog_forward_delta = 4; - optional float analog_left_delta = 5; -} - -message CBaseUserCmdPB { - optional int32 legacy_command_number = 1; - optional int32 client_tick = 2; - optional .CInButtonStatePB buttons_pb = 3; - optional .CMsgQAngle viewangles = 4; - optional float forwardmove = 5; - optional float leftmove = 6; - optional float upmove = 7; - optional int32 impulse = 8; - optional int32 weaponselect = 9; - optional int32 random_seed = 10; - optional int32 mousedx = 11; - optional int32 mousedy = 12; - optional uint32 pawn_entity_handle = 14 [default = 16777215]; - repeated .CSubtickMoveStep subtick_moves = 18; - optional bytes move_crc = 19; - optional uint32 consumed_server_angle_changes = 20; - optional int32 cmd_flags = 21; -} - -message CUserCmdBasePB { - optional .CBaseUserCmdPB base = 1; -} diff --git a/protobufs/usermessages.proto b/protobufs/usermessages.proto deleted file mode 100644 index 7c6dd3d27..000000000 --- a/protobufs/usermessages.proto +++ /dev/null @@ -1,812 +0,0 @@ -import "networkbasetypes.proto"; - -enum EBaseUserMessages { - UM_AchievementEvent = 101; - UM_CloseCaption = 102; - UM_CloseCaptionDirect = 103; - UM_CurrentTimescale = 104; - UM_DesiredTimescale = 105; - UM_Fade = 106; - UM_GameTitle = 107; - UM_HudMsg = 110; - UM_HudText = 111; - UM_ColoredText = 113; - UM_RequestState = 114; - UM_ResetHUD = 115; - UM_Rumble = 116; - UM_SayText = 117; - UM_SayText2 = 118; - UM_SayTextChannel = 119; - UM_Shake = 120; - UM_ShakeDir = 121; - UM_WaterShake = 122; - UM_TextMsg = 124; - UM_ScreenTilt = 125; - UM_VoiceMask = 128; - UM_SendAudio = 130; - UM_ItemPickup = 131; - UM_AmmoDenied = 132; - UM_ShowMenu = 134; - UM_CreditsMsg = 135; - UM_CloseCaptionPlaceholder = 142; - UM_CameraTransition = 143; - UM_AudioParameter = 144; - UM_ParticleManager = 145; - UM_HudError = 146; - UM_CustomGameEvent = 148; - UM_AnimGraphUpdate = 149; - UM_HapticsManagerPulse = 150; - UM_HapticsManagerEffect = 151; - UM_CommandQueueState = 152; - UM_UpdateCssClasses = 153; - UM_ServerFrameTime = 154; - UM_LagCompensationError = 155; - UM_RequestDllStatus = 156; - UM_RequestUtilAction = 157; - UM_UtilActionResponse = 158; - UM_DllStatusResponse = 159; - UM_RequestInventory = 160; - UM_InventoryResponse = 161; - UM_RequestDiagnostic = 162; - UM_DiagnosticResponse = 163; - UM_ExtraUserData = 164; - UM_NotifyResponseFound = 165; - UM_PlayResponseConditional = 166; - UM_MAX_BASE = 200; -} - -enum EBaseEntityMessages { - EM_PlayJingle = 136; - EM_ScreenOverlay = 137; - EM_RemoveAllDecals = 138; - EM_PropagateForce = 139; - EM_DoSpark = 140; - EM_FixAngle = 141; -} - -enum eRollType { - ROLL_NONE = -1; - ROLL_STATS = 0; - ROLL_CREDITS = 1; - ROLL_LATE_JOIN_LOGO = 2; - ROLL_OUTTRO = 3; -} - -enum PARTICLE_MESSAGE { - GAME_PARTICLE_MANAGER_EVENT_CREATE = 0; - GAME_PARTICLE_MANAGER_EVENT_UPDATE = 1; - GAME_PARTICLE_MANAGER_EVENT_UPDATE_FORWARD = 2; - GAME_PARTICLE_MANAGER_EVENT_UPDATE_ORIENTATION = 3; - GAME_PARTICLE_MANAGER_EVENT_UPDATE_FALLBACK = 4; - GAME_PARTICLE_MANAGER_EVENT_UPDATE_ENT = 5; - GAME_PARTICLE_MANAGER_EVENT_UPDATE_OFFSET = 6; - GAME_PARTICLE_MANAGER_EVENT_DESTROY = 7; - GAME_PARTICLE_MANAGER_EVENT_DESTROY_INVOLVING = 8; - GAME_PARTICLE_MANAGER_EVENT_RELEASE = 9; - GAME_PARTICLE_MANAGER_EVENT_LATENCY = 10; - GAME_PARTICLE_MANAGER_EVENT_SHOULD_DRAW = 11; - GAME_PARTICLE_MANAGER_EVENT_FROZEN = 12; - GAME_PARTICLE_MANAGER_EVENT_CHANGE_CONTROL_POINT_ATTACHMENT = 13; - GAME_PARTICLE_MANAGER_EVENT_UPDATE_ENTITY_POSITION = 14; - GAME_PARTICLE_MANAGER_EVENT_SET_FOW_PROPERTIES = 15; - GAME_PARTICLE_MANAGER_EVENT_SET_TEXT = 16; - GAME_PARTICLE_MANAGER_EVENT_SET_SHOULD_CHECK_FOW = 17; - GAME_PARTICLE_MANAGER_EVENT_SET_CONTROL_POINT_MODEL = 18; - GAME_PARTICLE_MANAGER_EVENT_SET_CONTROL_POINT_SNAPSHOT = 19; - GAME_PARTICLE_MANAGER_EVENT_SET_TEXTURE_ATTRIBUTE = 20; - GAME_PARTICLE_MANAGER_EVENT_SET_SCENE_OBJECT_GENERIC_FLAG = 21; - GAME_PARTICLE_MANAGER_EVENT_SET_SCENE_OBJECT_TINT_AND_DESAT = 22; - GAME_PARTICLE_MANAGER_EVENT_DESTROY_NAMED = 23; - GAME_PARTICLE_MANAGER_EVENT_SKIP_TO_TIME = 24; - GAME_PARTICLE_MANAGER_EVENT_CAN_FREEZE = 25; - GAME_PARTICLE_MANAGER_EVENT_SET_NAMED_VALUE_CONTEXT = 26; - GAME_PARTICLE_MANAGER_EVENT_UPDATE_TRANSFORM = 27; - GAME_PARTICLE_MANAGER_EVENT_FREEZE_TRANSITION_OVERRIDE = 28; - GAME_PARTICLE_MANAGER_EVENT_FREEZE_INVOLVING = 29; - GAME_PARTICLE_MANAGER_EVENT_ADD_MODELLIST_OVERRIDE_ELEMENT = 30; - GAME_PARTICLE_MANAGER_EVENT_CLEAR_MODELLIST_OVERRIDE = 31; - GAME_PARTICLE_MANAGER_EVENT_CREATE_PHYSICS_SIM = 32; - GAME_PARTICLE_MANAGER_EVENT_DESTROY_PHYSICS_SIM = 33; - GAME_PARTICLE_MANAGER_EVENT_SET_VDATA = 34; - GAME_PARTICLE_MANAGER_EVENT_SET_MATERIAL_OVERRIDE = 35; -} - -enum EHapticPulseType { - VR_HAND_HAPTIC_PULSE_LIGHT = 0; - VR_HAND_HAPTIC_PULSE_MEDIUM = 1; - VR_HAND_HAPTIC_PULSE_STRONG = 2; -} - -message CUserMessageAchievementEvent { - optional uint32 achievement = 1; -} - -message CUserMessageCloseCaption { - optional fixed32 hash = 1; - optional float duration = 2; - optional bool from_player = 3; - optional int32 ent_index = 4 [default = -1]; -} - -message CUserMessageCloseCaptionDirect { - optional fixed32 hash = 1; - optional float duration = 2; - optional bool from_player = 3; - optional int32 ent_index = 4 [default = -1]; -} - -message CUserMessageCloseCaptionPlaceholder { - optional string string = 1; - optional float duration = 2; - optional bool from_player = 3; - optional int32 ent_index = 4 [default = -1]; -} - -message CUserMessageCurrentTimescale { - optional float current = 1; -} - -message CUserMessageDesiredTimescale { - optional float desired = 1; - optional float acceleration = 2; - optional float minblendrate = 3; - optional float blenddeltamultiplier = 4; -} - -message CUserMessageFade { - optional uint32 duration = 1; - optional uint32 hold_time = 2; - optional uint32 flags = 3; - optional fixed32 color = 4; -} - -message CUserMessageShake { - optional uint32 command = 1; - optional float amplitude = 2; - optional float frequency = 3; - optional float duration = 4; -} - -message CUserMessageShakeDir { - optional .CUserMessageShake shake = 1; - optional .CMsgVector direction = 2; -} - -message CUserMessageWaterShake { - optional uint32 command = 1; - optional float amplitude = 2; - optional float frequency = 3; - optional float duration = 4; -} - -message CUserMessageScreenTilt { - optional uint32 command = 1; - optional bool ease_in_out = 2; - optional .CMsgVector angle = 3; - optional float duration = 4; - optional float time = 5; -} - -message CUserMessageSayText { - optional int32 playerindex = 1 [default = -1]; - optional string text = 2; - optional bool chat = 3; -} - -message CUserMessageSayText2 { - optional int32 entityindex = 1 [default = -1]; - optional bool chat = 2; - optional string messagename = 3; - optional string param1 = 4; - optional string param2 = 5; - optional string param3 = 6; - optional string param4 = 7; -} - -message CUserMessageHudMsg { - optional uint32 channel = 1; - optional float x = 2; - optional float y = 3; - optional fixed32 color1 = 4; - optional fixed32 color2 = 5; - optional uint32 effect = 6; - optional string message = 11; -} - -message CUserMessageHudText { - optional string message = 1; -} - -message CUserMessageTextMsg { - optional uint32 dest = 1; - repeated string param = 2; -} - -message CUserMessageGameTitle { -} - -message CUserMessageResetHUD { -} - -message CUserMessageSendAudio { - optional string soundname = 1; - optional bool stop = 2; -} - -message CUserMessageAudioParameter { - optional uint32 parameter_type = 1; - optional uint32 name_hash_code = 2; - optional float value = 3; - optional uint32 int_value = 4; -} - -message CUserMessageVoiceMask { - repeated uint32 gamerules_masks = 1; - repeated uint32 ban_masks = 2; - optional bool mod_enable = 3; -} - -message CUserMessageRequestState { -} - -message CUserMessageRumble { - optional int32 index = 1; - optional int32 data = 2; - optional int32 flags = 3; -} - -message CUserMessageSayTextChannel { - optional int32 player = 1; - optional int32 channel = 2; - optional string text = 3; -} - -message CUserMessageColoredText { - optional uint32 color = 1; - optional string text = 2; - optional bool reset = 3; - optional int32 context_player_slot = 4 [default = -1]; - optional int32 context_value = 5; - optional int32 context_team_id = 6; -} - -message CUserMessageItemPickup { - optional string itemname = 1; -} - -message CUserMessageAmmoDenied { - optional uint32 ammo_id = 1; -} - -message CUserMessageShowMenu { - optional uint32 validslots = 1; - optional uint32 displaytime = 2; - optional bool needmore = 3; - optional string menustring = 4; -} - -message CUserMessageCreditsMsg { - optional .eRollType rolltype = 1 [default = ROLL_NONE]; - optional float logo_length = 2; -} - -message CEntityMessagePlayJingle { - optional .CEntityMsg entity_msg = 1; -} - -message CEntityMessageScreenOverlay { - optional bool start_effect = 1; - optional .CEntityMsg entity_msg = 2; -} - -message CEntityMessageRemoveAllDecals { - optional bool remove_decals = 1; - optional .CEntityMsg entity_msg = 2; -} - -message CEntityMessagePropagateForce { - optional .CMsgVector impulse = 1; - optional .CEntityMsg entity_msg = 2; -} - -message CEntityMessageDoSpark { - optional .CMsgVector origin = 1; - optional int32 entityindex = 2 [default = -1]; - optional float radius = 3; - optional fixed32 color = 4; - optional uint32 beams = 5; - optional float thick = 6; - optional float duration = 7; - optional .CEntityMsg entity_msg = 8; -} - -message CEntityMessageFixAngle { - optional bool relative = 1; - optional .CMsgQAngle angle = 2; - optional .CEntityMsg entity_msg = 3; -} - -message CUserMessageCameraTransition { - message Transition_DataDriven { - optional string filename = 1; - optional int32 attach_ent_index = 2 [default = -1]; - optional float duration = 3; - } - - optional uint32 camera_type = 1; - optional float duration = 2; - optional .CUserMessageCameraTransition.Transition_DataDriven params_data_driven = 3; -} - -message CUserMsg_ParticleManager { - message ReleaseParticleIndex { - } - - message CreateParticle { - optional fixed64 particle_name_index = 1; - optional int32 attach_type = 2; - optional uint32 entity_handle = 3 [default = 16777215]; - optional uint32 entity_handle_for_modifiers = 4 [default = 16777215]; - optional bool apply_voice_ban_rules = 5; - optional int32 team_behavior = 6; - optional string control_point_configuration = 7; - optional bool cluster = 8; - optional float endcap_time = 9; - optional .CMsgVector aggregation_position = 10; - } - - message DestroyParticle { - optional bool destroy_immediately = 1; - } - - message DestroyParticleInvolving { - optional bool destroy_immediately = 1; - optional uint32 entity_handle = 3 [default = 16777215]; - } - - message DestroyParticleNamed { - optional fixed64 particle_name_index = 1; - optional uint32 entity_handle = 2 [default = 16777215]; - optional bool destroy_immediately = 3; - optional bool play_endcap = 4; - } - - message UpdateParticle_OBSOLETE { - optional int32 control_point = 1; - optional .CMsgVector position = 2; - } - - message UpdateParticleFwd_OBSOLETE { - optional int32 control_point = 1; - optional .CMsgVector forward = 2; - } - - message UpdateParticleOrient_OBSOLETE { - optional int32 control_point = 1; - optional .CMsgVector forward = 2; - optional .CMsgVector deprecated_right = 3; - optional .CMsgVector up = 4; - optional .CMsgVector left = 5; - } - - message UpdateParticleTransform { - optional int32 control_point = 1; - optional .CMsgVector position = 2; - optional .CMsgQuaternion orientation = 3; - optional float interpolation_interval = 4; - } - - message UpdateParticleFallback { - optional int32 control_point = 1; - optional .CMsgVector position = 2; - } - - message UpdateParticleOffset { - optional int32 control_point = 1; - optional .CMsgVector origin_offset = 2; - optional .CMsgQAngle angle_offset = 3; - } - - message UpdateParticleEnt { - optional int32 control_point = 1; - optional uint32 entity_handle = 2 [default = 16777215]; - optional int32 attach_type = 3; - optional int32 attachment = 4; - optional .CMsgVector fallback_position = 5; - optional bool include_wearables = 6; - optional .CMsgVector offset_position = 7; - optional .CMsgQAngle offset_angles = 8; - } - - message UpdateParticleSetFrozen { - optional bool set_frozen = 1; - optional float transition_duration = 2; - } - - message UpdateParticleShouldDraw { - optional bool should_draw = 1; - } - - message ChangeControlPointAttachment { - optional int32 attachment_old = 1; - optional int32 attachment_new = 2; - optional uint32 entity_handle = 3 [default = 16777215]; - } - - message UpdateEntityPosition { - optional uint32 entity_handle = 1 [default = 16777215]; - optional .CMsgVector position = 2; - } - - message SetParticleFoWProperties { - optional int32 fow_control_point = 1; - optional int32 fow_control_point2 = 2; - optional float fow_radius = 3; - } - - message SetParticleShouldCheckFoW { - optional bool check_fow = 1; - } - - message SetControlPointModel { - optional int32 control_point = 1; - optional string model_name = 2; - } - - message SetControlPointSnapshot { - optional int32 control_point = 1; - optional string snapshot_name = 2; - } - - message SetParticleText { - optional string text = 1; - } - - message SetTextureAttribute { - optional string attribute_name = 1; - optional string texture_name = 2; - } - - message SetSceneObjectGenericFlag { - optional bool flag_value = 1; - } - - message SetSceneObjectTintAndDesat { - optional fixed32 tint = 1; - optional float desat = 2; - } - - message ParticleSkipToTime { - optional float skip_to_time = 1; - } - - message ParticleCanFreeze { - optional bool can_freeze = 1; - } - - message ParticleFreezeTransitionOverride { - optional float freeze_transition_override = 1; - } - - message FreezeParticleInvolving { - optional bool set_frozen = 1; - optional float transition_duration = 2; - optional uint32 entity_handle = 3 [default = 16777215]; - } - - message AddModellistOverrideElement { - optional string model_name = 1; - optional float spawn_probability = 2; - optional uint32 groupid = 3; - } - - message ClearModellistOverride { - optional uint32 groupid = 1; - } - - message SetParticleNamedValueContext { - message FloatContextValue { - optional uint32 value_name_hash = 1; - optional float value = 2; - } - - message VectorContextValue { - optional uint32 value_name_hash = 1; - optional .CMsgVector value = 2; - } - - message TransformContextValue { - optional uint32 value_name_hash = 1; - optional .CMsgQAngle angles = 2; - optional .CMsgVector translation = 3; - } - - message EHandleContext { - optional uint32 value_name_hash = 1; - optional uint32 ent_index = 2 [default = 16777215]; - } - - repeated .CUserMsg_ParticleManager.SetParticleNamedValueContext.FloatContextValue float_values = 1; - repeated .CUserMsg_ParticleManager.SetParticleNamedValueContext.VectorContextValue vector_values = 2; - repeated .CUserMsg_ParticleManager.SetParticleNamedValueContext.TransformContextValue transform_values = 3; - repeated .CUserMsg_ParticleManager.SetParticleNamedValueContext.EHandleContext ehandle_values = 4; - } - - message CreatePhysicsSim { - optional string prop_group_name = 1; - optional bool use_high_quality_simulation = 2; - optional uint32 max_particle_count = 3; - } - - message DestroyPhysicsSim { - } - - message SetVData { - optional string vdata_name = 1; - } - - message SetMaterialOverride { - optional string material_name = 1; - optional bool include_children = 2; - } - - required .PARTICLE_MESSAGE type = 1 [default = GAME_PARTICLE_MANAGER_EVENT_CREATE]; - required uint32 index = 2; - optional .CUserMsg_ParticleManager.ReleaseParticleIndex release_particle_index = 3; - optional .CUserMsg_ParticleManager.CreateParticle create_particle = 4; - optional .CUserMsg_ParticleManager.DestroyParticle destroy_particle = 5; - optional .CUserMsg_ParticleManager.DestroyParticleInvolving destroy_particle_involving = 6; - optional .CUserMsg_ParticleManager.UpdateParticle_OBSOLETE update_particle = 7; - optional .CUserMsg_ParticleManager.UpdateParticleFwd_OBSOLETE update_particle_fwd = 8; - optional .CUserMsg_ParticleManager.UpdateParticleOrient_OBSOLETE update_particle_orient = 9; - optional .CUserMsg_ParticleManager.UpdateParticleFallback update_particle_fallback = 10; - optional .CUserMsg_ParticleManager.UpdateParticleOffset update_particle_offset = 11; - optional .CUserMsg_ParticleManager.UpdateParticleEnt update_particle_ent = 12; - optional .CUserMsg_ParticleManager.UpdateParticleShouldDraw update_particle_should_draw = 14; - optional .CUserMsg_ParticleManager.UpdateParticleSetFrozen update_particle_set_frozen = 15; - optional .CUserMsg_ParticleManager.ChangeControlPointAttachment change_control_point_attachment = 16; - optional .CUserMsg_ParticleManager.UpdateEntityPosition update_entity_position = 17; - optional .CUserMsg_ParticleManager.SetParticleFoWProperties set_particle_fow_properties = 18; - optional .CUserMsg_ParticleManager.SetParticleText set_particle_text = 19; - optional .CUserMsg_ParticleManager.SetParticleShouldCheckFoW set_particle_should_check_fow = 20; - optional .CUserMsg_ParticleManager.SetControlPointModel set_control_point_model = 21; - optional .CUserMsg_ParticleManager.SetControlPointSnapshot set_control_point_snapshot = 22; - optional .CUserMsg_ParticleManager.SetTextureAttribute set_texture_attribute = 23; - optional .CUserMsg_ParticleManager.SetSceneObjectGenericFlag set_scene_object_generic_flag = 24; - optional .CUserMsg_ParticleManager.SetSceneObjectTintAndDesat set_scene_object_tint_and_desat = 25; - optional .CUserMsg_ParticleManager.DestroyParticleNamed destroy_particle_named = 26; - optional .CUserMsg_ParticleManager.ParticleSkipToTime particle_skip_to_time = 27; - optional .CUserMsg_ParticleManager.ParticleCanFreeze particle_can_freeze = 28; - optional .CUserMsg_ParticleManager.SetParticleNamedValueContext set_named_value_context = 29; - optional .CUserMsg_ParticleManager.UpdateParticleTransform update_particle_transform = 30; - optional .CUserMsg_ParticleManager.ParticleFreezeTransitionOverride particle_freeze_transition_override = 31; - optional .CUserMsg_ParticleManager.FreezeParticleInvolving freeze_particle_involving = 32; - optional .CUserMsg_ParticleManager.AddModellistOverrideElement add_modellist_override_element = 33; - optional .CUserMsg_ParticleManager.ClearModellistOverride clear_modellist_override = 34; - optional .CUserMsg_ParticleManager.CreatePhysicsSim create_physics_sim = 35; - optional .CUserMsg_ParticleManager.DestroyPhysicsSim destroy_physics_sim = 36; - optional .CUserMsg_ParticleManager.SetVData set_vdata = 37; - optional .CUserMsg_ParticleManager.SetMaterialOverride set_material_override = 38; - - extensions 100 to 201; -} - -message CUserMsg_HudError { - optional int32 order_id = 1; -} - -message CUserMsg_CustomGameEvent { - optional string event_name = 1; - optional bytes data = 2; -} - -message CUserMessageHapticsManagerPulse { - optional int32 hand_id = 1; - optional float effect_amplitude = 2; - optional float effect_frequency = 3; - optional float effect_duration = 4; -} - -message CUserMessageHapticsManagerEffect { - optional int32 hand_id = 1; - optional uint32 effect_name_hash_code = 2; - optional float effect_scale = 3; -} - -message CUserMessageAnimStateGraphState { - optional int32 entity_index = 1; - optional bytes data = 2; -} - -message CUserMessageUpdateCssClasses { - optional int32 target_world_panel = 1; - optional string css_classes = 2; - optional bool is_add = 3; -} - -message CUserMessageServerFrameTime { - optional float frame_time = 1; -} - -message CUserMessageLagCompensationError { - optional float distance = 1; -} - -message CUserMessageRequestDllStatus { - optional string dll_action = 1; - optional bool full_report = 2; -} - -message CUserMessageRequestUtilAction { - optional int32 util1 = 2; - optional int32 util2 = 3; - optional int32 util3 = 4; - optional int32 util4 = 5; - optional int32 util5 = 6; -} - -message CUserMessage_UtilMsg_Response { - message ItemDetail { - optional int32 index = 1; - optional int32 hash = 2; - optional int32 crc = 3; - optional string name = 4; - } - - optional fixed32 crc = 1; - optional int32 item_count = 2; - optional fixed32 crc2 = 3; - optional int32 item_count2 = 4; - repeated int32 crc_part = 5; - repeated int32 crc_part2 = 6; - optional int32 client_timestamp = 7; - optional int32 platform = 8; - repeated .CUserMessage_UtilMsg_Response.ItemDetail itemdetails = 9; - optional int32 itemgroup = 10; - optional int32 total_count = 11; - optional int32 total_count2 = 12; -} - -message CUserMessage_DllStatus { - message CVDiagnostic { - optional uint32 id = 1; - optional uint32 extended = 2; - optional uint64 value = 3; - optional string string_value = 4; - } - - message CModule { - optional uint64 base_addr = 1; - optional string name = 2; - optional uint32 size = 3; - optional uint32 timestamp = 4; - } - - optional string file_report = 1; - optional string command_line = 2; - optional uint32 total_files = 3; - optional uint32 process_id = 4; - optional int32 osversion = 5; - optional uint64 client_time = 6; - repeated .CUserMessage_DllStatus.CVDiagnostic diagnostics = 7; - repeated .CUserMessage_DllStatus.CModule modules = 8; -} - -message CUserMessageRequestInventory { - optional int32 inventory = 1; - optional int32 offset = 2; - optional int32 options = 3; -} - -message CUserMessage_Inventory_Response { - message InventoryDetail { - optional int32 index = 1; - optional int64 primary = 2; - optional int64 offset = 3; - optional int64 first = 4; - optional int64 base = 5; - optional string name = 6; - optional string base_name = 7; - optional int32 base_detail = 8; - optional int32 base_time = 9; - optional int32 base_hash = 10; - } - - optional fixed32 crc = 1; - optional int32 item_count = 2; - optional int32 osversion = 5; - optional int32 perf_time = 6; - optional int32 client_timestamp = 7; - optional int32 platform = 8; - repeated .CUserMessage_Inventory_Response.InventoryDetail inventories = 9; - repeated .CUserMessage_Inventory_Response.InventoryDetail inventories2 = 10; - repeated .CUserMessage_Inventory_Response.InventoryDetail inventories3 = 14; - optional int32 inv_type = 11; - optional int32 build_version = 12; - optional int32 instance = 13; - optional int64 start_time = 15; -} - -message CUserMessageRequestDiagnostic { - message Diagnostic { - optional int32 index = 1; - optional int64 offset = 2; - optional int32 param = 3; - optional int32 length = 4; - optional int32 type = 5; - optional int64 base = 6; - optional int64 range = 7; - optional int64 extent = 8; - optional int64 detail = 9; - optional string name = 10; - optional string alias = 11; - optional bytes vardetail = 12; - optional int32 context = 13; - } - - repeated .CUserMessageRequestDiagnostic.Diagnostic diagnostics = 1; -} - -message CUserMessage_Diagnostic_Response { - message Diagnostic { - optional int32 index = 1; - optional int64 offset = 2; - optional int32 param = 3; - optional int32 length = 4; - optional bytes detail = 5; - optional int64 base = 6; - optional int64 range = 7; - optional int32 type = 8; - optional string name = 10; - optional string alias = 11; - optional bytes backup = 12; - optional int32 context = 13; - optional int64 control = 14; - optional int64 augment = 15; - optional int64 placebo = 16; - } - - repeated .CUserMessage_Diagnostic_Response.Diagnostic diagnostics = 1; - optional int32 build_version = 2; - optional int32 instance = 3; - optional int64 start_time = 4; - optional int32 osversion = 5; - optional int32 platform = 6; -} - -message CUserMessage_ExtraUserData { - optional int32 item = 1; - optional int64 value1 = 2; - optional int64 value2 = 3; - repeated bytes detail1 = 4; - repeated bytes detail2 = 5; -} - -message CUserMessage_NotifyResponseFound { - message Criteria { - optional uint32 name_symbol = 1; - optional string value = 2; - } - - optional int32 ent_index = 1 [default = -1]; - optional string rule_name = 2; - optional string response_value = 3; - optional string response_concept = 4; - repeated .CUserMessage_NotifyResponseFound.Criteria criteria = 5; - repeated uint32 int_criteria_names = 6 [packed = true]; - repeated int32 int_criteria_values = 7 [packed = true]; - repeated uint32 float_criteria_names = 8 [packed = true]; - repeated float float_criteria_values = 9; - repeated uint32 symbol_criteria_names = 10 [packed = true]; - repeated uint32 symbol_criteria_values = 11 [packed = true]; - optional int32 speak_result = 12; -} - -message CUserMessage_PlayResponseConditional { - optional int32 ent_index = 1 [default = -1]; - repeated int32 player_slots = 2; - optional string response = 3; - optional .CMsgVector ent_origin = 4; - optional float pre_delay = 5; - optional int32 mix_priority = 6; -} diff --git a/setup.ps1 b/setup.ps1 deleted file mode 100644 index 0f2398bdf..000000000 --- a/setup.ps1 +++ /dev/null @@ -1,16 +0,0 @@ -$env:MMSOURCE20 = "$PSScriptRoot\alliedmodders\metamod" -$env:HL2SDKCS2 = "$PSScriptRoot\alliedmodders\hl2sdk" -if (-not $env:GITHUB_SHA) { - $env:GITHUB_SHA = (git rev-parse HEAD) -} - -if (!(Test-Path -Path "$PSScriptRoot\build")) { - mkdir build - Set-Location build - python ../configure.py --enable-optimize -s cs2 - Set-Location .. -} - -Set-Location build -ambuild -Set-Location .. \ No newline at end of file diff --git a/setup.sh b/setup.sh deleted file mode 100755 index ed2733f82..000000000 --- a/setup.sh +++ /dev/null @@ -1,19 +0,0 @@ -#!/bin/bash - -export MMSOURCE20="$(pwd)/alliedmodders/metamod" -export HL2SDKCS2="$(pwd)/alliedmodders/hl2sdk" - -if [ -z "${GITHUB_SHA}" ]; then - export GITHUB_SHA=$(git rev-parse HEAD) -fi - -if [ ! -d build ]; then - mkdir build - cd build - CC=gcc CXX=g++ python ../configure.py --enable-optimize -s cs2 - cd .. -fi - -cd build -ambuild -cd .. \ No newline at end of file diff --git a/src/common.h b/src/common.h deleted file mode 100644 index 38372f652..000000000 --- a/src/common.h +++ /dev/null @@ -1,91 +0,0 @@ -#ifndef _common_h -#define _common_h - -#include -#include -#include -#include -#include - -#ifdef _WIN32 -#define __FUNCTION_NAME__ __FUNCTION__ -#else -#define __FUNCTION_NAME__ __FUNCTION__ -#endif - -////////////////////////////////////////////////////////////// -///////////////// Windows Stuff ////////////// -//////////////////////////////////////////////////////////// - -#ifdef _WIN32 -#ifdef GetTickCount -#undef GetTickCount -#endif -#ifdef GetCurrentTime -#undef GetCurrentTime -#endif -#ifdef VOID -#undef VOID -#endif -#ifdef GetObject -#undef GetObject -#endif -#endif - -#ifdef _WIN32 -#define WIN_LINUX(win, linux) win -#else -#define WIN_LINUX(win, linux) linux -#endif - -#define PREFIX "[Swiftly]" - -#define GCC_COMPILER (defined(__GNUC__) && !defined(__clang__)) - -void PLUGIN_PRINT(std::string category, std::string str); -void PLUGIN_PRINTF(std::string category, std::string str, ...); - -#define PRINT(str) PLUGIN_PRINT(__FUNCTION_NAME__, str) -#define PRINTF(str, ...) PLUGIN_PRINTF(__FUNCTION_NAME__, str, __VA_ARGS__) -#define PRINTRET(FORMAT_STR, RET) \ - { \ - PRINT(FORMAT_STR); \ - return RET; \ - } -#define PRINTFRET(FORMAT_STR, RET, ...) \ - { \ - PRINTF(FORMAT_STR, __VA_ARGS__); \ - return RET; \ - } -#define CLIENT_PRINT(SLOT, CATEGORY, FORMAT_STR) g_SMAPI->ClientConPrint(SLOT, std::string(PREFIX).append(" [").append(CATEGORY).append("] ").append(FORMAT_STR).c_str()) -#define CLIENT_PRINTF(SLOT, CATEGORY, FORMAT_STR, ...) g_SMAPI->ClientConPrintf(SLOT, std::string(PREFIX).append(" [").append(CATEGORY).append("] ").append(FORMAT_STR).c_str(), __VA_ARGS__) - -#ifndef SWIFTLY_DEBUG -#define DEBUG_PRINTF(FORMAT_STR, ...) -#define DEBUG_PRINT(FORMAT_STR) -#define DEBUG_CONTEXT() -#else -class DebugContext -{ -private: - std::string str; - -public: - DebugContext(std::string tmp) - { - this->str = tmp; - PRINTF("%s begins\n", this->str.c_str()); - } - - ~DebugContext() - { - PRINTF("%s ends\n", this->str.c_str()); - } -}; - -#define DEBUG_PRINTF(FORMAT_STR, ...) PLUGIN_PRINTF(string_format("Debug - %s", __FUNCTION_NAME__), FORMAT_STR, __VA_ARGS__) -#define DEBUG_PRINT(FORMAT_STR) PLUGIN_PRINT(string_format("Debug - %s", __FUNCTION_NAME__), FORMAT_STR) -#define DEBUG_CONTEXT() DebugContext IDJHFBGIUSEFHWESOIGWSEHOIFSJIERGKSKEF(__FUNCTION_NAME__); -#endif - -#endif \ No newline at end of file diff --git a/src/core/commands/chat.cpp b/src/core/commands/chat.cpp deleted file mode 100644 index 8e0c9229d..000000000 --- a/src/core/commands/chat.cpp +++ /dev/null @@ -1,32 +0,0 @@ -#include "commands.h" - -void SwiftlyChatReload(CPlayerSlot slot) -{ - g_chatProcessor->LoadMessages(); - PrintToClientOrConsole(slot, "Chat Processor", "All chat messages has been succesfully reloaded.\n"); -} - -void SwiftlyChatManagerHelp(CPlayerSlot slot) -{ - PrintToClientOrConsole(slot, "Commands", "Swiftly Chat Menu\n"); - PrintToClientOrConsole(slot, "Commands", "Usage: swiftly chat \n"); - PrintToClientOrConsole(slot, "Commands", " reload - Reload chat message configurations.\n"); -} - -void SwiftlyChatManager(CPlayerSlot slot, const char* subcmd) -{ - if (slot.Get() != -1) - return; - - std::string sbcmd = subcmd; - if (sbcmd.size() == 0) - { - SwiftlyChatManagerHelp(slot); - return; - } - - if (sbcmd == "reload") - SwiftlyChatReload(slot); - else - SwiftlyChatManagerHelp(slot); -} \ No newline at end of file diff --git a/src/core/commands/cmds.cpp b/src/core/commands/cmds.cpp deleted file mode 100644 index 5285ac8f1..000000000 --- a/src/core/commands/cmds.cpp +++ /dev/null @@ -1,28 +0,0 @@ -#include "commands.h" - -void ShowSwiftlyCommands(CPlayerSlot slot, int page) -{ - std::map cmds = g_commandsManager->GetCommands(); - PrintToClientOrConsole(slot, "Commands", "There are %d commands created by plugins.\n", cmds.size()); - PrintToClientOrConsole(slot, "Commands", "Below will be shown a list of all the commands:\n"); - - if (page < 1) - page = 1; - else if (static_cast(page) * 10 > cmds.size()) - page = int(ceil(double(cmds.size()) / 10.0)); - - std::map::iterator it = cmds.begin(); - for (int i = 0; i < (page - 1) * 10; i++) - ++it; - - for (uint32 i = 0; i < 10; i++) - { - if (it == cmds.end()) - break; - PrintToClientOrConsole(slot, "Commands", "sw_%s\n", it->first.c_str()); - ++it; - } - - if (static_cast(page) * 10 < cmds.size()) - PrintToClientOrConsole(slot, "Commands", "To see more please use swiftly cmds %d\n", page + 1); -} \ No newline at end of file diff --git a/src/core/commands/commands.h b/src/core/commands/commands.h deleted file mode 100644 index f407e04a1..000000000 --- a/src/core/commands/commands.h +++ /dev/null @@ -1,60 +0,0 @@ -#ifndef _core_commands_commands_h -#define _core_commands_commands_h - -#include -#include - -#include - -#include "../../entrypoint.h" -#include "../../common.h" -#include "../../engine/convars/convars.h" -#include "../../server/configuration/Configuration.h" -#include "../../utils/utils.h" -#include "../../player/playermanager/PlayerManager.h" -#include "../../server/translations/Translations.h" -#include "../../plugins/PluginManager.h" -#include "../../tools/resourcemonitor/ResourceMonitor.h" -#include "../../server/commands/CommandsManager.h" -#include "../../extensions/ExtensionManager.h" -#include "../../server/chat/Chat.h" - -////////////////////////////////////////////////////////////// -///////////////// Utilities ////////////// -//////////////////////////////////////////////////////////// - -#ifndef GITHUB_SHA -#define GITHUB_SHA "LOCAL" -#endif - -const char* GetCppVersion(); -std::string seconds_to_time(unsigned int number); - -template -void PrintToClientOrConsole(CPlayerSlot slot, std::string category, std::string message, T... args) -{ - if (slot.Get() == -1) - PLUGIN_PRINTF(category, message, args...); - else - CLIENT_PRINTF(slot, category, message, args...); -} - -////////////////////////////////////////////////////////////// -///////////////// Functions ////////////// -//////////////////////////////////////////////////////////// - -void SwiftlyChatManager(CPlayerSlot slot, const char* subcmd); -void ShowSwiftlyCommands(CPlayerSlot slot, int page); -void SwiftlyConfigurationManager(CPlayerSlot slot, const char* subcmd); -void ShowSwiftlyCredits(CPlayerSlot slot); -void SwiftlyConvarsManager(CPlayerSlot slot, int page); -void SwiftlyExtensionManager(CPlayerSlot slot, const char* subcmd); -void ShowSwiftlyCommandHelp(CPlayerSlot slot); -void SwiftlyList(CPlayerSlot slot); -void SwiftlyPluginManager(CPlayerSlot slot, const char* subcmd, const char* plugin_name); -void SwiftlyResourceMonitorManager(CPlayerSlot slot, const char* subcmd, const char* subcmd2); -void SwiftlyStatus(CPlayerSlot slot); -void SwiftlyTranslationManager(CPlayerSlot slot, const char* subcmd); -void SwiftlyVersion(CPlayerSlot slot); - -#endif \ No newline at end of file diff --git a/src/core/commands/config.cpp b/src/core/commands/config.cpp deleted file mode 100644 index ca023f443..000000000 --- a/src/core/commands/config.cpp +++ /dev/null @@ -1,33 +0,0 @@ -#include "commands.h" - -void SwiftlyConfigurationManagerHelp(CPlayerSlot slot) -{ - PrintToClientOrConsole(slot, "Commands", "Swiftly Configuration Menu\n"); - PrintToClientOrConsole(slot, "Commands", "Usage: swiftly config \n"); - PrintToClientOrConsole(slot, "Commands", " reload - Reloads all the plugin configurations.\n"); -} - -void SwiftlyConfigurationReload(CPlayerSlot slot) -{ - g_Config->ClearPluginConfig(); - g_Config->LoadPluginConfigurations(); - PrintToClientOrConsole(slot, "Configuration", "You've succesfully reloaded all the configurations for plugins.\n"); -} - -void SwiftlyConfigurationManager(CPlayerSlot slot, const char* subcmd) -{ - if (slot.Get() != -1) - return; - - std::string sbcmd = subcmd; - if (sbcmd.size() == 0) - { - SwiftlyConfigurationManagerHelp(slot); - return; - } - - if (sbcmd == "reload") - SwiftlyConfigurationReload(slot); - else - SwiftlyConfigurationManagerHelp(slot); -} \ No newline at end of file diff --git a/src/core/commands/core.cpp b/src/core/commands/core.cpp deleted file mode 100644 index 9b42e7104..000000000 --- a/src/core/commands/core.cpp +++ /dev/null @@ -1,51 +0,0 @@ -#include "commands.h" - -void SwiftlyCommand(const CCommandContext& context, const CCommand& args) -{ - CPlayerSlot slot = context.GetPlayerSlot(); - if (args.ArgC() < 2) - { - ShowSwiftlyCommandHelp(slot); - return; - } - - std::string subcmd = args[1]; - if (subcmd == "credits") - ShowSwiftlyCredits(slot); - else if (subcmd == "cmds") - ShowSwiftlyCommands(slot, V_StringToInt32(args[2], 1)); - else if (subcmd == "help") - ShowSwiftlyCommandHelp(slot); - else if (subcmd == "version") - SwiftlyVersion(slot); - else if (subcmd == "list") - SwiftlyList(slot); - else if (subcmd == "cvars") - SwiftlyConvarsManager(slot, V_StringToInt32(args[2], 1)); - else if (subcmd == "translations") - SwiftlyTranslationManager(slot, args[2]); - else if (subcmd == "config") - SwiftlyConfigurationManager(slot, args[2]); - else if (subcmd == "exts") - SwiftlyExtensionManager(slot, args[2]); - else if (subcmd == "plugins") - SwiftlyPluginManager(slot, args[2], args[3]); - else if (subcmd == "resmon") - SwiftlyResourceMonitorManager(slot, args[2], args[3]); - else if (subcmd == "status") - SwiftlyStatus(slot); - else if (subcmd == "chat") - SwiftlyChatManager(slot, args[2]); - else - ShowSwiftlyCommandHelp(slot); -} - -CON_COMMAND_F(swiftly, "The main command for Swiftly.", FCVAR_CLIENT_CAN_EXECUTE | FCVAR_LINKED_CONCOMMAND | FCVAR_SERVER_CAN_EXECUTE) -{ - SwiftlyCommand(context, args); -} - -CON_COMMAND_F(sw, "The main command for Swiftly.", FCVAR_CLIENT_CAN_EXECUTE | FCVAR_LINKED_CONCOMMAND | FCVAR_SERVER_CAN_EXECUTE) -{ - SwiftlyCommand(context, args); -} \ No newline at end of file diff --git a/src/core/commands/credits.cpp b/src/core/commands/credits.cpp deleted file mode 100644 index 215e38950..000000000 --- a/src/core/commands/credits.cpp +++ /dev/null @@ -1,7 +0,0 @@ -#include "commands.h" - -void ShowSwiftlyCredits(CPlayerSlot slot) -{ - PrintToClientOrConsole(slot, "Commands", "Swiftly was developed by Swiftly Solutions.\n"); - PrintToClientOrConsole(slot, "Commands", "https://github.com/swiftly-solution \n"); -} \ No newline at end of file diff --git a/src/core/commands/cvars.cpp b/src/core/commands/cvars.cpp deleted file mode 100644 index 523cd5b75..000000000 --- a/src/core/commands/cvars.cpp +++ /dev/null @@ -1,29 +0,0 @@ -#include "commands.h" - -void SwiftlyConvarsManager(CPlayerSlot slot, int page) -{ - auto fakeConvars = FetchFakeConvars(); - - PrintToClientOrConsole(slot, "Convars", "There are %d convars created by plugins.\n", fakeConvars.size()); - PrintToClientOrConsole(slot, "Convars", "Below will be shown a list of all the convars:\n"); - - if (page < 1) - page = 1; - else if (static_cast(page) * 10 > fakeConvars.size()) - page = int(ceil(double(fakeConvars.size()) / 10.0)); - - auto it = fakeConvars.begin(); - for (int i = 0; i < (page - 1) * 10; i++) - ++it; - - for (uint32 i = 0; i < 10; i++) - { - if (it == fakeConvars.end()) - break; - PrintToClientOrConsole(slot, "Convars", "%s\n", it->first.c_str()); - ++it; - } - - if (static_cast(page) * 10 < fakeConvars.size()) - PrintToClientOrConsole(slot, "Convars", "To see more please use swiftly cvars %d\n", page + 1); -} \ No newline at end of file diff --git a/src/core/commands/exts.cpp b/src/core/commands/exts.cpp deleted file mode 100644 index 7d5ea0759..000000000 --- a/src/core/commands/exts.cpp +++ /dev/null @@ -1,78 +0,0 @@ -#include "commands.h" - -void SwiftlyExtensionManagerHelp(CPlayerSlot slot) -{ - PrintToClientOrConsole(slot, "Commands", "Swiftly Configuration Menu\n"); - PrintToClientOrConsole(slot, "Commands", "Usage: swiftly exts \n"); - PrintToClientOrConsole(slot, "Commands", " list - Shows all the extensions loaded.\n"); -} - -void SwiftlyExtensionList(CPlayerSlot slot) -{ - uint32 loadedExtensions = 0; - auto extensions = extManager->GetExtensionsList(); - for (uint32 i = 0; i < extensions.size(); i++) - { - Extension* ext = extensions[i]; - if (ext == nullptr) - continue; - if (!ext->IsLoaded()) - continue; - - ++loadedExtensions; - } - - if (loadedExtensions == 0) - return PrintToClientOrConsole(slot, "Extensions List", "There are no extensions loaded.\n"); - - PrintToClientOrConsole(slot, "Extensions List", "Showing below %02d extensions loaded:\n", loadedExtensions); - uint32 showingIdx = 0; - std::vector errors; - for (uint32 i = 0; i < extensions.size(); i++) - { - Extension* ext = extensions[i]; - if (ext == nullptr) - continue; - if (ext->HasError()) - errors.push_back(string_format("Extension '%s': %s", ext->GetName().c_str(), ext->GetError().c_str())); - if (!ext->IsLoaded()) - continue; - - ++showingIdx; - - std::string website = ext->GetAPI()->GetWebsite(); - - PrintToClientOrConsole(slot, "Extensions List", "%02d. \"%s\" (%s) by %s%s\n", - showingIdx, - ext->GetAPI()->GetName(), - ext->GetAPI()->GetVersion(), - ext->GetAPI()->GetAuthor(), - website == "" ? "" : string_format(" ( %s )", website.c_str()).c_str()); - } - if (errors.size() && slot.Get() == -1) - { - PrintToClientOrConsole(slot, "Extensions List", "Extension load errors:\n"); - for (const std::string err : errors) - PrintToClientOrConsole(slot, "Extensions List", "%s\n", err.c_str()); - - errors.clear(); - } -} - -void SwiftlyExtensionManager(CPlayerSlot slot, const char* subcmd) -{ - if (slot.Get() != -1) - return; - - std::string sbcmd = subcmd; - if (sbcmd.size() == 0) - { - SwiftlyExtensionManagerHelp(slot); - return; - } - - if (sbcmd == "list") - SwiftlyExtensionList(slot); - else - SwiftlyExtensionManagerHelp(slot); -} \ No newline at end of file diff --git a/src/core/commands/help.cpp b/src/core/commands/help.cpp deleted file mode 100644 index 59ed328c1..000000000 --- a/src/core/commands/help.cpp +++ /dev/null @@ -1,23 +0,0 @@ -#include "commands.h" - -void ShowSwiftlyCommandHelp(CPlayerSlot slot) -{ - PrintToClientOrConsole(slot, "Commands", "Swiftly Commands Menu\n"); - PrintToClientOrConsole(slot, "Commands", "Usage: swiftly [args]\n"); - PrintToClientOrConsole(slot, "Commands", " credits - List Swiftly credits\n"); - PrintToClientOrConsole(slot, "Commands", " help - Show the help for Swiftly commands\n"); - PrintToClientOrConsole(slot, "Commands", " list - Show the list of online players\n"); - PrintToClientOrConsole(slot, "Commands", " cmds - List all console commands created by plugins\n"); - PrintToClientOrConsole(slot, "Commands", " status - Show the status of the players\n"); - if (slot.Get() == -1) - { - PrintToClientOrConsole(slot, "Commands", " cvars - List all convars created by plugins\n"); - PrintToClientOrConsole(slot, "Commands", " config - Configuration Management Menu\n"); - PrintToClientOrConsole(slot, "Commands", " exts - Extension Management Menu\n"); - PrintToClientOrConsole(slot, "Commands", " plugins - Plugin Management Menu\n"); - PrintToClientOrConsole(slot, "Commands", " resmon - Resource Monitor Menu\n"); - PrintToClientOrConsole(slot, "Commands", " translations - Translations Menu\n"); - PrintToClientOrConsole(slot, "Commands", " chat - Chat Menu\n"); - } - PrintToClientOrConsole(slot, "Commands", " version - Display Swiftly version\n"); -} \ No newline at end of file diff --git a/src/core/commands/list.cpp b/src/core/commands/list.cpp deleted file mode 100644 index 1d8a23aa0..000000000 --- a/src/core/commands/list.cpp +++ /dev/null @@ -1,20 +0,0 @@ -#include "commands.h" - -void SwiftlyList(CPlayerSlot slot) -{ - PrintToClientOrConsole(slot, "List", "Connected players: %02d/%02d\n", g_playerManager->GetPlayers(), engine->GetServerGlobals()->maxClients); - uint16 idx = 0; - for (uint16 i = 0; i < g_playerManager->GetPlayerCap(); i++) - { - Player* player = g_playerManager->GetPlayer(i); - if (!player) - continue; - - CBasePlayerController* controller = player->GetController(); - if (!controller) - continue; - - ++idx; - PrintToClientOrConsole(slot, "List", "%d. %s%s (%llu)\n", idx, player->GetName(), player->IsFakeClient() ? " (BOT)" : "", controller->m_steamID()); - } -} \ No newline at end of file diff --git a/src/core/commands/plugins.cpp b/src/core/commands/plugins.cpp deleted file mode 100644 index 26bb75190..000000000 --- a/src/core/commands/plugins.cpp +++ /dev/null @@ -1,174 +0,0 @@ -#include "commands.h" - -void ShowSwiftlyPluginManagerHelp(CPlayerSlot slot) -{ - PrintToClientOrConsole(slot, "Commands", "Swiftly Plugin Management Menu\n"); - PrintToClientOrConsole(slot, "Commands", "Usage: swiftly plugins [plugin_name]\n"); - PrintToClientOrConsole(slot, "Commands", " info - Shows informations about a plugin\n"); - PrintToClientOrConsole(slot, "Commands", " list - Shows loaded plugins\n"); - PrintToClientOrConsole(slot, "Commands", " load - Loads a plugin\n"); - PrintToClientOrConsole(slot, "Commands", " reload - Reloads a plugin if it was loaded\n"); - PrintToClientOrConsole(slot, "Commands", " unload - Unloads a plugin if it was loaded\n"); - PrintToClientOrConsole(slot, "Commands", " refresh - Refreshes the plugin list.\n"); -} - -void SwiftlyPluginManagerList(CPlayerSlot slot) -{ - uint32 loadedPlugins = 0; - auto plugins = g_pluginManager->GetPluginsList(); - for (uint32 i = 0; i < plugins.size(); i++) - { - Plugin* plugin = plugins[i]; - if (plugin == nullptr) - continue; - if (plugin->GetPluginState() == PluginState_t::Stopped) - continue; - - ++loadedPlugins; - } - - if (loadedPlugins == 0) - return PrintToClientOrConsole(slot, "Plugins List", "There are no plugins loaded.\n"); - - PrintToClientOrConsole(slot, "Plugins List", "Showing below %02d plugins loaded:\n", loadedPlugins); - uint32 showingIdx = 0; - std::vector errors; - for (uint32 i = 0; i < plugins.size(); i++) - { - Plugin* plugin = plugins[i]; - if (plugin == nullptr) - continue; - if (plugin->GetLoadError().size() > 0) - errors.push_back(string_format("Plugin '%s': %s", plugin->GetName().c_str(), plugin->GetLoadError().c_str())); - if (plugin->GetPluginState() == PluginState_t::Stopped) - continue; - - ++showingIdx; - - auto website = plugin->GetWebsite(); - - PrintToClientOrConsole(slot, "Plugins List", "%02d. \"%s\" (%s) by %s%s\n", - showingIdx, - plugin->GetPlName().c_str(), - plugin->GetVersion().c_str(), - plugin->GetAuthor().c_str(), - website == "" ? "" : string_format(" ( %s )", website.c_str()).c_str()); - } - if (errors.size() && slot.Get() == -1) - { - PrintToClientOrConsole(slot, "Plugins List", "Plugin load errors:\n"); - for (const std::string err : errors) - PrintToClientOrConsole(slot, "Plugins List", "%s\n", err.c_str()); - - errors.clear(); - } -} - -void SwiftlyPluginManagerInfo(CPlayerSlot slot, std::string plugin_name) -{ - if (plugin_name.size() == 0) - return PrintToClientOrConsole(slot, "Commands", "Usage: swiftly plugins info \n"); - - if (!g_pluginManager->PluginExists(plugin_name)) - return PrintToClientOrConsole(slot, "Plugin Info", "Invalid plugin name.\n"); - - Plugin* plugin = g_pluginManager->FetchPlugin(plugin_name); - if (plugin->GetPluginState() == PluginState_t::Stopped) - return PrintToClientOrConsole(slot, "Plugin Info", "Plugin is not loaded.\n"); - - std::string website = plugin->GetWebsite(); - - PrintToClientOrConsole(slot, "Plugin Info", "Plugin File Name: %s\n", plugin->GetName().c_str()); - PrintToClientOrConsole(slot, "Plugin Info", "Name: %s\n", plugin->GetPlName().c_str()); - PrintToClientOrConsole(slot, "Plugin Info", "Author: %s\n", plugin->GetAuthor().c_str()); - PrintToClientOrConsole(slot, "Plugin Info", "Version: %s\n", plugin->GetVersion().c_str()); - PrintToClientOrConsole(slot, "Plugin Info", "URL: %s\n", website == "" ? "Not Present" : website.c_str()); - PrintToClientOrConsole(slot, "Plugin Info", "Memory Usage: %.4fMB\n", double(plugin->GetMemoryUsage()) / 1024.0f / 1024.0f); -} - -void SwiftlyPluginManagerUnload(CPlayerSlot slot, std::string plugin_name) -{ - if (plugin_name.size() == 0) - return PrintToClientOrConsole(slot, "Commands", "Usage: swiftly plugins unload \n"); - - if (!g_pluginManager->PluginExists(plugin_name)) - return PrintToClientOrConsole(slot, "Plugin Unload", "Invalid plugin name.\n"); - - Plugin* plugin = g_pluginManager->FetchPlugin(plugin_name); - if (plugin->GetPluginState() == PluginState_t::Stopped) - return PrintToClientOrConsole(slot, "Plugin Unload", "Plugin is not loaded.\n"); - - g_pluginManager->StopPlugin(plugin_name, true); - PrintToClientOrConsole(slot, "Plugin Unload", "Plugin '%s' has been unloaded.\n", plugin_name.c_str()); -} - -void SwiftlyPluginManagerLoad(CPlayerSlot slot, std::string plugin_name) -{ - if (plugin_name.size() == 0) - return PrintToClientOrConsole(slot, "Commands", "Usage: swiftly plugins load \n"); - - if (!g_pluginManager->PluginExists(plugin_name)) - return PrintToClientOrConsole(slot, "Plugin Load", "Invalid plugin name.\n"); - - Plugin* plugin = g_pluginManager->FetchPlugin(plugin_name); - if (plugin->GetPluginState() == PluginState_t::Started) - return PrintToClientOrConsole(slot, "Plugin Load", "Plugin is already loaded.\n"); - - g_pluginManager->LoadPlugin(plugin_name); - g_pluginManager->StartPlugin(plugin_name); - PrintToClientOrConsole(slot, "Plugin Load", "Plugin '%s' has been loaded.\n", plugin_name.c_str()); -} - -void SwiftlyPluginManagerReload(CPlayerSlot slot, std::string plugin_name) -{ - if (plugin_name.size() == 0) - return PrintToClientOrConsole(slot, "Commands", "Usage: swiftly plugins reload \n"); - - if (!g_pluginManager->PluginExists(plugin_name)) - return PrintToClientOrConsole(slot, "Plugin Reload", "Invalid plugin name.\n"); - - Plugin* plugin = g_pluginManager->FetchPlugin(plugin_name); - if (plugin->GetPluginState() == PluginState_t::Stopped) - return PrintToClientOrConsole(slot, "Plugin Reload", "Plugin is not loaded.\n"); - - g_pluginManager->StopPlugin(plugin_name, true); - g_pluginManager->LoadPlugin(plugin_name); - g_pluginManager->StartPlugin(plugin_name); - PrintToClientOrConsole(slot, "Plugin Reload", "Plugin '%s' has been reloaded.\n", plugin_name.c_str()); -} - -void SwiftlyPluginManagerRefresh(CPlayerSlot slot) -{ - auto oldPluginsAmount = g_pluginManager->GetPluginsList().size(); - g_pluginManager->LoadPlugins(""); - auto newPluginsAmount = g_pluginManager->GetPluginsList().size(); - PrintToClientOrConsole(slot, "Plugin Refresh", "Plugins have been succesfully refreshed. (%d -> %d plugins)\n", oldPluginsAmount, newPluginsAmount); -} - -void SwiftlyPluginManager(CPlayerSlot slot, const char* subcmd, const char* plugin_name) -{ - if (slot.Get() != -1) - return; - - std::string sbcmd = subcmd; - if (sbcmd.size() == 0) - { - ShowSwiftlyPluginManagerHelp(slot); - return; - } - - if (sbcmd == "list") - SwiftlyPluginManagerList(slot); - else if (sbcmd == "info") - SwiftlyPluginManagerInfo(slot, plugin_name); - else if (sbcmd == "unload") - SwiftlyPluginManagerUnload(slot, plugin_name); - else if (sbcmd == "load") - SwiftlyPluginManagerLoad(slot, plugin_name); - else if (sbcmd == "reload") - SwiftlyPluginManagerReload(slot, plugin_name); - else if (sbcmd == "refresh") - SwiftlyPluginManagerRefresh(slot); - else - ShowSwiftlyPluginManagerHelp(slot); -} \ No newline at end of file diff --git a/src/core/commands/resmon.cpp b/src/core/commands/resmon.cpp deleted file mode 100644 index face5ccc9..000000000 --- a/src/core/commands/resmon.cpp +++ /dev/null @@ -1,229 +0,0 @@ -#include "commands.h" - -void SwiftlyResourceMonitorManagerHelp(CPlayerSlot slot) -{ - PrintToClientOrConsole(slot, "Commands", "Swiftly Resource Monitor Menu\n"); - PrintToClientOrConsole(slot, "Commands", "Usage: swiftly resmon \n"); - PrintToClientOrConsole(slot, "Commands", " enable - Enabled the usage monitoring.\n"); - PrintToClientOrConsole(slot, "Commands", " disable - Disables the usage monitoring.\n"); - PrintToClientOrConsole(slot, "Commands", " view - Shows the usage monitored.\n"); - PrintToClientOrConsole(slot, "Commands", " viewplugin - Shows the usage monitored for a specific plugin.\n"); -} - -void SwiftlyResourceMonitorManagerEnable(CPlayerSlot slot) -{ - if (g_ResourceMonitor->IsEnabled()) - return PrintToClientOrConsole(slot, "Resource Monitor", "Resource monitoring is already enabled.\n"); - - g_ResourceMonitor->Enable(); - PrintToClientOrConsole(slot, "Resource Monitor", "Resource monitoring has been enabled.\n"); -} - -void SwiftlyResourceMonitorManagerDisable(CPlayerSlot slot) -{ - if (!g_ResourceMonitor->IsEnabled()) - return PrintToClientOrConsole(slot, "Resource Monitor", "Resource monitoring is already disabled.\n"); - - g_ResourceMonitor->Disable(); - PrintToClientOrConsole(slot, "Resource Monitor", "Resource monitoring has been disabled.\n"); -} - -void SwiftlyResourceMonitorManagerViewPlugin(CPlayerSlot slot, std::string plugin_id) -{ - if (!g_ResourceMonitor->IsEnabled()) - return PrintToClientOrConsole(slot, "Resource Monitor", "Resource monitoring is not enabled.\n"); - - if (!g_pluginManager->PluginExists(plugin_id) && plugin_id != "core") - return PrintToClientOrConsole(slot, "Resource Monitor", "Invalid plugin ID.\n"); - - auto PrintTable = [](TextTable tbl) -> void - { - std::stringstream outputTable; - outputTable << tbl; - std::vector rows = explode(outputTable.str(), "\n"); - for (size_t i = 0; i < rows.size(); i++) - PLUGIN_PRINTF("Resource Monitor", "%s\n", rows[i].c_str()); - }; - - PrintToClientOrConsole(slot, "Resource Monitor", "Resource Monitor View Plugin\n"); - PrintToClientOrConsole(slot, "Resource Monitor", "ID: %s\n", plugin_id.c_str()); - PrintToClientOrConsole(slot, "Resource Monitor", " \n", plugin_id.c_str()); - - PrintToClientOrConsole(slot, "Resource Monitor", "Plugin Usage View\n"); - - TextTable usagesTable('-', '|', '+'); - - usagesTable.add(" ID "); - usagesTable.add(" Name "); - usagesTable.add(" Calls "); - usagesTable.add(" avg/max "); - usagesTable.endOfRow(); - - std::map>> data = g_ResourceMonitor->GetResmonTimeTables(); - if (data.count(plugin_id) > 0) - { - std::map> pluginData = data.at(plugin_id); - uint64_t idx = 0; - for (std::map>::iterator it = pluginData.begin(); it != pluginData.end(); ++it) - { - ++idx; - usagesTable.add(string_format(" %02d. ", idx)); - usagesTable.add(string_format(" %s ", it->first.c_str())); - usagesTable.add(string_format(" %llu ", it->second.size())); - - if (it->second.size() == 0) - usagesTable.add(" 0.00000ms / 0.00000ms "); - else - { - float max = *std::max_element(it->second.begin(), it->second.end()); - - float avg = 0; - uint64_t avgCount = 0; - for (std::list::iterator ii = it->second.begin(); ii != it->second.end(); ++ii) - { - avg += *(ii); - ++avgCount; - } - - usagesTable.add(string_format(" %.5fms / %.5fms ", (avg / avgCount), max)); - } - usagesTable.endOfRow(); - } - } - - PrintTable(usagesTable); -} - -void SwiftlyResourceMonitorManagerView(CPlayerSlot slot) -{ - if (!g_ResourceMonitor->IsEnabled()) - return PrintToClientOrConsole(slot, "Resource Monitor", "Resource monitoring is not enabled.\n"); - - TextTable pluginsTable('-', '|', '+'); - - pluginsTable.add(" ID "); - pluginsTable.add(" Status "); - pluginsTable.add(" Type "); - pluginsTable.add(" Memory "); - pluginsTable.add(" avg/max "); - pluginsTable.endOfRow(); - - auto PrintTable = [](TextTable tbl) -> void - { - std::stringstream outputTable; - outputTable << tbl; - std::vector rows = explode(outputTable.str(), "\n"); - for (size_t i = 0; i < rows.size(); i++) - PLUGIN_PRINTF("Resource Monitor", "%s\n", rows[i].c_str()); - }; - - PLUGIN_PRINTF("Resource Monitor", "Plugin Resource Viewer\n"); - - std::map>> data = g_ResourceMonitor->GetResmonTimeTables(); - - pluginsTable.add(" core "); - pluginsTable.add(" Loaded "); - pluginsTable.add(" - "); - pluginsTable.add(" - "); - - if (data.find("core") != data.end()) - { - float max = 0; - uint64_t maxCount = 0; - float avg = 0; - uint64_t avgCount = 0; - - std::map> pluginData = data.at("core"); - for (std::map>::iterator it = pluginData.begin(); it != pluginData.end(); ++it) - { - if (it->second.size() == 0) - continue; - - max += *std::max_element(it->second.begin(), it->second.end()); - ++maxCount; - - for (std::list::iterator it2 = it->second.begin(); it2 != it->second.end(); ++it2) - { - avg += *(it2); - ++avgCount; - } - } - - pluginsTable.add(string_format(" %.5fms / %.5fms ", (avg / avgCount), (max / maxCount))); - } - else - pluginsTable.add(" 0.000ms / 0.000ms "); - - pluginsTable.endOfRow(); - - for (Plugin* plugin : g_pluginManager->GetPluginsList()) - { - std::string plugin_id = plugin->GetName(); - - pluginsTable.add(" " + plugin_id + " "); - pluginsTable.add(std::string(" ") + (plugin->GetPluginState() == PluginState_t::Started ? "Loaded" : "Unloaded") + " "); - pluginsTable.add(std::string(" ") + (plugin->GetKind() == PluginKind_t::Lua ? "Lua" : "JavaScript") + " "); - if (plugin->GetPluginState() == PluginState_t::Started) - pluginsTable.add(string_format(" %.4f MB ", (double(plugin->GetMemoryUsage()) / 1024.0f / 1024.0f))); - else - pluginsTable.add(" - "); - - if (plugin->GetPluginState() == PluginState_t::Started && data.find(plugin->GetName()) != data.end()) - { - - float max = 0; - uint64_t maxCount = 0; - float avg = 0; - uint64_t avgCount = 0; - - std::map> pluginData = data.at(plugin->GetName()); - for (std::map>::iterator it = pluginData.begin(); it != pluginData.end(); ++it) - { - if (it->second.size() == 0) - continue; - - max += *std::max_element(it->second.begin(), it->second.end()); - ++maxCount; - - for (std::list::iterator it2 = it->second.begin(); it2 != it->second.end(); ++it2) - { - avg += *(it2); - ++avgCount; - } - } - - pluginsTable.add(string_format(" %.5fms / %.5fms ", (avg / avgCount), (max / maxCount))); - } - else - pluginsTable.add(" 0.00000ms / 0.00000ms "); - - pluginsTable.endOfRow(); - } - - PrintTable(pluginsTable); - PrintToClientOrConsole(slot, "Resource Monitor", "To view more detailed informations for each plugin, use: sw resmon viewplugin \n"); -} - -void SwiftlyResourceMonitorManager(CPlayerSlot slot, const char* subcmd, const char* subcmd2) -{ - if (slot.Get() != -1) - return; - - std::string sbcmd = subcmd; - if (sbcmd.size() == 0) - { - SwiftlyResourceMonitorManagerHelp(slot); - return; - } - - if (sbcmd == "enable") - SwiftlyResourceMonitorManagerEnable(slot); - else if (sbcmd == "disable") - SwiftlyResourceMonitorManagerDisable(slot); - else if (sbcmd == "view") - SwiftlyResourceMonitorManagerView(slot); - else if (sbcmd == "viewplugin") - SwiftlyResourceMonitorManagerViewPlugin(slot, (subcmd2 == nullptr ? "" : subcmd2)); - else - SwiftlyResourceMonitorManagerHelp(slot); -} \ No newline at end of file diff --git a/src/core/commands/status.cpp b/src/core/commands/status.cpp deleted file mode 100644 index f17638688..000000000 --- a/src/core/commands/status.cpp +++ /dev/null @@ -1,44 +0,0 @@ -#include "commands.h" - -void SwiftlyStatus(CPlayerSlot slot) -{ - TextTable statusTable('-', '|', '+'); - - statusTable.add(" playerid "); - statusTable.add(" name "); - statusTable.add(" steamid "); - statusTable.add(" time "); - statusTable.add(" state "); - statusTable.endOfRow(); - - for (uint16 i = 0; i < g_playerManager->GetPlayerCap(); i++) - { - Player* player = g_playerManager->GetPlayer(i); - if (!player) - continue; - - CBasePlayerController* controller = player->GetController(); - if (!controller) - continue; - - statusTable.add(string_format(" #%d ", player->GetSlot().Get())); - statusTable.add(string_format(" %s ", player->GetName())); - statusTable.add(string_format(" %s ", player->IsFakeClient() ? "BOT" : std::to_string(controller->m_steamID()).c_str())); - statusTable.add(string_format(" %s ", seconds_to_time(player->GetConnectedTime()).c_str())); - statusTable.add(string_format(" %s ", "Active")); - statusTable.endOfRow(); - } - - auto PrintTT = [slot](std::string category, TextTable table) -> void - { - std::stringstream outputTable; - outputTable << table; - std::vector rows = explode(outputTable.str(), "\n"); - for (size_t i = 0; i < rows.size() - 1; i++) - PrintToClientOrConsole(slot, category, "%s\n", rows[i].c_str()); - }; - - PrintTT("Status", statusTable); - - PrintToClientOrConsole(slot, "Status", "end of status\n"); -} \ No newline at end of file diff --git a/src/core/commands/translations.cpp b/src/core/commands/translations.cpp deleted file mode 100644 index 94451cd56..000000000 --- a/src/core/commands/translations.cpp +++ /dev/null @@ -1,32 +0,0 @@ -#include "commands.h" - -void SwiftlyTranslationManagerHelp(CPlayerSlot slot) -{ - PrintToClientOrConsole(slot, "Commands", "Swiftly Translation Menu\n"); - PrintToClientOrConsole(slot, "Commands", "Usage: swiftly translations \n"); - PrintToClientOrConsole(slot, "Commands", " reload - Reloads the translations.\n"); -} - -void SwiftlyTranslationReload(CPlayerSlot slot) -{ - g_translations->LoadTranslations(); - PrintToClientOrConsole(slot, "Translations", "All translations have been succesfully reloaded.\n"); -} - -void SwiftlyTranslationManager(CPlayerSlot slot, const char* subcmd) -{ - if (slot.Get() != -1) - return; - - std::string sbcmd = subcmd; - if (sbcmd.size() == 0) - { - SwiftlyTranslationManagerHelp(slot); - return; - } - - if (sbcmd == "reload") - SwiftlyTranslationReload(slot); - else - SwiftlyTranslationManagerHelp(slot); -} \ No newline at end of file diff --git a/src/core/commands/utils.cpp b/src/core/commands/utils.cpp deleted file mode 100644 index cfa151351..000000000 --- a/src/core/commands/utils.cpp +++ /dev/null @@ -1,24 +0,0 @@ -#include "commands.h" - -const char* GetCppVersion() -{ - if (__cplusplus == 202101L) - return "C++23"; - else if (__cplusplus == 202002L) - return "C++20"; - else if (__cplusplus == 201703L) - return "C++17"; - else if (__cplusplus == 201402L) - return "C++14"; - else if (__cplusplus == 201103L) - return "C++11"; - else if (__cplusplus == 199711L) - return "C++98"; - else - return "Pre-standard C++"; -} - -std::string seconds_to_time(unsigned int number) -{ - return string_format("%02d:%02d:%02d", int(number / 3600), int((number % 3600) / 60), int((number % 3600) % 60)); -} \ No newline at end of file diff --git a/src/core/commands/version.cpp b/src/core/commands/version.cpp deleted file mode 100644 index 1a9817889..000000000 --- a/src/core/commands/version.cpp +++ /dev/null @@ -1,12 +0,0 @@ -#include "commands.h" - -void SwiftlyVersion(CPlayerSlot slot) -{ - PrintToClientOrConsole(slot, "Version", "Swiftly Version informations:\n"); - PrintToClientOrConsole(slot, "Version", " Swiftly Version: %s (%s)\n", g_Plugin.GetVersion(), std::string(GITHUB_SHA).substr(0, 7).c_str()); - PrintToClientOrConsole(slot, "Version", " Swiftly API Version: %d\n", g_Plugin.GetApiVersion()); - PrintToClientOrConsole(slot, "Version", " Swiftly C++ Version: %s\n", GetCppVersion()); - PrintToClientOrConsole(slot, "Version", " Compiled on: %s %s\n", __DATE__, __TIME__); - PrintToClientOrConsole(slot, "Version", " Github Commit: https://github.com/swiftly-solution/swiftly/commit/%s\n", std::string(GITHUB_SHA).c_str()); - PrintToClientOrConsole(slot, "Version", " https://github.com/swiftly-solution \n"); -} diff --git a/src/core/configuration/setup.cpp b/src/core/configuration/setup.cpp deleted file mode 100644 index 9d5e8c8f3..000000000 --- a/src/core/configuration/setup.cpp +++ /dev/null @@ -1,11 +0,0 @@ -#include "../../filesystem/files/Files.h" - -void HandleConfigExamples() { - auto files = Files::FetchFileNames("addons/swiftly/configs"); - for(auto file : files) { - const std::string config_name = replace(file, ".example", ""); - if(ends_with(file, ".example.json") && !Files::ExistsPath(config_name)) { - Files::Write(config_name, Files::Read(file), false); - } - } -} \ No newline at end of file diff --git a/src/core/configuration/setup.h b/src/core/configuration/setup.h deleted file mode 100644 index 5340513cf..000000000 --- a/src/core/configuration/setup.h +++ /dev/null @@ -1,6 +0,0 @@ -#ifndef _core_configuration_setup_h -#define _core_configuration_setup_h - -void HandleConfigExamples(); - -#endif \ No newline at end of file diff --git a/src/engine/convars/convars.h b/src/engine/convars/convars.h deleted file mode 100644 index a1eb646e8..000000000 --- a/src/engine/convars/convars.h +++ /dev/null @@ -1,53 +0,0 @@ -#ifndef _convars_h -#define _convars_h - -#include -#include -#include -#include "../../entrypoint.h" -#include "../../common.h" -#include "../../utils/utils.h" -#include "netmessages.pb.h" - -ConVarRefAbstract FetchCVar(std::string cvarname); -std::any FetchCVarValue(std::string cvarname); -EConVarType FetchCVarType(std::string cvarname); - -class FakeConVar -{ -private: - std::any m_value; - EConVarType m_type; - std::string m_name; - ConCommand* m_cmd; - -public: - FakeConVar(std::string name, EConVarType type, std::any defaultValue, bool prot); - ~FakeConVar(); - - EConVarType GetType(); - void SetValue(std::any value); - std::any GetValue(); - std::string GetStringValue(); -}; - -bool FakeConvarExists(std::string name); -FakeConVar* GetFakeConvar(std::string name); -void DeleteFakeConvar(std::string name); -std::map FetchFakeConvars(); -void InsertFakeConvar(std::string name, EConVarType type, std::any defaultValue, bool prot); - -class ConvarQuery -{ -public: - void Initialize(); - void Destroy(); - - bool OnConVarQuery(const CNetMessagePB& msg); - - void QueryCvarClient(CPlayerSlot slot, std::string cvarName); -}; - -extern ConvarQuery* g_cvarQuery; - -#endif \ No newline at end of file diff --git a/src/engine/convars/fake_convars.cpp b/src/engine/convars/fake_convars.cpp deleted file mode 100644 index deb1061ed..000000000 --- a/src/engine/convars/fake_convars.cpp +++ /dev/null @@ -1,198 +0,0 @@ -#include "convars.h" -#include -#include "../gameevents/gameevents.h" - -static void convarsCallback(const CCommandContext& context, const CCommand& args); -std::set convarCreated; -std::map fakeConvars; - -bool FakeConvarExists(std::string name) -{ - return (fakeConvars.find(name) != fakeConvars.end()); -} - -FakeConVar* GetFakeConvar(std::string name) -{ - if (!FakeConvarExists(name)) return nullptr; - - return fakeConvars.at(name); -} - -void DeleteFakeConvar(std::string name) -{ - if (!FakeConvarExists(name)) return; - - auto cvar = GetFakeConvar(name); - if(cvar) delete cvar; - - fakeConvars.erase(name); -} - -std::map FetchFakeConvars() -{ - return fakeConvars; -} - -void InsertFakeConvar(std::string name, EConVarType type, std::any defaultValue, bool prot) -{ - if (FakeConvarExists(name)) return; - - fakeConvars.insert({ name, new FakeConVar(name, type, defaultValue, prot) }); -} - -FakeConVar::FakeConVar(std::string name, EConVarType type, std::any defaultValue, bool prot) -{ - if (convarCreated.find(name) == convarCreated.end()) - { - convarCreated.insert(name); - - m_cmd = new ConCommand(name.c_str(), convarsCallback, "Swiftly ConVar", FCVAR_LINKED_CONCOMMAND | FCVAR_SPONLY | (prot ? FCVAR_PROTECTED : FCVAR_NONE)); - } - - m_value = defaultValue; - m_type = type; - m_name = name; -} - -FakeConVar::~FakeConVar() -{ - delete m_cmd; -} - -EConVarType FakeConVar::GetType() -{ - return this->m_type; -} - -void FakeConVar::SetValue(std::any value) -{ - this->m_value = value; - - if (g_gameEventManager->FindListener(eventManager, "server_cvar")) { - IGameEvent* gEv = g_gameEventManager->CreateEvent("server_cvar"); - gEv->SetString("cvarname", this->m_name.c_str()); - gEv->SetString("cvarvalue", this->GetStringValue().c_str()); - - g_gameEventManager->FireEvent(gEv); - } -} - -std::any FakeConVar::GetValue() -{ - if (!this->m_value.has_value()) return nullptr; - - return this->m_value; -} - -std::string FakeConVar::GetStringValue() -{ - std::string value = ""; - - if (GetType() == EConVarType_Int16) - value = std::to_string(std::any_cast(GetValue())); - else if (GetType() == EConVarType_UInt16) - value = std::to_string(std::any_cast(GetValue())); - else if (GetType() == EConVarType_UInt32) - value = std::to_string(std::any_cast(GetValue())); - else if (GetType() == EConVarType_Int32) - value = std::to_string(std::any_cast(GetValue())); - else if (GetType() == EConVarType_UInt64) - value = std::to_string(std::any_cast(GetValue())); - else if (GetType() == EConVarType_Int64) - value = std::to_string(std::any_cast(GetValue())); - else if (GetType() == EConVarType_Bool) - value = (std::any_cast(GetValue()) ? "true" : "false"); - else if (GetType() == EConVarType_Float32) - value = std::to_string(std::any_cast(GetValue())); - else if (GetType() == EConVarType_Float64) - value = std::to_string(std::any_cast(GetValue())); - else if (GetType() == EConVarType_String) - value = std::any_cast(GetValue()); - else if (GetType() == EConVarType_Color) { - Color col = std::any_cast(GetValue()); - value = string_format("%d,%d,%d,%d", col.r(), col.g(), col.b(), col.a()); - } - else if (GetType() == EConVarType_Vector2) { - Vector2D vec = std::any_cast(GetValue()); - value = string_format("%f,%f", vec.x, vec.y); - } - else if (GetType() == EConVarType_Vector3) { - Vector vec = std::any_cast(GetValue()); - value = string_format("%f,%f,%f", vec.x, vec.y, vec.z); - } - else if (GetType() == EConVarType_Vector4) { - Vector4D vec = std::any_cast(GetValue()); - value = string_format("%f,%f,%f,%f", vec.x, vec.y, vec.z, vec.w); - } - else if (GetType() == EConVarType_Qangle) { - QAngle ang = std::any_cast(GetValue()); - value = string_format("%f,%f,%f", ang.x, ang.y, ang.z); - } - else { - value = "(null)"; - } - - return value; -} - -static void convarsCallback(const CCommandContext& context, const CCommand& args) -{ - CCommand tokenizedArgs; - tokenizedArgs.Tokenize(args.GetCommandString()); - - std::string cvar = tokenizedArgs[0]; - if (fakeConvars.find(cvar) == fakeConvars.end()) return; - - auto convar = fakeConvars.at(cvar); - - if (args.ArgC() < 2) { - PLUGIN_PRINTF("ConVar", "%s %s\n", cvar.c_str(), convar->GetStringValue().c_str()); - } - else { - if (convar->GetType() == EConVarType_Int16) - convar->SetValue(V_StringToInt16(tokenizedArgs[1], std::any_cast(convar->GetValue()))); - else if (convar->GetType() == EConVarType_UInt16) - convar->SetValue(V_StringToUint16(tokenizedArgs[1], std::any_cast(convar->GetValue()))); - else if (convar->GetType() == EConVarType_UInt32) - convar->SetValue(V_StringToUint32(tokenizedArgs[1], std::any_cast(convar->GetValue()))); - else if (convar->GetType() == EConVarType_Int32) - convar->SetValue(V_StringToInt32(tokenizedArgs[1], std::any_cast(convar->GetValue()))); - else if (convar->GetType() == EConVarType_UInt64) - convar->SetValue(V_StringToUint64(tokenizedArgs[1], std::any_cast(convar->GetValue()))); - else if (convar->GetType() == EConVarType_Int64) - convar->SetValue(V_StringToInt64(tokenizedArgs[1], std::any_cast(convar->GetValue()))); - else if (convar->GetType() == EConVarType_Bool) - convar->SetValue(V_StringToBool(tokenizedArgs[1], std::any_cast(convar->GetValue()))); - else if (convar->GetType() == EConVarType_Float32) - convar->SetValue(V_StringToFloat32(tokenizedArgs[1], std::any_cast(convar->GetValue()))); - else if (convar->GetType() == EConVarType_Float64) - convar->SetValue(V_StringToFloat64(tokenizedArgs[1], std::any_cast(convar->GetValue()))); - else if (convar->GetType() == EConVarType_String) - convar->SetValue(std::string(tokenizedArgs[1])); - else if (convar->GetType() == EConVarType_Color) { - Color col = std::any_cast(convar->GetValue()); - V_StringToColor(tokenizedArgs[1], col); - convar->SetValue(col); - } - else if (convar->GetType() == EConVarType_Vector2) { - Vector2D vec = std::any_cast(convar->GetValue()); - V_StringToVector2D(tokenizedArgs[1], vec); - convar->SetValue(vec); - } - else if (convar->GetType() == EConVarType_Vector3) { - Vector vec = std::any_cast(convar->GetValue()); - V_StringToVector(tokenizedArgs[1], vec); - convar->SetValue(vec); - } - else if (convar->GetType() == EConVarType_Vector4) { - Vector4D vec = std::any_cast(convar->GetValue()); - V_StringToVector4D(tokenizedArgs[1], vec); - convar->SetValue(vec); - } - else if (convar->GetType() == EConVarType_Qangle) { - QAngle ang = std::any_cast(convar->GetValue()); - V_StringToQAngle(tokenizedArgs[1], ang); - convar->SetValue(ang); - } - } -} \ No newline at end of file diff --git a/src/engine/convars/query.cpp b/src/engine/convars/query.cpp deleted file mode 100644 index 18e03db77..000000000 --- a/src/engine/convars/query.cpp +++ /dev/null @@ -1,102 +0,0 @@ -#include "convars.h" -#include "../../server/configuration/Configuration.h" -#include "../../sdk/entity/CRecipientFilters.h" -#include "../../../vendor/dynlib/module.h" -#include "../../sdk/entity/serversideclient.h" -#include "../../player/playermanager/PlayerManager.h" - -std::map languages = { - { "arabic", "ar" }, - { "bulgarian", "bg" }, - { "schinese", "zh-CN" }, - { "tchinese", "zh-TW" }, - { "czech", "cs" }, - { "danish", "da" }, - { "dutch", "nl" }, - { "english", "en" }, - { "finnish", "fi" }, - { "french", "fr" }, - { "german", "de" }, - { "greek", "el" }, - { "hungarian", "hu" }, - { "indonesian", "id" }, - { "italian", "it" }, - { "japanese", "ja" }, - { "koreana", "ko" }, - { "norwegian", "no" }, - { "polish", "pl" }, - { "portuguese", "pt" }, - { "brazilian", "pt-BR" }, - { "romanian", "ro" }, - { "russian", "ru" }, - { "spanish", "es" }, - { "latam", "es-419" }, - { "swedish", "sv" }, - { "thai", "th" }, - { "turkish", "tr" }, - { "ukrainian", "uk" }, - { "vietnamese", "vn" }, -}; - -void OnClientConvarQuery(int playerid, std::string convar_name, std::string convar_value); -SH_DECL_MANUALHOOK1(OnConVarQuery, 0, 0, 0, bool, const CNetMessagePB&); - -int OnConVarQueryID = -1; - -void ConvarQuery::Initialize() -{ - SH_MANUALHOOK_RECONFIGURE(OnConVarQuery, g_Offsets->GetOffset("CServerSideClient_OnConVarQuery"), 0, 0); - - DynLibUtils::CModule eng = DetermineModuleByLibrary("engine2"); - void* serverSideClientVTable = eng.GetVirtualTableByName("CServerSideClient"); - OnConVarQueryID = SH_ADD_MANUALDVPHOOK(OnConVarQuery, serverSideClientVTable, SH_MEMBER(this, &ConvarQuery::OnConVarQuery), true); -} - -void ConvarQuery::Destroy() -{ - if(OnConVarQueryID == -1) return; - - SH_REMOVE_HOOK_ID(OnConVarQueryID); -} - -bool ConvarQuery::OnConVarQuery(const CNetMessagePB& msg) -{ - auto client = META_IFACEPTR(CServerSideClient); - auto player = g_playerManager->GetPlayer(client->GetPlayerSlot()); - if(!player) RETURN_META_VALUE(MRES_IGNORED, true); - if(player->IsFakeClient()) RETURN_META_VALUE(MRES_IGNORED, true); - - if (msg.name() == "cl_language") { - if (languages.find(msg.value()) != languages.end()) { - player->language = languages.at(msg.value()); - } - } - - OnClientConvarQuery(player->GetSlot().Get(), msg.name(), msg.value()); - - RETURN_META_VALUE(MRES_IGNORED, true); -} - - -void ConvarQuery::QueryCvarClient(CPlayerSlot slot, std::string cvarName) -{ - auto pMsg = g_pNetworkMessages->FindNetworkMessagePartial("GetCvarValue"); - - auto msg = pMsg->AllocateMessage()->ToPB(); - msg->set_cvar_name(cvarName.c_str()); - - CSingleRecipientFilter filter(slot.Get()); - g_pGameEventSystem->PostEventAbstract(-1, false, &filter, pMsg, msg, 0); - - /* - for the god's sake, why on windows without memoverride it automatically collects this pointer and deletes it ???? - they have some special shananigans over here - always remember to not delete it on windows because you'll stay again 4 hrs to debug it - - i'll use dreamberd next time to use "const const const" which will affect all users of windows globally for this - so that they don't need to debug it like i did - */ - #ifndef _WIN32 - delete msg; - #endif -} \ No newline at end of file diff --git a/src/engine/convars/shared_convars.cpp b/src/engine/convars/shared_convars.cpp deleted file mode 100644 index e3549614e..000000000 --- a/src/engine/convars/shared_convars.cpp +++ /dev/null @@ -1,123 +0,0 @@ -#include "convars.h" - -ConVarRefAbstract FetchCVar(std::string cvarname) -{ - ConVarRefAbstract obj(cvarname.c_str()); - return obj; -} - -std::any FetchCVarValue(std::string cvarname) -{ - ConVarRefAbstract cvar = FetchCVar(cvarname); - CSplitScreenSlot server(0); - if (cvar.IsValidRef()) { - CVValue_t* v = cvar.GetConVarData()->Value(server); - if (cvar.GetType() == EConVarType_Int16) - { - int16_t val; - memcpy(&val, v, sizeof(val)); - return val; - } - else if (cvar.GetType() == EConVarType_UInt16) - { - uint16_t val; - memcpy(&val, v, sizeof(val)); - return val; - } - else if (cvar.GetType() == EConVarType_UInt32) - { - uint32_t val; - memcpy(&val, v, sizeof(val)); - return val; - } - else if (cvar.GetType() == EConVarType_Int32) - { - int32_t val; - memcpy(&val, v, sizeof(val)); - return val; - } - else if (cvar.GetType() == EConVarType_UInt64) - { - uint64_t val; - memcpy(&val, v, sizeof(val)); - return val; - } - else if (cvar.GetType() == EConVarType_Int64) - { - int64_t val; - memcpy(&val, v, sizeof(val)); - return val; - } - else if (cvar.GetType() == EConVarType_Bool) - { - bool val; - memcpy(&val, v, sizeof(val)); - return val; - } - else if (cvar.GetType() == EConVarType_Float32) - { - float val; - memcpy(&val, v, sizeof(val)); - return val; - } - else if (cvar.GetType() == EConVarType_Float64) - { - double val; - memcpy(&val, v, sizeof(val)); - return val; - } - else if (cvar.GetType() == EConVarType_String) - { - char* val; - memcpy(&val, v, sizeof(val)); - return val; - } - else if (cvar.GetType() == EConVarType_Color) - { - Color val; - memcpy(&val, v, sizeof(val)); - return val; - } - else if (cvar.GetType() == EConVarType_Vector2) - { - Vector2D val; - memcpy(&val, v, sizeof(val)); - return val; - } - else if (cvar.GetType() == EConVarType_Vector3) - { - Vector val; - memcpy(&val, v, sizeof(val)); - return val; - } - else if (cvar.GetType() == EConVarType_Vector4) - { - Vector4D val; - memcpy(&val, v, sizeof(val)); - return val; - } - else if (cvar.GetType() == EConVarType_Qangle) - { - QAngle val; - memcpy(&val, v, sizeof(val)); - return val; - } - else { - PRINTF("Unsupported ConVar type: %d. Returning null.\n", (int)cvar.GetType()); - return nullptr; - } - } - else if (FakeConvarExists(cvarname)) - return GetFakeConvar(cvarname)->GetValue(); - - return nullptr; -} - -EConVarType FetchCVarType(std::string cvarname) -{ - ConVarRefAbstract cvar = FetchCVar(cvarname); - - if (cvar.IsValidRef()) return cvar.GetType(); - else if (FakeConvarExists(cvarname)) return GetFakeConvar(cvarname)->GetType(); - else return EConVarType_Invalid; -} \ No newline at end of file diff --git a/src/engine/gameevents/gameevents.cpp b/src/engine/gameevents/gameevents.cpp deleted file mode 100644 index f82cecddb..000000000 --- a/src/engine/gameevents/gameevents.cpp +++ /dev/null @@ -1,200 +0,0 @@ -#include - -#include "gameevents.h" -#include "../../memory/hooks/FuncHook.h" -#include "../../plugins/core/scripting.h" -#include "../../plugins/PluginManager.h" -#include "../../player/playermanager/PlayerManager.h" -#include "../../vendor/dynlib/module.h" -#include "../vgui/VGUI.h" - -#include -#include -#include -#include - -#include -#include -#include - -extern std::map gameEventsRegister; - -SH_DECL_HOOK2(IGameEventManager2, FireEvent, SH_NOATTRIB, 0, bool, IGameEvent*, bool); -SH_DECL_HOOK2(IGameEventManager2, LoadEventsFromFile, SH_NOATTRIB, 0, int, const char*, bool); -int loadEventFromFileHookID = -1; - -std::stack dupEvents; - -void EventManager::Initialize() -{ - rapidjson::Document eventsFile; - eventsFile.Parse(Files::Read("addons/swiftly/gamedata/gameevents.json").c_str()); - if (eventsFile.HasParseError()) - return; - - if (!eventsFile.IsObject()) - return; - - for (auto it = eventsFile.MemberBegin(); it != eventsFile.MemberEnd(); ++it) - { - std::string eventRawName = it->name.GetString(); - std::string eventProcessedName = it->value.GetString(); - gameEventsRegister.insert({ eventRawName, eventProcessedName }); - } - - PRINTF("Succesfully loaded %lld Game Events from files.\n", gameEventsRegister.size()); - - DynLibUtils::CModule servermodule = DetermineModuleByLibrary("server"); - auto CGameEventManagerVTable = servermodule.GetVirtualTableByName("CGameEventManager"); - loadEventFromFileHookID = SH_ADD_DVPHOOK(IGameEventManager2, LoadEventsFromFile, (IGameEventManager2*)((void*)CGameEventManagerVTable), SH_MEMBER(this, &EventManager::LoadEventsFromFile), false); -} - -void EventManager::RegisterGameEvents() -{ - PLUGIN_PRINT("Game Events", "Loading game events...\n"); - for (auto it = enqueueListenEvents.begin(); it != enqueueListenEvents.end(); ++it) - { - std::string ev = *(it); - if (!g_gameEventManager->FindListener(this, ev.c_str())) - g_gameEventManager->AddListener(this, ev.c_str(), true); - } - - if (!g_gameEventManager->FindListener(this, "player_spawn")) - g_gameEventManager->AddListener(this, "player_spawn", true); - - PLUGIN_PRINT("Game Events", "Game events have been succesfully loaded.\n"); - loadedGameEvents = true; -} - -void EventManager::RegisterGameEventListen(std::string ev_name) -{ - std::string raw_ev = ""; - - for (auto it = gameEventsRegister.begin(); it != gameEventsRegister.end(); ++it) { - if (it->second == ev_name) { - raw_ev = it->first; - break; - } - } - - if (raw_ev == "") return; - - if (!loadedGameEvents) { - if (enqueueListenEvents.find(raw_ev) == enqueueListenEvents.end()) enqueueListenEvents.insert(raw_ev); - } - else { - if (!g_gameEventManager->FindListener(this, raw_ev.c_str())) - g_gameEventManager->AddListener(this, raw_ev.c_str(), true); - } -} - -int EventManager::LoadEventsFromFile(const char* filePath, bool searchAll) -{ - if (!g_gameEventManager) { - g_gameEventManager = META_IFACEPTR(IGameEventManager2); - - SH_ADD_HOOK(IGameEventManager2, FireEvent, g_gameEventManager, SH_MEMBER(this, &EventManager::OnFireEvent), false); - SH_ADD_HOOK(IGameEventManager2, FireEvent, g_gameEventManager, SH_MEMBER(this, &EventManager::OnPostFireEvent), true); - } - - RETURN_META_VALUE(MRES_IGNORED, 0); -} - -void EventManager::Shutdown() -{ - SH_REMOVE_HOOK(IGameEventManager2, FireEvent, g_gameEventManager, SH_MEMBER(this, &EventManager::OnFireEvent), false); - SH_REMOVE_HOOK(IGameEventManager2, FireEvent, g_gameEventManager, SH_MEMBER(this, &EventManager::OnPostFireEvent), true); - SH_REMOVE_HOOK_ID(loadEventFromFileHookID); - - g_gameEventManager->RemoveListener(this); -} - -void EventManager::FireGameEvent(IGameEvent* pEvent) {} - -bool EventManager::OnFireEvent(IGameEvent* pEvent, bool bDontBroadcast) -{ - if (!pEvent) - { - RETURN_META_VALUE(MRES_IGNORED, false); - } - - std::string eventName = pEvent->GetName(); - - bool dontBroadcast = bDontBroadcast; - - std::string prettyEventName = gameEventsRegister[eventName]; - if (!prettyEventName.empty()) - { - PluginEvent* event = new PluginEvent("core", pEvent, nullptr); - event->SetNoBroadcast(dontBroadcast); - - EventResult result = g_pluginManager->ExecuteEvent("core", prettyEventName, encoders::msgpack::SerializeToString({}), event); - - dontBroadcast = event->GetNoBroadcast(); - - delete event; - - if (prettyEventName == "OnPlayerSpawn") - { - auto slot = pEvent->GetPlayerSlot("userid"); - Player* player = g_playerManager->GetPlayer(slot); - if (player) { - player->SetFirstSpawn(false); - player->EnsureCustomView(1); - } - } - if (result != EventResult::Continue) - { - dupEvents.push(g_gameEventManager->DuplicateEvent(pEvent)); - g_gameEventManager->FreeEvent(pEvent); - RETURN_META_VALUE(MRES_SUPERCEDE, false); - } - } - - dupEvents.push(g_gameEventManager->DuplicateEvent(pEvent)); - - if(dontBroadcast != bDontBroadcast) { - RETURN_META_VALUE_NEWPARAMS(MRES_IGNORED, true, &IGameEventManager2::FireEvent, (pEvent, dontBroadcast)); - } - - RETURN_META_VALUE(MRES_IGNORED, true); -} - -void RegisterTimeout(int64_t delay, std::function cb); - -bool EventManager::OnPostFireEvent(IGameEvent* pEvent, bool bDontBroadcast) -{ - if (!pEvent) - { - RETURN_META_VALUE(MRES_IGNORED, false); - } - - IGameEvent* realGameEvent = dupEvents.top(); - - std::string eventName = realGameEvent->GetName(); - - std::string prettyEventName = gameEventsRegister[eventName]; - - if(prettyEventName == "OnRoundStart") { - RegisterTimeout(100, []() -> void { - g_pVGUI->RegenerateScreenTexts(); - }); - } - - if (!prettyEventName.empty()) - { - PluginEvent* event = new PluginEvent("core", realGameEvent, nullptr); - EventResult result = g_pluginManager->ExecuteEvent("core", string_format("OnPost%s", prettyEventName.substr(2).c_str()), encoders::msgpack::SerializeToString({}), event); - delete event; - - if (result != EventResult::Continue) { - g_gameEventManager->FreeEvent(realGameEvent); - dupEvents.pop(); - RETURN_META_VALUE(MRES_SUPERCEDE, false); - } - } - - g_gameEventManager->FreeEvent(realGameEvent); - dupEvents.pop(); - RETURN_META_VALUE(MRES_IGNORED, true); -} \ No newline at end of file diff --git a/src/engine/gameevents/gameevents.h b/src/engine/gameevents/gameevents.h deleted file mode 100644 index 039e1b98b..000000000 --- a/src/engine/gameevents/gameevents.h +++ /dev/null @@ -1,34 +0,0 @@ -#ifndef _gameevents_h -#define _gameevents_h - -#include "../../common.h" -#include "../../entrypoint.h" -#include -#include - -typedef void (*FnEventListenerCallback)(IGameEvent* event); - -class EventManager : public IGameEventListener2 -{ -private: - std::set enqueueListenEvents; - bool loadedGameEvents = false; -public: - EventManager() = default; - ~EventManager() = default; - - void Initialize(); - void Shutdown(); - void RegisterGameEvents(); - void RegisterGameEventListen(std::string ev_name); - - void FireGameEvent(IGameEvent* pEvent) override; - bool OnFireEvent(IGameEvent* pEvent, bool bDontBroadcast); - bool OnPostFireEvent(IGameEvent* pEvent, bool bDontBroadcast); - - int LoadEventsFromFile(const char* filePath, bool searchAll); -}; - -extern EventManager* eventManager; - -#endif \ No newline at end of file diff --git a/src/engine/vgui/ScreenText.cpp b/src/engine/vgui/ScreenText.cpp deleted file mode 100644 index b2a900638..000000000 --- a/src/engine/vgui/ScreenText.cpp +++ /dev/null @@ -1,176 +0,0 @@ -#include "ScreenText.h" - -extern std::map entKeyVal; - -ScreenText::ScreenText() {} - -ScreenText::~ScreenText() -{ - if (pScreenEntity.IsValid()) { - pScreenEntity->SetText(""); - pScreenEntity->m_bEnabled = false; - pScreenEntity->m_bDrawBackground = false; - } -} - -void ScreenText::Create(Color color, std::string font, int size, bool drawBackground, bool isMenu) -{ - m_col = color; - m_font = font; - m_size = size; - m_drawBackground = drawBackground; - m_isMenu = isMenu; - - pScreenEntity.Set((CPointWorldText*)(CreateEntityByName("point_worldtext").GetPtr())); - if (!pScreenEntity) return; - - CEntityKeyValues* pMenuKV = new CEntityKeyValues(); - - if(entKeyVal.find(pScreenEntity.Get()) != entKeyVal.end()) - delete entKeyVal[pScreenEntity.Get()]; - - entKeyVal[pScreenEntity.Get()] = pMenuKV; - - pMenuKV->SetBool("enabled", true); - pMenuKV->SetFloat("world_units_per_pixel", (0.25 / 1050) * size); - pMenuKV->SetInt("justify_horizontal", 0); - pMenuKV->SetInt("justify_vertical", 2); - pMenuKV->SetInt("reorient_mode", 0); - pMenuKV->SetInt("fullbright", 1); - pMenuKV->SetFloat("font_size", size); - pMenuKV->SetString("font_name", font.c_str()); - pMenuKV->SetColor("color", color); - - if(drawBackground) { - pMenuKV->SetBool("draw_background", true); - - if(isMenu) { - pMenuKV->SetFloat("background_border_width", 0.2); - pMenuKV->SetFloat("background_border_height", 0.15); - } else { - pMenuKV->SetFloat("background_border_width", g_Config->FetchValue("core.vgui.textBackground.paddingX")); - pMenuKV->SetFloat("background_border_height", g_Config->FetchValue("core.vgui.textBackground.paddingY")); - } - - pMenuKV->SetFloat("background_away_units", 0.04); - pMenuKV->SetFloat("background_world_to_uv", 0.05); - } - - pScreenEntity->DispatchSpawn(pMenuKV); -} - -void ScreenText::SetupViewForPlayer(Player* player) -{ - m_player = player; - - if (!pScreenEntity) return; - if (!player) return; - if (player->IsFakeClient()) return; - - CBaseViewModel* pViewModel = player->EnsureCustomView(1); - if (!pViewModel) return; - - pScreenEntity->SetParent(pViewModel); - pScreenEntity->m_hOwnerEntity(pViewModel->GetRefEHandle()); -} - -void ScreenText::SetText(std::string text) -{ - m_text = text.c_str(); - - if (!pScreenEntity) return; - - pScreenEntity->SetText(m_text.c_str()); - pScreenEntity->Enable(); -} - -void ScreenText::SetPosition(float posX, float posY) -{ - m_posX = posX; - m_posY = posY; - - if (!m_player) return; - if (m_player->IsFakeClient()) return; - if(!pScreenEntity) return; - - CCSPlayerPawn* pawn = m_player->GetPlayerPawn(); - if (!pawn) return; - if (pawn->m_lifeState() == 2) { - if (m_player->GetPlayerController()->m_bControllingBot()) { - return; - } - else { - auto pPawn = m_player->GetPawn(); - if (!pPawn) return; - - auto observerPawn = pPawn->m_pObserverServices->m_hObserverTarget(); - if (!observerPawn) return; - - auto observerController = ((CCSPlayerPawn*)(observerPawn.Get()))->m_hOriginalController(); - if (!observerController) return; - - auto observer = g_playerManager->GetPlayer(observerController->entindex() - 1); - if (!observer) return; - pawn = observer->GetPlayerPawn(); - } - } - if (!pawn) return; - - QAngle eyeAngles = pawn->m_angEyeAngles(); - Vector fwd, right, up; - AngleVectors(eyeAngles, &fwd, &right, &up); - - Vector eyePos(0.0, 0.0, 0.0); - eyePos += fwd * 7; - eyePos += right * (-9.2 + (posX * 18.35)); - eyePos += up * (-4.9 + (posY * 10.13)); - - QAngle ang(0, eyeAngles.y + 270, 90 - eyeAngles.x); - - eyePos += pawn->m_CBodyComponent->m_pSceneNode->m_vecAbsOrigin() + Vector(0, 0, pawn->m_pCameraServices->m_flOldPlayerViewOffsetZ()); - - pScreenEntity->Teleport(&eyePos, &ang, nullptr); -} - -bool ScreenText::IsValidEntity() -{ - return pScreenEntity.IsValid(); -} - -void ScreenText::RegenerateText(bool recreate) -{ - if (recreate) { - if (pScreenEntity.IsValid()) pScreenEntity->Despawn(); - - Create(m_col, m_font, m_size, m_drawBackground, m_isMenu); - SetupViewForPlayer(m_player); - SetText(m_text); - SetPosition(m_posX, m_posY); - } - else { - SetupViewForPlayer(m_player); - SetPosition(m_posX, m_posY); - } -} - -Player* ScreenText::GetPlayer() -{ - return m_player; -} - -int ScreenText::GetEntityIndex() -{ - if (!pScreenEntity) return 0; - - return pScreenEntity->GetEntityIndex().Get(); -} - -bool ScreenText::IsRenderingTo(CHandle renderingTo) -{ - return renderingTo == pRenderingTo; -} - -void ScreenText::SetRenderingTo(CBaseEntity* ent) -{ - pRenderingTo.Set(ent); -} \ No newline at end of file diff --git a/src/engine/vgui/ScreenText.h b/src/engine/vgui/ScreenText.h deleted file mode 100644 index 488095516..000000000 --- a/src/engine/vgui/ScreenText.h +++ /dev/null @@ -1,45 +0,0 @@ -#ifndef _engine_vgui_screentext_h -#define _engine_vgui_screentext_h - -#include -#include "../../plugins/core/scripting.h" -#include "../../player/playermanager/PlayerManager.h" - -#include -#include "../../sdk/entity/CPointWorldText.h" -#include "../../sdk/entity/CBaseViewModel.h" - -class ScreenText -{ -private: - CHandle pScreenEntity; - CHandle pRenderingTo; - - Color m_col; - std::string m_font; - int m_size; - Player* m_player; - float m_posX; - float m_posY; - std::string m_text; - bool m_drawBackground; - bool m_isMenu; - -public: - ScreenText(); - ~ScreenText(); - - void Create(Color color, std::string font = "Sans Serif", int size = 35, bool drawBackground = false, bool isMenu = false); - void SetupViewForPlayer(Player* player); - void SetText(std::string text); - void SetPosition(float posX = 0.0, float posY = 0.0); - void SetRenderingTo(CBaseEntity* ent); - void RegenerateText(bool recreate = true); - - bool IsValidEntity(); - Player* GetPlayer(); - int GetEntityIndex(); - bool IsRenderingTo(CHandle renderingTo); -}; - -#endif \ No newline at end of file diff --git a/src/engine/vgui/VGUI.cpp b/src/engine/vgui/VGUI.cpp deleted file mode 100644 index 247cf982e..000000000 --- a/src/engine/vgui/VGUI.cpp +++ /dev/null @@ -1,102 +0,0 @@ -/*************************************************************************************** - * Credits for VGUI - * @electronix - Method for static rendering of a text using predicted_viewmodel - * @Nyano1337 - Methods for background and text spawning in the world + attachment - * - https://github.com/CS2Surf-CN/Timer - * @Kxnrl - FyS Server Menu Background Color -****************************************************************************************/ - -#include "VGUI.h" - -VGUI::~VGUI() -{ - for(auto it = screenTexts.begin(); it != screenTexts.end(); ++it) - delete it->second; -} - -uint64_t VGUI::RegisterScreenText() -{ - internalScreenTextID++; - ScreenText* txt = new ScreenText(); - screenTexts.insert({internalScreenTextID, txt}); - - return internalScreenTextID; -} - -ScreenText* VGUI::GetScreenText(uint64_t id) -{ - if(screenTexts.find(id) == screenTexts.end()) return nullptr; - - return screenTexts[id]; -} - -void VGUI::DeleteScreenText(uint64_t id) -{ - if(screenTexts.find(id) == screenTexts.end()) return; - - ScreenText* txt = screenTexts[id]; - delete txt; - - screenTexts.erase(id); -} - -void VGUI::RegenerateScreenTexts() -{ - for(auto it = screenTexts.begin(); it != screenTexts.end(); ++it) { - it->second->RegenerateText(); - } -} - -void VGUI::FilterRenderingItems(Player* player, CCheckTransmitInfo* pInfo) -{ - for(auto it = screenTexts.begin(); it != screenTexts.end(); ++it) { - if(it->second->GetPlayer() != player) { - int entIndex = it->second->GetEntityIndex(); - pInfo->m_pTransmitEntity->Clear(entIndex); - if(pInfo->m_pTransmitAlways->Get(entIndex)) - pInfo->m_pTransmitAlways->Clear(entIndex); - } - } -} - -void VGUI::CheckRenderForPlayer(int pid, Player* player, CHandle specView) -{ - bool shouldRegenerate = false; - if(((rendersToSpectator & (1ULL << pid)) != 0) && !specView) { - rendersToSpectator &= ~(1ULL << pid); - shouldRegenerate = true; - } else if(((rendersToSpectator & (1ULL << pid)) == 0) && specView.IsValid()) { - rendersToSpectator |= (1ULL << pid); - shouldRegenerate = true; - } - - if(shouldRegenerate) { - for(auto it = screenTexts.begin(); it != screenTexts.end(); ++it) { - if(it->second->GetPlayer() == player) { - it->second->RegenerateText(false); - it->second->SetRenderingTo(specView.Get()); - } - } - } else { - for(auto it = screenTexts.begin(); it != screenTexts.end(); ++it) { - if(it->second->GetPlayer() == player && !it->second->IsRenderingTo(specView)) { - it->second->RegenerateText(false); - it->second->SetRenderingTo(specView.Get()); - } - } - } -} - -void VGUI::Unregister(Player* player) -{ - std::vector eraseIDs; - for(auto it = screenTexts.begin(); it != screenTexts.end(); ++it) { - if(it->second->GetPlayer() == player) { - delete it->second; - eraseIDs.push_back(it->first); - } - } - - for(auto id : eraseIDs) - screenTexts.erase(id); -} \ No newline at end of file diff --git a/src/engine/vgui/VGUI.h b/src/engine/vgui/VGUI.h deleted file mode 100644 index 2611b68f5..000000000 --- a/src/engine/vgui/VGUI.h +++ /dev/null @@ -1,41 +0,0 @@ -/*************************************************************************************** - * Credits for VGUI - * @electronix - Method for static rendering of a text using predicted_viewmodel - * @Nyano1337 - Methods for background and text spawning in the world + attachment - * - https://github.com/CS2Surf-CN/Timer - * @Kxnrl - FyS Server Menu Background Color -****************************************************************************************/ - -#ifndef _engine_vgui_h -#define _engine_vgui_h - -#include "ScreenText.h" -#include -#include - -class VGUI -{ -private: - uint64_t internalScreenTextID = 0; - std::map screenTexts; - uint64_t rendersToSpectator = 0; - -public: - VGUI() = default; - ~VGUI(); - - uint64_t RegisterScreenText(); - ScreenText* GetScreenText(uint64_t id); - void DeleteScreenText(uint64_t id); - - void RegenerateScreenTexts(); - - void FilterRenderingItems(Player* player, CCheckTransmitInfo* pInfo); - - void CheckRenderForPlayer(int pid, Player* player, CHandle specView); - void Unregister(Player* player); -}; - -extern VGUI* g_pVGUI; - -#endif \ No newline at end of file diff --git a/src/engine/voicemanager/VoiceManager.cpp b/src/engine/voicemanager/VoiceManager.cpp deleted file mode 100644 index d438a9986..000000000 --- a/src/engine/voicemanager/VoiceManager.cpp +++ /dev/null @@ -1,94 +0,0 @@ -/****************************************************************** - * - * This feature is inspired from CounterStrikeSharp. - * You can find the source code used by us in the following files: - * - * https://github.com/roflmuffin/CounterStrikeSharp/blob/a87bd25b48ff1407a71cfdce3222f5f55c8a2e0b/src/core/managers/voice_manager.h#L26 - * https://github.com/roflmuffin/CounterStrikeSharp/blob/a87bd25b48ff1407a71cfdce3222f5f55c8a2e0b/src/core/managers/voice_manager.cpp#L30 - * - ******************************************************************/ - -#include "VoiceManager.h" -#include "../../player/playermanager/PlayerManager.h" -#include - -SH_DECL_EXTERN3(IVEngineServer2, SetClientListening, SH_NOATTRIB, 0, bool, CPlayerSlot, CPlayerSlot, bool); -SH_DECL_EXTERN2_void(IServerGameClients, ClientCommand, SH_NOATTRIB, 0, CPlayerSlot, const CCommand&); - -void VoiceManager::OnAllInitialized() -{ - SH_ADD_HOOK(IVEngineServer2, SetClientListening, engine, SH_MEMBER(this, &VoiceManager::SetClientListening), false); - SH_ADD_HOOK_MEMFUNC(IServerGameClients, ClientCommand, gameclients, this, &VoiceManager::OnClientCommand, false); -} - -void VoiceManager::OnShutdown() -{ - SH_REMOVE_HOOK(IVEngineServer2, SetClientListening, engine, SH_MEMBER(this, &VoiceManager::SetClientListening), false); - SH_REMOVE_HOOK_MEMFUNC(IServerGameClients, ClientCommand, gameclients, this, &VoiceManager::OnClientCommand, false); -} - -bool VoiceManager::SetClientListening(CPlayerSlot iReceiver, CPlayerSlot iSender, bool bListen) -{ - Player* receiver = g_playerManager->GetPlayer(iReceiver); - if (!receiver) - RETURN_META_VALUE(MRES_IGNORED, bListen); - - Player* sender = g_playerManager->GetPlayer(iSender); - if (!sender) - RETURN_META_VALUE(MRES_IGNORED, bListen); - - auto listenOverride = receiver->GetListen(iSender); - auto senderFlags = sender->GetVoiceFlags(); - auto receiverFlags = receiver->GetVoiceFlags(); - - if (receiver->m_selfMutes->Get(iSender.Get())) - { - RETURN_META_VALUE_NEWPARAMS(MRES_IGNORED, bListen, &IVEngineServer2::SetClientListening, (iReceiver, iSender, false)); - } - - if (senderFlags & Speak_Muted) - { - RETURN_META_VALUE_NEWPARAMS(MRES_IGNORED, bListen, &IVEngineServer2::SetClientListening, (iReceiver, iSender, false)); - } - - if (listenOverride == Listen_Mute) - { - RETURN_META_VALUE_NEWPARAMS(MRES_IGNORED, bListen, &IVEngineServer2::SetClientListening, (iReceiver, iSender, false)); - } - else if (listenOverride == Listen_Hear) - { - RETURN_META_VALUE_NEWPARAMS(MRES_IGNORED, bListen, &IVEngineServer2::SetClientListening, (iReceiver, iSender, true)); - } - - if ((senderFlags & Speak_All) || (receiverFlags & Speak_ListenAll)) - { - RETURN_META_VALUE_NEWPARAMS(MRES_IGNORED, bListen, &IVEngineServer2::SetClientListening, (iReceiver, iSender, true)); - } - - if ((senderFlags & Speak_Team) || (receiverFlags & Speak_ListenTeam)) - { - auto senderController = sender->GetPlayerController(); - auto receiverController = receiver->GetPlayerController(); - if (!senderController || !receiverController) - RETURN_META_VALUE(MRES_IGNORED, bListen); - - RETURN_META_VALUE_NEWPARAMS(MRES_IGNORED, bListen, &IVEngineServer2::SetClientListening, - (iReceiver, iSender, senderController->m_iTeamNum() == receiverController->m_iTeamNum())); - } - - RETURN_META_VALUE(MRES_IGNORED, bListen); -} - -void VoiceManager::OnClientCommand(CPlayerSlot slot, const CCommand& args) -{ - Player* player = g_playerManager->GetPlayer(slot); - if (!player) - return; - - if (args.ArgC() > 1 && std::string(args.Arg(0)) == "vban") - { - uint32_t mask = 0; - sscanf(args.Arg(1), "%x", &mask); - player->m_selfMutes->SetDWord(0, mask); - } -} \ No newline at end of file diff --git a/src/engine/voicemanager/VoiceManager.h b/src/engine/voicemanager/VoiceManager.h deleted file mode 100644 index c8c0dcba5..000000000 --- a/src/engine/voicemanager/VoiceManager.h +++ /dev/null @@ -1,31 +0,0 @@ -/****************************************************************** - * - * This feature is inspired from CounterStrikeSharp. - * You can find the source code used by us in the following files: - * - * https://github.com/roflmuffin/CounterStrikeSharp/blob/a87bd25b48ff1407a71cfdce3222f5f55c8a2e0b/src/core/managers/voice_manager.h#L26 - * https://github.com/roflmuffin/CounterStrikeSharp/blob/a87bd25b48ff1407a71cfdce3222f5f55c8a2e0b/src/core/managers/voice_manager.cpp#L30 - * - ******************************************************************/ - -#ifndef _voicemanager_h -#define _voicemanager_h - -#include "../../entrypoint.h" -#include "../../common.h" - -class VoiceManager -{ -public: - VoiceManager() = default; - ~VoiceManager() = default; - - void OnAllInitialized(); - void OnShutdown(); - bool SetClientListening(CPlayerSlot iReceiver, CPlayerSlot iSender, bool bListen); - void OnClientCommand(CPlayerSlot slot, const CCommand &args); -}; - -extern VoiceManager g_voiceManager; - -#endif \ No newline at end of file diff --git a/src/entitysystem/entities/entitysystem.cpp b/src/entitysystem/entities/entitysystem.cpp deleted file mode 100644 index 4406627e0..000000000 --- a/src/entitysystem/entities/entitysystem.cpp +++ /dev/null @@ -1,11 +0,0 @@ -#include "entitysystem.h" - -CGameEntitySystem* GameEntitySystem() -{ - return g_pGameEntitySystem; -} - -EXT_API void* swiftly_GameEntitySystem() -{ - return (void*)GameEntitySystem(); -} \ No newline at end of file diff --git a/src/entitysystem/entities/entitysystem.h b/src/entitysystem/entities/entitysystem.h deleted file mode 100644 index 23d9165ad..000000000 --- a/src/entitysystem/entities/entitysystem.h +++ /dev/null @@ -1,17 +0,0 @@ -#ifndef _entity_system_h -#define _entity_system_h - -#include "../../entrypoint.h" -#include "../../memory/signatures/Offsets.h" -#include - -class CGameResourceService -{ -public: - CGameEntitySystem* GetGameEntitySystem() - { - return *reinterpret_cast((uintptr_t)(this) + g_Offsets->GetOffset("GameEntitySystem")); - } -}; - -#endif \ No newline at end of file diff --git a/src/entitysystem/entities/listener.cpp b/src/entitysystem/entities/listener.cpp deleted file mode 100644 index 128f9e8d2..000000000 --- a/src/entitysystem/entities/listener.cpp +++ /dev/null @@ -1,68 +0,0 @@ -#include "listener.h" - -PluginEvent* pEvent = nullptr; -CEntityListener g_entityListener; - -std::map entKeyVal; - -void EntityListener::Initialize() -{ - SH_ADD_HOOK_MEMFUNC(INetworkServerService, StartupServer, g_pNetworkServerService, this, &EntityListener::StartupServer, true); -} - -void EntityListener::Destroy() -{ - SH_REMOVE_HOOK_MEMFUNC(INetworkServerService, StartupServer, g_pNetworkServerService, this, &EntityListener::StartupServer, true); - - g_pGameEntitySystem->RemoveListenerEntity(&g_entityListener); -} - -bool bDone = false; -void EntityListener::StartupServer(const GameSessionConfiguration_t& config, ISource2WorldSession*, const char*) -{ - if (bDone) return; - - g_pGameEntitySystem = ((CGameResourceService*)g_pGameResourceService)->GetGameEntitySystem(); - g_pEntitySystem = g_pGameEntitySystem; - - g_pGameEntitySystem->AddListenerEntity(&g_entityListener); - - bDone = true; -} - -void CEntityListener::OnEntitySpawned(CEntityInstance* pEntity) -{ - if (!pEvent) pEvent = new PluginEvent("core", nullptr, nullptr); - g_pluginManager->ExecuteEvent("core", "OnEntitySpawned", encoders::msgpack::SerializeToString({ string_format("%p", (void*)pEntity), "CEntityInstance" }), pEvent); -} - -void CEntityListener::OnEntityParentChanged(CEntityInstance* pEntity, CEntityInstance* pNewParent) -{ -} - -void EntityAllowHammerID(CEntityInstance* pEntity) -{ - Plat_WriteMemory((*(void***)pEntity)[g_Offsets->GetOffset("GetHammerUniqueID")], (uint8_t*)"\xB0\x01", 2); -} - -void CEntityListener::OnEntityCreated(CEntityInstance* pEntity) -{ - ExecuteOnce(EntityAllowHammerID(pEntity)); - - if (!pEvent) pEvent = new PluginEvent("core", nullptr, nullptr); - g_pluginManager->ExecuteEvent("core", "OnEntityCreated", encoders::msgpack::SerializeToString({ string_format("%p", (void*)pEntity), "CEntityInstance" }), pEvent); - - if (std::string(pEntity->GetClassname()) == "cs_gamerules") - gameRules = ((CCSGameRulesProxy*)pEntity)->m_pGameRules; -} - -void CEntityListener::OnEntityDeleted(CEntityInstance* pEntity) -{ - if (!pEvent) pEvent = new PluginEvent("core", nullptr, nullptr); - g_pluginManager->ExecuteEvent("core", "OnEntityDeleted", encoders::msgpack::SerializeToString({ string_format("%p", (void*)pEntity), "CEntityInstance" }), pEvent); - - if(entKeyVal.find(pEntity) != entKeyVal.end()) { - delete entKeyVal[pEntity]; - entKeyVal.erase(pEntity); - } -} \ No newline at end of file diff --git a/src/entitysystem/entities/listener.h b/src/entitysystem/entities/listener.h deleted file mode 100644 index 11ee3026d..000000000 --- a/src/entitysystem/entities/listener.h +++ /dev/null @@ -1,20 +0,0 @@ -#ifndef _entity_listener_h -#define _entity_listener_h - -#include "../../entrypoint.h" -#include "entitysystem.h" -#include "../../plugins/core/scripting.h" -#include "../../sdk/entity/CGameRules.h" - -SH_DECL_EXTERN3_void(INetworkServerService, StartupServer, SH_NOATTRIB, 0, const GameSessionConfiguration_t&, ISource2WorldSession*, const char*); - -class EntityListener -{ -public: - void Initialize(); - void Destroy(); - - void StartupServer(const GameSessionConfiguration_t& config, ISource2WorldSession*, const char*); -}; - -#endif \ No newline at end of file diff --git a/src/entitysystem/precacher/game_system.cpp b/src/entitysystem/precacher/game_system.cpp deleted file mode 100644 index f92489880..000000000 --- a/src/entitysystem/precacher/game_system.cpp +++ /dev/null @@ -1,49 +0,0 @@ -/** - * ============================================================================= - * CS2Fixes - * Copyright (C) 2023-2024 Source2ZE - * ============================================================================= - * - * This program is free software; you can redistribute it and/or modify it under - * the terms of the GNU General Public License, version 3.0, as published by the - * Free Software Foundation. - * - * This program is distributed in the hope that it will be useful, but WITHOUT - * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS - * FOR A PARTICULAR PURPOSE. See the GNU General Public License for more - * details. - * - * You should have received a copy of the GNU General Public License along with - * this program. If not, see . - */ - -#include "game_system.h" -#include "precacher.h" - -CBaseGameSystemFactory** CBaseGameSystemFactory::sm_pFirst = nullptr; - -CGameSystem g_GameSystem; -IGameSystemFactory* CGameSystem::sm_Factory = nullptr; - -bool InitGameSystem() -{ - uint8_t* ptr = ((uint8_t*)g_Signatures->FetchRawSignature("IGameSystem_InitAllSystems_pFirst")) + 3; - if(!ptr) return false; - - uint32_t offset = *(uint32*)ptr; - - ptr += 4; - - CBaseGameSystemFactory::sm_pFirst = (CBaseGameSystemFactory**)(ptr + offset); - - CGameSystem::sm_Factory = new CGameSystemStaticFactory("Swiftly_GameSystem", &g_GameSystem); - - return true; -} - -GS_EVENT_MEMBER(CGameSystem, BuildGameSessionManifest) -{ - IEntityResourceManifest* pResManifest = msg->m_pResourceManifest; - - g_precacher->CacheItems(pResManifest); -} \ No newline at end of file diff --git a/src/entitysystem/precacher/game_system.h b/src/entitysystem/precacher/game_system.h deleted file mode 100644 index 8df342714..000000000 --- a/src/entitysystem/precacher/game_system.h +++ /dev/null @@ -1,46 +0,0 @@ -/** - * ============================================================================= - * CS2Fixes - * Copyright (C) 2023-2024 Source2ZE - * ============================================================================= - * - * This program is free software; you can redistribute it and/or modify it under - * the terms of the GNU General Public License, version 3.0, as published by the - * Free Software Foundation. - * - * This program is distributed in the hope that it will be useful, but WITHOUT - * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS - * FOR A PARTICULAR PURPOSE. See the GNU General Public License for more - * details. - * - * You should have received a copy of the GNU General Public License along with - * this program. If not, see . - */ - -#include -#include - -#include "../../memory/signatures/Signatures.h" - -bool InitGameSystem(); - -class CGameSystem : public CBaseGameSystem -{ -public: - GS_EVENT(BuildGameSessionManifest); - - void Shutdown() override - { - delete sm_Factory; - } - - void SetGameSystemGlobalPtrs(void* pValue) override - { - if (sm_Factory) - sm_Factory->SetGlobalPtr(pValue); - } - - bool DoesGameSystemReallocate() override { return sm_Factory->ShouldAutoAdd(); } - - static IGameSystemFactory* sm_Factory; -}; \ No newline at end of file diff --git a/src/entitysystem/precacher/precacher.cpp b/src/entitysystem/precacher/precacher.cpp deleted file mode 100644 index 970ead2d3..000000000 --- a/src/entitysystem/precacher/precacher.cpp +++ /dev/null @@ -1,33 +0,0 @@ -#include "precacher.h" -#include "../../memory/signatures/Signatures.h" -#include "../../common.h" -#include "../../entrypoint.h" -#include "../../memory/hooks/FuncHook.h" -#include "game_system.h" -#include "../../utils/virtual.h" - -#include - -void Precacher::AddItem(std::string model) -{ - if (this->cacheItems.find(model) != this->cacheItems.end()) - return; - if (this->precachedItems.find(model) != this->precachedItems.end()) - return; - if (model.size() <= 0) - return; - - this->cacheItems.insert(model); -} - -void Precacher::CacheItems(IEntityResourceManifest* manifest) -{ - int addResourceOffset = g_Offsets->GetOffset("CEntityResourceManifest_AddResource"); - for (auto it = this->cacheItems.begin(); it != this->cacheItems.end(); ++it) - { - std::string model = *it; - CALL_VIRTUAL(void, addResourceOffset, manifest, model.c_str()); - this->precachedItems.insert(model); - PLUGIN_PRINTF("Precacher", "Precached '%s'.\n", model.c_str()); - } -} \ No newline at end of file diff --git a/src/entitysystem/precacher/precacher.h b/src/entitysystem/precacher/precacher.h deleted file mode 100644 index 8f95d3702..000000000 --- a/src/entitysystem/precacher/precacher.h +++ /dev/null @@ -1,33 +0,0 @@ -#ifndef _precacher_h -#define _precacher_h - -#include -#include -#include -#include - -class IEntityResourceManifest; - -class Precacher -{ -private: - int64_t precacheContext = 0; - std::set cacheItems; - std::set precachedItems; - -public: - Precacher(){}; - - void AddItem(std::string model); - - bool HasModelInList(std::string model) - { - return (this->precachedItems.find(model) != this->precachedItems.end()); - } - - void CacheItems(IEntityResourceManifest* manifest); -}; - -extern Precacher *g_precacher; - -#endif \ No newline at end of file diff --git a/src/entrypoint.cpp b/src/entrypoint.cpp deleted file mode 100644 index af137a19d..000000000 --- a/src/entrypoint.cpp +++ /dev/null @@ -1,626 +0,0 @@ -#include -#include -#include "entrypoint.h" - -#include -#include -#include - -#include - -#include "core/configuration/setup.h" -#include "extensions/ExtensionManager.h" -#include "sdk/entity/CRecipientFilters.h" -#include "memory/encoders/msgpack.h" -#include "entitysystem/entities/listener.h" -#include "engine/vgui/VGUI.h" -#include "entitysystem/precacher/game_system.h" -#include "server/configuration/Configuration.h" -#include "server/commands/CommandsManager.h" -#include "tools/crashreporter/CallStack.h" -#include "tools/crashreporter/CrashReport.h" -#include "network/database/DatabaseManager.h" -#include "engine/gameevents/gameevents.h" -#include "engine/convars/convars.h" -#include "filesystem/logs/Logger.h" -#include "entitysystem/precacher/precacher.h" -#include "server/translations/Translations.h" -#include "server/menus/MenuManager.h" -#include "tools/resourcemonitor/ResourceMonitor.h" -#include "memory/hooks/NativeHooks.h" -#include "player/playermanager/PlayerManager.h" -#include "server/chat/Chat.h" -#include "plugins/PluginManager.h" -#include "plugins/core/scripting.h" -#include "memory/signatures/Signatures.h" -#include "memory/signatures/Patches.h" -#include "memory/signatures/Offsets.h" -#include "engine/voicemanager/VoiceManager.h" -#include "network/usermessages/usermessages.h" -#include "sdk/access/sdkaccess.h" -#include "sdk/entity/EntityCheckTransmit.h" -#include "utils/plat.h" - -#ifdef _WIN32 -#include -#endif - -SH_DECL_HOOK3_void(INetworkServerService, StartupServer, SH_NOATTRIB, 0, const GameSessionConfiguration_t&, ISource2WorldSession*, const char*); -SH_DECL_HOOK3_void(IServerGameDLL, GameFrame, SH_NOATTRIB, 0, bool, bool, bool); -SH_DECL_HOOK1_void(IServerGameDLL, ServerHibernationUpdate, SH_NOATTRIB, 0, bool); -SH_DECL_HOOK5_void(IServerGameClients, ClientDisconnect, SH_NOATTRIB, 0, CPlayerSlot, ENetworkDisconnectionReason, const char*, uint64, const char*); -SH_DECL_HOOK6_void(IServerGameClients, OnClientConnected, SH_NOATTRIB, 0, CPlayerSlot, const char*, uint64, const char*, const char*, bool); -SH_DECL_HOOK6(IServerGameClients, ClientConnect, SH_NOATTRIB, 0, bool, CPlayerSlot, const char*, uint64, const char*, bool, CBufferString*); -SH_DECL_HOOK0_void(IServerGameDLL, GameServerSteamAPIActivated, SH_NOATTRIB, 0); -SH_DECL_HOOK0_void(IServerGameDLL, GameServerSteamAPIDeactivated, SH_NOATTRIB, 0); -SH_DECL_HOOK2_void(IServerGameClients, ClientCommand, SH_NOATTRIB, 0, CPlayerSlot, const CCommand&); -SH_DECL_HOOK3_void(ICvar, DispatchConCommand, SH_NOATTRIB, 0, ConCommandRef, const CCommandContext&, const CCommand&); -SH_DECL_HOOK8_void(IGameEventSystem, PostEventAbstract, SH_NOATTRIB, 0, CSplitScreenSlot, bool, int, const uint64*, INetworkMessageInternal*, const CNetMessage*, unsigned long, NetChannelBufType_t) -SH_DECL_HOOK7_void(ISource2GameEntities, CheckTransmit, SH_NOATTRIB, 0, CCheckTransmitInfo**, int, CBitVec<16384>&, const Entity2Networkable_t**, const uint16*, int, bool); -SH_DECL_HOOK3(IVEngineServer2, SetClientListening, SH_NOATTRIB, 0, bool, CPlayerSlot, CPlayerSlot, bool); - -#ifdef _WIN32 -FILE _ioccc[] = { *stdin, *stdout, *stderr }; -extern "C" FILE* __cdecl __iob_func(void) -{ - return _ioccc; -} -#endif - -////////////////////////////////////////////////////////////// -///////////////// Core Variables & Functions ////////////// -//////////////////////////////////////////////////////////// - -Swiftly g_Plugin; -ISource2Server* server = nullptr; -IServerGameClients* gameclients = nullptr; -IVEngineServer2* engine = nullptr; -IServerGameClients* g_clientsManager = nullptr; -ICvar* icvar = nullptr; -ICvar* g_pcVar = nullptr; -IGameResourceService* g_pGameResourceService = nullptr; -CEntitySystem* g_pEntitySystem = nullptr; -CGameEntitySystem* g_pGameEntitySystem = nullptr; -IGameEventManager2* g_gameEventManager = nullptr; -IGameEventSystem* g_pGameEventSystem = nullptr; -CSteamGameServerAPIContext g_SteamAPI; -CSchemaSystem* g_pSchemaSystem2 = nullptr; -CCSGameRules* gameRules = nullptr; - -////////////////////////////////////////////////////////////// -///////////////// Internal Variables ////////////// -//////////////////////////////////////////////////////////// - -CUtlVector g_vecHooks; -std::map gameEventsRegister; -uint64_t g_Players = 0; - -ChatProcessor* g_chatProcessor = nullptr; -EntityListener g_EntityListener; -CommandsManager* g_commandsManager = nullptr; -Configuration* g_Config = nullptr; -Translations* g_translations = nullptr; -Logger* g_Logger = nullptr; -PlayerManager* g_playerManager = nullptr; -PluginManager* g_pluginManager = nullptr; -Offsets* g_Offsets = nullptr; -Signatures* g_Signatures = nullptr; -Precacher* g_precacher = nullptr; -DatabaseManager* g_dbManager = nullptr; -MenuManager* g_MenuManager = nullptr; -ResourceMonitor* g_ResourceMonitor = nullptr; -Patches* g_Patches = nullptr; -CallStack* g_callStack = nullptr; -EventManager* eventManager = nullptr; -UserMessages* g_userMessages = nullptr; -SDKAccess* g_sdk = nullptr; -ConvarQuery* g_cvarQuery = nullptr; -VoiceManager g_voiceManager; -ExtensionManager* extManager = nullptr; -VGUI* g_pVGUI = nullptr; - -////////////////////////////////////////////////////////////// -///////////////// Core Class ////////////// -//////////////////////////////////////////////////////////// - -PLUGIN_EXPOSE(Swiftly, g_Plugin); -bool Swiftly::Load(PluginId id, ISmmAPI* ismm, char* error, size_t maxlen, bool late) -{ - PLUGIN_SAVEVARS(); - - g_SMAPI->AddListener(this, this); - -#if _WIN32 - auto hOut = GetStdHandle(STD_OUTPUT_HANDLE); - - if (hOut != INVALID_HANDLE_VALUE) { - DWORD dwMode = 0; - if (GetConsoleMode(hOut, &dwMode)) { - dwMode |= ENABLE_PROCESSED_OUTPUT | ENABLE_VIRTUAL_TERMINAL_PROCESSING; - SetConsoleMode(hOut, dwMode); - } - - FILE* fp; - - if (freopen_s(&fp, "CONOUT$", "w", stdout) == 0) - setvbuf(stdout, NULL, _IONBF, 0); -} -#endif - - GET_V_IFACE_CURRENT(GetEngineFactory, engine, IVEngineServer, INTERFACEVERSION_VENGINESERVER); - GET_V_IFACE_CURRENT(GetEngineFactory, icvar, ICvar, CVAR_INTERFACE_VERSION); - GET_V_IFACE_ANY(GetServerFactory, server, ISource2Server, INTERFACEVERSION_SERVERGAMEDLL); - GET_V_IFACE_ANY(GetServerFactory, gameclients, IServerGameClients, INTERFACEVERSION_SERVERGAMECLIENTS); - GET_V_IFACE_ANY(GetServerFactory, g_clientsManager, IServerGameClients, INTERFACEVERSION_SERVERGAMECLIENTS); - GET_V_IFACE_ANY(GetEngineFactory, g_pNetworkServerService, INetworkServerService, NETWORKSERVERSERVICE_INTERFACE_VERSION); - GET_V_IFACE_ANY(GetEngineFactory, g_pNetworkMessages, INetworkMessages, NETWORKMESSAGES_INTERFACE_VERSION); - GET_V_IFACE_ANY(GetServerFactory, g_pSource2GameEntities, ISource2GameEntities, SOURCE2GAMEENTITIES_INTERFACE_VERSION); - GET_V_IFACE_ANY(GetFileSystemFactory, g_pFullFileSystem, IFileSystem, FILESYSTEM_INTERFACE_VERSION); - GET_V_IFACE_CURRENT(GetEngineFactory, g_pGameResourceService, IGameResourceService, GAMERESOURCESERVICESERVER_INTERFACE_VERSION); - GET_V_IFACE_CURRENT(GetEngineFactory, g_pGameEventSystem, IGameEventSystem, GAMEEVENTSYSTEM_INTERFACE_VERSION); - GET_V_IFACE_CURRENT(GetEngineFactory, g_pSchemaSystem2, CSchemaSystem, SCHEMASYSTEM_INTERFACE_VERSION); - GET_V_IFACE_CURRENT(GetEngineFactory, g_pNetworkSystem, INetworkSystem, NETWORKSYSTEM_INTERFACE_VERSION); - - SH_ADD_HOOK_MEMFUNC(IServerGameDLL, GameFrame, server, this, &Swiftly::Hook_GameFrame, true); - SH_ADD_HOOK_MEMFUNC(IServerGameDLL, ServerHibernationUpdate, server, this, &Swiftly::Hook_ServerHibernationUpdate, true); - SH_ADD_HOOK_MEMFUNC(IServerGameClients, ClientDisconnect, gameclients, this, &Swiftly::Hook_ClientDisconnect, true); - SH_ADD_HOOK_MEMFUNC(IServerGameClients, OnClientConnected, gameclients, this, &Swiftly::Hook_OnClientConnected, false); - SH_ADD_HOOK_MEMFUNC(IServerGameClients, ClientConnect, gameclients, this, &Swiftly::Hook_ClientConnect, false); - SH_ADD_HOOK_MEMFUNC(IServerGameClients, ClientCommand, gameclients, this, &Swiftly::Hook_OnClientCommand, false); - SH_ADD_HOOK_MEMFUNC(INetworkServerService, StartupServer, g_pNetworkServerService, this, &Swiftly::Hook_StartupServer, true); - SH_ADD_HOOK_MEMFUNC(IServerGameDLL, GameServerSteamAPIActivated, server, this, &Swiftly::Hook_GameServerSteamAPIActivated, false); - SH_ADD_HOOK_MEMFUNC(IServerGameDLL, GameServerSteamAPIDeactivated, server, this, &Swiftly::Hook_GameServerSteamAPIDeactivated, false); - SH_ADD_HOOK_MEMFUNC(ISource2GameEntities, CheckTransmit, g_pSource2GameEntities, this, &Swiftly::Hook_CheckTransmit, true); - - g_pCVar = icvar; - - HandleConfigExamples(); - - if (!BeginCrashListener()) - PRINTRET("Crash Reporter failed to initialize.\n", false); - - g_pluginManager = new PluginManager(); - g_Config = new Configuration(); - g_Signatures = new Signatures(); - g_Offsets = new Offsets(); - g_Patches = new Patches(); - g_playerManager = new PlayerManager(); - g_Logger = new Logger(); - g_translations = new Translations(); - g_precacher = new Precacher(); - g_commandsManager = new CommandsManager(); - g_dbManager = new DatabaseManager(); - g_MenuManager = new MenuManager(); - g_ResourceMonitor = new ResourceMonitor(); - g_callStack = new CallStack(); - eventManager = new EventManager(); - g_userMessages = new UserMessages(); - g_sdk = new SDKAccess(); - g_cvarQuery = new ConvarQuery(); - g_chatProcessor = new ChatProcessor(); - extManager = new ExtensionManager(); - g_pVGUI = new VGUI(); - - if (g_Config->LoadConfiguration()) - PRINT("The configurations has been succesfully loaded.\n"); - else - PRINTRET("Failed to load configurations. The plugin will not work.\n", false); - - g_Logger->AddLogger("core", false); - - g_sdk->LoadSDKData(); - g_Config->LoadPluginConfigurations(); - g_Signatures->LoadSignatures(); - g_Offsets->LoadOffsets(); - g_Patches->LoadPatches(); - g_Patches->PerformPatches(); - - g_userMessages->Initialize(); - eventManager->Initialize(); - g_cvarQuery->Initialize(); - g_chatProcessor->Initialize(); - g_EntityListener.Initialize(); - - if (!InitializeHooks()) - PRINTRET("Hooks failed to initialize.\n", false) - else - PRINT("Hooks initialized succesfully.\n"); - - if(!InitGameSystem()) - PRINTRET("Failed to initialize the game system.\n", false) - else - PRINT("Game System initialized\n"); - - g_chatProcessor->LoadMessages(); - g_translations->LoadTranslations(); - - extManager->LoadExtensions(); - - g_dbManager->LoadDatabases(); - - META_CONVAR_REGISTER(FCVAR_RELEASE | FCVAR_SERVER_CAN_EXECUTE | FCVAR_CLIENT_CAN_EXECUTE | FCVAR_GAMEDLL); - - g_pluginManager->LoadPlugins(""); - g_pluginManager->StartPlugins(); - - if (late) - { - eventManager->RegisterGameEvents(); - g_SteamAPI.Init(); - } - - g_voiceManager.OnAllInitialized(); - - PRINT("Succesfully started.\n"); - - return true; -} - -void Swiftly::Hook_GameServerSteamAPIActivated() -{ - if (!CommandLine()->HasParm("-dedicated") || g_SteamAPI.SteamUGC()) - return; - - g_SteamAPI.Init(); - - RETURN_META(MRES_IGNORED); -} - -void Swiftly::Hook_GameServerSteamAPIDeactivated() -{ - RETURN_META(MRES_IGNORED); -} - -void Swiftly::AllPluginsLoaded() -{ -} - -bool Swiftly::Unload(char* error, size_t maxlen) -{ - g_voiceManager.OnShutdown(); - g_userMessages->Destroy(); - g_cvarQuery->Destroy(); - g_chatProcessor->Destroy(); - - g_pluginManager->StopPlugins(false); - g_pluginManager->UnloadPlugins(); - - extManager->UnloadExtensions(); - - UnloadHooks(); - eventManager->Shutdown(); - - g_EntityListener.Destroy(); - SH_REMOVE_HOOK_MEMFUNC(IServerGameDLL, GameFrame, server, this, &Swiftly::Hook_GameFrame, true); - SH_REMOVE_HOOK_MEMFUNC(IServerGameDLL, ServerHibernationUpdate, server, this, &Swiftly::Hook_ServerHibernationUpdate, true); - SH_REMOVE_HOOK_MEMFUNC(IServerGameClients, ClientDisconnect, gameclients, this, &Swiftly::Hook_ClientDisconnect, true); - SH_REMOVE_HOOK_MEMFUNC(IServerGameClients, OnClientConnected, gameclients, this, &Swiftly::Hook_OnClientConnected, false); - SH_REMOVE_HOOK_MEMFUNC(IServerGameClients, ClientConnect, gameclients, this, &Swiftly::Hook_ClientConnect, false); - SH_REMOVE_HOOK_MEMFUNC(IServerGameClients, ClientCommand, gameclients, this, &Swiftly::Hook_OnClientCommand, false); - SH_REMOVE_HOOK_MEMFUNC(INetworkServerService, StartupServer, g_pNetworkServerService, this, &Swiftly::Hook_StartupServer, true); - SH_REMOVE_HOOK_MEMFUNC(IServerGameDLL, GameServerSteamAPIActivated, server, this, &Swiftly::Hook_GameServerSteamAPIActivated, false); - SH_REMOVE_HOOK_MEMFUNC(IServerGameDLL, GameServerSteamAPIDeactivated, server, this, &Swiftly::Hook_GameServerSteamAPIDeactivated, false); - SH_REMOVE_HOOK_MEMFUNC(ISource2GameEntities, CheckTransmit, g_pSource2GameEntities, this, &Swiftly::Hook_CheckTransmit, true); - - delete g_commandsManager; - delete g_Config; - delete g_translations; - delete g_Logger; - delete g_playerManager; - delete g_pluginManager; - delete g_Offsets; - delete g_Signatures; - delete g_precacher; - delete g_dbManager; - delete g_MenuManager; - delete g_ResourceMonitor; - delete g_Patches; - delete g_callStack; - delete eventManager; - delete g_userMessages; - delete g_sdk; - delete g_cvarQuery; - delete g_chatProcessor; - delete g_pVGUI; - - ConVar_Unregister(); - EndCrashListener(); - return true; -} - -std::string currentMap = "None"; - -void Swiftly::OnLevelInit(char const* pMapName, char const* pMapEntities, char const* pOldLevel, char const* pLandmarkName, bool loadGame, bool background) -{ - PluginEvent* event = new PluginEvent("core", nullptr, nullptr); - g_pluginManager->ExecuteEvent("core", "OnMapLoad", encoders::msgpack::SerializeToString({ pMapName }), event); - delete event; - - currentMap = pMapName; -} - -void Swiftly::OnLevelShutdown() -{ - g_translations->LoadTranslations(); - g_Config->LoadPluginConfigurations(); - - PluginEvent* event = new PluginEvent("core", nullptr, nullptr); - g_pluginManager->ExecuteEvent("core", "OnMapUnload", encoders::msgpack::SerializeToString({ currentMap }), event); - delete event; -} - -void Swiftly::Hook_StartupServer(const GameSessionConfiguration_t& config, ISource2WorldSession*, const char*) -{ - eventManager->RegisterGameEvents(); -} - -void Swiftly::UpdatePlayers() -{ - PERF_RECORD("UpdatePlayers", "core") - - // Credits to: https://github.com/Source2ZE/ServerListPlayersFix (Source2ZE Team) - if (!engine->GetServerGlobals() || !g_SteamAPI.SteamGameServer()) - return; - - for (int i = 0; i < engine->GetServerGlobals()->maxClients; i++) - { - auto steamId = engine->GetClientSteamID(CPlayerSlot(i)); - if (steamId) - { - auto controller = (CBasePlayerController*)g_pEntitySystem->GetEntityInstance(CEntityIndex(i + 1)); - if (controller) - g_SteamAPI.SteamGameServer()->BUpdateUserData(*steamId, controller->m_iszPlayerName(), gameclients->GetPlayerScore(CPlayerSlot(i))); - } - } -} - -struct GameFrameMsgPackCache -{ - bool simulating; - bool bFirstTick; - bool bLastTick; -}; - -PluginEvent* gameFrameEvent = nullptr; -std::string gameFramePack; -GameFrameMsgPackCache gameFrameCache = { - false, - false, - false, -}; -void ProcessTimeouts(uint64_t t); - -void Swiftly::Hook_GameFrame(bool simulating, bool bFirstTick, bool bLastTick) -{ - PERF_RECORD("GameFrame", "core") - - static double g_flNextUpdate = 0.0; - uint64_t time = GetTime(); - - ProcessTimeouts(time); - - ////////////////////////////////////////////////////////////// - ///////////////// Server List ////////////// - //////////////////////////////////////////////////////////// - - double curtime = Plat_FloatTime(); - if (curtime > g_flNextUpdate) - { - // Credits to: https://github.com/Source2ZE/ServerListPlayersFix (Source2ZE Team) - UpdatePlayers(); - - g_flNextUpdate = curtime + 5.0; - } - - ////////////////////////////////////////////////////////////// - ///////////////// Game Event ////////////// - //////////////////////////////////////////////////////////// - if (gameFrameCache.bFirstTick != bFirstTick || gameFrameCache.bLastTick != bLastTick || gameFrameCache.simulating != simulating || gameFrameEvent == nullptr) - { - gameFramePack = encoders::msgpack::SerializeToString({ simulating, bFirstTick, bLastTick }); - - gameFrameCache.bFirstTick = bFirstTick; - gameFrameCache.bLastTick = bLastTick; - gameFrameCache.simulating = simulating; - if (gameFrameEvent == nullptr) - gameFrameEvent = new PluginEvent("core", nullptr, nullptr); - } - g_pluginManager->ExecuteEvent("core", "OnGameTick", gameFramePack, gameFrameEvent); - - ////////////////////////////////////////////////////////////// - ///////////////// Player ////////////// - //////////////////////////////////////////////////////////// - for (int i = 0; i < 64; i++) - { - if ((g_Players & (1ULL << i)) != 0) { - Player* player = g_playerManager->GetPlayer(i); - CBasePlayerPawn* pawn = player->GetPawn(); - if (!pawn) - continue; - - auto buttonStates = pawn->m_pMovementServices()->m_nButtons().m_pButtonStates(); - player->SetButtons(buttonStates[0]); - - if(player->menu_renderer->ShouldRenderEachTick()) - player->menu_renderer->RenderMenuTick(); - else if (player->HasCenterText()) - player->RenderCenterText(time); - - if(!pawn->m_pObserverServices()) continue; - - g_pVGUI->CheckRenderForPlayer(i, player, pawn->m_pObserverServices()->m_hObserverTarget()); - } - } - - ////////////////////////////////////////////////////////////// - ///////////////// Next Frames ////////////// - //////////////////////////////////////////////////////////// - while (!m_nextFrame.empty()) - { - auto pair = m_nextFrame.front(); - pair.first(pair.second); - m_nextFrame.pop_front(); - } -} - -////////////////////////////////////////////////////////////// -///////////////// Check Transmit ////////////// -///////////////// May God rest our CPU usage ////////////// -/////////////////////////////////////////////////////////// - -PluginEvent* checktransmitEvent = nullptr; - -void Swiftly::Hook_CheckTransmit(CCheckTransmitInfo** ppInfoList, int infoCount, CBitVec<16384>& unionTransmitEdicts, const Entity2Networkable_t** pNetworkables, const uint16* pEntityIndicies, int nEntities, bool bEnablePVSBits) -{ - if (!g_pGameEntitySystem) - return; - - if (!checktransmitEvent) - checktransmitEvent = new PluginEvent("core", nullptr, nullptr); - - for (int i = 0; i < infoCount; i++) - { - auto& pInfo = (EntityCheckTransmit*&)ppInfoList[i]; - int playerid = pInfo->m_nClientEntityIndex.Get(); - Player* player = g_playerManager->GetPlayer(playerid); - if (!player) continue; - - g_pVGUI->FilterRenderingItems(player, (CCheckTransmitInfo*)pInfo); - - g_pluginManager->ExecuteEvent("core", "OnPlayerCheckTransmit", encoders::msgpack::SerializeToString({ playerid, string_format("%p", pInfo), "CCheckTransmitInfo" }), checktransmitEvent); - } -} - -void Swiftly::Hook_ClientDisconnect(CPlayerSlot slot, ENetworkDisconnectionReason reason, const char* pszName, uint64 xuid, const char* pszNetworkID) -{ - PluginEvent* event = new PluginEvent("core", nullptr, nullptr); - g_pluginManager->ExecuteEvent("core", "OnClientDisconnect", encoders::msgpack::SerializeToString({ slot.Get() }), event); - delete event; - - Player* player = g_playerManager->GetPlayer(slot); - if (player) { - g_pVGUI->Unregister(player); - - g_Players &= ~(1ULL << slot.Get()); - g_playerManager->UnregisterPlayer(slot); - } -} - -void Swiftly::Hook_OnClientConnected(CPlayerSlot slot, const char* pszName, uint64 xuid, const char* pszNetworkID, const char* pszAddress, bool bFakePlayer) -{ - if (bFakePlayer) - { - Player* player = new Player(true, slot.Get(), pszName, xuid, "127.0.0.1"); - g_playerManager->RegisterPlayer(player); - } - else { - if (g_Config->FetchValue("core.use_player_language")) - g_cvarQuery->QueryCvarClient(slot, "cl_language"); - } -} - -bool Swiftly::Hook_ClientConnect(CPlayerSlot slot, const char* pszName, uint64 xuid, const char* pszNetworkID, bool unk1, CBufferString* pRejectReason) -{ - std::string ip_address = explode(pszNetworkID, ":")[0]; - Player* player = new Player(false, slot.Get(), pszName, xuid, ip_address); - g_playerManager->RegisterPlayer(player); - g_Players |= (1ULL << slot.Get()); - - PluginEvent* event = new PluginEvent("core", nullptr, nullptr); - g_pluginManager->ExecuteEvent("core", "OnClientConnect", encoders::msgpack::SerializeToString({ slot.Get() }), event); - - bool response = true; - try - { - response = std::any_cast(event->GetReturnValue()); - } - catch (std::bad_any_cast e) - { - response = true; - } - delete event; - - if (!response) - RETURN_META_VALUE(MRES_SUPERCEDE, false); - - RETURN_META_VALUE(MRES_IGNORED, true); -} - -bool OnClientCommand(int playerid, std::string command); - -void Swiftly::Hook_OnClientCommand(CPlayerSlot slot, const CCommand& cmd) -{ - if (!OnClientCommand(slot.Get(), cmd.GetCommandString())) - RETURN_META(MRES_SUPERCEDE); - - RETURN_META(MRES_IGNORED); -} - -bool isServerHibernating = true; - -void Swiftly::Hook_ServerHibernationUpdate(bool bHibernation) -{ - isServerHibernating = bHibernation; -} - -void Swiftly::NextFrame(std::function)> fn, std::vector param) -{ - if (isServerHibernating) - fn(param); - else - m_nextFrame.push_back({ fn, param }); -} - -bool Swiftly::Pause(char* error, size_t maxlen) -{ - return true; -} - -bool Swiftly::Unpause(char* error, size_t maxlen) -{ - return true; -} - -const char* Swiftly::GetLicense() -{ - return "MIT License"; -} - -const char* Swiftly::GetVersion() -{ -#ifndef SWIFTLY_VERSION - return "Local"; -#else - return (std::string("v") + std::string(SWIFTLY_VERSION)).c_str(); -#endif -} - -const char* Swiftly::GetDate() -{ - return __DATE__; -} - -const char* Swiftly::GetLogTag() -{ - return "SWIFTLY"; -} - -const char* Swiftly::GetAuthor() -{ - return "Swiftly Development Team"; -} - -const char* Swiftly::GetDescription() -{ - return "Swiftly - Framework"; -} - -const char* Swiftly::GetName() -{ - return "Swiftly"; -} - -const char* Swiftly::GetURL() -{ - return "https://github.com/swiftly-solution/swiftly"; -} \ No newline at end of file diff --git a/src/entrypoint.h b/src/entrypoint.h deleted file mode 100644 index dc97a8b49..000000000 --- a/src/entrypoint.h +++ /dev/null @@ -1,114 +0,0 @@ -#ifndef _entrypoint_h -#define _entrypoint_h - -#ifdef _MSC_VER -#pragma warning(disable : 4005) -#pragma warning(disable : 4267) -#pragma warning(disable : 4099) -#pragma warning(disable : 4312) -#else - -#endif - -#define META_IS_SOURCE2 1 -#define MAX_PLAYERS 64 - -#include -#include - -#include -#include -#include -#include - -#include -#include "iserver.h" -#include "KeyValues.h" -#include -#include -#include -#include -#include -#include -#include -#include - -#include -#include -#include -#include - -#include "common.h" - -class GameSessionConfiguration_t -{ -}; - -class CCSGameRules; - -class Swiftly : public ISmmPlugin, public IMetamodListener -{ -public: - bool Load(PluginId id, ISmmAPI* ismm, char* error, size_t maxlen, bool late); - bool Unload(char* error, size_t maxlen); - bool Pause(char* error, size_t maxlen); - bool Unpause(char* error, size_t maxlen); - void AllPluginsLoaded(); - void OnLevelInit(char const* pMapName, char const* pMapEntities, char const* pOldLevel, char const* pLandmarkName, bool loadGame, bool background); - void OnLevelShutdown(); - void NextFrame(std::function)> fn, std::vector param); - void UpdatePlayers(); - -public: - void Hook_StartupServer(const GameSessionConfiguration_t& config, ISource2WorldSession*, const char*); - void Hook_GameFrame(bool simulating, bool bFirstTick, bool bLastTick); - void Hook_ServerHibernationUpdate(bool bHibernation); - void Hook_ClientDisconnect(CPlayerSlot slot, ENetworkDisconnectionReason reason, const char* pszName, uint64 xuid, const char* pszNetworkID); - void Hook_OnClientConnected(CPlayerSlot slot, const char* pszName, uint64 xuid, const char* pszNetworkID, const char* pszAddress, bool bFakePlayer); - bool Hook_ClientConnect(CPlayerSlot slot, const char* pszName, uint64 xuid, const char* pszNetworkID, bool unk1, CBufferString* pRejectReason); - void Hook_GameServerSteamAPIActivated(); - void Hook_GameServerSteamAPIDeactivated(); - void Hook_OnClientCommand(CPlayerSlot slot, const CCommand& args); - void Hook_CheckTransmit(CCheckTransmitInfo** ppInfoList, int infoCount, CBitVec<16384>& unionTransmitEdicts, const Entity2Networkable_t** pNetworkables, const uint16* pEntityIndicies, int nEntities, bool bEnablePVSBits); - -public: - const char* GetAuthor(); - const char* GetName(); - const char* GetDescription(); - const char* GetURL(); - const char* GetLicense(); - const char* GetVersion(); - const char* GetDate(); - const char* GetLogTag(); - -public: - std::deque)>, std::vector>> m_nextFrame; -}; - -class CEntityListener : public IEntityListener -{ - void OnEntityCreated(CEntityInstance* pEntity) override; - void OnEntitySpawned(CEntityInstance* pEntity) override; - void OnEntityDeleted(CEntityInstance* pEntity) override; - void OnEntityParentChanged(CEntityInstance* pEntity, CEntityInstance* pNewParent) override; -}; - -extern Swiftly g_Plugin; -extern ISource2Server* server; -extern IServerGameClients* gameclients; -extern IVEngineServer2* engine; -extern IServerGameClients* g_clientsManager; -extern ICvar* icvar; -extern ICvar* g_pcVar; -extern IGameResourceService* g_pGameResourceService; -extern CEntitySystem* g_pEntitySystem; -extern CGameEntitySystem* g_pGameEntitySystem; -extern IGameEventManager2* g_gameEventManager; -extern IGameEventSystem* g_pGameEventSystem; -extern CSteamGameServerAPIContext g_SteamAPI; -extern INetworkSystem* g_pNetworkSystem; -extern CCSGameRules* gameRules; - -PLUGIN_GLOBALVARS(); - -#endif \ No newline at end of file diff --git a/src/extensions/Extension.cpp b/src/extensions/Extension.cpp deleted file mode 100644 index 0f2154314..000000000 --- a/src/extensions/Extension.cpp +++ /dev/null @@ -1,117 +0,0 @@ -#include "Extension.h" -#include "../entrypoint.h" -#include "../plugins/PluginManager.h" -#include - -typedef void* (*GetExtensionCls)(); - -Extension::Extension(std::string name) -{ - m_name = name; -} - -Extension::~Extension() -{ -} - -std::string Extension::GetName() -{ - return m_name; -} - -bool Extension::LoadExtension(bool late) -{ -#ifdef _WIN32 - m_hModule = dlmount(GeneratePath(std::string("addons/swiftly/extensions/win64/") + m_name + ".dll").c_str()); -#else - m_hModule = dlopen(GeneratePath(std::string("addons/swiftly/extensions/linuxsteamrt64/") + m_name + ".so").c_str(), RTLD_NOW); - - if (!m_hModule) { - std::string err = dlerror(); - PRINTF("Failed to load extension: %s\n", err.c_str()); - m_errored = true; - m_error = err; - return false; - } -#endif - - void* fnGetClass = reinterpret_cast(dlsym(m_hModule, "GetExtensionClass")); - if (!fnGetClass) { - PRINT("Failed to load extension: GetExtensionClass is not present.\n"); - m_errored = true; - m_error = "GetExtensionClass is not present"; - return false; - } - - m_api = (SwiftlyExt*)(reinterpret_cast(fnGetClass)()); - - std::string err; - bool res = m_api->Load(err, g_SHPtr, g_SMAPI, late); - loaded = res; - if (!res) { - PRINT("An error has occured while trying to load the extension.\n"); - PRINTF("Extension: %s.\n", m_name.c_str()); - PRINTF("Error: %s\n", err.c_str()); - dlclose(m_hModule); - m_hModule = nullptr; - m_api = nullptr; - m_errored = true; - m_error = err; - return false; - } - return true; -} - -bool Extension::UnloadExtension() -{ - for(auto plugin : g_pluginManager->GetPluginsList()) - if(plugin->GetPluginState() == PluginState_t::Started) { - std::string error = ""; - if (!this->GetAPI()->OnPluginUnload(plugin->GetName(), plugin->GetContext(), plugin->GetKind(), error)) { - PRINTF("An error has occured while trying to unload the extension from plugin '%s'.\n", plugin->GetName().c_str()); - PRINTF("Extension: %s.\n", m_name.c_str()); - PRINTF("Error: %s.\n", error.c_str()); - m_errored = true; - m_error = error; - return false; - } - } - - std::string err; - bool res = m_api->Unload(err); - if (!res) { - PRINT("An error has occured while trying to unload the extension.\n"); - PRINTF("Extension: %s.\n", m_name.c_str()); - PRINTF("Error: %s\n", err.c_str()); - m_errored = true; - m_error = err; - loaded = true; - return false; - } - - dlclose(m_hModule); - m_hModule = nullptr; - m_api = nullptr; - loaded = false; - return true; -} - -SwiftlyExt* Extension::GetAPI() -{ - return m_api; -} - -bool Extension::IsLoaded() -{ - return loaded; -} - -std::string Extension::GetError() -{ - return m_error; -} - -bool Extension::HasError() -{ - return m_errored; -} \ No newline at end of file diff --git a/src/extensions/Extension.h b/src/extensions/Extension.h deleted file mode 100644 index 04b133e03..000000000 --- a/src/extensions/Extension.h +++ /dev/null @@ -1,36 +0,0 @@ -#ifndef _core_extensions_ext_h -#define _core_extensions_ext_h - -#include -#include -#include - -#ifndef _WIN32 -#include -#endif - -class Extension -{ -private: - std::string m_name; - std::string m_error; - bool m_errored = false; - HINSTANCE m_hModule; - SwiftlyExt* m_api; - bool loaded = false; -public: - Extension(std::string name); - ~Extension(); - - std::string GetName(); - SwiftlyExt* GetAPI(); - bool IsLoaded(); - - std::string GetError(); - bool HasError(); - - bool LoadExtension(bool late); - bool UnloadExtension(); -}; - -#endif \ No newline at end of file diff --git a/src/extensions/ExtensionManager.cpp b/src/extensions/ExtensionManager.cpp deleted file mode 100644 index 6a05bfcef..000000000 --- a/src/extensions/ExtensionManager.cpp +++ /dev/null @@ -1,93 +0,0 @@ -#include "ExtensionManager.h" -#include "../filesystem/files/Files.h" - -extern bool AllPluginsStarted; - -void ExtensionManager::LoadExtensions() -{ - std::string baseDir = std::string("addons/swiftly/extensions/") + WIN_LINUX("win64", "linuxsteamrt64"); - if (!Files::ExistsPath(baseDir)) - Files::CreateDirectory(baseDir); - - std::vector extensions = Files::FetchFileNames(baseDir); - for (std::string extension : extensions) - { - if (extension.find("disabled") != std::string::npos) - continue; - - extension = replace(extension, baseDir, ""); - std::string extension_name = replace(replace(extension, WIN_LINUX("\\", "/"), ""), WIN_LINUX(".dll", ".so"), ""); - - LoadExtension(extension_name); - } - - all_loaded = true; - for (Extension* extension : exts) - if (extension->IsLoaded()) - extension->GetAPI()->AllExtensionsLoaded(); -} - -void ExtensionManager::UnloadExtensions() -{ - std::vector extensionNames; - for (Extension* extension : exts) - extensionNames.push_back(extension->GetName()); - - for (std::string extension_name : extensionNames) - UnloadExtension(extension_name); - - all_loaded = false; -} - -bool ExtensionManager::ExtensionExists(std::string ext_name) -{ - return (extsMap.find(ext_name) != extsMap.end()); -} - -void ExtensionManager::LoadExtension(std::string ext_name) -{ - if (ExtensionExists(ext_name)) return; - - Extension* ext = new Extension(ext_name); - if (!ext->LoadExtension(all_loaded)) { - delete ext; - return; - } - - exts.push_back(ext); - extsMap[ext_name] = ext; - - if (all_loaded) - ext->GetAPI()->AllExtensionsLoaded(); - if(AllPluginsStarted) - ext->GetAPI()->AllPluginsLoaded(); -} - -void ExtensionManager::UnloadExtension(std::string ext_name) -{ - if (!ExtensionExists(ext_name)) return; - - Extension* ext = extsMap[ext_name]; - if (!ext) return; - - if (!ext->UnloadExtension()) return; - - auto it = std::find(exts.begin(), exts.end(), ext); - if (it != exts.end()) - exts.erase(it); - - delete ext; - extsMap.erase(ext_name); -} - -Extension* ExtensionManager::FetchExtension(std::string ext_name) -{ - if (!ExtensionExists(ext_name)) return nullptr; - - return extsMap[ext_name]; -} - -std::vector ExtensionManager::GetExtensionsList() -{ - return this->exts; -} \ No newline at end of file diff --git a/src/extensions/ExtensionManager.h b/src/extensions/ExtensionManager.h deleted file mode 100644 index ceea9c262..000000000 --- a/src/extensions/ExtensionManager.h +++ /dev/null @@ -1,30 +0,0 @@ -#ifndef _core_extensions_manager_h -#define _core_extensions_manager_h - -#include "Extension.h" -#include - -class ExtensionManager -{ -private: - std::vector exts; - std::map extsMap; - - bool all_loaded = false; -public: - void LoadExtensions(); - void UnloadExtensions(); - - bool ExtensionExists(std::string ext_name); - - void LoadExtension(std::string ext_name); - void UnloadExtension(std::string ext_name); - - Extension* FetchExtension(std::string ext_name); - - std::vector GetExtensionsList(); -}; - -extern ExtensionManager* extManager; - -#endif \ No newline at end of file diff --git a/src/filesystem/files/Files.cpp b/src/filesystem/files/Files.cpp deleted file mode 100644 index 46d04caa3..000000000 --- a/src/filesystem/files/Files.cpp +++ /dev/null @@ -1,215 +0,0 @@ -#include "Files.h" - -std::string GeneratePath(std::string path) -{ - return string_format("%s%scsgo%s%s", Plat_GetGameDirectory(), WIN_LINUX("\\", "/"), WIN_LINUX("\\", "/"), path.c_str()); -} - -std::string GetRelativePath(std::string path) -{ - return replace(path, string_format("%s%scsgo%s", Plat_GetGameDirectory(), WIN_LINUX("\\", "/"), WIN_LINUX("\\", "/")), ""); -} - -std::string Files::Read(std::string path) -{ - path = GeneratePath(path); - if (!std::filesystem::exists(path)) - return ""; - - auto fp = std::fopen(path.c_str(), "rb"); - std::string s; - std::fseek(fp, 0u, SEEK_END); - auto size = std::ftell(fp); - std::fseek(fp, 0u, SEEK_SET); - s.resize(size); - std::fread(&s[0], 1u, size, fp); - std::fclose(fp); - return s; -} - -std::string Files::getBase(std::string filePath) -{ - std::vector v = explode(filePath, "/"); - v.pop_back(); - return implode(v, "/"); -} - -void Files::Delete(std::string path) -{ - path = GeneratePath(path); - if (!std::filesystem::exists(path)) - return; - - std::filesystem::remove(path); -} - -void Files::Append(std::string path, std::string content, bool hasdate) -{ - if(!Files::ExistsPath(Files::getBase(path)) && Files::getBase(path) != "") std::filesystem::create_directories(Files::getBase(GeneratePath(path))); - - time_t now = time(0); - tm* ltm = localtime(&now); - - char date[32]; - -#if GCC_COMPILER -#pragma GCC diagnostic push -#pragma GCC diagnostic ignored "-Wformat-truncation" -#endif - if (hasdate) - snprintf(date, sizeof(date), "[%02d/%02d/%04d - %02d:%02d:%02d] ", ltm->tm_mday, ltm->tm_mon + 1, ltm->tm_year + 1900, ltm->tm_hour, ltm->tm_min, ltm->tm_sec); -#if GCC_COMPILER -#pragma GCC diagnostic pop -#endif - std::ofstream File(GeneratePath(path), std::ios_base::app); - File << (hasdate ? date : "") << content << std::endl; - File.close(); -} - -void Files::Write(std::string path, std::string content, bool hasdate) -{ - if(!Files::ExistsPath(Files::getBase(path)) && Files::getBase(path) != "") std::filesystem::create_directories(Files::getBase(GeneratePath(path))); - time_t now = time(0); - tm* ltm = localtime(&now); - - char date[32]; - -#if GCC_COMPILER -#pragma GCC diagnostic push -#pragma GCC diagnostic ignored "-Wformat-truncation" -#endif - if (hasdate) - snprintf(date, sizeof(date), "[%02d/%02d/%04d - %02d:%02d:%02d] ", ltm->tm_mday, ltm->tm_mon + 1, ltm->tm_year + 1900, ltm->tm_hour, ltm->tm_min, ltm->tm_sec); -#if GCC_COMPILER -#pragma GCC diagnostic pop -#endif - - std::ofstream File(GeneratePath(path), std::ios_base::trunc); - File << (hasdate ? date : "") << content << std::endl; - File.close(); -} - -bool Files::ExistsPath(std::string path) -{ - path = GeneratePath(path); - return std::filesystem::exists(path); -} - -bool Files::IsDirectory(std::string path) -{ - path = GeneratePath(path); - return std::filesystem::is_directory(path); -} - -bool Files::CreateDirectory(std::string path) -{ - path = GeneratePath(path); - return std::filesystem::create_directory(path); -} - -std::vector Files::FetchFileNames(std::string path) -{ - std::vector files; - if (!ExistsPath(path)) - return files; - if (!IsDirectory(path)) - return files; - - path = GeneratePath(path); - for (const auto& entry : std::filesystem::directory_iterator(path)) - { - if (entry.is_directory()) - { - std::vector fls = Files::FetchFileNames(GetRelativePath(entry.path().string())); - for (auto fl : fls) - files.push_back(fl); - } - else - files.push_back(GetRelativePath(entry.path().string())); - } - return files; -} - -std::vector Files::FetchDirectories(std::string path) -{ - std::vector directories; - if (!ExistsPath(path)) - return directories; - if (!IsDirectory(path)) - return directories; - - path = GeneratePath(path); - for (const auto& entry : std::filesystem::directory_iterator(path)) - if (entry.is_directory()) - directories.push_back(GetRelativePath(entry.path().string())); - - return directories; -} - -bool Files::Compress(std::string filePath, std::string outputPath) -{ - filePath = GeneratePath(filePath); - outputPath = GeneratePath(outputPath); - - std::ifstream inFile(filePath, std::ios_base::binary); - std::ofstream outFile(outputPath, std::ios_base::binary); - - if (!inFile || !outFile) - { - PRINT("Couldn't create read and write streams.\n"); - return false; - } - - std::vector inBuffer((std::istreambuf_iterator(inFile)), std::istreambuf_iterator()); - inFile.close(); - - unsigned int outSize = inBuffer.size() * 1.01 + 600; - std::vector outBuffer(outSize); - - int result = BZ2_bzBuffToBuffCompress(outBuffer.data(), &outSize, inBuffer.data(), inBuffer.size(), 9, 0, 30); - - if (result != BZ_OK) - { - PRINTF("Compression failed. Error code: %d\n", result); - return false; - } - - outFile.write(outBuffer.data(), outSize); - outFile.close(); - - return true; -} - -bool Files::Decompress(std::string filePath, std::string outputPath) -{ - filePath = GeneratePath(filePath); - outputPath = GeneratePath(outputPath); - - std::ifstream inFile(filePath, std::ios_base::binary); - std::ofstream outFile(outputPath, std::ios_base::binary); - - if (!inFile || !outFile) - { - PRINT("Couldn't create read and write streams.\n"); - return false; - } - - std::vector inBuffer((std::istreambuf_iterator(inFile)), std::istreambuf_iterator()); - inFile.close(); - - unsigned int outSize = inBuffer.size() * 10; - std::vector outBuffer(outSize); - - int result = BZ2_bzBuffToBuffDecompress(outBuffer.data(), &outSize, inBuffer.data(), inBuffer.size(), 0, 0); - - if (result != BZ_OK) - { - PRINTF("Decompression failed. Error code: %d\n", result); - return false; - } - - outFile.write(outBuffer.data(), outSize); - outFile.close(); - - return true; -} diff --git a/src/filesystem/files/Files.h b/src/filesystem/files/Files.h deleted file mode 100644 index 7ee3b9978..000000000 --- a/src/filesystem/files/Files.h +++ /dev/null @@ -1,31 +0,0 @@ -#ifndef _files_h -#define _files_h - -#include "../../common.h" -#include "../../utils/utils.h" - -#include -#include -#include -#include -#include - -std::string GeneratePath(std::string path); - -namespace Files -{ - std::string Read(std::string path); - void Append(std::string path, std::string content, bool hasdate = true); - void Write(std::string path, std::string content, bool hasdate = true); - void Delete(std::string path); - std::string getBase(std::string filePath); - bool ExistsPath(std::string path); - bool IsDirectory(std::string path); - std::vector FetchFileNames(std::string path); - std::vector FetchDirectories(std::string path); - bool CreateDirectory(std::string path); - bool Compress(std::string filePath, std::string outputPath); - bool Decompress(std::string filePath, std::string outputPath); -}; - -#endif \ No newline at end of file diff --git a/src/filesystem/logs/Log.cpp b/src/filesystem/logs/Log.cpp deleted file mode 100644 index 792c2f599..000000000 --- a/src/filesystem/logs/Log.cpp +++ /dev/null @@ -1,37 +0,0 @@ -#include "Log.h" -#include "../files/Files.h" -#include "../../server/configuration/Configuration.h" - -std::string Log::GenerateLogName() -{ - std::string loggingMode = g_Config->FetchValue("core.logging.mode"); - if (loggingMode == "daily") - { - time_t now = time(0); - tm *ltm = localtime(&now); - return string_format("%s_%02d-%02d-%d.log", this->m_path.c_str(), ltm->tm_mday, ltm->tm_mon + 1, ltm->tm_year + 1900).c_str(); - } - else if (loggingMode == "map") - return string_format("%s_%s.log", this->m_path.c_str(), engine->GetServerGlobals()->mapname.ToCStr()); - else - return string_format("%s.log", this->m_path.c_str()); -} - -void Log::WriteLog(LogType_t logType, std::string str) -{ - auto GetLogPrefix = [logType]() - { - if (logType == LogType_t::Debug) - return "Debug"; - else if (logType == LogType_t::Error) - return "Error"; - else if (logType == LogType_t::Warning) - return "Warning"; - else if (logType == LogType_t::Common) - return "Common"; - else - return "Unknown"; - }; - - Files::Append(this->GenerateLogName(), string_format("[%s] %s", GetLogPrefix(), str.c_str())); -} diff --git a/src/filesystem/logs/Log.h b/src/filesystem/logs/Log.h deleted file mode 100644 index af3d0b612..000000000 --- a/src/filesystem/logs/Log.h +++ /dev/null @@ -1,24 +0,0 @@ -#ifndef _log_h -#define _log_h - -#include - -#include "../../types/LogType.h" - -class Log -{ -private: - std::string m_path; - -public: - Log(std::string path) - { - this->m_path = "addons/swiftly/logs/" + path; - } - ~Log() {} - - void WriteLog(LogType_t logType, std::string str); - std::string GenerateLogName(); -}; - -#endif \ No newline at end of file diff --git a/src/filesystem/logs/Logger.cpp b/src/filesystem/logs/Logger.cpp deleted file mode 100644 index e1807b10c..000000000 --- a/src/filesystem/logs/Logger.cpp +++ /dev/null @@ -1,37 +0,0 @@ -#include "Logger.h" -#include "../files/Files.h" - -Log *Logger::FetchLogger(std::string key) -{ - if (this->m_Loggers.find(key) == this->m_Loggers.end()) - return nullptr; - - return this->m_Loggers[key]; -} - -void Logger::AddLogger(std::string key, bool plugin) -{ - if (g_Config->FetchValue("core.logging.enabled") == false) - return; - if (this->m_Loggers.find(key) != this->m_Loggers.end()) - return; - - if (!Files::ExistsPath("addons/swiftly/logs")) - Files::CreateDirectory("addons/swiftly/logs"); - if (!Files::ExistsPath("addons/swiftly/logs/plugins")) - Files::CreateDirectory("addons/swiftly/logs/plugins"); - - Log *logger = new Log((plugin ? "plugins/" : "") + key); - this->m_Loggers.insert(std::make_pair(key, logger)); -} - -void Logger::RemoveLogger(std::string key) -{ - if (g_Config->FetchValue("core.logging.enabled") == false) - return; - if (this->m_Loggers.find(key) == this->m_Loggers.end()) - return; - - delete this->m_Loggers[key]; - this->m_Loggers.erase(key); -} \ No newline at end of file diff --git a/src/filesystem/logs/Logger.h b/src/filesystem/logs/Logger.h deleted file mode 100644 index cc939dd40..000000000 --- a/src/filesystem/logs/Logger.h +++ /dev/null @@ -1,25 +0,0 @@ -#ifndef _logger_h -#define _logger_h - -#include -#include -#include "Log.h" -#include "../../server/configuration/Configuration.h" - -class Logger -{ -private: - std::map m_Loggers; - -public: - Logger() {} - ~Logger() {} - - Log *FetchLogger(std::string key); - void AddLogger(std::string key, bool plugin); - void RemoveLogger(std::string key); -}; - -extern Logger *g_Logger; - -#endif \ No newline at end of file diff --git a/src/memory/encoders/json.cpp b/src/memory/encoders/json.cpp deleted file mode 100644 index 06efe1311..000000000 --- a/src/memory/encoders/json.cpp +++ /dev/null @@ -1,43 +0,0 @@ -#include "json.h" - -std::string encoders::json::SerializeArrayToString(std::vector v) -{ - rapidjson::Document document(rapidjson::kArrayType); - - for (const auto& val : v) - { - const std::any& value = val; - - if (value.type() == typeid(const char*)) - document.PushBack(rapidjson::Value().SetString(std::any_cast(value), document.GetAllocator()), document.GetAllocator()); - else if (value.type() == typeid(std::string)) - document.PushBack(rapidjson::Value().SetString(std::any_cast(value).c_str(), document.GetAllocator()), document.GetAllocator()); - else if (value.type() == typeid(uint64_t)) - document.PushBack(rapidjson::Value().SetUint64(std::any_cast(value)), document.GetAllocator()); - else if (value.type() == typeid(uint32_t)) - document.PushBack(rapidjson::Value().SetUint(std::any_cast(value)), document.GetAllocator()); - else if (value.type() == typeid(uint16_t)) - document.PushBack(rapidjson::Value().SetUint(std::any_cast(value)), document.GetAllocator()); - else if (value.type() == typeid(uint8_t)) - document.PushBack(rapidjson::Value().SetUint(std::any_cast(value)), document.GetAllocator()); - else if (value.type() == typeid(int64_t)) - document.PushBack(rapidjson::Value().SetInt64(std::any_cast(value)), document.GetAllocator()); - else if (value.type() == typeid(int32_t)) - document.PushBack(rapidjson::Value().SetInt(std::any_cast(value)), document.GetAllocator()); - else if (value.type() == typeid(int16_t)) - document.PushBack(rapidjson::Value().SetInt(std::any_cast(value)), document.GetAllocator()); - else if (value.type() == typeid(int8_t)) - document.PushBack(rapidjson::Value().SetInt(std::any_cast(value)), document.GetAllocator()); - else if (value.type() == typeid(bool)) - document.PushBack(rapidjson::Value().SetBool(std::any_cast(value)), document.GetAllocator()); - else if (value.type() == typeid(float)) - document.PushBack(rapidjson::Value().SetFloat(std::any_cast(value)), document.GetAllocator()); - else if (value.type() == typeid(double)) - document.PushBack(rapidjson::Value().SetDouble(std::any_cast(value)), document.GetAllocator()); - } - - rapidjson::StringBuffer buffer; - rapidjson::Writer writer(buffer); - document.Accept(writer); - return std::string(buffer.GetString()); -} \ No newline at end of file diff --git a/src/memory/encoders/json.h b/src/memory/encoders/json.h deleted file mode 100644 index 7bd3d4625..000000000 --- a/src/memory/encoders/json.h +++ /dev/null @@ -1,19 +0,0 @@ -#ifndef _encoders_json_h -#define _encoders_json_h - -#include -#include -#include - -#include -#include -#include -#include - -namespace encoders { - namespace json { - std::string SerializeArrayToString(std::vector v); - }; -}; - -#endif \ No newline at end of file diff --git a/src/memory/encoders/msgpack.cpp b/src/memory/encoders/msgpack.cpp deleted file mode 100644 index 4920a1cbe..000000000 --- a/src/memory/encoders/msgpack.cpp +++ /dev/null @@ -1,123 +0,0 @@ -#include "msgpack.h" -#include - -namespace encoders { - namespace msgpack { - - std::string emptyData = ""; - bool setEmptyData = false; - - std::string SerializeToString(std::vector v) - { - if (v.size() <= 0) { - if (!setEmptyData) - { - setEmptyData = true; - - std::stringstream ss; - std::vector<::msgpack::object> eventData; - - ::msgpack::pack(ss, eventData); - emptyData = ss.str(); - } - - return emptyData; - } - - std::stringstream ss; - std::vector<::msgpack::object> data; - - for (auto& value : v) - { - if (value.type() == typeid(const char*)) - data.push_back(::msgpack::object(std::any_cast(value))); - else if (value.type() == typeid(std::string)) - data.push_back(::msgpack::object(std::any_cast(value).c_str())); - else if (value.type() == typeid(uint64)) - data.push_back(::msgpack::object(std::any_cast(value))); - else if (value.type() == typeid(uint32)) - data.push_back(::msgpack::object(std::any_cast(value))); - else if (value.type() == typeid(unsigned long)) - data.push_back(::msgpack::object(std::any_cast(value))); - else if (value.type() == typeid(uint16)) - data.push_back(::msgpack::object(std::any_cast(value))); - else if (value.type() == typeid(uint8)) - data.push_back(::msgpack::object(std::any_cast(value))); - else if (value.type() == typeid(int64)) - data.push_back(::msgpack::object(std::any_cast(value))); - else if (value.type() == typeid(int32)) - data.push_back(::msgpack::object(std::any_cast(value))); - else if (value.type() == typeid(long)) - data.push_back(::msgpack::object(std::any_cast(value))); - else if (value.type() == typeid(int16)) - data.push_back(::msgpack::object(std::any_cast(value))); - else if (value.type() == typeid(int8)) - data.push_back(::msgpack::object(std::any_cast(value))); - else if (value.type() == typeid(bool)) - data.push_back(::msgpack::object(std::any_cast(value))); - else if (value.type() == typeid(float)) - data.push_back(::msgpack::object(std::any_cast(value))); - else if (value.type() == typeid(double)) - data.push_back(::msgpack::object(std::any_cast(value))); - } - - ::msgpack::pack(ss, data); - - return ss.str(); - } - - std::vector DeserializeFromString(std::string str) { - std::vector res; - - ::msgpack::object_handle result; - - try { - ::msgpack::unpack(result, str.c_str(), str.length()); - } catch(std::exception &e) { - return res; - } - - ::msgpack::object obj = result.get(); - - if (obj.type != ::msgpack::type::ARRAY) { - return res; - } - std::vector<::msgpack::object> obj_vector; - obj.convert(obj_vector); - - for (const auto& elem : obj_vector) { - switch (elem.type) { - case ::msgpack::type::BOOLEAN: - res.push_back(elem.as()); - break; - case ::msgpack::type::POSITIVE_INTEGER: - case ::msgpack::type::NEGATIVE_INTEGER: - res.push_back(elem.as()); - break; - case ::msgpack::type::FLOAT32: - case ::msgpack::type::FLOAT64: - res.push_back(elem.as()); - break; - case ::msgpack::type::STR: - res.push_back(elem.as()); - break; - case ::msgpack::type::ARRAY: { - std::vector nested = DeserializeFromString(elem.as()); - res.push_back(nested); - break; - } - case ::msgpack::type::MAP: - case ::msgpack::type::BIN: - case ::msgpack::type::EXT: - case ::msgpack::type::NIL: - res.push_back(nullptr); - break; - default: - throw std::runtime_error("Unsupported type in MessagePack data"); - } - } - - return res; - } - }; -}; \ No newline at end of file diff --git a/src/memory/encoders/msgpack.h b/src/memory/encoders/msgpack.h deleted file mode 100644 index a7ac6918b..000000000 --- a/src/memory/encoders/msgpack.h +++ /dev/null @@ -1,16 +0,0 @@ -#ifndef _encoders_msgpack_h -#define _encoders_msgpack_h - -#include -#include -#include -#include - -namespace encoders { - namespace msgpack { - std::string SerializeToString(std::vector v); - std::vector DeserializeFromString(std::string str); - }; -}; - -#endif \ No newline at end of file diff --git a/src/memory/hooks/FuncHook.h b/src/memory/hooks/FuncHook.h deleted file mode 100644 index 1c8ea1665..000000000 --- a/src/memory/hooks/FuncHook.h +++ /dev/null @@ -1,162 +0,0 @@ -#ifndef _hooks_funchook_h -#define _hooks_funchook_h - -#include -#include -#include -#include "../signatures/Signatures.h" -#include "../signatures/Offsets.h" -#include "../../common.h" -#include "../../entrypoint.h" -#include "../../utils/utils.h" - -class FuncHookBase -{ -public: - virtual const char *GetName() = 0; - virtual void Free() = 0; - virtual bool Create() = 0; - virtual void Enable() = 0; - virtual void Disable() = 0; -}; - -extern CUtlVector g_vecHooks; - -template -class FuncHook : FuncHookBase -{ -private: - const char *m_name; - T *m_fn; - T *m_pfn; - - const char* m_lib; - const char* m_cls; - const char* m_off; - - funchook_t *m_hook; - bool m_installed; - -public: - FuncHook(T *fn, const char *name) - { - this->m_fn = fn; - this->m_name = name; - - g_vecHooks.AddToTail(this); - } - - FuncHook(T *fn, const char* lib, const char* cls, const char* off) - { - this->m_fn = fn; - this->m_lib = lib; - this->m_cls = cls; - this->m_off = off; - this->m_name = off; - - g_vecHooks.AddToTail(this); - } - - ~FuncHook() - { - this->Free(); - } - - bool Create() override; - void Enable() override; - void Disable() override; - void Free() override; - const char *GetName() override { return this->m_name; } - T *GetFn() { return this->m_fn; } - - template - auto operator()(Args &&...args) - { - return std::invoke(this->m_pfn, std::forward(args)...); - } -}; - -extern CUtlVector g_funcHooks; - -template -bool FuncHook::Create() -{ - void *ptr = nullptr; - if(this->m_lib == nullptr) { - if (!g_Signatures->Exists(this->m_name)) - { - PLUGIN_PRINTF("FuncHook", "Failed create for %s.\nError Message: Signature was not found.\n", this->GetName()); - return false; - } - - ptr = g_Signatures->FetchRawSignature(this->m_name); - } else { - DynLibUtils::CModule mod = DetermineModuleByLibrary(this->m_lib); - void* serverSideClientVTable = mod.GetVirtualTableByName(this->m_cls); - ptr = ((void**)serverSideClientVTable)[g_Offsets->GetOffset(this->m_off)]; - } - - if (ptr == nullptr) - { - PLUGIN_PRINTF("FuncHook", "Failed create for %s.\nError Message: Invalid signature pointer.\n", this->GetName()); - return false; - } - - this->m_pfn = reinterpret_cast(ptr); - - this->m_hook = funchook_create(); - funchook_prepare(this->m_hook, (void **)&this->m_pfn, (void *)this->m_fn); - - g_funcHooks.AddToTail(this); - - return true; -} - -template -void FuncHook::Enable() -{ - if (!this->m_hook) - return; - if(this->m_installed) - return; - - int err = funchook_install(this->m_hook, 0); - - if (!err) - this->m_installed = true; - else - PLUGIN_PRINTF("FuncHook", "Failed enable for %s.\nError Code: %d\nError Message: %s\n", this->GetName(), err, funchook_error_message(this->m_hook)); -} - -template -void FuncHook::Disable() -{ - if (!this->m_hook) - return; - if(!this->m_installed) - return; - - int err = funchook_uninstall(this->m_hook, 0); - - if (!err) - this->m_installed = false; - else - PLUGIN_PRINTF("FuncHook", "Failed disable for %s.\nError Code: %d\nError Message: %s\n", this->GetName(), err, funchook_error_message(this->m_hook)); -} - -template -void FuncHook::Free() -{ - if (!this->m_hook) - return; - - if (this->m_installed) - this->Disable(); - - int err = funchook_destroy(this->m_hook); - - if (err != 0) - PLUGIN_PRINTF("FuncHook", "Failed destruction for %s.\nError Code: %d\nError Message: %s\n", this->GetName(), err, funchook_error_message(this->m_hook)); -} - -#endif \ No newline at end of file diff --git a/src/memory/hooks/NativeHooks.cpp b/src/memory/hooks/NativeHooks.cpp deleted file mode 100644 index f1c886bc3..000000000 --- a/src/memory/hooks/NativeHooks.cpp +++ /dev/null @@ -1,28 +0,0 @@ -#include "NativeHooks.h" - -CUtlVector g_funcHooks; - -bool InitializeHooks() -{ - g_funcHooks.PurgeAndDeleteElements(); - - FOR_EACH_VEC(g_vecHooks, i) - { - PLUGIN_PRINTF("Hooks", "Hooking %s...\n", g_vecHooks[i]->GetName()); - if (!g_vecHooks[i]->Create()) - return false; - - g_vecHooks[i]->Enable(); - PLUGIN_PRINTF("Hooks", "Hooked %s.\n", g_vecHooks[i]->GetName()); - } - - return true; -} - -void UnloadHooks() -{ - FOR_EACH_VEC(g_vecHooks, i) - { - g_vecHooks[i]->Disable(); - } -} \ No newline at end of file diff --git a/src/memory/hooks/NativeHooks.h b/src/memory/hooks/NativeHooks.h deleted file mode 100644 index 09e2dc353..000000000 --- a/src/memory/hooks/NativeHooks.h +++ /dev/null @@ -1,9 +0,0 @@ -#ifndef _nativehooks_h -#define _nativehooks_h - -#include "FuncHook.h" - -bool InitializeHooks(); -void UnloadHooks(); - -#endif \ No newline at end of file diff --git a/src/memory/signatures/Offsets.cpp b/src/memory/signatures/Offsets.cpp deleted file mode 100644 index 7cfe974a2..000000000 --- a/src/memory/signatures/Offsets.cpp +++ /dev/null @@ -1,83 +0,0 @@ -#include "Offsets.h" - -#include "../../common.h" -#include "../../filesystem/files/Files.h" -#include - -#include -#include - -#define HAS_MEMBER(DOCUMENT, MEMBER_NAME, MEMBER_PATH) \ - if (!DOCUMENT.HasMember(MEMBER_NAME)) \ - { \ - OffsetsError(string_format("The field \"%s\" doesn't exists.", MEMBER_PATH)); \ - continue; \ - } - -#define IS_NUMBER(DOCUMENT, MEMBER_NAME, MEMBER_PATH) \ - if (!DOCUMENT[MEMBER_NAME].IsInt()) \ - { \ - OffsetsError(string_format("The field \"%s\" is not a number.", MEMBER_PATH)); \ - continue; \ - } - -void OffsetsError(std::string text) -{ - if (!g_SMAPI) - return; - - PLUGIN_PRINTF("Offsets", "%s\n", text.c_str()); -} - -void Offsets::LoadOffsets() -{ - auto files = Files::FetchFileNames("addons/swiftly/gamedata"); - for(auto file : files) { - if(!ends_with(file, "offsets.json")) continue; - - rapidjson::Document offsetsFile; - offsetsFile.Parse(Files::Read(file).c_str()); - if (offsetsFile.HasParseError()) { - OffsetsError(string_format("A parsing error has been detected.\nError (offset %u): %s\n", (unsigned)offsetsFile.GetErrorOffset(), GetParseError_En(offsetsFile.GetParseError()))); - continue; - } - - if (offsetsFile.IsArray()) { - OffsetsError("Offsets file cannot be an array."); - continue; - } - - for (auto it = offsetsFile.MemberBegin(); it != offsetsFile.MemberEnd(); ++it) - { - std::string name = it->name.GetString(); - if(this->offsets.find(name) != this->offsets.end()) { - OffsetsError(string_format("The offsets for '%s' has been already loaded.", name.c_str())); - continue; - } - - HAS_MEMBER(it->value, "windows", string_format("%s.windows", name)) - HAS_MEMBER(it->value, "linux", string_format("%s.linux", name)) - - IS_NUMBER(it->value, "windows", string_format("%s.windows", name)) - IS_NUMBER(it->value, "linux", string_format("%s.linux", name)) - - int offset = it->value[WIN_LINUX("windows", "linux")].GetInt(); - - this->offsets.insert(std::make_pair(name, offset)); - } - } -} - -int Offsets::GetOffset(std::string name) -{ - if (this->offsets.find(name) == this->offsets.end()) - return -1; - - return this->offsets.at(name); -} - -EXT_API int swiftly_GetOffset(const char* name) -{ - if(!g_Offsets) return -1; - return g_Offsets->GetOffset(name); -} \ No newline at end of file diff --git a/src/memory/signatures/Offsets.h b/src/memory/signatures/Offsets.h deleted file mode 100644 index bd17589b3..000000000 --- a/src/memory/signatures/Offsets.h +++ /dev/null @@ -1,21 +0,0 @@ -#ifndef _offsets_h -#define _offsets_h - -#include -#include - -class Offsets -{ -private: - std::map offsets; - -public: - Offsets() {} - - void LoadOffsets(); - int GetOffset(std::string name); -}; - -extern Offsets *g_Offsets; - -#endif \ No newline at end of file diff --git a/src/memory/signatures/Patches.cpp b/src/memory/signatures/Patches.cpp deleted file mode 100644 index 7c4fbcb2f..000000000 --- a/src/memory/signatures/Patches.cpp +++ /dev/null @@ -1,153 +0,0 @@ -#include "Patches.h" -#include "Signatures.h" -#include "../../common.h" -#include "../../utils/plat.h" -#include "../../filesystem/files/Files.h" -#include "../../server/configuration/Configuration.h" - -#include -#include - -#define HAS_MEMBER(DOCUMENT, MEMBER_NAME, MEMBER_PATH) \ - if (!DOCUMENT.HasMember(MEMBER_NAME)) \ - { \ - PatchesError(string_format("The field \"%s\" doesn't exists.", MEMBER_PATH)); \ - continue; \ - } - -#define IS_STRING(DOCUMENT, MEMBER_NAME, MEMBER_PATH) \ - if (!DOCUMENT[MEMBER_NAME].IsString()) \ - { \ - PatchesError(string_format("The field \"%s\" is not a string.", MEMBER_PATH)); \ - continue; \ - } - -int HexStringToUint8Array(const char* hexString, uint8_t* byteArray, size_t maxBytes) -{ - if (!hexString) - return -1; - - size_t hexStringLength = strlen(hexString); - size_t byteCount = hexStringLength / 4; - - if (hexStringLength % 4 != 0 || byteCount == 0 || byteCount > maxBytes) - return -1; - - for (size_t i = 0; i < hexStringLength; i += 4) - { - if (sscanf(hexString + i, "\\x%2hhX", &byteArray[i / 4]) != 1) - return -1; - } - - byteArray[byteCount] = '\0'; - - return byteCount; -} - -byte* HexToByte(const char* src, size_t& length) -{ - if (!src || strlen(src) <= 0) - return nullptr; - - length = strlen(src) / 4; - uint8_t* dest = new uint8_t[length]; - int byteCount = HexStringToUint8Array(src, dest, length); - if (byteCount <= 0) - return nullptr; - - return (byte*)dest; -} - -void PatchesError(std::string text) -{ - if (!g_SMAPI) - return; - - PLUGIN_PRINTF("Patches", "%s\n", text.c_str()); -} - -void Patches::LoadPatches() -{ - auto files = Files::FetchFileNames("addons/swiftly/gamedata"); - for(auto file : files) { - if(!ends_with(file, "patches.json")) continue; - - rapidjson::Document patchesFile; - patchesFile.Parse(Files::Read(file).c_str()); - if (patchesFile.HasParseError()) { - PatchesError(string_format("A parsing error has been detected.\nError (offset %u): %s\n", (unsigned)patchesFile.GetErrorOffset(), GetParseError_En(patchesFile.GetParseError()))); - continue; - } - - if (patchesFile.IsArray()) { - PatchesError("Patches file cannot be an array."); - continue; - } - - for (auto it = patchesFile.MemberBegin(); it != patchesFile.MemberEnd(); ++it) - { - std::string name = it->name.GetString(); - if(this->patches.find(name) != this->patches.end()) { - PatchesError(string_format("The patch for '%s' has been already loaded.", name.c_str())); - continue; - } - - HAS_MEMBER(it->value, "signature", string_format("%s.signature", name)); - HAS_MEMBER(it->value, "windows", string_format("%s.windows", name)); - HAS_MEMBER(it->value, "linux", string_format("%s.linux", name)); - - IS_STRING(it->value, "signature", string_format("%s.signature", name)); - IS_STRING(it->value, "windows", string_format("%s.windows", name)); - IS_STRING(it->value, "linux", string_format("%s.linux", name)); - - std::string signature = it->value["signature"].GetString(); - if (!g_Signatures->Exists(signature)) - { - PatchesError(string_format("%s: Signature '%s' does not exists in signatures file.\n", name.c_str(), signature.c_str())); - continue; - } - - this->patches.insert(std::make_pair(name, std::string(it->value[WIN_LINUX("windows", "linux")].GetString()))); - this->signatures.insert(std::make_pair(name, signature)); - } - } -} - -void Patches::PerformPatch(std::string patch_name) -{ - if (this->patches.find(patch_name) == this->patches.end()) - { - PLUGIN_PRINTF("Patch", "Invalid patch name: \"%s\".\n", patch_name.c_str()); - return; - } - - if(this->patches.at(patch_name) == "") return; - - void* patchAddress = g_Signatures->FetchRawSignature(this->signatures.at(patch_name)); - - size_t iLength = 0; - byte* patch = HexToByte(("\\x" + replace(this->patches.at(patch_name), " ", "\\x")).c_str(), iLength); - - Plat_WriteMemory(patchAddress, patch, iLength); - PLUGIN_PRINTF("Patch", "Patched \"%s\" using signature \"%s\".\n", patch_name.c_str(), this->signatures.at(patch_name).c_str()); -} - -void Patches::PerformPatches() -{ - if (g_Config->HasKey("core.patches_to_perform")) - { - std::vector patchesToPerform = explode(g_Config->FetchValue("core.patches_to_perform"), " "); - - uint32_t patchesPerformed = 0; - for (std::string& patchName : patchesToPerform) - { - if (patchName == "") - continue; - - this->PerformPatch(patchName); - ++patchesPerformed; - } - - PLUGIN_PRINTF("Patch", "Patches performed: %02d.\n", patchesPerformed); - } -} \ No newline at end of file diff --git a/src/memory/signatures/Patches.h b/src/memory/signatures/Patches.h deleted file mode 100644 index 2fc67cc43..000000000 --- a/src/memory/signatures/Patches.h +++ /dev/null @@ -1,23 +0,0 @@ -#ifndef _patches_h -#define _patches_h - -#include -#include - -class Patches -{ -private: - std::map patches; - std::map signatures; - -public: - Patches() {} - - void LoadPatches(); - void PerformPatch(std::string patch_name); - void PerformPatches(); -}; - -extern Patches *g_Patches; - -#endif \ No newline at end of file diff --git a/src/memory/signatures/Signatures.cpp b/src/memory/signatures/Signatures.cpp deleted file mode 100644 index 0b8025fb8..000000000 --- a/src/memory/signatures/Signatures.cpp +++ /dev/null @@ -1,122 +0,0 @@ -#include "Signatures.h" -#include "../../common.h" -#include "../../filesystem/files/Files.h" - -#include "../../utils/utils.h" - -#include -#include -#include - -#include "../../../vendor/dynlib/module.h" - -#ifdef _WIN32 -#define ROOTBIN "/bin/win64/" -#define GAMEBIN "/csgo/bin/win64/" -#else -#define ROOTBIN "/bin/linuxsteamrt64/" -#define GAMEBIN "/csgo/bin/linuxsteamrt64/" -#endif - -#define HAS_MEMBER(DOCUMENT, MEMBER_NAME, MEMBER_PATH) \ - if (!DOCUMENT.HasMember(MEMBER_NAME)) \ - { \ - SignaturesError(string_format("The field \"%s\" doesn't exists.", MEMBER_PATH)); \ - continue; \ - } - -#define IS_STRING(DOCUMENT, MEMBER_NAME, MEMBER_PATH) \ - if (!DOCUMENT[MEMBER_NAME].IsString()) \ - { \ - SignaturesError(string_format("The field \"%s\" is not a string.", MEMBER_PATH)); \ - continue; \ - } - -DynLibUtils::CModule DetermineModuleByLibrary(std::string library) { - if (library == "server") - return DynLibUtils::CModule(server); - else if (library == "engine2") - return DynLibUtils::CModule(engine); - else - return DynLibUtils::CModule(library); -} - -void SignaturesError(std::string text) -{ - if (!g_SMAPI) - return; - - PLUGIN_PRINTF("Signatures", "%s\n", text.c_str()); -} - -bool Signatures::Exists(std::string name) -{ - return (this->signatures.find(name) != this->signatures.end()); -} - -void Signatures::LoadSignatures() -{ - auto files = Files::FetchFileNames("addons/swiftly/gamedata"); - for(auto file : files) { - if(!ends_with(file, "signatures.json")) continue; - - rapidjson::Document signaturesFile; - signaturesFile.Parse(Files::Read(file).c_str()); - if (signaturesFile.HasParseError()) { - SignaturesError(string_format("A parsing error has been detected.\nError (offset %u): %s", (unsigned)signaturesFile.GetErrorOffset(), GetParseError_En(signaturesFile.GetParseError()))); - continue; - } - - if (signaturesFile.IsArray()) { - SignaturesError("Signatures file cannot be an array."); - continue; - } - - for (auto it = signaturesFile.MemberBegin(); it != signaturesFile.MemberEnd(); ++it) - { - std::string name = it->name.GetString(); - if(this->signatures.find(name) != this->signatures.end()) { - SignaturesError(string_format("The signature for '%s' has been already loaded.", name.c_str())); - continue; - } - - HAS_MEMBER(it->value, "lib", string_format("%s.lib", name)); - HAS_MEMBER(it->value, "windows", string_format("%s.windows", name)); - HAS_MEMBER(it->value, "linux", string_format("%s.linux", name)); - - IS_STRING(it->value, "lib", string_format("%s.lib", name)); - IS_STRING(it->value, "windows", string_format("%s.windows", name)); - IS_STRING(it->value, "linux", string_format("%s.linux", name)); - - const char* lib = it->value["lib"].GetString(); - std::string rawSig = it->value[WIN_LINUX("windows", "linux")].GetString(); - SignaturesError(string_format("Searching for \"%s\"...", rawSig.c_str())); - - DynLibUtils::CModule module = DetermineModuleByLibrary(lib); - void* sig = nullptr; - if (rawSig.at(0) == '@') sig = module.GetFunctionByName((rawSig.c_str() + 1)).RCast(); - else sig = module.FindPattern(rawSig).RCast(); - - if (!sig) - { - SignaturesError(string_format("Couldn't find the signature for '%s' (Library '%s').", name.c_str(), lib)); - continue; - } - - SignaturesError(string_format("Found function '%s' (Library '%s') pointing at %p.", name.c_str(), lib, sig)); - - this->signatures.insert(std::make_pair(name, sig)); - } - } -} - -EXT_API void* swiftly_GetSignature(const char* name) -{ - if(!g_Signatures) return nullptr; - return g_Signatures->FetchRawSignature(name); -} - -EXT_API void* swiftly_AccessVTable(const char* module, const char* vTableName) -{ - return DetermineModuleByLibrary(module).GetVirtualTableByName(vTableName).RCast(); -} \ No newline at end of file diff --git a/src/memory/signatures/Signatures.h b/src/memory/signatures/Signatures.h deleted file mode 100644 index 60d8ead50..000000000 --- a/src/memory/signatures/Signatures.h +++ /dev/null @@ -1,68 +0,0 @@ -#pragma once - -#include -#include -#include -#include "../../../vendor/dynlib/module.h" - -class CBasePlayerController; -class CCSPlayerController; -class CBaseEntity; -class CBaseModelEntity; -class CEntityInstance; -class CCSPlayer_ItemServices; -class CCSPlayerPawn; -class CCSPlayerPawnBase; -class CTakeDamageInfo; -class IRecipientFilter; -class CEntityIndex; -class CCSPlayer_MovementServices; - -struct EmitSound_t; -struct SndOpEventGuid_t; - -typedef void (*CCSPlayerController_SwitchTeam)(CCSPlayerController* pController, unsigned int team); -typedef void* (*UTIL_CreateEntityByName)(const char*, int); -typedef void (*CBaseModelEntity_SetModel_t)(CBaseModelEntity*, const char*); -typedef void (*CBaseEntity_DispatchSpawn)(CBaseEntity*, void*); -typedef void (*UTIL_Remove)(CEntityInstance*); -typedef void (*CEntityInstance_AcceptInput)(CEntityInstance*, const char*, CEntityInstance*, CEntityInstance*, variant_t*, int); -typedef void (*CAttributeList_SetOrAddAttributeValueByName_t)(void*, const char*, float); -typedef void (*CBaseModelEntity_SetBodygroup_t)(void*, const char*, ...); -typedef void (*GiveNamedItem_t)(CCSPlayer_ItemServices*, const char*, int, int, int, int); -typedef SndOpEventGuid_t(*CBaseEntity_EmitSoundFilter)(IRecipientFilter& filter, CEntityIndex ent, const EmitSound_t& params); -typedef void (*CBaseEntity_EmitSoundParams)(CBaseEntity*, const char*, int, float, float); -typedef void (*CBaseEntity_TakeDamage_t)(CBaseEntity*, CTakeDamageInfo*); -typedef void (*CTakeDamageInfo_Constructor)(CTakeDamageInfo*, CBaseEntity*, CBaseEntity*, CBaseEntity*, const Vector*, const Vector*, float, int, int, void*); - -DynLibUtils::CModule DetermineModuleByLibrary(std::string library); - -class Signatures -{ -private: - std::map signatures; - -public: - void LoadSignatures(); - - template - T FetchSignature(std::string name) - { - if (!this->Exists(name)) - return nullptr; - - return reinterpret_cast(this->signatures[name]); - } - - void* FetchRawSignature(std::string name) - { - if (!this->Exists(name)) - return nullptr; - - return this->signatures[name]; - } - - bool Exists(std::string name); -}; - -extern Signatures* g_Signatures; \ No newline at end of file diff --git a/src/network/database/DBDriver.h b/src/network/database/DBDriver.h deleted file mode 100644 index 09ee5845d..000000000 --- a/src/network/database/DBDriver.h +++ /dev/null @@ -1,19 +0,0 @@ -#ifndef _dbdriver_h -#define _dbdriver_h - -#include "IDatabase.h" -#include -#include - -class DBDriver -{ -private: - std::vector databases; -public: - virtual IDatabase* RegisterDatabase(); - virtual std::string GetKind(); - - std::vector GetDatabases() { return databases; } -}; - -#endif \ No newline at end of file diff --git a/src/network/database/DatabaseManager.cpp b/src/network/database/DatabaseManager.cpp deleted file mode 100644 index 58da0692e..000000000 --- a/src/network/database/DatabaseManager.cpp +++ /dev/null @@ -1,90 +0,0 @@ -#include "DatabaseManager.h" -#include "../../filesystem/files/Files.h" -#include "../../common.h" -#include "DBDriver.h" -#include -#include -#include - -std::vector dbDrivers; - -void DatabasesError(std::string error) -{ - if (!g_SMAPI) - return; - - PLUGIN_PRINTF("Databases", "Error: %s\n", error.c_str()); -} - -void WritePluginFile(std::string path, rapidjson::Value& val); - -void DatabaseManager::LoadDatabases() -{ - bool modified = false; - rapidjson::Document databasesConfigFile; - databasesConfigFile.Parse(Files::Read(this->databasesPath).c_str()); - if (databasesConfigFile.HasParseError()) - return DatabasesError(string_format("A parsing error has been detected.\nError (offset %u): %s\n", (unsigned)databasesConfigFile.GetErrorOffset(), GetParseError_En(databasesConfigFile.GetParseError()))); - - if (!databasesConfigFile.IsObject()) - return DatabasesError("Databases file needs to be an object."); - - for (auto itr = databasesConfigFile.MemberBegin(); itr != databasesConfigFile.MemberEnd(); ++itr) - { - if (!itr->value.IsObject()) - { - DatabasesError(string_format("Database connection \"%s\" needs to be an object.", itr->name.GetString())); - continue; - } - - if(!itr->value.HasMember("kind")) { - modified = true; - itr->value.AddMember(rapidjson::Value().SetString("kind", databasesConfigFile.GetAllocator()), rapidjson::Value().SetString("mysql", databasesConfigFile.GetAllocator()), databasesConfigFile.GetAllocator()); - } - - const char *connectionName = itr->name.GetString(); - std::map connection_details; - - for(auto it = itr->value.MemberBegin(); it != itr->value.MemberEnd(); ++it) - { - if(it->value.IsNumber()) connection_details.insert({ it->name.GetString(), std::to_string(it->value.GetInt64()) }); - else if (it->value.IsString()) connection_details.insert({ it->name.GetString(), it->value.GetString() }); - } - - IDatabase* db = nullptr; - - for(auto driver : dbDrivers) { - if(driver->GetKind() == connection_details["kind"]) { - db = driver->RegisterDatabase(); - break; - } - } - - if(!db) { - PLUGIN_PRINTF("Database", "Invalid database kind for \"%s\": %s.\n", connectionName, connection_details["kind"].c_str()); - continue; - } - - db->SetConnectionConfig(connection_details); - this->databases.insert({connectionName, db}); - } - - if(modified) { - WritePluginFile("addons/swiftly/configs/databases.json", databasesConfigFile); - } - - PLUGIN_PRINTF("Database", "%d databases have been succesfully loaded.\n", this->databases.size()); -} - -IDatabase *DatabaseManager::GetDatabase(std::string name) -{ - if (this->databases.find(name) == this->databases.end()) - return nullptr; - - return this->databases.at(name); -} - -EXT_API void swiftly_RegisterDBDriver(void* driverPtr) -{ - dbDrivers.push_back((DBDriver*)driverPtr); -} \ No newline at end of file diff --git a/src/network/database/DatabaseManager.h b/src/network/database/DatabaseManager.h deleted file mode 100644 index 89dc37587..000000000 --- a/src/network/database/DatabaseManager.h +++ /dev/null @@ -1,23 +0,0 @@ -#ifndef _databasemanager_h -#define _databasemanager_h - -#include -#include "IDatabase.h" - -class DatabaseManager -{ -private: - const char *databasesPath = "addons/swiftly/configs/databases.json"; - std::map databases; - -public: - DatabaseManager() {} - ~DatabaseManager() {} - - void LoadDatabases(); - IDatabase *GetDatabase(std::string name); -}; - -extern DatabaseManager *g_dbManager; - -#endif \ No newline at end of file diff --git a/src/network/database/IDatabase.h b/src/network/database/IDatabase.h deleted file mode 100644 index b609f1ebb..000000000 --- a/src/network/database/IDatabase.h +++ /dev/null @@ -1,41 +0,0 @@ -#ifndef _idatabase_h -#define _idatabase_h - -#include -#include -#include -#include - -struct DatabaseQueryQueue -{ - std::any query; - std::string requestID; -}; - -class IDatabase -{ -public: - virtual void SetConnectionConfig(std::map connection_details) = 0; - - virtual bool Connect() = 0; - virtual void Close(bool setError) = 0; - - virtual std::string GetVersion() = 0; - virtual std::string GetKind() = 0; - - virtual bool IsConnected() = 0; - - virtual bool HasError() = 0; - virtual std::string GetError() = 0; - - virtual std::vector> Query(std::any query) = 0; - - // Mostly used in SQL-kind databases (MariaDB/MySQL, SQLite, MSSQL) - virtual std::string EscapeValue(std::string query) = 0; - - virtual void AddQueryQueue(DatabaseQueryQueue data) = 0; - - virtual const char* ProvideQueryBuilderTable() = 0; -}; - -#endif \ No newline at end of file diff --git a/src/network/usermessages/usermessages.cpp b/src/network/usermessages/usermessages.cpp deleted file mode 100644 index 604bc0f55..000000000 --- a/src/network/usermessages/usermessages.cpp +++ /dev/null @@ -1,53 +0,0 @@ -#include "usermessages.h" -#include "../../sdk/entity/CRecipientFilters.h" -#include "../../sdk/entity/serversideclient.h" - -#include "../../utils/memory.h" - -SH_DECL_EXTERN8_void(IGameEventSystem, PostEventAbstract, SH_NOATTRIB, 0, CSplitScreenSlot, bool, int, const uint64*, INetworkMessageInternal*, const CNetMessage*, unsigned long, NetChannelBufType_t) -SH_DECL_MANUALHOOK2(FilterMessage, 0, 0, 0, bool, const CNetMessage*, INetChannel*); - -PluginEvent* umEvent = nullptr; -PluginEvent* userUmEvent = nullptr; - -int hookID = -1; - -void UserMessages::Initialize() -{ - umEvent = new PluginEvent("core", nullptr, nullptr); - SH_ADD_HOOK_MEMFUNC(IGameEventSystem, PostEventAbstract, g_pGameEventSystem, this, &UserMessages::PostEvent, false); - - userUmEvent = new PluginEvent("core", nullptr, nullptr); - DynLibUtils::CModule eng = DetermineModuleByLibrary("engine2"); - void* serverSideClientVTable = FindVirtTable(&eng, "CServerSideClient", g_Offsets->GetOffset("INetworkMessageProcessingPreFilter")); - - hookID = SH_ADD_MANUALDVPHOOK(FilterMessage, serverSideClientVTable, SH_MEMBER(this, &UserMessages::FilterMessage), false); -} - -bool UserMessages::FilterMessage(const CNetMessage* cMsg, INetChannel* netchan) -{ - auto client = META_IFACEPTR(CServerSideClient); - if(!client) RETURN_META_VALUE(MRES_IGNORED, true); - - auto result = g_pluginManager->ExecuteEvent("core", "OnUserMessageReceive", encoders::msgpack::SerializeToString({ client->GetPlayerSlot().Get(), string_format("%p|%p|0x0", cMsg->GetNetMessage(), cMsg) }), userUmEvent); - if(result != EventResult::Continue) - RETURN_META_VALUE(MRES_SUPERCEDE, true); - - RETURN_META_VALUE(MRES_IGNORED, true); -} - -void UserMessages::Destroy() -{ - SH_REMOVE_HOOK_MEMFUNC(IGameEventSystem, PostEventAbstract, g_pGameEventSystem, this, &UserMessages::PostEvent, false); - delete umEvent; - - SH_REMOVE_HOOK_ID(hookID); - hookID = -1; - delete userUmEvent; -} - -void UserMessages::PostEvent(CSplitScreenSlot nSlot, bool bLocalOnly, int nClientCount, const uint64* clients, INetworkMessageInternal* pEvent, const CNetMessage* pData, unsigned long nSize, NetChannelBufType_t bufType) -{ - if(g_pluginManager->ExecuteEvent("core", "OnUserMessageSend", encoders::msgpack::SerializeToString({ string_format("%p|%p|%p", pEvent, pData, clients), bufType == BUF_RELIABLE }), umEvent) == EventResult::Stop) - RETURN_META(MRES_SUPERCEDE); -} \ No newline at end of file diff --git a/src/network/usermessages/usermessages.h b/src/network/usermessages/usermessages.h deleted file mode 100644 index e9756ad84..000000000 --- a/src/network/usermessages/usermessages.h +++ /dev/null @@ -1,15 +0,0 @@ -#ifndef _usermessages_manager_h -#define _usermessages_manager_h - -#include "../../plugins/core/scripting.h" - -class UserMessages { -public: - void Initialize(); - void Destroy(); - - void PostEvent(CSplitScreenSlot nSlot, bool bLocalOnly, int nClientCount, const uint64 *clients, INetworkMessageInternal* pEvent, const CNetMessage* pData, unsigned long nSize, NetChannelBufType_t bufType); - bool FilterMessage(const CNetMessage* cMsg, INetChannel* netchan); -}; - -#endif \ No newline at end of file diff --git a/src/player/player/Player.cpp b/src/player/player/Player.cpp deleted file mode 100644 index 955f4b4e0..000000000 --- a/src/player/player/Player.cpp +++ /dev/null @@ -1,469 +0,0 @@ -#include "Player.h" - -#include "../../entrypoint.h" -#include "../../common.h" -#include "../../utils/utils.h" -#include "../../server/menus/MenuManager.h" -#include "../../server/commands/CommandsManager.h" -#include "../../server/configuration/Configuration.h" - -#include "networkbasetypes.pb.h" -#include "../../sdk/entity/CRecipientFilters.h" - -#include -#include "../playermanager/PlayerManager.h" - -#include "../../engine/convars/convars.h" -#include "../../plugins/core/scripting.h" -#include "../../engine/vgui/VGUI.h" - -typedef IGameEventListener2* (*GetLegacyGameEventListener)(CPlayerSlot slot); - -std::map colors = { - {"{DEFAULT}", "\x01"}, - {"{WHITE}", "\x01"}, - {"{DARKRED}", "\x02"}, - {"{LIGHTPURPLE}", "\x03"}, - {"{GREEN}", "\x04"}, - {"{OLIVE}", "\x05"}, - {"{LIME}", "\x06"}, - {"{RED}", "\x07"}, - {"{GRAY}", "\x08"}, - {"{GREY}", "\x08"}, - {"{LIGHTYELLOW}", "\x09"}, - {"{YELLOW}", "\x09"}, - {"{SILVER}", "\x0A"}, - {"{BLUEGREY}", "\x0A"}, - {"{LIGHTBLUE}", "\x0B"}, - {"{BLUE}", "\x0B"}, - {"{DARKBLUE}", "\x0C"}, - {"{PURPLE}", "\x0E"}, - {"{MAGENTA}", "\x0E"}, - {"{LIGHTRED}", "\x0F"}, - {"{GOLD}", "\x10"}, - {"{ORANGE}", "\x10"}, -}; - -std::string ProcessColor(std::string str, int team = CS_TEAM_CT) -{ - str = replace(str, "{TEAMCOLOR}", team == CS_TEAM_CT ? "{LIGHTBLUE}" : (team == CS_TEAM_T ? "{YELLOW}" : "{LIGHTPURPLE}")); - str = replace(str, "{teamcolor}", team == CS_TEAM_CT ? "{lightblue}" : (team == CS_TEAM_T ? "{yellow}" : "{lightpurple}")); - for (auto it = colors.begin(); it != colors.end(); ++it) - { - str = replace(str, it->first, it->second); - str = replace(str, str_tolower(it->first), it->second); - } - return str; -} - -Player::Player(bool m_isFakeClient, int m_slot, const char* m_name, uint64 m_xuid, std::string ip_address) -{ - this->slot = m_slot; - this->isFakeClient = m_isFakeClient; - this->connectTime = std::time(0); - this->name = m_name; - this->xuid = m_xuid; - this->ip_address = ip_address; - this->language = g_Config->FetchValue("core.language"); - - centerMessageEvent = g_gameEventManager->CreateEvent("show_survival_respawn_status", true); - menu_renderer = new MenuRenderer(this); - - centerMessageEvent->SetUint64("duration", 1); - centerMessageEvent->SetInt("userid", this->slot); - - if (!this->isFakeClient) playerListener = g_Signatures->FetchSignature("LegacyGameEventListener")(CPlayerSlot(this->slot)); -} - -Player::~Player() -{ - this->isFakeClient = true; - g_gameEventManager->FreeEvent(centerMessageEvent); - if (menu_renderer) delete menu_renderer; - if (playerObject != nullptr) - delete playerObject; -} - -CBasePlayerController* Player::GetController() -{ - return (CBasePlayerController*)g_pEntitySystem->GetEntityInstance(CEntityIndex(this->slot + 1)); -} - -CBasePlayerPawn* Player::GetPawn() -{ - CBasePlayerController* controller = this->GetController(); - if (controller == nullptr) - return nullptr; - - return controller->m_hPawn(); -} - -CCSPlayerController* Player::GetPlayerController() -{ - return (CCSPlayerController*)g_pEntitySystem->GetEntityInstance(CEntityIndex(this->slot + 1)); -} - -CCSPlayerPawn* Player::GetPlayerPawn() -{ - CCSPlayerController* controller = this->GetPlayerController(); - if (controller == nullptr) - return nullptr; - - return controller->m_hPlayerPawn().Get(); -} - -CCSPlayerPawnBase* Player::GetPlayerBasePawn() -{ - CCSPlayerPawn* pawn = this->GetPlayerPawn(); - if (pawn == nullptr) - return nullptr; - - return (CCSPlayerPawnBase*)pawn; -} - -uint64 Player::GetSteamID() -{ - if (this->IsFakeClient()) - return 0; - - CBasePlayerController* controller = this->GetController(); - if (!controller) - return this->xuid; - - return controller->m_steamID(); -} - -void Player::SendMsg(int dest, const char* msg, ...) -{ - CBasePlayerController* controller = this->GetController(); - if (!controller) - return; - if (this->IsFakeClient()) - return; - - if (dest == HUD_PRINTTALK || dest == HUD_PRINTNOTIFY) - { - va_list args; - char buffer[4096]; - va_start(args, msg); - - size_t len = vsnprintf(buffer, sizeof(buffer), msg, args); - if (len >= sizeof(buffer)) - { - len = sizeof(buffer) - 1; - buffer[len] = '\0'; - } - va_end(args); - - std::string message(buffer); - if (message.size() != 0) - { - if (ends_with(message, "\n")) - message.pop_back(); - message += "\x01"; - - bool startsWithColor = (message.at(0) == '{'); - - message = ProcessColor(message, controller->m_iTeamNum()); - - if (startsWithColor) - message = " " + message; - } - - controller->SendMsg(dest, message.c_str()); - } - else if (dest == HUD_PRINTCENTER) - { - if (std::string(msg) == "") this->centerMessageEndTime = 0; - else { - this->centerMessageEndTime = GetTime() + 5000; - this->centerMessageEvent->SetString("loc_token", msg); - } - } - else if (dest == HUD_PRINTCONSOLE) - { - if (!g_SMAPI) - return; - - va_list args; - char buffer[1024]; - va_start(args, msg); - - size_t len = vsnprintf(buffer, sizeof(buffer), msg, args); - if (len >= sizeof(buffer)) - { - len = sizeof(buffer) - 1; - buffer[len] = '\0'; - } - va_end(args); - - std::string message(buffer); - if (message.size() != 0) - { - for (auto it = colors.begin(); it != colors.end(); ++it) - { - message = replace(message, it->first, ""); - message = replace(message, str_tolower(it->first), ""); - } - engine->ClientPrintf(this->GetSlot(), message.c_str()); - } - } -} - -const char* Player::GetName() -{ - CBasePlayerController* controller = this->GetController(); - if (!controller) - return this->name; - - return reinterpret_cast(controller->m_iszPlayerName()); -} - -Vector Player::GetCoords() -{ - CCSPlayerPawn* pawn = this->GetPlayerPawn(); - if (!pawn) - { - Vector vec(0.0, 0.0, 0.0); - return vec; - } - return pawn->m_CBodyComponent->m_pSceneNode->m_vecAbsOrigin(); -} - -void Player::SetCoords(float x, float y, float z) -{ - CBasePlayerPawn* pawn = this->GetPawn(); - if (!pawn) - return; - - Vector vec(x, y, z); - pawn->Teleport(&vec, nullptr, nullptr); -} - -void Player::SwitchTeam(int team) -{ - CCSPlayerController* playerController = this->GetPlayerController(); - if (!playerController) - return; - - if (team == CS_TEAM_SPECTATOR || team == CS_TEAM_NONE) - CALL_VIRTUAL(void, g_Offsets->GetOffset("CCSPlayerController_ChangeTeam"), playerController, team); - else - g_Signatures->FetchSignature("CCSPlayerController_SwitchTeam")(playerController, team); -} - -void Player::ChangeTeam(int team) -{ - CCSPlayerController* playerController = this->GetPlayerController(); - if (!playerController) - return; - - CALL_VIRTUAL(void, g_Offsets->GetOffset("CCSPlayerController_ChangeTeam"), playerController, team); -} - -void Player::RenderCenterText(uint64_t time) -{ - if (this->centerMessageEndTime != 0) - { - if (this->centerMessageEndTime >= time) { - if (centerMessageEvent) { - playerListener->FireGameEvent(centerMessageEvent); - } - } - else - this->centerMessageEndTime = 0; - } -} - -bool Player::HasCenterText() { return (this->centerMessageEndTime != 0); } - -bool Player::IsFirstSpawn() { return this->firstSpawn; } -void Player::SetFirstSpawn(bool value) { this->firstSpawn = value; } - -bool Player::IsFakeClient() { return this->isFakeClient; } -CPlayerSlot Player::GetSlot() { return CPlayerSlot(this->slot); } -uint32 Player::GetConnectedTime() { return (std::time(0) - this->connectTime); } -std::string Player::GetIPAddress() { return this->ip_address; } - -const std::vector key_buttons = { - "mouse1", - "space", - "ctrl", - "w", - "s", - "e", - "esc", - "a", - "d", - "a", - "d", - "mouse2", - "unknown_key_run", - "r", - "alt", - "alt", - "shift", - "unknown_key_speed", - "shift", - "unknown_key_hudzoom", - "unknown_key_weapon1", - "unknown_key_weapon2", - "unknown_key_bullrush", - "unknown_key_grenade1", - "unknown_key_grenade2", - "unknown_key_lookspin", - "unknown_key_26", - "unknown_key_27", - "unknown_key_28", - "unknown_key_29", - "unknown_key_30", - "unknown_key_31", - "unknown_key_32", - "tab", - "unknown_key_34", - "f", - "unknown_key_36", - "unknown_key_37", - "unknown_key_38", - "unknown_key_39", - "unknown_key_40", - "unknown_key_41", - "unknown_key_42", - "unknown_key_43", - "unknown_key_44", - "unknown_key_45", - "unknown_key_46", - "unknown_key_47", - "unknown_key_48", - "unknown_key_49", - "unknown_key_50", - "unknown_key_51", - "unknown_key_52", - "unknown_key_53", - "unknown_key_54", - "unknown_key_55", - "unknown_key_56", - "unknown_key_57", - "unknown_key_58", - "unknown_key_59", - "unknown_key_60", - "unknown_key_61", - "unknown_key_62", - "unknown_key_63", -}; - -void OnClientKeyStateChange(int playerid, std::string key, bool pressed); - -void Player::SetButtons(uint64_t new_buttons) -{ - if (buttons != new_buttons) { - for (uint16_t i = 0; i < 64; i++) { - if ((buttons & (1ULL << i)) != 0 && (new_buttons & (1ULL << i)) == 0) - OnClientKeyStateChange(this->slot, key_buttons[i], true); - else if ((buttons & (1ULL << i)) == 0 && (new_buttons & (1ULL << i)) != 0) - OnClientKeyStateChange(this->slot, key_buttons[i], false); - } - buttons = new_buttons; - } -} - -void Player::PerformCommand(std::string command) -{ - engine->ClientCommand(this->GetSlot(), command.c_str()); -} - -void Player::SetClientConvar(std::string cmd, std::string val) -{ - auto cv = FetchCVar(cmd); - if (!cv.IsValidRef()) - return; - - INetworkMessageInternal* netmsg = g_pNetworkMessages->FindNetworkMessagePartial("SetConVar"); - auto msg = netmsg->AllocateMessage()->ToPB(); - CMsg_CVars_CVar* cvar = msg->mutable_convars()->add_cvars(); - cvar->set_name(cv.GetName()); - cvar->set_value(val.c_str()); - - CSingleRecipientFilter filter(this->slot); - g_pGameEventSystem->PostEventAbstract(-1, false, &filter, netmsg, msg, 0); - -#ifndef _WIN32 - delete msg; -#endif -} - -std::any Player::GetInternalVar(std::string name) -{ - if (this->internalVars.find(name) == this->internalVars.end()) - return nullptr; - - return this->internalVars[name]; -} - -void Player::SetInternalVar(std::string name, std::any value) -{ - this->internalVars[name] = value; -} - -void Player::SetListen(CPlayerSlot slot, ListenOverride listen) -{ - m_listenMap[slot.Get()] = listen; -} - -void Player::SetVoiceFlags(VoiceFlag_t flags) -{ - m_voiceFlag = flags; -} - -VoiceFlag_t Player::GetVoiceFlags() -{ - return m_voiceFlag; -} - -ListenOverride Player::GetListen(CPlayerSlot slot) const -{ - return m_listenMap[slot.Get()]; -} - -CBaseViewModel* Player::EnsureCustomView(int index) -{ - CCSPlayerPawnBase* pPawnBase = GetPlayerBasePawn(); - if (!pPawnBase) return nullptr; - if (pPawnBase->m_lifeState() == 2) { - if (GetPlayerController()->m_bControllingBot()) { - return nullptr; - } - else { - if (!GetPawn()->m_pObserverServices()) return nullptr; - auto observerPawn = GetPawn()->m_pObserverServices->m_hObserverTarget(); - if (!observerPawn) return nullptr; - - auto observerController = ((CCSPlayerPawn*)(observerPawn.Get()))->m_hOriginalController(); - if (!observerController) return nullptr; - - auto observer = g_playerManager->GetPlayer(observerController->entindex() - 1); - if (!observer) return nullptr; - - pPawnBase = observer->GetPlayerBasePawn(); - } - } - if (!pPawnBase) return nullptr; - if (!pPawnBase->m_pViewModelServices()) return nullptr; - - CBaseViewModel* pViewModel = pPawnBase->m_pViewModelServices()->GetViewModel(index); - if (!pViewModel) { - pViewModel = (CBaseViewModel*)(CreateEntityByName("predicted_viewmodel").GetPtr()); - pViewModel->DispatchSpawn(); - pPawnBase->m_pViewModelServices()->SetViewModel(index, pViewModel); - } - - return pViewModel; -} - -PluginPlayer* Player::GetPlayerObject() -{ - if (playerObject == nullptr) { - playerObject = new PluginPlayer(this->GetSlot().Get()); - } - return playerObject; -} \ No newline at end of file diff --git a/src/player/player/Player.h b/src/player/player/Player.h deleted file mode 100644 index b86d4e6c8..000000000 --- a/src/player/player/Player.h +++ /dev/null @@ -1,133 +0,0 @@ -#ifndef _player_player_h -#define _player_player_h - -#include "../../sdk/entity/CBasePlayerController.h" -#include "../../sdk/entity/CCSPlayerController.h" -#include "../../sdk/entity/CBasePlayerPawn.h" -#include "../../sdk/entity/CCSPlayerPawn.h" -#include "../../sdk/entity/CCSPlayerPawnBase.h" -#include "../../sdk/entity/CBaseViewModel.h" -#include "../../server/menus/Menu.h" -#include "../../server/menus/MenuRenderer.h" -#include "../../plugins/core/scripting.h" - -#include -#include -#include -#include - -#include - -#define HUD_PRINTNOTIFY 1 -#define HUD_PRINTCONSOLE 2 -#define HUD_PRINTTALK 3 -#define HUD_PRINTCENTER 4 - -enum ListenOverride -{ - Listen_Default = 0, - Listen_Mute, - Listen_Hear -}; - -enum VoiceFlagValue -{ - Speak_Normal = 0, - Speak_Muted = 1 << 0, - Speak_All = 1 << 1, - Speak_ListenAll = 1 << 2, - Speak_Team = 1 << 3, - Speak_ListenTeam = 1 << 4, -}; - -typedef uint8_t VoiceFlag_t; - -class Player -{ -public: - Player(bool m_isFakeClient, int m_slot, const char* m_name, uint64 m_xuid, std::string ip_address); - ~Player(); - - bool IsFakeClient(); - CPlayerSlot GetSlot(); - uint32_t GetConnectedTime(); - std::string GetIPAddress(); - - void SendMsg(int dest, const char* msg, ...); - - void RenderCenterText(uint64_t time); - - const char* GetName(); - uint64 GetSteamID(); - - CBasePlayerController* GetController(); - CBasePlayerPawn* GetPawn(); - CCSPlayerController* GetPlayerController(); - CCSPlayerPawn* GetPlayerPawn(); - CCSPlayerPawnBase* GetPlayerBasePawn(); - - Vector GetCoords(); - void SetCoords(float x, float y, float z); - - void SwitchTeam(int team); - void ChangeTeam(int team); - - void SetButtons(uint64_t new_buttons); - - std::string tag = ""; - std::string tagcolor = "{default}"; - std::string namecolor = "{teamcolor}"; - std::string chatcolor = "{default}"; - - bool IsFirstSpawn(); - void SetFirstSpawn(bool value); - - bool HasCenterText(); - - void PerformCommand(std::string command); - - void SetClientConvar(std::string cmd, std::string val); - - std::any GetInternalVar(std::string name); - void SetInternalVar(std::string name, std::any value); - - void SetListen(CPlayerSlot slot, ListenOverride listen); - void SetVoiceFlags(VoiceFlag_t flags); - VoiceFlag_t GetVoiceFlags(); - ListenOverride GetListen(CPlayerSlot slot) const; - - CBaseViewModel* EnsureCustomView(int index); - PluginPlayer* GetPlayerObject(); - - CPlayerBitVec m_selfMutes[64] = {}; - - std::string language = ""; - MenuRenderer* menu_renderer = nullptr; - -private: - int slot; - bool isFakeClient = false; - - IGameEvent* centerMessageEvent = nullptr; - IGameEventListener2* playerListener = nullptr; - - std::time_t connectTime; - const char* name; - uint64 xuid; - std::string ip_address = "0.0.0.0"; - - uint64_t centerMessageEndTime = 0; - std::string centerMessageText; - - bool firstSpawn = true; - - uint64_t buttons = 0; - - std::map internalVars; - - ListenOverride m_listenMap[66] = {}; - VoiceFlag_t m_voiceFlag = 0; - PluginPlayer* playerObject = nullptr; -}; -extern std::map colors; -#endif \ No newline at end of file diff --git a/src/player/playermanager/PlayerManager.cpp b/src/player/playermanager/PlayerManager.cpp deleted file mode 100644 index 890492948..000000000 --- a/src/player/playermanager/PlayerManager.cpp +++ /dev/null @@ -1,58 +0,0 @@ -#include "PlayerManager.h" -#include "../../memory/hooks/FuncHook.h" -#include "../../memory/encoders/msgpack.h" -#include "../../engine/convars/convars.h" -#include "../../plugins/PluginManager.h" -#include "../../plugins/core/scripting.h" - -void Hook_CCSPlayerPawnBase_PostThink(CCSPlayerPawnBase* _this); - -FuncHook TCCSPlayerPawnBase_PostThink(Hook_CCSPlayerPawnBase_PostThink, "CCSPlayerPawnBase_PostThink"); - -PluginEvent* dummyEvent = nullptr; - -PlayerManager::PlayerManager() {} -PlayerManager::~PlayerManager() {} - -void PlayerManager::RegisterPlayer(Player* player) -{ - this->g_Players[player->GetSlot().Get()] = player; -} - -void PlayerManager::UnregisterPlayer(CPlayerSlot slot) -{ - int sl = slot.Get(); - - delete this->g_Players[sl]; - this->g_Players[sl] = nullptr; -} - -uint16_t PlayerManager::GetPlayers() -{ - uint16_t count = 0; - for (uint16_t i = 0; i < MAX_PLAYERS; i++) - { - if (this->g_Players[i] == nullptr) - continue; - - ++count; - } - return count; -} - -void Hook_CCSPlayerPawnBase_PostThink(CCSPlayerPawnBase* _this) -{ - if(!_this) return TCCSPlayerPawnBase_PostThink(_this); - - auto originalController = _this->m_hOriginalController(); - if(!originalController) return TCCSPlayerPawnBase_PostThink(_this); - - auto playerid = originalController.GetEntryIndex() - 1; - - if(!dummyEvent) dummyEvent = new PluginEvent("core", nullptr, nullptr); - - if(g_pluginManager->ExecuteEvent("core", "OnPlayerPostThink", encoders::msgpack::SerializeToString({ playerid }), dummyEvent) == EventResult::Stop) - return; - - return TCCSPlayerPawnBase_PostThink(_this); -} \ No newline at end of file diff --git a/src/player/playermanager/PlayerManager.h b/src/player/playermanager/PlayerManager.h deleted file mode 100644 index 522028818..000000000 --- a/src/player/playermanager/PlayerManager.h +++ /dev/null @@ -1,34 +0,0 @@ -#ifndef _player_playermanager_h -#define _player_playermanager_h - -#include "../../common.h" -#include "../../entrypoint.h" -#include "../player/Player.h" - -#include - -class PlayerManager -{ -public: - PlayerManager(); - ~PlayerManager(); - - void RegisterPlayer(Player *player); - void UnregisterPlayer(CPlayerSlot slot); - uint16_t GetPlayers(); - Player *GetPlayer(uint16 slot) - { - if(slot < 0 || slot > MAX_PLAYERS) return nullptr; - - return this->g_Players[slot]; - } - Player *GetPlayer(CPlayerSlot slot) { return this->g_Players[slot.Get()]; } - const uint16 GetPlayerCap() { return MAX_PLAYERS; } - -private: - Player *g_Players[MAX_PLAYERS] = {}; -}; - -extern PlayerManager *g_playerManager; - -#endif \ No newline at end of file diff --git a/src/plugins/Plugin.cpp b/src/plugins/Plugin.cpp deleted file mode 100644 index 59b6df9aa..000000000 --- a/src/plugins/Plugin.cpp +++ /dev/null @@ -1,545 +0,0 @@ -#include "Plugin.h" -#include "../tools/crashreporter/CallStack.h" -#include "core/scripting.h" -#include "../extensions/ExtensionManager.h" -#include "../server/commands/CommandsManager.h" - -LUALIB_API int luaopen_cmsgpack(lua_State* L); -extern "C" -{ - LUALIB_API int luaopen_rapidjson(lua_State* L); -} - -void SetupScriptingEnvironment(Plugin* plugin, EContext* state); - -Plugin::Plugin(std::string m_name, PluginKind_t m_kind) -{ - this->name = m_name; - this->kind = m_kind; -} - -Plugin::~Plugin() { -} - -std::string Plugin::GetName() -{ - return this->name; -} - -PluginKind_t Plugin::GetKind() -{ - return this->kind; -} - -PluginState_t Plugin::GetPluginState() -{ - return this->state; -} - -void Plugin::SetPluginState(PluginState_t state) -{ - this->state = state; -} - -std::string Plugin::GetLoadError() -{ - return this->loadError; -} - -void Plugin::SetLoadError(std::string error) -{ - this->loadError = error; -} - -EventResult Plugin::TriggerEvent(std::string invokedBy, std::string eventName, std::string eventPayload, PluginEvent* event) -{ - if (this->GetPluginState() == PluginState_t::Stopped && eventName != "OnPluginStart" && eventName != "OnAllPluginsLoaded") - return EventResult::Continue; - - if (!this->globalEventHandler) - return EventResult::Continue; - - if (this->eventHandlers.find(eventName) == this->eventHandlers.end()) - return EventResult::Continue; - - if (eventName != "OnGameTick") REGISTER_CALLSTACK(this->GetName(), string_format("Event: %s(invokedBy=\"%s\",payload=\"%s\",event=%p)", eventName.c_str(), invokedBy.c_str(), eventPayload.c_str(), (void*)event)); - PERF_RECORD(string_format("event:%s:%s", invokedBy.c_str(), eventName.c_str()), this->GetName()); - - int res = (int)EventResult::Continue; - try - { - EValue func = *this->globalEventHandler; - - if(ctx->GetKind() == ContextKinds::JavaScript) { - EValue val(ctx, JS_NewUint8ArrayCopy((JSContext*)ctx->GetState(), (uint8_t*)(eventPayload.data()), eventPayload.size())); - res = func(event, invokedBy, eventName, val).cast_or(0); - } else { - res = func(event, invokedBy, eventName, eventPayload).cast_or(0); - } - - if (res < (int)EventResult::Continue || res > (int)EventResult::Handled) - return EventResult::Continue; - } - catch (EException& e) - { - PRINTF("An error has occured while executing event '%s' in '%s':\nError: %s\n", eventName.c_str(), GetName().c_str(), e.what()); - - if (eventName == "OnPluginStart") this->SetLoadError(e.what()); - } - - return (EventResult)res; -} - -int64_t Plugin::GetMemoryUsage() -{ - if (this->GetPluginState() == PluginState_t::Stopped) return 0; - return ctx->GetMemoryUsage(); -} - -std::string Plugin::GetAuthor() -{ - if (this->GetPluginState() == PluginState_t::Stopped) - return ""; - - auto func = EValue::getGlobal(ctx, "GetPluginAuthor"); - return func().cast(); -} - -std::string Plugin::GetWebsite() -{ - if (this->GetPluginState() == PluginState_t::Stopped) - return ""; - - auto func = EValue::getGlobal(ctx, "GetPluginWebsite"); - return func().cast(); -} - -std::string Plugin::GetVersion() -{ - if (this->GetPluginState() == PluginState_t::Stopped) - return ""; - - auto func = EValue::getGlobal(ctx, "GetPluginVersion"); - return func().cast(); -} - -std::string Plugin::GetPlName() -{ - if (this->GetPluginState() == PluginState_t::Stopped) - return ""; - - auto func = EValue::getGlobal(ctx, "GetPluginName"); - return func().cast(); -} - -void Plugin::RegisterEventHandler(void* functionPtr) -{ - EValue* handlerRef = (EValue*)functionPtr; - if (!handlerRef->isFunction()) - return; - - this->globalEventHandler = handlerRef; -} - -void Plugin::RegisterEventHandling(std::string eventName) -{ - if (this->eventHandlers.find(eventName) == this->eventHandlers.end()) this->eventHandlers.insert(eventName); - eventManager->RegisterGameEventListen(eventName); -} - -void Plugin::UnregisterEventHandling(std::string eventName) -{ - auto it = this->eventHandlers.find(eventName); - if (it != this->eventHandlers.end()) this->eventHandlers.erase(it); -} - -void Plugin::ExecuteCommand(void* functionPtr, std::string name, int slot, std::vector args, bool silent, std::string prefix) -{ - PERF_RECORD(string_format("command:%s", name.c_str()), this->GetName()) - - if (functionPtr == nullptr) - return; - - EValue* commandRef = (EValue*)functionPtr; - - if (!commandRef->isFunction()) - return; - - try - { - EValue command = *commandRef; - int argc = args.size(); - command(slot, args, argc, silent, prefix); - } - catch (EException& e) - { - PRINTF("An error has occured while executing command '%s'.\n", name.c_str()); - PRINTF("%s\n", e.what()); - } -} - -bool Plugin::LoadScriptingEnvironment() -{ - this->SetLoadError(""); - - ctx = new EContext(GetKind() == PluginKind_t::Lua ? ContextKinds::Lua : ContextKinds::JavaScript); - - if (ctx->GetKind() == ContextKinds::Lua) { - ctx->RegisterLuaLib("msgpack", luaopen_cmsgpack); - ctx->RegisterLuaLib("json", luaopen_rapidjson); - } - - SetupScriptingEnvironment(this, ctx); - - for (Extension* ext : extManager->GetExtensionsList()) - if (ext->IsLoaded()) { - std::string error = ""; - if (!ext->GetAPI()->OnPluginLoad(this->GetName(), this->ctx, this->GetKind(), error)) { - PRINTF("Failed to load plugin '%s'.\n", this->GetName().c_str()); - PRINTF("Error: %s.\n", error.c_str()); - this->SetLoadError(error); - return false; - } - } - - std::string fileExt = GetKind() == PluginKind_t::Lua ? ".lua" : ".js"; - int loadStatus = ctx->RunFile(GeneratePath("addons/swiftly/bin/scripting/events" + fileExt)); - - if (loadStatus != 0) - { - std::string error = EException(ctx->GetState(), ctx->GetKind(), loadStatus).what(); - PRINTF("Failed to load plugin file '%s%s'.\n", "addons/swiftly/bin/scripting/events", fileExt.c_str()); - PRINTF("Error: %s\n", error.c_str()); - - this->SetLoadError(error); - return false; - } - - std::vector scriptingFiles = Files::FetchFileNames("addons/swiftly/bin/scripting"); - for (std::string file : scriptingFiles) - { - if (ends_with(file, fileExt)) - { - if (replace(file, "\\", "/") == "addons/swiftly/bin/scripting/events" + fileExt) - continue; - - try { - int loadStatus = ctx->RunFile(GeneratePath(file)); - - if (loadStatus != 0) - { - std::string error = EException(ctx->GetState(), ctx->GetKind(), loadStatus).what(); - PRINTF("Failed to load plugin file '%s'.\n", file.c_str()); - PRINTF("Error: %s\n", error.c_str()); - - this->SetLoadError(error); - return false; - } - } - catch (EException& e) { - std::string error = e.what(); - PRINTF("Failed to load plugin file '%s'.\n", file.c_str()); - PRINTF("Error: %s\n", error.c_str()); - - this->SetLoadError(error); - return false; - } - } - } - - GetGlobalNamespace(ctx).addConstant("AddGlobalEvents", nullptr); - - std::vector files = Files::FetchFileNames(g_pluginManager->GetPluginBasePath(this->GetName()) + "/" + this->GetName()); - for (std::string file : files) - { - if (ends_with(file, fileExt)) - { - try { - int loadStatus = ctx->RunFile(GeneratePath(file)); - - if (loadStatus != 0) - { - std::string error = EException(ctx->GetState(), ctx->GetKind(), loadStatus).what(); - PRINTF("Failed to load plugin file '%s'.\n", file.c_str()); - PRINTF("Error: %s\n", error.c_str()); - - this->SetLoadError(error); - return false; - } - } - catch (EException& e) { - std::string error = e.what(); - PRINTF("Failed to load plugin file '%s'.\n", file.c_str()); - PRINTF("Error: %s\n", error.c_str()); - - this->SetLoadError(error); - return false; - } - } - } - - return true; -} - -void Plugin::DestroyScriptingEnvironment() -{ - std::vector commandNames = g_commandsManager->FetchCommandsByPlugin(this->GetName()); - for (std::string command : commandNames) - g_commandsManager->UnregisterCommand(command); - - if (this->globalEventHandler) - delete this->globalEventHandler; - - this->eventHandlers.clear(); - delete this->ctx; -} - -bool Plugin::ExecuteStart() -{ - auto PluginAuthor = EValue::getGlobal(ctx, "GetPluginAuthor"); - if (!PluginAuthor.isFunction()) - { - PRINTF("Failed to load plugin '%s'.\n", this->GetName().c_str()); - PRINT("Error: Mandatory function 'GetPluginAuthor' is not defined.\n"); - this->SetLoadError("Mandatory function 'GetPluginAuthor' is not defined."); - return false; - } - - auto PluginWebsite = EValue::getGlobal(ctx, "GetPluginWebsite"); - if (!PluginWebsite.isFunction()) - { - PRINTF("Failed to load plugin '%s'.\n", this->GetName().c_str()); - PRINT("Error: Mandatory function 'GetPluginWebsite' is not defined.\n"); - this->SetLoadError("Mandatory function 'GetPluginWebsite' is not defined."); - return false; - } - - auto PluginVersion = EValue::getGlobal(ctx, "GetPluginVersion"); - if (!PluginVersion.isFunction()) - { - PRINTF("Failed to load plugin '%s'.\n", this->GetName().c_str()); - PRINT("Error: Mandatory function 'GetPluginVersion' is not defined.\n"); - this->SetLoadError("Mandatory function 'GetPluginVersion' is not defined."); - return false; - } - - auto PluginName = EValue::getGlobal(ctx, "GetPluginName"); - if (!PluginName.isFunction()) - { - PRINTF("Failed to load plugin '%s'.\n", this->GetName().c_str()); - PRINT("Error: Mandatory function 'GetPluginName' is not defined.\n"); - this->SetLoadError("Mandatory function 'GetPluginName' is not defined."); - return false; - } - - PluginEvent* event = new PluginEvent("core", nullptr, nullptr); - TriggerEvent("core", "OnPluginStart", encoders::msgpack::SerializeToString({}), event); - delete event; - - if (GetLoadError() != "") return false; - - return true; -} - -bool Plugin::ExecuteStop() -{ - for (Extension* ext : extManager->GetExtensionsList()) - if (ext->IsLoaded()) { - std::string error = ""; - if (!ext->GetAPI()->OnPluginUnload(this->GetName(), this->ctx, this->GetKind(), error)) { - PRINTF("Failed to unload plugin '%s'.\n", this->GetName().c_str()); - PRINTF("Error: %s.\n", error.c_str()); - return false; - } - } - - PluginEvent* event = new PluginEvent("core", nullptr, nullptr); - TriggerEvent("core", "OnPluginStop", encoders::msgpack::SerializeToString({}), event); - delete event; - - return true; -} - -std::vector emptyTable; - -EValue SerializeData(std::any data, EContext* state) -{ - std::any value = data; - - if (!value.has_value()) - return EValue(state, nullptr); - - try - { - if (value.type() == typeid(const char*)) { - auto val = std::any_cast(value); - if (val == nullptr) return EValue(state, std::string("")); - return EValue(state, std::string(val)); - } - else if (value.type() == typeid(char*)) { - auto val = std::any_cast(value); - if (val == nullptr) return EValue(state, std::string("")); - return EValue(state, std::string(val)); - } - else if (value.type() == typeid(std::string)) { - std::string val = std::any_cast(value); - if (starts_with(val, "JSON⇚") && ends_with(val, "⇛")) { - std::string json = explode(explode(val, "⇚")[1], "⇛")[0]; - - if (state->GetKind() == ContextKinds::Lua) { - EValue rapidJsonTable = EValue::getGlobal(state, "json"); - if (!rapidJsonTable["decode"].isFunction()) - return EValue(state, emptyTable); - - EValue decodedResult(state); - try - { - decodedResult = rapidJsonTable["decode"](json); - } - catch (EException& e) - { - PLUGIN_PRINTF("SerializeData", "An error has occured: %s\n", e.what()); - return EValue(state, emptyTable); - } - - if (decodedResult.isNull()) - return EValue(state, emptyTable); - - return decodedResult; - } - else if (state->GetKind() == ContextKinds::JavaScript) { - return EValue(state, JS_ParseJSON((JSContext*)state->GetState(), json.c_str(), json.length(), "SerializeData")); - } - else return EValue(state, nullptr); - } - else return EValue(state, val); - } - else if (value.type() == typeid(uint64)) - return EValue(state, std::any_cast(value)); - else if (value.type() == typeid(uint32)) - return EValue(state, std::any_cast(value)); - else if (value.type() == typeid(unsigned long)) - return EValue(state, std::any_cast(value)); - else if (value.type() == typeid(uint16)) - return EValue(state, std::any_cast(value)); - else if (value.type() == typeid(uint8)) - return EValue(state, std::any_cast(value)); - else if (value.type() == typeid(int64)) - return EValue(state, std::any_cast(value)); - else if (value.type() == typeid(int32)) - return EValue(state, std::any_cast(value)); - else if (value.type() == typeid(long)) - return EValue(state, std::any_cast(value)); - else if (value.type() == typeid(int16)) - return EValue(state, std::any_cast(value)); - else if (value.type() == typeid(int8)) - return EValue(state, std::any_cast(value)); - else if (value.type() == typeid(bool)) - return EValue(state, std::any_cast(value)); - else if (value.type() == typeid(float)) - return EValue(state, std::any_cast(value)); - else if (value.type() == typeid(double)) - return EValue(state, std::any_cast(value)); - else if (value.type() == typeid(Color)) - return EValue(state, std::any_cast(value)); - else if (value.type() == typeid(Vector2D)) - return EValue(state, std::any_cast(value)); - else if (value.type() == typeid(Vector)) - return EValue(state, std::any_cast(value)); - else if (value.type() == typeid(Vector4D)) - return EValue(state, std::any_cast(value)); - else if (value.type() == typeid(QAngle)) - return EValue(state, std::any_cast(value)); - else if (value.type() == typeid(std::nullptr_t)) - return EValue(state, nullptr); - else if (value.type() == typeid(PluginEvent)) - return EValue(state, std::any_cast(value)); - else if (value.type() == typeid(std::vector)) - { - if (state->GetKind() == ContextKinds::Lua) { - std::vector tmpval = std::any_cast>(value); - std::string tbl = tmpval[0]; - - EValue load = EValue::getGlobal(state, "load"); - try - { - EValue loadReturnValue = load(tbl); - if (!loadReturnValue.isFunction()) - return EValue(state, emptyTable); - - EValue loadFuncRetVal = loadReturnValue(); - if (!loadFuncRetVal.isTable()) - return EValue(state, emptyTable); - - return loadFuncRetVal; - } - catch (EException& e) - { - PRINTF("Exception: %s\n", e.what()); - return EValue(state, emptyTable); - } - } - else { - PRINT("Cannot convert Lua table to JS object.\n"); - return EValue(state); - } - } - else if (value.type() == typeid(std::vector)) - { - return EValue(state, std::any_cast>(value)); - } - else - { - PRINTF("Unknown Data Type: %s\n", value.type().name()); - return EValue(state, nullptr); - } - } - catch (std::bad_any_cast err) - { - PRINTF("Invalid casting: %s\n", err.what()); - return EValue(state, nullptr); - } - - return EValue(state, nullptr); -} - -std::any DeserializeData(EValue ref, EContext* state) -{ - if (ref.isBool()) - return ref.cast(); - else if (ref.isNull()) - return nullptr; - else if (ref.isNumber()) - return ref.cast(); - else if (ref.isString()) - return ref.cast(); - else if (ref.isTable()) - { - if (state->GetKind() == ContextKinds::Lua) { - EValue serpentDump = EValue::getGlobal(state, "serpent")["dump"]; - EValue serpentDumpReturnValue = serpentDump(ref); - - std::vector tmptbl; - tmptbl.push_back(serpentDumpReturnValue.cast()); - - return tmptbl; - } - else if (state->GetKind() == ContextKinds::JavaScript) { - std::vector tmptbl; - return tmptbl; - } - else return nullptr; - } - else if (ref.isInstance()) - return ref.cast(); - else if (ref.isInstance()) - return ref.cast(); - else if (ref.isInstance()) - return ref.cast(); - else if (ref.isInstance()) - return ref.cast(); - else if (ref.isInstance()) - return ref.cast(); - else - return nullptr; -} \ No newline at end of file diff --git a/src/plugins/Plugin.h b/src/plugins/Plugin.h deleted file mode 100644 index 2e5530a1f..000000000 --- a/src/plugins/Plugin.h +++ /dev/null @@ -1,66 +0,0 @@ -#ifndef _plugins_plugin_h -#define _plugins_plugin_h - -#include -#include -#include -#include -#include -#include -#include "../types/PluginKind.h" -#include "../types/PluginState.h" -#include "../types/EventResult.h" -#include "../engine/gameevents/gameevents.h" -#include "stack.h" - -class PluginEvent; - -class Plugin -{ -private: - std::string name; - PluginKind_t kind; - PluginState_t state = PluginState_t::Stopped; - std::string loadError = ""; - EContext* ctx = nullptr; - EValue* globalEventHandler = nullptr; - std::set eventHandlers; - -public: - Plugin(std::string m_name, PluginKind_t m_kind); - ~Plugin(); - - std::string GetName(); - PluginKind_t GetKind(); - - PluginState_t GetPluginState(); - void SetPluginState(PluginState_t state); - - std::string GetLoadError(); - void SetLoadError(std::string error); - - bool LoadScriptingEnvironment(); - void DestroyScriptingEnvironment(); - bool ExecuteStart(); - bool ExecuteStop(); - - void ExecuteCommand(void* functionPtr, std::string name, int slot, std::vector args, bool silent, std::string prefix); - - void RegisterEventHandler(void* functionPtr); - void RegisterEventHandling(std::string eventName); - void UnregisterEventHandling(std::string eventName); - - // Returns the memory usage of the plugin in bytes - int64_t GetMemoryUsage(); - - std::string GetAuthor(); - std::string GetWebsite(); - std::string GetVersion(); - std::string GetPlName(); - - EventResult TriggerEvent(std::string invokedBy, std::string eventName, std::string eventPayload, PluginEvent* event); - - EContext* GetContext() { return ctx; } -}; - -#endif \ No newline at end of file diff --git a/src/plugins/PluginManager.cpp b/src/plugins/PluginManager.cpp deleted file mode 100644 index 19e915c56..000000000 --- a/src/plugins/PluginManager.cpp +++ /dev/null @@ -1,216 +0,0 @@ -#include "PluginManager.h" - -#include "core/scripting.h" -#include "../server/menus/MenuManager.h" -#include "../extensions/ExtensionManager.h" -#include "../memory/encoders/msgpack.h" -#include - -#include - -bool AllPluginsStarted = false; - -PluginManager::PluginManager() {} - -PluginManager::~PluginManager() {} - -bool PluginManager::PluginExists(std::string plugin_name) -{ - return (pluginsMap.find(plugin_name) != pluginsMap.end()); -} - -void PluginManager::LoadPlugins(std::string directory) -{ - std::string baseDir = "addons/swiftly/plugins" + directory; - if (!Files::ExistsPath(baseDir)) - Files::CreateDirectory(baseDir); - - std::vector plugins = Files::FetchDirectories(baseDir); - for (std::string folder : plugins) - { - // Skips over disabled - if (folder.find("disabled") != std::string::npos) - continue; - - auto directory_name = explode(folder, WIN_LINUX("\\", "/")).back(); - - if (directory_name.find("[") != std::string::npos) - LoadPlugins(directory + "/" + directory_name); - else - { - folder = replace(folder, baseDir, ""); - std::string plugin_name = replace(folder, WIN_LINUX("\\", "/"), ""); - - pluginBasePaths[plugin_name] = baseDir; - - LoadPlugin(plugin_name); - } - } -} - -void PluginManager::UnloadPlugins() -{ - std::vector pluginNames; - for (Plugin* plugin : pluginsList) - pluginNames.push_back(plugin->GetName()); - - for (std::string plugin_name : pluginNames) - UnloadPlugin(plugin_name); -} - -void PluginManager::LoadPlugin(std::string plugin_name) -{ - if (PluginExists(plugin_name)) - return; - - std::vector files = Files::FetchFileNames(pluginBasePaths[plugin_name] + "/" + plugin_name); - if (files.size() == 0) - return; - - Plugin* plugin = nullptr; - - for (std::string file : files) - { - if (ends_with(file, ".lua")) - { - plugin = new Plugin(plugin_name, PluginKind_t::Lua); - break; - } - else if (ends_with(file, ".js")) - { - plugin = new Plugin(plugin_name, PluginKind_t::JavaScript); - break; - } - } - - if (plugin == nullptr) - { - PRINTF("We couldn't determine a kind for the following plugin: %s\n", plugin_name.c_str()); - return; - } - - pluginsList.push_back(plugin); - pluginsMap.insert({ plugin_name, plugin }); -} - -void PluginManager::UnloadPlugin(std::string plugin_name) -{ - if (!PluginExists(plugin_name)) - return; - - Plugin* plugin = pluginsMap.at(plugin_name); - - auto it = std::find(pluginsList.begin(), pluginsList.end(), plugin); - if (it != pluginsList.end()) - pluginsList.erase(it); - - delete plugin; - pluginsMap.erase(plugin_name); -} - -void PluginManager::StartPlugins() -{ - for (Plugin* plugin : pluginsList) - if (!StartPlugin(plugin->GetName())) - StopPlugin(plugin->GetName(), true); - - PluginEvent* event = new PluginEvent("core", nullptr, nullptr); - this->ExecuteEvent("core", "OnAllPluginsLoaded", encoders::msgpack::SerializeToString({}), event); - delete event; - AllPluginsStarted = true; - - for(auto extension : extManager->GetExtensionsList()) - if(extension->IsLoaded()) - extension->GetAPI()->AllPluginsLoaded(); -} - -void PluginManager::StopPlugins(bool destroyStates) -{ - for (Plugin* plugin : pluginsList) - StopPlugin(plugin->GetName(), destroyStates); -} - -bool PluginManager::StartPlugin(std::string plugin_name) -{ - if (!PluginExists(plugin_name)) - return false; - - Plugin* plugin = pluginsMap.at(plugin_name); - if (plugin->GetPluginState() == PluginState_t::Started) - return true; - - if (!plugin->LoadScriptingEnvironment()) - return false; - if (!plugin->ExecuteStart()) - return false; - plugin->SetPluginState(PluginState_t::Started); - - if (AllPluginsStarted) - { - PluginEvent* event = new PluginEvent("core", nullptr, nullptr); - plugin->TriggerEvent("core", "OnAllPluginsLoaded", encoders::msgpack::SerializeToString({}), event); - delete event; - } - - return true; -} - -void PluginManager::StopPlugin(std::string plugin_name, bool destroyStates) -{ - if (!PluginExists(plugin_name)) - return; - - Plugin* plugin = pluginsMap.at(plugin_name); - if (plugin->GetPluginState() == PluginState_t::Stopped) - return; - - if (!plugin->ExecuteStop()) - return; - - if (destroyStates) { - plugin->DestroyScriptingEnvironment(); - plugin->SetPluginState(PluginState_t::Stopped); - } - g_MenuManager->UnregisterPluginMenus(plugin_name); -} - -Plugin* PluginManager::FetchPlugin(std::string name) -{ - if (!PluginExists(name)) - return nullptr; - - return pluginsMap[name]; -} - -EventResult PluginManager::ExecuteEvent(std::string invokedBy, std::string eventName, std::string eventPayload, PluginEvent* event) -{ - for (std::size_t i = 0; i < this->pluginsList.size(); i++) - { - EventResult result = this->pluginsList[i]->TriggerEvent(invokedBy, eventName, eventPayload, event); - if (result != EventResult::Continue) - return result; - } - - return EventResult::Continue; -} - -std::vector PluginManager::GetPluginsList() -{ - return this->pluginsList; -} - -std::string PluginManager::GetPluginBasePath(std::string plugin_name) -{ - if (this->pluginBasePaths.find(plugin_name) == this->pluginBasePaths.end()) return "addons/swiftly/plugins"; - return this->pluginBasePaths[plugin_name]; -} - -EXT_API int swiftly_TriggerEvent(const char* ext_name, const char* evName, void* args, void* eventReturn) -{ - PluginEvent* ev = new PluginEvent(ext_name, nullptr, nullptr); - auto result = g_pluginManager->ExecuteEvent(ext_name, evName, encoders::msgpack::SerializeToString(*(std::vector*)args), ev); - delete ev; - - *reinterpret_cast(eventReturn) = ev->GetReturnValue(); - return (int)result; -} \ No newline at end of file diff --git a/src/plugins/PluginManager.h b/src/plugins/PluginManager.h deleted file mode 100644 index 828d3e23e..000000000 --- a/src/plugins/PluginManager.h +++ /dev/null @@ -1,50 +0,0 @@ -#ifndef _plugins_PluginManager_h -#define _plugins_PluginManager_h - -#include -#include -#include - -#include "../filesystem/files/Files.h" -#include "Plugin.h" -#include "../types/EventResult.h" - -class PluginEvent; - -class PluginManager -{ -private: - std::vector pluginsList; - std::map pluginsMap; - std::map pluginBasePaths; - -public: - PluginManager(); - ~PluginManager(); - - std::string GetPluginBasePath(std::string plugin_name); - - bool PluginExists(std::string plugin_name); - - void LoadPlugins(std::string directory); - void UnloadPlugins(); - - void LoadPlugin(std::string plugin_name); - void UnloadPlugin(std::string plugin_name); - - void StartPlugins(); - void StopPlugins(bool destroyStates); - - bool StartPlugin(std::string plugin_name); - void StopPlugin(std::string plugin_name, bool destroyStates); - - Plugin* FetchPlugin(std::string name); - - std::vector GetPluginsList(); - - EventResult ExecuteEvent(std::string invokedBy, std::string eventName, std::string eventPayload, PluginEvent* event); -}; - -extern PluginManager* g_pluginManager; - -#endif \ No newline at end of file diff --git a/src/plugins/core/scripting.h b/src/plugins/core/scripting.h deleted file mode 100644 index a6b7da4a6..000000000 --- a/src/plugins/core/scripting.h +++ /dev/null @@ -1,928 +0,0 @@ -#ifndef _core_scripting_h -#define _core_scripting_h - -#include "scripting_schema.h" -#include "public/iservernetworkable.h" -#include "../../tools/resourcemonitor/ResourceMonitor.h" -#include "../../sdk/entity/CCSWeaponBase.h" -#include "../../tools/crashreporter/CallStack.h" -#include "../../memory/encoders/msgpack.h" -#include "../../sdk/entity/CTakeDamageInfo.h" - -#include "cstrike15_usermessages.pb.h" -#include - -#include -#include -#include -#ifdef _WIN32 -#include -#else -#include -#endif - -#include -#include - -#define INVALID_MESSAGE_ID -1 - -class PluginMemory; - -////////////////////////////////////////////////////////////// -///////////////// Entity IO ////////////// -//////////////////////////////////////////////////////////// - -struct EntityIOConnectionDesc_t -{ - string_t m_targetDesc; - string_t m_targetInput; - string_t m_valueOverride; - CEntityHandle m_hTarget; - EntityIOTargetType_t m_nTargetType; - int32 m_nTimesToFire; - float m_flDelay; -}; - -struct EntityIOConnection_t : EntityIOConnectionDesc_t -{ - bool m_bMarkedForRemoval; - EntityIOConnection_t* m_pNext; -}; - -struct EntityIOOutputDesc_t -{ - const char* m_pName; - uint32 m_nFlags; - uint32 m_nOutputOffset; -}; - -class CEntityIOOutput -{ -public: - void* vtable; - EntityIOConnection_t* m_pConnections; - EntityIOOutputDesc_t* m_pDesc; -}; - -////////////////////////////////////////////////////////////// -///////////////// Logger ////////////// -//////////////////////////////////////////////////////////// - -class PluginLogger -{ -private: - std::string plugin_name; - -public: - PluginLogger(std::string m_plugin_name); - - void Write(int level, std::string message); -}; - -////////////////////////////////////////////////////////////// -///////////////// Player Manager ////////////// -//////////////////////////////////////////////////////////// - -class PluginPlayerManager -{ -private: - std::string plugin_name; - -public: - PluginPlayerManager(std::string m_plugin_name); - - uint16_t GetPlayerCount(); - uint16_t GetPlayerCap(); - void SendMsg(int destination, std::string text); -}; - -////////////////////////////////////////////////////////////// -///////////////// Check Transmit ////////////// -///////////////// May God rest our CPU usage ////////////// -/////////////////////////////////////////////////////////// - -class PluginCCheckTransmitInfo -{ -public: - CCheckTransmitInfo* m_ptr; - PluginCCheckTransmitInfo(EValue ptr); - - std::map GetPlayers(); - std::vector GetEntities(); - void SetEntities(std::vector tbl); -}; - -////////////////////////////////////////////////////////////// -///////////////// Event System ////////////// -//////////////////////////////////////////////////////////// - -class PluginEvent -{ -private: - std::string plugin_name; - IGameEvent* gameEvent; - dyno::Hook* hookPtr; - - std::any returnValue; - bool shouldFree = false; - bool noBroadcastStatus = false; - -public: - PluginEvent(std::string m_plugin_name, IGameEvent* m_gameEvent, dyno::Hook* m_hookPtr); - PluginEvent(std::string gameEventName, EContext* state); - ~PluginEvent(); - - std::string GetInvokingPlugin(); - - void SetNoBroadcast(bool status); - bool GetNoBroadcast(); - - // Game Event Section - bool IsGameEvent(); - - void SetBool(std::string key, bool value); - void SetInt(std::string key, int value); - void SetUint64(std::string key, uint64_t value); - void SetFloat(std::string key, float value); - void SetString(std::string key, std::string value); - - bool GetBool(std::string key); - int GetInt(std::string key); - uint64_t GetUint64(std::string key); - float GetFloat(std::string key); - std::string GetString(std::string key); - - void FireEvent(bool dontBroadcast); - void FireEventToClient(int slot); - - void SetReturn(std::any value); - std::any GetReturnValue(); - - // Hooks section - bool IsHook(); - - bool GetHookBool(int index); - int GetHookInt(int index); - uint64_t GetHookUint64(int index); - float GetHookFloat(int index); - std::string GetHookString(int index); - PluginMemory GetHookPointer(int index); - double GetHookDouble(int index); - uint32_t GetHookUInt(int index); - int64_t GetHookInt64(int index); - - void SetHookBool(int index, bool value); - void SetHookInt(int index, int value); - void SetHookUint64(int index, uint64_t value); - void SetHookFloat(int index, float value); - void SetHookString(int index, std::string value); - void SetHookPointer(int index, PluginMemory value); - void SetHookDouble(int index, double value); - void SetHookUInt(int index, uint32_t value); - void SetHookInt64(int index, int64_t value); - - void SetHookReturn(std::any value); - std::any GetHookReturn(); -}; - -////////////////////////////////////////////////////////////// -///////////////// Key Values ////////////// -//////////////////////////////////////////////////////////// - -class PluginCEntityKeyValues -{ -private: - CEntityKeyValues* keyVals = nullptr; - -public: - PluginCEntityKeyValues(); - - CEntityKeyValues* GetKeyVals(); - bool GetBool(std::string key); - int GetInt(std::string key); - uint GetUint(std::string key); - int64 GetInt64(std::string key); - uint64 GetUint64(std::string key); - float GetFloat(std::string key); - double GetDouble(std::string key); - std::string GetString(std::string key); - std::string GetPtr(std::string key); - unsigned int GetStringToken(std::string key); - Color GetColor(std::string key); - Vector GetVector(std::string key); - Vector2D GetVector2D(std::string key); - Vector4D GetVector4D(std::string key); - QAngle GetQAngle(std::string key); - - void SetBool(std::string key, bool value); - void SetInt(std::string key, int value); - void SetUint(std::string key, uint value); - void SetInt64(std::string key, int64 value); - void SetUint64(std::string key, uint64 value); - void SetFloat(std::string key, float value); - void SetDouble(std::string key, double value); - void SetString(std::string key, std::string value); - void SetPtr(std::string key, std::string value); - void SetStringToken(std::string key, unsigned int value); - void SetColor(std::string key, Color value); - void SetVector(std::string key, Vector value); - void SetVector2D(std::string key, Vector2D value); - void SetVector4D(std::string key, Vector4D value); - void SetQAngle(std::string key, QAngle value); -}; - -////////////////////////////////////////////////////////////// -///////////////// SDK Access ////////////// -//////////////////////////////////////////////////////////// - -class SDKBaseClass -{ -private: - void* m_ptr; - -public: - std::string m_className; - uint64_t classOffset; - - SDKBaseClass() = default; - SDKBaseClass(void* ptr, std::string className); - SDKBaseClass(std::string ptr, std::string className); - - EValue AccessSDK(std::string fieldName, uint64_t path, EContext* state); - void UpdateSDK(std::string fieldName, EValue value, EContext* state); - - int CBasePlayerController_EntityIndex(); - void CAttributeList_SetOrAddAttributeValueByName(std::string str, float value); - void CBaseModelEntity_SetModel(std::string model); - void CBaseModelEntity_SetSolidType(int64_t solidType); - void CBaseModelEntity_SetBodygroup(std::string str, int64_t val); - SDKBaseClass CBaseEntity_EHandle(); - void CBaseEntity_Spawn(PluginCEntityKeyValues* kv); - void CBaseEntity_Despawn(); - void CBaseEntity_AcceptInput(std::string input, EValue activator, EValue caller, std::string value, int outputID); - std::string CBaseEntity_GetClassname(); - SDKBaseClass CBaseEntity_GetVData(); - void CBaseEntity_Teleport(Vector value, QAngle angle, Vector velocity); - void CBaseEntity_EmitSound(std::string sound_name, float pitch, float volume); - void CBaseEntity_EmitSoundFromEntity(std::string sound_name, float pitch, float volume, float delay); - void CBaseEntity_TakeDamage(EValue attacker, EValue inflictor, EValue ability, int damageType, float damage); - void CBaseEntity_CollisionRulesChanged(); - SDKBaseClass CGameSceneNode_GetSkeletonInstance(); - SDKBaseClass CPlayerPawnComponent_GetPawn(); - - std::string GetClassName(); - void* GetPtr(); - void SetPtr(void* ptr); - std::string ToPtr(); - bool IsValid(); -}; - -class SDKBaseType -{ -private: - std::string m_typeName; - -public: - SDKBaseType(std::string typeName); - - int64_t GetTypeValue(std::string key); -}; - -////////////////////////////////////////////////////////////// -///////////////// User Message ////////////// -//////////////////////////////////////////////////////////// - -class PluginUserMessage; - -class PluginUserMessage -{ -private: - int msgid = INVALID_MESSAGE_ID; - INetworkMessageInternal* internalMsg = nullptr; - uint64* clients = nullptr; - -public: - CNetMessagePB* msgBuffer = nullptr; - - PluginUserMessage(std::string msgname); - PluginUserMessage(INetworkMessageInternal* msg, CNetMessage* data, uint64* cls); - PluginUserMessage(google::protobuf::Message* msg); - ~PluginUserMessage(); - - bool IsValidMessage(); - std::string GetMessageName(); - int GetMessageID(); - - bool HasField(std::string pszFieldName); - - int32 GetInt32(std::string pszFieldName); - void SetInt32(std::string pszFieldName, int32 value); - int32 GetRepeatedInt32(std::string pszFieldName, int index); - void SetRepeatedInt32(std::string pszFieldName, int index, int32 value); - void AddInt32(std::string pszFieldName, int32 value); - - int64 GetInt64(std::string pszFieldName); - void SetInt64(std::string pszFieldName, int64 value); - int64 GetRepeatedInt64(std::string pszFieldName, int index); - void SetRepeatedInt64(std::string pszFieldName, int index, int64 value); - void AddInt64(std::string pszFieldName, int64 value); - - uint32 GetUInt32(std::string pszFieldName); - void SetUInt32(std::string pszFieldName, uint32 value); - uint32 GetRepeatedUInt32(std::string pszFieldName, int index); - void SetRepeatedUInt32(std::string pszFieldName, int index, uint32 value); - void AddUInt32(std::string pszFieldName, uint32 value); - - uint64 GetUInt64(std::string pszFieldName); - void SetUInt64(std::string pszFieldName, uint64 value); - uint64 GetRepeatedUInt64(std::string pszFieldName, int index); - void SetRepeatedUInt64(std::string pszFieldName, int index, uint64 value); - void AddUInt64(std::string pszFieldName, uint64 value); - - int64 GetInt64OrUnsigned(std::string pszFieldName); - void SetInt64OrUnsigned(std::string pszFieldName, int64 value); - int64 GetRepeatedInt64OrUnsigned(std::string pszFieldName, int index); - void SetRepeatedInt64OrUnsigned(std::string pszFieldName, int index, int64 value); - void AddInt64OrUnsigned(std::string pszFieldName, int64 value); - - bool GetBool(std::string pszFieldName); - void SetBool(std::string pszFieldName, bool value); - bool GetRepeatedBool(std::string pszFieldName, int index); - void SetRepeatedBool(std::string pszFieldName, int index, bool value); - void AddBool(std::string pszFieldName, bool value); - - float GetFloat(std::string pszFieldName); - void SetFloat(std::string pszFieldName, float value); - float GetRepeatedFloat(std::string pszFieldName, int index); - void SetRepeatedFloat(std::string pszFieldName, int index, float value); - void AddFloat(std::string pszFieldName, float value); - - double GetDouble(std::string pszFieldName); - void SetDouble(std::string pszFieldName, double value); - double GetRepeatedDouble(std::string pszFieldName, int index); - void SetRepeatedDouble(std::string pszFieldName, int index, double value); - void AddDouble(std::string pszFieldName, double value); - - float GetFloatOrDouble(std::string pszFieldName); - void SetFloatOrDouble(std::string pszFieldName, float value); - float GetRepeatedFloatOrDouble(std::string pszFieldName, int index); - void SetRepeatedFloatOrDouble(std::string pszFieldName, int index, float value); - void AddFloatOrDouble(std::string pszFieldName, float value); - - std::string GetString(std::string pszFieldName); - void SetString(std::string pszFieldName, const char* value); - std::string GetRepeatedString(std::string pszFieldName, int index); - void SetRepeatedString(std::string pszFieldName, int index, const char* value); - void AddString(std::string pszFieldName, const char* value); - - Color GetColor(std::string pszFieldName); - void SetColor(std::string pszFieldName, const Color& value); - Color GetRepeatedColor(std::string pszFieldName, int index); - void SetRepeatedColor(std::string pszFieldName, int index, const Color& value); - void AddColor(std::string pszFieldName, const Color& value); - - Vector2D GetVector2D(std::string pszFieldName); - void SetVector2D(std::string pszFieldName, Vector2D& vec); - Vector2D GetRepeatedVector2D(std::string pszFieldName, int index); - void SetRepeatedVector2D(std::string pszFieldName, int index, Vector2D& vec); - void AddVector2D(std::string pszFieldName, Vector2D& vec); - - Vector GetVector(std::string pszFieldName); - void SetVector(std::string pszFieldName, Vector& vec); - Vector GetRepeatedVector(std::string pszFieldName, int index); - void SetRepeatedVector(std::string pszFieldName, int index, Vector& vec); - void AddVector(std::string pszFieldName, Vector& vec); - - QAngle GetQAngle(std::string pszFieldName); - void SetQAngle(std::string pszFieldName, QAngle& vec); - QAngle GetRepeatedQAngle(std::string pszFieldName, int index); - void SetRepeatedQAngle(std::string pszFieldName, int index, QAngle& vec); - void AddQAngle(std::string pszFieldName, QAngle& vec); - - PluginUserMessage GetUMessage(std::string pszFieldName); - PluginUserMessage GetRepeatedMessage(std::string pszFieldName, int index); - PluginUserMessage AddMessage(std::string pszFieldName); - - void RemoveRepeatedFieldValue(std::string pszFieldName, int index); - int GetRepeatedFieldCount(std::string pszFieldName); - - void AddClient(int playerId); - void RemoveClient(int playerId); - void ClearClients(); - void AddClients(); - std::vector GetClients(); - - void SendToPlayer(int playerId); - void SendToAllPlayers(); -}; - -////////////////////////////////////////////////////////////// -///////////////// Commands ////////////// -//////////////////////////////////////////////////////////// - -class PluginCommands -{ -private: - std::string plugin_name; - -public: - PluginCommands(std::string m_plugin_name); - - void RegisterCmd(std::string commandName, void* callback); - void RegisterCommand(std::string commandName, EValue callback); - void UnregisterCommand(std::string commandName); - - void RegisterRawAlias(std::string commandName, std::string aliasName); - void RegisterAlias(std::string commandName, std::string aliasName); - void UnregisterAlias(std::string aliasName); - - - std::vector GetAllCommands(); - std::vector GetCommands(); -}; - -////////////////////////////////////////////////////////////// -///////////////// Database ////////////// -//////////////////////////////////////////////////////////// - -class PluginDatabase -{ -private: - std::string connection_name; - IDatabase* db; - bool dbConnected; - -public: - PluginDatabase(std::string m_connection_name); - - bool IsConnected(); - std::string EscapeString(std::string str); - std::string GetVersion(); - - void Query(std::string query, EValue callback, EContext* L); - void QueryParams(std::string query, std::map params, EValue callback, EContext* L); - - EValue QueryBuilder(EContext* L); - void ExecuteQB(std::string query, EValue cb, EContext* L); -}; - -////////////////////////////////////////////////////////////// -///////////////// CHandle ////////////// -//////////////////////////////////////////////////////////// - -class PluginCHandle -{ -private: - CHandle* m_Handle; - -public: - PluginCHandle(std::string ptr); - PluginCHandle(void* ptr); - - std::string GetPtr(); - void SetPtr(std::string ptr); - - std::string GetHandlePtr(); -}; - -////////////////////////////////////////////////////////////// -///////////////// Configuration ////////////// -//////////////////////////////////////////////////////////// - -class PluginConfiguration -{ -private: - std::string plugin_name; - -public: - PluginConfiguration(std::string m_plugin_name); - - bool Exists(std::string key); - void Reload(std::string key); - uint64_t FetchArraySize(std::string key); - std::any Fetch(std::string key); - - void Create(std::string configurationKey, EValue table, EContext* L); -}; - -////////////////////////////////////////////////////////////// -///////////////// Convars ////////////// -//////////////////////////////////////////////////////////// - -class PluginConvars -{ -private: - std::string plugin_name; - std::set created_cvars; - -public: - PluginConvars(std::string m_plugin_name); - ~PluginConvars(); - - void CreateFake(std::string cvarname, int32_t type, std::any defaultValue, bool prot); - void DeleteFake(std::string cvarname); - - std::any GetConvarValue(std::string cvarname); - - int16_t GetConvarType(std::string cvarname); - void SetConvar(std::string cvarname, std::string value); - - bool Exists(std::string cvarname); - bool ExistsFake(std::string cvarname); - - void AddFlags(std::string cvarname, int64_t flags); - void RemoveFlags(std::string cvarname, int64_t flags); - int64_t GetFlags(std::string cvarname); - bool HasFlags(std::string cvarname, int64_t flags); -}; - -////////////////////////////////////////////////////////////// -///////////////// Menus ////////////// -//////////////////////////////////////////////////////////// - -class PluginMenus -{ -private: - std::string plugin_name; - -public: - PluginMenus(std::string m_plugin_name); - - void Register(std::string custom_id, std::string title, std::string color, std::vector> options, std::optional okind); - void RegisterTemporary(std::string custom_id, std::string title, std::string color, std::vector> options, std::optional okind); - void Unregister(std::string id); -}; - -////////////////////////////////////////////////////////////// -///////////////// Files ////////////// -//////////////////////////////////////////////////////////// - -class PluginFiles -{ -private: - std::string plugin_name; - -public: - PluginFiles(std::string m_plugin_name); - - void Append(std::string path, std::string content, bool hasdate); - bool CreateDirectory(std::string path); - void Delete(std::string path); - bool ExistsPath(std::string path); - std::vector FetchDirectories(std::string path); - std::vector FetchFileNames(std::string path); - std::string GetBase(std::string path); - bool IsDirectory(std::string path); - std::string Read(std::string path); - void Write(std::string path, std::string content, bool hasdate); - - bool Compress(std::string path, std::string output); - bool Decompress(std::string path, std::string output); -}; - -////////////////////////////////////////////////////////////// -///////////////// Precacher ////////////// -//////////////////////////////////////////////////////////// - -class PluginPrecacher -{ -private: - std::string plugin_name; - -public: - PluginPrecacher(std::string m_plugin_name); - - void PrecacheModel(std::string model); - void PrecacheSound(std::string path); - void PrecacheItem(std::string path); -}; - -////////////////////////////////////////////////////////////// -///////////////// Server ////////////// -//////////////////////////////////////////////////////////// - -class PluginServer -{ -private: - std::string plugin_name; - -public: - PluginServer(std::string m_plugin_name); - - std::string GetMap(); - bool IsMapValid(std::string map); - void ChangeMap(std::string map, bool workshop); - - uint16_t GetMaxPlayers(); - - void Execute(std::string cmd); - - float GetCurrentTime(); - int GetTickCount(); - - void TerminateRound(float delay, uint32_t reason); - std::string GetIP(); -}; - -////////////////////////////////////////////////////////////// -///////////////// Weapon ////////////// -//////////////////////////////////////////////////////////// - -class PluginWeapon -{ -private: - int m_playerId; - CBasePlayerWeapon* m_ptr; - -public: - PluginWeapon(int playerId, CBasePlayerWeapon* ptr); - PluginWeapon(int playerId, std::string ptr); - - SDKBaseClass GetCBasePlayerWeapon(); - SDKBaseClass GetCCSWeaponBase(); - SDKBaseClass GetCBasePlayerWeaponVData(); - SDKBaseClass GetCCSWeaponBaseVData(); - - void Drop(); - void Remove(); - void SetDefaultAttributes(); -}; - -////////////////////////////////////////////////////////////// -///////////////// Weapon Manager ////////////// -//////////////////////////////////////////////////////////// - -class PluginWeaponManager -{ -private: - int m_playerId; - -public: - PluginWeaponManager(int playerId); - - void GiveWeapon(std::string weapon_name); - void RemoveWeapons(); - void DropWeapons(); - std::vector GetWeapons(); - - void RemoveByClassname(std::string classname); - void RemoveBySlot(int slot); - PluginWeapon GetFirstInSlot(int slot); - std::vector GetInSlot(int slot); - void RemoveByItemDefinition(int idx); -}; - -////////////////////////////////////////////////////////////// -///////////////// Player ////////////// -//////////////////////////////////////////////////////////// - -class PluginPlayer -{ -private: - int playerId; - - SDKBaseClass* pCBaseEntity = nullptr; - SDKBaseClass* pCBasePlayerController = nullptr; - SDKBaseClass* pCBasePlayerPawn = nullptr; - SDKBaseClass* pCCSPlayerController = nullptr; - SDKBaseClass* pCCSPlayerPawn = nullptr; - SDKBaseClass* pCCSPlayerPawnBase = nullptr; - -public: - PluginPlayer(int m_playerId); - ~PluginPlayer(); - - SDKBaseClass* GetCBaseEntity(); - SDKBaseClass* GetCBasePlayerController(); - SDKBaseClass* GetCBasePlayerPawn(); - SDKBaseClass* GetCCSPlayerController(); - SDKBaseClass* GetCCSPlayerPawn(); - SDKBaseClass* GetCCSPlayerPawnBase(); - void Drop(int reason); - uint32_t GetConnectedTime(); - PluginWeaponManager GetWeaponManager(); - - std::string GetChatTag(); - void SetChatTag(std::string tag); - - std::string GetChatTagColor(); - void SetChatTagColor(std::string color); - - std::string GetNameColor(); - void SetNameColor(std::string color); - - std::string GetChatColor(); - void SetChatColor(std::string color); - - void ExecuteCommand(std::string cmd); - std::string GetConvarValue(std::string name); - void SetConvar(std::string name, std::string value); - std::string GetIPAddress(); - int GetSlot(); - uint64_t GetSteamID(); - std::string GetSteamID2(); - void SwitchTeam(int team); - void ChangeTeam(int team); - void HideMenu(); - bool IsFakeClient(); - bool IsFirstSpawn(); - void Kill(); - void Respawn(); - void SendMsg(int dest, std::string msg); - void ShowMenu(std::string menuid); - - std::any GetVarValue(std::string key); - void SetVarValue(std::string key, std::any value); - - void SetListening(int playerid, int listenOverride); - int GetListening(int playerid); - - void SetVoiceFlags(int flags); - int GetVoiceFlags(); - - void QueryConvar(std::string cvar_name); - - void PerformMenuAction(std::string action, int value); - - bool IsValid(); -}; - -////////////////////////////////////////////////////////////// -///////////////// Translations ////////////// -//////////////////////////////////////////////////////////// - -std::string scripting_FetchTranslation(std::string key, int playerid); - -////////////////////////////////////////////////////////////// -///////////////// Memory ////////////// -//////////////////////////////////////////////////////////// - -class PluginMemory -{ -private: - void* m_ptr; - bool accessedVTable = false; - bool allocatedMem = false; - -public: - PluginMemory(); - ~PluginMemory(); - - void LoadFromPtr(void* ptr); - void LoadFromAddress(std::string addr); - void LoadFromSignatureName(std::string signature_name); - void LoadFromSignature(std::string library, std::string signature); - - void AddOffsetByName(std::string offsetName); - void RemoveOffsetByName(std::string offsetName); - - void AddOffset(int64_t offset); - void RemoveOffset(int64_t offset); - - void AccessIndexFromOffset(std::string offsetName); - void AccessIndex(int64_t idx); - - void AccessVTableFromOffset(std::string offsetName); - void AccessVTable(int64_t offset); - bool AccessedVTable(); - - void Allocate(uint64_t size); - void Deallocate(); - - void Clear(); - - void SetBool(bool value); - void SetInt(int value); - void SetInt64(int64_t value); - void SetUint(uint32_t value); - void SetUint64(uint64_t value); - void SetFloat(float value); - void SetDouble(double value); - void SetVector(Vector value); - void SetVector2D(Vector2D value); - void SetVector4D(Vector4D value); - void SetColor(Color value); - void SetQAngle(QAngle value); - - bool GetBool(); - int GetInt(); - int64_t GetInt64(); - uint32_t GetUint(); - uint64_t GetUint64(); - float GetFloat(); - double GetDouble(); - Vector GetVector(); - Vector2D GetVector2D(); - Vector4D GetVector4D(); - Color GetColor(); - QAngle GetQAngle(); - - void* GetRawPtr(); - std::string GetPtr(); - bool IsValid(); -}; - -////////////////////////////////////////////////////////////// -///////////////// DynHook ////////////// -//////////////////////////////////////////////////////////// - -enum class DataType_t -{ - VOID, - BOOL, - CHAR, - UCHAR, - SHORT, - USHORT, - INT, - UINT, - LONG, - ULONG, - LONG_LONG, - ULONG_LONG, - FLOAT, - DOUBLE, - POINTER, - STRING, - VARIANT -}; - -/* - Args List Convention - - p -> Pointer - - b -> Boolean - - f -> Float - - d -> Double - - i -> Integer 32-bit - - u -> Unsigned Integer 32-bit - - s -> const char* - - I -> Integer 64-bit - - U -> Unsigned Integer 64-bit - - v -> Void -*/ - -struct Hook -{ - void* ptr; - std::string argsList; - std::string retType; - std::string id; - bool vTable; -}; - -class PluginHooks -{ -private: - std::string m_plugin_name; - -public: - PluginHooks(std::string plugin_name); - - std::string AddHook(PluginMemory mem, std::string args_list, std::string ret_type); - std::string AddEntityOutputHook(std::string classname, std::string output); - - std::any CallHook(std::string hookId, std::string hookPayload); -}; - -////////////////////////////////////////////////////////////// -///////////////// VGUI ////////////// -//////////////////////////////////////////////////////////// - -class PluginVGUI -{ -private: - std::string m_plugin_name; - -public: - PluginVGUI(std::string plugin_name); - - uint64_t ShowText(int playerid, Color color, std::string text, float posX, float posY, std::string font_name, std::optional background); - void RemoveText(uint64_t textID); - void SetTextMessage(uint64_t textID, std::string text); - void SetTextPosition(uint64_t textID, float posX, float posY); -}; - -////////////////////////////////////////////////////////////// -///////////////// Entities ////////////// -//////////////////////////////////////////////////////////// - -std::vector UTIL_FindEntitiesByClassname(std::string name); -SDKBaseClass CreateEntityByName(std::string className); - -////////////////////////////////////////////////////////////// -///////////////// Utils ////////////// -//////////////////////////////////////////////////////////// - -bool scripting_IsWindows(); -bool scripting_IsLinux(); -std::string scripting_GetOS(); -SDKBaseClass scripting_GetCCSGameRules(); -std::string scripting_GetPluginPath(std::string plugin_name); -void scripting_StateUpdate(std::string ptr, std::string classname, std::string field); -PluginUserMessage scripting_GetUserMessage(std::string uuid); -std::string scripting_CreateTextTable(std::vector> data); -int scripting_GetPluginState(std::string plugin_name); -uint64_t RegisterCallstack(std::string plugin_name, std::string stackmsg); -void UnregisterCallstack(std::string plugin_name, uint64_t stackid); - -#endif \ No newline at end of file diff --git a/src/plugins/core/scripting/engine/convars.cpp b/src/plugins/core/scripting/engine/convars.cpp deleted file mode 100644 index 32cdc828c..000000000 --- a/src/plugins/core/scripting/engine/convars.cpp +++ /dev/null @@ -1,185 +0,0 @@ -#include "../../scripting.h" -#include "../../../../entrypoint.h" -#include "../../../../engine/convars/convars.h" - -PluginConvars::PluginConvars(std::string m_plugin_name) -{ - this->plugin_name = m_plugin_name; -} - -PluginConvars::~PluginConvars() -{ - for(auto it = created_cvars.begin(); it != created_cvars.end(); ++it) - DeleteFakeConvar(*it); -} - -void PluginConvars::CreateFake(std::string cvarname, int32_t type, std::any defaultValue, bool prot) -{ - if (type < 0 || type > 14) return; - if (FakeConvarExists(cvarname)) return; - if (FetchCVar(cvarname).IsValidRef()) return; - - if (type == EConVarType_Int16) { - if (defaultValue.type() == typeid(int64_t)) - defaultValue = (int16_t)std::any_cast(defaultValue); - else - defaultValue = (int16_t)0; - } - else if (type == EConVarType_UInt16) { - if (defaultValue.type() == typeid(int64_t)) - defaultValue = (uint16_t)std::any_cast(defaultValue); - else - defaultValue = (uint16_t)0; - } - else if (type == EConVarType_UInt32) { - if (defaultValue.type() == typeid(int64_t)) - defaultValue = (uint32_t)std::any_cast(defaultValue); - else - defaultValue = (uint32_t)0; - } - else if (type == EConVarType_Int32) { - if (defaultValue.type() == typeid(int64_t)) - defaultValue = (int32_t)std::any_cast(defaultValue); - else - defaultValue = (int32_t)0; - } - else if (type == EConVarType_UInt64) { - if (defaultValue.type() == typeid(int64_t)) - defaultValue = (uint64_t)std::any_cast(defaultValue); - else - defaultValue = (uint64_t)0; - } - else if (type == EConVarType_Int64) { - if (defaultValue.type() == typeid(int64_t)) - defaultValue = (int64_t)std::any_cast(defaultValue); - else - defaultValue = (int64_t)0; - } - else if (type == EConVarType_Bool) { - if (defaultValue.type() != typeid(bool)) - defaultValue = false; - } - else if (type == EConVarType_Float32) { - if (defaultValue.type() != typeid(float)) - defaultValue = (float)0.0f; - } - else if (type == EConVarType_Float64) { - if (defaultValue.type() != typeid(double)) - defaultValue = (double)0.0f; - } - else if (type == EConVarType_String) { - if (defaultValue.type() != typeid(std::string)) { - if (defaultValue.type() == typeid(char*)) - defaultValue = std::string(std::any_cast(defaultValue)); - else if (defaultValue.type() == typeid(const char*)) - defaultValue = std::string(std::any_cast(defaultValue)); - else - defaultValue = std::string(""); - } - } - else if (type == EConVarType_Color) { - if (defaultValue.type() != typeid(Color)) - defaultValue = Color(0, 0, 0); - } - else if (type == EConVarType_Vector2) { - if (defaultValue.type() != typeid(Vector2D)) - defaultValue = Vector2D(0.0f, 0.0f); - } - else if (type == EConVarType_Vector3) { - if (defaultValue.type() != typeid(Vector)) - defaultValue = Vector(0.0f, 0.0f, 0.0f); - } - else if (type == EConVarType_Vector4) { - if (defaultValue.type() != typeid(Vector4D)) - defaultValue = Vector4D(0.0f, 0.0f, 0.0f, 0.0f); - } - else if (type == EConVarType_Qangle) { - if (defaultValue.type() != typeid(QAngle)) - defaultValue = QAngle(0.0f, 0.0f, 0.0f); - } - - InsertFakeConvar(cvarname, (EConVarType)type, defaultValue, prot); - if(created_cvars.find(cvarname) == created_cvars.end()) created_cvars.insert(cvarname); -} - -void PluginConvars::DeleteFake(std::string cvarname) -{ - if (!FakeConvarExists(cvarname)) return; - - DeleteFakeConvar(cvarname); - if(created_cvars.find(cvarname) != created_cvars.end()) created_cvars.erase(cvarname); -} - -void PluginConvars::AddFlags(std::string cvarname, int64_t flags) -{ - REGISTER_CALLSTACK(this->plugin_name, string_format("PluginConvars::AddFlags(cvarname=\"%s\",flags=%lld)", cvarname.c_str(), flags)); - auto cvar = FetchCVar(cvarname); - if(!cvar.IsValidRef()) return; - - cvar.AddFlags(flags); -} - -void PluginConvars::RemoveFlags(std::string cvarname, int64_t flags) -{ - REGISTER_CALLSTACK(this->plugin_name, string_format("PluginConvars::RemoveFlags(cvarname=\"%s\",flags=%lld)", cvarname.c_str(), flags)); - auto cvar = FetchCVar(cvarname); - if(!cvar.IsValidRef()) return; - - cvar.RemoveFlags(flags); -} - -int64_t PluginConvars::GetFlags(std::string cvarname) -{ - REGISTER_CALLSTACK(this->plugin_name, string_format("PluginConvars::GetFlags(cvarname=\"%s\")", cvarname.c_str())); - auto cvar = FetchCVar(cvarname); - if(!cvar.IsValidRef()) return 0; - - return cvar.GetFlags(); -} - -bool PluginConvars::HasFlags(std::string cvarname, int64_t flags) -{ - REGISTER_CALLSTACK(this->plugin_name, string_format("PluginConvars::HasFlags(cvarname=\"%s\",flags=%lld)", cvarname.c_str(), flags)); - auto cvar = FetchCVar(cvarname); - if(!cvar.IsValidRef()) return false; - - return cvar.IsFlagSet(flags); -} - -bool PluginConvars::Exists(std::string cvarname) -{ - REGISTER_CALLSTACK(this->plugin_name, string_format("PluginConvars::ExistsFake(cvarname=\"%s\")", cvarname.c_str())); - - return FetchCVar(cvarname).IsValidRef(); -} - -bool PluginConvars::ExistsFake(std::string cvarname) -{ - REGISTER_CALLSTACK(this->plugin_name, string_format("PluginConvars::ExistsFake(cvarname=\"%s\")", cvarname.c_str())); - - return FakeConvarExists(cvarname); -} - -std::any PluginConvars::GetConvarValue(std::string cvarname) -{ - REGISTER_CALLSTACK(this->plugin_name, string_format("PluginConvars::GetConvarValue(cvarname=\"%s\")", cvarname.c_str())); - - return FetchCVarValue(cvarname); -} - -int16_t PluginConvars::GetConvarType(std::string cvarname) -{ - REGISTER_CALLSTACK(this->plugin_name, string_format("PluginConvars::GetConvarType(cvarname=\"%s\")", cvarname.c_str())); - - return (int16_t)FetchCVarType(cvarname); -} - -void PluginConvars::SetConvar(std::string cvarname, std::string value) -{ - REGISTER_CALLSTACK(this->plugin_name, string_format("PluginConvars::SetConvar(cvarname=\"%s\", value=\"%s\")", cvarname.c_str(), value.c_str())); - - auto cvar = FetchCVar(cvarname); - if(!cvar.IsValidRef()) return; - - cvar.SetString(value.c_str()); -} \ No newline at end of file diff --git a/src/plugins/core/scripting/engine/events.cpp b/src/plugins/core/scripting/engine/events.cpp deleted file mode 100644 index 5cade3141..000000000 --- a/src/plugins/core/scripting/engine/events.cpp +++ /dev/null @@ -1,422 +0,0 @@ -#include "../../scripting.h" - -#include "../../../../memory/signatures/Signatures.h" - -typedef IGameEventListener2* (*GetLegacyGameEventListener)(CPlayerSlot slot); - -std::string FetchPluginName(EContext* state); - -extern std::map> hooksList; -extern std::map gameEventsRegister; - -PluginEvent::PluginEvent(std::string m_plugin_name, IGameEvent* m_gameEvent, dyno::Hook* m_hookPtr) -{ - this->plugin_name = m_plugin_name; - this->gameEvent = m_gameEvent; - this->hookPtr = m_hookPtr; -} - -PluginEvent::PluginEvent(std::string gameEventName, EContext* state) -{ - this->plugin_name = FetchPluginName(state); - - for(auto it = gameEventsRegister.begin(); it != gameEventsRegister.end(); ++it) - if(it->second == gameEventName) { - this->gameEvent = g_gameEventManager->CreateEvent(it->first.c_str()); - this->shouldFree = true; - } - - this->hookPtr = nullptr; -} - -PluginEvent::~PluginEvent() -{ - if(this->shouldFree && this->gameEvent) - g_gameEventManager->FreeEvent(this->gameEvent); -} - -std::string PluginEvent::GetInvokingPlugin() -{ - return this->plugin_name; -} - -bool PluginEvent::IsGameEvent() -{ - return (this->gameEvent != nullptr); -} - -bool PluginEvent::IsHook() -{ - return (this->hookPtr != nullptr); -} - -void PluginEvent::SetReturn(std::any value) -{ - this->returnValue = value; -} - -std::any PluginEvent::GetReturnValue() -{ - return this->returnValue; -} - -void PluginEvent::SetBool(std::string key, bool value) -{ - if (!this->gameEvent) - return; - - this->gameEvent->SetBool(key.c_str(), value); -} - -void PluginEvent::SetInt(std::string key, int value) -{ - if (!this->gameEvent) - return; - - this->gameEvent->SetInt(key.c_str(), value); -} - -void PluginEvent::SetUint64(std::string key, uint64_t value) -{ - if (!this->gameEvent) - return; - - this->gameEvent->SetUint64(key.c_str(), value); -} - -void PluginEvent::SetFloat(std::string key, float value) -{ - if (!this->gameEvent) - return; - - this->gameEvent->SetFloat(key.c_str(), value); -} - -void PluginEvent::SetString(std::string key, std::string value) -{ - if (!this->gameEvent) - return; - - this->gameEvent->SetString(key.c_str(), value.c_str()); -} - -bool PluginEvent::GetBool(std::string key) -{ - if (!this->gameEvent) - return false; - - if (!this->gameEvent->HasKey(key.c_str())) return false; - - return this->gameEvent->GetBool(key.c_str()); -} - -int PluginEvent::GetInt(std::string key) -{ - if (!this->gameEvent) - return -1; - - if (!this->gameEvent->HasKey(key.c_str())) return -1; - - return this->gameEvent->GetInt(key.c_str()); -} - -uint64_t PluginEvent::GetUint64(std::string key) -{ - if (!this->gameEvent) - return 0; - - if (!this->gameEvent->HasKey(key.c_str())) return 0; - - return this->gameEvent->GetUint64(key.c_str()); -} - -float PluginEvent::GetFloat(std::string key) -{ - if (!this->gameEvent) - return 0.0f; - - if (!this->gameEvent->HasKey(key.c_str())) return 0.0f; - - return this->gameEvent->GetFloat(key.c_str()); -} - -std::string PluginEvent::GetString(std::string key) -{ - if (!this->gameEvent) - return ""; - - if (!this->gameEvent->HasKey(key.c_str())) return ""; - - return this->gameEvent->GetString(key.c_str()); -} - -void PluginEvent::FireEvent(bool dontBroadcast) -{ - if (!this->gameEvent) - return; - - g_gameEventManager->FireEvent(this->gameEvent, dontBroadcast); -} - -void PluginEvent::FireEventToClient(int slot) -{ - if (!this->gameEvent) - return; - - IGameEventListener2* playerListener = g_Signatures->FetchSignature("LegacyGameEventListener")(slot); - playerListener->FireGameEvent(this->gameEvent); -} - -bool PluginEvent::GetHookBool(int index) -{ - if (!this->hookPtr) - return false; - - return this->hookPtr->getArgument(index); -} - -int PluginEvent::GetHookInt(int index) -{ - if (!this->hookPtr) - return 0; - - return this->hookPtr->getArgument(index); -} - -uint64_t PluginEvent::GetHookUint64(int index) -{ - if (!this->hookPtr) - return 0; - - return this->hookPtr->getArgument(index); -} - -float PluginEvent::GetHookFloat(int index) -{ - if (!this->hookPtr) - return 0.0f; - - return this->hookPtr->getArgument(index); -} - -std::string PluginEvent::GetHookString(int index) -{ - if (!this->hookPtr) - return ""; - - return this->hookPtr->getArgument(index); -} - -PluginMemory PluginEvent::GetHookPointer(int index) -{ - PluginMemory mem; - if (!this->hookPtr) - return mem; - - mem.LoadFromPtr(this->hookPtr->getArgument(index)); - return mem; -} - -double PluginEvent::GetHookDouble(int index) -{ - if (!this->hookPtr) - return 0.0f; - - return this->hookPtr->getArgument(index); -} - -uint32_t PluginEvent::GetHookUInt(int index) -{ - if (!this->hookPtr) - return 0; - - return this->hookPtr->getArgument(index); -} - -int64_t PluginEvent::GetHookInt64(int index) -{ - if (!this->hookPtr) - return 0; - - return this->hookPtr->getArgument(index); -} - -void PluginEvent::SetHookBool(int index, bool value) -{ - if (!this->hookPtr) - return; - - this->hookPtr->setArgument(index, value); -} - -void PluginEvent::SetHookInt(int index, int value) -{ - if (!this->hookPtr) - return; - - this->hookPtr->setArgument(index, value); -} - -void PluginEvent::SetHookUint64(int index, uint64_t value) -{ - if (!this->hookPtr) - return; - - this->hookPtr->setArgument(index, value); -} - -void PluginEvent::SetHookFloat(int index, float value) -{ - if (!this->hookPtr) - return; - - this->hookPtr->setArgument(index, value); -} - -void PluginEvent::SetHookString(int index, std::string value) -{ - if (!this->hookPtr) - return; - - this->hookPtr->setArgument(index, value.c_str()); -} - -void PluginEvent::SetHookPointer(int index, PluginMemory value) -{ - if (!this->hookPtr) - return; - - this->hookPtr->setArgument(index, value.GetRawPtr()); -} - -void PluginEvent::SetHookDouble(int index, double value) -{ - if (!this->hookPtr) - return; - - this->hookPtr->setArgument(index, value); -} - -void PluginEvent::SetHookUInt(int index, uint32_t value) -{ - if (!this->hookPtr) - return; - - this->hookPtr->setArgument(index, value); -} - -void PluginEvent::SetHookInt64(int index, int64_t value) -{ - if (!this->hookPtr) - return; - - this->hookPtr->setArgument(index, value); -} - -void PluginEvent::SetHookReturn(std::any value) -{ - - if (!this->hookPtr) - return; - - if (!value.has_value()) - return; - - try - { - if (value.type() == typeid(const char*)) - return this->hookPtr->setReturnValue(std::any_cast(value)); - else if (value.type() == typeid(std::string)) - return this->hookPtr->setReturnValue(std::any_cast(value).c_str()); - else if (value.type() == typeid(uint64)) - return this->hookPtr->setReturnValue(std::any_cast(value)); - else if (value.type() == typeid(uint32)) - return this->hookPtr->setReturnValue(std::any_cast(value)); - else if (value.type() == typeid(unsigned long)) - return this->hookPtr->setReturnValue(std::any_cast(value)); - else if (value.type() == typeid(uint16)) - return this->hookPtr->setReturnValue(std::any_cast(value)); - else if (value.type() == typeid(uint8)) - return this->hookPtr->setReturnValue(std::any_cast(value)); - else if (value.type() == typeid(int64)) - return this->hookPtr->setReturnValue(std::any_cast(value)); - else if (value.type() == typeid(int32)) - return this->hookPtr->setReturnValue(std::any_cast(value)); - else if (value.type() == typeid(long)) - return this->hookPtr->setReturnValue(std::any_cast(value)); - else if (value.type() == typeid(int16)) - return this->hookPtr->setReturnValue(std::any_cast(value)); - else if (value.type() == typeid(int8)) - return this->hookPtr->setReturnValue(std::any_cast(value)); - else if (value.type() == typeid(bool)) - return this->hookPtr->setReturnValue(std::any_cast(value)); - else if (value.type() == typeid(float)) - return this->hookPtr->setReturnValue(std::any_cast(value)); - else if (value.type() == typeid(void*)) - return this->hookPtr->setReturnValue(std::any_cast(value)); - else if (value.type() == typeid(double)) - return this->hookPtr->setReturnValue(std::any_cast(value)); - else if (value.type() == typeid(std::nullptr_t)) - return this->hookPtr->setReturnValue(0); - else - PRINTF("Unknown Data Type: %s\n", value.type().name()); - } - catch (std::bad_any_cast err) - { - PRINTF("Invalid casting: %s\n", err.what()); - } -} - -std::any PluginEvent::GetHookReturn() -{ - if (!this->hookPtr) - return nullptr; - - if (hooksList.find(this->hookPtr) == hooksList.end()) - return nullptr; - - if (hooksList[this->hookPtr].size() <= 0) - return nullptr; - - Hook hk = hooksList[this->hookPtr][0]; - if (hk.retType.size() <= 0) - return nullptr; - - if (hk.retType.at(0) == 'p') - { - PluginMemory mem; - mem.LoadFromPtr(this->hookPtr->getReturnValue()); - return mem.GetPtr(); - } - else if (hk.retType.at(0) == 'f') - return this->hookPtr->getReturnValue(); - else if (hk.retType.at(0) == 'b') - return this->hookPtr->getReturnValue(); - else if (hk.retType.at(0) == 'd') - return this->hookPtr->getReturnValue(); - else if (hk.retType.at(0) == 'i') - return this->hookPtr->getReturnValue(); - else if (hk.retType.at(0) == 'u') - return this->hookPtr->getReturnValue(); - else if (hk.retType.at(0) == 's') - return this->hookPtr->getReturnValue(); - else if (hk.retType.at(0) == 'I') - return this->hookPtr->getReturnValue(); - else if (hk.retType.at(0) == 'U') - return this->hookPtr->getReturnValue(); - else - { - PRINTF("Invalid argument in return value: '%c'.\n", hk.retType.at(0)); - return nullptr; - } -} - -void PluginEvent::SetNoBroadcast(bool status) -{ - noBroadcastStatus = status; -} - -bool PluginEvent::GetNoBroadcast() -{ - return noBroadcastStatus; -} diff --git a/src/plugins/core/scripting/engine/gameevents.cpp b/src/plugins/core/scripting/engine/gameevents.cpp deleted file mode 100644 index b13a56271..000000000 --- a/src/plugins/core/scripting/engine/gameevents.cpp +++ /dev/null @@ -1,169 +0,0 @@ -#include "../../scripting.h" -#include "../../../PluginManager.h" -#include "../../../../player/playermanager/PlayerManager.h" -#include "../../../../memory/hooks/FuncHook.h" - -PluginEvent* noReturnEvent = nullptr; - -void OnClientKeyStateChange(int playerid, std::string key, bool pressed) -{ - if (pressed && g_Config->FetchValue("core.menu.inputMode") != "chat") - { - Player* player = g_playerManager->GetPlayer(playerid); - if (!player) - return; - - player->menu_renderer->PerformMenuAction(key); - } - - if (noReturnEvent == nullptr) noReturnEvent = new PluginEvent("core", nullptr, nullptr); - - g_pluginManager->ExecuteEvent("core", "OnClientKeyStateChange", encoders::msgpack::SerializeToString({ playerid, key, pressed }), noReturnEvent); -} - -bool OnClientCommand(int playerid, std::string command) -{ - PluginEvent* event = new PluginEvent("core", nullptr, nullptr); - g_pluginManager->ExecuteEvent("core", "OnClientCommand", encoders::msgpack::SerializeToString({ playerid, command }), event); - - bool response = true; - try - { - response = std::any_cast(event->GetReturnValue()); - } - catch (std::bad_any_cast e) - { - response = true; - } - - delete event; - return response; -} - -bool OnClientChat(int playerid, std::string text, bool teamonly) -{ - PluginEvent* event = new PluginEvent("core", nullptr, nullptr); - g_pluginManager->ExecuteEvent("core", "OnClientChat", encoders::msgpack::SerializeToString({ playerid, text, teamonly }), event); - - bool response = true; - try - { - response = std::any_cast(event->GetReturnValue()); - } - catch (std::bad_any_cast e) - { - response = true; - } - - delete event; - return response; -} - -void OnClientConvarQuery(int playerid, std::string convar_name, std::string convar_value) -{ - if (noReturnEvent == nullptr) noReturnEvent = new PluginEvent("core", nullptr, nullptr); - - g_pluginManager->ExecuteEvent("core", "OnClientConvarQuery", encoders::msgpack::SerializeToString({ playerid, convar_name, convar_value }), noReturnEvent); -} - -void Hook_CBaseEntity_TakeDamage(CBaseEntity* _this, CTakeDamageInfo* damageInfo); -FuncHook CBaseEntity_TakeDamage(Hook_CBaseEntity_TakeDamage, "CBaseEntity_TakeDamage"); - -void Hook_CBaseEntity_TakeDamage(CBaseEntity* _this, CTakeDamageInfo* damageInfo) -{ - CCSPlayerPawn* playerPawn = (CCSPlayerPawn*)_this; - if (!playerPawn) return CBaseEntity_TakeDamage(_this, damageInfo); - - CCSPlayerController* playerController = (CCSPlayerController*)playerPawn->m_hController().Get(); - if (!playerController) return CBaseEntity_TakeDamage(_this, damageInfo); - - int playerid = playerController->GetPlayerSlot(); - int attackerid = -1; - - CCSPlayerPawn* attackerPawn = (CCSPlayerPawn*)damageInfo->m_hAttacker.Get(); - if (attackerPawn) { - CCSPlayerController* attackerController = (CCSPlayerController*)attackerPawn->m_hController().Get(); - if (attackerController) attackerid = attackerController->GetPlayerSlot(); - } - - PluginEvent* event = new PluginEvent("core", nullptr, nullptr); - g_pluginManager->ExecuteEvent("core", "OnPlayerDamage", encoders::msgpack::SerializeToString({ playerid, attackerid, string_format("%p", damageInfo), "CTakeDamageInfo", string_format("%p", damageInfo->m_hInflictor.Get()), "CBaseEntity", string_format("%p", damageInfo->m_hAbility.Get()), "CBaseEntity" }), event); - - bool response = true; - try - { - response = std::any_cast(event->GetReturnValue()); - } - catch (std::bad_any_cast e) - { - response = true; - } - - delete event; - - if (!response) return; - - CBaseEntity_TakeDamage(_this, damageInfo); -} - -void Hook_CEntityIdentity_AcceptInput(CEntityIdentity* _this, CUtlSymbolLarge* inputName, CEntityInstance* activator, CEntityInstance* caller, variant_t* value, int outputid); -FuncHook TCEntityIdentity_AcceptInput(Hook_CEntityIdentity_AcceptInput, "CEntityIdentity_AcceptInput"); - -void Hook_CEntityIdentity_AcceptInput(CEntityIdentity* _this, CUtlSymbolLarge* inputName, CEntityInstance* activator, CEntityInstance* caller, variant_t* value, int outputid) -{ - PluginEvent* event = new PluginEvent("core", nullptr, nullptr); - - std::vector msgpackData = { - string_format("%p", _this->m_pInstance), "CEntityInstance", - inputName->String(), - string_format("%p", activator), "CEntityInstance", - string_format("%p", caller), "CEntityInstance", - value->ToString(), - outputid, - }; - - g_pluginManager->ExecuteEvent("core", "OnEntityAcceptInput", encoders::msgpack::SerializeToString(msgpackData), event); - - bool response = true; - try - { - response = std::any_cast(event->GetReturnValue()); - } - catch (std::bad_any_cast e) - { - response = true; - } - - delete event; - - if (!response) return; - - TCEntityIdentity_AcceptInput(_this, inputName, activator, caller, value, outputid); -} - -void Hook_CGameRules_TerminateRound(void* _this, float delay, uint32_t reason, int64_t a, uint32_t b); - -FuncHook TCGameRules_TerminateRound(Hook_CGameRules_TerminateRound, "CGameRules_TerminateRound"); - -void Hook_CGameRules_TerminateRound(void* _this, float delay, uint32_t reason, int64_t a, uint32_t b) -{ - PluginEvent* event = new PluginEvent("core", nullptr, nullptr); - - g_pluginManager->ExecuteEvent("core", "OnTerminateRound", encoders::msgpack::SerializeToString({ delay, reason }), event); - - bool response = true; - try - { - response = std::any_cast(event->GetReturnValue()); - } - catch (std::bad_any_cast e) - { - response = true; - } - - delete event; - - if (!response) return; - - TCGameRules_TerminateRound(_this, delay, reason, a, b); -} \ No newline at end of file diff --git a/src/plugins/core/scripting/engine/server.cpp b/src/plugins/core/scripting/engine/server.cpp deleted file mode 100644 index 816d62e55..000000000 --- a/src/plugins/core/scripting/engine/server.cpp +++ /dev/null @@ -1,86 +0,0 @@ -#include "../../scripting.h" -#include "../../../../sdk/entity/CGameRules.h" -#include - -PluginServer::PluginServer(std::string m_plugin_name) -{ - REGISTER_CALLSTACK(this->plugin_name, string_format("PluginServer::PluginServer(m_plugin_name=\"%s\")", m_plugin_name.c_str())); - - this->plugin_name = m_plugin_name; -} - -std::string PluginServer::GetMap() -{ - REGISTER_CALLSTACK(this->plugin_name, "PluginServer::GetMap()"); - if (!engine->GetServerGlobals()) - return "unknown_map"; - - return engine->GetServerGlobals()->mapname.ToCStr(); -} - -bool is_number(const std::string &s) { - return !s.empty() && std::all_of(s.begin(), s.end(), ::isdigit); -} - -bool PluginServer::IsMapValid(std::string map) -{ - REGISTER_CALLSTACK(this->plugin_name, string_format("PluginServer::IsMapValid(map=\"%s\")", map.c_str())); - - return (is_number(map) || (engine->IsMapValid(map.c_str()) == 1)); -} - -void PluginServer::ChangeMap(std::string map, bool workshop) -{ - REGISTER_CALLSTACK(this->plugin_name, string_format("PluginServer::ChangeMap(map=\"%s\", workshop=%d)", map.c_str(), workshop)); - if (!IsMapValid(map)) - return; - - Execute(string_format("%s %s", workshop ? "host_workshop_map" : "changelevel", map.c_str())); -} - -uint16_t PluginServer::GetMaxPlayers() -{ - REGISTER_CALLSTACK(this->plugin_name, "PluginServer::GetMaxPlayers()"); - return engine->GetServerGlobals()->maxClients; -} - -void PluginServer::Execute(std::string cmd) -{ - REGISTER_CALLSTACK(this->plugin_name, string_format("PluginServer::Execute(cmd=\"%s\")", cmd.c_str())); - engine->ServerCommand(cmd.c_str()); -} - -float PluginServer::GetCurrentTime() -{ - REGISTER_CALLSTACK(this->plugin_name, "PluginServer::GetCurrentTime()"); - if (!engine->GetServerGlobals()) - return 0.0f; - - return engine->GetServerGlobals()->curtime; -} - -int PluginServer::GetTickCount() -{ - REGISTER_CALLSTACK(this->plugin_name, "PluginServer::GetTickCount()"); - if (!engine->GetServerGlobals()) - return 0; - - return engine->GetServerGlobals()->tickcount; -} - -typedef void (*CGameRules_TerminateRound)(void*, float, uint32_t, int64_t, uint32_t); - -void PluginServer::TerminateRound(float delay, uint32_t reason) -{ - REGISTER_CALLSTACK(this->plugin_name, string_format("PluginServer::TerminateRound(%f,%d)", delay, reason)); - if(!gameRules) return; - - g_Signatures->FetchSignature("CGameRules_TerminateRound")(gameRules, delay, reason, 0, 0); -} - -std::string PluginServer::GetIP() -{ - if(!g_SteamAPI.SteamGameServer()) return "0.0.0.0"; - auto ip_addr = g_SteamAPI.SteamGameServer()->GetPublicIP(); - return string_format("%d.%d.%d.%d", (ip_addr.m_unIPv4 >> 24) & 0xFF, (ip_addr.m_unIPv4 >> 16) & 0xFF, (ip_addr.m_unIPv4 >> 8) & 0xFF, ip_addr.m_unIPv4 & 0xff); -} \ No newline at end of file diff --git a/src/plugins/core/scripting/engine/vgui.cpp b/src/plugins/core/scripting/engine/vgui.cpp deleted file mode 100644 index 52e048c68..000000000 --- a/src/plugins/core/scripting/engine/vgui.cpp +++ /dev/null @@ -1,59 +0,0 @@ -#include "../../scripting.h" -#include "../../../../engine/vgui/VGUI.h" -#include "../../../../player/playermanager/PlayerManager.h" - -PluginVGUI::PluginVGUI(std::string plugin_name) -{ - m_plugin_name = plugin_name; -} - -uint64_t PluginVGUI::ShowText(int playerid, Color color, std::string text, float posX, float posY, std::string font_name, std::optional background) -{ - REGISTER_CALLSTACK(m_plugin_name, string_format("PluginVGUI::ShowText(playerid=%d,color=\"%d,%d,%d,%d\",text=\"%s\",posX=%f,posY=%f,font_name=\"%s\",background=%d)", playerid, color.r(), color.g(), color.b(), color.a(), text.c_str(), posX, posY, font_name.c_str(), background.value_or(false))); - - Player* player = g_playerManager->GetPlayer(playerid); - if(!player) return -1; - - if(posX < 0.0f) posX = 0.0f; - if(posX > 1.0f) posX = 1.0f; - - if(posY < 0.0f) posY = 0.0f; - if(posY > 1.0f) posY = 1.0f; - - uint64_t textID = g_pVGUI->RegisterScreenText(); - ScreenText* txt = g_pVGUI->GetScreenText(textID); - - txt->Create(color, font_name, 35, background.value_or(false)); - txt->SetupViewForPlayer(player); - txt->SetText(text); - txt->SetPosition(posX, posY); - - return textID; -} - -void PluginVGUI::RemoveText(uint64_t textID) -{ - REGISTER_CALLSTACK(m_plugin_name, string_format("PluginVGUI::RemoveText(textID=%llu)", textID)); - - g_pVGUI->DeleteScreenText(textID); -} - -void PluginVGUI::SetTextMessage(uint64_t textID, std::string text) -{ - REGISTER_CALLSTACK(m_plugin_name, string_format("PluginVGUI::SetTextMessage(textID=%llu,text=\"%s\")", textID, text.c_str())); - - ScreenText* txt = g_pVGUI->GetScreenText(textID); - if(!txt) return; - - txt->SetText(text); -} - -void PluginVGUI::SetTextPosition(uint64_t textID, float posX, float posY) -{ - REGISTER_CALLSTACK(m_plugin_name, string_format("PluginVGUI::SetTextPosition(textID=%llu,posX=%f,posY=%f)", textID, posX, posY)); - - ScreenText* txt = g_pVGUI->GetScreenText(textID); - if(!txt) return; - - txt->SetPosition(posX, posY); -} \ No newline at end of file diff --git a/src/plugins/core/scripting/entities/entities.cpp b/src/plugins/core/scripting/entities/entities.cpp deleted file mode 100644 index ba499eae0..000000000 --- a/src/plugins/core/scripting/entities/entities.cpp +++ /dev/null @@ -1,21 +0,0 @@ -#include "../../scripting.h" - -std::vector UTIL_FindEntitiesByClassname(std::string name) -{ - extern CEntitySystem* g_pEntitySystem; - CEntityIdentity* pEntity = g_pEntitySystem->m_EntityList.m_pFirstActiveEntity; - std::vector entities; - - for (; pEntity; pEntity = pEntity->m_pNext) - if (pEntity->m_designerName.String() == name) - entities.push_back(SDKBaseClass((void*)(pEntity->m_pInstance), "CEntityInstance")); - - return entities; -} - -SDKBaseClass CreateEntityByName(std::string className) -{ - CEntityIdentity* entityPtr = reinterpret_cast(g_Signatures->FetchSignature("UTIL_CreateEntityByName")(className.c_str(), -1)); - - return SDKBaseClass(entityPtr, "CEntityInstance");; -} \ No newline at end of file diff --git a/src/plugins/core/scripting/entities/precacher.cpp b/src/plugins/core/scripting/entities/precacher.cpp deleted file mode 100644 index b517eaf7f..000000000 --- a/src/plugins/core/scripting/entities/precacher.cpp +++ /dev/null @@ -1,30 +0,0 @@ -#include "../../scripting.h" -#include "../../../../entitysystem/precacher/precacher.h" - -PluginPrecacher::PluginPrecacher(std::string m_plugin_name) -{ - REGISTER_CALLSTACK(this->plugin_name, string_format("PluginPrecacher::PluginPrecacher(m_plugin_name=\"%s\")", m_plugin_name.c_str())); - - this->plugin_name = m_plugin_name; -} - -void PluginPrecacher::PrecacheModel(std::string model) -{ - REGISTER_CALLSTACK(this->plugin_name, string_format("PluginPrecacher::PrecacheModel(model=\"%s\")", model.c_str())); - - g_precacher->AddItem(model); -} - -void PluginPrecacher::PrecacheSound(std::string path) -{ - REGISTER_CALLSTACK(this->plugin_name, string_format("PluginPrecacher::PrecacheSound(model=\"%s\")", path.c_str())); - - g_precacher->AddItem(path); -} - -void PluginPrecacher::PrecacheItem(std::string path) -{ - REGISTER_CALLSTACK(this->plugin_name, string_format("PluginPrecacher::PrecacheItem(model=\"%s\")", path.c_str())); - - g_precacher->AddItem(path); -} diff --git a/src/plugins/core/scripting/entities/weapons.cpp b/src/plugins/core/scripting/entities/weapons.cpp deleted file mode 100644 index 5a222437c..000000000 --- a/src/plugins/core/scripting/entities/weapons.cpp +++ /dev/null @@ -1,281 +0,0 @@ -#include "../../scripting.h" -#include "../../../../player/playermanager/PlayerManager.h" - -PluginWeaponManager::PluginWeaponManager(int playerId) -{ - this->m_playerId = playerId; -} - -void PluginWeaponManager::GiveWeapon(std::string weapon_name) -{ - Player* player = g_playerManager->GetPlayer(m_playerId); - if (!player) - return; - - CCSPlayerPawn* pawn = player->GetPlayerPawn(); - if (!pawn) - return; - - CCSPlayer_ItemServices* itemServices = pawn->m_pItemServices(); - if (!itemServices) - return; - - pawn->GiveNamedItem(weapon_name.c_str()); -} -void PluginWeaponManager::RemoveWeapons() -{ - auto weapons = GetWeapons(); - - for (auto weapon : weapons) - weapon.Remove(); -} -void PluginWeaponManager::DropWeapons() -{ - auto weapons = GetWeapons(); - - for (auto weapon : weapons) - weapon.Drop(); -} - -std::vector PluginWeaponManager::GetWeapons() -{ - std::vector vec; - - Player* player = g_playerManager->GetPlayer(m_playerId); - if (!player) - return vec; - - CCSPlayerPawn* pawn = player->GetPlayerPawn(); - if (!pawn) - return vec; - - CPlayer_WeaponServices* weaponServices = pawn->m_pWeaponServices(); - if (!weaponServices) - return vec; - - CUtlVector>* weapons = weaponServices->m_hMyWeapons(); - if (!weapons) - return vec; - - FOR_EACH_VEC(*weapons, i) - { - CHandle& weaponHandle = (*weapons)[i]; - if (!weaponHandle.IsValid()) - continue; - - CBasePlayerWeapon* weapon = weaponHandle.Get(); - if (!weapon) - continue; - - vec.push_back(PluginWeapon(this->m_playerId, weapon)); - } - - return vec; -} - -void PluginWeaponManager::RemoveByClassname(std::string classname) -{ - auto weapons = GetWeapons(); - - for(auto weapon : weapons) - if(((CBasePlayerWeapon*)weapon.GetCBasePlayerWeapon().GetPtr())->GetClassname() == classname) - weapon.Remove(); -} - -void PluginWeaponManager::RemoveBySlot(int slot) -{ - auto weapons = GetWeapons(); - - for(auto weapon : weapons) - if(((CCSWeaponBaseVData*)weapon.GetCCSWeaponBaseVData().GetPtr())->m_GearSlot == (cgear_slot_t)slot) - weapon.Remove(); -} - -PluginWeapon PluginWeaponManager::GetFirstInSlot(int slot) -{ - auto weapons = GetWeapons(); - - for(auto weapon : weapons) - if(((CCSWeaponBaseVData*)weapon.GetCCSWeaponBaseVData().GetPtr())->m_GearSlot == (cgear_slot_t)slot) - return weapon; - - return PluginWeapon(m_playerId, nullptr); -} - -std::vector PluginWeaponManager::GetInSlot(int slot) -{ - auto weapons = GetWeapons(); - std::vector vec; - - for(auto weapon : weapons) - if(((CCSWeaponBaseVData*)weapon.GetCCSWeaponBaseVData().GetPtr())->m_GearSlot == (cgear_slot_t)slot) - vec.push_back(weapon); - - return vec; -} - -void PluginWeaponManager::RemoveByItemDefinition(int idx) -{ - auto weapons = GetWeapons(); - - for(auto weapon : weapons) - if(((CBasePlayerWeapon*)weapon.GetCBasePlayerWeapon().GetPtr())->m_AttributeManager().m_Item().m_iItemDefinitionIndex == idx) - weapon.Remove(); -} - -PluginWeapon::PluginWeapon(int playerId, CBasePlayerWeapon* ptr) -{ - this->m_playerId = playerId; - this->m_ptr = ptr; -} - -PluginWeapon::PluginWeapon(int playerId, std::string ptr) -{ - this->m_playerId = playerId; - this->m_ptr = (CBasePlayerWeapon*)strtol(ptr.c_str(), nullptr, 16); -} - -SDKBaseClass PluginWeapon::GetCBasePlayerWeapon() -{ - return SDKBaseClass(this->m_ptr, "CBasePlayerWeapon"); -} - -SDKBaseClass PluginWeapon::GetCCSWeaponBase() -{ - return SDKBaseClass(this->m_ptr, "CCSWeaponBase"); -} -SDKBaseClass PluginWeapon::GetCBasePlayerWeaponVData() -{ - if (!this->m_ptr) - return SDKBaseClass(nullptr, "CBasePlayerWeaponVData"); - - return SDKBaseClass((void*)(this->m_ptr->GetWeaponVData()), "CBasePlayerWeaponVData"); -} -SDKBaseClass PluginWeapon::GetCCSWeaponBaseVData() -{ - if (!this->m_ptr) - return SDKBaseClass(nullptr, "CCSWeaponBaseVData"); - - return SDKBaseClass((void*)(this->m_ptr->GetWeaponVData()), "CCSWeaponBaseVData"); -} - -void PluginWeapon::Drop() -{ - Player* player = g_playerManager->GetPlayer(m_playerId); - if (!player) - return; - - CCSPlayerPawn* pawn = player->GetPlayerPawn(); - if (!pawn) - return; - - CPlayer_WeaponServices* weaponServices = pawn->m_pWeaponServices(); - if (!weaponServices) - return; - - if (!this->m_ptr) - return; - - weaponServices->DropWeapon(this->m_ptr); -} -void PluginWeapon::Remove() -{ - Player* player = g_playerManager->GetPlayer(m_playerId); - if (!player) - return; - - CCSPlayerPawn* pawn = player->GetPlayerPawn(); - if (!pawn) - return; - - CPlayer_WeaponServices* weaponServices = pawn->m_pWeaponServices(); - if (!weaponServices) - return; - - CCSPlayer_ItemServices* itemServices = pawn->m_pItemServices(); - if (!itemServices) - return; - - if (!this->m_ptr) - return; - - weaponServices->RemoveWeapon(this->m_ptr); -} - -std::set paintkitsFallbackCheck; - -void PluginWeapon::SetDefaultAttributes() -{ - if(paintkitsFallbackCheck.size() == 0) { - KeyValues kv("scripts/items/items_game.txt"); - kv.LoadFromFile(g_pFullFileSystem, "scripts/items/items_game.txt", "GAME"); - - for (KeyValues *sub = kv.GetFirstSubKey(); sub != nullptr; sub = sub->GetNextKey()) { - if(!strcmp(sub->GetName(), "paint_kits")) { - for (KeyValues *sub2 = sub->GetFirstSubKey(); sub2 != nullptr; sub2 = sub2->GetNextKey()) { - if(strcmp(sub2->GetString("composite_material_path", ""), "") != 0 && !sub2->GetBool("use_legacy_model", false)) { - paintkitsFallbackCheck.insert(V_StringToUint16(sub2->GetName(), 0)); - } - } - } - } - } - - if (!this->m_ptr) - return; - - Player* player = g_playerManager->GetPlayer(m_playerId); - if (!player) - return; - - CCSPlayerPawn* pawn = player->GetPlayerPawn(); - if (!pawn) - return; - - this->m_ptr->m_AttributeManager().m_Item().m_iItemIDHigh = -1; - - if (this->m_ptr->GetWeaponVData()->m_GearSlot == cgear_slot_t::GEAR_SLOT_KNIFE) - { - this->m_ptr->m_AttributeManager().m_Item().m_iEntityQuality = 3; - } - - int paintkit = this->m_ptr->m_nFallbackPaintKit(); - bool legacy = (paintkitsFallbackCheck.find(paintkit) == paintkitsFallbackCheck.end()); - - if (this->m_ptr->m_CBodyComponent() && this->m_ptr->m_CBodyComponent()->m_pSceneNode()) - { - CSkeletonInstance* skeleton = this->m_ptr->m_CBodyComponent()->m_pSceneNode()->GetSkeletonInstance(); - if (skeleton) - { - if (skeleton->m_modelState->m_MeshGroupMask() != (legacy == true ? 2 : 1)) - { - skeleton->m_modelState->m_MeshGroupMask = (legacy == true ? 2 : 1); - } - } - } - - CCSPlayer_ViewModelServices* viewmodelServices = pawn->m_pViewModelServices(); - if (!viewmodelServices) - return; - - CHandle* viewmodelHandles = viewmodelServices->m_hViewModel(); - if (!viewmodelHandles) - return; - - CBaseViewModel* viewmodel = viewmodelHandles[0]; - - if (!viewmodel) - return; - - if (viewmodel->m_CBodyComponent() && viewmodel->m_CBodyComponent()->m_pSceneNode()) - { - CSkeletonInstance* viewmodelskeleton = viewmodel->m_CBodyComponent()->m_pSceneNode()->GetSkeletonInstance(); - if (viewmodelskeleton && viewmodelskeleton->m_modelState()) - if (viewmodelskeleton->m_modelState->m_MeshGroupMask() != (legacy == true ? 2 : 1)) - { - viewmodelskeleton->m_modelState->m_MeshGroupMask = (legacy == true ? 2 : 1); - } - } - - viewmodel->m_CBodyComponent.StateUpdate(); -} \ No newline at end of file diff --git a/src/plugins/core/scripting/filesystem/files.cpp b/src/plugins/core/scripting/filesystem/files.cpp deleted file mode 100644 index 142ff00e8..000000000 --- a/src/plugins/core/scripting/filesystem/files.cpp +++ /dev/null @@ -1,79 +0,0 @@ -#include "../../scripting.h" -#include "../../../../filesystem/files/Files.h" - -PluginFiles::PluginFiles(std::string m_plugin_name) -{ - this->plugin_name = m_plugin_name; -} - -void PluginFiles::Append(std::string path, std::string content, bool hasdate) -{ - REGISTER_CALLSTACK(this->plugin_name, string_format("PluginFiles::Append(path=\"%s\", hasdate=%d)", path.c_str(), hasdate)); - Files::Append(path, content, hasdate); -} - -void PluginFiles::Write(std::string path, std::string content, bool hasdate) -{ - REGISTER_CALLSTACK(this->plugin_name, string_format("PluginFiles::Write(path=\"%s\", hasdate=%d)", path.c_str(), hasdate)); - Files::Write(path, content, hasdate); -} - -std::string PluginFiles::Read(std::string path) -{ - REGISTER_CALLSTACK(this->plugin_name, string_format("PluginFiles::Read(path=\"%s\")", path.c_str())); - return Files::Read(path); -} - -void PluginFiles::Delete(std::string path) -{ - REGISTER_CALLSTACK(this->plugin_name, string_format("PluginFiles::Delete(path=\"%s\")", path.c_str())); - Files::Delete(path); -} - -std::string PluginFiles::GetBase(std::string filePath) -{ - REGISTER_CALLSTACK(this->plugin_name, string_format("PluginFiles::GetBase(filePath=\"%s\")", filePath.c_str())); - return Files::getBase(filePath); -} - -bool PluginFiles::ExistsPath(std::string path) -{ - REGISTER_CALLSTACK(this->plugin_name, string_format("PluginFiles::ExistsPath(path=\"%s\")", path.c_str())); - return Files::ExistsPath(path); -} - -bool PluginFiles::IsDirectory(std::string path) -{ - REGISTER_CALLSTACK(this->plugin_name, string_format("PluginFiles::IsDirectory(path=\"%s\")", path.c_str())); - return Files::IsDirectory(path); -} - -std::vector PluginFiles::FetchFileNames(std::string path) -{ - REGISTER_CALLSTACK(this->plugin_name, string_format("PluginFiles::FetchFileNames(path=\"%s\")", path.c_str())); - return Files::FetchFileNames(path); -} - -std::vector PluginFiles::FetchDirectories(std::string path) -{ - REGISTER_CALLSTACK(this->plugin_name, string_format("PluginFiles::FetchDirectories(path=\"%s\")", path.c_str())); - return Files::FetchDirectories(path); -} - -bool PluginFiles::CreateDirectory(std::string path) -{ - REGISTER_CALLSTACK(this->plugin_name, string_format("PluginFiles::CreateDirectory(path=\"%s\")", path.c_str())); - return Files::CreateDirectory(path); -} - -bool PluginFiles::Compress(std::string path, std::string output) -{ - REGISTER_CALLSTACK(this->plugin_name, string_format("PluginFiles::Compress(path=\"%s\", output=\"%s\")", path.c_str(), output.c_str())); - return Files::Compress(path, output); -} - -bool PluginFiles::Decompress(std::string path, std::string output) -{ - REGISTER_CALLSTACK(this->plugin_name, string_format("PluginFiles::Decompress(path=\"%s\", output=\"%s\")", path.c_str(), output.c_str())); - return Files::Decompress(path, output); -} diff --git a/src/plugins/core/scripting/filesystem/logs.cpp b/src/plugins/core/scripting/filesystem/logs.cpp deleted file mode 100644 index a29f61b78..000000000 --- a/src/plugins/core/scripting/filesystem/logs.cpp +++ /dev/null @@ -1,18 +0,0 @@ -#include "../../scripting.h" - -PluginLogger::PluginLogger(std::string m_plugin_name) -{ - this->plugin_name = m_plugin_name; - g_Logger->AddLogger(m_plugin_name, true); -} - -void PluginLogger::Write(int level, std::string message) -{ - REGISTER_CALLSTACK(this->plugin_name, string_format("PluginLogger::Write(level=%d)", level)); - - Log* logger = g_Logger->FetchLogger(this->plugin_name); - if (!logger) - return; - - logger->WriteLog((LogType_t)level, message); -} \ No newline at end of file diff --git a/src/plugins/core/scripting/memory/hooks.cpp b/src/plugins/core/scripting/memory/hooks.cpp deleted file mode 100644 index 6c640d759..000000000 --- a/src/plugins/core/scripting/memory/hooks.cpp +++ /dev/null @@ -1,312 +0,0 @@ -#include "../../scripting.h" -#include "../../../../memory/hooks/FuncHook.h" - -#include -#include - -#ifdef _WIN32 -#include -#else -#include -#endif - -#include - -typedef std::pair OutputPair_t; -std::map> outputHooksList; -void Hook_FireOutputInternal(CEntityIOOutput* const pThis, CEntityInstance* pActivator, CEntityInstance* pCaller, const CVariant* const value, float flDelay); -FuncHook TFireOutputInternal(Hook_FireOutputInternal, "FireOutputInternal"); - -DCCallVM* pCallVM = dcNewCallVM(4096); - -std::map> hooksList; -std::map hooksMap; - -PluginHooks::PluginHooks(std::string plugin_name) -{ - m_plugin_name = plugin_name; -} - -std::vector ParseArgsList(std::string args_list) -{ - std::vector argsList; - - for (size_t i = 0; i < args_list.size(); i++) - { - if (args_list.at(i) == 'p') - argsList.push_back(DataType_t::POINTER); - else if (args_list.at(i) == 'f') - argsList.push_back(DataType_t::FLOAT); - else if (args_list.at(i) == 'b') - argsList.push_back(DataType_t::BOOL); - else if (args_list.at(i) == 'd') - argsList.push_back(DataType_t::DOUBLE); - else if (args_list.at(i) == 'i') - argsList.push_back(DataType_t::INT); - else if (args_list.at(i) == 'u') - argsList.push_back(DataType_t::UINT); - else if (args_list.at(i) == 's') - argsList.push_back(DataType_t::STRING); - else if (args_list.at(i) == 'I') - argsList.push_back(DataType_t::LONG_LONG); - else if (args_list.at(i) == 'U') - argsList.push_back(DataType_t::ULONG_LONG); - else if (args_list.at(i) == 'v') - argsList.push_back(DataType_t::VOID); - else - PRINTF("Invalid argument in list: '%c'.\n", args_list.at(i)); - } - - return argsList; -} - -std::vector ConvertDT(const std::vector dataTypes) -{ - std::vector converted; - - for (DataType_t dt : dataTypes) - converted.push_back(dyno::DataObject(static_cast(dt))); - - return converted; -} - -dyno::ReturnAction DynHookHandler(dyno::HookType hookType, dyno::Hook& hook) -{ - dyno::Hook* hookPtr = &hook; - std::string callbackType = (hookType == dyno::HookType::Pre ? "Pre" : "Post"); - if (hooksList.find(hookPtr) == hooksList.end()) - return dyno::ReturnAction::Ignored; - - PluginEvent* event = new PluginEvent("core", nullptr, hookPtr); - for (auto hk : hooksList[hookPtr]) - { - auto res = g_pluginManager->ExecuteEvent("core", "hook:" + callbackType + ":" + hk.id, encoders::msgpack::SerializeToString({}), event); - if (res != EventResult::Continue) - { - delete event; - return dyno::ReturnAction::Supercede; - } - } - delete event; - - return dyno::ReturnAction::Ignored; -} - -std::string PluginHooks::AddHook(PluginMemory mem, std::string args_list, std::string ret_type) -{ - REGISTER_CALLSTACK(this->m_plugin_name, string_format("PluginHooks::AddHook(mem=%p,args_list=\"%s\",ret_type=\"%s\")", mem.GetRawPtr(), args_list.c_str(), ret_type.c_str())); - - if (!mem.IsValid()) - { - PRINT("ERROR: Tried to add a hook with invalid memory.\n"); - return "00000000-0000-0000-0000-000000000000"; - } - - void* funcPtr = mem.GetRawPtr(); - - std::string id = get_uuid(); - Hook hk = { - funcPtr, - args_list, - ret_type, - id, - mem.AccessedVTable() - }; - - std::vector argTypes = ParseArgsList(args_list); - - dyno::HookManager& manager = dyno::HookManager::Get(); - dyno::Hook* hook = manager.hook(funcPtr, [argTypes, ret_type] - { -#ifdef _WIN32 - return new dyno::x64MsFastcall(ConvertDT(argTypes), static_cast(ParseArgsList(ret_type)[0])); -#else - return new dyno::x64SystemVcall(ConvertDT(argTypes), static_cast(ParseArgsList(ret_type)[0])); -#endif - }); - - if (hooksList.find(hook) == hooksList.end()) - hooksList.insert({ hook, {} }); - - hooksList[hook].push_back(hk); - - if (hooksMap.find(id) == hooksMap.end()) - hooksMap.insert({ id, hook }); - else - hooksMap[id] = hook; - - hook->addCallback(dyno::HookType::Pre, (dyno::HookHandler*)&DynHookHandler); - hook->addCallback(dyno::HookType::Post, (dyno::HookHandler*)&DynHookHandler); - return id; -} - -std::any PluginHooks::CallHook(std::string hookId, std::string hookPayload) -{ - REGISTER_CALLSTACK(this->m_plugin_name, string_format("PluginHooks::CallHook(hookId=\"%s\")", hookId.c_str())); - if (hooksMap.find(hookId) == hooksMap.end()) - return nullptr; - - auto hook = hooksMap.at(hookId); - if (hooksList.find(hook) == hooksList.end()) - return nullptr; - if (hooksList.at(hook).size() <= 0) - return nullptr; - - auto hk = hooksList.at(hook)[0]; - - // Unpacking arguments - std::vector args; - - msgpack::object_handle handle = msgpack::unpack(hookPayload.data(), hookPayload.size()); - msgpack::object main_obj = handle.get(); - - if (main_obj.type == msgpack::type::ARRAY) - { - for (size_t i = 0; i < main_obj.via.array.size; i++) - args.push_back(main_obj.via.array.ptr[i]); - } - - dcReset(pCallVM); - dcMode(pCallVM, hk.vTable ? DC_CALL_C_X86_WIN32_THIS_GNU : DC_CALL_C_DEFAULT); - - for (size_t i = 0; i < args.size(); i++) - { - if (hk.argsList.size() <= i) - break; - - if (hk.argsList.at(i) == 'p') - dcArgPointer(pCallVM, (void*)strtol(args[i].as().c_str(), nullptr, 16)); - else if (hk.argsList.at(i) == 'f') - dcArgFloat(pCallVM, args[i].as()); - else if (hk.argsList.at(i) == 'b') - dcArgBool(pCallVM, args[i].as()); - else if (hk.argsList.at(i) == 'd') - dcArgDouble(pCallVM, args[i].as()); - else if (hk.argsList.at(i) == 'i') - dcArgInt(pCallVM, args[i].as()); - else if (hk.argsList.at(i) == 'u') - dcArgLong(pCallVM, args[i].as()); - else if (hk.argsList.at(i) == 's') - dcArgPointer(pCallVM, (void*)args[i].as().c_str()); - else if (hk.argsList.at(i) == 'I') - dcArgLongLong(pCallVM, args[i].as()); - else if (hk.argsList.at(i) == 'U') - dcArgLongLong(pCallVM, args[i].as()); - else - { - PRINTF("Invalid Data Type: '%c'.\n", hk.argsList.at(i)); - break; - } - } - - std::any retval = nullptr; - if (hk.retType.at(0) == 'p') - retval = string_format("%p", (void*)dcCallPointer(pCallVM, hk.ptr)); - else if (hk.retType.at(0) == 'f') - retval = (float)dcCallFloat(pCallVM, hk.ptr); - else if (hk.retType.at(0) == 'b') - retval = (bool)dcCallBool(pCallVM, hk.ptr); - else if (hk.retType.at(0) == 'd') - retval = (double)dcCallDouble(pCallVM, hk.ptr); - else if (hk.retType.at(0) == 'i') - retval = (int)dcCallInt(pCallVM, hk.ptr); - else if (hk.retType.at(0) == 'u') - retval = (uint32_t)dcCallInt(pCallVM, hk.ptr); - else if (hk.retType.at(0) == 's') - retval = std::string((const char*)dcCallPointer(pCallVM, hk.ptr)); - else if (hk.retType.at(0) == 'I') - retval = (int64_t)dcCallLongLong(pCallVM, hk.ptr); - else if (hk.retType.at(0) == 'U') - retval = (uint64_t)dcCallLongLong(pCallVM, hk.ptr); - else if (hk.retType.at(0) == 'v') - { - dcCallVoid(pCallVM, hk.ptr); - retval = nullptr; - } - else - { - PRINTF("Invalid return type: '%c'.\n", hk.retType.at(0)); - retval = nullptr; - } - - return retval; -} - -std::string PluginHooks::AddEntityOutputHook(std::string classname, std::string output) -{ - REGISTER_CALLSTACK(this->m_plugin_name, string_format("PluginHooks::AddEntityOutputHook(classname=\"%s\",output=\"%s\")", classname.c_str(), output.c_str())); - std::string id = get_uuid(); - uint64_t outputKey = ((uint64_t)hash_32_fnv1a_const(classname.c_str()) << 32 | hash_32_fnv1a_const(output.c_str())); - - if (outputHooksList.find(outputKey) == outputHooksList.end()) - outputHooksList.insert({ outputKey, {} }); - - outputHooksList[outputKey].push_back(id); - return id; -} - -void Hook_FireOutputInternal(CEntityIOOutput* const pThis, CEntityInstance* pActivator, CEntityInstance* pCaller, const CVariant* const value, float flDelay) -{ - std::vector searchOutputs{ - ((uint64_t)hash_32_fnv1a_const("*") << 32 | hash_32_fnv1a_const(pThis->m_pDesc->m_pName)), - ((uint64_t)hash_32_fnv1a_const("*") << 32 | hash_32_fnv1a_const("*")) - }; - - if (pCaller) - { - searchOutputs.push_back(((uint64_t)hash_32_fnv1a_const(pCaller->GetClassname()) << 32 | hash_32_fnv1a_const(pThis->m_pDesc->m_pName))); - searchOutputs.push_back(((uint64_t)hash_32_fnv1a_const(pCaller->GetClassname()) << 32 | hash_32_fnv1a_const("*"))); - } - - std::vector hookIds; - - if (pCaller) - for (auto output : searchOutputs) - for (auto hookid : outputHooksList[output]) - hookIds.push_back(hookid); - - if (hookIds.size() > 0) - { - PluginEvent* preEvent = new PluginEvent("core", nullptr, nullptr); - for (auto id : hookIds) - { - auto result = g_pluginManager->ExecuteEvent("core", "hook:Pre:" + id, encoders::msgpack::SerializeToString({ - pThis ? string_format("%p", pThis) : "0x00000000", "CEntityIOOutput", - pThis->m_pDesc->m_pName, - pActivator ? string_format("%p", pActivator) : "0x00000000", "CEntityInstance", - pCaller ? string_format("%p", pCaller) : "0x00000000", "CEntityInstance", - flDelay - }), preEvent); - if (result != EventResult::Continue) - { - delete preEvent; - return; - } - } - delete preEvent; - } - - TFireOutputInternal(pThis, pActivator, pCaller, value, flDelay); - - if (hookIds.size() > 0) - { - PluginEvent* postEvent = new PluginEvent("core", nullptr, nullptr); - - for (auto id : hookIds) - { - auto result = g_pluginManager->ExecuteEvent("core", "hook:Post:" + id, encoders::msgpack::SerializeToString({ - pThis ? string_format("%p", pThis) : "0x00000000", "CEntityIOOutput", - pThis->m_pDesc->m_pName, - pActivator ? string_format("%p", pActivator) : "0x00000000", "CEntityInstance", - pCaller ? string_format("%p", pCaller) : "0x00000000", "CEntityInstance", - flDelay - }), postEvent); - if (result != EventResult::Continue) - { - delete postEvent; - return; - } - } - delete postEvent; - } -} \ No newline at end of file diff --git a/src/plugins/core/scripting/memory/keyvalues/CEntityKeyValues.cpp b/src/plugins/core/scripting/memory/keyvalues/CEntityKeyValues.cpp deleted file mode 100644 index 7cb3fc273..000000000 --- a/src/plugins/core/scripting/memory/keyvalues/CEntityKeyValues.cpp +++ /dev/null @@ -1,162 +0,0 @@ -#include "../../../scripting.h" -#include - -PluginCEntityKeyValues::PluginCEntityKeyValues() -{ - this->keyVals = new CEntityKeyValues(); -} - -bool PluginCEntityKeyValues::GetBool( std::string key ) -{ - return this->keyVals->GetBool(key.c_str()); -} - -int PluginCEntityKeyValues::GetInt( std::string key ) -{ - return this->keyVals->GetInt(key.c_str()); -} - -uint PluginCEntityKeyValues::GetUint( std::string key ) -{ - return this->keyVals->GetUint(key.c_str()); -} - -int64 PluginCEntityKeyValues::GetInt64( std::string key ) -{ - return this->keyVals->GetInt64(key.c_str()); -} - -uint64 PluginCEntityKeyValues::GetUint64( std::string key ) -{ - return this->keyVals->GetUint64(key.c_str()); -} - -float PluginCEntityKeyValues::GetFloat( std::string key ) -{ - return this->keyVals->GetFloat(key.c_str()); -} - -double PluginCEntityKeyValues::GetDouble( std::string key ) -{ - return this->keyVals->GetDouble(key.c_str()); -} - -std::string PluginCEntityKeyValues::GetString( std::string key ) -{ - return this->keyVals->GetString(key.c_str()); -} - -std::string PluginCEntityKeyValues::GetPtr( std::string key ) -{ - return string_format("%p", this->keyVals->GetPtr(key.c_str())); -} - -unsigned int PluginCEntityKeyValues::GetStringToken( std::string key ) -{ - return this->keyVals->GetStringToken(key.c_str()).GetHashCode(); -} - -Color PluginCEntityKeyValues::GetColor( std::string key ) -{ - return this->keyVals->GetColor(key.c_str()); -} - -Vector PluginCEntityKeyValues::GetVector( std::string key ) -{ - return this->keyVals->GetVector(key.c_str()); -} - -Vector2D PluginCEntityKeyValues::GetVector2D( std::string key ) -{ - return this->keyVals->GetVector2D(key.c_str()); -} - -Vector4D PluginCEntityKeyValues::GetVector4D( std::string key ) -{ - return this->keyVals->GetVector4D(key.c_str()); -} - -QAngle PluginCEntityKeyValues::GetQAngle( std::string key ) -{ - return this->keyVals->GetQAngle(key.c_str()); -} - -void PluginCEntityKeyValues::SetBool( std::string key, bool value ) -{ - this->keyVals->SetBool(key.c_str(), value); -} - -void PluginCEntityKeyValues::SetInt( std::string key, int value ) -{ - this->keyVals->SetInt(key.c_str(), value); -} - -void PluginCEntityKeyValues::SetUint( std::string key, uint value ) -{ - this->keyVals->SetUint(key.c_str(), value); -} - -void PluginCEntityKeyValues::SetInt64( std::string key, int64 value ) -{ - this->keyVals->SetInt64(key.c_str(), value); -} - -void PluginCEntityKeyValues::SetUint64( std::string key, uint64 value ) -{ - this->keyVals->SetUint64(key.c_str(), value); -} - -void PluginCEntityKeyValues::SetFloat( std::string key, float value ) -{ - this->keyVals->SetFloat(key.c_str(), value); -} - -void PluginCEntityKeyValues::SetDouble( std::string key, double value ) -{ - this->keyVals->SetDouble(key.c_str(), value); -} - -void PluginCEntityKeyValues::SetString( std::string key, std::string value ) -{ - this->keyVals->SetString(key.c_str(), value.c_str()); -} - -void PluginCEntityKeyValues::SetPtr( std::string key, std::string value ) -{ - this->keyVals->SetPtr(key.c_str(), (void*)(strtol(value.c_str(), nullptr, 16))); -} - -void PluginCEntityKeyValues::SetStringToken( std::string key, unsigned int value ) -{ - this->keyVals->SetStringToken(key.c_str(), CUtlStringToken(value)); -} - -void PluginCEntityKeyValues::SetColor( std::string key, Color value ) -{ - this->keyVals->SetColor(key.c_str(), value); -} - -void PluginCEntityKeyValues::SetVector( std::string key, Vector value ) -{ - this->keyVals->SetVector(key.c_str(), value); -} - -void PluginCEntityKeyValues::SetVector2D( std::string key, Vector2D value ) -{ - this->keyVals->SetVector2D(key.c_str(), value); -} - -void PluginCEntityKeyValues::SetVector4D( std::string key, Vector4D value ) -{ - this->keyVals->SetVector4D(key.c_str(), value); -} - -void PluginCEntityKeyValues::SetQAngle( std::string key, QAngle value ) -{ - this->keyVals->SetQAngle(key.c_str(), value); -} - -CEntityKeyValues* PluginCEntityKeyValues::GetKeyVals() -{ - return this->keyVals; -} diff --git a/src/plugins/core/scripting/memory/memory.cpp b/src/plugins/core/scripting/memory/memory.cpp deleted file mode 100644 index 8130d0989..000000000 --- a/src/plugins/core/scripting/memory/memory.cpp +++ /dev/null @@ -1,259 +0,0 @@ -#include "../../scripting.h" - -#include "../../../../../vendor/dynlib/module.h" - -void* FindSignature(const char* moduleName, const char* bytes); - -PluginMemory::PluginMemory() -{ - m_ptr = nullptr; -} - -PluginMemory::~PluginMemory() -{ - if(allocatedMem == true) { - free(m_ptr); - allocatedMem = false; - } -} - -void PluginMemory::LoadFromPtr(void* ptr) -{ - m_ptr = ptr; -} -void PluginMemory::LoadFromAddress(std::string addr) -{ - if (!starts_with(addr, "0x")) return; - - m_ptr = (void*)(strtol(addr.c_str(), nullptr, 16)); -} - -void PluginMemory::LoadFromSignatureName(std::string signature_name) -{ - m_ptr = g_Signatures->FetchRawSignature(signature_name); -} - -void PluginMemory::LoadFromSignature(std::string library, std::string signature) -{ - void* sig = nullptr; - DynLibUtils::CModule module = DetermineModuleByLibrary(library); - if (signature.at(0) == '@') sig = module.GetFunctionByName((signature.c_str() + 1)).RCast(); - else sig = module.FindPattern(signature).RCast(); - if (sig == nullptr) return; - - m_ptr = sig; -} - -void PluginMemory::AddOffsetByName(std::string offsetName) -{ - int64_t offset = g_Offsets->GetOffset(offsetName); - if (offset == -1) return; - m_ptr = ((char*)m_ptr) + offset; -} - -void PluginMemory::RemoveOffsetByName(std::string offsetName) -{ - int64_t offset = g_Offsets->GetOffset(offsetName); - if (offset == -1) return; - m_ptr = ((char*)m_ptr) - offset; -} - -void PluginMemory::AddOffset(int64_t offset) -{ - m_ptr = ((char*)m_ptr) + offset; -} -void PluginMemory::RemoveOffset(int64_t offset) -{ - m_ptr = ((char*)m_ptr) - offset; -} - -void PluginMemory::AccessVTableFromOffset(std::string offsetName) -{ - int64_t offset = g_Offsets->GetOffset(offsetName); - if (offset == -1) return; - - void* pt = m_ptr; - m_ptr = reinterpret_cast(pt)[0][offset]; - accessedVTable = true; -} - -void PluginMemory::AccessIndexFromOffset(std::string offsetName) -{ - int64_t offset = g_Offsets->GetOffset(offsetName); - if(offset < 0) return; - - void* pt = m_ptr; - m_ptr = reinterpret_cast(pt)[offset]; -} - -void PluginMemory::AccessIndex(int64_t idx) -{ - if(idx < 0) return; - - void* pt = m_ptr; - m_ptr = reinterpret_cast(pt)[idx]; -} - -void PluginMemory::AccessVTable(int64_t offset) -{ - void* pt = m_ptr; - m_ptr = reinterpret_cast(pt)[0][offset]; - accessedVTable = true; -} - -bool PluginMemory::AccessedVTable() -{ - return accessedVTable; -} - -void PluginMemory::Clear() -{ - m_ptr = nullptr; -} - -void PluginMemory::SetBool(bool value) -{ - *((bool*)(m_ptr)) = value; -} - -void PluginMemory::SetInt(int value) -{ - *((int*)(m_ptr)) = value; -} - -void PluginMemory::SetInt64(int64_t value) -{ - *((int64_t*)(m_ptr)) = value; -} - -void PluginMemory::SetUint(uint32_t value) -{ - *((uint32_t*)(m_ptr)) = value; -} - -void PluginMemory::SetUint64(uint64_t value) -{ - *((uint64_t*)(m_ptr)) = value; -} - -void PluginMemory::SetFloat(float value) -{ - *((float*)(m_ptr)) = value; -} - -void PluginMemory::SetDouble(double value) -{ - *((double*)(m_ptr)) = value; -} - -void PluginMemory::SetVector(Vector value) -{ - *((Vector*)(m_ptr)) = value; -} - -void PluginMemory::SetVector2D(Vector2D value) -{ - *((Vector2D*)(m_ptr)) = value; -} - -void PluginMemory::SetVector4D(Vector4D value) -{ - *((Vector4D*)(m_ptr)) = value; -} - -void PluginMemory::SetColor(Color value) -{ - *((Color*)(m_ptr)) = value; -} - -void PluginMemory::SetQAngle(QAngle value) -{ - *((QAngle*)(m_ptr)) = value; -} - -bool PluginMemory::GetBool() -{ - return *((bool*)(m_ptr)); -} - -int PluginMemory::GetInt() -{ - return *((int*)(m_ptr)); -} - -int64_t PluginMemory::GetInt64() -{ - return *((int64_t*)(m_ptr)); -} - -uint32_t PluginMemory::GetUint() -{ - return *((uint32_t*)(m_ptr)); -} - -uint64_t PluginMemory::GetUint64() -{ - return *((uint64_t*)(m_ptr)); -} - -float PluginMemory::GetFloat() -{ - return *((float*)(m_ptr)); -} - -double PluginMemory::GetDouble() -{ - return *((double*)(m_ptr)); -} - -Vector PluginMemory::GetVector() -{ - return *((Vector*)(m_ptr)); -} - -Vector2D PluginMemory::GetVector2D() -{ - return *((Vector2D*)(m_ptr)); -} - -Vector4D PluginMemory::GetVector4D() -{ - return *((Vector4D*)(m_ptr)); -} - -Color PluginMemory::GetColor() -{ - return *((Color*)(m_ptr)); -} - -QAngle PluginMemory::GetQAngle() -{ - return *((QAngle*)(m_ptr)); -} - -void PluginMemory::Allocate(uint64_t size) -{ - m_ptr = malloc(size); - allocatedMem = true; -} - -void PluginMemory::Deallocate() -{ - free(m_ptr); - allocatedMem = false; -} - -std::string PluginMemory::GetPtr() -{ - return string_format("%p", m_ptr); -} - -bool PluginMemory::IsValid() -{ - return (m_ptr != nullptr); -} - -void* PluginMemory::GetRawPtr() -{ - return m_ptr; -} \ No newline at end of file diff --git a/src/plugins/core/scripting/network/database.cpp b/src/plugins/core/scripting/network/database.cpp deleted file mode 100644 index d6e562dfc..000000000 --- a/src/plugins/core/scripting/network/database.cpp +++ /dev/null @@ -1,94 +0,0 @@ -#include "../../scripting.h" -#include "../../../../entrypoint.h" -#include "../../../../player/playermanager/PlayerManager.h" - -#include -#include - -PluginDatabase::PluginDatabase(std::string m_connection_name) -{ - this->connection_name = m_connection_name; - this->db = g_dbManager->GetDatabase(this->connection_name); - - if (!this->db && this->connection_name != "default_connection") { - PRINTF("Database connection \"%s\" doesn't exists inside the database configurations. Automatically falling back to \"default_connection\".\n", m_connection_name.c_str()); - this->db = g_dbManager->GetDatabase("default_connection"); - } - - if (!this->db) - this->dbConnected = false; - else { - this->dbConnected = this->db->Connect(); - if (!this->dbConnected) { - PRINTF("An error has occured while trying to connect to database \"%s\":\nError: %s\n", m_connection_name.c_str(), this->db->GetError().c_str()); - } - } -} - - -void PluginDatabase::Query(std::string query, EValue callback, EContext* L) -{ - if (this->db->GetKind() != "mysql" && this->db->GetKind() != "sqlite") { - PLUGIN_PRINT("Database - Query", "This function is supporting only MySQL databases.\n"); - return; - } - std::string uuid = get_uuid(); - - EValue databaseRequestsQueue = EValue::getGlobal(L, "databaseRequestsQueue"); - if (databaseRequestsQueue.isTable()) - databaseRequestsQueue.setProperty(uuid, EValue(callback)); - - DatabaseQueryQueue queue = { - query, - uuid, - }; - this->db->AddQueryQueue(queue); -} - -void PluginDatabase::QueryParams(std::string query, std::map params, EValue callback, EContext* L) -{ - if (this->db->GetKind() != "mysql" && this->db->GetKind() != "sqlite") { - PLUGIN_PRINT("Database - Query", "This function is supporting only MySQL databases.\n"); - return; - } - - bool has_ats = (query.find_first_of("@") != std::string::npos); - bool has_brace = (query.find_first_of("{") != std::string::npos); - bool has_bracket = (query.find_first_of("[") != std::string::npos); - - for (auto it = params.begin(); it != params.end(); ++it) - { - EValue first = *(EValue*)(&(it->first)); - std::string key = first.isString() ? first.cast() : first.tostring(); - std::string value = EscapeString(it->second.isString() ? it->second.cast() : it->second.tostring()); - - if (has_ats) - query = replace(query, "@" + key, value); - - if (has_brace) - query = replace(query, "{" + key + "}", value); - - if (has_bracket) - query = replace(query, "[" + key + "]", value); - } - - return Query(query, callback, L); -} - -bool PluginDatabase::IsConnected() -{ - if (!this->db || !this->db->IsConnected()) return false; - return this->dbConnected; -} - -std::string PluginDatabase::EscapeString(std::string str) -{ - if (!this->db || !this->db->IsConnected()) return str; - return this->db->EscapeValue(str); -} - -std::string PluginDatabase::GetVersion() -{ - if (!this->db || !this->db->IsConnected()) return ""; - return this->db->GetVersion(); -} \ No newline at end of file diff --git a/src/plugins/core/scripting/network/usermessage.cpp b/src/plugins/core/scripting/network/usermessage.cpp deleted file mode 100644 index a1e779642..000000000 --- a/src/plugins/core/scripting/network/usermessage.cpp +++ /dev/null @@ -1,950 +0,0 @@ -#include "../../scripting.h" - -#include "../../../../sdk/entity/CRecipientFilters.h" -#include "../../../../player/playermanager/PlayerManager.h" - -#ifdef GetMessage -#undef GetMessage -#endif - -#define GETCHECK_FIELD(return_value) \ - if (!this->msgBuffer) \ - return return_value; \ - const google::protobuf::FieldDescriptor *field = this->msgBuffer->GetDescriptor()->FindFieldByName(pszFieldName); \ - if (!field) \ - { \ - return return_value; \ - } - -#define CHECK_FIELD_NOT_REPEATED(return_value) \ - if (field->label() == google::protobuf::FieldDescriptor::LABEL_REPEATED) \ - { \ - return return_value; \ - } - -#define CHECK_FIELD_TYPE_VOID(type) \ - if (field->cpp_type() != google::protobuf::FieldDescriptor::CPPTYPE_##type) \ - { \ - return; \ - } - -#define CHECK_FIELD_TYPE(type, return_value) \ - if (field->cpp_type() != google::protobuf::FieldDescriptor::CPPTYPE_##type) \ - { \ - return return_value; \ - } - -#define CHECK_FIELD_TYPE2_VOID(type1, type2) \ - google::protobuf::FieldDescriptor::CppType fieldType = field->cpp_type(); \ - if (fieldType != google::protobuf::FieldDescriptor::CPPTYPE_##type1 && fieldType != google::protobuf::FieldDescriptor::CPPTYPE_##type2) \ - { \ - return; \ - } - -#define CHECK_FIELD_TYPE2(type1, type2, return_value) \ - google::protobuf::FieldDescriptor::CppType fieldType = field->cpp_type(); \ - if (fieldType != google::protobuf::FieldDescriptor::CPPTYPE_##type1 && fieldType != google::protobuf::FieldDescriptor::CPPTYPE_##type2) \ - { \ - return return_value; \ - } - -#define CHECK_FIELD_REPEATED(return_value) \ - if (field->label() != google::protobuf::FieldDescriptor::LABEL_REPEATED) \ - { \ - return return_value; \ - } - -#define CHECK_REPEATED_ELEMENT_VOID(idx) \ - int elemCount = this->msgBuffer->GetReflection()->FieldSize(*this->msgBuffer, field); \ - if (elemCount == 0 || idx >= elemCount || idx < 0) \ - { \ - return; \ - } - -#define CHECK_REPEATED_ELEMENT(idx, return_value) \ - int elemCount = this->msgBuffer->GetReflection()->FieldSize(*this->msgBuffer, field); \ - if (elemCount == 0 || idx >= elemCount || idx < 0) \ - { \ - return return_value; \ - } - -PluginUserMessage::PluginUserMessage(std::string msgname) -{ - this->msgid = INVALID_MESSAGE_ID; - - auto msg = g_pNetworkMessages->FindNetworkMessagePartial(msgname.c_str()); - if (!msg) - return; - - NetMessageInfo_t* msginfo = msg->GetNetMessageInfo(); - if (!msginfo) - return; - - this->msgid = msginfo->m_MessageId; - this->msgBuffer = msg->AllocateMessage()->ToPB(); - this->internalMsg = msg; -} - -PluginUserMessage::PluginUserMessage(INetworkMessageInternal* msg, CNetMessage* data, uint64* cls) -{ - this->msgid = INVALID_MESSAGE_ID; - - if (!msg || !data) return; - - NetMessageInfo_t* msginfo = msg->GetNetMessageInfo(); - if (!msginfo) - return; - - this->msgid = msginfo->m_MessageId; - this->msgBuffer = data->ToPB(); - this->internalMsg = msg; - this->clients = cls; -} - -PluginUserMessage::PluginUserMessage(google::protobuf::Message* msg) -{ - this->msgBuffer = (CNetMessagePB *)msg; -} - -PluginUserMessage::~PluginUserMessage() -{ -} - -bool PluginUserMessage::IsValidMessage() -{ - return (this->msgid != INVALID_MESSAGE_ID); -} - -std::string PluginUserMessage::GetMessageName() -{ - if (this->msgid == INVALID_MESSAGE_ID) - return ""; - - if (!this->internalMsg) - return ""; - - return this->internalMsg->GetUnscopedName(); -} - -int PluginUserMessage::GetMessageID() -{ - return this->msgid; -} -bool PluginUserMessage::HasField(std::string pszFieldName) -{ - if (!this->msgBuffer) - return false; - - GETCHECK_FIELD(false); - CHECK_FIELD_NOT_REPEATED(false); - return this->msgBuffer->GetReflection()->HasField(*this->msgBuffer, field); -} -int32 PluginUserMessage::GetInt32(std::string pszFieldName) -{ - GETCHECK_FIELD(0); - CHECK_FIELD_TYPE(INT32, 0); - CHECK_FIELD_NOT_REPEATED(0); - - return this->msgBuffer->GetReflection()->GetInt32(*this->msgBuffer, field); -} -void PluginUserMessage::SetInt32(std::string pszFieldName, int32 value) -{ - GETCHECK_FIELD(); - CHECK_FIELD_TYPE_VOID(INT32); - CHECK_FIELD_NOT_REPEATED(); - - this->msgBuffer->GetReflection()->SetInt32(this->msgBuffer, field, value); -} -int32 PluginUserMessage::GetRepeatedInt32(std::string pszFieldName, int index) -{ - GETCHECK_FIELD(0); - CHECK_FIELD_TYPE(INT32, 0); - CHECK_FIELD_REPEATED(0); - CHECK_REPEATED_ELEMENT(index, 0); - - return this->msgBuffer->GetReflection()->GetRepeatedInt32(*this->msgBuffer, field, index); -} - -void PluginUserMessage::SetRepeatedInt32(std::string pszFieldName, int index, int32 value) -{ - GETCHECK_FIELD(); - CHECK_FIELD_TYPE_VOID(INT32); - CHECK_FIELD_REPEATED(); - CHECK_REPEATED_ELEMENT_VOID(index); - - this->msgBuffer->GetReflection()->SetRepeatedInt32(this->msgBuffer, field, index, value); -} -void PluginUserMessage::AddInt32(std::string pszFieldName, int32 value) -{ - GETCHECK_FIELD(); - CHECK_FIELD_TYPE_VOID(INT32); - CHECK_FIELD_REPEATED(); - - this->msgBuffer->GetReflection()->AddInt32(this->msgBuffer, field, value); -} -int64 PluginUserMessage::GetInt64(std::string pszFieldName) -{ - GETCHECK_FIELD(0); - CHECK_FIELD_TYPE(INT64, 0); - CHECK_FIELD_NOT_REPEATED(0); - - return this->msgBuffer->GetReflection()->GetInt64(*this->msgBuffer, field); -} -void PluginUserMessage::SetInt64(std::string pszFieldName, int64 value) -{ - GETCHECK_FIELD(); - CHECK_FIELD_TYPE_VOID(INT64); - CHECK_FIELD_NOT_REPEATED(); - - this->msgBuffer->GetReflection()->SetInt64(this->msgBuffer, field, value); -} -int64 PluginUserMessage::GetRepeatedInt64(std::string pszFieldName, int index) -{ - GETCHECK_FIELD(0); - CHECK_FIELD_TYPE(INT64, 0); - CHECK_FIELD_REPEATED(0); - CHECK_REPEATED_ELEMENT(index, 0); - - return this->msgBuffer->GetReflection()->GetRepeatedInt64(*this->msgBuffer, field, index); -} -void PluginUserMessage::SetRepeatedInt64(std::string pszFieldName, int index, int64 value) -{ - GETCHECK_FIELD(); - CHECK_FIELD_TYPE_VOID(INT64); - CHECK_FIELD_REPEATED(); - CHECK_REPEATED_ELEMENT_VOID(index); - - this->msgBuffer->GetReflection()->SetRepeatedInt64(this->msgBuffer, field, index, value); -} -void PluginUserMessage::AddInt64(std::string pszFieldName, int64 value) -{ - GETCHECK_FIELD(); - CHECK_FIELD_TYPE_VOID(INT64); - CHECK_FIELD_REPEATED(); - - this->msgBuffer->GetReflection()->AddInt64(this->msgBuffer, field, value); -} -uint32 PluginUserMessage::GetUInt32(std::string pszFieldName) -{ - GETCHECK_FIELD(0); - CHECK_FIELD_TYPE(UINT32, 0); - CHECK_FIELD_NOT_REPEATED(0); - - return this->msgBuffer->GetReflection()->GetUInt32(*this->msgBuffer, field); -} -void PluginUserMessage::SetUInt32(std::string pszFieldName, uint32 value) -{ - GETCHECK_FIELD(); - CHECK_FIELD_TYPE_VOID(UINT32); - CHECK_FIELD_NOT_REPEATED(); - - this->msgBuffer->GetReflection()->SetUInt32(this->msgBuffer, field, value); -} -uint32 PluginUserMessage::GetRepeatedUInt32(std::string pszFieldName, int index) -{ - GETCHECK_FIELD(0); - CHECK_FIELD_TYPE(UINT32, 0); - CHECK_FIELD_REPEATED(0); - CHECK_REPEATED_ELEMENT(index, 0); - - return this->msgBuffer->GetReflection()->GetRepeatedUInt32(*this->msgBuffer, field, index); -} -void PluginUserMessage::SetRepeatedUInt32(std::string pszFieldName, int index, uint32 value) -{ - GETCHECK_FIELD(); - CHECK_FIELD_TYPE_VOID(UINT32); - CHECK_FIELD_REPEATED(); - CHECK_REPEATED_ELEMENT_VOID(index); - - this->msgBuffer->GetReflection()->SetRepeatedUInt32(this->msgBuffer, field, index, value); -} -void PluginUserMessage::AddUInt32(std::string pszFieldName, uint32 value) -{ - GETCHECK_FIELD(); - CHECK_FIELD_TYPE_VOID(UINT32); - CHECK_FIELD_REPEATED(); - - this->msgBuffer->GetReflection()->AddUInt32(this->msgBuffer, field, value); -} -uint64 PluginUserMessage::GetUInt64(std::string pszFieldName) -{ - GETCHECK_FIELD(0); - CHECK_FIELD_TYPE(UINT64, 0); - CHECK_FIELD_NOT_REPEATED(0); - - return this->msgBuffer->GetReflection()->GetUInt64(*this->msgBuffer, field); -} -void PluginUserMessage::SetUInt64(std::string pszFieldName, uint64 value) -{ - GETCHECK_FIELD(); - CHECK_FIELD_TYPE_VOID(UINT64); - CHECK_FIELD_NOT_REPEATED(); - - this->msgBuffer->GetReflection()->SetUInt64(this->msgBuffer, field, value); -} -uint64 PluginUserMessage::GetRepeatedUInt64(std::string pszFieldName, int index) -{ - GETCHECK_FIELD(0); - CHECK_FIELD_TYPE(UINT64, 0); - CHECK_FIELD_REPEATED(0); - CHECK_REPEATED_ELEMENT(index, 0); - - return this->msgBuffer->GetReflection()->GetRepeatedUInt64(*this->msgBuffer, field, index); -} -void PluginUserMessage::SetRepeatedUInt64(std::string pszFieldName, int index, uint64 value) -{ - GETCHECK_FIELD(); - CHECK_FIELD_TYPE_VOID(UINT64); - CHECK_FIELD_REPEATED(); - CHECK_REPEATED_ELEMENT_VOID(index); - - this->msgBuffer->GetReflection()->SetRepeatedUInt64(this->msgBuffer, field, index, value); -} -void PluginUserMessage::AddUInt64(std::string pszFieldName, uint64 value) -{ - GETCHECK_FIELD(); - CHECK_FIELD_TYPE_VOID(UINT64); - CHECK_FIELD_REPEATED(); - - this->msgBuffer->GetReflection()->AddUInt64(this->msgBuffer, field, value); -} -int64 PluginUserMessage::GetInt64OrUnsigned(std::string pszFieldName) -{ - GETCHECK_FIELD(0); - CHECK_FIELD_TYPE2(INT64, UINT64, 0); - CHECK_FIELD_NOT_REPEATED(0); - - if (fieldType == google::protobuf::FieldDescriptor::CPPTYPE_UINT64) - return (int64)this->msgBuffer->GetReflection()->GetUInt64(*this->msgBuffer, field); - else - return this->msgBuffer->GetReflection()->GetInt64(*this->msgBuffer, field); -} -void PluginUserMessage::SetInt64OrUnsigned(std::string pszFieldName, int64 value) -{ - GETCHECK_FIELD(); - CHECK_FIELD_TYPE2_VOID(INT64, UINT64); - CHECK_FIELD_NOT_REPEATED(); - - if (fieldType == google::protobuf::FieldDescriptor::CPPTYPE_UINT64) - { - this->msgBuffer->GetReflection()->SetUInt64(this->msgBuffer, field, (uint64)value); - } - else - { - this->msgBuffer->GetReflection()->SetInt64(this->msgBuffer, field, value); - } -} -int64 PluginUserMessage::GetRepeatedInt64OrUnsigned(std::string pszFieldName, int index) -{ - GETCHECK_FIELD(0); - CHECK_FIELD_TYPE2(INT64, UINT64, 0); - CHECK_FIELD_REPEATED(0); - CHECK_REPEATED_ELEMENT(index, 0); - - if (fieldType == google::protobuf::FieldDescriptor::CPPTYPE_UINT64) - return (int64)this->msgBuffer->GetReflection()->GetRepeatedUInt64(*this->msgBuffer, field, index); - else - return this->msgBuffer->GetReflection()->GetRepeatedInt64(*this->msgBuffer, field, index); -} -void PluginUserMessage::SetRepeatedInt64OrUnsigned(std::string pszFieldName, int index, int64 value) -{ - GETCHECK_FIELD(); - CHECK_FIELD_TYPE2_VOID(INT64, UINT64); - CHECK_FIELD_REPEATED(); - CHECK_REPEATED_ELEMENT_VOID(index); - - if (fieldType == google::protobuf::FieldDescriptor::CPPTYPE_UINT64) - { - this->msgBuffer->GetReflection()->SetRepeatedUInt64(this->msgBuffer, field, index, (uint64)value); - } - else - { - this->msgBuffer->GetReflection()->SetRepeatedInt64(this->msgBuffer, field, index, value); - } -} -void PluginUserMessage::AddInt64OrUnsigned(std::string pszFieldName, int64 value) -{ - GETCHECK_FIELD(); - CHECK_FIELD_TYPE2_VOID(INT64, UINT64); - CHECK_FIELD_REPEATED(); - - if (fieldType == google::protobuf::FieldDescriptor::CPPTYPE_UINT64) - { - this->msgBuffer->GetReflection()->AddUInt64(this->msgBuffer, field, (uint64)value); - } - else - { - this->msgBuffer->GetReflection()->AddInt64(this->msgBuffer, field, value); - } -} -bool PluginUserMessage::GetBool(std::string pszFieldName) -{ - GETCHECK_FIELD(false); - CHECK_FIELD_TYPE(BOOL, false); - CHECK_FIELD_NOT_REPEATED(false); - - return this->msgBuffer->GetReflection()->GetBool(*this->msgBuffer, field); -} -void PluginUserMessage::SetBool(std::string pszFieldName, bool value) -{ - GETCHECK_FIELD(); - CHECK_FIELD_TYPE_VOID(BOOL); - CHECK_FIELD_NOT_REPEATED(); - - this->msgBuffer->GetReflection()->SetBool(this->msgBuffer, field, value); -} -bool PluginUserMessage::GetRepeatedBool(std::string pszFieldName, int index) -{ - GETCHECK_FIELD(false); - CHECK_FIELD_TYPE(BOOL, false); - CHECK_FIELD_REPEATED(false); - CHECK_REPEATED_ELEMENT(index, false); - - return this->msgBuffer->GetReflection()->GetRepeatedBool(*this->msgBuffer, field, index); -} -void PluginUserMessage::SetRepeatedBool(std::string pszFieldName, int index, bool value) -{ - GETCHECK_FIELD(); - CHECK_FIELD_TYPE_VOID(BOOL); - CHECK_FIELD_REPEATED(); - CHECK_REPEATED_ELEMENT_VOID(index); - - this->msgBuffer->GetReflection()->SetRepeatedBool(this->msgBuffer, field, index, value); -} -void PluginUserMessage::AddBool(std::string pszFieldName, bool value) -{ - GETCHECK_FIELD(); - CHECK_FIELD_TYPE_VOID(BOOL); - CHECK_FIELD_REPEATED(); - - this->msgBuffer->GetReflection()->AddBool(this->msgBuffer, field, value); -} -float PluginUserMessage::GetFloat(std::string pszFieldName) -{ - GETCHECK_FIELD(0); - CHECK_FIELD_TYPE(FLOAT, 0); - CHECK_FIELD_NOT_REPEATED(0); - - return this->msgBuffer->GetReflection()->GetFloat(*this->msgBuffer, field); -} -void PluginUserMessage::SetFloat(std::string pszFieldName, float value) -{ - GETCHECK_FIELD(); - CHECK_FIELD_TYPE_VOID(FLOAT); - CHECK_FIELD_NOT_REPEATED(); - - this->msgBuffer->GetReflection()->SetFloat(this->msgBuffer, field, value); -} -float PluginUserMessage::GetRepeatedFloat(std::string pszFieldName, int index) -{ - GETCHECK_FIELD(0); - CHECK_FIELD_TYPE(FLOAT, 0); - CHECK_FIELD_REPEATED(0); - CHECK_REPEATED_ELEMENT(index, 0); - - return this->msgBuffer->GetReflection()->GetRepeatedFloat(*this->msgBuffer, field, index); -} -void PluginUserMessage::SetRepeatedFloat(std::string pszFieldName, int index, float value) -{ - GETCHECK_FIELD(); - CHECK_FIELD_TYPE_VOID(FLOAT); - CHECK_FIELD_REPEATED(); - CHECK_REPEATED_ELEMENT_VOID(index); - - this->msgBuffer->GetReflection()->SetRepeatedFloat(this->msgBuffer, field, index, value); -} -void PluginUserMessage::AddFloat(std::string pszFieldName, float value) -{ - GETCHECK_FIELD(); - CHECK_FIELD_TYPE_VOID(FLOAT); - CHECK_FIELD_REPEATED(); - - this->msgBuffer->GetReflection()->AddFloat(this->msgBuffer, field, value); -} -double PluginUserMessage::GetDouble(std::string pszFieldName) -{ - GETCHECK_FIELD(0); - CHECK_FIELD_TYPE(DOUBLE, 0); - CHECK_FIELD_NOT_REPEATED(0); - - return this->msgBuffer->GetReflection()->GetDouble(*this->msgBuffer, field); -} -void PluginUserMessage::SetDouble(std::string pszFieldName, double value) -{ - GETCHECK_FIELD(); - CHECK_FIELD_TYPE_VOID(DOUBLE); - CHECK_FIELD_NOT_REPEATED(); - - this->msgBuffer->GetReflection()->SetDouble(this->msgBuffer, field, value); -} -double PluginUserMessage::GetRepeatedDouble(std::string pszFieldName, int index) -{ - GETCHECK_FIELD(0); - CHECK_FIELD_TYPE(DOUBLE, 0); - CHECK_FIELD_REPEATED(0); - CHECK_REPEATED_ELEMENT(index, 0); - - return this->msgBuffer->GetReflection()->GetRepeatedDouble(*this->msgBuffer, field, index); -} -void PluginUserMessage::SetRepeatedDouble(std::string pszFieldName, int index, double value) -{ - GETCHECK_FIELD(); - CHECK_FIELD_TYPE_VOID(DOUBLE); - CHECK_FIELD_REPEATED(); - CHECK_REPEATED_ELEMENT_VOID(index); - - this->msgBuffer->GetReflection()->SetRepeatedDouble(this->msgBuffer, field, index, value); -} -void PluginUserMessage::AddDouble(std::string pszFieldName, double value) -{ - GETCHECK_FIELD(); - CHECK_FIELD_TYPE_VOID(DOUBLE); - CHECK_FIELD_REPEATED(); - - this->msgBuffer->GetReflection()->AddDouble(this->msgBuffer, field, value); -} -float PluginUserMessage::GetFloatOrDouble(std::string pszFieldName) -{ - GETCHECK_FIELD(0); - CHECK_FIELD_TYPE2(FLOAT, DOUBLE, 0); - CHECK_FIELD_NOT_REPEATED(0); - - if (fieldType == google::protobuf::FieldDescriptor::CPPTYPE_DOUBLE) - return (float)this->msgBuffer->GetReflection()->GetDouble(*this->msgBuffer, field); - else - return this->msgBuffer->GetReflection()->GetFloat(*this->msgBuffer, field); -} -void PluginUserMessage::SetFloatOrDouble(std::string pszFieldName, float value) -{ - GETCHECK_FIELD(); - CHECK_FIELD_TYPE2_VOID(FLOAT, DOUBLE); - CHECK_FIELD_NOT_REPEATED(); - - if (fieldType == google::protobuf::FieldDescriptor::CPPTYPE_DOUBLE) - this->msgBuffer->GetReflection()->SetDouble(this->msgBuffer, field, (double)value); - else - this->msgBuffer->GetReflection()->SetFloat(this->msgBuffer, field, value); -} -float PluginUserMessage::GetRepeatedFloatOrDouble(std::string pszFieldName, int index) -{ - GETCHECK_FIELD(0); - CHECK_FIELD_TYPE2(FLOAT, DOUBLE, 0); - CHECK_FIELD_REPEATED(0); - CHECK_REPEATED_ELEMENT(index, 0); - - if (fieldType == google::protobuf::FieldDescriptor::CPPTYPE_DOUBLE) - return (float)this->msgBuffer->GetReflection()->GetRepeatedDouble(*this->msgBuffer, field, index); - else - return this->msgBuffer->GetReflection()->GetRepeatedFloat(*this->msgBuffer, field, index); -} -void PluginUserMessage::SetRepeatedFloatOrDouble(std::string pszFieldName, int index, float value) -{ - GETCHECK_FIELD(); - CHECK_FIELD_TYPE2_VOID(FLOAT, DOUBLE); - CHECK_FIELD_REPEATED(); - CHECK_REPEATED_ELEMENT_VOID(index); - - if (fieldType == google::protobuf::FieldDescriptor::CPPTYPE_DOUBLE) - this->msgBuffer->GetReflection()->SetRepeatedDouble(this->msgBuffer, field, index, (double)value); - else - this->msgBuffer->GetReflection()->SetRepeatedFloat(this->msgBuffer, field, index, value); -} -void PluginUserMessage::AddFloatOrDouble(std::string pszFieldName, float value) -{ - GETCHECK_FIELD(); - CHECK_FIELD_TYPE2_VOID(FLOAT, DOUBLE); - CHECK_FIELD_REPEATED(); - - if (fieldType == google::protobuf::FieldDescriptor::CPPTYPE_DOUBLE) - this->msgBuffer->GetReflection()->AddDouble(this->msgBuffer, field, (double)value); - else - this->msgBuffer->GetReflection()->AddFloat(this->msgBuffer, field, value); -} -std::string PluginUserMessage::GetString(std::string pszFieldName) -{ - GETCHECK_FIELD(""); - CHECK_FIELD_TYPE(STRING, ""); - CHECK_FIELD_NOT_REPEATED(""); - - return this->msgBuffer->GetReflection()->GetString(*this->msgBuffer, field); -} -void PluginUserMessage::SetString(std::string pszFieldName, const char* value) -{ - GETCHECK_FIELD(); - CHECK_FIELD_TYPE_VOID(STRING); - CHECK_FIELD_NOT_REPEATED(); - - this->msgBuffer->GetReflection()->SetString(this->msgBuffer, field, value); -} -std::string PluginUserMessage::GetRepeatedString(std::string pszFieldName, int index) -{ - GETCHECK_FIELD(""); - CHECK_FIELD_TYPE(STRING, ""); - CHECK_FIELD_REPEATED(""); - CHECK_REPEATED_ELEMENT(index, ""); - - return this->msgBuffer->GetReflection()->GetRepeatedString(*this->msgBuffer, field, index); -} -void PluginUserMessage::SetRepeatedString(std::string pszFieldName, int index, const char* value) -{ - GETCHECK_FIELD(); - CHECK_FIELD_TYPE_VOID(STRING); - CHECK_FIELD_REPEATED(); - CHECK_REPEATED_ELEMENT_VOID(index); - - this->msgBuffer->GetReflection()->SetRepeatedString(this->msgBuffer, field, index, value); -} -void PluginUserMessage::AddString(std::string pszFieldName, const char* value) -{ - GETCHECK_FIELD(); - CHECK_FIELD_TYPE_VOID(STRING); - CHECK_FIELD_REPEATED(); - - this->msgBuffer->GetReflection()->AddString(this->msgBuffer, field, value); -} -Color PluginUserMessage::GetColor(std::string pszFieldName) -{ - GETCHECK_FIELD(Color(0, 0, 0, 0)); - CHECK_FIELD_TYPE(MESSAGE, Color(0, 0, 0, 0)); - CHECK_FIELD_NOT_REPEATED(Color(0, 0, 0, 0)); - - const CMsgRGBA* msgRGBA = (const CMsgRGBA*)&this->msgBuffer->GetReflection()->GetMessage(*this->msgBuffer, field); - - return Color(msgRGBA->r(), msgRGBA->g(), msgRGBA->b(), msgRGBA->a()); -} -void PluginUserMessage::SetColor(std::string pszFieldName, const Color& value) -{ - GETCHECK_FIELD(); - CHECK_FIELD_TYPE_VOID(MESSAGE); - CHECK_FIELD_NOT_REPEATED(); - - CMsgRGBA* msgRGBA = (CMsgRGBA*)this->msgBuffer->GetReflection()->MutableMessage(this->msgBuffer, field); - msgRGBA->set_r(value.r()); - msgRGBA->set_g(value.g()); - msgRGBA->set_b(value.b()); - msgRGBA->set_a(value.a()); -} -Color PluginUserMessage::GetRepeatedColor(std::string pszFieldName, int index) -{ - GETCHECK_FIELD(Color(0, 0, 0, 0)); - CHECK_FIELD_TYPE(MESSAGE, Color(0, 0, 0, 0)); - CHECK_FIELD_REPEATED(Color(0, 0, 0, 0)); - CHECK_REPEATED_ELEMENT(index, Color(0, 0, 0, 0)); - - const CMsgRGBA& msgRGBA = (const CMsgRGBA&)this->msgBuffer->GetReflection()->GetRepeatedMessage(*this->msgBuffer, field, index); - return Color(msgRGBA.r(), msgRGBA.g(), msgRGBA.b(), msgRGBA.a()); -} -void PluginUserMessage::SetRepeatedColor(std::string pszFieldName, int index, const Color& value) -{ - GETCHECK_FIELD(); - CHECK_FIELD_TYPE_VOID(MESSAGE); - CHECK_FIELD_REPEATED(); - CHECK_REPEATED_ELEMENT_VOID(index); - - CMsgRGBA* msgRGBA = (CMsgRGBA*)this->msgBuffer->GetReflection()->MutableRepeatedMessage(this->msgBuffer, field, index); - msgRGBA->set_r(value.r()); - msgRGBA->set_g(value.g()); - msgRGBA->set_b(value.b()); - msgRGBA->set_a(value.a()); -} -void PluginUserMessage::AddColor(std::string pszFieldName, const Color& value) -{ - GETCHECK_FIELD(); - CHECK_FIELD_TYPE_VOID(MESSAGE); - CHECK_FIELD_REPEATED(); - - CMsgRGBA* msgRGBA = (CMsgRGBA*)this->msgBuffer->GetReflection()->AddMessage(this->msgBuffer, field); - msgRGBA->set_r(value.r()); - msgRGBA->set_g(value.g()); - msgRGBA->set_b(value.b()); - msgRGBA->set_a(value.a()); -} -Vector2D PluginUserMessage::GetVector2D(std::string pszFieldName) -{ - GETCHECK_FIELD(Vector2D(0, 0)); - CHECK_FIELD_TYPE(MESSAGE, Vector2D(0, 0)); - CHECK_FIELD_NOT_REPEATED(Vector2D(0, 0)); - - const CMsgVector2D* msgVec2d = (const CMsgVector2D*)&this->msgBuffer->GetReflection()->GetMessage(*this->msgBuffer, field); - return Vector2D(msgVec2d->x(), msgVec2d->y()); -} -void PluginUserMessage::SetVector2D(std::string pszFieldName, Vector2D& vec) -{ - GETCHECK_FIELD(); - CHECK_FIELD_TYPE_VOID(MESSAGE); - CHECK_FIELD_NOT_REPEATED(); - - CMsgVector2D* msgVec2d = (CMsgVector2D*)this->msgBuffer->GetReflection()->MutableMessage(this->msgBuffer, field); - msgVec2d->set_x(vec.x); - msgVec2d->set_y(vec.y); -} -Vector2D PluginUserMessage::GetRepeatedVector2D(std::string pszFieldName, int index) -{ - GETCHECK_FIELD(Vector2D(0, 0)); - CHECK_FIELD_TYPE(MESSAGE, Vector2D(0, 0)); - CHECK_FIELD_REPEATED(Vector2D(0, 0)); - CHECK_REPEATED_ELEMENT(index, Vector2D(0, 0)); - - const CMsgVector2D& msgVec2d = (const CMsgVector2D&)this->msgBuffer->GetReflection()->GetRepeatedMessage(*this->msgBuffer, field, index); - return Vector2D(msgVec2d.x(), msgVec2d.y()); -} -void PluginUserMessage::SetRepeatedVector2D(std::string pszFieldName, int index, Vector2D& vec) -{ - GETCHECK_FIELD(); - CHECK_FIELD_TYPE_VOID(MESSAGE); - CHECK_FIELD_REPEATED(); - CHECK_REPEATED_ELEMENT_VOID(index); - - CMsgVector2D* msgVec2d = (CMsgVector2D*)this->msgBuffer->GetReflection()->MutableRepeatedMessage(this->msgBuffer, field, index); - msgVec2d->set_x(vec.x); - msgVec2d->set_y(vec.y); -} -void PluginUserMessage::AddVector2D(std::string pszFieldName, Vector2D& vec) -{ - GETCHECK_FIELD(); - CHECK_FIELD_TYPE_VOID(MESSAGE); - CHECK_FIELD_REPEATED(); - - CMsgVector2D* msgVec2d = (CMsgVector2D*)this->msgBuffer->GetReflection()->AddMessage(this->msgBuffer, field); - msgVec2d->set_x(vec.x); - msgVec2d->set_y(vec.y); -} -Vector PluginUserMessage::GetVector(std::string pszFieldName) -{ - GETCHECK_FIELD(Vector(0, 0, 0)); - CHECK_FIELD_TYPE(MESSAGE, Vector(0, 0, 0)); - CHECK_FIELD_NOT_REPEATED(Vector(0, 0, 0)); - - const CMsgVector* msgVec = (const CMsgVector*)&this->msgBuffer->GetReflection()->GetMessage(*this->msgBuffer, field); - return Vector(msgVec->x(), msgVec->y(), msgVec->z()); -} -void PluginUserMessage::SetVector(std::string pszFieldName, Vector& vec) -{ - GETCHECK_FIELD(); - CHECK_FIELD_TYPE_VOID(MESSAGE); - CHECK_FIELD_NOT_REPEATED(); - - CMsgVector* msgVec = (CMsgVector*)this->msgBuffer->GetReflection()->MutableMessage(this->msgBuffer, field); - msgVec->set_x(vec.x); - msgVec->set_y(vec.y); - msgVec->set_z(vec.z); -} -Vector PluginUserMessage::GetRepeatedVector(std::string pszFieldName, int index) -{ - GETCHECK_FIELD(Vector(0, 0, 0)); - CHECK_FIELD_TYPE(MESSAGE, Vector(0, 0, 0)); - CHECK_FIELD_REPEATED(Vector(0, 0, 0)); - CHECK_REPEATED_ELEMENT(index, Vector(0, 0, 0)); - - const CMsgVector& msgVec = (const CMsgVector&)this->msgBuffer->GetReflection()->GetRepeatedMessage(*this->msgBuffer, field, index); - return Vector(msgVec.x(), msgVec.y(), msgVec.z()); -} -void PluginUserMessage::SetRepeatedVector(std::string pszFieldName, int index, Vector& vec) -{ - GETCHECK_FIELD(); - CHECK_FIELD_TYPE_VOID(MESSAGE); - CHECK_FIELD_REPEATED(); - CHECK_REPEATED_ELEMENT_VOID(index); - - CMsgVector* msgVec = (CMsgVector*)this->msgBuffer->GetReflection()->MutableRepeatedMessage(this->msgBuffer, field, index); - msgVec->set_x(vec.x); - msgVec->set_y(vec.y); - msgVec->set_z(vec.z); -} -void PluginUserMessage::AddVector(std::string pszFieldName, Vector& vec) -{ - GETCHECK_FIELD(); - CHECK_FIELD_TYPE_VOID(MESSAGE); - CHECK_FIELD_REPEATED(); - - CMsgVector* msgVec = (CMsgVector*)this->msgBuffer->GetReflection()->AddMessage(this->msgBuffer, field); - msgVec->set_x(vec.x); - msgVec->set_y(vec.y); - msgVec->set_z(vec.z); -} -QAngle PluginUserMessage::GetQAngle(std::string pszFieldName) -{ - GETCHECK_FIELD(QAngle(0, 0, 0)); - CHECK_FIELD_TYPE(MESSAGE, QAngle(0, 0, 0)); - CHECK_FIELD_NOT_REPEATED(QAngle(0, 0, 0)); - - const CMsgQAngle* msgAng = (const CMsgQAngle*)&this->msgBuffer->GetReflection()->GetMessage(*this->msgBuffer, field); - return QAngle(msgAng->x(), msgAng->y(), msgAng->z()); -} -void PluginUserMessage::SetQAngle(std::string pszFieldName, QAngle& vec) -{ - GETCHECK_FIELD(); - CHECK_FIELD_TYPE_VOID(MESSAGE); - CHECK_FIELD_NOT_REPEATED(); - - CMsgQAngle* msgAng = (CMsgQAngle*)this->msgBuffer->GetReflection()->MutableMessage(this->msgBuffer, field); - msgAng->set_x(vec.x); - msgAng->set_y(vec.y); - msgAng->set_z(vec.z); -} -QAngle PluginUserMessage::GetRepeatedQAngle(std::string pszFieldName, int index) -{ - GETCHECK_FIELD(QAngle(0, 0, 0)); - CHECK_FIELD_TYPE(MESSAGE, QAngle(0, 0, 0)); - CHECK_FIELD_REPEATED(QAngle(0, 0, 0)); - CHECK_REPEATED_ELEMENT(index, QAngle(0, 0, 0)); - - const CMsgQAngle& msgAng = (const CMsgQAngle&)this->msgBuffer->GetReflection()->GetRepeatedMessage(*this->msgBuffer, field, index); - return QAngle(msgAng.x(), msgAng.y(), msgAng.z()); -} -void PluginUserMessage::SetRepeatedQAngle(std::string pszFieldName, int index, QAngle& vec) -{ - GETCHECK_FIELD(); - CHECK_FIELD_TYPE_VOID(MESSAGE); - CHECK_FIELD_REPEATED(); - CHECK_REPEATED_ELEMENT_VOID(index); - - CMsgQAngle* msgAng = (CMsgQAngle*)this->msgBuffer->GetReflection()->MutableRepeatedMessage(this->msgBuffer, field, index); - msgAng->set_x(vec.x); - msgAng->set_y(vec.y); - msgAng->set_z(vec.z); -} -void PluginUserMessage::AddQAngle(std::string pszFieldName, QAngle& vec) -{ - GETCHECK_FIELD(); - CHECK_FIELD_TYPE_VOID(MESSAGE); - CHECK_FIELD_REPEATED(); - - CMsgQAngle* msgAng = (CMsgQAngle*)this->msgBuffer->GetReflection()->AddMessage(this->msgBuffer, field); - msgAng->set_x(vec.x); - msgAng->set_y(vec.y); - msgAng->set_z(vec.z); -} - -PluginUserMessage PluginUserMessage::GetUMessage(std::string pszFieldName) -{ - GETCHECK_FIELD(PluginUserMessage("")); - CHECK_FIELD_TYPE(MESSAGE, PluginUserMessage("")); - CHECK_FIELD_NOT_REPEATED(PluginUserMessage("")); - - auto msg = this->msgBuffer->GetReflection()->MutableMessage(this->msgBuffer, field); - return PluginUserMessage(msg); -} - -PluginUserMessage PluginUserMessage::GetRepeatedMessage(std::string pszFieldName, int index) -{ - GETCHECK_FIELD(PluginUserMessage("")); - CHECK_FIELD_TYPE(MESSAGE, PluginUserMessage("")); - CHECK_FIELD_REPEATED(PluginUserMessage("")); - CHECK_REPEATED_ELEMENT(index, PluginUserMessage("")); - - return PluginUserMessage(this->msgBuffer->GetReflection()->MutableRepeatedMessage(this->msgBuffer, field, index)); -} - -PluginUserMessage PluginUserMessage::AddMessage(std::string pszFieldName) -{ - GETCHECK_FIELD(PluginUserMessage("")); - CHECK_FIELD_TYPE(MESSAGE, PluginUserMessage("")); - CHECK_FIELD_REPEATED(PluginUserMessage("")); - - return PluginUserMessage(this->msgBuffer->GetReflection()->AddMessage(this->msgBuffer, field)); -} - -void PluginUserMessage::RemoveRepeatedFieldValue(std::string pszFieldName, int index) -{ - GETCHECK_FIELD(); - CHECK_FIELD_REPEATED(); - CHECK_REPEATED_ELEMENT_VOID(index); - - const google::protobuf::Reflection* pReflection = this->msgBuffer->GetReflection(); - for (int i = index; i < elemCount - 1; ++i) - pReflection->SwapElements(this->msgBuffer, field, i, i + 1); - - pReflection->RemoveLast(this->msgBuffer, field); -} - -int PluginUserMessage::GetRepeatedFieldCount(std::string pszFieldName) -{ - const google::protobuf::FieldDescriptor* field = this->msgBuffer->GetDescriptor()->FindFieldByName(pszFieldName); - if (!field) - return -1; - - if (field->label() != google::protobuf::FieldDescriptor::LABEL_REPEATED) - return -1; - - return this->msgBuffer->GetReflection()->FieldSize(*this->msgBuffer, field); -} - -void PluginUserMessage::AddClient(int playerId) -{ - if (!this->clients) return; - - uint64 newcls = *this->clients; - if (newcls & ((uint64)1 << playerId)) - newcls |= ((uint64)1 << playerId); - - memcpy(this->clients, &newcls, sizeof(newcls)); -} - -void PluginUserMessage::RemoveClient(int playerId) -{ - if (!this->clients) return; - - uint64 newcls = *this->clients; - if (newcls & ((uint64)1 << playerId)) - newcls &= ~((uint64)1 << playerId); - - memcpy(this->clients, &newcls, sizeof(newcls)); -} - -void PluginUserMessage::ClearClients() -{ - if (!this->clients) return; - - uint64 newcls = 0; - memcpy(this->clients, &newcls, sizeof(newcls)); -} - -void PluginUserMessage::AddClients() -{ - if (!this->clients) return; - - uint64 newcls = 0; - for (int i = 0; i < 64; i++) - newcls |= ((uint64)1 << i); - - memcpy(this->clients, &newcls, sizeof(newcls)); -} - -std::vector PluginUserMessage::GetClients() -{ - std::vector clns; - if (!this->clients) return clns; - - uint64 cls = *this->clients; - for (int i = 0; i < 64; i++) - if (cls & ((uint64)1 << i)) - clns.push_back(i); - - return clns; -} - -void PluginUserMessage::SendToPlayer(int playerId) -{ - if (!this->internalMsg) - return; - - if (!this->msgBuffer) - return; - - CSingleRecipientFilter filter(playerId); - g_pGameEventSystem->PostEventAbstract(-1, false, &filter, this->internalMsg, this->msgBuffer, 0); -} - -void PluginUserMessage::SendToAllPlayers() -{ - if (!this->internalMsg) - return; - - if (!this->msgBuffer) - return; - - CBroadcastRecipientFilter* filter = new CBroadcastRecipientFilter; - g_pGameEventSystem->PostEventAbstract(-1, false, filter, this->internalMsg, this->msgBuffer, 0); - delete filter; -} \ No newline at end of file diff --git a/src/plugins/core/scripting/player/player.cpp b/src/plugins/core/scripting/player/player.cpp deleted file mode 100644 index d58bdc8fb..000000000 --- a/src/plugins/core/scripting/player/player.cpp +++ /dev/null @@ -1,485 +0,0 @@ -#include "../../scripting.h" - -#include "../../../../player/playermanager/PlayerManager.h" -#include "../../../../server/commands/CommandsManager.h" -#include "../../../../entitysystem/precacher/precacher.h" -#include "../../../../engine/convars/convars.h" - -typedef IGameEventListener2* (*GetLegacyGameEventListener)(CPlayerSlot slot); - -PluginPlayer::PluginPlayer(int m_playerId) -{ - this->playerId = m_playerId; - - pCBaseEntity = new SDKBaseClass(nullptr, "CBaseEntity"); - pCBasePlayerController = new SDKBaseClass(nullptr, "CBasePlayerController"); - pCBasePlayerPawn = new SDKBaseClass(nullptr, "CBasePlayerPawn"); - pCCSPlayerController = new SDKBaseClass(nullptr, "CCSPlayerController"); - pCCSPlayerPawn = new SDKBaseClass(nullptr, "CCSPlayerPawn"); - pCCSPlayerPawnBase = new SDKBaseClass(nullptr, "CCSPlayerPawnBase"); -} - -PluginPlayer::~PluginPlayer() { - delete pCBaseEntity; - delete pCBasePlayerController; - delete pCBasePlayerPawn; - delete pCCSPlayerController; - delete pCCSPlayerPawn; - delete pCCSPlayerPawnBase; -} - -SDKBaseClass* PluginPlayer::GetCBaseEntity() -{ - Player* player = g_playerManager->GetPlayer(this->playerId); - if (!player) pCBaseEntity->SetPtr(nullptr); - else if (player->GetPlayerPawn() != pCBaseEntity->GetPtr()) pCBaseEntity->SetPtr(player->GetPlayerPawn()); - return pCBaseEntity; -} - -SDKBaseClass* PluginPlayer::GetCBasePlayerController() -{ - Player* player = g_playerManager->GetPlayer(this->playerId); - if (!player) pCBasePlayerController->SetPtr(nullptr); - else if (player->GetController() != pCBasePlayerController->GetPtr()) pCBasePlayerController->SetPtr(player->GetController()); - return pCBasePlayerController; -} - -SDKBaseClass* PluginPlayer::GetCBasePlayerPawn() -{ - Player* player = g_playerManager->GetPlayer(this->playerId); - if (!player) pCBasePlayerPawn->SetPtr(nullptr); - else if (player->GetPawn() != pCBasePlayerPawn->GetPtr()) pCBasePlayerPawn->SetPtr(player->GetPawn()); - return pCBasePlayerPawn; -} - -SDKBaseClass* PluginPlayer::GetCCSPlayerController() -{ - Player* player = g_playerManager->GetPlayer(this->playerId); - if (!player) pCCSPlayerController->SetPtr(nullptr); - else if (player->GetPlayerController() != pCCSPlayerController->GetPtr()) pCCSPlayerController->SetPtr(player->GetPlayerController()); - return pCCSPlayerController; -} - -SDKBaseClass* PluginPlayer::GetCCSPlayerPawn() -{ - Player* player = g_playerManager->GetPlayer(this->playerId); - if (!player) pCCSPlayerPawn->SetPtr(nullptr); - else if (player->GetPlayerPawn() != pCCSPlayerPawn->GetPtr()) pCCSPlayerPawn->SetPtr(player->GetPlayerPawn()); - return pCCSPlayerPawn; -} - -SDKBaseClass* PluginPlayer::GetCCSPlayerPawnBase() -{ - Player* player = g_playerManager->GetPlayer(this->playerId); - if (!player) pCCSPlayerPawnBase->SetPtr(nullptr); - else if (player->GetPlayerBasePawn() != pCCSPlayerPawnBase->GetPtr()) pCCSPlayerPawnBase->SetPtr(player->GetPlayerBasePawn()); - return pCCSPlayerPawnBase; -} - -void PluginPlayer::Drop(int reason) -{ - if (reason < 0 || reason > 69) - return; - - Player* player = g_playerManager->GetPlayer(this->playerId); - if (!player) - return; - - if (!engine) - return; - - engine->DisconnectClient(player->GetSlot(), (ENetworkDisconnectionReason)reason); -} - -std::string PluginPlayer::GetChatTag() -{ - - Player* player = g_playerManager->GetPlayer(this->playerId); - if (!player) - return ""; - - return player->tag; -} - -void PluginPlayer::SetChatTag(std::string tag) -{ - - Player* player = g_playerManager->GetPlayer(this->playerId); - if (!player) - return; - - player->tag = tag; -} - -void PluginPlayer::SetChatTagColor(std::string color) -{ - - Player* player = g_playerManager->GetPlayer(this->playerId); - if (!player) - return; - - player->tagcolor = color; -} - -void PluginPlayer::SetNameColor(std::string color) -{ - - Player* player = g_playerManager->GetPlayer(this->playerId); - if (!player) - return; - - player->namecolor = color; -} - -void PluginPlayer::SetChatColor(std::string color) -{ - - Player* player = g_playerManager->GetPlayer(this->playerId); - if (!player) - return; - - player->chatcolor = color; -} - -std::string PluginPlayer::GetChatTagColor() -{ - - Player* player = g_playerManager->GetPlayer(this->playerId); - if (!player) - return ""; - return player->tagcolor; -} - -std::string PluginPlayer::GetNameColor() -{ - - Player* player = g_playerManager->GetPlayer(this->playerId); - if (!player) - return ""; - return player->namecolor; -} - -std::string PluginPlayer::GetChatColor() -{ - - Player* player = g_playerManager->GetPlayer(this->playerId); - if (!player) - return ""; - return player->chatcolor; -} - -void PluginPlayer::ExecuteCommand(std::string cmd) -{ - - Player* player = g_playerManager->GetPlayer(this->playerId); - if (!player) - return; - - if (starts_with(cmd, "sw_")) - { - CCommand tokenizedArgs; - tokenizedArgs.Tokenize(cmd.c_str()); - - std::vector cmdString = TokenizeCommand(cmd); - cmdString.erase(cmdString.begin()); - - std::string commandName = replace(tokenizedArgs[0], "sw_", ""); - - Command* command = g_commandsManager->FetchCommand(commandName); - if (command) - command->Execute(player->GetSlot().Get(), cmdString, true, "sw_"); - } - else - engine->ClientCommand(player->GetSlot().Get(), cmd.c_str()); -} - -std::string PluginPlayer::GetConvarValue(std::string name) -{ - Player* player = g_playerManager->GetPlayer(this->playerId); - if (!player) - return ""; - - if (!engine) - return ""; - - return engine->GetClientConVarValue(player->GetSlot(), name.c_str()); -} - -void PluginPlayer::SetConvar(std::string name, std::string value) -{ - - Player* player = g_playerManager->GetPlayer(this->playerId); - if (!player) - return; - - player->SetClientConvar(name, value); -} - -std::string PluginPlayer::GetIPAddress() -{ - Player* player = g_playerManager->GetPlayer(this->playerId); - if (!player) - return ""; - - return player->GetIPAddress(); -} - -int PluginPlayer::GetSlot() -{ - Player* player = g_playerManager->GetPlayer(this->playerId); - if (!player) - return -1; - - return player->GetSlot().Get(); -} - -uint64_t PluginPlayer::GetSteamID() -{ - Player* player = g_playerManager->GetPlayer(this->playerId); - if (!player) - return 0; - - return player->GetSteamID(); -} - -std::string PluginPlayer::GetSteamID2() -{ - Player* player = g_playerManager->GetPlayer(this->playerId); - if (!player) - return "STEAM_0:0:000000000"; - - uint64_t steamid = player->GetSteamID(); - - if (steamid == 0) - return "STEAM_0:0:000000000"; - - static const uint64_t base = 76561197960265728; - std::string data = string_format("STEAM_0:%d:%llu", (steamid - base) & 1, (steamid - base) / 2); - - return data; -} - -void PluginPlayer::HideMenu() -{ - Player* player = g_playerManager->GetPlayer(this->playerId); - if (!player) - return; - - if (!player->menu_renderer->HasMenuShown()) - return; - - player->menu_renderer->HideMenu(); -} - -bool PluginPlayer::IsFakeClient() -{ - Player* player = g_playerManager->GetPlayer(this->playerId); - if (!player) - return false; - - return player->IsFakeClient(); -} - -bool PluginPlayer::IsFirstSpawn() -{ - Player* player = g_playerManager->GetPlayer(this->playerId); - if (!player) - return false; - - return player->IsFirstSpawn(); -} - -void PluginPlayer::Kill() -{ - Player* player = g_playerManager->GetPlayer(this->playerId); - if (!player) - return; - - CBasePlayerPawn* pawn = player->GetPawn(); - if (!pawn) - return; - - pawn->CommitSuicide(false, true); -} - -void PluginPlayer::Respawn() -{ - Player* player = g_playerManager->GetPlayer(this->playerId); - if (!player) - return; - - CCSPlayerController* controller = player->GetPlayerController(); - if (!controller) - return; - - controller->Respawn(); -} - -void PluginPlayer::SendMsg(int dest, std::string msg) -{ - Player* player = g_playerManager->GetPlayer(this->playerId); - if (!player) - return; - - player->SendMsg(dest, msg.c_str()); -} - -void PluginPlayer::ShowMenu(std::string menuid) -{ - Player* player = g_playerManager->GetPlayer(this->playerId); - if (!player) - return; - - if (player->menu_renderer->HasMenuShown()) - return; - - player->menu_renderer->ShowMenu(menuid); -} - -void PluginPlayer::SwitchTeam(int team) -{ - if (team < 0 || team > 3) - return; - - Player* player = g_playerManager->GetPlayer(this->playerId); - if (!player) - return; - - player->SwitchTeam(team); -} - -void PluginPlayer::ChangeTeam(int team) -{ - if (team < 0 || team > 3) - return; - - Player* player = g_playerManager->GetPlayer(this->playerId); - if (!player) - return; - - player->ChangeTeam(team); -} - -std::any PluginPlayer::GetVarValue(std::string key) -{ - Player* player = g_playerManager->GetPlayer(playerId); - if (!player) - return nullptr; - - return player->GetInternalVar(key); -} - -void PluginPlayer::SetVarValue(std::string key, std::any value) -{ - Player* player = g_playerManager->GetPlayer(playerId); - if (!player) - return; - - player->SetInternalVar(key, value); -} - -void PluginPlayer::SetListening(int playerid, int listenOverride) -{ - Player* player = g_playerManager->GetPlayer(playerid); - if (!player) - return; - - Player* self = g_playerManager->GetPlayer(this->playerId); - if (!self) - return; - - self->SetListen(playerid, (ListenOverride)listenOverride); -} - -int PluginPlayer::GetListening(int playerid) -{ - Player* player = g_playerManager->GetPlayer(playerid); - if (!player) - return ListenOverride::Listen_Default; - - Player* self = g_playerManager->GetPlayer(this->playerId); - if (!self) - return ListenOverride::Listen_Default; - - return self->GetListen(playerid); -} - -void PluginPlayer::SetVoiceFlags(int flags) -{ - Player* self = g_playerManager->GetPlayer(this->playerId); - if (!self) - return; - - self->SetVoiceFlags((VoiceFlag_t)flags); -} - -int PluginPlayer::GetVoiceFlags() -{ - Player* self = g_playerManager->GetPlayer(this->playerId); - if (!self) - return 0; - - return self->GetVoiceFlags(); -} - -uint32_t PluginPlayer::GetConnectedTime() -{ - Player* self = g_playerManager->GetPlayer(this->playerId); - if (!self) - return 0; - - return self->GetConnectedTime(); -} - -PluginWeaponManager PluginPlayer::GetWeaponManager() -{ - return PluginWeaponManager(playerId); -} - -void PluginPlayer::QueryConvar(std::string cvar_name) -{ - Player* self = g_playerManager->GetPlayer(this->playerId); - if (!self) return; - if (self->IsFakeClient()) return; - - g_cvarQuery->QueryCvarClient(self->GetSlot(), cvar_name); -} - -bool PluginPlayer::IsValid() -{ - Player* self = g_playerManager->GetPlayer(this->playerId); - if (!self) return false; - if (self->IsFirstSpawn()) return false; - - CBasePlayerController* controller = self->GetController(); - if (!controller) return false; - if (controller->m_bIsHLTV()) return false; - if (controller->m_iConnected() != CPlayerConnectedState::PlayerConnected) return false; - - CBasePlayerPawn* pawn = self->GetPawn(); - if (!pawn) return false; - - return true; -} - -void PluginPlayer::PerformMenuAction(std::string action, int value) -{ - Player* self = g_playerManager->GetPlayer(this->playerId); - if (!self) return; - - if (action == "useOption") { - if(!self->menu_renderer->HasMenuShown()) return; - if(self->menu_renderer->GetMenu()->GetItemsOnPage(self->menu_renderer->GetPage()) < value) return; - while (self->menu_renderer->GetSelection() != value - 1) - self->menu_renderer->MoveSelection(); - - self->menu_renderer->PerformMenuAction(g_Config->FetchValue("core.menu.buttons.use")); - } - else if (action == "scrollToOption") { - if(!self->menu_renderer->HasMenuShown()) return; - if(self->menu_renderer->GetMenu()->GetItemsOnPage(self->menu_renderer->GetPage()) < value) return; - - while (self->menu_renderer->GetSelection() != value - 1) - self->menu_renderer->MoveSelection(); - } -} diff --git a/src/plugins/core/scripting/player/playermanager.cpp b/src/plugins/core/scripting/player/playermanager.cpp deleted file mode 100644 index a81254823..000000000 --- a/src/plugins/core/scripting/player/playermanager.cpp +++ /dev/null @@ -1,42 +0,0 @@ -#include "../../scripting.h" - -#include "../../../../player/playermanager/PlayerManager.h" - -PluginPlayerManager::PluginPlayerManager(std::string m_plugin_name) -{ - REGISTER_CALLSTACK(this->plugin_name, string_format("PluginPlayerManager::PluginPlayerManager(m_plugin_name=\"%s\")", m_plugin_name.c_str())); - - this->plugin_name = m_plugin_name; -} - -uint16_t PluginPlayerManager::GetPlayerCount() -{ - REGISTER_CALLSTACK(this->plugin_name, "PluginPlayerManager::GetPlayerCount()"); - - return g_playerManager->GetPlayers(); -} - -uint16_t PluginPlayerManager::GetPlayerCap() -{ - REGISTER_CALLSTACK(this->plugin_name, "PluginPlayerManager::GetPlayerCap()"); - - return g_playerManager->GetPlayerCap(); -} - -void PluginPlayerManager::SendMsg(int destination, std::string text) -{ - REGISTER_CALLSTACK(this->plugin_name, string_format("PluginPlayerManager::SendMsg(destination=%d)", destination)); - - for (uint16_t i = 0; i < g_playerManager->GetPlayerCap(); i++) - { - Player* player = g_playerManager->GetPlayer(i); - if (!player) - continue; - if (player->IsFakeClient()) - continue; - if (!player->GetController()) - continue; - - player->SendMsg(destination, text.c_str()); - } -} \ No newline at end of file diff --git a/src/plugins/core/scripting/sdk/chandle.cpp b/src/plugins/core/scripting/sdk/chandle.cpp deleted file mode 100644 index 21ce605ef..000000000 --- a/src/plugins/core/scripting/sdk/chandle.cpp +++ /dev/null @@ -1,30 +0,0 @@ -#include "../../scripting.h" - -PluginCHandle::PluginCHandle(void* ptr) -{ - m_Handle = (CHandle*)ptr; -} - -PluginCHandle::PluginCHandle(std::string ptr) -{ - if (!starts_with(ptr, "0x")) return; - - m_Handle = (CHandle*)strtol(ptr.c_str(), nullptr, 16); -} - -std::string PluginCHandle::GetPtr() -{ - return string_format("%p", (void*)m_Handle->Get()); -} - -void PluginCHandle::SetPtr(std::string ptr) -{ - if (!starts_with(ptr, "0x")) return; - - m_Handle->Set((CEntityInstance*)strtol(ptr.c_str(), nullptr, 16)); -} - -std::string PluginCHandle::GetHandlePtr() -{ - return string_format("%p", (void*)m_Handle); -} \ No newline at end of file diff --git a/src/plugins/core/scripting/sdk/checktransmit.cpp b/src/plugins/core/scripting/sdk/checktransmit.cpp deleted file mode 100644 index 83f94953b..000000000 --- a/src/plugins/core/scripting/sdk/checktransmit.cpp +++ /dev/null @@ -1,47 +0,0 @@ -#include "../../scripting.h" - -#include "../../../../player/playermanager/PlayerManager.h" - -PluginCCheckTransmitInfo::PluginCCheckTransmitInfo(EValue ptr) -{ - if (ptr.isString()) - this->m_ptr = (CCheckTransmitInfo*)(strtol(ptr.cast().c_str(), nullptr, 16)); - else if (ptr.isInstance()) - this->m_ptr = ptr.cast().m_ptr; - else - throw std::runtime_error("Invalid pointer or object."); -} - -std::map PluginCCheckTransmitInfo::GetPlayers() -{ - std::map player_entindex; - - for (uint16_t i = 0; i < g_playerManager->GetPlayerCap(); i++) { - Player* player = g_playerManager->GetPlayer(i); - if (!player) continue; - CCSPlayerPawn* playerPawn = player->GetPlayerPawn(); - if (!playerPawn) continue; - - player_entindex.insert({ i, playerPawn->entindex() }); - } - - return player_entindex; -} - -std::vector PluginCCheckTransmitInfo::GetEntities() -{ - std::vector entities_list; - - for (int i = 0; i < MAX_EDICTS; i++) - if (this->m_ptr->m_pTransmitEntity->IsBitSet(i)) - entities_list.push_back(i); - - return entities_list; -} - -void PluginCCheckTransmitInfo::SetEntities(std::vector tbl) -{ - this->m_ptr->m_pTransmitEntity->ClearAll(); - for (int i = 0; i < tbl.size(); i++) - this->m_ptr->m_pTransmitEntity->Set(tbl[i]); -} \ No newline at end of file diff --git a/src/plugins/core/scripting/sdk/schema.cpp b/src/plugins/core/scripting/sdk/schema.cpp deleted file mode 100644 index 91e338d7a..000000000 --- a/src/plugins/core/scripting/sdk/schema.cpp +++ /dev/null @@ -1,27 +0,0 @@ -#include "../../scripting.h" - -void WriteSchemaPtrValue(void* ptr, const char* className, const char* fieldName, byte* value, int size) -{ - const auto m_key = sch::GetOffset(className, fieldName); - - void* fieldPtr = reinterpret_cast>((uintptr_t)(ptr)+m_key); - - Plat_WriteMemory(fieldPtr, value, size); - - SetStateChanged((uintptr_t)ptr, className, fieldName, 0); -} - -void* GetSchemaPtr(void* ptr, const char* className, const char* fieldName) -{ - auto m_key = sch::GetOffset(className, fieldName); - - return reinterpret_cast((uintptr_t)(ptr)+m_key); -} - -void scripting_StateUpdate(std::string ptr, std::string classname, std::string field) -{ - if (!starts_with(ptr, "0x")) return; - void* vPtr = (void*)(strtol(ptr.c_str(), nullptr, 16)); - - SetStateChanged((uintptr_t)vPtr, classname, field, 0); -} \ No newline at end of file diff --git a/src/plugins/core/scripting/sdk/sdkaccess.cpp b/src/plugins/core/scripting/sdk/sdkaccess.cpp deleted file mode 100644 index ffb2cda15..000000000 --- a/src/plugins/core/scripting/sdk/sdkaccess.cpp +++ /dev/null @@ -1,937 +0,0 @@ -#include "../../scripting.h" -#include "../../../../sdk/access/sdkaccess.h" -#include "../../../../sdk/entity/CBasePlayerController.h" -#include "../../../../sdk/entity/CBaseModelEntity.h" -#include "../../../../sdk/entity/CBaseEntity.h" -#include "../../../../sdk/entity/CCSWeaponBase.h" -#include "../../../../player/playermanager/PlayerManager.h" - -#include - -std::set BlockedCS2GuidelinesFields = { - "m_bIsValveDS", - "m_bIsQuestEligible", - "m_iEntityLevel", - "m_iItemIDHigh", - "m_iItemIDLow", - "m_iAccountID", - "m_iEntityQuality", - "m_bInitialized", - "m_szCustomName", - "m_iAttributeDefinitionIndex", - "m_iRawValue32", - "m_iRawInitialValue32", - "m_flValue", - "m_flInitialValue", - "m_bSetBonus", - "m_nRefundableCurrency", - "m_OriginalOwnerXuidLow", - "m_OriginalOwnerXuidHigh", - "m_nFallbackPaintKit", - "m_nFallbackSeed", - "m_flFallbackWear", - "m_nFallbackStatTrak", - "m_iCompetitiveWins", - "m_iCompetitiveRanking", - "m_iCompetitiveRankType", - "m_iCompetitiveRankingPredicted_Win", - "m_iCompetitiveRankingPredicted_Loss", - "m_iCompetitiveRankingPredicted_Tie", - "m_nActiveCoinRank", - "m_nMusicID", -}; - -bool followCS2Guidelines = true; - -int SDKBaseClass::CBasePlayerController_EntityIndex() { - return ((CBasePlayerController*)this->GetPtr())->GetEntityIndex().Get(); -} - -void SDKBaseClass::CAttributeList_SetOrAddAttributeValueByName(std::string str, float value) { - ((CAttributeList*)this->GetPtr())->SetOrAddAttributeValueByName(str.c_str(), value); -} - -void SDKBaseClass::CBaseModelEntity_SetModel(std::string model) -{ - ((CBaseModelEntity*)this->GetPtr())->SetModel(model.c_str()); -} - -void SDKBaseClass::CBaseModelEntity_SetSolidType(int64_t solidType) -{ - ((CBaseModelEntity*)this->GetPtr())->SetSolidType((SolidType_t)solidType); -} - -void SDKBaseClass::CBaseModelEntity_SetBodygroup(std::string str, int64_t val) -{ - ((CBaseModelEntity*)this->GetPtr())->SetBodygroup(str.c_str(), (uint64_t)val); -} - -SDKBaseClass SDKBaseClass::CPlayerPawnComponent_GetPawn() -{ - return SDKBaseClass(((CPlayerPawnComponent*)this->GetPtr())->m_pPawn, "CBasePlayerPawn"); -} - -SDKBaseClass SDKBaseClass::CGameSceneNode_GetSkeletonInstance() { - return SDKBaseClass(((CGameSceneNode*)this->GetPtr())->GetSkeletonInstance(), "CSkeletonInstance"); -} - -SDKBaseClass SDKBaseClass::CBaseEntity_EHandle() { - return SDKBaseClass(((CBaseEntity*)this->GetPtr())->m_pEntity->m_EHandle.Get(), "CBaseEntity"); -} - -void SDKBaseClass::CBaseEntity_Spawn(PluginCEntityKeyValues* kv) { - ((CBaseEntity*)this->GetPtr())->DispatchSpawn(kv ? kv->GetKeyVals() : nullptr); -} - -void SDKBaseClass::CBaseEntity_Despawn() { - ((CBaseEntity*)this->GetPtr())->Despawn(); -} - -void SDKBaseClass::CBaseEntity_AcceptInput(std::string input, EValue activator, EValue caller, std::string value, int outputID) { - ((CBaseEntity*)this->GetPtr())->AcceptInput(input.c_str(), (CEntityInstance*)activator.cast_or(SDKBaseClass(nullptr, "CEntityInstance")).GetPtr(), (CEntityInstance*)caller.cast_or(SDKBaseClass(nullptr, "CEntityInstance")).GetPtr(), value.c_str(), outputID); -} - -std::string SDKBaseClass::CBaseEntity_GetClassname() { - return ((CBaseEntity*)this->GetPtr())->GetClassname(); -} - -SDKBaseClass SDKBaseClass::CBaseEntity_GetVData() { - return SDKBaseClass(((CBaseEntity*)this->GetPtr())->GetVData(), "CEntitySubclassVDataBase"); -} - -void SDKBaseClass::CBaseEntity_CollisionRulesChanged() -{ - ((CBaseEntity*)this->GetPtr())->CollisionRulesChanged(); -} - -void SDKBaseClass::CBaseEntity_Teleport(Vector value, QAngle angle, Vector velocity) { - if (!IsValid()) return; - - ((CBaseEntity*)this->GetPtr())->Teleport(&value, &angle, &velocity); -} - -void SDKBaseClass::CBaseEntity_EmitSound(std::string sound_name, float pitch, float volume) { - for (int i = 0; i < g_playerManager->GetPlayerCap(); i++) { - Player* player = g_playerManager->GetPlayer(i); - if (!player) continue; - if (player->IsFakeClient()) continue; - if ((void*)player->GetPlayerController() == this->GetPtr() || (void*)player->GetPlayerPawn() == this->GetPtr()) { - CSingleRecipientFilter filter(i); - ((CBaseEntity*)this->GetPtr())->EmitSoundFilter(filter, sound_name, pitch, volume); - break; - } - } -} - -void SDKBaseClass::CBaseEntity_EmitSoundFromEntity(std::string sound_name, float pitch, float volume, float delay) { - ((CBaseEntity*)this->GetPtr())->EmitSoundFromEntity(sound_name, pitch, volume, delay); -} - -void SDKBaseClass::CBaseEntity_TakeDamage(EValue attacker, EValue inflictor, EValue ability, int damageType, float damage) { - CBaseEntity* pinflictor = nullptr; - CBaseEntity* pability = nullptr; - CBaseEntity* pattacker = nullptr; - - if(ability.isInstance()) - pability = (CBaseEntity*)ability.cast().GetPtr(); - if(attacker.isInstance()) - pattacker = (CBaseEntity*)attacker.cast().GetPtr(); - if(inflictor.isInstance()) - pinflictor = (CBaseEntity*)inflictor.cast().GetPtr(); - - if(!pinflictor) pinflictor = pattacker; - - CTakeDamageInfo info(pinflictor, pattacker, pability, damage, (DDamageTypes_t)damageType); - - ((CBaseEntity*)this->GetPtr())->TakeDamage(&info); -} - -SDKBaseClass::SDKBaseClass(std::string ptr, std::string className) -{ - this->m_ptr = (void*)(strtol(ptr.c_str(), nullptr, 16)); - this->m_className = className; - this->classOffset = ((uint64_t)hash_32_fnv1a_const(this->m_className.c_str()) << 32); -} - -SDKBaseClass::SDKBaseClass(void* ptr, std::string className) -{ - this->m_ptr = ptr; - this->m_className = className; - this->classOffset = ((uint64_t)hash_32_fnv1a_const(this->m_className.c_str()) << 32); -} - -std::string SDKBaseClass::GetClassName() -{ - return this->m_className; -} - -void SDKBaseClass::SetPtr(void* ptr) -{ - this->m_ptr = ptr; -} - -void* SDKBaseClass::GetPtr() -{ - return this->m_ptr; -} - -std::string SDKBaseClass::ToPtr() -{ - return string_format("%p", this->m_ptr); -} - -bool SDKBaseClass::IsValid() -{ - return (this->m_ptr != nullptr); -} - -extern std::set BlockedCS2GuidelinesFields; -extern bool followCS2Guidelines; - -EValue SDKBaseClass::AccessSDK(std::string fieldName, uint64_t path, EContext* state) -{ - if (followCS2Guidelines && BlockedCS2GuidelinesFields.find(fieldName) != BlockedCS2GuidelinesFields.end()) - { - PRINTF("Getting or setting %s::%s is not permitted due to CS2 Server Guidelines violation.\nTo get or set this value, switch to false the \"core.FollowCS2ServerGuidelines\" field.\nNote: Using non-compliant field values can result in a GSLT ban.\nNote: We are not providing any kind of support for people which are using these fields.\n", this->m_className.c_str(), fieldName.c_str()); - return EValue(state); - } - - if (!g_sdk->ExistsField(path)) return EValue(state); - - std::string field = g_sdk->GetFieldName(path); - - switch (g_sdk->GetFieldType(path)) - { - case Bool: - return EValue(state, GetSchemaValue(m_ptr, this->m_className.c_str(), field.c_str())); - case Int8: - return EValue(state, GetSchemaValue(m_ptr, this->m_className.c_str(), field.c_str())); - case Int16: - return EValue(state, GetSchemaValue(m_ptr, this->m_className.c_str(), field.c_str())); - case Int32: - return EValue(state, GetSchemaValue(m_ptr, this->m_className.c_str(), field.c_str())); - case Int64: - return EValue(state, GetSchemaValue(m_ptr, this->m_className.c_str(), field.c_str())); - case UInt8: - return EValue(state, GetSchemaValue(m_ptr, this->m_className.c_str(), field.c_str())); - case UInt16: - return EValue(state, GetSchemaValue(m_ptr, this->m_className.c_str(), field.c_str())); - case UInt32: - return EValue(state, GetSchemaValue(m_ptr, this->m_className.c_str(), field.c_str())); - case UInt64: - return EValue(state, GetSchemaValue(m_ptr, this->m_className.c_str(), field.c_str())); - case Float: - return EValue(state, GetSchemaValue(m_ptr, this->m_className.c_str(), field.c_str())); - case Double: - return EValue(state, GetSchemaValue(m_ptr, this->m_className.c_str(), field.c_str())); - case Parent: - return EValue(state, SDKBaseClass(m_ptr, field)); - case StringToken: - return EValue(state, GetSchemaValue(m_ptr, this->m_className.c_str(), field.c_str()).GetHashCode()); - case StringSymbolLarge: - return EValue(state, std::string(GetSchemaValue(m_ptr, this->m_className.c_str(), field.c_str()).String())); - case StringUtl: - return EValue(state, std::string(GetSchemaValue(m_ptr, this->m_className.c_str(), field.c_str()).Get())); - case String: - return EValue(state, std::string(GetSchemaValuePtr(m_ptr, this->m_className.c_str(), field.c_str()))); - case Class: - return EValue(state, SDKBaseClass(GetSchemaPtr(m_ptr, this->m_className.c_str(), field.c_str()), g_sdk->GetFieldClass(path))); - case SDKCHandle: - return EValue(state, SDKBaseClass((void*)(GetSchemaValue>(m_ptr, this->m_className.c_str(), field.c_str()).Get()), g_sdk->GetFieldClass(path))); - case EntityIndex: - return EValue(state, GetSchemaValue(m_ptr, this->m_className.c_str(), field.c_str()).Get()); - case SColor: - return EValue(state, GetSchemaValue(m_ptr, this->m_className.c_str(), field.c_str())); - case SQAngle: - return EValue(state, GetSchemaValue(m_ptr, this->m_className.c_str(), field.c_str())); - case SVector: - return EValue(state, GetSchemaValue(m_ptr, this->m_className.c_str(), field.c_str())); - case SVector2D: - return EValue(state, GetSchemaValue(m_ptr, this->m_className.c_str(), field.c_str())); - case SVector4D: - return EValue(state, GetSchemaValue(m_ptr, this->m_className.c_str(), field.c_str())); - case ClassPointer: - return EValue(state, SDKBaseClass(*(void**)GetSchemaPtr(m_ptr, this->m_className.c_str(), field.c_str()), g_sdk->GetFieldClass(path))); - case RawListEntityIndex: { - CEntityIndex* outValue = GetSchemaValuePtr(m_ptr, this->m_className.c_str(), field.c_str()); - std::vector ret; - for (uint32_t i = 0; i < g_sdk->GetFieldSize(path); i++) - ret.push_back(outValue[i].Get()); - - return EValue(state, ret); - } - case StringSymbolLargeArray: { - CUtlSymbolLarge* outValue = GetSchemaValuePtr(m_ptr, this->m_className.c_str(), field.c_str()); - std::vector ret; - for (uint32_t i = 0; i < g_sdk->GetFieldSize(path); i++) - ret.push_back(outValue[i].String()); - - return EValue(state, ret); - } - case StringTokenArray: { - CUtlStringToken* outValue = GetSchemaValuePtr(m_ptr, this->m_className.c_str(), field.c_str()); - std::vector ret; - for (uint32_t i = 0; i < g_sdk->GetFieldSize(path); i++) - ret.push_back(outValue[i].GetHashCode()); - - return EValue(state, ret); - } - case StringUtlArray: { - CUtlString* outValue = GetSchemaValuePtr(m_ptr, this->m_className.c_str(), field.c_str()); - std::vector ret; - for (uint32_t i = 0; i < g_sdk->GetFieldSize(path); i++) - ret.push_back(outValue[i].Get()); - - return EValue(state, ret); - } - case Int8Array: { - int8_t* outValue = GetSchemaValuePtr(m_ptr, this->m_className.c_str(), field.c_str()); - std::vector ret; - for (uint32_t i = 0; i < g_sdk->GetFieldSize(path); i++) - ret.push_back(outValue[i]); - - return EValue(state, ret); - } - case Int16Array: { - int16_t* outValue = GetSchemaValuePtr(m_ptr, this->m_className.c_str(), field.c_str()); - std::vector ret; - for (uint32_t i = 0; i < g_sdk->GetFieldSize(path); i++) - ret.push_back(outValue[i]); - - return EValue(state, ret); - } - case Int32Array: { - int32_t* outValue = GetSchemaValuePtr(m_ptr, this->m_className.c_str(), field.c_str()); - std::vector ret; - for (uint32_t i = 0; i < g_sdk->GetFieldSize(path); i++) - ret.push_back(outValue[i]); - - return EValue(state, ret); - } - case Int64Array: { - int64_t* outValue = GetSchemaValuePtr(m_ptr, this->m_className.c_str(), field.c_str()); - std::vector ret; - for (uint32_t i = 0; i < g_sdk->GetFieldSize(path); i++) - ret.push_back(outValue[i]); - - return EValue(state, ret); - } - case UInt8Array: { - uint8_t* outValue = GetSchemaValuePtr(m_ptr, this->m_className.c_str(), field.c_str()); - std::vector ret; - for (uint32_t i = 0; i < g_sdk->GetFieldSize(path); i++) - ret.push_back(outValue[i]); - - return EValue(state, ret); - } - case UInt16Array: { - uint16_t* outValue = GetSchemaValuePtr(m_ptr, this->m_className.c_str(), field.c_str()); - std::vector ret; - for (uint32_t i = 0; i < g_sdk->GetFieldSize(path); i++) - ret.push_back(outValue[i]); - - return EValue(state, ret); - } - case UInt32Array: { - uint32_t* outValue = GetSchemaValuePtr(m_ptr, this->m_className.c_str(), field.c_str()); - std::vector ret; - for (uint32_t i = 0; i < g_sdk->GetFieldSize(path); i++) - ret.push_back(outValue[i]); - - return EValue(state, ret); - } - case UInt64Array: { - uint64_t* outValue = GetSchemaValuePtr(m_ptr, this->m_className.c_str(), field.c_str()); - std::vector ret; - for (uint32_t i = 0; i < g_sdk->GetFieldSize(path); i++) - ret.push_back(outValue[i]); - - return EValue(state, ret); - } - case FloatArray: { - float* outValue = GetSchemaValuePtr(m_ptr, this->m_className.c_str(), field.c_str()); - std::vector ret; - for (uint32_t i = 0; i < g_sdk->GetFieldSize(path); i++) - ret.push_back(outValue[i]); - - return EValue(state, ret); - } - case DoubleArray: { - double* outValue = GetSchemaValuePtr(m_ptr, this->m_className.c_str(), field.c_str()); - std::vector ret; - for (uint32_t i = 0; i < g_sdk->GetFieldSize(path); i++) - ret.push_back(outValue[i]); - - return EValue(state, ret); - } - case BoolArray: { - bool* outValue = GetSchemaValuePtr(m_ptr, this->m_className.c_str(), field.c_str()); - std::vector ret; - for (uint32_t i = 0; i < g_sdk->GetFieldSize(path); i++) - ret.push_back(outValue[i]); - - return EValue(state, ret); - } - case SColorArray: { - Color* outValue = GetSchemaValuePtr(m_ptr, this->m_className.c_str(), field.c_str()); - std::vector ret; - for (uint32_t i = 0; i < g_sdk->GetFieldSize(path); i++) - ret.push_back(outValue[i]); - - return EValue(state, ret); - } - case SQAngleArray: { - QAngle* outValue = GetSchemaValuePtr(m_ptr, this->m_className.c_str(), field.c_str()); - std::vector ret; - for (uint32_t i = 0; i < g_sdk->GetFieldSize(path); i++) - ret.push_back(outValue[i]); - - return EValue(state, ret); - } - case SVectorArray: { - Vector* outValue = GetSchemaValuePtr(m_ptr, this->m_className.c_str(), field.c_str()); - std::vector ret; - for (uint32_t i = 0; i < g_sdk->GetFieldSize(path); i++) - ret.push_back(outValue[i]); - - return EValue(state, ret); - } - case SVector2DArray: { - Vector2D* outValue = GetSchemaValuePtr(m_ptr, this->m_className.c_str(), field.c_str()); - std::vector ret; - for (uint32_t i = 0; i < g_sdk->GetFieldSize(path); i++) - ret.push_back(outValue[i]); - - return EValue(state, ret); - } - case SVector4DArray: { - Vector4D* outValue = GetSchemaValuePtr(m_ptr, this->m_className.c_str(), field.c_str()); - std::vector ret; - for (uint32_t i = 0; i < g_sdk->GetFieldSize(path); i++) - ret.push_back(outValue[i]); - - return EValue(state, ret); - } - case ClassArray: { - void** outValue = GetSchemaValuePtr(m_ptr, this->m_className.c_str(), field.c_str()); - std::vector ret; - for (uint32_t i = 0; i < g_sdk->GetFieldSize(path); i++) - ret.push_back(SDKBaseClass(outValue[i], g_sdk->GetFieldClass(path))); - - return EValue(state, ret); - } - case CHandleArray: { - CHandle* outValue = GetSchemaValuePtr>(m_ptr, this->m_className.c_str(), field.c_str()); - std::vector ret; - for (uint32_t i = 0; i < g_sdk->GetFieldSize(path); i++) - ret.push_back(SDKBaseClass((void*)outValue[i].Get(), g_sdk->GetFieldClass(path))); - - return EValue(state, ret); - } - case CHandleCUtlVector: { - CUtlVector>* vec = GetSchemaValuePtr>>(m_ptr, this->m_className.c_str(), field.c_str()); - std::vector ret; - for (int i = 0; i < vec->Count(); i++) - ret.push_back(SDKBaseClass((void*)(vec->Element(i).Get()), g_sdk->GetFieldClass(path))); - - return EValue(state, ret); - } - case StringSymbolLargeCUtlVector: { - CUtlVector* outValue = GetSchemaValuePtr>(m_ptr, this->m_className.c_str(), field.c_str()); - std::vector ret; - for (int i = 0; i < outValue->Count(); i++) - ret.push_back(outValue->Element(i).String()); - - return EValue(state, ret); - } - case StringTokenCUtlVector: { - CUtlVector* outValue = GetSchemaValuePtr>(m_ptr, this->m_className.c_str(), field.c_str()); - std::vector ret; - for (int i = 0; i < outValue->Count(); i++) - ret.push_back(outValue->Element(i).GetHashCode()); - - return EValue(state, ret); - } - case StringUtlCUtlVector: { - CUtlVector* outValue = GetSchemaValuePtr>(m_ptr, this->m_className.c_str(), field.c_str()); - std::vector ret; - for (int i = 0; i < outValue->Count(); i++) - ret.push_back(outValue->Element(i).Get()); - - return EValue(state, ret); - } - case Int8CUtlVector: { - CUtlVector* vec = GetSchemaValuePtr>(m_ptr, this->m_className.c_str(), field.c_str()); - std::vector ret; - for (int i = 0; i < vec->Count(); i++) - ret.push_back(vec->Element(i)); - - return EValue(state, ret); - } - case Int16CUtlVector: { - CUtlVector* vec = GetSchemaValuePtr>(m_ptr, this->m_className.c_str(), field.c_str()); - std::vector ret; - for (int i = 0; i < vec->Count(); i++) - ret.push_back(vec->Element(i)); - - return EValue(state, ret); - } - case Int32CUtlVector: { - CUtlVector* vec = GetSchemaValuePtr>(m_ptr, this->m_className.c_str(), field.c_str()); - std::vector ret; - for (int i = 0; i < vec->Count(); i++) - ret.push_back(vec->Element(i)); - - return EValue(state, ret); - } - case Int64CUtlVector: { - CUtlVector* vec = GetSchemaValuePtr>(m_ptr, this->m_className.c_str(), field.c_str()); - std::vector ret; - for (int i = 0; i < vec->Count(); i++) - ret.push_back(vec->Element(i)); - - return EValue(state, ret); - } - case UInt8CUtlVector: { - CUtlVector* vec = GetSchemaValuePtr>(m_ptr, this->m_className.c_str(), field.c_str()); - std::vector ret; - for (int i = 0; i < vec->Count(); i++) - ret.push_back(vec->Element(i)); - - return EValue(state, ret); - } - case UInt16CUtlVector: { - CUtlVector* vec = GetSchemaValuePtr>(m_ptr, this->m_className.c_str(), field.c_str()); - std::vector ret; - for (int i = 0; i < vec->Count(); i++) - ret.push_back(vec->Element(i)); - - return EValue(state, ret); - } - case UInt32CUtlVector: { - CUtlVector* vec = GetSchemaValuePtr>(m_ptr, this->m_className.c_str(), field.c_str()); - std::vector ret; - for (int i = 0; i < vec->Count(); i++) - ret.push_back(vec->Element(i)); - - return EValue(state, ret); - } - case UInt64CUtlVector: { - CUtlVector* vec = GetSchemaValuePtr>(m_ptr, this->m_className.c_str(), field.c_str()); - std::vector ret; - for (int i = 0; i < vec->Count(); i++) - ret.push_back(vec->Element(i)); - - return EValue(state, ret); - } - case FloatCUtlVector: { - CUtlVector* vec = GetSchemaValuePtr>(m_ptr, this->m_className.c_str(), field.c_str()); - std::vector ret; - for (int i = 0; i < vec->Count(); i++) - ret.push_back(vec->Element(i)); - - return EValue(state, ret); - } - case DoubleCUtlVector: { - CUtlVector* vec = GetSchemaValuePtr>(m_ptr, this->m_className.c_str(), field.c_str()); - std::vector ret; - for (int i = 0; i < vec->Count(); i++) - ret.push_back(vec->Element(i)); - - return EValue(state, ret); - } - case SColorCUtlVector: { - CUtlVector* vec = GetSchemaValuePtr>(m_ptr, this->m_className.c_str(), field.c_str()); - std::vector ret; - for (int i = 0; i < vec->Count(); i++) - ret.push_back(vec->Element(i)); - - return EValue(state, ret); - } - case SQAngleCUtlVector: { - CUtlVector* vec = GetSchemaValuePtr>(m_ptr, this->m_className.c_str(), field.c_str()); - std::vector ret; - for (int i = 0; i < vec->Count(); i++) - ret.push_back(vec->Element(i)); - - return EValue(state, ret); - } - case SVectorCUtlVector: { - CUtlVector* vec = GetSchemaValuePtr>(m_ptr, this->m_className.c_str(), field.c_str()); - std::vector ret; - for (int i = 0; i < vec->Count(); i++) - ret.push_back(vec->Element(i)); - - return EValue(state, ret); - } - case SVector2DCUtlVector: { - CUtlVector* vec = GetSchemaValuePtr>(m_ptr, this->m_className.c_str(), field.c_str()); - std::vector ret; - for (int i = 0; i < vec->Count(); i++) - ret.push_back(vec->Element(i)); - - return EValue(state, ret); - } - case SVector4DCUtlVector: { - CUtlVector* vec = GetSchemaValuePtr>(m_ptr, this->m_className.c_str(), field.c_str()); - std::vector ret; - for (int i = 0; i < vec->Count(); i++) - ret.push_back(vec->Element(i)); - - return EValue(state, ret); - } - case BoolCUtlVector: { - CUtlVector* vec = GetSchemaValuePtr>(m_ptr, this->m_className.c_str(), field.c_str()); - std::vector ret; - for (int i = 0; i < vec->Count(); i++) - ret.push_back(vec->Element(i)); - - return EValue(state, ret); - } - } - - return EValue(state, fieldName); -} - -void SDKBaseClass::UpdateSDK(std::string fieldName, EValue value, EContext* state) -{ - if (followCS2Guidelines && BlockedCS2GuidelinesFields.find(fieldName) != BlockedCS2GuidelinesFields.end()) - { - PRINTF("Getting or setting %s::%s is not permitted due to CS2 Server Guidelines violation.\nTo get or set this value, switch to false the \"core.FollowCS2ServerGuidelines\" field.\nNote: Using non-compliant field values can result in a GSLT ban.\nNote: We are not providing any kind of support for people which are using these fields.\n", this->m_className.c_str(), fieldName.c_str()); - return; - } - - uint64 path = (this->classOffset | hash_32_fnv1a_const(fieldName.c_str())); - if (!g_sdk->ExistsField(path)) return; - - std::string field = g_sdk->GetFieldName(path); - - switch (g_sdk->GetFieldType(path)) - { - case Bool: - return SetSchemaValue(m_ptr, this->m_className.c_str(), field.c_str(), value.cast()); - case Int8: - return SetSchemaValue(m_ptr, this->m_className.c_str(), field.c_str(), value.cast()); - case Int16: - return SetSchemaValue(m_ptr, this->m_className.c_str(), field.c_str(), value.cast()); - case Int32: - return SetSchemaValue(m_ptr, this->m_className.c_str(), field.c_str(), value.cast()); - case Int64: - return SetSchemaValue(m_ptr, this->m_className.c_str(), field.c_str(), value.cast()); - case UInt8: - return SetSchemaValue(m_ptr, this->m_className.c_str(), field.c_str(), value.cast()); - case UInt16: - return SetSchemaValue(m_ptr, this->m_className.c_str(), field.c_str(), value.cast()); - case UInt32: - return SetSchemaValue(m_ptr, this->m_className.c_str(), field.c_str(), value.cast()); - case UInt64: - return SetSchemaValue(m_ptr, this->m_className.c_str(), field.c_str(), value.cast()); - case Float: - return SetSchemaValue(m_ptr, this->m_className.c_str(), field.c_str(), value.cast()); - case Double: - return SetSchemaValue(m_ptr, this->m_className.c_str(), field.c_str(), value.cast()); - case StringToken: - return SetSchemaValue(m_ptr, this->m_className.c_str(), field.c_str(), CUtlStringToken(value.cast())); - case StringSymbolLarge: - return SetSchemaValue(m_ptr, this->m_className.c_str(), field.c_str(), CUtlSymbolLarge(strdup(value.cast().c_str()))); - case StringUtl: - return SetSchemaValue(m_ptr, this->m_className.c_str(), field.c_str(), CUtlString(strdup(value.cast().c_str()))); - case String: - return WriteSchemaPtrValue(m_ptr, this->m_className.c_str(), field.c_str(), reinterpret_cast(const_cast(value.cast().c_str())), g_sdk->GetFieldSize(path)); - case EntityIndex: - return SetSchemaValue(m_ptr, this->m_className.c_str(), field.c_str(), CEntityIndex(value.cast())); - case SColor: - return SetSchemaValue(m_ptr, this->m_className.c_str(), field.c_str(), value.cast()); - case SQAngle: - return SetSchemaValue(m_ptr, this->m_className.c_str(), field.c_str(), value.cast()); - case SVector: - return SetSchemaValue(m_ptr, this->m_className.c_str(), field.c_str(), value.cast()); - case SVector2D: - return SetSchemaValue(m_ptr, this->m_className.c_str(), field.c_str(), value.cast()); - case SVector4D: - return SetSchemaValue(m_ptr, this->m_className.c_str(), field.c_str(), value.cast()); - case RawListEntityIndex: { - auto val = GetSchemaValuePtr(m_ptr, this->m_className.c_str(), field.c_str()); - auto ret = value.cast>(); - for (uint32_t i = 0; i < g_sdk->GetFieldSize(path); i++) - val[i] = CEntityIndex(ret[i]); - - SetStateChanged((uintptr_t)m_ptr, this->m_className.c_str(), field.c_str(), 0); - return; - } - case StringSymbolLargeArray: { - auto val = GetSchemaValuePtr(m_ptr, this->m_className.c_str(), field.c_str()); - auto ret = value.cast>(); - for (uint32_t i = 0; i < g_sdk->GetFieldSize(path); i++) { - val[i] = CUtlSymbolLarge(ret[i].c_str()); - } - - SetStateChanged((uintptr_t)m_ptr, this->m_className.c_str(), field.c_str(), 0); - return; - } - case StringTokenArray: { - auto val = GetSchemaValuePtr(m_ptr, this->m_className.c_str(), field.c_str()); - auto ret = value.cast>(); - for (uint32_t i = 0; i < g_sdk->GetFieldSize(path); i++) - val[i] = CUtlStringToken(ret[i]); - - SetStateChanged((uintptr_t)m_ptr, this->m_className.c_str(), field.c_str(), 0); - return; - } - case StringUtlArray: { - auto val = GetSchemaValuePtr(m_ptr, this->m_className.c_str(), field.c_str()); - auto ret = value.cast>(); - for (uint32_t i = 0; i < g_sdk->GetFieldSize(path); i++) - val[i] = CUtlString(ret[i].c_str()); - - SetStateChanged((uintptr_t)m_ptr, this->m_className.c_str(), field.c_str(), 0); - return; - } - case Int8Array: { - auto outValue = GetSchemaValuePtr(m_ptr, this->m_className.c_str(), field.c_str()); - auto ret = value.cast>(); - for (uint32_t i = 0; i < g_sdk->GetFieldSize(path); i++) - outValue[i] = ret[i]; - - SetStateChanged((uintptr_t)m_ptr, this->m_className.c_str(), field.c_str(), 0); - return; - } - case Int16Array: { - auto outValue = GetSchemaValuePtr(m_ptr, this->m_className.c_str(), field.c_str()); - auto ret = value.cast>(); - for (uint32_t i = 0; i < g_sdk->GetFieldSize(path); i++) - outValue[i] = ret[i]; - - SetStateChanged((uintptr_t)m_ptr, this->m_className.c_str(), field.c_str(), 0); - return; - } - case Int32Array: { - auto outValue = GetSchemaValuePtr(m_ptr, this->m_className.c_str(), field.c_str()); - auto ret = value.cast>(); - for (uint32_t i = 0; i < g_sdk->GetFieldSize(path); i++) - outValue[i] = ret[i]; - - SetStateChanged((uintptr_t)m_ptr, this->m_className.c_str(), field.c_str(), 0); - return; - } - case Int64Array: { - auto outValue = GetSchemaValuePtr(m_ptr, this->m_className.c_str(), field.c_str()); - auto ret = value.cast>(); - for (uint32_t i = 0; i < g_sdk->GetFieldSize(path); i++) - outValue[i] = ret[i]; - - SetStateChanged((uintptr_t)m_ptr, this->m_className.c_str(), field.c_str(), 0); - return; - } - case UInt8Array: { - auto outValue = GetSchemaValuePtr(m_ptr, this->m_className.c_str(), field.c_str()); - auto ret = value.cast>(); - for (uint32_t i = 0; i < g_sdk->GetFieldSize(path); i++) - outValue[i] = ret[i]; - - SetStateChanged((uintptr_t)m_ptr, this->m_className.c_str(), field.c_str(), 0); - return; - } - case UInt16Array: { - auto outValue = GetSchemaValuePtr(m_ptr, this->m_className.c_str(), field.c_str()); - auto ret = value.cast>(); - for (uint32_t i = 0; i < g_sdk->GetFieldSize(path); i++) - outValue[i] = ret[i]; - - SetStateChanged((uintptr_t)m_ptr, this->m_className.c_str(), field.c_str(), 0); - return; - } - case UInt32Array: { - auto outValue = GetSchemaValuePtr(m_ptr, this->m_className.c_str(), field.c_str()); - auto ret = value.cast>(); - for (uint32_t i = 0; i < g_sdk->GetFieldSize(path); i++) - outValue[i] = ret[i]; - - SetStateChanged((uintptr_t)m_ptr, this->m_className.c_str(), field.c_str(), 0); - return; - } - case UInt64Array: { - auto outValue = GetSchemaValuePtr(m_ptr, this->m_className.c_str(), field.c_str()); - auto ret = value.cast>(); - for (uint32_t i = 0; i < g_sdk->GetFieldSize(path); i++) - outValue[i] = ret[i]; - - SetStateChanged((uintptr_t)m_ptr, this->m_className.c_str(), field.c_str(), 0); - return; - } - case FloatArray: { - auto outValue = GetSchemaValuePtr(m_ptr, this->m_className.c_str(), field.c_str()); - auto ret = value.cast>(); - for (uint32_t i = 0; i < g_sdk->GetFieldSize(path); i++) - outValue[i] = ret[i]; - - SetStateChanged((uintptr_t)m_ptr, this->m_className.c_str(), field.c_str(), 0); - return; - } - case DoubleArray: { - auto outValue = GetSchemaValuePtr(m_ptr, this->m_className.c_str(), field.c_str()); - auto ret = value.cast>(); - for (uint32_t i = 0; i < g_sdk->GetFieldSize(path); i++) - outValue[i] = ret[i]; - - SetStateChanged((uintptr_t)m_ptr, this->m_className.c_str(), field.c_str(), 0); - return; - } - case SDKCHandle: { - auto outVal = GetSchemaValuePtr>(m_ptr, this->m_className.c_str(), field.c_str()); - outVal->Set((CEntityInstance*)(value.cast().GetPtr())); - - SetStateChanged((uintptr_t)m_ptr, this->m_className.c_str(), field.c_str(), 0); - return; - } - case CHandleArray: { - auto outValue = GetSchemaValuePtr>(m_ptr, this->m_className.c_str(), field.c_str()); - auto ret = value.cast>(); - for (uint32_t i = 0; i < g_sdk->GetFieldSize(path); i++) - outValue[i].Set((CEntityInstance*)(ret[i].GetPtr())); - - SetStateChanged((uintptr_t)m_ptr, this->m_className.c_str(), field.c_str(), 0); - return; - } - case CHandleCUtlVector: { - auto ret = value.cast>(); - - auto m_key = sch::GetOffset(this->m_className.c_str(), field.c_str()); - - SetStateChanged((uintptr_t)m_ptr, this->m_className, field, 0); - - CUtlVector>* vec = reinterpret_cast> *>((uintptr_t)(m_ptr)+m_key); - FOR_EACH_VEC(*vec, i) { - vec->Element(i).Set((CEntityInstance*)(ret[i].GetPtr())); - } - - SetStateChanged((uintptr_t)m_ptr, this->m_className, field, 0); - - return; - } - case BoolArray: { - auto outValue = GetSchemaValuePtr(m_ptr, this->m_className.c_str(), field.c_str()); - auto ret = value.cast>(); - for (uint32_t i = 0; i < g_sdk->GetFieldSize(path); i++) - outValue[i] = ret[i]; - - SetStateChanged((uintptr_t)m_ptr, this->m_className.c_str(), field.c_str(), 0); - return; - } - case SColorArray: { - auto outValue = GetSchemaValuePtr(m_ptr, this->m_className.c_str(), field.c_str()); - auto ret = value.cast>(); - for (uint32_t i = 0; i < g_sdk->GetFieldSize(path); i++) - outValue[i] = ret[i]; - - SetStateChanged((uintptr_t)m_ptr, this->m_className.c_str(), field.c_str(), 0); - return; - } - case SQAngleArray: { - auto outValue = GetSchemaValuePtr(m_ptr, this->m_className.c_str(), field.c_str()); - auto ret = value.cast>(); - for (uint32_t i = 0; i < g_sdk->GetFieldSize(path); i++) - outValue[i] = ret[i]; - - SetStateChanged((uintptr_t)m_ptr, this->m_className.c_str(), field.c_str(), 0); - return; - } - case SVectorArray: { - auto outValue = GetSchemaValuePtr(m_ptr, this->m_className.c_str(), field.c_str()); - auto ret = value.cast>(); - for (uint32_t i = 0; i < g_sdk->GetFieldSize(path); i++) - outValue[i] = ret[i]; - - SetStateChanged((uintptr_t)m_ptr, this->m_className.c_str(), field.c_str(), 0); - return; - } - case SVector2DArray: { - auto outValue = GetSchemaValuePtr(m_ptr, this->m_className.c_str(), field.c_str()); - auto ret = value.cast>(); - for (uint32_t i = 0; i < g_sdk->GetFieldSize(path); i++) - outValue[i] = ret[i]; - - SetStateChanged((uintptr_t)m_ptr, this->m_className.c_str(), field.c_str(), 0); - return; - } - case SVector4DArray: { - auto outValue = GetSchemaValuePtr(m_ptr, this->m_className.c_str(), field.c_str()); - auto ret = value.cast>(); - for (uint32_t i = 0; i < g_sdk->GetFieldSize(path); i++) - outValue[i] = ret[i]; - - SetStateChanged((uintptr_t)m_ptr, this->m_className.c_str(), field.c_str(), 0); - return; - } - case StringSymbolLargeCUtlVector: { - std::vector newValues; - auto val = value.cast>(); - for (auto elem : val) - newValues.push_back(CUtlSymbolLarge(elem.c_str())); - - return SetSchemaValueCUtlVector(m_ptr, this->m_className.c_str(), field.c_str(), newValues); - } - case StringTokenCUtlVector: { - std::vector newValues; - auto val = value.cast>(); - for (auto elem : val) - newValues.push_back(CUtlStringToken(elem)); - - return SetSchemaValueCUtlVector(m_ptr, this->m_className.c_str(), field.c_str(), newValues); - } - case StringUtlCUtlVector: { - std::vector newValues; - auto val = value.cast>(); - for (auto elem : val) - newValues.push_back(CUtlString(elem.c_str())); - - return SetSchemaValueCUtlVector(m_ptr, this->m_className.c_str(), field.c_str(), newValues); - } - case Int8CUtlVector: - return SetSchemaValueCUtlVector(m_ptr, this->m_className.c_str(), field.c_str(), value.cast>()); - case Int16CUtlVector: - return SetSchemaValueCUtlVector(m_ptr, this->m_className.c_str(), field.c_str(), value.cast>()); - case Int32CUtlVector: - return SetSchemaValueCUtlVector(m_ptr, this->m_className.c_str(), field.c_str(), value.cast>()); - case Int64CUtlVector: - return SetSchemaValueCUtlVector(m_ptr, this->m_className.c_str(), field.c_str(), value.cast>()); - case UInt8CUtlVector: - return SetSchemaValueCUtlVector(m_ptr, this->m_className.c_str(), field.c_str(), value.cast>()); - case UInt16CUtlVector: - return SetSchemaValueCUtlVector(m_ptr, this->m_className.c_str(), field.c_str(), value.cast>()); - case UInt32CUtlVector: - return SetSchemaValueCUtlVector(m_ptr, this->m_className.c_str(), field.c_str(), value.cast>()); - case UInt64CUtlVector: - return SetSchemaValueCUtlVector(m_ptr, this->m_className.c_str(), field.c_str(), value.cast>()); - case FloatCUtlVector: - return SetSchemaValueCUtlVector(m_ptr, this->m_className.c_str(), field.c_str(), value.cast>()); - case DoubleCUtlVector: - return SetSchemaValueCUtlVector(m_ptr, this->m_className.c_str(), field.c_str(), value.cast>()); - case SColorCUtlVector: - return SetSchemaValueCUtlVector(m_ptr, this->m_className.c_str(), field.c_str(), value.cast>()); - case SQAngleCUtlVector: - return SetSchemaValueCUtlVector(m_ptr, this->m_className.c_str(), field.c_str(), value.cast>()); - case SVectorCUtlVector: - return SetSchemaValueCUtlVector(m_ptr, this->m_className.c_str(), field.c_str(), value.cast>()); - case SVector2DCUtlVector: - return SetSchemaValueCUtlVector(m_ptr, this->m_className.c_str(), field.c_str(), value.cast>()); - case SVector4DCUtlVector: - return SetSchemaValueCUtlVector(m_ptr, this->m_className.c_str(), field.c_str(), value.cast>()); - case BoolCUtlVector: - return SetSchemaValueCUtlVector(m_ptr, this->m_className.c_str(), field.c_str(), value.cast>()); - } -} - -SDKBaseType::SDKBaseType(std::string typeName) -{ - m_typeName = typeName; -} - -int64_t SDKBaseType::GetTypeValue(std::string key) -{ - auto types = g_sdk->GetSDKTypes(); - if (types.find(m_typeName) == types.end()) return 0; - if (types[m_typeName].find(key) == types[m_typeName].end()) return 0; - - return types[m_typeName][key]; -} \ No newline at end of file diff --git a/src/plugins/core/scripting/server/commands.cpp b/src/plugins/core/scripting/server/commands.cpp deleted file mode 100644 index 708328a9c..000000000 --- a/src/plugins/core/scripting/server/commands.cpp +++ /dev/null @@ -1,81 +0,0 @@ -#include "../../scripting.h" -#include "../../../../server/commands/CommandsManager.h" - -PluginCommands::PluginCommands(std::string m_plugin_name) -{ - this->plugin_name = m_plugin_name; -} - -void PluginCommands::RegisterCmd(std::string commandName, void* callback) -{ - REGISTER_CALLSTACK(this->plugin_name, string_format("PluginCommands::RegisterCommand(commandName=\"%s\",callback=%p)", commandName.c_str(), (void*)callback)); - - if (g_commandsManager->FetchCommand(commandName)) - return; - - Command* command = new Command(this->plugin_name, callback, commandName); - g_commandsManager->RegisterCommand(this->plugin_name, commandName, command); -} - -void PluginCommands::UnregisterCommand(std::string commandName) -{ - REGISTER_CALLSTACK(this->plugin_name, string_format("PluginCommands::UnregisterCommand(commandName=\"%s\")", commandName.c_str())); - g_commandsManager->UnregisterCommand(commandName); -} - -void PluginCommands::RegisterAlias(std::string commandName, std::string aliasName) -{ - - REGISTER_CALLSTACK(this->plugin_name, string_format("PluginCommands::RegisterAlias(commandName=\"%s\",aliasName=\"%s\")", commandName.c_str(), aliasName.c_str())); - - Command* command = g_commandsManager->FetchCommand(commandName); - if (!command) - return; - - g_commandsManager->RegisterCommand(command->GetPluginName(), aliasName, command); -} - -void PluginCommands::RegisterRawAlias(std::string commandName, std::string aliasName) -{ - - REGISTER_CALLSTACK(this->plugin_name, string_format("PluginCommands::RegisterRawAlias(commandName=\"%s\",aliasName=\"%s\")", commandName.c_str(), aliasName.c_str())); - - Command* command = g_commandsManager->FetchCommand(commandName); - if (!command) - return; - - g_commandsManager->RegisterCommand(command->GetPluginName(), aliasName, command, true); -} - -void PluginCommands::UnregisterAlias(std::string aliasName) -{ - REGISTER_CALLSTACK(this->plugin_name, string_format("PluginCommands::RegisterRawAlias(aliasName=\"%s\")", aliasName.c_str())); - - UnregisterCommand(aliasName); -} - -void PluginCommands::RegisterCommand(std::string commandName, EValue callback) -{ - if (!callback.isFunction()) - return; - - auto v = new EValue(callback); - if (v->m_ref == callback.m_ref && callback.getContext()->GetKind() == ContextKinds::Lua) callback.MarkNoFree(); - RegisterCmd(commandName, v); -} - -std::vector PluginCommands::GetAllCommands() -{ - std::vector cmdsList; - - auto cmds = g_commandsManager->GetCommands(); - for (auto it = cmds.begin(); it != cmds.end(); ++it) - cmdsList.push_back(it->first); - - return cmdsList; -} - -std::vector PluginCommands::GetCommands() -{ - return g_commandsManager->FetchCommandsByPlugin(this->plugin_name); -} \ No newline at end of file diff --git a/src/plugins/core/scripting/server/configuration.cpp b/src/plugins/core/scripting/server/configuration.cpp deleted file mode 100644 index 169029127..000000000 --- a/src/plugins/core/scripting/server/configuration.cpp +++ /dev/null @@ -1,138 +0,0 @@ -#include "../../scripting.h" - -#include -#include -#include -#include - -PluginConfiguration::PluginConfiguration(std::string m_plugin_name) -{ - this->plugin_name = m_plugin_name; -} - -bool PluginConfiguration::Exists(std::string key) -{ - REGISTER_CALLSTACK(this->plugin_name, string_format("PluginConfiguration::Exists(key=\"%s\")", key.c_str())); - - std::map config = g_Config->FetchPluginConfiguration(); - return (config.find(key) != config.end()); -} - -void PluginConfiguration::Reload(std::string key) -{ - REGISTER_CALLSTACK(this->plugin_name, string_format("PluginConfiguration::Reload(key=\"%s\")", key.c_str())); - - g_Config->LoadPluginConfig(key); -} - -uint64_t PluginConfiguration::FetchArraySize(std::string key) -{ - REGISTER_CALLSTACK(this->plugin_name, string_format("PluginConfiguration::FetchArraySize(key=\"%s\")", key.c_str())); - - std::map arraySizes = g_Config->FetchConfigArraySizes(); - - if (arraySizes.find(key) == arraySizes.end()) - return 0; - - return arraySizes[key]; -} - -std::any PluginConfiguration::Fetch(std::string key) -{ - REGISTER_CALLSTACK(this->plugin_name, string_format("PluginConfiguration::Fetch(key=\"%s\")", key.c_str())); - - std::map config = g_Config->FetchPluginConfiguration(); - - return config[key]; -} - -void ParseAndFillConfiguration(rapidjson::Value& initDoc, rapidjson::Value& config, rapidjson::MemoryPoolAllocator& allocator, bool& wasEdited) -{ - for (auto it = initDoc.MemberBegin(); it != initDoc.MemberEnd(); ++it) - { - const char* key = it->name.GetString(); - if (!config.HasMember(key)) - { - config.AddMember(it->name, initDoc[key], allocator); - wasEdited = true; - } - else if (config[key].IsObject() && initDoc[key].IsObject()) - { - ParseAndFillConfiguration(initDoc[key], config[key], allocator, wasEdited); - } - } -} - -void PluginConfiguration::Create(std::string configurationKey, EValue table, EContext* L) -{ - REGISTER_CALLSTACK(this->plugin_name, string_format("PluginConfiguration::Create(configurationKey=\"%s\")", configurationKey.c_str())); - rapidjson::Document doc(rapidjson::kObjectType); - if (!table.isTable()) - throw std::runtime_error("2nd argument needs to be a table."); - - std::string jsonResult = ""; - - if(L->GetKind() == ContextKinds::Lua) { - EValue rapidJsonTable = EValue::getGlobal(L, "json"); - if (!rapidJsonTable["encode"].isFunction()) - return; - - EValue encodedResult(L); - try - { - encodedResult = rapidJsonTable["encode"](table); - } - catch (EException& e) - { - PLUGIN_PRINTF("Configuration - Create", "An error has occured: %s\n", e.what()); - return; - } - - if (encodedResult.isNull()) - return; - - jsonResult = encodedResult.cast(); - } else if(L->GetKind() == ContextKinds::JavaScript) { - jsonResult = EValue(L, JS_JSONStringify((JSContext*)L->GetState(), table.pushJS(), JS_NULL, JS_NULL)).cast(); - } - - doc.Parse(jsonResult.c_str()); - if (Files::ExistsPath("addons/swiftly/configs/plugins/" + configurationKey + ".json")) - { - std::string key = replace(configurationKey, "/", "."); - key = replace(configurationKey, "\\", "."); - - if (g_Config->HasKey(key)) - { - rapidjson::Document configFile; - configFile.Parse(Files::Read("addons/swiftly/configs/plugins/" + configurationKey + ".json").c_str()); - if (configFile.HasParseError()) - { - throw std::runtime_error(string_format("An error has occured while parsing \"addons/swiftly/configs/plugins/%s.json\".\nError: Error (offset %u): %s\n", configurationKey.c_str(), (unsigned)configFile.GetErrorOffset(), GetParseError_En(configFile.GetParseError()))); - } - - bool wasEdited = false; - - ParseAndFillConfiguration(doc, configFile, configFile.GetAllocator(), wasEdited); - - if (wasEdited) - { - WritePluginFile("addons/swiftly/configs/plugins/" + configurationKey + ".json", configFile); - g_Config->LoadPluginConfig(configurationKey); - } - } - else - g_Config->LoadPluginConfig(configurationKey); - } - else - { - rapidjson::StringBuffer buffer; - rapidjson::PrettyWriter writer(buffer); - - doc.Accept(writer); - std::string content = buffer.GetString(); - - Files::Write("addons/swiftly/configs/plugins/" + configurationKey + ".json", content, false); - g_Config->LoadPluginConfig(configurationKey); - } -} \ No newline at end of file diff --git a/src/plugins/core/scripting/server/menus.cpp b/src/plugins/core/scripting/server/menus.cpp deleted file mode 100644 index 51534284e..000000000 --- a/src/plugins/core/scripting/server/menus.cpp +++ /dev/null @@ -1,29 +0,0 @@ -#include "../../scripting.h" - -#include "../../../../server/menus/MenuManager.h" - -PluginMenus::PluginMenus(std::string m_plugin_name) -{ - this->plugin_name = m_plugin_name; -} - -void PluginMenus::Register(std::string custom_id, std::string title, std::string color, std::vector> options, std::optional okind) -{ - REGISTER_CALLSTACK(this->plugin_name, string_format("PluginMenus::Register(custom_id=\"%s\", title=\"%s\", color=\"%s\")", custom_id.c_str(), title.c_str(), color.c_str())); - - g_MenuManager->RegisterMenu(this->plugin_name, custom_id, title, color, options, false, okind.value_or(g_Config->FetchValue("core.menu.kind"))); -} - -void PluginMenus::RegisterTemporary(std::string custom_id, std::string title, std::string color, std::vector> options, std::optional okind) -{ - REGISTER_CALLSTACK(this->plugin_name, string_format("PluginMenus::RegisterTemporary(custom_id=\"%s\", title=\"%s\", color=\"%s\")", custom_id.c_str(), title.c_str(), color.c_str())); - - g_MenuManager->RegisterMenu(this->plugin_name, custom_id, title, color, options, true, okind.value_or(g_Config->FetchValue("core.menu.kind"))); -} - -void PluginMenus::Unregister(std::string id) -{ - REGISTER_CALLSTACK(this->plugin_name, string_format("PluginMenus::Unregister(id=\"%s\")", id.c_str())); - - g_MenuManager->UnregisterMenu(id); -} \ No newline at end of file diff --git a/src/plugins/core/scripting/server/translations.cpp b/src/plugins/core/scripting/server/translations.cpp deleted file mode 100644 index c42f7eeb9..000000000 --- a/src/plugins/core/scripting/server/translations.cpp +++ /dev/null @@ -1,7 +0,0 @@ -#include "../../scripting.h" -#include "../../../../server/translations/Translations.h" - -std::string scripting_FetchTranslation(std::string key, int playerid) -{ - return g_translations->FetchTranslation(key, playerid); -} \ No newline at end of file diff --git a/src/plugins/core/scripting/server/utils.cpp b/src/plugins/core/scripting/server/utils.cpp deleted file mode 100644 index 155acac27..000000000 --- a/src/plugins/core/scripting/server/utils.cpp +++ /dev/null @@ -1,110 +0,0 @@ -#include "../../scripting.h" -#include "../../../PluginManager.h" -#include "../../../../network/usermessages/usermessages.h" -#include "../../../../utils/utils.h" - -#include -#include - -std::list>> timeoutsArray; - -bool scripting_IsWindows() -{ - return WIN_LINUX(true, false); -} - -bool scripting_IsLinux() -{ - return WIN_LINUX(false, true); -} - -std::string scripting_GetOS() -{ - return WIN_LINUX("Windows", "Linux"); -} - -SDKBaseClass scripting_GetCCSGameRules() -{ - SDKBaseClass val(gameRules, "CCSGameRules"); - return val; -} - -std::string scripting_GetPluginPath(std::string plugin_name) -{ - Plugin* plugin = g_pluginManager->FetchPlugin(plugin_name); - if (!plugin) return ""; - - return string_format("%s/%s", g_pluginManager->GetPluginBasePath(plugin_name).c_str(), plugin->GetName().c_str()); -} - -PluginUserMessage scripting_GetUserMessage(std::string str) -{ - auto exploded = explode(str, "|"); - if (exploded.size() == 1) { - google::protobuf::Message* msg = (google::protobuf::Message*)(strtol(exploded[0].c_str(), nullptr, 16)); - return PluginUserMessage(msg); - } - else if (exploded.size() == 3) { - INetworkMessageInternal* msg = (INetworkMessageInternal*)(strtol(exploded[0].c_str(), nullptr, 16)); - CNetMessage* netmsg = (CNetMessage*)(strtol(exploded[1].c_str(), nullptr, 16)); - uint64* clients = (uint64*)(strtol(exploded[2].c_str(), nullptr, 16)); - return PluginUserMessage(msg, netmsg, clients); - } - else return PluginUserMessage(""); -} - -std::string scripting_CreateTextTable(std::vector> data) -{ - TextTable tbl('-', '|', '+'); - - for (auto vec : data) { - for (std::string str : vec) { - tbl.add(" " + str + " "); - } - - tbl.endOfRow(); - } - - std::stringstream outputTable; - outputTable << tbl; - return outputTable.str(); -} - -int scripting_GetPluginState(std::string plugin_name) -{ - if (!g_pluginManager->PluginExists(plugin_name)) return (int)PluginState_t::Stopped; - Plugin* plugin = g_pluginManager->FetchPlugin(plugin_name); - if (!plugin) return (int)PluginState_t::Stopped; - - return (int)plugin->GetPluginState(); -} - -void RegisterTimeout(int64_t delay, std::function cb) -{ - timeoutsArray.push_back({ GetTime() + delay, cb }); -} - -void ProcessTimeouts(uint64_t t) -{ - std::list>>::iterator> queueRemoveTimeouts; - - for (auto it = timeoutsArray.begin(); it != timeoutsArray.end(); ++it) { - if (it->first <= t) { - queueRemoveTimeouts.push_back(it); - it->second(); - } - } - - for (auto it = queueRemoveTimeouts.rbegin(); it != queueRemoveTimeouts.rend(); ++it) - timeoutsArray.erase(*it); -} - -uint64_t RegisterCallstack(std::string plugin_name, std::string stackmsg) -{ - return g_callStack->RegisterPluginCallstack(plugin_name, stackmsg); -} - -void UnregisterCallstack(std::string plugin_name, uint64_t stackid) -{ - g_callStack->UnregisterPluginCallstack(plugin_name, stackid); -} \ No newline at end of file diff --git a/src/plugins/core/scripting_schema.h b/src/plugins/core/scripting_schema.h deleted file mode 100644 index 2c1af839f..000000000 --- a/src/plugins/core/scripting_schema.h +++ /dev/null @@ -1,60 +0,0 @@ -#pragma once - -#include "../../common.h" -#include "../../entrypoint.h" -#include "../Plugin.h" -#include "../PluginManager.h" -#include "../../network/database/DatabaseManager.h" -#include "../../types/LogType.h" -#include "../../filesystem/logs/Logger.h" -#include "../../sdk/schema/schema.h" -#include "../../utils/plat.h" -#include "ehandle.h" - -////////////////////////////////////////////////////////////// -///////////////// Schema ////////////// -//////////////////////////////////////////////////////////// - -template -T GetSchemaValue(void* ptr, const char* className, const char* fieldName) -{ - auto m_key = sch::GetOffset(className, fieldName); - - return *reinterpret_cast>((uintptr_t)(ptr)+m_key); -} - -template -T* GetSchemaValuePtr(void* ptr, const char* className, const char* fieldName) -{ - auto m_key = sch::GetOffset(className, fieldName); - return reinterpret_cast>((uintptr_t)(ptr)+m_key); -} - -void* GetSchemaPtr(void* ptr, const char* className, const char* fieldName); - -void WriteSchemaPtrValue(void* ptr, const char* className, const char* fieldName, byte* value, int size); - -template -void SetSchemaValue(void* ptr, const char* className, const char* fieldName, T value) -{ - auto m_key = sch::GetOffset(className, fieldName); - - *reinterpret_cast>((uintptr_t)(ptr)+m_key) = value; - - if (gameRules != ptr) SetStateChanged((uintptr_t)ptr, className, fieldName, 0); -} - -template -void SetSchemaValueCUtlVector(void* ptr, const char* className, const char* fieldName, std::vector value) -{ - auto m_key = sch::GetOffset(className, fieldName); - - SetStateChanged((uintptr_t)ptr, className, fieldName, 0); - - CUtlVector* vec = reinterpret_cast *>((uintptr_t)(ptr)+m_key); - vec->Purge(); - for (auto elem : value) - vec->AddToTail(elem); - - SetStateChanged((uintptr_t)ptr, className, fieldName, 0); -} \ No newline at end of file diff --git a/src/plugins/loader/core.cpp b/src/plugins/loader/core.cpp deleted file mode 100644 index e92898e0f..000000000 --- a/src/plugins/loader/core.cpp +++ /dev/null @@ -1,132 +0,0 @@ -#include "core.h" - -#include "../../memory/encoders/json.h" -#include "../../utils/utils.h" - -std::string FetchPluginName(EContext* state); -std::map pluginNamesMap = {}; -std::map pluginNamesMap2 = {}; -std::vector loaderClasses; - -int customPrint(lua_State* state) -{ - std::string prefix = TerminalProcessColor(string_format("[Swiftly] %s[%s]{DEFAULT} ", GetTerminalStringColor(FetchPluginName(GetContextByState(state))).c_str(), ("plugin:" + FetchPluginName(GetContextByState(state))).c_str())); - - int n = lua_gettop(state); - - lua_getglobal(state, "tostring"); - - std::vector outputArr; - - for (int i = 1; i <= n; i++) - { - lua_pushvalue(state, -1); - lua_pushvalue(state, i); - lua_call(state, 1, 1); - - size_t l = 0; - const char* s = lua_tolstring(state, -1, &l); - if (s == nullptr) - { - outputArr.push_back("An error has occured while trying to call 'print'.\nError: 'tostring' must return a string to 'print'\n"); - break; - } - - if (i > 1) - outputArr.push_back("\t"); - - outputArr.push_back(TerminalProcessColor(s)); - lua_pop(state, 1); - } - std::vector processingNewLines = explode(implode(outputArr, ""), "\n"); - for (const std::string str : processingNewLines) - { - if (str.size() == 0) - continue; - - std::string final_string = TerminalProcessColor(string_format("%s%s{DEFAULT}{BGDEFAULT}\n", prefix.c_str(), str.c_str())); - META_CONPRINT(final_string.c_str()); - } - - return 0; -} - -JSValue customConsoleLog(JSContext* ctx, JSValueConst this_val, int argc, JSValueConst* argv) { - std::string prefix = TerminalProcessColor(string_format("[Swiftly] %s[%s]{DEFAULT} ", GetTerminalStringColor(FetchPluginName(GetContextByState(ctx))).c_str(), ("plugin:" + FetchPluginName(GetContextByState(ctx))).c_str())); - EContext* sctx = GetContextByState(ctx); - - std::vector outputArr; - - for (int i = 0; i < argc; i++) - { - std::string str = EValue::fromJSStack(sctx, argv[i]).tostring(); - - if (i > 0) - outputArr.push_back("\t"); - - outputArr.push_back(TerminalProcessColor(str)); - } - - std::vector processingNewLines = explode(implode(outputArr, ""), "\n"); - for (const std::string str : processingNewLines) - { - if (str.size() == 0) - continue; - - std::string final_string = TerminalProcessColor(string_format("%s%s{DEFAULT}{BGDEFAULT}\n", prefix.c_str(), str.c_str())); - META_CONPRINT(final_string.c_str()); - } - - return JS_UNDEFINED; -} - -std::string FetchPluginName(EContext* state) -{ - return pluginNamesMap2[state]; -} - -JSValue SerializeJSMsgpack(JSContext* ctx, JSValue this_arg, int argc, JSValue* argv) -{ - std::string str = encoders::msgpack::SerializeToString(EValue::fromJSStack(GetContextByState(ctx), argv[0]).cast>()); - return JS_NewUint8ArrayCopy(ctx, (uint8_t*)(str.data()), str.size()); -} - -JSValue DeserializeJSMsgpack(JSContext* ctx, JSValue this_arg, int argc, JSValue* argv) -{ - size_t size; - std::string str((const char*)JS_GetUint8Array(ctx, &size, argv[0])); - return Stack::pushJS(GetContextByState(ctx), encoders::json::SerializeArrayToString(encoders::msgpack::DeserializeFromString(str))); -} - -void SetupScriptingEnvironment(Plugin* plugin, EContext* state) -{ - if (pluginNamesMap.find(plugin->GetName()) == pluginNamesMap.end()) { - pluginNamesMap.insert({ plugin->GetName(), state }); - pluginNamesMap2.insert({ state, plugin->GetName() }); - } - else { - EContext* st = pluginNamesMap[plugin->GetName()]; - pluginNamesMap2.erase(st); - - pluginNamesMap2.insert({ state, plugin->GetName() }); - pluginNamesMap[plugin->GetName()] = state; - } - - GetGlobalNamespace(state) - .addLuaFunction("print", &customPrint) - .beginNamespace("console") - .addJSFunction("log", &customConsoleLog) - .endNamespace() - .addFunction("GetCurrentPluginName", FetchPluginName); - - if(state->GetKind() == ContextKinds::JavaScript) { - GetGlobalNamespace(state) - .beginNamespace("msgpack") - .addJSFunction("pack", SerializeJSMsgpack) - .addJSFunction("unpack", DeserializeJSMsgpack) - .endNamespace(); - } - - for(auto classLoader : loaderClasses) - classLoader->ExecuteLoad(plugin, state); -} \ No newline at end of file diff --git a/src/plugins/loader/core.h b/src/plugins/loader/core.h deleted file mode 100644 index f5d40f49a..000000000 --- a/src/plugins/loader/core.h +++ /dev/null @@ -1,28 +0,0 @@ -#pragma once - -#include "../Plugin.h" -#include "../core/scripting.h" -#include "../../entrypoint.h" -#include "../../types/EventResult.h" - -std::string FetchPluginName(EContext* state); -#define FetchPluginByState(state) g_pluginManager->FetchPlugin(FetchPluginName(state)) -#define LoadScriptingComponent(component_name, component_func) ClassLoader sc_##component_name(component_func); - -class ClassLoader; -extern std::vector loaderClasses; - -class ClassLoader -{ -private: - std::function m_loadFunction; -public: - ClassLoader(std::function loadFunction): m_loadFunction(loadFunction) { - loaderClasses.push_back(this); - } - - void ExecuteLoad(Plugin* plugin, EContext* state) - { - m_loadFunction(plugin, state); - } -}; \ No newline at end of file diff --git a/src/plugins/loader/scripting/engine/convars.cpp b/src/plugins/loader/scripting/engine/convars.cpp deleted file mode 100644 index 4a3aaf678..000000000 --- a/src/plugins/loader/scripting/engine/convars.cpp +++ /dev/null @@ -1,25 +0,0 @@ -#include "../../core.h" - -LoadScriptingComponent( - convars, - [](Plugin* plugin, EContext* state) - { - BeginClass("ConVars", state) - .addConstructor() - .addFunction("CreateFake", &PluginConvars::CreateFake) - .addFunction("DeleteFake", &PluginConvars::DeleteFake) - .addFunction("Get", &PluginConvars::GetConvarValue) - .addFunction("GetType", &PluginConvars::GetConvarType) - .addFunction("Set", &PluginConvars::SetConvar) - .addFunction("Exists", &PluginConvars::Exists) - .addFunction("ExistsFake", &PluginConvars::ExistsFake) - .addFunction("AddFlags", &PluginConvars::AddFlags) - .addFunction("RemoveFlags", &PluginConvars::RemoveFlags) - .addFunction("GetFlags", &PluginConvars::GetFlags) - .addFunction("HasFlags", &PluginConvars::HasFlags) - .endClass(); - - if(state->GetKind() == ContextKinds::Lua) state->RunCode("convar = ConVars(GetCurrentPluginName())"); - else if(state->GetKind() == ContextKinds::JavaScript) state->RunCode("globalThis.convar = ConVars(GetCurrentPluginName())"); - } -) \ No newline at end of file diff --git a/src/plugins/loader/scripting/engine/events.cpp b/src/plugins/loader/scripting/engine/events.cpp deleted file mode 100644 index 91a9db59c..000000000 --- a/src/plugins/loader/scripting/engine/events.cpp +++ /dev/null @@ -1,110 +0,0 @@ -#include "../../core.h" - -void AddGlobalEvents(EValue eventFunction, EContext* L) -{ - if (!eventFunction.isFunction()) - return; - - Plugin* plugin = FetchPluginByState(L); - if (!plugin) - return; - - plugin->RegisterEventHandler(new EValue(eventFunction)); -} - -void RegisterEventHandlerPlugin(std::string eventName, EContext* L) -{ - Plugin* plugin = FetchPluginByState(L); - if (!plugin) - return; - - plugin->RegisterEventHandling(eventName); -} - -void RemoveEventHandlerPlugin(std::string eventName, EContext* L) -{ - Plugin* plugin = FetchPluginByState(L); - if (!plugin) - return; - - plugin->UnregisterEventHandling(eventName); -} - -std::vector TriggerEventInternal(std::string eventName, EValue eventPayload, EContext* L) -{ - std::vector returnValues; - - PluginEvent event(FetchPluginName(L), nullptr, nullptr); - - std::string payload = ""; - size_t len; - - if (L->GetKind() == ContextKinds::JavaScript) payload = (const char*)JS_GetUint8Array((JSContext*)L->GetState(), &len, eventPayload.pushJS()); - else payload = eventPayload.cast(); - - returnValues.push_back((int)g_pluginManager->ExecuteEvent(FetchPluginName(L), eventName, payload, &event)); - returnValues.push_back(event); - - return returnValues; -} - -void LoadEvent(Plugin* plugin, EContext* state) -{ - GetGlobalNamespace(state) - .addFunction("AddGlobalEvents", AddGlobalEvents) - .addFunction("RegisterEventHandlerPlugin", RegisterEventHandlerPlugin) - .addFunction("RemoveEventHandlerPlugin", RemoveEventHandlerPlugin) - .addFunction("TriggerEventInternal", TriggerEventInternal); - - BeginClass(state->GetKind() == ContextKinds::JavaScript ? "PEvent" : "Event", state) - .addConstructor() - .addFunction("GetInvokingPlugin", &PluginEvent::GetInvokingPlugin) - .addFunction("IsGameEvent", &PluginEvent::IsGameEvent) - .addFunction("IsHook", &PluginEvent::IsHook) - .addFunction("SetBool", &PluginEvent::SetBool) - .addFunction("SetInt", &PluginEvent::SetInt) - .addFunction("SetUint64", &PluginEvent::SetUint64) - .addFunction("SetFloat", &PluginEvent::SetFloat) - .addFunction("SetString", &PluginEvent::SetString) - .addFunction("GetBool", &PluginEvent::GetBool) - .addFunction("GetInt", &PluginEvent::GetInt) - .addFunction("GetUint64", &PluginEvent::GetUint64) - .addFunction("GetFloat", &PluginEvent::GetFloat) - .addFunction("GetString", &PluginEvent::GetString) - .addFunction("SetReturn", &PluginEvent::SetReturn) - .addFunction("GetReturn", &PluginEvent::GetReturnValue) - .addFunction("FireEvent", &PluginEvent::FireEvent) - .addFunction("FireEventToClient", &PluginEvent::FireEventToClient) - - .addFunction("GetHookBool", &PluginEvent::GetHookBool) - .addFunction("GetHookInt", &PluginEvent::GetHookInt) - .addFunction("GetHookUint64", &PluginEvent::GetHookUint64) - .addFunction("GetHookFloat", &PluginEvent::GetHookFloat) - .addFunction("GetHookString", &PluginEvent::GetHookString) - .addFunction("GetHookPointer", &PluginEvent::GetHookPointer) - .addFunction("GetHookDouble", &PluginEvent::GetHookDouble) - .addFunction("GetHookUInt", &PluginEvent::GetHookUInt) - .addFunction("GetHookInt64", &PluginEvent::GetHookInt64) - .addFunction("SetHookBool", &PluginEvent::SetHookBool) - .addFunction("SetHookInt", &PluginEvent::SetHookInt) - .addFunction("SetHookUint64", &PluginEvent::SetHookUint64) - .addFunction("SetHookFloat", &PluginEvent::SetHookFloat) - .addFunction("SetHookString", &PluginEvent::SetHookString) - .addFunction("SetHookPointer", &PluginEvent::SetHookPointer) - .addFunction("SetHookDouble", &PluginEvent::SetHookDouble) - .addFunction("SetHookUInt", &PluginEvent::SetHookUInt) - .addFunction("SetHookInt64", &PluginEvent::SetHookInt64) - - .addFunction("SetHookReturn", &PluginEvent::SetHookReturn) - .addFunction("GetHookReturn", &PluginEvent::GetHookReturn) - - .addFunction("SetNoBroadcast", &PluginEvent::SetNoBroadcast) - .addFunction("GetNoBroadcast", &PluginEvent::GetNoBroadcast) - - .endClass(); -} - -LoadScriptingComponent( - events, - LoadEvent -) \ No newline at end of file diff --git a/src/plugins/loader/scripting/engine/server.cpp b/src/plugins/loader/scripting/engine/server.cpp deleted file mode 100644 index 274ae650a..000000000 --- a/src/plugins/loader/scripting/engine/server.cpp +++ /dev/null @@ -1,23 +0,0 @@ -#include "../../core.h" - -LoadScriptingComponent( - server, - [](Plugin* plugin, EContext* state) - { - BeginClass("Server", state) - .addConstructor() - .addFunction("GetMap", &PluginServer::GetMap) - .addFunction("IsMapValid", &PluginServer::IsMapValid) - .addFunction("ChangeMap", &PluginServer::ChangeMap) - .addFunction("GetMaxPlayers", &PluginServer::GetMaxPlayers) - .addFunction("TerminateRound", &PluginServer::TerminateRound) - .addFunction("Execute", &PluginServer::Execute) - .addFunction("GetCurrentTime", &PluginServer::GetCurrentTime) - .addFunction("GetTickCount", &PluginServer::GetTickCount) - .addFunction("GetIP", &PluginServer::GetIP) - .endClass(); - - if(state->GetKind() == ContextKinds::Lua) state->RunCode("server = Server(GetCurrentPluginName())"); - else if(state->GetKind() == ContextKinds::JavaScript) state->RunCode("globalThis.server = Server(GetCurrentPluginName())"); - } -) \ No newline at end of file diff --git a/src/plugins/loader/scripting/engine/vgui.cpp b/src/plugins/loader/scripting/engine/vgui.cpp deleted file mode 100644 index b057b38c1..000000000 --- a/src/plugins/loader/scripting/engine/vgui.cpp +++ /dev/null @@ -1,18 +0,0 @@ -#include "../../core.h" - -LoadScriptingComponent( - vgui, - [](Plugin* plugin, EContext* state) - { - BeginClass("VGUI", state) - .addConstructor() - .addFunction("ShowText", &PluginVGUI::ShowText) - .addFunction("RemoveText", &PluginVGUI::RemoveText) - .addFunction("SetTextMessage", &PluginVGUI::SetTextMessage) - .addFunction("SetTextPosition", &PluginVGUI::SetTextPosition) - .endClass(); - - if(state->GetKind() == ContextKinds::Lua) state->RunCode("vgui = VGUI(GetCurrentPluginName())"); - else if(state->GetKind() == ContextKinds::JavaScript) state->RunCode("globalThis.vgui = VGUI(GetCurrentPluginName())"); - } -) \ No newline at end of file diff --git a/src/plugins/loader/scripting/entities/entities.cpp b/src/plugins/loader/scripting/entities/entities.cpp deleted file mode 100644 index 03b60652e..000000000 --- a/src/plugins/loader/scripting/entities/entities.cpp +++ /dev/null @@ -1,11 +0,0 @@ -#include "../../core.h" - -LoadScriptingComponent( - entities, - [](Plugin* plugin, EContext* state) - { - GetGlobalNamespace(state) - .addFunction("FindEntitiesByClassname", UTIL_FindEntitiesByClassname) - .addFunction("CreateEntityByName", CreateEntityByName); - } -) \ No newline at end of file diff --git a/src/plugins/loader/scripting/entities/precacher.cpp b/src/plugins/loader/scripting/entities/precacher.cpp deleted file mode 100644 index 75621328f..000000000 --- a/src/plugins/loader/scripting/entities/precacher.cpp +++ /dev/null @@ -1,17 +0,0 @@ -#include "../../core.h" - -LoadScriptingComponent( - precacher, - [](Plugin* plugin, EContext* state) - { - BeginClass("Precacher", state) - .addConstructor() - .addFunction("PrecacheModel", &PluginPrecacher::PrecacheModel) - .addFunction("PrecacheSound", &PluginPrecacher::PrecacheSound) - .addFunction("PrecacheItem", &PluginPrecacher::PrecacheItem) - .endClass(); - - if(state->GetKind() == ContextKinds::Lua) state->RunCode("precacher = Precacher(GetCurrentPluginName())"); - else if(state->GetKind() == ContextKinds::JavaScript) state->RunCode("globalThis.precacher = Precacher(GetCurrentPluginName())"); - } -) \ No newline at end of file diff --git a/src/plugins/loader/scripting/entities/weapons.cpp b/src/plugins/loader/scripting/entities/weapons.cpp deleted file mode 100644 index c637529a9..000000000 --- a/src/plugins/loader/scripting/entities/weapons.cpp +++ /dev/null @@ -1,38 +0,0 @@ -#include "../../core.h" - -LoadScriptingComponent( - weaponmanager, - [](Plugin* plugin, EContext* state) - { - BeginClass("WeaponManager", state) - .addFunction("GiveWeapon", &PluginWeaponManager::GiveWeapon) - .addFunction("RemoveWeapons", &PluginWeaponManager::RemoveWeapons) - .addFunction("DropWeapons", &PluginWeaponManager::DropWeapons) - .addFunction("GetWeapons", &PluginWeaponManager::GetWeapons) - .addFunction("RemoveByClassname", &PluginWeaponManager::RemoveByClassname) - .addFunction("RemoveBySlot", &PluginWeaponManager::RemoveBySlot) - .addFunction("GetFirstInSlot", &PluginWeaponManager::GetFirstInSlot) - .addFunction("GetInSlot", &PluginWeaponManager::GetInSlot) - .addFunction("RemoveByItemDefinition", &PluginWeaponManager::RemoveByItemDefinition) - .endClass(); - } -); - -void LoadWeapon(Plugin* plugin, EContext* state) -{ - BeginClass("Weapon", state) - .addConstructor() - .addFunction("CBasePlayerWeapon", &PluginWeapon::GetCBasePlayerWeapon) - .addFunction("CCSWeaponBase", &PluginWeapon::GetCCSWeaponBase) - .addFunction("CBasePlayerWeaponVData", &PluginWeapon::GetCBasePlayerWeaponVData) - .addFunction("CCSWeaponBaseVData", &PluginWeapon::GetCCSWeaponBaseVData) - .addFunction("SetDefaultAttributes", &PluginWeapon::SetDefaultAttributes) - .addFunction("Drop", &PluginWeapon::Drop) - .addFunction("Remove", &PluginWeapon::Remove) - .endClass(); -} - -LoadScriptingComponent( - weapon, - LoadWeapon -); \ No newline at end of file diff --git a/src/plugins/loader/scripting/filesystem/files.cpp b/src/plugins/loader/scripting/filesystem/files.cpp deleted file mode 100644 index 2645d650d..000000000 --- a/src/plugins/loader/scripting/filesystem/files.cpp +++ /dev/null @@ -1,26 +0,0 @@ -#include "../../core.h" - -LoadScriptingComponent( - files, - [](Plugin* plugin, EContext* state) - { - BeginClass("Files", state) - .addConstructor() - .addFunction("Append", &PluginFiles::Append) - .addFunction("CreateDirectory", &PluginFiles::CreateDirectory) - .addFunction("Delete", &PluginFiles::Delete) - .addFunction("ExistsPath", &PluginFiles::ExistsPath) - .addFunction("FetchDirectories", &PluginFiles::FetchDirectories) - .addFunction("FetchFileNames", &PluginFiles::FetchFileNames) - .addFunction("GetBase", &PluginFiles::GetBase) - .addFunction("IsDirectory", &PluginFiles::IsDirectory) - .addFunction("Read", &PluginFiles::Read) - .addFunction("Write", &PluginFiles::Write) - .addFunction("Compress", &PluginFiles::Compress) - .addFunction("Decompress", &PluginFiles::Decompress) - .endClass(); - - if(state->GetKind() == ContextKinds::Lua) state->RunCode("files = Files(GetCurrentPluginName())"); - else if(state->GetKind() == ContextKinds::JavaScript) state->RunCode("globalThis.files = Files(GetCurrentPluginName())"); - } -) \ No newline at end of file diff --git a/src/plugins/loader/scripting/filesystem/logs.cpp b/src/plugins/loader/scripting/filesystem/logs.cpp deleted file mode 100644 index e844bbc41..000000000 --- a/src/plugins/loader/scripting/filesystem/logs.cpp +++ /dev/null @@ -1,15 +0,0 @@ -#include "../../core.h" - -LoadScriptingComponent( - logger, - [](Plugin* plugin, EContext* state) - { - BeginClass("Logger", state) - .addConstructor() - .addFunction("Write", &PluginLogger::Write) - .endClass(); - - if(state->GetKind() == ContextKinds::Lua) state->RunCode("logger = Logger(GetCurrentPluginName())"); - else if(state->GetKind() == ContextKinds::JavaScript) state->RunCode("globalThis.logger = Logger(GetCurrentPluginName())"); - } -) \ No newline at end of file diff --git a/src/plugins/loader/scripting/memory/hooks.cpp b/src/plugins/loader/scripting/memory/hooks.cpp deleted file mode 100644 index 1fb2fc342..000000000 --- a/src/plugins/loader/scripting/memory/hooks.cpp +++ /dev/null @@ -1,17 +0,0 @@ -#include "../../core.h" - -LoadScriptingComponent( - hooks, - [](Plugin* plugin, EContext* state) - { - BeginClass("Hooks", state) - .addConstructor() - .addFunction("Add", &PluginHooks::AddHook) - .addFunction("AddEntityOutputHook", &PluginHooks::AddEntityOutputHook) - .addFunction("Call", &PluginHooks::CallHook) - .endClass(); - - if(state->GetKind() == ContextKinds::Lua) state->RunCode("hooks = Hooks(GetCurrentPluginName())"); - else if(state->GetKind() == ContextKinds::JavaScript) state->RunCode("globalThis.hooks = Hooks(GetCurrentPluginName())"); - } -) \ No newline at end of file diff --git a/src/plugins/loader/scripting/memory/keyvalues/CEntityKeyValues.cpp b/src/plugins/loader/scripting/memory/keyvalues/CEntityKeyValues.cpp deleted file mode 100644 index 66bcb8d67..000000000 --- a/src/plugins/loader/scripting/memory/keyvalues/CEntityKeyValues.cpp +++ /dev/null @@ -1,41 +0,0 @@ -#include "../../../core.h" - -LoadScriptingComponent( - centitykeyvalues, - [](Plugin* plugin, EContext* state) - { - BeginClass("CEntityKeyValues", state) - .addConstructor<>() - .addFunction("GetBool", &PluginCEntityKeyValues::GetBool) - .addFunction("GetInt", &PluginCEntityKeyValues::GetInt) - .addFunction("GetUint", &PluginCEntityKeyValues::GetUint) - .addFunction("GetInt64", &PluginCEntityKeyValues::GetInt64) - .addFunction("GetUint64", &PluginCEntityKeyValues::GetUint64) - .addFunction("GetFloat", &PluginCEntityKeyValues::GetFloat) - .addFunction("GetDouble", &PluginCEntityKeyValues::GetDouble) - .addFunction("GetString", &PluginCEntityKeyValues::GetString) - .addFunction("GetPtr", &PluginCEntityKeyValues::GetPtr) - .addFunction("GetStringToken", &PluginCEntityKeyValues::GetStringToken) - .addFunction("GetColor", &PluginCEntityKeyValues::GetColor) - .addFunction("GetVector", &PluginCEntityKeyValues::GetVector) - .addFunction("GetVector2D", &PluginCEntityKeyValues::GetVector2D) - .addFunction("GetVector4D", &PluginCEntityKeyValues::GetVector4D) - .addFunction("GetQAngle", &PluginCEntityKeyValues::GetQAngle) - .addFunction("SetBool", &PluginCEntityKeyValues::SetBool) - .addFunction("SetInt", &PluginCEntityKeyValues::SetInt) - .addFunction("SetUint", &PluginCEntityKeyValues::SetUint) - .addFunction("SetInt64", &PluginCEntityKeyValues::SetInt64) - .addFunction("SetUint64", &PluginCEntityKeyValues::SetUint64) - .addFunction("SetFloat", &PluginCEntityKeyValues::SetFloat) - .addFunction("SetDouble", &PluginCEntityKeyValues::SetDouble) - .addFunction("SetString", &PluginCEntityKeyValues::SetString) - .addFunction("SetPtr", &PluginCEntityKeyValues::SetPtr) - .addFunction("SetStringToken", &PluginCEntityKeyValues::SetStringToken) - .addFunction("SetColor", &PluginCEntityKeyValues::SetColor) - .addFunction("SetVector", &PluginCEntityKeyValues::SetVector) - .addFunction("SetVector2D", &PluginCEntityKeyValues::SetVector2D) - .addFunction("SetVector4D", &PluginCEntityKeyValues::SetVector4D) - .addFunction("SetQAngle", &PluginCEntityKeyValues::SetQAngle) - .endClass(); - } -) \ No newline at end of file diff --git a/src/plugins/loader/scripting/memory/memory.cpp b/src/plugins/loader/scripting/memory/memory.cpp deleted file mode 100644 index dfae13b82..000000000 --- a/src/plugins/loader/scripting/memory/memory.cpp +++ /dev/null @@ -1,52 +0,0 @@ -#include "../../core.h" - -LoadScriptingComponent( - memory, - [](Plugin* plugin, EContext* state) - { - BeginClass("Memory", state) - .addConstructor<>() - .addFunction("LoadFromAddress", &PluginMemory::LoadFromAddress) - .addFunction("LoadFromSignatureName", &PluginMemory::LoadFromSignatureName) - .addFunction("LoadFromSignature", &PluginMemory::LoadFromSignature) - .addFunction("AddOffsetByName", &PluginMemory::AddOffsetByName) - .addFunction("AddOffset", &PluginMemory::AddOffset) - .addFunction("RemoveOffsetByName", &PluginMemory::RemoveOffsetByName) - .addFunction("RemoveOffset", &PluginMemory::RemoveOffset) - .addFunction("AccessVTable", &PluginMemory::AccessVTable) - .addFunction("AccessVTableFromOffset", &PluginMemory::AccessVTableFromOffset) - .addFunction("AccessedVTable", &PluginMemory::AccessedVTable) - .addFunction("AccessIndexFromOffset", &PluginMemory::AccessIndexFromOffset) - .addFunction("AccessIndex", &PluginMemory::AccessIndex) - .addFunction("Allocate", &PluginMemory::Allocate) - .addFunction("Deallocate", &PluginMemory::Deallocate) - .addFunction("Clear", &PluginMemory::Clear) - .addFunction("SetBool", &PluginMemory::SetBool) - .addFunction("SetInt", &PluginMemory::SetInt) - .addFunction("SetInt64", &PluginMemory::SetInt64) - .addFunction("SetUint", &PluginMemory::SetUint) - .addFunction("SetUint64", &PluginMemory::SetUint64) - .addFunction("SetFloat", &PluginMemory::SetFloat) - .addFunction("SetDouble", &PluginMemory::SetDouble) - .addFunction("SetVector", &PluginMemory::SetVector) - .addFunction("SetVector2D", &PluginMemory::SetVector2D) - .addFunction("SetVector4D", &PluginMemory::SetVector4D) - .addFunction("SetColor", &PluginMemory::SetColor) - .addFunction("SetQAngle", &PluginMemory::SetQAngle) - .addFunction("GetBool", &PluginMemory::GetBool) - .addFunction("GetInt", &PluginMemory::GetInt) - .addFunction("GetInt64", &PluginMemory::GetInt64) - .addFunction("GetUint", &PluginMemory::GetUint) - .addFunction("GetUint64", &PluginMemory::GetUint64) - .addFunction("GetFloat", &PluginMemory::GetFloat) - .addFunction("GetDouble", &PluginMemory::GetDouble) - .addFunction("GetVector", &PluginMemory::GetVector) - .addFunction("GetVector2D", &PluginMemory::GetVector2D) - .addFunction("GetVector4D", &PluginMemory::GetVector4D) - .addFunction("GetColor", &PluginMemory::GetColor) - .addFunction("GetQAngle", &PluginMemory::GetQAngle) - .addFunction("GetPtr", &PluginMemory::GetPtr) - .addFunction("IsValid", &PluginMemory::IsValid) - .endClass(); - } -) \ No newline at end of file diff --git a/src/plugins/loader/scripting/network/database.cpp b/src/plugins/loader/scripting/network/database.cpp deleted file mode 100644 index 721e6e4b6..000000000 --- a/src/plugins/loader/scripting/network/database.cpp +++ /dev/null @@ -1,46 +0,0 @@ -#include "../../core.h" - -EValue PluginDatabase::QueryBuilder(EContext* L) -{ - if (!this->db || !this->db->IsConnected()) return EValue(L); - - EValue global = EValue::getGlobal(L, db->ProvideQueryBuilderTable()); - EValue dbvar(L, this); - return global(dbvar); -} - -void PluginDatabase::ExecuteQB(std::string query, EValue cb, EContext* L) -{ - std::string uuid = get_uuid(); - - EValue databaseRequestsQueue = EValue::getGlobal(L, "databaseRequestsQueue"); - if (databaseRequestsQueue.isTable()) { - databaseRequestsQueue.setProperty(uuid, EValue(cb)); - } - - DatabaseQueryQueue queue = { - query, - uuid, - }; - this->db->AddQueryQueue(queue); -} - -LoadScriptingComponent( - database, - [](Plugin* plugin, EContext* state) - { - BeginClass("Database", state) - .addConstructor() - .addFunction("IsConnected", &PluginDatabase::IsConnected) - .addFunction("EscapeString", &PluginDatabase::EscapeString) - .addFunction("QueryBuilder", &PluginDatabase::QueryBuilder) - .addFunction("GetVersion", &PluginDatabase::GetVersion) - .addFunction("ExecuteQB", &PluginDatabase::ExecuteQB) - .addFunction("QueryParams", &PluginDatabase::QueryParams) - .addFunction("Query", &PluginDatabase::Query) - .endClass(); - - if(state->GetKind() == ContextKinds::Lua) state->RunCode("db = nil"); - else if(state->GetKind() == ContextKinds::JavaScript) state->RunCode("globalThis.db = null"); - } -) diff --git a/src/plugins/loader/scripting/network/usermessages.cpp b/src/plugins/loader/scripting/network/usermessages.cpp deleted file mode 100644 index 1755708cf..000000000 --- a/src/plugins/loader/scripting/network/usermessages.cpp +++ /dev/null @@ -1,97 +0,0 @@ -#include "../../core.h" - -LoadScriptingComponent( - usermessages, - [](Plugin* plugin, EContext* state) - { - BeginClass("UserMessage", state) - .addConstructor() - .addFunction("IsValidMessage", &PluginUserMessage::IsValidMessage) - .addFunction("GetMessageName", &PluginUserMessage::GetMessageName) - .addFunction("GetMessageID", &PluginUserMessage::GetMessageID) - .addFunction("HasField", &PluginUserMessage::HasField) - .addFunction("GetInt32", &PluginUserMessage::GetInt32) - .addFunction("SetInt32", &PluginUserMessage::SetInt32) - .addFunction("GetRepeatedInt32", &PluginUserMessage::GetRepeatedInt32) - .addFunction("SetRepeatedInt32", &PluginUserMessage::SetRepeatedInt32) - .addFunction("AddInt32", &PluginUserMessage::AddInt32) - .addFunction("GetInt64", &PluginUserMessage::GetInt64) - .addFunction("SetInt64", &PluginUserMessage::SetInt64) - .addFunction("GetRepeatedInt64", &PluginUserMessage::GetRepeatedInt64) - .addFunction("SetRepeatedInt64", &PluginUserMessage::SetRepeatedInt64) - .addFunction("AddInt64", &PluginUserMessage::AddInt64) - .addFunction("GetUInt32", &PluginUserMessage::GetUInt32) - .addFunction("SetUInt32", &PluginUserMessage::SetUInt32) - .addFunction("GetRepeatedUInt32", &PluginUserMessage::GetRepeatedUInt32) - .addFunction("SetRepeatedUInt32", &PluginUserMessage::SetRepeatedUInt32) - .addFunction("AddUInt32", &PluginUserMessage::AddUInt32) - .addFunction("GetUInt64", &PluginUserMessage::GetUInt64) - .addFunction("SetUInt64", &PluginUserMessage::SetUInt64) - .addFunction("GetRepeatedUInt64", &PluginUserMessage::GetRepeatedUInt64) - .addFunction("SetRepeatedUInt64", &PluginUserMessage::SetRepeatedUInt64) - .addFunction("AddUInt64", &PluginUserMessage::AddUInt64) - .addFunction("GetInt64OrUnsigned", &PluginUserMessage::GetInt64OrUnsigned) - .addFunction("SetInt64OrUnsigned", &PluginUserMessage::SetInt64OrUnsigned) - .addFunction("GetRepeatedInt64OrUnsigned", &PluginUserMessage::GetRepeatedInt64OrUnsigned) - .addFunction("SetRepeatedInt64OrUnsigned", &PluginUserMessage::SetRepeatedInt64OrUnsigned) - .addFunction("AddInt64OrUnsigned", &PluginUserMessage::AddInt64OrUnsigned) - .addFunction("GetBool", &PluginUserMessage::GetBool) - .addFunction("SetBool", &PluginUserMessage::SetBool) - .addFunction("GetRepeatedBool", &PluginUserMessage::GetRepeatedBool) - .addFunction("SetRepeatedBool", &PluginUserMessage::SetRepeatedBool) - .addFunction("AddBool", &PluginUserMessage::AddBool) - .addFunction("GetFloat", &PluginUserMessage::GetFloat) - .addFunction("SetFloat", &PluginUserMessage::SetFloat) - .addFunction("GetRepeatedFloat", &PluginUserMessage::GetRepeatedFloat) - .addFunction("SetRepeatedFloat", &PluginUserMessage::SetRepeatedFloat) - .addFunction("AddFloat", &PluginUserMessage::AddFloat) - .addFunction("GetDouble", &PluginUserMessage::GetDouble) - .addFunction("SetDouble", &PluginUserMessage::SetDouble) - .addFunction("GetRepeatedDouble", &PluginUserMessage::GetRepeatedDouble) - .addFunction("SetRepeatedDouble", &PluginUserMessage::SetRepeatedDouble) - .addFunction("AddDouble", &PluginUserMessage::AddDouble) - .addFunction("GetFloatOrDouble", &PluginUserMessage::GetFloatOrDouble) - .addFunction("SetFloatOrDouble", &PluginUserMessage::SetFloatOrDouble) - .addFunction("GetRepeatedFloatOrDouble", &PluginUserMessage::GetRepeatedFloatOrDouble) - .addFunction("SetRepeatedFloatOrDouble", &PluginUserMessage::SetRepeatedFloatOrDouble) - .addFunction("AddFloatOrDouble", &PluginUserMessage::AddFloatOrDouble) - .addFunction("GetString", &PluginUserMessage::GetString) - .addFunction("SetString", &PluginUserMessage::SetString) - .addFunction("GetRepeatedString", &PluginUserMessage::GetRepeatedString) - .addFunction("SetRepeatedString", &PluginUserMessage::SetRepeatedString) - .addFunction("AddString", &PluginUserMessage::AddString) - .addFunction("GetColor", &PluginUserMessage::GetColor) - .addFunction("SetColor", &PluginUserMessage::SetColor) - .addFunction("GetRepeatedColor", &PluginUserMessage::GetRepeatedColor) - .addFunction("SetRepeatedColor", &PluginUserMessage::SetRepeatedColor) - .addFunction("AddColor", &PluginUserMessage::AddColor) - .addFunction("GetVector2D", &PluginUserMessage::GetVector2D) - .addFunction("SetVector2D", &PluginUserMessage::SetVector2D) - .addFunction("GetRepeatedVector2D", &PluginUserMessage::GetRepeatedVector2D) - .addFunction("SetRepeatedVector2D", &PluginUserMessage::SetRepeatedVector2D) - .addFunction("AddVector2D", &PluginUserMessage::AddVector2D) - .addFunction("GetVector", &PluginUserMessage::GetVector) - .addFunction("SetVector", &PluginUserMessage::SetVector) - .addFunction("GetRepeatedVector", &PluginUserMessage::GetRepeatedVector) - .addFunction("SetRepeatedVector", &PluginUserMessage::SetRepeatedVector) - .addFunction("AddVector", &PluginUserMessage::AddVector) - .addFunction("GetQAngle", &PluginUserMessage::GetQAngle) - .addFunction("SetQAngle", &PluginUserMessage::SetQAngle) - .addFunction("GetRepeatedQAngle", &PluginUserMessage::GetRepeatedQAngle) - .addFunction("SetRepeatedQAngle", &PluginUserMessage::SetRepeatedQAngle) - .addFunction("AddQAngle", &PluginUserMessage::AddQAngle) - .addFunction("GetMessage", &PluginUserMessage::GetUMessage) - .addFunction("GetRepeatedMessage", &PluginUserMessage::GetRepeatedMessage) - .addFunction("AddMessage", &PluginUserMessage::AddMessage) - .addFunction("RemoveRepeatedFieldValue", &PluginUserMessage::RemoveRepeatedFieldValue) - .addFunction("GetRepeatedFieldCount", &PluginUserMessage::GetRepeatedFieldCount) - .addFunction("AddClient", &PluginUserMessage::AddClient) - .addFunction("RemoveClient", &PluginUserMessage::RemoveClient) - .addFunction("ClearClients", &PluginUserMessage::ClearClients) - .addFunction("AddClients", &PluginUserMessage::AddClients) - .addFunction("GetClients", &PluginUserMessage::GetClients) - .addFunction("SendToPlayer", &PluginUserMessage::SendToPlayer) - .addFunction("SendToAllPlayers", &PluginUserMessage::SendToAllPlayers) - .endClass(); - } -) \ No newline at end of file diff --git a/src/plugins/loader/scripting/player/player.cpp b/src/plugins/loader/scripting/player/player.cpp deleted file mode 100644 index e0177abf7..000000000 --- a/src/plugins/loader/scripting/player/player.cpp +++ /dev/null @@ -1,64 +0,0 @@ -#include "../../core.h" -#include "../../../../player/playermanager/PlayerManager.h" - -PluginPlayer* scripting_GetPlayer(int playerid, EContext* state) -{ - Player* player = g_playerManager->GetPlayer(playerid); - if (!player) - return nullptr; - - return player->GetPlayerObject(); -} - -LoadScriptingComponent( - player, - [](Plugin* plugin, EContext* state) - { - BeginClass("Player", state) - .addFunction("CBaseEntity", &PluginPlayer::GetCBaseEntity) - .addFunction("CBasePlayerController", &PluginPlayer::GetCBasePlayerController) - .addFunction("CBasePlayerPawn", &PluginPlayer::GetCBasePlayerPawn) - .addFunction("CCSPlayerController", &PluginPlayer::GetCCSPlayerController) - .addFunction("CCSPlayerPawn", &PluginPlayer::GetCCSPlayerPawn) - .addFunction("CCSPlayerPawnBase", &PluginPlayer::GetCCSPlayerPawnBase) - .addFunction("Drop", &PluginPlayer::Drop) - .addFunction("GetChatTag", &PluginPlayer::GetChatTag) - .addFunction("SetChatTag", &PluginPlayer::SetChatTag) - .addFunction("GetChatTagColor", &PluginPlayer::GetChatTagColor) - .addFunction("SetChatTagColor", &PluginPlayer::SetChatTagColor) - .addFunction("GetNameColor", &PluginPlayer::GetNameColor) - .addFunction("SetNameColor", &PluginPlayer::SetNameColor) - .addFunction("GetChatColor", &PluginPlayer::GetChatColor) - .addFunction("SetChatColor", &PluginPlayer::SetChatColor) - .addFunction("ExecuteCommand", &PluginPlayer::ExecuteCommand) - .addFunction("GetConvar", &PluginPlayer::GetConvarValue) - .addFunction("SetConvar", &PluginPlayer::SetConvar) - .addFunction("GetIPAddress", &PluginPlayer::GetIPAddress) - .addFunction("GetSlot", &PluginPlayer::GetSlot) - .addFunction("GetSteamID", &PluginPlayer::GetSteamID) - .addFunction("GetSteamID2", &PluginPlayer::GetSteamID2) - .addFunction("HideMenu", &PluginPlayer::HideMenu) - .addFunction("IsFakeClient", &PluginPlayer::IsFakeClient) - .addFunction("IsFirstSpawn", &PluginPlayer::IsFirstSpawn) - .addFunction("Kill", &PluginPlayer::Kill) - .addFunction("Respawn", &PluginPlayer::Respawn) - .addFunction("SendMsg", &PluginPlayer::SendMsg) - .addFunction("SwitchTeam", &PluginPlayer::SwitchTeam) - .addFunction("ChangeTeam", &PluginPlayer::ChangeTeam) - .addFunction("ShowMenu", &PluginPlayer::ShowMenu) - .addFunction("GetVar", &PluginPlayer::GetVarValue) - .addFunction("SetVar", &PluginPlayer::SetVarValue) - .addFunction("SetListening", &PluginPlayer::SetListening) - .addFunction("GetVoiceFlags", &PluginPlayer::GetVoiceFlags) - .addFunction("SetVoiceFlags", &PluginPlayer::SetVoiceFlags) - .addFunction("GetConnectedTime", &PluginPlayer::GetConnectedTime) - .addFunction("GetWeaponManager", &PluginPlayer::GetWeaponManager) - .addFunction("QueryConvar", &PluginPlayer::QueryConvar) - .addFunction("PerformMenuAction", &PluginPlayer::PerformMenuAction) - .addFunction("IsValid", &PluginPlayer::IsValid) - .endClass(); - - GetGlobalNamespace(state) - .addFunction("GetPlayer", scripting_GetPlayer); - } -) \ No newline at end of file diff --git a/src/plugins/loader/scripting/player/playermanager.cpp b/src/plugins/loader/scripting/player/playermanager.cpp deleted file mode 100644 index c450bef90..000000000 --- a/src/plugins/loader/scripting/player/playermanager.cpp +++ /dev/null @@ -1,17 +0,0 @@ -#include "../../core.h" - -LoadScriptingComponent( - playermanager, - [](Plugin* plugin, EContext* state) - { - BeginClass("PlayerManager", state) - .addConstructor() - .addFunction("GetPlayerCount", &PluginPlayerManager::GetPlayerCount) - .addFunction("GetPlayerCap", &PluginPlayerManager::GetPlayerCap) - .addFunction("SendMsg", &PluginPlayerManager::SendMsg) - .endClass(); - - if(state->GetKind() == ContextKinds::Lua) state->RunCode("playermanager = PlayerManager(GetCurrentPluginName())"); - else if(state->GetKind() == ContextKinds::JavaScript) state->RunCode("globalThis.playermanager = PlayerManager(GetCurrentPluginName())"); - } -) \ No newline at end of file diff --git a/src/plugins/loader/scripting/sdk/baseclasses.cpp b/src/plugins/loader/scripting/sdk/baseclasses.cpp deleted file mode 100644 index e277b9b2f..000000000 --- a/src/plugins/loader/scripting/sdk/baseclasses.cpp +++ /dev/null @@ -1,432 +0,0 @@ -#include "../../core.h" - -EValue Vector_add(Vector* v1, Vector* v2, EContext* ctx) -{ - Vector result = *v1 + *v2; - return EValue(ctx, result); -} - -bool Vector_eq(Vector* v1, Vector* v2, EContext* ctx) -{ - return (*v1 == *v2); -} - -float Vector_len(Vector* v1) -{ - return FastSqrt(v1->x*v1->x + v1->y*v1->y + v1->z*v1->z); -} - -EValue Vector_unm(Vector* v, EContext* ctx) -{ - Vector result = -(*v); - return EValue(ctx, result); -} - -EValue Vector_sub(Vector* v1, Vector* v2, EContext* ctx) -{ - Vector result = *v1 - *v2; - return EValue(ctx, result); -} - -EValue Vector_mul(Vector* v1, Vector* v2, EContext* ctx) -{ - Vector result = *v1 * *v2; - return EValue(ctx, result); -} - -EValue Vector_div(Vector* v1, Vector* v2, EContext* ctx) -{ - Vector result = *v1 / *v2; - return EValue(ctx, result); -} - -std::string Vector_tostring(Vector* v1) -{ - return string_format("Vector(%f,%f,%f)", v1->x, v1->y, v1->z); -} - -EValue QAngle_add(QAngle* v1, QAngle* v2, EContext* ctx) -{ - QAngle result = *v1 + *v2; - return EValue(ctx, result); -} - -bool QAngle_eq(QAngle* v1, QAngle* v2, EContext* ctx) -{ - return (*v1 == *v2); -} - -float QAngle_len(QAngle* v1) -{ - return FastSqrt(v1->x*v1->x + v1->y*v1->y + v1->z*v1->z); -} - -EValue QAngle_unm(QAngle* v, EContext* ctx) -{ - QAngle result = -(*v); - return EValue(ctx, result); -} - -EValue QAngle_sub(QAngle* v1, QAngle* v2, EContext* ctx) -{ - QAngle result = *v1 - *v2; - return EValue(ctx, result); -} - -EValue QAngle_mul(QAngle* v1, QAngle* v2, EContext* ctx) -{ - QAngle result = *v1; - result.x *= v2->x; - result.y *= v2->y; - result.z *= v2->z; - return EValue(ctx, result); -} - -EValue QAngle_div(QAngle* v1, QAngle* v2, EContext* ctx) -{ - QAngle result = *v1; - result.x /= v2->x; - result.y /= v2->y; - result.z /= v2->z; - return EValue(ctx, result); -} - -std::string QAngle_tostring(QAngle* v1) -{ - return string_format("QAngle(%f,%f,%f)", v1->x, v1->y, v1->z); -} - -EValue Vector2D_add(Vector2D* v1, Vector2D* v2, EContext* ctx) -{ - Vector2D result = *v1 + *v2; - return EValue(ctx, result); -} - -bool Vector2D_eq(Vector2D* v1, Vector2D* v2, EContext* ctx) -{ - return (*v1 == *v2); -} - -float Vector2D_len(Vector2D* v1) -{ - return FastSqrt(v1->x*v1->x + v1->y*v1->y); -} - -EValue Vector2D_unm(Vector2D* v, EContext* ctx) -{ - Vector2D result = -(*v); - return EValue(ctx, result); -} - -EValue Vector2D_sub(Vector2D* v1, Vector2D* v2, EContext* ctx) -{ - Vector2D result = *v1 - *v2; - return EValue(ctx, result); -} - -EValue Vector2D_mul(Vector2D* v1, Vector2D* v2, EContext* ctx) -{ - Vector2D result = *v1; - result.x *= v2->x; - result.y *= v2->y; - return EValue(ctx, result); -} - -EValue Vector2D_div(Vector2D* v1, Vector2D* v2, EContext* ctx) -{ - Vector2D result = *v1; - result.x /= v2->x; - result.y /= v2->y; - return EValue(ctx, result); -} - -std::string Vector2D_tostring(Vector2D* v1) -{ - return string_format("Vector2D(%f,%f)", v1->x, v1->y); -} - -EValue Vector4D_add(Vector4D* v1, Vector4D* v2, EContext* ctx) -{ - Vector4D result = *v1 + *v2; - return EValue(ctx, result); -} - -bool Vector4D_eq(Vector4D* v1, Vector4D* v2, EContext* ctx) -{ - return (*v1 == *v2); -} - -float Vector4D_len(Vector4D* v1) -{ - return FastSqrt(v1->x*v1->x + v1->y*v1->y + v1->z*v1->z + v1->w*v1->w); -} - -EValue Vector4D_unm(Vector4D* v, EContext* ctx) -{ - Vector4D result = -(*v); - return EValue(ctx, result); -} - -EValue Vector4D_sub(Vector4D* v1, Vector4D* v2, EContext* ctx) -{ - Vector4D result = *v1 - *v2; - return EValue(ctx, result); -} - -EValue Vector4D_mul(Vector4D* v1, Vector4D* v2, EContext* ctx) -{ - Vector4D result = *v1; - result.x *= v2->x; - result.y *= v2->y; - result.z *= v2->z; - result.w *= v2->w; - return EValue(ctx, result); -} - -EValue Vector4D_div(Vector4D* v1, Vector4D* v2, EContext* ctx) -{ - Vector4D result = *v1; - result.x /= v2->x; - result.y /= v2->y; - result.z /= v2->z; - result.w /= v2->w; - return EValue(ctx, result); -} - -std::string Vector4D_tostring(Vector4D* v1) -{ - return string_format("Vector4D(%f,%f,%f,%f)", v1->x, v1->y, v1->z, v1->w); -} - -int Color_index(lua_State* L) -{ - Color* v = *static_cast(luaL_checkudata(L, 1, typeid(Color).name())); - std::string key = luaL_checkstring(L, 2); - - if (key == "r") - { - lua_pushnumber(L, v->r()); - return 1; - } - else if (key == "g") - { - lua_pushnumber(L, v->g()); - return 1; - } - else if (key == "b") - { - lua_pushnumber(L, v->b()); - return 1; - } - else if (key == "a") - { - lua_pushnumber(L, v->a()); - return 1; - } - - luaL_getmetatable(L, typeid(Color).name()); - lua_pushstring(L, key.c_str()); - lua_rawget(L, -2); - return 1; -} - -JSValue Color_indexJS(JSContext* ctx, JSValue this_arg, int argc, JSValue* argv) -{ - EContext* ct = GetContextByState(ctx); - std::string key = EValue::fromJSStack(ct, argv[1]).cast(); - Color* v = EValue::fromJSStack(ct, argv[2]).cast(); - - if(key == "r") return Stack::pushJS(ct, v->r()); - else if(key == "g") return Stack::pushJS(ct, v->g()); - else if(key == "b") return Stack::pushJS(ct, v->b()); - else if(key == "a") return Stack::pushJS(ct, v->a()); - - return JS_UNDEFINED; -} - -int Color_newindex(lua_State* L) -{ - Color* v = *static_cast(luaL_checkudata(L, 1, typeid(Color).name())); - std::string key = luaL_checkstring(L, 2); - - if (key == "r") - { - v->SetColor(luaL_checknumber(L, 3), v->g(), v->b(), v->a()); - return 0; - } - else if (key == "g") - { - v->SetColor(v->r(), luaL_checknumber(L, 3), v->b(), v->a()); - return 0; - } - else if (key == "b") - { - v->SetColor(v->r(), v->g(), luaL_checknumber(L, 3), v->a()); - return 0; - } - else if (key == "a") - { - v->SetColor(v->r(), v->g(), v->b(), luaL_checknumber(L, 3)); - return 0; - } - - return luaL_error(L, "Cannot add new fields to Color"); -} - -JSValue Color_newindexJS(JSContext* ctx, JSValue this_arg, int argc, JSValue* argv) -{ - EContext* ct = GetContextByState(ctx); - std::string key = EValue::fromJSStack(ct, argv[1]).cast(); - int value = EValue::fromJSStack(ct, argv[2]).cast(); - Color* v = EValue::fromJSStack(ct, argv[3]).cast(); - - if(key == "r") v->SetColor(value, v->g(), v->b(), v->a()); - else if(key == "g") v->SetColor(v->r(), value, v->b(), v->a()); - else if(key == "b") v->SetColor(v->r(), v->g(), value, v->a()); - else if(key == "a") v->SetColor(v->r(), v->g(), v->b(), value); - - return JS_UNDEFINED; -} - -std::string Color_tostring(Color* v1) -{ - return string_format("Color(%d,%d,%d,%d)", v1->r(), v1->g(), v1->b(), v1->a()); -} - -std::string Vector_GetPtr(Vector* vec) -{ - return string_format("%p", vec); -} - -std::string QAngle_GetPtr(QAngle* ang) -{ - return string_format("%p", ang); -} - -std::string Color_GetPtr(Color* col) -{ - return string_format("%p", col); -} - -std::string Vector2D_GetPtr(Vector2D* vec) -{ - return string_format("%p", vec); -} - -std::string Vector4D_GetPtr(Vector4D* vec) -{ - return string_format("%p", vec); -} - -void LoadBaseClass(Plugin* plugin, EContext* state) -{ - BeginClass("Vector", state) - .addConstructor() - .addProperty("x", &Vector::x, true) - .addProperty("y", &Vector::y, true) - .addProperty("z", &Vector::z, true) - .addFunction("GetPtr", Vector_GetPtr) - .addLuaFunction("__add", Vector_add) - .addLuaFunction("__eq", Vector_eq) - .addLuaFunction("__len", Vector_len) - .addLuaFunction("__tostring", Vector_tostring) - .addLuaFunction("__unm", Vector_unm) - .addLuaFunction("__sub", Vector_sub) - .addLuaFunction("__mul", Vector_mul) - .addLuaFunction("__div", Vector_div) - .addJSFunction("toString", Vector_tostring) - .addJSFunction("add", Vector_add) - .addJSFunction("equal", Vector_eq) - .addJSFunction("length", Vector_len) - .addJSFunction("unm", Vector_unm) - .addJSFunction("sub", Vector_sub) - .addJSFunction("mul", Vector_mul) - .addJSFunction("div", Vector_div) - .endClass(); - - BeginClass("Color", state) - .addConstructor() - .addFunction("GetPtr", Color_GetPtr) - .addLuaFunction("__tostring", Color_tostring) - .addLuaFunction("toString", Color_tostring) - .addLuaCustomIndex(Color_index, Color_newindex) - .addJSCustomIndex(Color_indexJS, Color_newindexJS) - .endClass(); - - BeginClass("QAngle", state) - .addConstructor() - .addProperty("x", &QAngle::x, true) - .addProperty("y", &QAngle::y, true) - .addProperty("z", &QAngle::z, true) - .addFunction("GetPtr", QAngle_GetPtr) - .addLuaFunction("__add", QAngle_add) - .addLuaFunction("__eq", QAngle_eq) - .addLuaFunction("__len", QAngle_len) - .addLuaFunction("__unm", QAngle_unm) - .addLuaFunction("__sub", QAngle_sub) - .addLuaFunction("__mul", QAngle_mul) - .addLuaFunction("__div", QAngle_div) - .addLuaFunction("__tostring", QAngle_tostring) - .addJSFunction("toString", QAngle_tostring) - .addJSFunction("add", QAngle_add) - .addJSFunction("equal", QAngle_eq) - .addJSFunction("length", QAngle_len) - .addJSFunction("unm", QAngle_unm) - .addJSFunction("sub", QAngle_sub) - .addJSFunction("mul", QAngle_mul) - .addJSFunction("div", QAngle_div) - .endClass(); - - BeginClass("Vector2D", state) - .addConstructor() - .addProperty("x", &Vector2D::x, true) - .addProperty("y", &Vector2D::y, true) - .addFunction("GetPtr", Vector2D_GetPtr) - .addFunction("__add", Vector2D_add) - .addFunction("__eq", Vector2D_eq) - .addFunction("__len", Vector2D_len) - .addLuaFunction("__unm", Vector2D_unm) - .addLuaFunction("__sub", Vector2D_sub) - .addLuaFunction("__mul", Vector2D_mul) - .addLuaFunction("__div", Vector2D_div) - .addLuaFunction("__tostring", Vector2D_tostring) - .addJSFunction("toString", Vector2D_tostring) - .addJSFunction("add", Vector2D_add) - .addJSFunction("equal", Vector2D_eq) - .addJSFunction("length", Vector2D_len) - .addJSFunction("unm", Vector2D_unm) - .addJSFunction("sub", Vector2D_sub) - .addJSFunction("mul", Vector2D_mul) - .addJSFunction("div", Vector2D_div) - .endClass(); - - BeginClass("Vector4D", state) - .addConstructor() - .addProperty("x", &Vector4D::x, true) - .addProperty("y", &Vector4D::y, true) - .addProperty("z", &Vector4D::z, true) - .addProperty("w", &Vector4D::w, true) - .addFunction("GetPtr", Vector4D_GetPtr) - .addLuaFunction("__add", Vector4D_add) - .addLuaFunction("__eq", Vector4D_eq) - .addLuaFunction("__len", Vector4D_len) - .addLuaFunction("__unm", Vector4D_unm) - .addLuaFunction("__sub", Vector4D_sub) - .addLuaFunction("__mul", Vector4D_mul) - .addLuaFunction("__div", Vector4D_div) - .addLuaFunction("__tostring", Vector4D_tostring) - .addJSFunction("toString", Vector4D_tostring) - .addJSFunction("add", Vector4D_add) - .addJSFunction("equal", Vector4D_eq) - .addJSFunction("length", Vector4D_len) - .addJSFunction("unm", Vector4D_unm) - .addJSFunction("sub", Vector4D_sub) - .addJSFunction("mul", Vector4D_mul) - .addJSFunction("div", Vector4D_div) - .endClass(); -} - -LoadScriptingComponent( - baseclasses, - LoadBaseClass -) \ No newline at end of file diff --git a/src/plugins/loader/scripting/sdk/chandle.cpp b/src/plugins/loader/scripting/sdk/chandle.cpp deleted file mode 100644 index 3fc3713eb..000000000 --- a/src/plugins/loader/scripting/sdk/chandle.cpp +++ /dev/null @@ -1,14 +0,0 @@ -#include "../../core.h" - -LoadScriptingComponent( - chandle, - [](Plugin* plugin, EContext* state) - { - BeginClass("CHandle", state) - .addConstructor() - .addFunction("GetPtr", &PluginCHandle::GetPtr) - .addFunction("SetPtr", &PluginCHandle::SetPtr) - .addFunction("GetHandlePtr", &PluginCHandle::GetHandlePtr) - .endClass(); - } -) \ No newline at end of file diff --git a/src/plugins/loader/scripting/sdk/checktransmit.cpp b/src/plugins/loader/scripting/sdk/checktransmit.cpp deleted file mode 100644 index a2bf31272..000000000 --- a/src/plugins/loader/scripting/sdk/checktransmit.cpp +++ /dev/null @@ -1,14 +0,0 @@ -#include "../../core.h" - -LoadScriptingComponent( - checktransmit, - [](Plugin* plugin, EContext* state) - { - BeginClass("CCheckTransmitInfo", state) - .addConstructor() - .addFunction("GetPlayers", &PluginCCheckTransmitInfo::GetPlayers) - .addFunction("GetEntities", &PluginCCheckTransmitInfo::GetEntities) - .addFunction("SetEntities", &PluginCCheckTransmitInfo::SetEntities) - .endClass(); - } -) \ No newline at end of file diff --git a/src/plugins/loader/scripting/sdk/coretypes.cpp b/src/plugins/loader/scripting/sdk/coretypes.cpp deleted file mode 100644 index 29a8a9180..000000000 --- a/src/plugins/loader/scripting/sdk/coretypes.cpp +++ /dev/null @@ -1,300 +0,0 @@ -#include "../../core.h" - -#include "../../../../types/EventResult.h" -#include "../../../../types/LogType.h" -#include "../../../../types/GamePhase.h" -#include "../../../../player/player/Player.h" - -LoadScriptingComponent( - coretypes, - [](Plugin* plugin, EContext* state) - { - GetGlobalNamespace(state) - .beginNamespace("PluginState_t") - .addConstant("Started", (uint64_t)PluginState_t::Started) - .addConstant("Stopped", (uint64_t)PluginState_t::Stopped) - .endNamespace() - - .beginNamespace("RoundEndReason_t") - .addConstant("Unknown", (uint64_t)0) - .addConstant("TargetBombed", (uint64_t)0x1) - .addConstant("TerroristsEscaped", (uint64_t)0x4) - .addConstant("CTsPreventEscape", (uint64_t)0x5) - .addConstant("EscapingTerroristsNeutralized", (uint64_t)0x6) - .addConstant("BombDefused", (uint64_t)0x7) - .addConstant("CTsWin", (uint64_t)0x8) - .addConstant("TerroristsWin", (uint64_t)0x9) - .addConstant("RoundDraw", (uint64_t)0xA) - .addConstant("AllHostageRescued", (uint64_t)0xB) - .addConstant("TargetSaved", (uint64_t)0xC) - .addConstant("HostagesNotRescued", (uint64_t)0xD) - .addConstant("TerroristsNotEscaped", (uint64_t)0xE) - .addConstant("GameCommencing", (uint64_t)0x10) - .addConstant("TerroristsSurrender", (uint64_t)0x11) - .addConstant("CTsSurrender", (uint64_t)0x12) - .addConstant("TerroristsPlanted", (uint64_t)0x13) - .addConstant("CTsReachedHostage", (uint64_t)0x14) - .addConstant("SurvivalWin", (uint64_t)0x15) - .addConstant("SurvivalDraw", (uint64_t)0x16) - .endNamespace() - - .beginNamespace("Team") - .addConstant("None", CS_TEAM_NONE) - .addConstant("Spectator", CS_TEAM_SPECTATOR) - .addConstant("T", CS_TEAM_T) - .addConstant("CT", CS_TEAM_CT) - .endNamespace() - - .beginNamespace("EventResult") - .addConstant("Continue", (uint64_t)EventResult::Continue) - .addConstant("Stop", (uint64_t)EventResult::Stop) - .addConstant("Handled", (uint64_t)EventResult::Handled) - .endNamespace() - - .beginNamespace("MessageType") - .addConstant("Notify", HUD_PRINTNOTIFY) - .addConstant("Console", HUD_PRINTCONSOLE) - .addConstant("Chat", HUD_PRINTTALK) - .addConstant("Center", HUD_PRINTCENTER) - .endNamespace() - - .beginNamespace("DisconnectReason") - .addConstant("Invalid", 0) - .addConstant("Shutdown", 1) - .addConstant("DisconnectByUser", 2) - .addConstant("DisconnectByServer", 3) - .addConstant("Lost", 4) - .addConstant("Overflow", 5) - .addConstant("SteamBanned", 6) - .addConstant("SteamInUse", 7) - .addConstant("SteamTicket", 8) - .addConstant("SteamLogon", 9) - .addConstant("SteamAuthCancelled", 10) - .addConstant("SteamAuthAlreadyUsed", 11) - .addConstant("SteamAuthInvalid", 12) - .addConstant("SteamVacBanned", 13) - .addConstant("SteamLoggedInElsewhere", 14) - .addConstant("SteamVacCheckTimedout", 15) - .addConstant("SteamDropped", 16) - .addConstant("SteamOwnership", 17) - .addConstant("ServerInfoOverflow", 18) - .addConstant("TickMsgOverflow", 19) - .addConstant("StringTableMsgOverflow", 20) - .addConstant("DeltaentMsgOverflow", 21) - .addConstant("TempentMsgOverflow", 22) - .addConstant("SoundsMsgOverflow", 23) - .addConstant("SnapshotOverflow", 24) - .addConstant("SnapshotError", 25) - .addConstant("ReliableOverflow", 26) - .addConstant("BadDeltaTick", 27) - .addConstant("NoMoreSplits", 28) - .addConstant("Timedout", 29) - .addConstant("Disconnected", 30) - .addConstant("LeavingSplit", 31) - .addConstant("DifferentClassTables", 32) - .addConstant("BadRelayPassword", 33) - .addConstant("BadSpectatorPassword", 34) - .addConstant("HLTVRestricted", 35) - .addConstant("NoSpectators", 36) - .addConstant("HLTVUnavailable", 37) - .addConstant("HLTVStop", 38) - .addConstant("Kicked", 39) - .addConstant("BanAdded", 40) - .addConstant("KickBanAdded", 41) - .addConstant("HLTVDirect", 42) - .addConstant("PureServerClientExtra", 43) - .addConstant("PureServerMismatch", 44) - .addConstant("UserCmd", 45) - .addConstant("RejectedByGame", 46) - .addConstant("MessageParseError", 47) - .addConstant("InvalidMessageError", 48) - .addConstant("BadServerPassword", 49) - .addConstant("DirectConnectReservation", 50) - .addConstant("ConnectionFailure", 51) - .addConstant("NoPeerGroupHandlers", 52) - .addConstant("Reconnection", 53) - .addConstant("LoopShutdown", 54) - .addConstant("LoopDeactivate", 55) - .addConstant("HostEndGame", 56) - .addConstant("LoopLevelLoadActivate", 57) - .addConstant("CreateServerFailed", 58) - .addConstant("Exiting", 59) - .addConstant("RequestHostStateIdle", 60) - .addConstant("RequestHostStateHLTVRelay", 61) - .addConstant("ClientConsistencyFail", 62) - .addConstant("UnableToCRCMap", 63) - .addConstant("ClientNoMap", 64) - .addConstant("ClientDifferentMap", 65) - .addConstant("ServerRequiresSteam", 66) - .addConstant("SteamDenyMisc", 67) - .addConstant("SteamDenyBadAnticheat", 68) - .addConstant("ServerShutdown", 69) - .addConstant("ReplayIncompatible", 71) - .addConstant("ConnectRequestTimedOut", 72) - .addConstant("ServerIncompatible", 73) - .addConstant("LocalProblemManyRelays", 74) - .addConstant("LocalProblemHostedServerPrimaryRelay", 75) - .addConstant("LocalProblemNetworkConfig", 76) - .addConstant("LocalProblemOther", 77) - .addConstant("RemoteTimeout", 79) - .addConstant("RemoteTimeoutConnecting", 80) - .addConstant("RemoteOther", 81) - .addConstant("RemoteBadCrypt", 82) - .addConstant("RemoteCertNotTrusted", 83) - .addConstant("Unusual", 84) - .addConstant("InternalError", 85) - .addConstant("RejectBadChallenge", 128) - .addConstant("RejectNoLobby", 129) - .addConstant("RejectBackgroundMap", 130) - .addConstant("RejectSinglePlayer", 131) - .addConstant("RejectHiddenGame", 132) - .addConstant("RejectLanRestrict", 133) - .addConstant("RejectBadPassword", 134) - .addConstant("RejectServerFull", 135) - .addConstant("RejectInvalidReservation", 136) - .addConstant("RejectFailedChannel", 137) - .addConstant("RejectConnectFromLobby", 138) - .addConstant("RejectReservedForLobby", 139) - .addConstant("RejectInvalidKeyLength", 140) - .addConstant("RejectOldProtocol", 141) - .addConstant("RejectNewProtocol", 142) - .addConstant("RejectInvalidConnection", 143) - .addConstant("RejectInvalidCertLen", 144) - .addConstant("RejectInvalidSteamCertLen", 145) - .addConstant("RejectSteam", 146) - .addConstant("RejectServerAuthDisabled", 147) - .addConstant("RejectServerCDKeyAuthInvalid", 148) - .addConstant("RejectBanned", 149) - .addConstant("KickedTeamKilling", 150) - .addConstant("KickedTKStart", 151) - .addConstant("KickedUntrustedAccount", 152) - .addConstant("KickedConvictedAccount", 153) - .addConstant("KickedCompetitiveCooldown", 154) - .addConstant("KickedTeamHurting", 155) - .addConstant("KickedHostageKilling", 156) - .addConstant("KickedVotedOff", 157) - .addConstant("KickedIdle", 158) - .addConstant("KickedSuicide", 159) - .addConstant("KickedNoSteamLogin", 160) - .addConstant("KickedNoSteamTicket", 161) - .addConstant("KickedInputAutomation", 162) - .addConstant("KickedVACNetAbnormalBehavior", 163) - .endNamespace() - - .beginNamespace("CollisionGroup") - .addConstant("COLLISION_GROUP_ALWAYS", (uint64_t)BuiltInCollisionGroup_t::COLLISION_GROUP_ALWAYS) - .addConstant("COLLISION_GROUP_NONPHYSICAL", (uint64_t)BuiltInCollisionGroup_t::COLLISION_GROUP_NONPHYSICAL) - .addConstant("COLLISION_GROUP_TRIGGER", (uint64_t)BuiltInCollisionGroup_t::COLLISION_GROUP_TRIGGER) - .addConstant("COLLISION_GROUP_CONDITIONALLY_SOLID", (uint64_t)BuiltInCollisionGroup_t::COLLISION_GROUP_CONDITIONALLY_SOLID) - .addConstant("COLLISION_GROUP_FIRST_USER", (uint64_t)BuiltInCollisionGroup_t::COLLISION_GROUP_FIRST_USER) - .addConstant("COLLISION_GROUPS_MAX_ALLOWED", (uint64_t)BuiltInCollisionGroup_t::COLLISION_GROUPS_MAX_ALLOWED) - .addConstant("COLLISION_GROUP_DEFAULT", (uint64_t)StandardCollisionGroups_t::COLLISION_GROUP_DEFAULT) - .addConstant("COLLISION_GROUP_DEBRIS", (uint64_t)StandardCollisionGroups_t::COLLISION_GROUP_DEBRIS) - .addConstant("COLLISION_GROUP_INTERACTIVE_DEBRIS", (uint64_t)StandardCollisionGroups_t::COLLISION_GROUP_INTERACTIVE_DEBRIS) - .addConstant("COLLISION_GROUP_INTERACTIVE", (uint64_t)StandardCollisionGroups_t::COLLISION_GROUP_INTERACTIVE) - .addConstant("COLLISION_GROUP_PLAYER", (uint64_t)StandardCollisionGroups_t::COLLISION_GROUP_PLAYER) - .addConstant("COLLISION_GROUP_BREAKABLE_GLASS", (uint64_t)StandardCollisionGroups_t::COLLISION_GROUP_BREAKABLE_GLASS) - .addConstant("COLLISION_GROUP_VEHICLE", (uint64_t)StandardCollisionGroups_t::COLLISION_GROUP_VEHICLE) - .addConstant("COLLISION_GROUP_PLAYER_MOVEMENT", (uint64_t)StandardCollisionGroups_t::COLLISION_GROUP_PLAYER_MOVEMENT) - .addConstant("COLLISION_GROUP_NPC", (uint64_t)StandardCollisionGroups_t::COLLISION_GROUP_NPC) - .addConstant("COLLISION_GROUP_IN_VEHICLE", (uint64_t)StandardCollisionGroups_t::COLLISION_GROUP_IN_VEHICLE) - .addConstant("COLLISION_GROUP_WEAPON", (uint64_t)StandardCollisionGroups_t::COLLISION_GROUP_WEAPON) - .addConstant("COLLISION_GROUP_VEHICLE_CLIP", (uint64_t)StandardCollisionGroups_t::COLLISION_GROUP_VEHICLE_CLIP) - .addConstant("COLLISION_GROUP_PROJECTILE", (uint64_t)StandardCollisionGroups_t::COLLISION_GROUP_PROJECTILE) - .addConstant("COLLISION_GROUP_DOOR_BLOCKER", (uint64_t)StandardCollisionGroups_t::COLLISION_GROUP_DOOR_BLOCKER) - .addConstant("COLLISION_GROUP_PASSABLE_DOOR", (uint64_t)StandardCollisionGroups_t::COLLISION_GROUP_PASSABLE_DOOR) - .addConstant("COLLISION_GROUP_DISSOLVING", (uint64_t)StandardCollisionGroups_t::COLLISION_GROUP_DISSOLVING) - .addConstant("COLLISION_GROUP_PUSHAWAY", (uint64_t)StandardCollisionGroups_t::COLLISION_GROUP_PUSHAWAY) - .addConstant("COLLISION_GROUP_NPC_ACTOR", (uint64_t)StandardCollisionGroups_t::COLLISION_GROUP_NPC_ACTOR) - .addConstant("COLLISION_GROUP_NPC_SCRIPTED", (uint64_t)StandardCollisionGroups_t::COLLISION_GROUP_NPC_SCRIPTED) - .addConstant("COLLISION_GROUP_PZ_CLIP", (uint64_t)StandardCollisionGroups_t::COLLISION_GROUP_PZ_CLIP) - .addConstant("COLLISION_GROUP_PROPS", (uint64_t)StandardCollisionGroups_t::COLLISION_GROUP_PROPS) - .addConstant("LAST_SHARED_COLLISION_GROUP", (uint64_t)StandardCollisionGroups_t::LAST_SHARED_COLLISION_GROUP) - .endNamespace() - - .beginNamespace("EConVarType") - .addConstant("EConVarType_Invalid", (uint64_t)EConVarType::EConVarType_Invalid) - .addConstant("EConVarType_Bool", (uint64_t)EConVarType::EConVarType_Bool) - .addConstant("EConVarType_Int16", (uint64_t)EConVarType::EConVarType_Int16) - .addConstant("EConVarType_UInt16", (uint64_t)EConVarType::EConVarType_UInt16) - .addConstant("EConVarType_Int32", (uint64_t)EConVarType::EConVarType_Int32) - .addConstant("EConVarType_UInt32", (uint64_t)EConVarType::EConVarType_UInt32) - .addConstant("EConVarType_Int64", (uint64_t)EConVarType::EConVarType_Int64) - .addConstant("EConVarType_UInt64", (uint64_t)EConVarType::EConVarType_UInt64) - .addConstant("EConVarType_Float32", (uint64_t)EConVarType::EConVarType_Float32) - .addConstant("EConVarType_Float64", (uint64_t)EConVarType::EConVarType_Float64) - .addConstant("EConVarType_String", (uint64_t)EConVarType::EConVarType_String) - .addConstant("EConVarType_Color", (uint64_t)EConVarType::EConVarType_Color) - .addConstant("EConVarType_Vector2", (uint64_t)EConVarType::EConVarType_Vector2) - .addConstant("EConVarType_Vector3", (uint64_t)EConVarType::EConVarType_Vector3) - .addConstant("EConVarType_Vector4", (uint64_t)EConVarType::EConVarType_Vector4) - .addConstant("EConVarType_Qangle", (uint64_t)EConVarType::EConVarType_Qangle) - .endNamespace() - - .beginNamespace("GamePhase") - .addConstant("GAMEPHASE_WARMUP_ROUND", (uint64_t)GamePhase::GAMEPHASE_WARMUP_ROUND) - .addConstant("GAMEPHASE_PLAYING_STANDARD", (uint64_t)GamePhase::GAMEPHASE_PLAYING_STANDARD) - .addConstant("GAMEPHASE_PLAYING_FIRST_HALF", (uint64_t)GamePhase::GAMEPHASE_PLAYING_FIRST_HALF) - .addConstant("GAMEPHASE_PLAYING_SECOND_HALF", (uint64_t)GamePhase::GAMEPHASE_PLAYING_SECOND_HALF) - .addConstant("GAMEPHASE_HALFTIME", (uint64_t)GamePhase::GAMEPHASE_HALFTIME) - .addConstant("GAMEPHASE_MATCH_ENDED", (uint64_t)GamePhase::GAMEPHASE_MATCH_ENDED) - .addConstant("GAMEPHASE_MAX", (uint64_t)GamePhase::GAMEPHASE_MAX) - .endNamespace() - - .beginNamespace("ConvarFlags") - .addConstant("FCVAR_LINKED_CONCOMMAND", (uint64_t)FCVAR_LINKED_CONCOMMAND) - .addConstant("FCVAR_DEVELOPMENTONLY", (uint64_t)FCVAR_DEVELOPMENTONLY) - .addConstant("FCVAR_GAMEDLL", (uint64_t)FCVAR_GAMEDLL) - .addConstant("FCVAR_CLIENTDLL", (uint64_t)FCVAR_CLIENTDLL) - .addConstant("FCVAR_HIDDEN", (uint64_t)FCVAR_HIDDEN) - .addConstant("FCVAR_PROTECTED", (uint64_t)FCVAR_PROTECTED) - .addConstant("FCVAR_SPONLY", (uint64_t)FCVAR_SPONLY) - .addConstant("FCVAR_ARCHIVE", (uint64_t)FCVAR_ARCHIVE) - .addConstant("FCVAR_NOTIFY", (uint64_t)FCVAR_NOTIFY) - .addConstant("FCVAR_USERINFO", (uint64_t)FCVAR_USERINFO) - .addConstant("FCVAR_REFERENCE", (uint64_t)FCVAR_REFERENCE) - .addConstant("FCVAR_UNLOGGED", (uint64_t)FCVAR_UNLOGGED) - .addConstant("FCVAR_INITIAL_SETVALUE", (uint64_t)FCVAR_INITIAL_SETVALUE) - .addConstant("FCVAR_REPLICATED", (uint64_t)FCVAR_REPLICATED) - .addConstant("FCVAR_CHEAT", (uint64_t)FCVAR_CHEAT) - .addConstant("FCVAR_PER_USER", (uint64_t)FCVAR_PER_USER) - .addConstant("FCVAR_DEMO", (uint64_t)FCVAR_DEMO) - .addConstant("FCVAR_DONTRECORD", (uint64_t)FCVAR_DONTRECORD) - .addConstant("FCVAR_PERFORMING_CALLBACKS", (uint64_t)FCVAR_PERFORMING_CALLBACKS) - .addConstant("FCVAR_RELEASE", (uint64_t)FCVAR_RELEASE) - .addConstant("FCVAR_MENUBAR_ITEM", (uint64_t)FCVAR_MENUBAR_ITEM) - .addConstant("FCVAR_COMMANDLINE_ENFORCED", (uint64_t)FCVAR_COMMANDLINE_ENFORCED) - .addConstant("FCVAR_NOT_CONNECTED", (uint64_t)FCVAR_NOT_CONNECTED) - .addConstant("FCVAR_VCONSOLE_FUZZY_MATCHING", (uint64_t)FCVAR_VCONSOLE_FUZZY_MATCHING) - .addConstant("FCVAR_SERVER_CAN_EXECUTE", (uint64_t)FCVAR_SERVER_CAN_EXECUTE) - .addConstant("FCVAR_CLIENT_CAN_EXECUTE", (uint64_t)FCVAR_CLIENT_CAN_EXECUTE) - .addConstant("FCVAR_SERVER_CANNOT_QUERY", (uint64_t)FCVAR_SERVER_CANNOT_QUERY) - .addConstant("FCVAR_VCONSOLE_SET_FOCUS", (uint64_t)FCVAR_VCONSOLE_SET_FOCUS) - .addConstant("FCVAR_CLIENTCMD_CAN_EXECUTE", (uint64_t)FCVAR_CLIENTCMD_CAN_EXECUTE) - .addConstant("FCVAR_EXECUTE_PER_TICK", (uint64_t)FCVAR_EXECUTE_PER_TICK) - .addConstant("FCVAR_DEFENSIVE", (uint64_t)FCVAR_DEFENSIVE) - .endNamespace() - - .beginNamespace("ListenOverride") - .addConstant("Listen_Default", 0) - .addConstant("Listen_Mute", 1) - .addConstant("Listen_Hear", 2) - .endNamespace() - - .beginNamespace("VoiceFlagValue") - .addConstant("Speak_Normal", 0) - .addConstant("Speak_Muted", 1 << 0) - .addConstant("Speak_All", 1 << 1) - .addConstant("Speak_ListenAll", 1 << 2) - .addConstant("Speak_Team", 1 << 3) - .addConstant("Speak_ListenTeam", 1 << 4) - .endNamespace() - - .beginNamespace("LogType_t") - .addConstant("Debug", (uint64_t)LogType_t::Debug) - .addConstant("Warning", (uint64_t)LogType_t::Warning) - .addConstant("Error", (uint64_t)LogType_t::Error) - .addConstant("Common", (uint64_t)LogType_t::Common) - .endNamespace(); - } -) diff --git a/src/plugins/loader/scripting/sdk/schema.cpp b/src/plugins/loader/scripting/sdk/schema.cpp deleted file mode 100644 index acb621bd9..000000000 --- a/src/plugins/loader/scripting/sdk/schema.cpp +++ /dev/null @@ -1,255 +0,0 @@ -#include "../../core.h" -#include "../../../../sdk/access/sdkaccess.h" - -std::set classFuncs = { - ((uint64_t)hash_32_fnv1a_const("CBaseEntity") << 32 | hash_32_fnv1a_const("EHandle")), - ((uint64_t)hash_32_fnv1a_const("CBaseEntity") << 32 | hash_32_fnv1a_const("Spawn")), - ((uint64_t)hash_32_fnv1a_const("CBaseEntity") << 32 | hash_32_fnv1a_const("Despawn")), - ((uint64_t)hash_32_fnv1a_const("CBaseEntity") << 32 | hash_32_fnv1a_const("AcceptInput")), - ((uint64_t)hash_32_fnv1a_const("CBaseEntity") << 32 | hash_32_fnv1a_const("GetClassname")), - ((uint64_t)hash_32_fnv1a_const("CBaseEntity") << 32 | hash_32_fnv1a_const("GetVData")), - ((uint64_t)hash_32_fnv1a_const("CBaseEntity") << 32 | hash_32_fnv1a_const("Teleport")), - ((uint64_t)hash_32_fnv1a_const("CBaseEntity") << 32 | hash_32_fnv1a_const("EmitSound")), - ((uint64_t)hash_32_fnv1a_const("CBaseEntity") << 32 | hash_32_fnv1a_const("EmitSoundFromEntity")), - ((uint64_t)hash_32_fnv1a_const("CBaseEntity") << 32 | hash_32_fnv1a_const("TakeDamage")), - ((uint64_t)hash_32_fnv1a_const("CBaseEntity") << 32 | hash_32_fnv1a_const("CollisionRulesChanged")), - ((uint64_t)hash_32_fnv1a_const("CBaseModelEntity") << 32 | hash_32_fnv1a_const("SetModel")), - ((uint64_t)hash_32_fnv1a_const("CBaseModelEntity") << 32 | hash_32_fnv1a_const("SetSolidType")), - ((uint64_t)hash_32_fnv1a_const("CBaseModelEntity") << 32 | hash_32_fnv1a_const("SetBodygroup")), - ((uint64_t)hash_32_fnv1a_const("CAttributeList") << 32 | hash_32_fnv1a_const("SetOrAddAttributeValueByName")), - ((uint64_t)hash_32_fnv1a_const("CBasePlayerController") << 32 | hash_32_fnv1a_const("EntityIndex")), - ((uint64_t)hash_32_fnv1a_const("CGameSceneNode") << 32 | hash_32_fnv1a_const("GetSkeletonInstance")), - ((uint64_t)hash_32_fnv1a_const("CPlayerPawnComponent") << 32 | hash_32_fnv1a_const("GetPawn")), -}; - -SDKBaseClass* SDKBaseClass_SetData(SDKBaseClass* th, EValue val) { - if (val.isInstance()) { - th->SetPtr(val.cast()->GetPtr()); - } else if (val.isString()) { - auto str = val.cast(); - if (starts_with(str, "0x")) - th->SetPtr((void*)(strtol(str.c_str(), nullptr, 16))); - else - throw std::runtime_error(string_format("Invalid pointer: %s", str.c_str())); - } - else { - throw std::runtime_error("Invalid pointer or object."); - } - return th; -} - -int SDKBaseClass_GetProp(lua_State* state) -{ - EContext* ctx = GetContextByState(state); - SDKBaseClass *th = EValue::fromLuaStack(ctx, 1).cast(); - std::string field_name = EValue::fromLuaStack(ctx, 2).cast(); - - uint64_t path = (th->classOffset | hash_32_fnv1a_const(field_name.c_str())); - - if (field_name == "IsValid" || field_name == "ToPtr" || classFuncs.find(path) != classFuncs.end()) return CHelpers::indexMetaMethod(state); - - uint64_t id = g_callStack->RegisterPluginCallstack(FetchPluginName(ctx), string_format("SDK Get: %s::%s(ptr=%p)", th->m_className.c_str(), field_name.c_str(), th->GetPtr())); - th->AccessSDK(field_name, path, ctx).pushLua(); - g_callStack->UnregisterPluginCallstack(FetchPluginName(ctx), id); - return 1; -} - -int SDKBaseClass_SetProp(lua_State* state) -{ - EContext* ctx = GetContextByState(state); - SDKBaseClass *th = EValue::fromLuaStack(ctx, 1).cast(); - std::string field_name = EValue::fromLuaStack(ctx, 2).cast(); - EValue val = EValue::fromLuaStack(ctx, 3); - - uint64_t id = g_callStack->RegisterPluginCallstack(FetchPluginName(ctx), string_format("SDK Set: %s::%s(ptr=%p,value=%s)", th->m_className.c_str(), field_name.c_str(), th->GetPtr(), val.tostring())); - - th->UpdateSDK(field_name, val, ctx); - - g_callStack->UnregisterPluginCallstack(FetchPluginName(ctx), id); - return 0; -} - -int SDKBaseClass_CallProp(lua_State* state) -{ - EContext* ctx = GetContextByState(state); - SDKBaseClass *th = EValue::fromLuaStack(ctx, 1).cast(); - auto val = EValue::fromLuaStack(ctx, 2); - SDKBaseClass_SetData(th, val); - EValue(ctx, th).pushLua(); - return 1; -} - -JSValue SDKBaseClass__GetProp(JSContext* ctx, JSValue this_obj, int argc, JSValue* argv) -{ - EContext* ct = GetContextByState(ctx); - SDKBaseClass* th = EValue::fromJSStack(ct, argv[2]).cast(); - std::string field_name = EValue::fromJSStack(ct, argv[1]).cast(); - - uint64_t path = (th->classOffset | hash_32_fnv1a_const(field_name.c_str())); - - if (field_name == "IsValid" || field_name == "call" || field_name == "ToPtr" || field_name == "toString" || classFuncs.find(path) != classFuncs.end()) { - EValue v(ct, argv[0]); - EValue newv = v[field_name]; - JSValue val = newv.pushJS(); - return val; - } - - uint64_t id = g_callStack->RegisterPluginCallstack(FetchPluginName(ct), string_format("SDK Get: %s::%s(ptr=%p)", th->m_className.c_str(), field_name.c_str(), th->GetPtr())); - JSValue val = Stack::pushJS(ct, th->AccessSDK(field_name, path, ct)); - g_callStack->UnregisterPluginCallstack(FetchPluginName(ct), id); - return val; -} - -JSValue SDKBaseClass__SetProp(JSContext* ctx, JSValue this_obj, int argc, JSValue* argv) -{ - EContext* ct = GetContextByState(ctx); - SDKBaseClass* th = EValue::fromJSStack(ct, argv[3]).cast(); - std::string field_name = EValue::fromJSStack(ct, argv[1]).cast(); - EValue val = EValue::fromJSStack(ct, argv[2]); - - uint64_t id = g_callStack->RegisterPluginCallstack(FetchPluginName(ct), string_format("SDK Set: %s::%s(ptr=%p,value=%s)", th->m_className.c_str(), field_name.c_str(), th->GetPtr(), val.tostring().c_str())); - th->UpdateSDK(field_name, val, ct); - g_callStack->UnregisterPluginCallstack(FetchPluginName(ct), id); - return JS_UNDEFINED; -} - -JSValue SDKBaseClass__CallProp(JSContext* ctx, JSValue this_obj, int argc, JSValue* argv) -{ - EContext* ct = GetContextByState(ctx); - SDKBaseClass* th = EValue::fromJSStack(ct, this_obj).cast(); - auto val = EValue::fromJSStack(ct, argv[0]); - - SDKBaseClass_SetData(th, val); - return JS_DupValue(ctx, EValue(ct, th).pushJS()); -} - -int CBaseEntity_SpawnLua(lua_State* state) { - SDKBaseClass* ptr = EValue::fromLuaStack(GetContextByState(state), 1).cast(); - EValue ref = EValue::fromLuaStack(GetContextByState(state), 2); - if (ref.isInstance()) { - auto kv = ref.cast(); - ptr->CBaseEntity_Spawn(kv); - } - else - ptr->CBaseEntity_Spawn(nullptr); - return 0; -} - -int CBaseEntity_TeleportLua(lua_State* L) -{ - SDKBaseClass* ptr = EValue::fromLuaStack(GetContextByState(L), 1).cast(); - auto pos = EValue::fromLuaStack(GetContextByState(L), 2); - auto ang = EValue::fromLuaStack(GetContextByState(L), 3); - auto vel = EValue::fromLuaStack(GetContextByState(L), 4); - Vector po(0.0, 0.0, 0.0), ve(0.0, 0.0, 0.0); - QAngle an(0.0, 0.0, 0.0); - if (pos.isInstance()) - po = pos.cast(); - if (ang.isInstance()) - an = ang.cast(); - if (vel.isInstance()) - ve = vel.cast(); - - ptr->CBaseEntity_Teleport(po, an, ve); - return 0; -} - -JSValue CBaseEntity_SpawnJS(JSContext* ctx, JSValue this_arg, int argc, JSValue* argv) -{ - SDKBaseClass* ptr = EValue::fromJSStack(GetContextByState(ctx), this_arg).cast(); - if(argc == 1) { - EValue ref = EValue::fromJSStack(GetContextByState(ctx), argv[0]); - if (ref.isInstance()) { - auto kv = ref.cast(); - ptr->CBaseEntity_Spawn(kv); - } - else - ptr->CBaseEntity_Spawn(nullptr); - } else { - ptr->CBaseEntity_Spawn(nullptr); - } - return JS_UNDEFINED; -} - -JSValue CBaseEntity_TeleportJS(JSContext* ctx, JSValue this_arg, int argc, JSValue* argv) -{ - SDKBaseClass* ptr = EValue::fromJSStack(GetContextByState(ctx), this_arg).cast(); - Vector po(0.0, 0.0, 0.0), ve(0.0, 0.0, 0.0); - QAngle an(0.0, 0.0, 0.0); - if(argc >= 1) { - auto pos = EValue::fromJSStack(GetContextByState(ctx), argv[0]); - if(pos.isInstance()) - po = pos.cast(); - } - if(argc >= 2) { - auto ang = EValue::fromJSStack(GetContextByState(ctx), argv[1]); - if(ang.isInstance()) - an = ang.cast(); - } - if(argc >= 3) { - auto vel = EValue::fromJSStack(GetContextByState(ctx), argv[2]); - if(vel.isInstance()) - ve = vel.cast(); - } - - ptr->CBaseEntity_Teleport(po, an, ve); - return JS_UNDEFINED; -} - -std::string SDKBaseClass_tostring(SDKBaseClass* basecls) -{ - return string_format("%s(ptr=%p)", basecls->GetClassName().c_str(), basecls->GetPtr()); -} - -bool IsSDKClass(std::string key) { - return sch::IsClassLoaded(key.c_str()); -} - -SDKBaseClass GenerateSDKFactory(std::string className) { - return SDKBaseClass(nullptr, className); -} - -void SchemaLoad(Plugin* plugin, EContext* state) -{ - GetGlobalNamespace(state) - .addFunction("IsSDKClass", IsSDKClass) - .addFunction("GenerateSDKFactory", GenerateSDKFactory); - - BeginClass("SDKBaseClass", state) - .addConstructor() - .addFunction("EntityIndex", &SDKBaseClass::CBasePlayerController_EntityIndex) - .addFunction("SetModel", &SDKBaseClass::CBaseModelEntity_SetModel) - .addFunction("SetSolidType", &SDKBaseClass::CBaseModelEntity_SetSolidType) - .addFunction("SetBodygroup", &SDKBaseClass::CBaseModelEntity_SetBodygroup) - .addFunction("SetOrAddAttributeValueByName", &SDKBaseClass::CAttributeList_SetOrAddAttributeValueByName) - .addFunction("EHandle", &SDKBaseClass::CBaseEntity_EHandle) - .addLuaFunction("Spawn", CBaseEntity_SpawnLua) - .addJSFunction("Spawn", CBaseEntity_SpawnJS) - .addFunction("Despawn", &SDKBaseClass::CBaseEntity_Despawn) - .addFunction("AcceptInput", &SDKBaseClass::CBaseEntity_AcceptInput) - .addFunction("GetClassname", &SDKBaseClass::CBaseEntity_GetClassname) - .addFunction("GetVData", &SDKBaseClass::CBaseEntity_GetVData) - .addLuaFunction("Teleport", CBaseEntity_TeleportLua) - .addJSFunction("Teleport", CBaseEntity_TeleportJS) - .addFunction("EmitSound", &SDKBaseClass::CBaseEntity_EmitSound) - .addFunction("EmitSoundFromEntity", &SDKBaseClass::CBaseEntity_EmitSoundFromEntity) - .addFunction("TakeDamage", &SDKBaseClass::CBaseEntity_TakeDamage) - .addFunction("CollisionRulesChanged", &SDKBaseClass::CBaseEntity_CollisionRulesChanged) - .addFunction("GetSkeletonInstance", &SDKBaseClass::CGameSceneNode_GetSkeletonInstance) - .addFunction("GetPawn", &SDKBaseClass::CPlayerPawnComponent_GetPawn) - .addLuaFunction("__index", SDKBaseClass_GetProp) - .addLuaFunction("__newindex", SDKBaseClass_SetProp) - .addLuaFunction("__call", SDKBaseClass_CallProp) - .addJSFunction("call", SDKBaseClass__CallProp) - .addFunction("IsValid", &SDKBaseClass::IsValid) - .addFunction("ToPtr", &SDKBaseClass::ToPtr) - .addLuaFunction("__tostring", SDKBaseClass_tostring) - .addJSFunction("toString", SDKBaseClass_tostring) - .addJSCustomIndex(SDKBaseClass__GetProp, SDKBaseClass__SetProp) - .endClass(); -} - -LoadScriptingComponent( - schema, - SchemaLoad -) diff --git a/src/plugins/loader/scripting/sdk/types.cpp b/src/plugins/loader/scripting/sdk/types.cpp deleted file mode 100644 index 3be3c4d5e..000000000 --- a/src/plugins/loader/scripting/sdk/types.cpp +++ /dev/null @@ -1,59 +0,0 @@ -#include "../../core.h" -#include "../../../../sdk/access/sdkaccess.h" - -bool IsTypeClass(std::string key) { - auto types = g_sdk->GetSDKTypes(); - return (types.find(key) != types.end()); -} - -SDKBaseType GenerateTypeFactory(std::string className) { - return SDKBaseType(className); -} - -JSValue GetType(JSContext* ctx, JSValue this_arg, int argc, JSValue* argv) -{ - EContext* ct = GetContextByState(ctx); - std::string key = EValue::fromJSStack(ct, argv[1]).cast(); - SDKBaseType* type = EValue::fromJSStack(ct, argv[2]).cast(); - - return EValue(ct, type->GetTypeValue(key)).pushJS(); -} - -JSValue SetType(JSContext* ctx, JSValue this_arg, int argc, JSValue* argv) -{ - return JS_ThrowSyntaxError(ctx, "You cannot set values to types."); -} - -int Lua_GetType(lua_State* state) -{ - EContext* ctx = GetContextByState(state); - SDKBaseType *th = EValue::fromLuaStack(ctx, 1).cast(); - std::string field_name = EValue::fromLuaStack(ctx, 2).cast(); - - EValue(ctx, th->GetTypeValue(field_name)).pushLua(); - return 1; -} - -int Lua_SetType(lua_State* state) -{ - return 0; -} - -std::map jsBaseTypes; - -LoadScriptingComponent( - types, - [](Plugin* plugin, EContext* state) - { - auto gns = GetGlobalNamespace(state); - - gns - .addFunction("IsTypeClass", IsTypeClass) - .addFunction("GenerateTypeFactory", GenerateTypeFactory); - - BeginClass("SDKBaseType", state) - .addJSCustomIndex(GetType, SetType) - .addLuaCustomIndex(Lua_GetType, Lua_SetType) - .endClass(); - } -) \ No newline at end of file diff --git a/src/plugins/loader/scripting/server/commands.cpp b/src/plugins/loader/scripting/server/commands.cpp deleted file mode 100644 index 53fceabef..000000000 --- a/src/plugins/loader/scripting/server/commands.cpp +++ /dev/null @@ -1,21 +0,0 @@ -#include "../../core.h" - -LoadScriptingComponent( - commands, - [](Plugin* plugin, EContext* state) - { - BeginClass("Commands", state) - .addConstructor() - .addFunction("Register", &PluginCommands::RegisterCommand) - .addFunction("Unregister", &PluginCommands::UnregisterCommand) - .addFunction("RegisterRawAlias", &PluginCommands::RegisterRawAlias) - .addFunction("RegisterAlias", &PluginCommands::RegisterAlias) - .addFunction("UnregisterAlias", &PluginCommands::UnregisterAlias) - .addFunction("GetAllCommands", &PluginCommands::GetAllCommands) - .addFunction("GetCommands", &PluginCommands::GetCommands) - .endClass(); - - if(state->GetKind() == ContextKinds::Lua) state->RunCode("commands = Commands(GetCurrentPluginName())"); - else if(state->GetKind() == ContextKinds::JavaScript) state->RunCode("globalThis.commands = Commands(GetCurrentPluginName())"); - } -) \ No newline at end of file diff --git a/src/plugins/loader/scripting/server/configuration.cpp b/src/plugins/loader/scripting/server/configuration.cpp deleted file mode 100644 index fec4f54b0..000000000 --- a/src/plugins/loader/scripting/server/configuration.cpp +++ /dev/null @@ -1,19 +0,0 @@ -#include "../../core.h" - -LoadScriptingComponent( - configuration, - [](Plugin* plugin, EContext* state) - { - BeginClass("Configuration", state) - .addConstructor() - .addFunction("Exists", &PluginConfiguration::Exists) - .addFunction("Reload", &PluginConfiguration::Reload) - .addFunction("FetchArraySize", &PluginConfiguration::FetchArraySize) - .addFunction("Fetch", &PluginConfiguration::Fetch) - .addFunction("Create", &PluginConfiguration::Create) - .endClass(); - - if(state->GetKind() == ContextKinds::Lua) state->RunCode("config = Configuration(GetCurrentPluginName())"); - else if(state->GetKind() == ContextKinds::JavaScript) state->RunCode("globalThis.config = Configuration(GetCurrentPluginName())"); - } -) \ No newline at end of file diff --git a/src/plugins/loader/scripting/server/menus.cpp b/src/plugins/loader/scripting/server/menus.cpp deleted file mode 100644 index 179b64aa1..000000000 --- a/src/plugins/loader/scripting/server/menus.cpp +++ /dev/null @@ -1,17 +0,0 @@ -#include "../../core.h" - -LoadScriptingComponent( - menus, - [](Plugin* plugin, EContext* state) - { - BeginClass("Menus", state) - .addConstructor() - .addFunction("Register", &PluginMenus::Register) - .addFunction("RegisterTemporary", &PluginMenus::RegisterTemporary) - .addFunction("Unregister", &PluginMenus::Unregister) - .endClass(); - - if(state->GetKind() == ContextKinds::Lua) state->RunCode("menus = Menus(GetCurrentPluginName())"); - else if(state->GetKind() == ContextKinds::JavaScript) state->RunCode("globalThis.menus = Menus(GetCurrentPluginName())"); - } -) \ No newline at end of file diff --git a/src/plugins/loader/scripting/server/translations.cpp b/src/plugins/loader/scripting/server/translations.cpp deleted file mode 100644 index acac08076..000000000 --- a/src/plugins/loader/scripting/server/translations.cpp +++ /dev/null @@ -1,29 +0,0 @@ -#include "../../core.h" - -int FetchTranslationLua(lua_State* L) -{ - std::string res = scripting_FetchTranslation(EValue::fromLuaStack(GetContextByState(L), 1).cast(), EValue::fromLuaStack(GetContextByState(L), 2).cast>().value_or(-1)); - EValue(GetContextByState(L), res).pushLua(); - return 1; -} - -JSValue FetchTranslationJS(JSContext* ctx, JSValue this_obj, int argc, JSValue* argv) -{ - std::string res; - if(argc == 1) { - res = scripting_FetchTranslation(EValue::fromJSStack(GetContextByState(ctx), argv[0]).cast(), -1); - } else if(argc == 2) { - res = scripting_FetchTranslation(EValue::fromJSStack(GetContextByState(ctx), argv[0]).cast(), EValue::fromJSStack(GetContextByState(ctx), argv[1]).cast()); - } - return EValue(GetContextByState(ctx), res).pushJS(); -} - -LoadScriptingComponent( - translation, - [](Plugin* plugin, EContext* state) - { - GetGlobalNamespace(state) - .addLuaFunction("FetchTranslation", FetchTranslationLua) - .addJSFunction("FetchTranslation", FetchTranslationJS); - } -) \ No newline at end of file diff --git a/src/plugins/loader/scripting/server/utils.cpp b/src/plugins/loader/scripting/server/utils.cpp deleted file mode 100644 index b609d28ba..000000000 --- a/src/plugins/loader/scripting/server/utils.cpp +++ /dev/null @@ -1,58 +0,0 @@ -#include "../../core.h" -#include - -std::string FetchPluginName(EContext* state); -void RegisterTimeout(int64_t delay, std::function cb); - -#define FetchPluginByState(state) g_pluginManager->FetchPlugin(FetchPluginName(state)) - -void scripting_AddTimeout(int64_t delay, EValue callback, EContext* ctx) -{ - if (!callback.isFunction()) return; - EValue* cb = new EValue(callback); - - RegisterTimeout(delay, [cb, ctx]() -> void { - auto pl = FetchPluginByState(ctx); - if (pl == nullptr) return; - if(cb->getContext() != pl->GetContext()) { - cb->MarkNoFree(); - delete cb; - return; - } - - if (!cb->isFunction()) { - delete cb; - return; - } - - try { - cb->operator()(); - } - catch (EException& e) - { - PLUGIN_PRINTF("RegisterTimeout", "An error has occured while trying to execute the timeout callback: %s\n", e.what()); - } - delete cb; - }); -} - -LoadScriptingComponent( - utils, - [](Plugin* plugin, EContext* state) - { - GetGlobalNamespace(state) - .addFunction("AddTimeout", scripting_AddTimeout) - .addFunction("GetPluginPath", scripting_GetPluginPath) - .addFunction("GetTime", GetTime) - .addFunction("IsWindows", scripting_IsWindows) - .addFunction("IsLinux", scripting_IsLinux) - .addFunction("GetOS", scripting_GetOS) - .addFunction("StateUpdate", scripting_StateUpdate) - .addFunction("GetUserMessage", scripting_GetUserMessage) - .addFunction("GetPluginState", scripting_GetPluginState) - .addFunction("GetCCSGameRules", scripting_GetCCSGameRules) - .addFunction("CreateTextTable", scripting_CreateTextTable) - .addFunction("RegisterCallstack", RegisterCallstack) - .addFunction("UnregisterCallstack", UnregisterCallstack); - } -) \ No newline at end of file diff --git a/src/plugins/stack.h b/src/plugins/stack.h deleted file mode 100644 index 63480523a..000000000 --- a/src/plugins/stack.h +++ /dev/null @@ -1,116 +0,0 @@ -#ifndef _plugins_stack_h -#define _plugins_stack_h - -#include -#include -#include - -std::any DeserializeData(EValue ref, EContext* state); -EValue SerializeData(std::any data, EContext* state); - -template -struct Stack; - -template<> -struct Stack -{ - static void pushLua(EContext* ctx, std::any value) - { - SerializeData(value, ctx).pushLua(); - } - - static JSValue pushJS(EContext* ctx, std::any value) - { - return JS_DupValue((JSContext*)ctx->GetState(), SerializeData(value, ctx).pushJS()); - } - - static std::any getLua(EContext* ctx, int ref) - { - return DeserializeData(EValue(ctx, ref, false), ctx); - } - - static std::any getJS(EContext* ctx, JSValue value) - { - return DeserializeData(EValue(ctx, value), ctx); - } - - static bool isLuaInstance(EContext* ctx, int ref) - { - return true; - } - - static bool isJSInstance(EContext* ctx, JSValue value) - { - return true; - } -}; - -template<> -struct Stack -{ - static void pushLua(EContext* ctx, CUtlString value) - { - Stack::pushLua(ctx, value.Get()); - } - - static JSValue pushJS(EContext* ctx, CUtlString value) - { - return Stack::pushJS(ctx, value.Get()); - } - - static CUtlString getLua(EContext* ctx, int ref) - { - return CUtlString(Stack::getLua(ctx, ref).c_str()); - } - - static CUtlString getJS(EContext* ctx, JSValue value) - { - return CUtlString(Stack::getJS(ctx, value).c_str()); - } - - static bool isLuaInstance(EContext* ctx, int ref) - { - return Stack::isLuaInstance(ctx, ref); - } - - static bool isJSInstance(EContext* ctx, JSValue value) - { - return Stack::isJSInstance(ctx, value); - } -}; - -template<> -struct Stack -{ - static void pushLua(EContext* ctx, CUtlStringToken value) - { - Stack::pushLua(ctx, value.GetHashCode()); - } - - static JSValue pushJS(EContext* ctx, CUtlStringToken value) - { - return Stack::pushJS(ctx, value.GetHashCode()); - } - - static CUtlStringToken getLua(EContext* ctx, int ref) - { - return CUtlStringToken(Stack::getLua(ctx, ref)); - } - - static CUtlStringToken getJS(EContext* ctx, JSValue value) - { - return CUtlStringToken(Stack::getJS(ctx, value)); - } - - static bool isLuaInstance(EContext* ctx, int ref) - { - return Stack::isLuaInstance(ctx, ref); - } - - static bool isJSInstance(EContext* ctx, JSValue value) - { - return Stack::isJSInstance(ctx, value); - } -}; - -#endif \ No newline at end of file diff --git a/src/sdk/access/sdkaccess.cpp b/src/sdk/access/sdkaccess.cpp deleted file mode 100644 index 4750e8b59..000000000 --- a/src/sdk/access/sdkaccess.cpp +++ /dev/null @@ -1,132 +0,0 @@ -#include "sdkaccess.h" -#include "../../filesystem/files/Files.h" - -#include -#include -#include -#include -#include "../schema/schema.h" -#include - -extern std::set structCache; -void PopulateClassData(const char* className, uint32_t classOffset); - -SDKAccess::SDKAccess() {} -SDKAccess::~SDKAccess() { - fieldNames.clear(); - fieldTypes.clear(); - fieldSizes.clear(); - fieldClass.clear(); - sdktypes.clear(); -} - -void SDKAccess::LoadSDKData() -{ - rapidjson::Document sdkFile; - sdkFile.Parse(Files::Read("addons/swiftly/gamedata/sdk.json").c_str()); - if (sdkFile.HasParseError()) - return; - - if (!sdkFile.IsObject()) - return; - - for (auto it = sdkFile.MemberBegin(); it != sdkFile.MemberEnd(); ++it) - { - std::string className = it->name.GetString(); - uint32_t classOffset = hash_32_fnv1a_const(className.c_str()); - PopulateClassData(className.c_str(), classOffset); - classes.insert(className); - - if (it->value.IsObject()) { - for (auto it2 = it->value.MemberBegin(); it2 != it->value.MemberEnd(); ++it2) - { - std::string fieldName = it2->name.GetString(); - - if (it2->value.IsObject()) { - if (!it2->value.HasMember("field") || !it2->value.HasMember("type")) continue; - if (!it2->value["field"].IsString() || !it2->value["type"].IsUint()) continue; - - uint64_t key = ((uint64_t) hash_32_fnv1a_const(className.c_str()) << 32 | hash_32_fnv1a_const(fieldName.c_str())); - - this->fieldNames.insert({ key, it2->value["field"].GetString() }); - this->fieldTypes.insert({ key, (SDKFieldType_t)it2->value["type"].GetUint() }); - if (it2->value.HasMember("size") && it2->value["size"].IsUint()) this->fieldSizes.insert({ key, it2->value["size"].GetUint() }); - if (it2->value.HasMember("classname") && it2->value["classname"].IsString()) this->fieldClass.insert({ key, it2->value["classname"].GetString() }); - } - } - } - } - - PRINTF("Succesfully loaded %lld SDK fields.\n", this->fieldNames.size()); - - rapidjson::Document sdkTypesFile; - sdkTypesFile.Parse(Files::Read("addons/swiftly/gamedata/sdk_types.json").c_str()); - if (sdkTypesFile.HasParseError()) - return; - - if (!sdkTypesFile.IsObject()) - return; - - for (auto it = sdkTypesFile.MemberBegin(); it != sdkTypesFile.MemberEnd(); ++it) - { - std::string typeName = it->name.GetString(); - if(sdktypes.find(typeName) == sdktypes.end()) sdktypes.insert({typeName, {}}); - - if (it->value.IsObject()) { - for (auto it2 = it->value.MemberBegin(); it2 != it->value.MemberEnd(); ++it2) - { - std::string fieldName = it2->name.GetString(); - int64_t value = it2->value.GetInt64(); - sdktypes[typeName].insert({fieldName, value}); - } - } - } - - PRINTF("Succesfully loaded %lld SDK types.\n", this->sdktypes.size()); -} - -std::set SDKAccess::GetClasses() -{ - return classes; -} - -std::map> SDKAccess::GetSDKTypes() -{ - return this->sdktypes; -} - -std::string SDKAccess::GetFieldName(uint64_t path) -{ - return this->fieldNames[path]; -} - -SDKFieldType_t SDKAccess::GetFieldType(uint64_t path) -{ - return this->fieldTypes[path]; -} - -std::string SDKAccess::GetFieldClass(uint64_t path) -{ - return this->fieldClass[path]; -} - -uint32_t SDKAccess::GetFieldSize(uint64_t path) -{ - return this->fieldSizes[path]; -} - -bool SDKAccess::ExistsField(uint64_t path) -{ - return (this->fieldNames.find(path) != this->fieldNames.end()); -} - -EXT_API void* swiftly_GetSDKPtr(void* ptr, const char* className, const char* fieldName) -{ - auto m_key = sch::GetOffset(className, fieldName); - return (void*)((uintptr_t)ptr + m_key); -} - -EXT_API void swiftly_SetStateChanged(void* ptr, const char* className, const char* fieldName, int extraOffset) -{ - SetStateChanged((uintptr_t)ptr, className, fieldName, extraOffset); -} \ No newline at end of file diff --git a/src/sdk/access/sdkaccess.h b/src/sdk/access/sdkaccess.h deleted file mode 100644 index 463743a94..000000000 --- a/src/sdk/access/sdkaccess.h +++ /dev/null @@ -1,109 +0,0 @@ -#ifndef _sdkaccess_h -#define _sdkaccess_h - -#include -#include -#include -#include - -enum SDKFieldType_t : uint32_t -{ - Int8 = 0, - Int16, - Int32, - Int64, - UInt8, - UInt16, - UInt32, - UInt64, - Float, - Double, - Bool, - Parent, - StringToken, - StringSymbolLarge, - StringUtl, - String, - Class, - SDKCHandle, - EntityIndex, - SColor, - SQAngle, - SVector, - SVector2D, - SVector4D, - ClassPointer, - RawListEntityIndex, - - StringSymbolLargeArray, - StringTokenArray, - StringUtlArray, - Int8Array, - Int16Array, - Int32Array, - Int64Array, - UInt8Array, - UInt16Array, - UInt32Array, - UInt64Array, - FloatArray, - DoubleArray, - BoolArray, - SColorArray, - SQAngleArray, - SVectorArray, - SVector2DArray, - SVector4DArray, - ClassArray, - CHandleArray, - - CHandleCUtlVector, - StringSymbolLargeCUtlVector, - StringTokenCUtlVector, - StringUtlCUtlVector, - Int8CUtlVector, - Int16CUtlVector, - Int32CUtlVector, - Int64CUtlVector, - UInt8CUtlVector, - UInt16CUtlVector, - UInt32CUtlVector, - UInt64CUtlVector, - FloatCUtlVector, - DoubleCUtlVector, - SColorCUtlVector, - SQAngleCUtlVector, - SVectorCUtlVector, - SVector2DCUtlVector, - SVector4DCUtlVector, - BoolCUtlVector, -}; - -class SDKAccess { -private: - std::map fieldNames; - std::map fieldTypes; - std::map fieldSizes; - std::map fieldClass; - std::map> sdktypes; - std::set classes; - -public: - SDKAccess(); - ~SDKAccess(); - - void LoadSDKData(); - - std::string GetFieldName(uint64_t path); - SDKFieldType_t GetFieldType(uint64_t path); - std::string GetFieldClass(uint64_t path); - uint32_t GetFieldSize(uint64_t path); - std::set GetClasses(); - std::map> GetSDKTypes(); - - bool ExistsField(uint64_t path); -}; - -extern SDKAccess* g_sdk; - -#endif \ No newline at end of file diff --git a/src/sdk/entity/CBaseCombatCharacter.h b/src/sdk/entity/CBaseCombatCharacter.h deleted file mode 100644 index 9717d372e..000000000 --- a/src/sdk/entity/CBaseCombatCharacter.h +++ /dev/null @@ -1,15 +0,0 @@ -#ifndef _cbasecombatcharacter_sdk_h -#define _cbasecombatcharacter_sdk_h - -#include "CBaseModelEntity.h" -#include "CCSWeaponBase.h" - -class CBaseCombatCharacter : public CBaseModelEntity -{ -public: - DECLARE_SCHEMA_CLASS_BASE(CBaseCombatCharacter) - - SCHEMA_FIELD_POINTER_OFFSET(CUtlVector>, m_hMyWearables, 0) -}; - -#endif \ No newline at end of file diff --git a/src/sdk/entity/CBaseEntity.h b/src/sdk/entity/CBaseEntity.h deleted file mode 100644 index 31c693043..000000000 --- a/src/sdk/entity/CBaseEntity.h +++ /dev/null @@ -1,199 +0,0 @@ -#pragma once - -#include "../../entrypoint.h" -#include "../schema/schema.h" -#include "../../memory/signatures/Offsets.h" -#include "../../common.h" -#include "globaltypes.h" -#include "CCollisionProperty.h" -#include "ehandle.h" -#include "CTakeDamageInfo.h" -#include - -#define CS_TEAM_NONE 0 -#define CS_TEAM_SPECTATOR 1 -#define CS_TEAM_T 2 -#define CS_TEAM_CT 3 - -inline CEntityInstance* UTIL_FindEntityByClassname(CEntityInstance* pStart, const char* name) -{ - extern CEntitySystem* g_pEntitySystem; - CEntityIdentity* pEntity = pStart ? pStart->m_pEntity->m_pNext : g_pEntitySystem->m_EntityList.m_pFirstActiveEntity; - - for (; pEntity; pEntity = pEntity->m_pNext) - { - if (!strcmp(pEntity->m_designerName.String(), name)) - return pEntity->m_pInstance; - }; - - return nullptr; -} - -class CEntitySubclassVDataBase -{ -public: - DECLARE_SCHEMA_CLASS_BASE(CEntitySubclassVDataBase) -}; - -class CModelState -{ -public: - DECLARE_SCHEMA_CLASS_BASE(CModelState) - - SCHEMA_FIELD_OFFSET(uint64_t, m_MeshGroupMask, 0) -}; - -class CSkeletonInstance -{ -public: - DECLARE_SCHEMA_CLASS_BASE(CSkeletonInstance) - - SCHEMA_FIELD_POINTER_OFFSET(CModelState, m_modelState, 0) -}; - -class CGameSceneNode -{ -public: - DECLARE_SCHEMA_CLASS_BASE(CGameSceneNode) - - SCHEMA_FIELD_OFFSET(CEntityInstance*, m_pOwner, 0); - SCHEMA_FIELD_OFFSET(CGameSceneNode*, m_pParent, 0); - SCHEMA_FIELD_OFFSET(CGameSceneNode*, m_pChild, 0); - SCHEMA_FIELD_OFFSET(CNetworkOriginCellCoordQuantizedVector, m_vecOrigin, 0); - SCHEMA_FIELD_OFFSET(QAngle, m_angRotation, 0); - SCHEMA_FIELD_OFFSET(float, m_flScale, 0); - SCHEMA_FIELD_OFFSET(float, m_flAbsScale, 0); - SCHEMA_FIELD_OFFSET(Vector, m_vecAbsOrigin, 0); - SCHEMA_FIELD_OFFSET(QAngle, m_angAbsRotation, 0); - SCHEMA_FIELD_OFFSET(Vector, m_vRenderOrigin, 0); - - matrix3x4_t EntityToWorldTransform() - { - matrix3x4_t mat; - - // issues with this and im tired so hardcoded it - // AngleMatrix(this->m_angAbsRotation(), this->m_vecAbsOrigin(), mat); - - QAngle angles = this->m_angAbsRotation(); - float sr, sp, sy, cr, cp, cy; - SinCos(DEG2RAD(angles[YAW]), &sy, &cy); - SinCos(DEG2RAD(angles[PITCH]), &sp, &cp); - SinCos(DEG2RAD(angles[ROLL]), &sr, &cr); - mat[0][0] = cp * cy; - mat[1][0] = cp * sy; - mat[2][0] = -sp; - - float crcy = cr * cy; - float crsy = cr * sy; - float srcy = sr * cy; - float srsy = sr * sy; - mat[0][1] = sp * srcy - crsy; - mat[1][1] = sp * srsy + crcy; - mat[2][1] = sr * cp; - - mat[0][2] = (sp * crcy + srsy); - mat[1][2] = (sp * crsy - srcy); - mat[2][2] = cr * cp; - - Vector pos = this->m_vecAbsOrigin(); - mat[0][3] = pos.x; - mat[1][3] = pos.y; - mat[2][3] = pos.z; - - return mat; - } - - CSkeletonInstance* GetSkeletonInstance() - { - return CALL_VIRTUAL(CSkeletonInstance*, g_Offsets->GetOffset("CGameSceneNode_GetSkeletonInstance"), this); - } -}; - -class CBodyComponent -{ -public: - DECLARE_SCHEMA_CLASS_BASE(CBodyComponent) - - SCHEMA_FIELD_OFFSET(CGameSceneNode*, m_pSceneNode, 0) -}; - -class CBaseEntity; -typedef void (*CBaseEntity_SetParent)(CBaseEntity*, CBaseEntity*); -void Hook_CBaseEntity_TakeDamage(CBaseEntity* _this, CTakeDamageInfo* damageInfo); - -class CBaseEntity : public CEntityInstance -{ -public: - DECLARE_SCHEMA_CLASS_BASE(CBaseEntity) - - SCHEMA_FIELD_OFFSET(int, m_iHealth, 0); - SCHEMA_FIELD_OFFSET(int, m_iMaxHealth, 0); - SCHEMA_FIELD_OFFSET(int, m_iTeamNum, 0); - SCHEMA_FIELD_OFFSET(CBodyComponent*, m_CBodyComponent, 0); - SCHEMA_FIELD_POINTER_OFFSET(CUtlStringToken, m_nSubclassID, 0); - SCHEMA_FIELD_OFFSET(CHandle, m_hOwnerEntity, 0); - SCHEMA_FIELD_OFFSET(uint32_t, m_lifeState, 0); - - int EntityIndex() { return this->m_pEntity->GetRefEHandle().GetEntryIndex(); } - int entindex() { return m_pEntity->m_EHandle.GetEntryIndex(); } - - void Teleport(Vector* position, QAngle* angles, Vector* velocity) - { - static int offset = g_Offsets->GetOffset("CBaseEntity_Teleport"); - CALL_VIRTUAL(void, offset, this, position, angles, velocity); - } - - void SetParent(CBaseEntity* ent) - { - AcceptInput("SetParent", ent, nullptr, "!activator", 0); - } - - void TakeDamage(int damage) - { - this->m_iHealth = this->m_iHealth() - damage; - } - - void DispatchSpawn(CEntityKeyValues* kv = nullptr) - { - g_Signatures->FetchSignature("CBaseEntity_DispatchSpawn")(this, kv); - } - - void Despawn() - { - g_Signatures->FetchSignature("UTIL_Remove")(this); - } - - void AcceptInput(const char* pInputName, CEntityInstance* pActivator = nullptr, CEntityInstance* pCaller = nullptr, const char* value = nullptr, int outputID = 0) - { - variant_t variantValue = variant_t(value); - g_Signatures->FetchSignature("CEntityInstance_AcceptInput")(this, pInputName, pActivator, pCaller, &variantValue, outputID); - } - - void EmitSoundFilter(IRecipientFilter& filter, std::string sound_name, int pitch, float volume) - { - EmitSound_t params; - params.m_pSoundName = sound_name.c_str(); - params.m_flVolume = volume; - params.m_nPitch = pitch; - - g_Signatures->FetchSignature("CBaseEntity_EmitSoundFilter")(filter, m_pEntity->m_EHandle.GetEntryIndex(), params); - } - - void EmitSoundFromEntity(std::string sound_name, int pitch, float volume, float delay) - { - g_Signatures->FetchSignature("CBaseEntity_EmitSoundParams")(this, sound_name.c_str(), pitch, volume, delay); - } - - void CollisionRulesChanged() - { - static int offset = g_Offsets->GetOffset("CollisionRulesChanged"); - CALL_VIRTUAL(void, offset, this); - } - - void TakeDamage(CTakeDamageInfo *info) - { - Hook_CBaseEntity_TakeDamage(this, info); - } - - CEntitySubclassVDataBase* GetVData() { return *(CEntitySubclassVDataBase**)((uint8*)(m_nSubclassID()) + 4); } -}; \ No newline at end of file diff --git a/src/sdk/entity/CBaseModelEntity.h b/src/sdk/entity/CBaseModelEntity.h deleted file mode 100644 index c0f50dad2..000000000 --- a/src/sdk/entity/CBaseModelEntity.h +++ /dev/null @@ -1,53 +0,0 @@ -#pragma once - -#include "CBaseEntity.h" -#include "globaltypes.h" -#include "../../memory/signatures/Signatures.h" -#include "../../entitysystem/precacher/precacher.h" - -class CBaseModelEntity; - -class CNetworkViewOffsetVector -{ -public: - DECLARE_SCHEMA_CLASS_BASE(CNetworkViewOffsetVector); - - SCHEMA_FIELD_OFFSET(float, m_vecX, 0); - SCHEMA_FIELD_OFFSET(float, m_vecY, 0); - SCHEMA_FIELD_OFFSET(float, m_vecZ, 0); -}; - -class CBaseModelEntity : public CBaseEntity -{ -public: - DECLARE_SCHEMA_CLASS_BASE(CBaseModelEntity) - - SCHEMA_FIELD_POINTER_OFFSET(CCollisionProperty, m_Collision, 0); - SCHEMA_FIELD_OFFSET(CGlowProperty, m_Glow, 0); - SCHEMA_FIELD_OFFSET(Color, m_clrRender, 0); - SCHEMA_FIELD_POINTER_OFFSET(CNetworkViewOffsetVector, m_vecViewOffset, 0); - - void SetModel(const char* model) - { - bool hasModel = (g_precacher->HasModelInList(model)); - if (!hasModel) - { - g_precacher->AddItem(model); - PLUGIN_PRINTF("Precacher", "Model '%s' was not precached before and it was added to the list.\n", model); - PLUGIN_PRINTF("Precacher", "It may work on the second map change if the model is valid.\n"); - } - - g_Signatures->FetchSignature("CBaseModelEntity_SetModel")(this, model); - } - - void SetBodygroup(const char* str, uint64_t val) - { - g_Signatures->FetchSignature("CBaseModelEntity_SetBodygroup")(this, str, val); - } - - void SetSolidType(SolidType_t type) - { - this->m_Collision->m_nSolidType = type; - CollisionRulesChanged(); - } -}; \ No newline at end of file diff --git a/src/sdk/entity/CBasePlayerController.h b/src/sdk/entity/CBasePlayerController.h deleted file mode 100644 index 4cf0cfdc0..000000000 --- a/src/sdk/entity/CBasePlayerController.h +++ /dev/null @@ -1,57 +0,0 @@ -#pragma once - -#include "ehandle.h" -#include "CBaseEntity.h" -#include "CCSPlayerPawn.h" -#include "CRecipientFilters.h" -#include "usermessages.pb.h" - -enum class CPlayerConnectedState : uint32_t -{ - PlayerNeverConnected = 0xFFFFFFFF, - PlayerConnected = 0x0, - PlayerConnecting = 0x1, - PlayerReconnecting = 0x2, - PlayerDisconnecting = 0x3, - PlayerDisconnected = 0x4, - PlayerReserved = 0x5, -}; - -class CBasePlayerController; -typedef void (*CBasePlayerController_SetPawn)(CBasePlayerController*, CCSPlayerPawn*, bool, bool); - -class CBasePlayerController : public CBaseEntity -{ -public: - DECLARE_SCHEMA_CLASS_BASE(CBasePlayerController) - - SCHEMA_FIELD_OFFSET(uint64, m_steamID, 0); - SCHEMA_FIELD_OFFSET(CHandle, m_hPawn, 0); - SCHEMA_FIELD_POINTER_OFFSET(char, m_iszPlayerName, 0); - SCHEMA_FIELD_OFFSET(CPlayerConnectedState, m_iConnected, 0); - SCHEMA_FIELD_OFFSET(uint32_t, m_iDesiredFOV, 0); - SCHEMA_FIELD_OFFSET(bool, m_bIsHLTV, 0); - - int GetPlayerSlot() { return entindex() - 1; } - - void SendMsg(int destination, const char* message) - { - INetworkMessageInternal* pNetMsg = g_pNetworkMessages->FindNetworkMessagePartial("TextMsg"); - auto data = pNetMsg->AllocateMessage()->ToPB(); - - data->set_dest(destination); - data->add_param(message); - - CSingleRecipientFilter filter(this->GetPlayerSlot()); - g_pGameEventSystem->PostEventAbstract(-1, false, &filter, pNetMsg, data, 0); - - #ifndef _WIN32 - delete data; - #endif - } - - void SetPawn(CCSPlayerPawn* pawn) - { - g_Signatures->FetchSignature("CBasePlayerController_SetPawn")(this, pawn, true, false); - } -}; \ No newline at end of file diff --git a/src/sdk/entity/CBasePlayerPawn.h b/src/sdk/entity/CBasePlayerPawn.h deleted file mode 100644 index a5c3aeb8e..000000000 --- a/src/sdk/entity/CBasePlayerPawn.h +++ /dev/null @@ -1,38 +0,0 @@ -#pragma once - -#include "CBaseEntity.h" -#include "CBaseModelEntity.h" -#include "services.h" -#include "../../memory/signatures/Offsets.h" - -#include "../../utils/utils.h" -#include "../../common.h" -#include "../../entrypoint.h" - -class CBasePlayerPawn : public CBaseModelEntity -{ -public: - DECLARE_SCHEMA_CLASS_BASE(CBasePlayerPawn) - - SCHEMA_FIELD_OFFSET(CPlayer_MovementServices*, m_pMovementServices, 0); - SCHEMA_FIELD_OFFSET(CPlayer_WeaponServices*, m_pWeaponServices, 0); - SCHEMA_FIELD_OFFSET(CCSPlayer_ItemServices*, m_pItemServices, 0); - // @a.alex1421 - Discord -> Pointed out that m_pObserverServices should be with SCHEMA_FIELD not SCHEMA_FIELD_POINTER - SCHEMA_FIELD_OFFSET(CPlayer_ObserverServices*, m_pObserverServices, 0); - SCHEMA_FIELD_OFFSET(CPlayer_CameraServices*, m_pCameraServices, 0); - SCHEMA_FIELD_OFFSET(CHandle, m_hController, 0); - - void TakeDamage(int damage) - { - if (this->m_iHealth() - damage <= 0) - this->CommitSuicide(false, true); - else - CBaseEntity::TakeDamage(damage); - } - - void CommitSuicide(bool explode, bool forced) - { - static int offset = g_Offsets->GetOffset("CBasePlayerPawn_CommitSuicide"); - CALL_VIRTUAL(void, offset, this, explode, forced); - } -}; \ No newline at end of file diff --git a/src/sdk/entity/CBaseViewModel.h b/src/sdk/entity/CBaseViewModel.h deleted file mode 100644 index dbd123120..000000000 --- a/src/sdk/entity/CBaseViewModel.h +++ /dev/null @@ -1,43 +0,0 @@ -#ifndef _cbaseviewmodel_h -#define _cbaseviewmodel_h - -#include "CBaseModelEntity.h" -#include "services.h" - -class CBaseViewModel; - -class CBaseViewModel : public CBaseModelEntity -{ -public: - DECLARE_SCHEMA_CLASS_BASE(CBaseViewModel) - - SCHEMA_FIELD_OFFSET(int, m_nViewModelIndex, 0); -}; - -class CCSGOViewModel : public CBaseViewModel -{ -public: - DECLARE_SCHEMA_CLASS_BASE(CCSGOViewModel) -}; - -class CCSPlayer_ViewModelServices : public CPlayerPawnComponent -{ -public: - DECLARE_SCHEMA_CLASS_BASE(CCSPlayer_ViewModelServices) - - SCHEMA_FIELD_POINTER_OFFSET(CHandle, m_hViewModel, 0); - - CBaseViewModel* GetViewModel(int iIndex = 0) - { - return m_hViewModel()[iIndex].Get(); - } - - void SetViewModel(int iIndex, CBaseViewModel* pViewModel) - { - m_hViewModel()[iIndex].Set(pViewModel); - pViewModel->m_nViewModelIndex = iIndex; - this->m_pPawn->NetworkStateChanged(); - } -}; - -#endif \ No newline at end of file diff --git a/src/sdk/entity/CCSBot.h b/src/sdk/entity/CCSBot.h deleted file mode 100644 index a7b22df13..000000000 --- a/src/sdk/entity/CCSBot.h +++ /dev/null @@ -1,20 +0,0 @@ -#pragma once - -#include "services.h" -class CCSPlayerController; - -class CBot -{ -public: - DECLARE_SCHEMA_CLASS_BASE(CBot) - - SCHEMA_FIELD_POINTER_OFFSET(CCSPlayerController, m_pController, 0); -}; - -class CCSBot : public CBot -{ -public: - DECLARE_SCHEMA_CLASS_BASE(CCSBot) - - SCHEMA_FIELD_POINTER_OFFSET(char, m_name, 0); -}; \ No newline at end of file diff --git a/src/sdk/entity/CCSPlayerController.h b/src/sdk/entity/CCSPlayerController.h deleted file mode 100644 index 817fbb0d7..000000000 --- a/src/sdk/entity/CCSPlayerController.h +++ /dev/null @@ -1,32 +0,0 @@ -#pragma once - -#include "CBasePlayerController.h" -#include "services.h" - -class CCSPlayerController : public CBasePlayerController -{ -public: - DECLARE_SCHEMA_CLASS_BASE(CCSPlayerController) - - SCHEMA_FIELD_OFFSET(CCSPlayerController_InGameMoneyServices *, m_pInGameMoneyServices, 0) - SCHEMA_FIELD_OFFSET(CCSPlayerController_ActionTrackingServices *, m_pActionTrackingServices, 0) - SCHEMA_FIELD_OFFSET(CCSPlayerController_InventoryServices *, m_pInventoryServices, 0) - SCHEMA_FIELD_OFFSET(bool, m_bPawnIsAlive, 0) - SCHEMA_FIELD_OFFSET(bool, m_bControllingBot, 0) - SCHEMA_FIELD_OFFSET(CHandle, m_hPlayerPawn, 0) - SCHEMA_FIELD_OFFSET(CHandle, m_hObserverPawn, 0) - SCHEMA_FIELD_OFFSET(CUtlSymbolLarge, m_szClan, 0) - SCHEMA_FIELD_POINTER_OFFSET(char, m_szClanName, 0) - SCHEMA_FIELD_OFFSET(int, m_iCompTeammateColor, 0) - SCHEMA_FIELD_OFFSET(CEntityHandle, m_hDesiredObserverTarget, 0) - - void Respawn() - { - CCSPlayerPawn *pawn = m_hPlayerPawn.Get(); - if (!pawn) - return; - - SetPawn(pawn); - CALL_VIRTUAL(void, g_Offsets->GetOffset("CCSPlayerController_Respawn"), this); - } -}; diff --git a/src/sdk/entity/CCSPlayerPawn.h b/src/sdk/entity/CCSPlayerPawn.h deleted file mode 100644 index 1d224e9b3..000000000 --- a/src/sdk/entity/CCSPlayerPawn.h +++ /dev/null @@ -1,25 +0,0 @@ -#pragma once - -#include "CBasePlayerPawn.h" -#include "CCSPlayerPawnBase.h" -#include "CBaseViewModel.h" -#include "CCSBot.h" - -class CCSPlayerPawn : public CCSPlayerPawnBase -{ -public: - DECLARE_SCHEMA_CLASS_BASE(CCSPlayerPawn) - - SCHEMA_FIELD_OFFSET(CCSPlayer_ActionTrackingServices*, m_pActionTrackingServices, 0); - SCHEMA_FIELD_OFFSET(CCSBot*, m_pBot, 0); - SCHEMA_FIELD_POINTER_OFFSET(CEconItemView, m_EconGloves, 0); - SCHEMA_FIELD_OFFSET(float, m_flHealthShotBoostExpirationTime, 0); - - void GiveNamedItem(const char* item) - { - if (this->m_pItemServices() == nullptr) - return; - - g_Signatures->FetchSignature("GiveNamedItem")(this->m_pItemServices(), item, 0, 0, 0, 0); - } -}; \ No newline at end of file diff --git a/src/sdk/entity/CCSPlayerPawnBase.h b/src/sdk/entity/CCSPlayerPawnBase.h deleted file mode 100644 index 3b284920d..000000000 --- a/src/sdk/entity/CCSPlayerPawnBase.h +++ /dev/null @@ -1,19 +0,0 @@ -#pragma once -#include "CBasePlayerPawn.h" -#include "../schema/schema.h" -#include "CBaseViewModel.h" - -class CCSPlayerController; - -class CCSPlayerPawnBase : public CBasePlayerPawn -{ -public: - DECLARE_SCHEMA_CLASS_BASE(CCSPlayerPawnBase) - - SCHEMA_FIELD_OFFSET(int, m_ArmorValue, 0); - SCHEMA_FIELD_OFFSET(float, m_flFlashDuration, 0); - SCHEMA_FIELD_OFFSET(float, m_flVelocityModifier, 0); - SCHEMA_FIELD_OFFSET(QAngle, m_angEyeAngles, 0); - SCHEMA_FIELD_OFFSET(CHandle, m_hOriginalController, 0); - SCHEMA_FIELD_OFFSET(CCSPlayer_ViewModelServices*, m_pViewModelServices, 0); -}; \ No newline at end of file diff --git a/src/sdk/entity/CCSWeaponBase.h b/src/sdk/entity/CCSWeaponBase.h deleted file mode 100644 index 2a142c3ae..000000000 --- a/src/sdk/entity/CCSWeaponBase.h +++ /dev/null @@ -1,150 +0,0 @@ -#pragma once - -#include "CBaseEntity.h" - -enum cgear_slot_t : uint32_t -{ - GEAR_SLOT_INVALID = 0xffffffff, - GEAR_SLOT_RIFLE = 0x0, - GEAR_SLOT_PISTOL = 0x1, - GEAR_SLOT_KNIFE = 0x2, - GEAR_SLOT_GRENADES = 0x3, - GEAR_SLOT_C4 = 0x4, - GEAR_SLOT_RESERVED_SLOT6 = 0x5, - GEAR_SLOT_RESERVED_SLOT7 = 0x6, - GEAR_SLOT_RESERVED_SLOT8 = 0x7, - GEAR_SLOT_RESERVED_SLOT9 = 0x8, - GEAR_SLOT_RESERVED_SLOT10 = 0x9, - GEAR_SLOT_RESERVED_SLOT11 = 0xa, - GEAR_SLOT_BOOSTS = 0xb, - GEAR_SLOT_UTILITY = 0xc, - GEAR_SLOT_COUNT = 0xd, - GEAR_SLOT_CURRENT_WEAPON = 0xe, - GEAR_SLOT_FIRST = 0x0, - GEAR_SLOT_LAST = 0xc, -}; - -enum CCSWeaponSilencerType : uint32_t -{ - WEAPONSILENCER_NONE = 0x0, - WEAPONSILENCER_DETACHABLE = 0x1, - WEAPONSILENCER_INTEGRATED = 0x2, -}; - -class CEconItemAttribute -{ -public: - DECLARE_SCHEMA_CLASS_BASE(CEconItemAttribute) - - SCHEMA_FIELD_OFFSET(uint16_t, m_iAttributeDefinitionIndex, 0); - SCHEMA_FIELD_OFFSET(float, m_flValue, 0); - SCHEMA_FIELD_OFFSET(float, m_flInitialValue, 0); - SCHEMA_FIELD_OFFSET(int32_t, m_nRefundableCurrency, 0); - SCHEMA_FIELD_OFFSET(bool, m_bSetBonus, 0); -}; - -class CAttributeList -{ -public: - DECLARE_SCHEMA_CLASS_BASE(CAttributeList) - - SCHEMA_FIELD_POINTER_OFFSET(CUtlVector>, m_Attributes, 0); - - void SetOrAddAttributeValueByName(const char* str, float val) - { - g_Signatures->FetchSignature("CAttributeList_SetOrAddAttributeValueByName")(this, str, val); - } -}; - -class CEconItemView -{ -public: - DECLARE_SCHEMA_CLASS_BASE(CEconItemView) - - SCHEMA_FIELD_OFFSET(uint16_t, m_iItemDefinitionIndex, 0); - SCHEMA_FIELD_OFFSET(uint64_t, m_iItemID, 0); - SCHEMA_FIELD_OFFSET(uint32_t, m_iItemIDHigh, 0); - SCHEMA_FIELD_OFFSET(uint32_t, m_iItemIDLow, 0); - SCHEMA_FIELD_OFFSET(bool, m_bInitialized, 0); - SCHEMA_FIELD_OFFSET(uint32_t, m_iAccountID, 0); - SCHEMA_FIELD_OFFSET(int32_t, m_iEntityQuality, 0); - - SCHEMA_FIELD_POINTER_OFFSET(char*, m_szCustomName, 0); - SCHEMA_FIELD_POINTER_OFFSET(char*, m_szCustomNameOverride, 0); - - SCHEMA_FIELD_POINTER_OFFSET(CAttributeList, m_NetworkedDynamicAttributes, 0); -}; - -class CAttributeContainer -{ -public: - DECLARE_SCHEMA_CLASS_BASE(CAttributeContainer) - - SCHEMA_FIELD_OFFSET(CEconItemView, m_Item, 0) -}; - -class CEconEntity : public CBaseEntity -{ -public: - DECLARE_SCHEMA_CLASS_BASE(CEconEntity) - - SCHEMA_FIELD_OFFSET(CAttributeContainer, m_AttributeManager, 0); - SCHEMA_FIELD_OFFSET(int32_t, m_nFallbackPaintKit, 0); - SCHEMA_FIELD_OFFSET(int32_t, m_nFallbackSeed, 0); - SCHEMA_FIELD_OFFSET(int32_t, m_nFallbackStatTrak, 0); - SCHEMA_FIELD_OFFSET(float, m_flFallbackWear, 0); - SCHEMA_FIELD_OFFSET(uint64_t, m_OriginalOwnerXuidLow, 0); - SCHEMA_FIELD_OFFSET(uint64_t, m_OriginalOwnerXuidHigh, 0); -}; - -class CBasePlayerWeaponVData : public CEntitySubclassVDataBase -{ -public: - DECLARE_SCHEMA_CLASS_BASE(CBasePlayerWeaponVData) - SCHEMA_FIELD_OFFSET(int, m_iMaxClip1, 0); - SCHEMA_FIELD_OFFSET(int, m_iDefaultClip1, 0); - SCHEMA_FIELD_OFFSET(int, m_iMaxClip2, 0); - SCHEMA_FIELD_OFFSET(int, m_iDefaultClip2, 0); -}; - -class CCSWeaponBaseVData : public CBasePlayerWeaponVData -{ -public: - DECLARE_SCHEMA_CLASS_BASE(CCSWeaponBaseVData) - - SCHEMA_FIELD_OFFSET(cgear_slot_t, m_GearSlot, 0); - SCHEMA_FIELD_OFFSET(int, m_nPrice, 0); - SCHEMA_FIELD_OFFSET(int, m_nPrimaryReserveAmmoMax, 0); - SCHEMA_FIELD_OFFSET(CCSWeaponSilencerType, m_eSilencerType, 0); -}; - -class CEconWearable : public CEconEntity -{ -public: - DECLARE_SCHEMA_CLASS_BASE(CEconWearable) - - SCHEMA_FIELD_OFFSET(int32_t, m_nForceSkin, 0); - SCHEMA_FIELD_OFFSET(bool, m_bAlwaysAllow, 0); -}; - -class CBasePlayerWeapon : public CEconEntity -{ -public: - DECLARE_SCHEMA_CLASS_BASE(CBasePlayerWeapon) - - SCHEMA_FIELD_OFFSET(int32_t, m_iClip1, 0); - SCHEMA_FIELD_OFFSET(int32_t, m_iClip2, 0); - SCHEMA_FIELD_POINTER_OFFSET(int32_t, m_pReserveAmmo, 0); - SCHEMA_FIELD_OFFSET(int32_t, m_nNextPrimaryAttackTick, 0); - SCHEMA_FIELD_OFFSET(int32_t, m_nNextSecondaryAttackTick, 0); - SCHEMA_FIELD_OFFSET(float, m_flNextPrimaryAttackTickRatio, 0); - SCHEMA_FIELD_OFFSET(float, m_flNextSecondaryAttackTickRatio, 0); - - CCSWeaponBaseVData* GetWeaponVData() { return (CCSWeaponBaseVData*)GetVData(); } -}; - -class CCSWeaponBase : public CBasePlayerWeapon -{ -public: - DECLARE_SCHEMA_CLASS_BASE(CCSWeaponBase) -}; \ No newline at end of file diff --git a/src/sdk/entity/CCollisionProperty.h b/src/sdk/entity/CCollisionProperty.h deleted file mode 100644 index 4e70f5234..000000000 --- a/src/sdk/entity/CCollisionProperty.h +++ /dev/null @@ -1,27 +0,0 @@ -#pragma once - -#include "CBaseEntity.h" - -struct VPhysicsCollisionAttribute_t -{ - DECLARE_SCHEMA_CLASS_BASE(VPhysicsCollisionAttribute_t) - - SCHEMA_FIELD_OFFSET(uint8, m_nCollisionGroup, 0); - SCHEMA_FIELD_OFFSET(uint64_t, m_nInteractsAs, 0); - SCHEMA_FIELD_OFFSET(uint64_t, m_nInteractsWith, 0); - SCHEMA_FIELD_OFFSET(uint64_t, m_nInteractsExclude, 0); -}; - -/* -keep this always on struct, no matter what -*/ -class CCollisionProperty -{ -public: - DECLARE_SCHEMA_CLASS_BASE(CCollisionProperty) - - SCHEMA_FIELD_OFFSET(VPhysicsCollisionAttribute_t, m_collisionAttribute, 0); - SCHEMA_FIELD_OFFSET(SolidType_t, m_nSolidType, 0); - SCHEMA_FIELD_OFFSET(uint8, m_usSolidFlags, 0); - SCHEMA_FIELD_OFFSET(uint8, m_CollisionGroup, 0); -}; \ No newline at end of file diff --git a/src/sdk/entity/CGameRules.h b/src/sdk/entity/CGameRules.h deleted file mode 100644 index 46710946f..000000000 --- a/src/sdk/entity/CGameRules.h +++ /dev/null @@ -1,39 +0,0 @@ -#pragma once -#include -#include "globaltypes.h" -#include "CBaseEntity.h" - -class CGameRules -{ -public: - DECLARE_SCHEMA_CLASS_BASE(CGameRules) -}; - -class CCSGameRules : public CGameRules -{ -public: - DECLARE_SCHEMA_CLASS_BASE(CCSGameRules) - - SCHEMA_FIELD_OFFSET(float, m_fMatchStartTime, 0); - SCHEMA_FIELD_OFFSET(float, m_flGameStartTime, 0); - SCHEMA_FIELD_OFFSET(int, m_totalRoundsPlayed, 0); - SCHEMA_FIELD_OFFSET(GameTime_t, m_fRoundStartTime, 0); - SCHEMA_FIELD_OFFSET(GameTime_t, m_flRestartRoundTime, 0); - SCHEMA_FIELD_OFFSET(int32_t, m_nOvertimePlaying, 0); - SCHEMA_FIELD_OFFSET(bool, m_bSwitchingTeamsAtRoundReset, 0); - SCHEMA_FIELD_OFFSET(bool, m_bGameRestart, 0); - SCHEMA_FIELD_OFFSET(int, m_iRoundTime, 0); - SCHEMA_FIELD_OFFSET(int, m_nRoundsPlayedThisPhase, 0); - SCHEMA_FIELD_OFFSET(int, m_bWarmupPeriod, 0); - SCHEMA_FIELD_OFFSET(int, m_bFreezePeriod, 0); - SCHEMA_FIELD_OFFSET(bool, m_bIsQueuedMatchmaking, 0); - SCHEMA_FIELD_OFFSET(int32_t, m_nQueuedMatchmakingMode, 0); -}; - -class CCSGameRulesProxy : public CBaseEntity -{ -public: - DECLARE_SCHEMA_CLASS_BASE(CCSGameRulesProxy) - - SCHEMA_FIELD_OFFSET(CCSGameRules*, m_pGameRules, 0) -}; \ No newline at end of file diff --git a/src/sdk/entity/CPointWorldText.h b/src/sdk/entity/CPointWorldText.h deleted file mode 100644 index 596ebeb81..000000000 --- a/src/sdk/entity/CPointWorldText.h +++ /dev/null @@ -1,60 +0,0 @@ -#pragma once -#include -#include "globaltypes.h" -#include "CBaseEntity.h" - -enum PointWorldTextJustifyHorizontal_t : uint32_t -{ - POINT_WORLD_TEXT_JUSTIFY_HORIZONTAL_LEFT = 0, - POINT_WORLD_TEXT_JUSTIFY_HORIZONTAL_CENTER = 1, - POINT_WORLD_TEXT_JUSTIFY_HORIZONTAL_RIGHT = 2, -}; - -enum PointWorldTextJustifyVertical_t : uint32_t -{ - POINT_WORLD_TEXT_JUSTIFY_VERTICAL_BOTTOM = 0, - POINT_WORLD_TEXT_JUSTIFY_VERTICAL_CENTER = 1, - POINT_WORLD_TEXT_JUSTIFY_VERTICAL_TOP = 2, -}; - -enum PointWorldTextReorientMode_t : uint32_t -{ - POINT_WORLD_TEXT_REORIENT_NONE = 0, - POINT_WORLD_TEXT_REORIENT_AROUND_UP = 1, -}; - -class CPointWorldText : public CBaseEntity -{ -public: - DECLARE_SCHEMA_CLASS_BASE(CPointWorldText) - - SCHEMA_FIELD_POINTER_OFFSET(char, m_messageText, 0); - SCHEMA_FIELD_POINTER_OFFSET(char, m_FontName, 0); - SCHEMA_FIELD_POINTER_OFFSET(char, m_BackgroundMaterialName, 0); - - SCHEMA_FIELD_OFFSET(bool, m_bEnabled, 0); - SCHEMA_FIELD_OFFSET(bool, m_bFullbright, 0); - SCHEMA_FIELD_OFFSET(float, m_flWorldUnitsPerPx, 0); - SCHEMA_FIELD_OFFSET(float, m_flFontSize, 0); - SCHEMA_FIELD_OFFSET(float, m_flDepthOffset, 0); - SCHEMA_FIELD_OFFSET(bool, m_bDrawBackground, 0); - SCHEMA_FIELD_OFFSET(float, m_flBackgroundBorderWidth, 0); - SCHEMA_FIELD_OFFSET(float, m_flBackgroundBorderHeight, 0); - SCHEMA_FIELD_OFFSET(float, m_flBackgroundWorldToUV, 0); - SCHEMA_FIELD_OFFSET(Color, m_Color, 0); - SCHEMA_FIELD_OFFSET(PointWorldTextJustifyHorizontal_t, m_nJustifyHorizontal, 0); - SCHEMA_FIELD_OFFSET(PointWorldTextJustifyVertical_t, m_nJustifyVertical, 0); - SCHEMA_FIELD_OFFSET(PointWorldTextReorientMode_t, m_nReorientMode, 0); - - void SetText(const char* msg) { - AcceptInput("SetMessage", nullptr, nullptr, msg); - } - - void Enable() { - AcceptInput("Enable"); - } - - void Disable() { - AcceptInput("Disable"); - } -}; diff --git a/src/sdk/entity/CRecipientFilters.h b/src/sdk/entity/CRecipientFilters.h deleted file mode 100644 index 2d0fead25..000000000 --- a/src/sdk/entity/CRecipientFilters.h +++ /dev/null @@ -1,107 +0,0 @@ -#pragma once - -#include -#include -#include "CBaseEntity.h" -#include "../../entrypoint.h" - -class CRecipientFilter : public IRecipientFilter -{ -public: - CRecipientFilter(NetChannelBufType_t nBufType = BUF_RELIABLE, bool bInitMessage = false) : m_nBufType(nBufType), m_bInitMessage(bInitMessage) {} - - ~CRecipientFilter() override {} - - NetChannelBufType_t GetNetworkBufType(void) const override - { - return m_nBufType; - } - - bool IsInitMessage(void) const override - { - return m_bInitMessage; - } - - int GetRecipientCount(void) const override - { - return m_Recipients.Count(); - } - - CPlayerSlot GetRecipientIndex(int slot) const override - { - if (slot < 0 || slot >= GetRecipientCount()) - { - return CPlayerSlot(-1); - } - - return m_Recipients[slot]; - } - - void AddRecipient(CPlayerSlot slot) - { - if (m_Recipients.Find(slot) != m_Recipients.InvalidIndex()) - return; - - m_Recipients.AddToTail(slot); - } - - void AddAllPlayers() - { - m_Recipients.RemoveAll(); - - for (int i = 0; i <= engine->GetServerGlobals()->maxClients; i++) - if(engine->IsClientFullyAuthenticated(i)) - AddRecipient(i); - } - - void RemoveRecipient(CPlayerSlot slot) - { - if (m_Recipients.Find(slot) == m_Recipients.InvalidIndex()) - return; - - m_Recipients.FindAndRemove(slot); - } - -private: - // Can't copy this unless we explicitly do it! - CRecipientFilter(CRecipientFilter const& source) - { - Assert(0); - } - - NetChannelBufType_t m_nBufType; - bool m_bInitMessage; - CUtlVectorFixed m_Recipients; -}; - -class CBroadcastRecipientFilter : public CRecipientFilter -{ -public: - CBroadcastRecipientFilter(void) - { - AddAllPlayers(); - } -}; - -class CSingleRecipientFilter : public IRecipientFilter -{ -public: - CSingleRecipientFilter(int iRecipient, bool bReliable = true, bool bInitMessage = false) : m_bReliable(bReliable), m_bInitMessage(bInitMessage), m_iRecipient(iRecipient) {} - - ~CSingleRecipientFilter() override {} - - bool IsReliable(void) const { return m_bReliable; } - - bool IsInitMessage(void) const override { return m_bInitMessage; } - - NetChannelBufType_t GetNetworkBufType(void) const override { return m_bReliable ? BUF_RELIABLE : BUF_UNRELIABLE; } - - int GetRecipientCount(void) const override { return 1; } - - CPlayerSlot GetRecipientIndex(int slot) const override { return CPlayerSlot(m_iRecipient); } - -private: - bool m_bReliable; - bool m_bInitMessage; - int m_iRecipient; -}; diff --git a/src/sdk/entity/CTakeDamageInfo.h b/src/sdk/entity/CTakeDamageInfo.h deleted file mode 100644 index 94e9d677d..000000000 --- a/src/sdk/entity/CTakeDamageInfo.h +++ /dev/null @@ -1,129 +0,0 @@ -#pragma once - -#include -#include "ehandle.h" -#include -#include "CBaseEntity.h" - -class Vector; - -enum DDamageTypes_t : uint32_t -{ - DMG_GENERIC = 0x0, - DMG_CRUSH = 0x1, - DMG_BULLET = 0x2, - DMG_SLASH = 0x4, - DMG_BURN = 0x8, - DMG_VEHICLE = 0x10, - DMG_FALL = 0x20, - DMG_BLAST = 0x40, - DMG_CLUB = 0x80, - DMG_SHOCK = 0x100, - DMG_SONIC = 0x200, - DMG_ENERGYBEAM = 0x400, - DMG_DROWN = 0x4000, - DMG_POISON = 0x8000, - DMG_RADIATION = 0x10000, - DMG_DROWNRECOVER = 0x20000, - DMG_ACID = 0x40000, - DMG_PHYSGUN = 0x100000, - DMG_DISSOLVE = 0x200000, - DMG_BLAST_SURFACE = 0x400000, - DMG_BUCKSHOT = 0x1000000, - DMG_LASTGENERICFLAG = 0x1000000, - DMG_HEADSHOT = 0x2000000, - DMG_DANGERZONE = 0x4000000, -}; - -enum TTakeDamageFlags_t : uint32_t -{ - DFLAG_NONE = 0x0, - DFLAG_SUPPRESS_HEALTH_CHANGES = 0x1, - DFLAG_SUPPRESS_PHYSICS_FORCE = 0x2, - DFLAG_SUPPRESS_EFFECTS = 0x4, - DFLAG_PREVENT_DEATH = 0x8, - DFLAG_FORCE_DEATH = 0x10, - DFLAG_ALWAYS_GIB = 0x20, - DFLAG_NEVER_GIB = 0x40, - DFLAG_REMOVE_NO_RAGDOLL = 0x80, - DFLAG_SUPPRESS_DAMAGE_MODIFICATION = 0x100, - DFLAG_ALWAYS_FIRE_DAMAGE_EVENTS = 0x200, - DFLAG_RADIUS_DMG = 0x400, - DMG_LASTDFLAG = 0x400, - DFLAG_IGNORE_ARMOR = 0x800, -}; - -struct AttackerInfo_t -{ - bool m_bNeedInit; - bool m_bIsPawn; - bool m_bIsWorld; - CHandle m_hAttackerPawn; - uint16_t m_nAttackerPlayerSlot; - int m_iTeamChecked; - int m_nTeam; -}; - -struct CTakeDamageInfoContainer -{ - CTakeDamageInfo *pInfo; -}; - -class CTakeDamageInfo -{ -private: - [[maybe_unused]] uint8_t __pad0000[0x8]; - -public: - CTakeDamageInfo(CBaseEntity* pInflictor, CBaseEntity* pAttacker, CBaseEntity* pAbility, float flDamage, DDamageTypes_t bitsDamageType) - { - g_Signatures->FetchSignature("CTakeDamageInfo_Constructor")(this, pInflictor, pAttacker, pAbility, &vec3_origin, &vec3_origin, flDamage, bitsDamageType, 0, nullptr); - } - - Vector m_vecDamageForce; - Vector m_vecDamagePosition; - Vector m_vecReportedPosition; - Vector m_vecDamageDirection; - CHandle m_hInflictor; - CHandle m_hAttacker; - CHandle m_hAbility; - float m_flDamage; - float m_flTotalledDamage; - float m_flTotalledDamageAbsorbed; - DDamageTypes_t m_bitsDamageType; - int32_t m_iDamageCustom; - uint8_t m_iAmmoType; - -private: - [[maybe_unused]] uint8_t __pad0059[0xf]; - -public: - float m_flOriginalDamage; - bool m_bShouldBleed; - bool m_bShouldSpark; - -private: - [[maybe_unused]] uint8_t __pad006e[0x2]; - -public: - float m_flDamageAbsorbed; - -private: - [[maybe_unused]] uint8_t __pad0074[0x8]; - -public: - TTakeDamageFlags_t m_nDamageFlags; - -private: - [[maybe_unused]] uint8_t __pad0084[0x4]; - -public: - int32_t m_nNumObjectsPenetrated; - float m_flFriendlyFireDamageReductionRatio; - uint64_t m_hScriptInstance; - AttackerInfo_t m_AttackerInfo; - bool m_bInTakeDamageFlow; - -private: - [[maybe_unused]] uint8_t __pad00ad[0x4]; -}; \ No newline at end of file diff --git a/src/sdk/entity/CTriggerPush.h b/src/sdk/entity/CTriggerPush.h deleted file mode 100644 index 2830c5665..000000000 --- a/src/sdk/entity/CTriggerPush.h +++ /dev/null @@ -1,265 +0,0 @@ -#pragma once - -#include "CBaseEntity.h" -#include "../schema/schema.h" - -#define SF_TRIG_PUSH_ONCE 0x80 - -class CTriggerPush -{ -public: - DECLARE_SCHEMA_CLASS_BASE(CTriggerPush) - - SCHEMA_FIELD_OFFSET(Vector, m_vecPushDirEntitySpace, 0) - SCHEMA_FIELD_OFFSET(float, m_flPushSpeed, 0) - - virtual ~CTriggerPush() = 0; - -private: - virtual void unk_01() = 0; - virtual void unk_02() = 0; - virtual void unk_03() = 0; - virtual void unk_04() = 0; - virtual void unk_05() = 0; - virtual void unk_06() = 0; - virtual void unk_07() = 0; - virtual void unk_08() = 0; - virtual void unk_09() = 0; - virtual void unk_10() = 0; - virtual void unk_11() = 0; - virtual void unk_12() = 0; - virtual void unk_13() = 0; - virtual void unk_14() = 0; - virtual void unk_15() = 0; - virtual void unk_16() = 0; - virtual void unk_17() = 0; - virtual void unk_18() = 0; - virtual void unk_19() = 0; - virtual void unk_20() = 0; - virtual void unk_21() = 0; - virtual void unk_22() = 0; - virtual void unk_23() = 0; - virtual void unk_24() = 0; - virtual void unk_25() = 0; - virtual void unk_26() = 0; - virtual void unk_27() = 0; - virtual void unk_28() = 0; - virtual void unk_29() = 0; - virtual void unk_30() = 0; - virtual void unk_31() = 0; - virtual void unk_32() = 0; - virtual void unk_33() = 0; - virtual void unk_34() = 0; - virtual void unk_35() = 0; - virtual void unk_36() = 0; - virtual void unk_37() = 0; - virtual void unk_38() = 0; - virtual void unk_39() = 0; - virtual void unk_40() = 0; - virtual void unk_41() = 0; - virtual void unk_42() = 0; - virtual void unk_43() = 0; - virtual void unk_44() = 0; - virtual void unk_45() = 0; - virtual void unk_46() = 0; - virtual void unk_47() = 0; - virtual void unk_48() = 0; - virtual void unk_49() = 0; - virtual void unk_50() = 0; - virtual void unk_51() = 0; - virtual void unk_52() = 0; - virtual void unk_53() = 0; - virtual void unk_54() = 0; - virtual void unk_55() = 0; - virtual void unk_56() = 0; - virtual void unk_57() = 0; - virtual void unk_58() = 0; - virtual void unk_59() = 0; - virtual void unk_60() = 0; - virtual void unk_61() = 0; - virtual void unk_62() = 0; - virtual void unk_63() = 0; - virtual void unk_64() = 0; - virtual void unk_65() = 0; - virtual void unk_66() = 0; - virtual void unk_67() = 0; - virtual void unk_68() = 0; - virtual void unk_69() = 0; - virtual void unk_70() = 0; - virtual void unk_71() = 0; - virtual void unk_72() = 0; - virtual void unk_73() = 0; - virtual void unk_74() = 0; - virtual void unk_75() = 0; - virtual void unk_76() = 0; - virtual void unk_77() = 0; - virtual void unk_78() = 0; - virtual void unk_79() = 0; - virtual void unk_80() = 0; - virtual void unk_81() = 0; - virtual void unk_82() = 0; - virtual void unk_83() = 0; - virtual void unk_84() = 0; - virtual void unk_85() = 0; - virtual void unk_86() = 0; - virtual void unk_87() = 0; - virtual void unk_88() = 0; - virtual void unk_89() = 0; - virtual void unk_90() = 0; - virtual void unk_91() = 0; - virtual void unk_92() = 0; - virtual void unk_93() = 0; - virtual void unk_94() = 0; - virtual void unk_95() = 0; - virtual void unk_96() = 0; - virtual void unk_97() = 0; - virtual void unk_98() = 0; - virtual void unk_99() = 0; - virtual void unk_100() = 0; - virtual void unk_101() = 0; - virtual void unk_102() = 0; - virtual void unk_103() = 0; - virtual void unk_104() = 0; - virtual void unk_105() = 0; - virtual void unk_106() = 0; - virtual void unk_107() = 0; - virtual void unk_108() = 0; - virtual void unk_109() = 0; - virtual void unk_110() = 0; - virtual void unk_111() = 0; - virtual void unk_112() = 0; - virtual void unk_113() = 0; - virtual void unk_114() = 0; - virtual void unk_115() = 0; - virtual void unk_116() = 0; - virtual void unk_117() = 0; - virtual void unk_118() = 0; - virtual void unk_119() = 0; - virtual void unk_120() = 0; - virtual void unk_121() = 0; - virtual void unk_122() = 0; - virtual void unk_123() = 0; - virtual void unk_124() = 0; - virtual void unk_125() = 0; - virtual void unk_126() = 0; - virtual void unk_127() = 0; - virtual void unk_128() = 0; - virtual void unk_129() = 0; - virtual void unk_130() = 0; - virtual void unk_131() = 0; - virtual void unk_132() = 0; - virtual void unk_133() = 0; - virtual void unk_134() = 0; - virtual void unk_135() = 0; - virtual void unk_136() = 0; - virtual void unk_137() = 0; - virtual void unk_138() = 0; - virtual void unk_139() = 0; - virtual void unk_140() = 0; - virtual void unk_141() = 0; - virtual void unk_142() = 0; - virtual void unk_143() = 0; - virtual void unk_144() = 0; - virtual void unk_145() = 0; - virtual void unk_146() = 0; - virtual void unk_147() = 0; - virtual void unk_148() = 0; - virtual void unk_149() = 0; - virtual void unk_150() = 0; - virtual void unk_151() = 0; - virtual void unk_152() = 0; - virtual void unk_153() = 0; - virtual void unk_154() = 0; - virtual void unk_155() = 0; - virtual void unk_156() = 0; - virtual void unk_157() = 0; - virtual void unk_158() = 0; - virtual void unk_159() = 0; - virtual void unk_160() = 0; - virtual void unk_161() = 0; - virtual void unk_162() = 0; - virtual void unk_163() = 0; - virtual void unk_164() = 0; - virtual void unk_165() = 0; - virtual void unk_166() = 0; - virtual void unk_167() = 0; - virtual void unk_168() = 0; - virtual void unk_169() = 0; - virtual void unk_170() = 0; - virtual void unk_171() = 0; - virtual void unk_172() = 0; - virtual void unk_173() = 0; - virtual void unk_174() = 0; - virtual void unk_175() = 0; - virtual void unk_176() = 0; - virtual void unk_177() = 0; - virtual void unk_178() = 0; - virtual void unk_179() = 0; - virtual void unk_180() = 0; - virtual void unk_181() = 0; - virtual void unk_182() = 0; - virtual void unk_183() = 0; - virtual void unk_184() = 0; - virtual void unk_185() = 0; - virtual void unk_186() = 0; - virtual void unk_187() = 0; - virtual void unk_188() = 0; - virtual void unk_189() = 0; - virtual void unk_190() = 0; - virtual void unk_191() = 0; - virtual void unk_192() = 0; - virtual void unk_193() = 0; - virtual void unk_194() = 0; - virtual void unk_195() = 0; - virtual void unk_196() = 0; - virtual void unk_197() = 0; - virtual void unk_198() = 0; - virtual void unk_199() = 0; - virtual void unk_200() = 0; - virtual void unk_201() = 0; - virtual void unk_202() = 0; - virtual void unk_203() = 0; - virtual void unk_204() = 0; - virtual void unk_205() = 0; - virtual void unk_206() = 0; - virtual void unk_207() = 0; - virtual void unk_208() = 0; - virtual void unk_209() = 0; - virtual void unk_210() = 0; - virtual void unk_211() = 0; - virtual void unk_212() = 0; - virtual void unk_213() = 0; - virtual void unk_214() = 0; - virtual void unk_215() = 0; - virtual void unk_216() = 0; - virtual void unk_217() = 0; - virtual void unk_218() = 0; - virtual void unk_219() = 0; - virtual void unk_220() = 0; - virtual void unk_221() = 0; - virtual void unk_222() = 0; - virtual void unk_223() = 0; - virtual void unk_224() = 0; - virtual void unk_225() = 0; - virtual void unk_226() = 0; - virtual void unk_227() = 0; - virtual void unk_228() = 0; - virtual void unk_229() = 0; - virtual void unk_230() = 0; - virtual void unk_231() = 0; - virtual void unk_232() = 0; - virtual void unk_233() = 0; - virtual void unk_234() = 0; - virtual void unk_235() = 0; - virtual void unk_236() = 0; - virtual void unk_237() = 0; - virtual void unk_238() = 0; - virtual void unk_239() = 0; - virtual void unk_240() = 0; - virtual void unk_241() = 0; - virtual void unk_242() = 0; - virtual void unk_243() = 0; - -public: - virtual bool PassesTriggerFilters(CBaseEntity* pOther) = 0; -}; diff --git a/src/sdk/entity/EntityCheckTransmit.h b/src/sdk/entity/EntityCheckTransmit.h deleted file mode 100644 index 454d17ba6..000000000 --- a/src/sdk/entity/EntityCheckTransmit.h +++ /dev/null @@ -1,18 +0,0 @@ -#pragma once - -#include "../../entrypoint.h" - -class EntityCheckTransmit -{ -public: - CBitVec* m_pTransmitEntity; // 0 - CBitVec* m_pUnkBitVec; // 8 - CBitVec* m_pUnkBitVec2; // 16 - CBitVec* m_pUnkBitVec3; // 24 - CBitVec* m_pTransmitAlways; // 32 - CUtlVector m_unk40; // 40 - vis_info_t* m_VisInfo; // 64 - [[maybe_unused]] byte m_unk72[0x200]; // 72 - CEntityIndex m_nClientEntityIndex; // 584 - bool m_bFullUpdate; // 588 -}; \ No newline at end of file diff --git a/src/sdk/entity/globaltypes.h b/src/sdk/entity/globaltypes.h deleted file mode 100644 index b3651a271..000000000 --- a/src/sdk/entity/globaltypes.h +++ /dev/null @@ -1,134 +0,0 @@ -#pragma once - -#include -#include "../schema/schema.h" -#include "soundflags.h" -#include - -class CNetworkTransmitComponent -{ -public: - typedef CNetworkTransmitComponent ThisClass; - static constexpr const char *ThisClassName = "CNetworkTransmitComponent"; -}; - -class CNetworkVelocityVector -{ -public: - typedef CNetworkVelocityVector ThisClass; - static constexpr const char *ThisClassName = "CNetworkVelocityVector"; - - SCHEMA_FIELD_OFFSET(float, m_vecX, 0) - SCHEMA_FIELD_OFFSET(float, m_vecY, 0) - SCHEMA_FIELD_OFFSET(float, m_vecZ, 0) -}; - -class CNetworkOriginCellCoordQuantizedVector -{ -public: - typedef CNetworkOriginCellCoordQuantizedVector ThisClass; - static constexpr const char *ThisClassName = "CNetworkOriginCellCoordQuantizedVector"; - - SCHEMA_FIELD_OFFSET(uint16, m_cellX, 0) - SCHEMA_FIELD_OFFSET(uint16, m_cellY, 0) - SCHEMA_FIELD_OFFSET(uint16, m_cellZ, 0) - SCHEMA_FIELD_OFFSET(uint16, m_nOutsideWorld, 0) - - // These are actually CNetworkedQuantizedFloat but we don't have the definition for it... - SCHEMA_FIELD_OFFSET(float, m_vecX, 0) - SCHEMA_FIELD_OFFSET(float, m_vecY, 0) - SCHEMA_FIELD_OFFSET(float, m_vecZ, 0) -}; - -class CInButtonState -{ -public: - typedef CInButtonState ThisClass; - static constexpr const char *ThisClassName = "CInButtonState"; - - SCHEMA_FIELD_POINTER_OFFSET(uint64_t, m_pButtonStates, 0) -}; - -class CGlowProperty -{ -public: - typedef CGlowProperty ThisClass; - static constexpr const char *ThisClassName = "CGlowProperty"; - - SCHEMA_FIELD_OFFSET(Vector, m_fGlowColor, 0) - SCHEMA_FIELD_OFFSET(int, m_iGlowType, 0) - SCHEMA_FIELD_OFFSET(int, m_nGlowRange, 0) - SCHEMA_FIELD_OFFSET(Color, m_glowColorOverride, 0) - SCHEMA_FIELD_OFFSET(bool, m_bFlashing, 0) - SCHEMA_FIELD_OFFSET(bool, m_bGlowing, 0) -}; - -typedef uint32 SoundEventGuid_t; -struct SndOpEventGuid_t -{ - SoundEventGuid_t m_nGuid; - uint64 m_hStackHash; -}; - -enum gender_t : uint8 -{ - GENDER_NONE = 0x0, - GENDER_MALE = 0x1, - GENDER_FEMALE = 0x2, - GENDER_NAMVET = 0x3, - GENDER_TEENGIRL = 0x4, - GENDER_BIKER = 0x5, - GENDER_MANAGER = 0x6, - GENDER_GAMBLER = 0x7, - GENDER_PRODUCER = 0x8, - GENDER_COACH = 0x9, - GENDER_MECHANIC = 0xA, - GENDER_CEDA = 0xB, - GENDER_CRAWLER = 0xC, - GENDER_UNDISTRACTABLE = 0xD, - GENDER_FALLEN = 0xE, - GENDER_RIOT_CONTROL = 0xF, - GENDER_CLOWN = 0x10, - GENDER_JIMMY = 0x11, - GENDER_HOSPITAL_PATIENT = 0x12, - GENDER_BRIDE = 0x13, - GENDER_LAST = 0x14, -}; - -struct EmitSound_t -{ - EmitSound_t() : m_nChannel(0), - m_pSoundName(0), - m_flVolume(1.0f), - m_SoundLevel(SNDLVL_NONE), - m_nFlags(0), - m_nPitch(100), - m_pOrigin(0), - m_flSoundTime(0.0f), - m_pflSoundDuration(0), - m_bEmitCloseCaption(true), - m_bWarnOnMissingCloseCaption(false), - m_bWarnOnDirectWaveReference(false), - m_nSpeakerEntity(-1), - m_UtlVecSoundOrigin(), - m_nForceGuid(0), - m_SpeakerGender(GENDER_NONE) - { - } - int m_nChannel; - const char *m_pSoundName; - float m_flVolume; - soundlevel_t m_SoundLevel; - int m_nFlags; - int m_nPitch; - const Vector *m_pOrigin; - float m_flSoundTime; - float *m_pflSoundDuration; - bool m_bEmitCloseCaption; - bool m_bWarnOnMissingCloseCaption; - bool m_bWarnOnDirectWaveReference; - CEntityIndex m_nSpeakerEntity; - CUtlVector> m_UtlVecSoundOrigin; - SoundEventGuid_t m_nForceGuid; - gender_t m_SpeakerGender; -}; \ No newline at end of file diff --git a/src/sdk/entity/serversideclient.h b/src/sdk/entity/serversideclient.h deleted file mode 100644 index d39c6d1f6..000000000 --- a/src/sdk/entity/serversideclient.h +++ /dev/null @@ -1,62 +0,0 @@ -#ifndef _serversideclient_h -#define _serversideclient_h - -#include -#include -#include -#include - -#include "networkbasetypes.pb.h" - -class CServerSideClient : public INetworkMessageProcessingPreFilter -{ -public: - virtual ~CServerSideClient() = 0; - - INetChannel* GetNetChannel() const { return m_NetChannel; }; - CPlayerSlot GetPlayerSlot() const { return m_nClientSlot; }; - CEntityIndex GetEntityIndex() const { return m_nEntityIndex; }; - CPlayerUserId GetUserID() const { return m_UserID; }; - int GetSignonState() const { return m_nSignonState; } - CSteamID GetClientSteamID() const { return m_SteamID; } - const char* GetClientName() const { return m_Name; }; - bool IsConnected() const { return m_nSignonState >= SIGNONSTATE_CONNECTED; }; - bool IsSpawned() const { return m_nSignonState >= SIGNONSTATE_NEW; }; - bool IsActive() const { return m_nSignonState == SIGNONSTATE_FULL; }; - bool IsFakeClient() const { return m_bFakePlayer; }; - bool IsHLTV() const { return m_bIsHLTV; } - bool IsFullyAuthenticated() { return m_bFullyAuthenticated; } - const netadr_t* GetRemoteAddress() const { return &m_NetAdr0; } - -private: - [[maybe_unused]] void* m_pVT1; // INetworkMessageProcessingPreFilter - [[maybe_unused]] char pad1[0x30]; -#ifdef __linux__ - [[maybe_unused]] char pad2[0x10]; -#endif - CUtlString m_Name; // 64 | 80 - CPlayerSlot m_nClientSlot; // 72 | 88 - CEntityIndex m_nEntityIndex; // 76 | 92 - [[maybe_unused]] char pad3[0x8]; - INetChannel* m_NetChannel; // 88 | 104 - [[maybe_unused]] char pad4[0x4]; - int32 m_nSignonState; // 100 | 116 - [[maybe_unused]] char pad5[0x38]; - bool m_bFakePlayer; // 160 | 176 - [[maybe_unused]] char pad6[0x7]; - CPlayerUserId m_UserID; // 168 | 184 - [[maybe_unused]] char pad7[0x1]; - CSteamID m_SteamID; // 171 | 187 - [[maybe_unused]] char pad8[0x19]; - netadr_t m_NetAdr0; // 204 | 220 - [[maybe_unused]] char pad9[0x14]; - netadr_t m_NetAdr1; // 236 | 252 - [[maybe_unused]] char pad10[0x22]; - bool m_bIsHLTV; // 282 | 298 - [[maybe_unused]] char pad11[0x19]; - int m_nDeltaTick; // 308 | 324 - [[maybe_unused]] char pad12[0x882]; - bool m_bFullyAuthenticated; // 2490 | 2506 -}; - -#endif \ No newline at end of file diff --git a/src/sdk/entity/services.h b/src/sdk/entity/services.h deleted file mode 100644 index 1f4f58884..000000000 --- a/src/sdk/entity/services.h +++ /dev/null @@ -1,200 +0,0 @@ -#pragma once - -#include -#include "globaltypes.h" -#include -#include "CCSWeaponBase.h" - -class CBaseEntity; -class CCSPlayerPawn; -class CBasePlayerPawn; - -class CPlayerPawnComponent -{ -public: - virtual ~CPlayerPawnComponent() = 0; - -private: - [[maybe_unused]] uint8_t __pad0008[0x28]; // 0x8 -public: - CBasePlayerPawn* m_pPawn; // 0x30 -}; - -struct CSPerRoundStats_t -{ -public: - DECLARE_SCHEMA_CLASS_BASE(CSPerRoundStats_t) - - SCHEMA_FIELD_OFFSET(int, m_iKills, 0); - SCHEMA_FIELD_OFFSET(int, m_iDeaths, 0); - SCHEMA_FIELD_OFFSET(int, m_iAssists, 0); - SCHEMA_FIELD_OFFSET(int, m_iDamage, 0); -}; - -struct CSMatchStats_t : public CSPerRoundStats_t -{ -public: - DECLARE_SCHEMA_CLASS_BASE(CSMatchStats_t) -}; - -class CCSPlayerController_ActionTrackingServices -{ -public: - DECLARE_SCHEMA_CLASS_BASE(CCSPlayerController_ActionTrackingServices) - - SCHEMA_FIELD_OFFSET(CSMatchStats_t, m_matchStats, 0) -}; - -class CPlayer_MovementServices : public CPlayerPawnComponent -{ -public: - DECLARE_SCHEMA_CLASS_BASE(CPlayer_MovementServices) - - SCHEMA_FIELD_OFFSET(CInButtonState, m_nButtons, 0); - SCHEMA_FIELD_OFFSET(uint64_t, m_nQueuedButtonDownMask, 0); - SCHEMA_FIELD_OFFSET(uint64_t, m_nQueuedButtonChangeMask, 0); - SCHEMA_FIELD_OFFSET(uint64_t, m_nButtonDoublePressed, 0); - SCHEMA_FIELD_POINTER_OFFSET(uint32_t, m_pButtonPressedCmdNumber, 0); - SCHEMA_FIELD_OFFSET(uint32_t, m_nLastCommandNumberProcessed, 0); - SCHEMA_FIELD_OFFSET(uint64_t, m_nToggleButtonDownMask, 0); - SCHEMA_FIELD_OFFSET(float, m_flMaxspeed, 0); -}; - -class CPlayer_MovementServices_Humanoid : public CPlayer_MovementServices -{ -public: - DECLARE_SCHEMA_CLASS_BASE(CPlayer_MovementServices_Humanoid) -}; - -class CCSPlayer_MovementServices : public CPlayer_MovementServices_Humanoid -{ -public: - DECLARE_SCHEMA_CLASS_BASE(CCSPlayer_MovementServices) -}; - -class CCSPlayerController_InGameMoneyServices -{ -public: - DECLARE_SCHEMA_CLASS_BASE(CCSPlayerController_InGameMoneyServices) - - SCHEMA_FIELD_OFFSET(int, m_iAccount, 0) -}; - -class CCSPlayer_ItemServices -{ -public: - DECLARE_SCHEMA_CLASS_BASE(CCSPlayer_ItemServices) - - virtual ~CCSPlayer_ItemServices() = 0; - - SCHEMA_FIELD_OFFSET(bool, m_bHasDefuser, 0); - SCHEMA_FIELD_OFFSET(bool, m_bHasHelmet, 0); - SCHEMA_FIELD_OFFSET(bool, m_bHasHeavyArmor, 0); - -private: - virtual void unk_01() = 0; - virtual void unk_02() = 0; - virtual void unk_03() = 0; - virtual void unk_04() = 0; - virtual void unk_05() = 0; - virtual void unk_06() = 0; - virtual void unk_07() = 0; - virtual void unk_08() = 0; - virtual void unk_09() = 0; - virtual void unk_10() = 0; - virtual void unk_11() = 0; - virtual void unk_12() = 0; - virtual void unk_13() = 0; - virtual void unk_14() = 0; - virtual void unk_15() = 0; - virtual void unk_16() = 0; - virtual CBaseEntity* _GiveNamedItem(const char* pchName) = 0; - -public: - virtual bool GiveNamedItemBool(const char* pchName) = 0; - virtual CBaseEntity* GiveNamedItem(const char* pchName) = 0; - virtual void DropPlayerWeapon(CBasePlayerWeapon* weapon) = 0; - virtual void StripPlayerWeapons(bool removeSuit) = 0; -}; - -// We need an exactly sized class to be able to iterate the vector, our schema system implementation can't do this -class WeaponPurchaseCount_t -{ -private: - virtual void unk01() {}; - uint64_t unk1 = 0; // 0x8 - uint64_t unk2 = 0; // 0x10 - uint64_t unk3 = 0; // 0x18 - uint64_t unk4 = 0; // 0x20 - uint64_t unk5 = -1; // 0x28 -public: - uint16_t m_nItemDefIndex; // 0x30 - uint16_t m_nCount; // 0x32 -private: - uint32_t unk6 = 0; -}; - -struct WeaponPurchaseTracker_t -{ -public: - DECLARE_SCHEMA_CLASS_BASE(WeaponPurchaseTracker_t) - - SCHEMA_FIELD_POINTER_OFFSET(CUtlVector, m_weaponPurchases, 0) -}; - -class CCSPlayer_ActionTrackingServices -{ -public: - DECLARE_SCHEMA_CLASS_BASE(CCSPlayer_ActionTrackingServices) - - SCHEMA_FIELD_OFFSET(WeaponPurchaseTracker_t, m_weaponPurchasesThisRound, 0) -}; - -class CPlayer_WeaponServices : public CPlayerPawnComponent -{ -public: - DECLARE_SCHEMA_CLASS_BASE(CPlayer_WeaponServices) - - SCHEMA_FIELD_POINTER_OFFSET(CUtlVector>, m_hMyWeapons, 0); - SCHEMA_FIELD_OFFSET(CHandle, m_hActiveWeapon, 0); - - void DropWeapon(CBasePlayerWeapon* pWeapon, Vector* pVecTarget = nullptr, Vector* pVelocity = nullptr) - { - static int offset = g_Offsets->GetOffset("CCSPlayer_WeaponServices_DropWeapon"); - CALL_VIRTUAL(void, offset, this, pWeapon, pVecTarget, pVelocity); - } - - void RemoveWeapon(CBasePlayerWeapon* weapon) - { - this->DropWeapon(weapon); - weapon->Despawn(); - } -}; - -class CPlayer_CameraServices : public CPlayerPawnComponent -{ -public: - DECLARE_SCHEMA_CLASS_BASE(CPlayer_CameraServices); - - SCHEMA_FIELD_OFFSET(float, m_flOldPlayerViewOffsetZ, 0); - SCHEMA_FIELD_OFFSET(CHandle, m_hViewEntity, 0); -}; - -class CCSPlayerController_InventoryServices -{ -public: - DECLARE_SCHEMA_CLASS_BASE(CCSPlayerController_InventoryServices) - - SCHEMA_FIELD_OFFSET(uint16_t, m_unMusicID, 0); - SCHEMA_FIELD_POINTER_OFFSET(uint8_t, m_rank, 0); -}; - -class CPlayer_ObserverServices : public CPlayerPawnComponent -{ -public: - DECLARE_SCHEMA_CLASS_BASE(CPlayer_ObserverServices); - - SCHEMA_FIELD_OFFSET(uint8, m_iObserverMode, 0); - SCHEMA_FIELD_OFFSET(CHandle, m_hObserverTarget, 0); - SCHEMA_FIELD_OFFSET(bool, m_bForcedObserverMode, 0); -}; \ No newline at end of file diff --git a/src/sdk/interfaces/cschemasystem.h b/src/sdk/interfaces/cschemasystem.h deleted file mode 100644 index 000efd570..000000000 --- a/src/sdk/interfaces/cschemasystem.h +++ /dev/null @@ -1,44 +0,0 @@ -#ifndef _cschemasystem_h -#define _cschemasystem_h - -#include "../../utils/virtual.h" -#include - -struct CSchemaNetworkValue -{ - union - { - const char *m_sz_value; - int m_n_value; - float m_f_value; - uintptr_t m_p_value; - }; -}; - -struct SchemaClassInfoData_t; - -class CSchemaSystemTypeScope -{ -public: - SchemaClassInfoData_t *FindDeclaredClass(const char *pClass) - { -#ifdef _WIN32 - SchemaClassInfoData_t *rv = nullptr; - CALL_VIRTUAL(void, 2, this, &rv, pClass); - return rv; -#else - return CALL_VIRTUAL(SchemaClassInfoData_t *, 2, this, pClass); -#endif - } -}; - -class CSchemaSystem -{ -public: - auto FindTypeScopeForModule(const char *module) - { - return CALL_VIRTUAL(CSchemaSystemTypeScope *, 13, this, module, nullptr); - } -}; - -#endif \ No newline at end of file diff --git a/src/sdk/schema/schema.cpp b/src/sdk/schema/schema.cpp deleted file mode 100644 index 076d54f33..000000000 --- a/src/sdk/schema/schema.cpp +++ /dev/null @@ -1,148 +0,0 @@ -#include "schema.h" -#include "../interfaces/cschemasystem.h" -#include "../../utils/plat.h" -#include "../entity/CBaseEntity.h" - -#include "../../entrypoint.h" -#include "../../common.h" -#include "../../utils/utils.h" - -#include - -extern CSchemaSystem* g_pSchemaSystem2; -typedef void (*StateChanged)(void*, CBaseEntity*, int, int, int); - -std::map offsetsCache; -std::map networkedCache; -std::set structCache; -std::set isClassLoaded; - -static bool IsFieldNetworked(SchemaClassFieldData_t& field) -{ - static auto networkEnabled = hash_32_fnv1a_const("MNetworkEnable"); - for (int i = 0; i < field.m_nStaticMetadataCount; i++) - if (networkEnabled == hash_32_fnv1a_const(field.m_pStaticMetadata[i].m_pszName)) - return true; - - return false; -} - -bool IsStandardLayoutClass(SchemaClassInfoData_t *classData) { - { - auto pClass = classData; - int classesWithFields = 0; - do { - classesWithFields += ((pClass->m_nSize > 1) || (pClass->m_nFieldCount != 0)) ? 1 : 0; - - if(classesWithFields > 1) return false; - - pClass = (pClass->m_pBaseClasses == nullptr) ? nullptr : pClass->m_pBaseClasses->m_pClass; - } while(pClass != nullptr); - } - - auto fields = classData->m_pFields; - auto fieldsCount = classData->m_nFieldCount; - for(uint16_t i = 0; i < fieldsCount; i++) { - auto fieldType = fields[i].m_pType; - if(fieldType->m_eTypeCategory == SchemaTypeCategory_t::SCHEMA_TYPE_DECLARED_CLASS) { - CSchemaType_DeclaredClass* fClass = reinterpret_cast(fieldType); - if(fClass->m_pClassInfo && !IsStandardLayoutClass(fClass->m_pClassInfo)) return false; - } - } - - return true; -} - -void PopulateClassData(const char* className, uint32_t classOffset) -{ - CSchemaSystemTypeScope* pType = g_pSchemaSystem2->FindTypeScopeForModule(MODULE_PREFIX "server" MODULE_EXT); - if(!pType) return; - - auto classData = pType->FindDeclaredClass(className); - - if(!classData) return; - - isClassLoaded.insert(classOffset); - - if(structCache.find(classOffset) == structCache.end()) - if(IsStandardLayoutClass(classData)) - structCache.insert(classOffset); - - short fieldsSize = classData->m_nFieldCount; - SchemaClassFieldData_t* pFields = classData->m_pFields; - - for(short i = 0; i < fieldsSize; i++) { - auto field = pFields[i]; - uint64_t offsetKey = ((uint64_t) classOffset) << 32 | hash_32_fnv1a_const(field.m_pszName); - - offsetsCache.insert({ offsetKey, field.m_nSingleInheritanceOffset }); - networkedCache.insert({ offsetKey, IsFieldNetworked(field) }); - } -} - -int32_t sch::FindChainOffset(const char* className) -{ - return sch::GetOffset(className, "__m_pChainEntity"); -} - -int32_t sch::GetOffset(const char* className, const char* memberName) -{ - uint32_t classOffset = hash_32_fnv1a_const(className); - uint64_t fullOffset = ((uint64_t) classOffset) << 32 | hash_32_fnv1a_const(memberName); - - return offsetsCache[fullOffset]; -} - -int32_t sch::GetOffset(uint64_t path) -{ - return offsetsCache[path]; -} - -bool sch::IsNetworked(const char* className, const char* memberName) -{ - uint32_t classOffset = hash_32_fnv1a_const(className); - uint64_t fullOffset = ((uint64_t) classOffset) << 32 | hash_32_fnv1a_const(memberName); - - return networkedCache[fullOffset]; -} - -bool sch::IsNetworked(uint64_t path) -{ - return networkedCache[path]; -} - -bool sch::IsStruct(const char* cName) -{ - return structCache.find(hash_32_fnv1a_const(cName)) != structCache.end(); -} - -bool sch::IsClassLoaded(const char* cName) -{ - return isClassLoaded.find(hash_32_fnv1a_const(cName)) != isClassLoaded.end(); -} - -void SetStateChanged(uintptr_t entityPtr, std::string className, std::string fieldName, int extraOffset) -{ - const char* cName = className.c_str(); - const char* fName = fieldName.c_str(); - - if ((CBaseEntity*)entityPtr == nullptr) return; - if (!sch::IsNetworked(cName, fName)) return; - - auto m_key = sch::GetOffset(cName, fName); - auto m_chain = sch::FindChainOffset(cName); - auto isStruct = sch::IsStruct(cName); - - if (m_chain) { - entityPtr += m_chain; - CEntityInstance* pEntity = *reinterpret_cast(entityPtr); - if (pEntity && (pEntity->m_pEntity->m_flags & EF_IS_CONSTRUCTION_IN_PROGRESS) == 0) - pEntity->NetworkStateChanged(m_key + extraOffset, -1, *reinterpret_cast(entityPtr + 32)); - } - else { - if (isStruct) - CALL_VIRTUAL(void, 1, (CBaseEntity*)entityPtr, m_key + extraOffset, 0xFFFFFFFF, 0xFFFF); - else - reinterpret_cast(entityPtr)->NetworkStateChanged(m_key + extraOffset); - } -} \ No newline at end of file diff --git a/src/sdk/schema/schema.h b/src/sdk/schema/schema.h deleted file mode 100644 index f86c30093..000000000 --- a/src/sdk/schema/schema.h +++ /dev/null @@ -1,105 +0,0 @@ -#ifndef _schema_h -#define _schema_h - -#include - -#include "../../memory/signatures/Signatures.h" -#include "../interfaces/cschemasystem.h" - -class CBaseEntity; -void SetStateChanged(uintptr_t entityPtr, std::string className, std::string fieldName, int extraOffset); - -constexpr uint32_t val_32_const = 0x811c9dc5; -constexpr uint32_t prime_32_const = 0x1000193; -constexpr uint64_t val_64_const = 0xcbf29ce484222325; -constexpr uint64_t prime_64_const = 0x100000001b3; - -inline constexpr uint32_t hash_32_fnv1a_const(const char* const str, const uint32_t value = val_32_const) noexcept -{ - return (str[0] == '\0') ? value : hash_32_fnv1a_const(&str[1], (value ^ uint32_t(str[0])) * prime_32_const); -} - -inline constexpr uint64_t hash_64_fnv1a_const(const char* const str, const uint64_t value = val_64_const) noexcept -{ - return (str[0] == '\0') ? value : hash_64_fnv1a_const(&str[1], (value ^ uint64_t(str[0])) * prime_64_const); -} - -namespace sch -{ - int32_t FindChainOffset(const char* className); - - int32_t GetOffset(const char* className, const char* memberName); - int32_t GetOffset(uint64_t path); - - bool IsNetworked(const char* className, const char* memberName); - bool IsNetworked(uint64_t path); - - bool IsStruct(const char* cName); - bool IsClassLoaded(const char* cName); -}; - -#define SCHEMA_FIELD_OFFSET(type, varName, extra_offset) \ - class varName##_prop \ - { \ - public: \ - std::add_lvalue_reference_t Get() \ - { \ - static const auto m_key = \ - sch::GetOffset(ThisClassName, #varName); \ - \ - static const size_t offset = offsetof(ThisClass, varName); \ - ThisClass *pThisClass = (ThisClass *)((byte *)this - offset); \ - \ - return *reinterpret_cast>( \ - (uintptr_t)(pThisClass) + m_key + extra_offset); \ - } \ - void Set(type val) \ - { \ - static const auto m_key = \ - sch::GetOffset(ThisClassName, #varName); \ - \ - static const size_t offset = offsetof(ThisClass, varName); \ - ThisClass *pThisClass = (ThisClass *)((byte *)this - offset); \ - \ - SetStateChanged((uintptr_t)pThisClass, ThisClassName, #varName, extra_offset); \ - *reinterpret_cast>((uintptr_t)(pThisClass) + m_key + extra_offset) = val; \ - } \ - void StateUpdate() \ - { \ - static const size_t offset = offsetof(ThisClass, varName); \ - ThisClass *pThisClass = (ThisClass *)((byte *)this - offset); \ - \ - SetStateChanged((uintptr_t)pThisClass, ThisClassName, #varName, extra_offset); \ - } \ - operator std::add_lvalue_reference_t() { return Get(); } \ - std::add_lvalue_reference_t operator()() { return Get(); } \ - std::add_lvalue_reference_t operator->() { return Get(); } \ - void operator()(type val) { Set(val); } \ - void operator=(type val) { Set(val); } \ - } varName; - -#define SCHEMA_FIELD_POINTER_OFFSET(type, varName, extra_offset) \ - class varName##_prop \ - { \ - public: \ - type *Get() \ - { \ - static const auto m_key = \ - sch::GetOffset(ThisClassName, #varName); \ - \ - static const size_t offset = offsetof(ThisClass, varName); \ - ThisClass *pThisClass = (ThisClass *)((byte *)this - offset); \ - \ - return reinterpret_cast>( \ - (uintptr_t)(pThisClass) + m_key + extra_offset); \ - } \ - operator type *() { return Get(); } \ - type *operator()() { return Get(); } \ - type *operator->() { return Get(); } \ - } varName; - -#define DECLARE_SCHEMA_CLASS_BASE(className) \ - typedef className ThisClass; \ - static constexpr const char *ThisClassName = #className; - -#endif \ No newline at end of file diff --git a/src/server/chat/Chat.cpp b/src/server/chat/Chat.cpp deleted file mode 100644 index 2a526ae03..000000000 --- a/src/server/chat/Chat.cpp +++ /dev/null @@ -1,230 +0,0 @@ -#include "Chat.h" -#include "../../player/playermanager/PlayerManager.h" -#include "../../server/commands/CommandsManager.h" -#include "usermessages.pb.h" -#include "../../filesystem/files/Files.h" - -#include -#include -#include -#include -#include - -SH_DECL_EXTERN8_void(IGameEventSystem, PostEventAbstract, SH_NOATTRIB, 0, CSplitScreenSlot, bool, int, const uint64*, INetworkMessageInternal*, const CNetMessage*, unsigned long, NetChannelBufType_t) -SH_DECL_EXTERN3_void(ICvar, DispatchConCommand, SH_NOATTRIB, 0, ConCommandRef, const CCommandContext&, const CCommand&); - - -void ChatProcessor::Initialize() -{ -#ifndef _WIN32 - SH_ADD_HOOK_MEMFUNC(IGameEventSystem, PostEventAbstract, g_pGameEventSystem, this, &ChatProcessor::PostEvent, false); -#endif - SH_ADD_HOOK_MEMFUNC(ICvar, DispatchConCommand, icvar, this, &ChatProcessor::DispatchConCommand, false); -} - -void ChatProcessor::Destroy() -{ -#ifndef _WIN32 - SH_REMOVE_HOOK_MEMFUNC(IGameEventSystem, PostEventAbstract, g_pGameEventSystem, this, &ChatProcessor::PostEvent, false); -#endif - SH_REMOVE_HOOK_MEMFUNC(ICvar, DispatchConCommand, icvar, this, &ChatProcessor::DispatchConCommand, false); -} - -void ChatError(std::string text) -{ - if (!g_SMAPI) - return; - - PLUGIN_PRINTF("Chat Processor", "%s\n", text.c_str()); -} - -void ChatProcessor::LoadMessages() -{ - this->placeholders.clear(); - rapidjson::Document chatFile; - - chatFile.Parse(Files::Read("addons/swiftly/configs/chat.json").c_str()); - if (chatFile.HasParseError()) - return ChatError(string_format("A parsing error has been detected.\nError (offset %u): %s\n", (unsigned)chatFile.GetErrorOffset(), GetParseError_En(chatFile.GetParseError()))); - - if (chatFile.IsArray()) - return ChatError("Chat file cannot be an array."); - - for (auto it = chatFile.MemberBegin(); it != chatFile.MemberEnd(); ++it) - { - std::string key = it->name.GetString(); - if (!it->value.IsString()) - { - ChatError(string_format("The field \"%s\" is not a string.", key.c_str())); - continue; - } - std::string value = it->value.GetString(); - if (value.empty()) - { - continue; - } - this->placeholders[key] = value; - } -} - -std::map textMessageReplacements = { - { "\n", "\u2029" }, - { " ", "" }, - { "", "" }, - { "", "" }, - { "", "" }, - { "", "" }, - { "", "" }, - { "", "" }, - { "", "" }, - { "", "" }, - { "", "" }, - { "", "" }, - { "", "" }, - { "", "" }, -}; - -std::string getCurrentTime() { - std::time_t now = std::time(nullptr); - std::tm* localTime = std::localtime(&now); - - std::ostringstream oss; - oss << std::setw(2) << std::setfill('0') << localTime->tm_hour << ":" - << std::setw(2) << std::setfill('0') << localTime->tm_min; - - return oss.str(); -} -std::string getCompTeammateColorString(CCSPlayerController* controller) -{ - switch (controller->m_iCompTeammateColor) - { - case -2: - return "{GREY}"; - break; - // case -1: // IN MY CASE WAS YELLOW PROBABLY IS RANDOMLY? - // return "{YELLOW}"; - // break; - case 0: - return "{BLUE}"; - break; - case 1: - return "{GREEN}"; - break; - case 2: - return "{YELLOW}"; - break; - case 3: - return "{ORANGE}"; - break; - case 4: - return "{PURPLE}"; - break; - case 5: - return "{RED}"; - break; - default: - return "{DEFAULT}"; - break; - } -} - -std::string formatPlayerMessage(Player* player, CCSPlayerController* controller, std::string placeholder, std::string message, bool isRadio = false) -{ - for (auto it = textMessageReplacements.begin(); it != textMessageReplacements.end(); ++it) - message = replace(message, it->first, it->second); - - std::string name = player->GetName(); - - for (auto it = colors.begin(); it != colors.end(); ++it) - { - message = replace(message, it->first, ""); - message = replace(message, str_tolower(it->first), ""); - name = replace(name, it->first, ""); - name = replace(name, str_tolower(it->first), ""); - } - - std::map replacements = { - {"{NAME}", string_format("%s%s{default}", player->namecolor.empty() ? "{teamcolor}" : player->namecolor.c_str(), name.c_str())}, - {"{TAG}", string_format("%s%s{default}", player->tagcolor.empty() ? "{default}" : player->tagcolor.c_str(), player->tag.c_str())}, - {"{LOCATION}", isRadio ? "%s2" : "%s3"}, - {"{TIME}", getCurrentTime().c_str()}, - {"{COMP_COLOR}", getCompTeammateColorString(controller).c_str()}, - {"{MESSAGE}", string_format("%s%s", player->chatcolor.c_str(), message.c_str())}, - }; - for (auto it = replacements.begin(); it != replacements.end(); ++it) - placeholder = replace(placeholder, it->first, it->second); - - return ProcessColor(" " + placeholder, controller->m_iTeamNum()); -} -void ChatProcessor::PostEvent(CSplitScreenSlot nSlot, bool bLocalOnly, int nClientCount, const uint64* clients, INetworkMessageInternal* pEvent, const CNetMessage* pData, unsigned long nSize, NetChannelBufType_t bufType) -{ - if (pEvent->GetNetMessageInfo()->m_MessageId == 118) { - PluginUserMessage um(pEvent, (CNetMessage*)pData, (uint64*)clients); - Player* player = g_playerManager->GetPlayer(um.GetInt32("entityindex") - 1); - if (!player) return; - - CCSPlayerController* controller = player->GetPlayerController(); - if (!controller) return; - - std::string key = um.GetString("messagename"); - auto it = this->placeholders.find(key); - if (it != this->placeholders.end()) { - um.SetString("messagename", formatPlayerMessage(player, controller, it->second.c_str(), um.GetString("param2")).c_str()); - } - } - else if (pEvent->GetNetMessageInfo()->m_MessageId == 322) { - PluginUserMessage um(pEvent, (CNetMessage*)pData, (uint64*)clients); - Player* player = g_playerManager->GetPlayer(um.GetInt32("client")); - if (!player) return; - CCSPlayerController* controller = player->GetPlayerController(); - if (!controller) return; - - auto it = this->placeholders.find(um.GetRepeatedString("params", 2)); - if (it != this->placeholders.end()) { - um.SetString("msg_name", formatPlayerMessage(player, controller, it->second.c_str(), um.GetRepeatedString("params", 2), true).c_str()); - } - } -} - -bool OnClientCommand(int playerid, std::string command); - -void ChatProcessor::DispatchConCommand(ConCommandRef cmd, const CCommandContext& ctx, const CCommand& args) -{ - CPlayerSlot slot = ctx.GetPlayerSlot(); - - if (slot.Get() != -1) - { - if (!OnClientCommand(slot.Get(), args.GetCommandString())) - RETURN_META(MRES_SUPERCEDE); - - std::string command = args.Arg(0); - if (command == "say" || command == "say_team") - { - Player* player = g_playerManager->GetPlayer(slot); - if (!player) return; - - CCSPlayerController* controller = player->GetPlayerController(); - bool teamonly = (command == "say_team"); - - auto text = args[1]; - if (V_strlen(text) == 0) RETURN_META(MRES_SUPERCEDE); - - if (controller) - { - IGameEvent* pEvent = g_gameEventManager->CreateEvent("player_chat"); - - if (pEvent) - { - pEvent->SetBool("teamonly", teamonly); - pEvent->SetInt("userid", slot.Get()); - pEvent->SetString("text", args[1]); - - g_gameEventManager->FireEvent(pEvent, true); - } - } - - int handleCommandReturn = g_commandsManager->HandleCommand(player, text); - if (handleCommandReturn == 2 || !OnClientChat(slot.Get(), text, teamonly)) RETURN_META(MRES_SUPERCEDE); - } - } -} diff --git a/src/server/chat/Chat.h b/src/server/chat/Chat.h deleted file mode 100644 index 41be4e636..000000000 --- a/src/server/chat/Chat.h +++ /dev/null @@ -1,28 +0,0 @@ -#ifndef _chat_processor_h -#define _chat_processor_h - -#include "../../plugins/core/scripting.h" -#include "public/icvar.h" -#include "../../utils/utils.h" -#include -#include - -bool OnClientChat(int playerid, std::string text, bool teamonly); - -class ChatProcessor -{ -private: - std::map placeholders; -public: - ChatProcessor() {} - void Initialize(); - void Destroy(); - void LoadMessages(); - - void PostEvent(CSplitScreenSlot nSlot, bool bLocalOnly, int nClientCount, const uint64 *clients, INetworkMessageInternal* pEvent, const CNetMessage* pData, unsigned long nSize, NetChannelBufType_t bufType); - void DispatchConCommand(ConCommandRef cmd, const CCommandContext& ctx, const CCommand& args); -}; - -extern ChatProcessor *g_chatProcessor; - -#endif \ No newline at end of file diff --git a/src/server/commands/Command.cpp b/src/server/commands/Command.cpp deleted file mode 100644 index 6b5bc868a..000000000 --- a/src/server/commands/Command.cpp +++ /dev/null @@ -1,28 +0,0 @@ -#include "Command.h" - -#include "../../tools/crashreporter/CallStack.h" -#include "../../plugins/PluginManager.h" - -Command::~Command() -{ - Plugin* plugin = g_pluginManager->FetchPlugin(this->m_pluginName); - if (!plugin) - return; - - delete ((EValue*)this->m_funcPtr); -} - -void Command::Execute(int slot, std::vector args, bool silent, std::string prefix) -{ - REGISTER_CALLSTACK(this->m_pluginName, string_format("Command::Execute(command_name=\"%s\",slot=%d,args=\"%s\",silent=%d,prefix=\"%s\")", this->m_commandName.c_str(), slot, implode(args, " ").c_str(), silent, prefix.c_str())); - if (this->m_funcPtr == nullptr) - return; - - Plugin* plugin = g_pluginManager->FetchPlugin(this->m_pluginName); - if (!plugin) - return; - - plugin->ExecuteCommand(this->m_funcPtr, this->m_commandName, slot, args, silent, prefix); -} - -std::string Command::GetPluginName() { return this->m_pluginName; } \ No newline at end of file diff --git a/src/server/commands/Command.h b/src/server/commands/Command.h deleted file mode 100644 index 9908e19d0..000000000 --- a/src/server/commands/Command.h +++ /dev/null @@ -1,25 +0,0 @@ -#pragma once - -#include -#include - -class Command -{ -public: - Command(std::string plugin_name, void *functionPtr, std::string name) - { - this->m_funcPtr = functionPtr; - this->m_pluginName = plugin_name; - this->m_commandName = name; - } - - ~Command(); - - void Execute(int slot, std::vector args, bool silent, std::string prefix); - std::string GetPluginName(); - -private: - void *m_funcPtr = nullptr; - std::string m_pluginName; - std::string m_commandName; -}; \ No newline at end of file diff --git a/src/server/commands/CommandsManager.cpp b/src/server/commands/CommandsManager.cpp deleted file mode 100644 index a8b497b97..000000000 --- a/src/server/commands/CommandsManager.cpp +++ /dev/null @@ -1,200 +0,0 @@ -#include "CommandsManager.h" - -#include "../configuration/Configuration.h" - -CommandsManager::CommandsManager() {} -CommandsManager::~CommandsManager() {} - -static void commandsCallback(const CCommandContext& context, const CCommand& args); -std::map conCommandCreated; - -std::set commandPrefixes; -std::set silentCommandPrefixes; - -// @returns 1 - command is not silent -// @returns 2 - command is silent -// @returns -1 - invalid controller -// @returns 0 - is not command -int CommandsManager::HandleCommand(Player* player, std::string text) -{ - if (text == "" || text.size() == 0) - return -1; - - if (player == nullptr) - return -1; - - if (commandPrefixes.size() == 0) commandPrefixes = explodeToSet(g_Config->FetchValue("core.commandPrefixes"), " "); - if (silentCommandPrefixes.size() == 0) silentCommandPrefixes = explodeToSet(g_Config->FetchValue("core.commandSilentPrefixes"), " "); - - bool isCommand = false; - bool isSilentCommand = false; - std::string selectedPrefix = ""; - - if(commandPrefixes.size() > 0) { - for(auto it = commandPrefixes.begin(); it != commandPrefixes.end(); ++it) { - std::string prefix = *it; - auto strPrefix = text.substr(0, prefix.size()); - - if(prefix == strPrefix) { - isCommand = true; - selectedPrefix = prefix; - break; - } - } - } - - if(!isCommand && silentCommandPrefixes.size() > 0) { - for(auto it = silentCommandPrefixes.begin(); it != silentCommandPrefixes.end(); ++it) { - std::string prefix = *it; - auto strPrefix = text.substr(0, prefix.size()); - - if(prefix == strPrefix) { - isSilentCommand = true; - selectedPrefix = prefix; - break; - } - } - } - - if (isCommand || isSilentCommand) - { - CCommand tokenizedArgs; - tokenizedArgs.Tokenize(text.c_str()); - - std::vector cmdString = TokenizeCommand(text); - cmdString.erase(cmdString.begin()); - - if (tokenizedArgs.ArgC() < 1) - return 0; - - std::string commandName = tokenizedArgs[0]; - if (commandName.size() < 1) - return 0; - - commandName.erase(0, selectedPrefix.size()); - - if(player->menu_renderer->HasMenuShown() && g_Config->FetchValue("core.menu.inputMode") == "chat") { - if( commandName == "1" || commandName == "2" || commandName == "3" || commandName == "4" || - commandName == "5" || commandName == "6" || commandName == "7" || commandName == "8" || commandName == "9") { - int value = V_StringToUint32(commandName.c_str(), 1); - if(value > player->menu_renderer->GetMenu()->GetItemsOnPage(player->menu_renderer->GetPage())) return 2; - - while(player->menu_renderer->GetSelection() != value-1) { - player->menu_renderer->MoveSelection(); - } - - player->menu_renderer->PerformMenuAction(g_Config->FetchValue("core.menu.buttons.use")); - return 2; - } - } - - Command* cmd = g_commandsManager->FetchCommand(commandName); - if (cmd == nullptr) - return 0; - - try { - cmd->Execute(player->GetSlot().Get(), cmdString, isSilentCommand, selectedPrefix); - } - catch (std::exception& e) { - PLUGIN_PRINTF("Commands Manager", "An error has occured while trying to execute command '%s'.\n", commandName.c_str()); - PLUGIN_PRINTF("Commands Manager", "%s\n", e.what()); - } - } - - if (isCommand) - return 1; - else if (isSilentCommand) - return 2; - else - return 0; -} - -std::string GenerateCommandDefaultPrefix() { - if(commandPrefixes.size() == 0 && silentCommandPrefixes.size() == 0) return "sw_"; - - if(commandPrefixes.size() == 0) return (*silentCommandPrefixes.begin()); - else return (*commandPrefixes.begin()); -} - -Command* CommandsManager::FetchCommand(std::string cmd) -{ - if (this->commands.find(cmd) == this->commands.end()) return nullptr; - - return this->commands[cmd]; -} - -void CommandsManager::RegisterCommand(std::string plugin_name, std::string cmd, Command* command, bool registerRaw) -{ - if (!registerRaw) - { - if (this->commands.find(cmd) != this->commands.end()) - return; - - this->commands.insert({ cmd, command }); - this->commandAliases.insert({ cmd, {} }); - - if (this->commandsByPlugin.find(plugin_name) == this->commandsByPlugin.end()) - this->commandsByPlugin.insert({ plugin_name, {} }); - - this->commandsByPlugin[plugin_name].push_back(cmd); - } - - if (!registerRaw) - cmd = "sw_" + cmd; - - if (conCommandCreated.find(cmd) == conCommandCreated.end()) - { - conCommandCreated.insert({cmd, new ConCommand(cmd.c_str(), commandsCallback, "Swiftly Command", (1 << 25) | (1 << 0) | (1 << 24))}); - } -} - -void CommandsManager::UnregisterCommand(std::string cmd) -{ - if (this->commands.find(cmd) == this->commands.end()) - return; - - Command* command = FetchCommand(cmd); - std::string plugin = command->GetPluginName(); - - delete command; - this->commands.erase(cmd); - - std::vector aliases = this->commandAliases.at(cmd); - for (std::string alias : aliases) - UnregisterCommand(alias); - - this->commandAliases.erase(cmd); - - auto cmdIterator = std::find(this->commandsByPlugin[plugin].begin(), this->commandsByPlugin[plugin].end(), cmd); - if (cmdIterator != this->commandsByPlugin[plugin].end()) - this->commandsByPlugin[plugin].erase(cmdIterator); - - if(conCommandCreated.find(cmd) != conCommandCreated.end()) { - delete conCommandCreated.at(cmd); - conCommandCreated.erase(cmd); - } - if(conCommandCreated.find("sw_" + cmd) != conCommandCreated.end()) { - delete conCommandCreated.at("sw_" + cmd); - conCommandCreated.erase("sw_" + cmd); - } -} - -static void commandsCallback(const CCommandContext& context, const CCommand& args) -{ - CCommand tokenizedArgs; - tokenizedArgs.Tokenize(args.GetCommandString()); - - std::string commandName = (starts_with(tokenizedArgs[0], "sw_") ? (tokenizedArgs[0] + 3) : tokenizedArgs[0]); - - std::vector argsplit = TokenizeCommand(args.GetCommandString()); - argsplit.erase(argsplit.begin()); - - if (g_commandsManager->FetchCommand(commandName) == nullptr) - return; - - Command* command = g_commandsManager->FetchCommand(commandName); - if (!command) - return; - - command->Execute(context.GetPlayerSlot().Get(), argsplit, true, "sw_"); -} \ No newline at end of file diff --git a/src/server/commands/CommandsManager.h b/src/server/commands/CommandsManager.h deleted file mode 100644 index 4c9a878dc..000000000 --- a/src/server/commands/CommandsManager.h +++ /dev/null @@ -1,42 +0,0 @@ -#pragma once - -#include -#include -#include -#include - -#include "Command.h" -#include "../../entrypoint.h" -#include "../../player/player/Player.h" - -class CommandsManager -{ -private: - std::map commands; - std::map> commandAliases; - std::map> commandsByPlugin; - -public: - CommandsManager(); - ~CommandsManager(); - - int HandleCommand(Player *player, std::string text); - - Command *FetchCommand(std::string cmd); - void RegisterCommand(std::string plugin_name, std::string cmd, Command *command, bool registerRaw = false); - void UnregisterCommand(std::string cmd); - - std::vector FetchCommandsByPlugin(std::string plugin_name) - { - if (this->commandsByPlugin.find(plugin_name) == this->commandsByPlugin.end()) - return {}; - return this->commandsByPlugin.at(plugin_name); - } - - std::map GetCommands() - { - return this->commands; - }; -}; - -extern CommandsManager *g_commandsManager; \ No newline at end of file diff --git a/src/server/configuration/Configuration.cpp b/src/server/configuration/Configuration.cpp deleted file mode 100644 index 905294a68..000000000 --- a/src/server/configuration/Configuration.cpp +++ /dev/null @@ -1,674 +0,0 @@ -#include "Configuration.h" -#include "../../filesystem/files/Files.h" -#include -#include "../../utils/utils.h" - -extern bool followCS2Guidelines; - -bool ConfigurationError(std::string configuration_file, std::string error) -{ - if (!g_SMAPI) - return false; - - PLUGIN_PRINTF("Configurations", "Error: %s: %s\n", configuration_file.c_str(), error.c_str()); - return false; -} - -void WritePluginFile(std::string path, rapidjson::Value& val) -{ - rapidjson::StringBuffer buffer; - rapidjson::PrettyWriter writer(buffer); - - val.Accept(writer); - std::string content = buffer.GetString(); - - Files::Write(path, content, false); -} - -std::string JSONToString(rapidjson::Value& val) -{ - rapidjson::StringBuffer buffer; - rapidjson::Writer writer(buffer); - - val.Accept(writer); - return buffer.GetString(); -} - -rapidjson::Value& GetJSONDoc(rapidjson::Document& doc, std::string key, rapidjson::Value& defaultValue, bool& wasCreated) -{ - rapidjson::Value* currentDoc = &doc; - auto keys = explode(key, "."); - - while (keys.size() > 1) - { - std::string key = keys[0]; - keys.erase(keys.begin()); - - if (!currentDoc->HasMember(key.c_str())) - currentDoc->AddMember(rapidjson::Value().SetString(key.c_str(), doc.GetAllocator()), rapidjson::Value(rapidjson::kObjectType), doc.GetAllocator()); - else if (!currentDoc->operator[](key.c_str()).IsObject()) - currentDoc->operator[](key.c_str()).SetObject(); - - currentDoc = ¤tDoc->operator[](key.c_str()); - } - - if (!currentDoc->HasMember(keys[0].c_str())) - { - currentDoc->AddMember(rapidjson::Value().SetString(keys[0].c_str(), doc.GetAllocator()), defaultValue, doc.GetAllocator()); - wasCreated = true; - } - - return currentDoc->operator[](keys[0].c_str()); -} - -template -void RegisterConfiguration(bool& wasCreated, rapidjson::Document& document, std::string configFilePath, std::string config_prefix, std::string key, T default_value) -{ - rapidjson::Value defaultValue; - - if constexpr (std::is_same::value) - defaultValue.SetString(default_value.c_str(), document.GetAllocator()); - else if constexpr (std::is_same::value) - defaultValue.SetString(default_value, document.GetAllocator()); - else if constexpr (std::is_same::value) - defaultValue.SetBool(default_value); - else if constexpr (std::is_same::value) - defaultValue.SetUint64(default_value); - else if constexpr (std::is_same::value) - defaultValue.SetUint(default_value); - else if constexpr (std::is_same::value) - defaultValue.SetUint(default_value); - else if constexpr (std::is_same::value) - defaultValue.SetUint(default_value); - else if constexpr (std::is_same::value) - defaultValue.SetInt64(default_value); - else if constexpr (std::is_same::value) - defaultValue.SetInt(default_value); - else if constexpr (std::is_same::value) - defaultValue.SetInt(default_value); - else if constexpr (std::is_same::value) - defaultValue.SetInt(default_value); - else if constexpr (std::is_same::value) - defaultValue.SetFloat(default_value); - else if constexpr (std::is_same::value) - defaultValue.SetDouble(default_value); - - rapidjson::Value& jsonDoc = GetJSONDoc(document, key, defaultValue, wasCreated); - - if constexpr (std::is_same::value) - { - if (!jsonDoc.IsString()) - { - jsonDoc = defaultValue; - wasCreated = true; - } - - g_Config->SetValue(config_prefix + "." + key, std::string(jsonDoc.GetString())); - } - else if constexpr (std::is_same::value) - { - if (!jsonDoc.IsString()) - { - jsonDoc = defaultValue; - wasCreated = true; - } - - g_Config->SetValue(config_prefix + "." + key, std::string(jsonDoc.GetString())); - } - else if constexpr (std::is_same::value) - { - if (!jsonDoc.IsBool()) - { - jsonDoc = defaultValue; - wasCreated = true; - } - - g_Config->SetValue(config_prefix + "." + key, jsonDoc.GetBool()); - } - else if constexpr (std::is_same::value) - { - if (!jsonDoc.IsUint64()) - { - jsonDoc = defaultValue; - wasCreated = true; - } - g_Config->SetValue(config_prefix + "." + key, jsonDoc.GetUint64()); - } - else if constexpr (std::is_same::value) - { - if (!jsonDoc.IsUint()) - { - jsonDoc = defaultValue; - wasCreated = true; - } - - g_Config->SetValue(config_prefix + "." + key, jsonDoc.GetUint()); - } - else if constexpr (std::is_same::value) - { - if (!jsonDoc.IsUint()) - { - jsonDoc = defaultValue; - wasCreated = true; - } - - g_Config->SetValue(config_prefix + "." + key, jsonDoc.GetUint()); - } - else if constexpr (std::is_same::value) - { - if (!jsonDoc.IsUint()) - { - jsonDoc = defaultValue; - wasCreated = true; - } - - g_Config->SetValue(config_prefix + "." + key, jsonDoc.GetUint()); - } - else if constexpr (std::is_same::value) - { - if (!jsonDoc.IsInt64()) - { - jsonDoc = defaultValue; - wasCreated = true; - } - - g_Config->SetValue(config_prefix + "." + key, jsonDoc.GetInt64()); - } - else if constexpr (std::is_same::value) - { - if (!jsonDoc.IsInt()) - { - jsonDoc = defaultValue; - wasCreated = true; - } - - g_Config->SetValue(config_prefix + "." + key, jsonDoc.GetInt()); - } - else if constexpr (std::is_same::value) - { - if (!jsonDoc.IsInt()) - { - jsonDoc = defaultValue; - wasCreated = true; - } - - g_Config->SetValue(config_prefix + "." + key, jsonDoc.GetInt()); - } - else if constexpr (std::is_same::value) - { - if (!jsonDoc.IsInt()) - { - jsonDoc = defaultValue; - wasCreated = true; - } - - g_Config->SetValue(config_prefix + "." + key, jsonDoc.GetInt()); - } - else if constexpr (std::is_same::value) - { - if (!jsonDoc.IsFloat()) - { - jsonDoc = defaultValue; - wasCreated = true; - } - - g_Config->SetValue(config_prefix + "." + key, jsonDoc.GetFloat()); - } - else if constexpr (std::is_same::value) - { - if (!jsonDoc.IsDouble()) - { - jsonDoc = defaultValue; - wasCreated = true; - } - - g_Config->SetValue(config_prefix + "." + key, jsonDoc.GetDouble()); - } -} - -template -void RegisterConfigurationVector(bool& wasCreated, rapidjson::Document& document, std::string configFilePath, std::string config_prefix, std::string key, std::vector default_value, bool shouldImplode, std::string delimiter) -{ - rapidjson::Value defaultValue(rapidjson::kArrayType); - - for (const T& val : default_value) - { - rapidjson::Value defVal; - - if constexpr (std::is_same::value) - defVal.SetString(val.c_str(), document.GetAllocator()); - else if constexpr (std::is_same::value) - defVal.SetString(val, document.GetAllocator()); - else if constexpr (std::is_same::value) - defVal.SetBool(val); - else if constexpr (std::is_same::value) - defVal.SetUint64(val); - else if constexpr (std::is_same::value) - defVal.SetUint(val); - else if constexpr (std::is_same::value) - defVal.SetUint(val); - else if constexpr (std::is_same::value) - defVal.SetUint(val); - else if constexpr (std::is_same::value) - defVal.SetInt64(val); - else if constexpr (std::is_same::value) - defVal.SetInt(val); - else if constexpr (std::is_same::value) - defVal.SetInt(val); - else if constexpr (std::is_same::value) - defVal.SetInt(val); - else if constexpr (std::is_same::value) - defVal.SetFloat(val); - else if constexpr (std::is_same::value) - defVal.SetDouble(val); - - defaultValue.PushBack(defVal, document.GetAllocator()); - } - - rapidjson::Value& jsonDoc = GetJSONDoc(document, key, defaultValue, wasCreated); - - if (!jsonDoc.IsArray()) - { - jsonDoc = defaultValue; - wasCreated = true; - } - - std::vector result; - - auto arr = jsonDoc.GetArray(); - - for (rapidjson::SizeType i = 0; i < arr.Size(); i++) - { - if constexpr (std::is_same::value) - { - if (!arr[i].IsString()) - { - ConfigurationError(configFilePath + ".json", string_format("The field \"%s[%d]\" is not a string.\n", key.c_str(), i)); - continue; - } - - result.push_back(std::string(arr[i].GetString())); - } - else if constexpr (std::is_same::value) - { - if (!arr[i].IsString()) - { - ConfigurationError(configFilePath + ".json", string_format("The field \"%s[%d]\" is not a string.\n", key.c_str(), i)); - continue; - } - - result.push_back(arr[i].GetString()); - } - else if constexpr (std::is_same::value) - { - if (!arr[i].IsBool()) - { - ConfigurationError(configFilePath + ".json", string_format("The field \"%s[%d]\" is not a boolean.\n", key.c_str(), i)); - continue; - } - result.push_back(arr[i].GetBool()); - } - else if constexpr (std::is_same::value) - { - if (!arr[i].IsInt64()) - { - ConfigurationError(configFilePath + ".json", string_format("The field \"%s[%d]\" is not an unsigned integer (64-bit).\n", key.c_str(), i)); - continue; - } - result.push_back(arr[i].GetUint64()); - } - else if constexpr (std::is_same::value) - { - if (!arr[i].IsInt()) - { - ConfigurationError(configFilePath + ".json", string_format("The field \"%s[%d]\" is not an unsigned integer (32-bit).\n", key.c_str(), i)); - continue; - } - result.push_back(arr[i].GetUint()); - } - else if constexpr (std::is_same::value) - { - if (!arr[i].IsInt()) - { - ConfigurationError(configFilePath + ".json", string_format("The field \"%s[%d]\" is not an unsigned integer (16-bit).\n", key.c_str(), i)); - continue; - } - result.push_back((uint16_t)arr[i].GetUint()); - } - else if constexpr (std::is_same::value) - { - if (!arr[i].IsInt()) - { - ConfigurationError(configFilePath + ".json", string_format("The field \"%s[%d]\" is not an unsigned integer (8-bit).\n", key.c_str(), i)); - continue; - } - result.push_back((uint8_t)arr[i].GetUint()); - } - else if constexpr (std::is_same::value) - { - if (!arr[i].IsInt64()) - { - ConfigurationError(configFilePath + ".json", string_format("The field \"%s[%d]\" is not an integer (64-bit).\n", key.c_str(), i)); - continue; - } - result.push_back(arr[i].GetInt64()); - } - else if constexpr (std::is_same::value) - { - if (!arr[i].IsInt()) - { - ConfigurationError(configFilePath + ".json", string_format("The field \"%s[%d]\" is not an integer (32-bit).\n", key.c_str(), i)); - continue; - } - result.push_back(arr[i].GetInt()); - } - else if constexpr (std::is_same::value) - { - if (!arr[i].IsInt()) - { - ConfigurationError(configFilePath + ".json", string_format("The field \"%s[%d]\" is not an integer (16-bit).\n", key.c_str(), i)); - continue; - } - result.push_back((int16_t)arr[i].GetInt()); - } - else if constexpr (std::is_same::value) - { - if (!arr[i].IsInt()) - { - ConfigurationError(configFilePath + ".json", string_format("The field \"%s[%d]\" is not an integer (8-bit).\n", key.c_str(), i)); - continue; - } - result.push_back((int8_t)arr[i].GetInt()); - } - else if constexpr (std::is_same::value) - { - if (!arr[i].IsFloat()) - { - ConfigurationError(configFilePath + ".json", string_format("The field \"%s[%d]\" is not a float.\n", key.c_str(), i)); - continue; - } - result.push_back(arr[i].GetFloat()); - } - else if constexpr (std::is_same::value) - { - if (!arr[i].IsFloat()) - { - ConfigurationError(configFilePath + ".json", string_format("The field \"%s[%d]\" is not a double.\n", key.c_str(), i)); - continue; - } - result.push_back(arr[i].GetDouble()); - } - else - { - ConfigurationError(configFilePath + ".json", string_format("Invalid data type: %s.\n", typeid(T).name())); - return; - } - } - - if (shouldImplode) - { - std::vector implodeArr; - for (const T& val : result) - { - if constexpr (std::is_same::value) - implodeArr.push_back(val); - else if constexpr (std::is_same::value) - implodeArr.push_back(std::string(val)); - else - implodeArr.push_back(std::to_string(val)); - } - - g_Config->SetValue(config_prefix + "." + key, implode(implodeArr, delimiter)); - } - else - g_Config->SetValue(config_prefix + "." + key, result); -} - -bool Configuration::LoadConfiguration() -{ - rapidjson::Document coreConfigFile; - coreConfigFile.Parse(Files::Read("addons/swiftly/configs/core.json").c_str()); - if (coreConfigFile.HasParseError()) - return ConfigurationError("core.json", string_format("A parsing error has been detected.\nError (offset %u): %s\n", (unsigned)coreConfigFile.GetErrorOffset(), GetParseError_En(coreConfigFile.GetParseError())).c_str()); - - if (coreConfigFile.IsArray()) - return ConfigurationError("core.json", "Core configuration file cannot be an array."); - - bool wasEdited = false; - - RegisterConfiguration(wasEdited, coreConfigFile, "core", "core", "logging.enabled", true); - RegisterConfiguration(wasEdited, coreConfigFile, "core", "core", "logging.mode", std::string("daily")); - RegisterConfiguration(wasEdited, coreConfigFile, "core", "core", "logging.save_core_messages", false); - - std::string loggingMode = std::string(coreConfigFile["logging"]["mode"].GetString()); - if (loggingMode != "daily" && loggingMode != "map" && loggingMode != "permanent") - return ConfigurationError("core.json", "The field \"logging.mode\" needs to be: \"daily\" or \"map\"."); - - RegisterConfigurationVector(wasEdited, coreConfigFile, "core", "core", "commandPrefixes", { "!" }, true, " "); - RegisterConfigurationVector(wasEdited, coreConfigFile, "core", "core", "commandSilentPrefixes", { "/" }, true, " "); - RegisterConfigurationVector(wasEdited, coreConfigFile, "core", "core", "patches_to_perform", {}, true, " "); - - RegisterConfiguration(wasEdited, coreConfigFile, "core", "core", "CS2ServerGuidelines", "https://blog.counter-strike.net/index.php/server_guidelines/"); - RegisterConfiguration(wasEdited, coreConfigFile, "core", "core", "FollowCS2ServerGuidelines", true); - - followCS2Guidelines = g_Config->FetchValue("core.FollowCS2ServerGuidelines"); - - RegisterConfiguration(wasEdited, coreConfigFile, "core", "core", "console_filtering", true); - - RegisterConfiguration(wasEdited, coreConfigFile, "core", "core", "language", "en"); - RegisterConfiguration(wasEdited, coreConfigFile, "core", "core", "use_player_language", true); - - RegisterConfiguration(wasEdited, coreConfigFile, "core", "core", "menu.navigation_prefix", "➤"); - - RegisterConfiguration(wasEdited, coreConfigFile, "core", "core", "menu.sound.use.name", "Vote.Cast.Yes"); - RegisterConfiguration(wasEdited, coreConfigFile, "core", "core", "menu.sound.use.volume", 0.75); - - RegisterConfiguration(wasEdited, coreConfigFile, "core", "core", "menu.sound.scroll.name", "UI.ContractType"); - RegisterConfiguration(wasEdited, coreConfigFile, "core", "core", "menu.sound.scroll.volume", 0.75); - - RegisterConfiguration(wasEdited, coreConfigFile, "core", "core", "menu.sound.exit.name", "Vote.Failed"); - RegisterConfiguration(wasEdited, coreConfigFile, "core", "core", "menu.sound.exit.volume", 0.75); - - RegisterConfiguration(wasEdited, coreConfigFile, "core", "core", "menu.buttons.use", "e"); - RegisterConfiguration(wasEdited, coreConfigFile, "core", "core", "menu.buttons.scroll", "shift"); - RegisterConfiguration(wasEdited, coreConfigFile, "core", "core", "menu.buttons.exit.option", false); - RegisterConfiguration(wasEdited, coreConfigFile, "core", "core", "menu.buttons.exit.button", "tab"); - - RegisterConfiguration(wasEdited, coreConfigFile, "core", "core", "menu.kind", "screen"); - RegisterConfigurationVector(wasEdited, coreConfigFile, "core", "core", "menu.available_kinds", {"screen", "center"}, true, " "); - - RegisterConfigurationVector(wasEdited, coreConfigFile, "core", "core", "menu.available_inputmodes", {"chat", "button"}, true, " "); - RegisterConfiguration(wasEdited, coreConfigFile, "core", "core", "menu.inputMode", "button"); - - RegisterConfiguration(wasEdited, coreConfigFile, "core", "core", "menu.kind_settings.center.itemsPerPage", 7); - - RegisterConfiguration(wasEdited, coreConfigFile, "core", "core", "menu.kind_settings.screen.mode", "compatibility"); - - RegisterConfiguration(wasEdited, coreConfigFile, "core", "core", "menu.kind_settings.screen.modes.compatibility.x", 0.14); - RegisterConfiguration(wasEdited, coreConfigFile, "core", "core", "menu.kind_settings.screen.modes.compatibility.y", 0.68); - RegisterConfiguration(wasEdited, coreConfigFile, "core", "core", "menu.kind_settings.screen.modes.compatibility.fontSize", 35); - RegisterConfiguration(wasEdited, coreConfigFile, "core", "core", "menu.kind_settings.screen.modes.compatibility.font", "Sans Serif"); - - RegisterConfiguration(wasEdited, coreConfigFile, "core", "core", "menu.kind_settings.screen.modes.normal.x", 0.0); - RegisterConfiguration(wasEdited, coreConfigFile, "core", "core", "menu.kind_settings.screen.modes.normal.y", 0.68); - RegisterConfiguration(wasEdited, coreConfigFile, "core", "core", "menu.kind_settings.screen.modes.normal.fontSize", 35); - RegisterConfiguration(wasEdited, coreConfigFile, "core", "core", "menu.kind_settings.screen.modes.normal.font", "Sans Serif"); - - RegisterConfiguration(wasEdited, coreConfigFile, "core", "core", "menu.kind_settings.screen.drawBackground", true); - RegisterConfiguration(wasEdited, coreConfigFile, "core", "core", "menu.kind_settings.screen.itemsPerPage", 9); - - RegisterConfiguration(wasEdited, coreConfigFile, "core", "core", "vgui.textBackground.paddingX", 0.1); - RegisterConfiguration(wasEdited, coreConfigFile, "core", "core", "vgui.textBackground.paddingY", 0.1); - - RegisterConfiguration(wasEdited, coreConfigFile, "core", "core", "vgui.textBackground.textSize", 35); - - if (wasEdited) - { - WritePluginFile("addons/swiftly/configs/core.json", coreConfigFile); - } - - this->loaded = true; - - return true; -} - -void LoadConfigPart(std::string key, rapidjson::Value& document); - -void LoadValue(const char* key, const char* keyname, rapidjson::Value& value, std::string separator = ".") -{ - std::string k = key + separator + keyname; - if (value.IsBool()) - g_Config->SetPluginValue(k, value.GetBool()); - else if (value.IsString()) - g_Config->SetPluginValue(k, std::string(value.GetString())); - else if (value.IsDouble()) - g_Config->SetPluginValue(k, value.GetDouble()); - else if (value.IsFloat()) - g_Config->SetPluginValue(k, value.GetFloat()); - else if (value.IsInt64()) - g_Config->SetPluginValue(k, value.GetInt64()); - else if (value.IsInt()) - g_Config->SetPluginValue(k, value.GetInt()); - else if (value.IsUint64()) - g_Config->SetPluginValue(k, value.GetUint64()); - else if (value.IsUint()) - g_Config->SetPluginValue(k, value.GetUint()); - else if (value.IsNull()) - g_Config->SetPluginValue(k, nullptr); - else if (value.IsObject()) { - g_Config->SetPluginValue(k, string_format("JSON⇚%s⇛", JSONToString(value).c_str())); - LoadConfigPart(k, value); - } - else if (value.IsArray()) - { - g_Config->SetPluginValue(k, string_format("JSON⇚%s⇛", JSONToString(value).c_str())); - g_Config->SetArraySize(k, value.Size()); - for (size_t i = 0; i < value.Size(); i++) - { - g_Config->SetPluginValue(string_format("%s[%d]", k.c_str(), i).c_str(), nullptr); - LoadValue(k.c_str(), string_format("[%d]", i).c_str(), value[i], ""); - } - } -}; - -void LoadConfigPart(std::string key, rapidjson::Value& document) -{ - for (auto it = document.MemberBegin(); it != document.MemberEnd(); ++it) - { - std::string keyname = it->name.GetString(); - LoadValue(key.c_str(), keyname.c_str(), it->value); - } -} - -void Configuration::SetArraySize(std::string key, unsigned int size) -{ - this->configArraySizes.insert(std::make_pair(key, size)); -} - -void Configuration::LoadPluginConfigurations() -{ - std::vector configFiles = Files::FetchFileNames("addons/swiftly/configs/plugins"); - for (const std::string configFilePath : configFiles) - { - std::string configFileName = explode(configFilePath, string_format("addons/swiftly/configs/plugins%s", WIN_LINUX("\\", "/")))[1]; - if (!ends_with(configFileName, ".json")) - continue; - - configFileName = replace(configFileName, "\\", "."); - configFileName = replace(configFileName, "/", "."); - - rapidjson::Document configurationFile; - configurationFile.Parse(Files::Read(configFilePath).c_str()); - if (configurationFile.HasParseError()) - { - ConfigurationError(configFileName, string_format("A parsing error has been detected.\nError (offset %u): %s\n", (unsigned)configurationFile.GetErrorOffset(), GetParseError_En(configurationFile.GetParseError())).c_str()); - continue; - } - - if (!configurationFile.IsObject()) - { - ConfigurationError(configFileName, "Configuration file needs to be an object."); - continue; - } - - std::string main_key = explode(configFileName, ".json")[0]; - rapidjson::Value& root = configurationFile; - - g_Config->SetPluginValue(main_key, JSONToString(root)); - LoadConfigPart(main_key, root); - } -} - -void Configuration::LoadPluginConfig(std::string key) -{ - std::string configFilePath = "addons/swiftly/configs/plugins" + std::string(WIN_LINUX("\\", "/")) + key + ".json"; - std::string configFileName = key + ".json"; - if (Files::Read(configFilePath).size() == 0) - return; - - key = replace(key, "/", "."); - key = replace(key, "\\", "."); - - std::vector toRemoveKeys; - for (std::map::iterator it = this->config.begin(); it != this->config.end(); ++it) - if (starts_with(it->first, key + ".")) - toRemoveKeys.push_back(it->first); - toRemoveKeys.push_back(key); - - for (std::string k : toRemoveKeys) - this->config.erase(k); - - rapidjson::Document configurationFile; - configurationFile.Parse(Files::Read(configFilePath).c_str()); - if (configurationFile.HasParseError()) - { - ConfigurationError(configFileName, string_format("A parsing error has been detected.\nError (offset %u): %s\n", (unsigned)configurationFile.GetErrorOffset(), GetParseError_En(configurationFile.GetParseError())).c_str()); - return; - } - - if (!configurationFile.IsObject()) - { - ConfigurationError(configFileName, "Configuration file needs to be an object."); - return; - } - - configFileName = replace(configFileName, "/", "."); - configFileName = replace(configFileName, "\\", "."); - std::string main_key = explode(configFileName, ".json")[0]; - - rapidjson::Value& root = configurationFile; - - g_Config->SetPluginValue(main_key, JSONToString(root)); - LoadConfigPart(main_key, root); -} - -template -void Configuration::SetValue(std::string key, T value) -{ - if (this->config.find(key) == this->config.end()) - this->config.insert(make_pair(key, value)); - else - this->config[key] = value; -} - -template -void Configuration::SetPluginValue(std::string key, T value) -{ - this->pluginConfig.insert_or_assign(key, value); -} - -void Configuration::ClearPluginConfig() -{ - this->pluginConfig.clear(); -} - -EXT_API void* swiftly_GetConfigurationValue(const char* key) -{ - auto& config = g_Config->FetchConfiguration(); - if (config.find(key) != config.end()) return (void*)&(config[key]); - - auto& pluginConfig = g_Config->FetchPluginConfiguration(); - if (pluginConfig.find(key) != pluginConfig.end()) return (void*)&(pluginConfig[key]); - - return nullptr; -} \ No newline at end of file diff --git a/src/server/configuration/Configuration.h b/src/server/configuration/Configuration.h deleted file mode 100644 index 9e25db30e..000000000 --- a/src/server/configuration/Configuration.h +++ /dev/null @@ -1,66 +0,0 @@ -#ifndef _configuration_h -#define _configuration_h - -#include -#include -#include - -#include -#include -#include -#include -#include - -class Configuration -{ -private: - std::map config; - std::map pluginConfig; - std::map configArraySizes; - bool loaded = false; - -public: - bool LoadConfiguration(); - inline bool IsConfigurationLoaded() { return this->loaded; }; - - void LoadPluginConfigurations(); - - std::map& FetchPluginConfiguration() { return this->pluginConfig; } - std::map& FetchConfiguration() { return this->config; } - std::map FetchConfigArraySizes() { return this->configArraySizes; } - - void SetArraySize(std::string key, unsigned int size); - - template - T FetchValue(std::string key); - - template - void SetValue(std::string key, T value); - - template - void SetPluginValue(std::string key, T value); - - bool HasKey(std::string key) { return (this->config.find(key) != this->config.end()); } - void LoadPluginConfig(std::string key); - void ClearPluginConfig(); -}; - -extern Configuration* g_Config; - -template -T Configuration::FetchValue(std::string key) -{ - if (this->config.find(key) == this->config.end()) - return 0; - - try { - return std::any_cast(this->config[key]); - } catch(std::bad_any_cast e) { - fprintf(stdout, "%s: %s\n", key.c_str(), e.what()); - return (T)0; - } -} - -void WritePluginFile(std::string path, rapidjson::Value& val); - -#endif \ No newline at end of file diff --git a/src/server/menus/Menu.h b/src/server/menus/Menu.h deleted file mode 100644 index 979397f44..000000000 --- a/src/server/menus/Menu.h +++ /dev/null @@ -1,27 +0,0 @@ -#pragma once - -#include -#include -#include -#include -#include "../translations/Translations.h" - -std::string GenerateCommandDefaultPrefix(); - -class Menu -{ -public: - virtual std::string GetID() = 0; - virtual void ProcessOptions() = 0; - virtual std::string GeneratedItems(int playerid, int page) = 0; - virtual std::string GenerateFooter(int page) = 0; - virtual void RegeneratePage(int playerid, int page, int selected) = 0; - - virtual std::string GetCommandFromOption(int page, int selected) = 0; - virtual size_t GetItemsOnPage(int page) = 0; - virtual bool IsTemporary() = 0; - - virtual Color GetColor() = 0; - virtual bool RenderEachTick() = 0; - virtual std::string GetKind() = 0; -}; \ No newline at end of file diff --git a/src/server/menus/MenuManager.cpp b/src/server/menus/MenuManager.cpp deleted file mode 100644 index e6f96d7c4..000000000 --- a/src/server/menus/MenuManager.cpp +++ /dev/null @@ -1,80 +0,0 @@ -#include "MenuManager.h" - -#include "../../player/playermanager/PlayerManager.h" -#include "../configuration/Configuration.h" - -std::map scheduledForDelete; - -MenuManager::MenuManager() -{ -} - -void MenuManager::RegisterMenu(std::string plugin_name, std::string id, std::string title, std::string color, std::vector> options, bool temporary, std::string kind) -{ - if (this->menu_ids.find(id) != this->menu_ids.end()) - return; - if(options.size() <= 0) - return; - - if(kind != "screen" && kind != "center") kind = g_Config->FetchValue("core.menu.kind"); - - Menu* menu = nullptr; - if(kind == "screen") { - menu = new ScreenMenu(id, title, color, options, temporary); - } else if(kind == "center") { - menu = new CenterMenu(id, title, color, options, temporary); - } - if(!menu) return; - - this->menu_ids.insert(std::make_pair(id, menu)); - if (this->menu_id_by_plugin.find(plugin_name) == this->menu_id_by_plugin.end()) - this->menu_id_by_plugin.insert({plugin_name, {}}); - - this->menu_id_by_plugin[plugin_name].push_back(id); -} - -void MenuManager::UnregisterMenu(std::string id) -{ - if (this->menu_ids.find(id) == this->menu_ids.end()) - return; - if (scheduledForDelete.find(id) != scheduledForDelete.end()) - return; - - scheduledForDelete.insert({id, true}); - for (uint16_t i = 0; i < g_playerManager->GetPlayerCap(); i++) - { - Player *player = g_playerManager->GetPlayer(i); - if (!player) - continue; - if (player->IsFakeClient()) - continue; - if (!player->menu_renderer->HasMenuShown()) - continue; - - if (player->menu_renderer->GetMenu()->GetID() == id) - player->menu_renderer->HideMenu(); - } - - delete this->menu_ids[id]; - this->menu_ids.erase(id); - scheduledForDelete.erase(id); -} - -Menu *MenuManager::FetchMenu(std::string menu_id) -{ - if (this->menu_ids.find(menu_id) == this->menu_ids.end()) - return nullptr; - - return this->menu_ids[menu_id]; -} - -void MenuManager::UnregisterPluginMenus(std::string plugin_name) -{ - if (this->menu_id_by_plugin.find(plugin_name) == this->menu_id_by_plugin.end()) - return; - - for (std::string id : this->menu_id_by_plugin[plugin_name]) - this->UnregisterMenu(id); - - this->menu_id_by_plugin.erase(plugin_name); -} \ No newline at end of file diff --git a/src/server/menus/MenuManager.h b/src/server/menus/MenuManager.h deleted file mode 100644 index 2aa81938f..000000000 --- a/src/server/menus/MenuManager.h +++ /dev/null @@ -1,25 +0,0 @@ -#pragma once - -#include -#include -#include - -#include "kinds/ScreenMenu.h" -#include "kinds/CenterMenu.h" - -class MenuManager -{ -private: - std::map menu_ids; - std::map> menu_id_by_plugin; - -public: - MenuManager(); - void RegisterMenu(std::string plugin_name, std::string id, std::string title, std::string color, std::vector> options, bool temporary, std::string kind); - void UnregisterMenu(std::string id); - - Menu *FetchMenu(std::string menu_id); - void UnregisterPluginMenus(std::string plugin_name); -}; - -extern MenuManager *g_MenuManager; \ No newline at end of file diff --git a/src/server/menus/MenuRenderer.cpp b/src/server/menus/MenuRenderer.cpp deleted file mode 100644 index f48017be9..000000000 --- a/src/server/menus/MenuRenderer.cpp +++ /dev/null @@ -1,239 +0,0 @@ -#include "MenuManager.h" -#include "MenuRenderer.h" - -#include "../../engine/vgui/VGUI.h" -#include "../../memory/signatures/Signatures.h" -#include "../commands/CommandsManager.h" - -typedef IGameEventListener2* (*GetLegacyGameEventListener)(CPlayerSlot slot); - -MenuRenderer::MenuRenderer(Player* player) -{ - m_player = player; - - CPlayerSlot slot = player->GetSlot(); - - centerMessageEvent = g_gameEventManager->CreateEvent("show_survival_respawn_status", true); - centerMessageEvent->SetUint64("duration", 1); - centerMessageEvent->SetInt("userid", slot.Get()); - - playerListener = g_Signatures->FetchSignature("LegacyGameEventListener")(slot); - - menu = nullptr; -} - -MenuRenderer::~MenuRenderer() -{ - HideMenu(); - g_gameEventManager->FreeEvent(centerMessageEvent); -} - -void MenuRenderer::ShowMenu(std::string menu_id) -{ - if (menu != nullptr) return; - - Menu* m = g_MenuManager->FetchMenu(menu_id); - if (m == nullptr) return; - - menu = m; - page = 1; - selected = 0; - - menu->RegeneratePage(m_player->GetSlot().Get(), page, selected); - - std::string kind = menu->GetKind(); - if(kind == "center") { - RenderMenu(); - } else if(kind == "screen") { - menuTextID = g_pVGUI->RegisterScreenText(); - - auto menuText = g_pVGUI->GetScreenText(menuTextID); - - std::string menu_mode = g_Config->FetchValue("core.menu.kind_settings.screen.mode"); - std::string font = g_Config->FetchValue(string_format("core.menu.kind_settings.screen.modes.%s.font", menu_mode.c_str())); - - float posX = g_Config->FetchValue(string_format("core.menu.kind_settings.screen.modes.%s.x", menu_mode.c_str())); - float posY = g_Config->FetchValue(string_format("core.menu.kind_settings.screen.modes.%s.y", menu_mode.c_str())); - - int fontSize = g_Config->FetchValue(string_format("core.menu.kind_settings.screen.modes.%s.fontSize", menu_mode.c_str())); - - bool hasBackground = g_Config->FetchValue("core.menu.kind_settings.screen.drawBackground"); - - menuText->Create(menu->GetColor(), font, fontSize, hasBackground, true); - menuText->SetupViewForPlayer(m_player); - RenderMenu(); - menuText->SetPosition(posX, posY); - } -} - -void MenuRenderer::HideMenu() -{ - if(menu == nullptr) return; - - page = 0; - selected = 0; - - std::string kind = menu->GetKind(); - if(menu->IsTemporary()) { - std::string menuID = menu->GetID(); - g_MenuManager->UnregisterMenu(menuID); - } - - menu = nullptr; - - if(kind == "center") { - if(centerMessageEvent) { - centerMessageEvent->SetString("loc_token", "Exiting..."); - playerListener->FireGameEvent(centerMessageEvent); - } - } else if(kind == "screen") { - g_pVGUI->DeleteScreenText(menuTextID); - - menuTextID = 0; - } -} - -bool MenuRenderer::HasMenuShown() -{ - return (menu != nullptr); -} - -Menu* MenuRenderer::GetMenu() -{ - return menu; -} - -int MenuRenderer::GetPage() -{ - return page; -} - -void MenuRenderer::SetPage(int pg) -{ - page = pg; - selected = 0; - menu->RegeneratePage(m_player->GetSlot().Get(), page, selected); - RenderMenu(); -} - -int MenuRenderer::GetSelection() -{ - return selected; -} - -void MenuRenderer::MoveSelection() -{ - if (page == 0) - return; - - int itemsPerPage = menu->GetItemsOnPage(page); - ++selected; - if (itemsPerPage == selected) - selected = 0; - - menu->RegeneratePage(m_player->GetSlot().Get(), page, selected); - RenderMenu(); -} - -void MenuRenderer::RenderMenu() { - if(!menu) return; - std::string kind = menu->GetKind(); - if(kind == "center") { - centerMessageEvent->SetString("loc_token", menu->GeneratedItems(m_player->GetSlot().Get(), page).c_str()); - } else if(kind == "screen") { - auto menuText = g_pVGUI->GetScreenText(menuTextID); - if(!menuText) return; - - menuText->SetText(menu->GeneratedItems(m_player->GetSlot().Get(), page)); - } -} - -void MenuRenderer::RenderMenuTick() -{ - if(!menu) return; - if(!menu->RenderEachTick()) return; - - std::string kind = menu->GetKind(); - if(kind == "center") { - playerListener->FireGameEvent(centerMessageEvent); - } -} - -bool MenuRenderer::ShouldRenderEachTick() -{ - if(!menu) return false; - return menu->RenderEachTick(); -} - -void MenuRenderer::PerformMenuAction(std::string button) -{ - if (!HasMenuShown()) - return; - - CCSPlayerController* controller = m_player->GetPlayerController(); - CSingleRecipientFilter filter(m_player->GetSlot().Get()); - - if (button == g_Config->FetchValue("core.menu.buttons.scroll")) - { - if (controller) - controller->EmitSoundFilter(filter, g_Config->FetchValue("core.menu.sound.scroll.name"), 1.0, g_Config->FetchValue("core.menu.sound.scroll.volume")); - - MoveSelection(); - } - else if (!g_Config->FetchValue("core.menu.buttons.exit.option") && button == g_Config->FetchValue("core.menu.buttons.exit.button")) - { - if (controller) - controller->EmitSoundFilter(filter, g_Config->FetchValue("core.menu.sound.exit.name"), 1.0, g_Config->FetchValue("core.menu.sound.exit.volume")); - - HideMenu(); - } - else if (button == g_Config->FetchValue("core.menu.buttons.use")) - { - std::string cmd = GetMenu()->GetCommandFromOption(GetPage(), GetSelection()); - - if (controller && cmd != "menuexit") - controller->EmitSoundFilter(filter, g_Config->FetchValue("core.menu.sound.use.name"), 1.0, g_Config->FetchValue("core.menu.sound.use.volume")); - - if (cmd == "menunext") - { - SetPage(GetPage() + 1); - } - else if (cmd == "menuback") - { - SetPage(GetPage() - 1); - } - else if (g_Config->FetchValue("core.menu.buttons.exit.option") && cmd == "menuexit") - { - if (controller) - controller->EmitSoundFilter(filter, g_Config->FetchValue("core.menu.sound.exit.name"), 1.0, g_Config->FetchValue("core.menu.sound.exit.volume")); - - HideMenu(); - } - else if (g_MenuManager->FetchMenu(cmd)) - { - HideMenu(); - ShowMenu(cmd); - } - else if (starts_with(cmd, "sw_")) - { - CCommand tokenizedArgs; - tokenizedArgs.Tokenize(cmd.c_str()); - - std::string commandName = (tokenizedArgs[0] + 3); - - std::vector argsplit = TokenizeCommand(cmd.c_str()); - argsplit.erase(argsplit.begin()); - - if (g_commandsManager->FetchCommand(commandName) == nullptr) - return; - - Command* command = g_commandsManager->FetchCommand(commandName); - if (!command) - return; - - command->Execute(m_player->GetSlot().Get(), argsplit, true, "sw_"); - } - else if (cmd != "") - m_player->PerformCommand(cmd); - } -} \ No newline at end of file diff --git a/src/server/menus/MenuRenderer.h b/src/server/menus/MenuRenderer.h deleted file mode 100644 index 761e73070..000000000 --- a/src/server/menus/MenuRenderer.h +++ /dev/null @@ -1,48 +0,0 @@ -#ifndef _menus_menurenderer_h -#define _menus_menurenderer_h - -#include -#include -#include "Menu.h" - -class Player; - -class MenuRenderer -{ -private: - Player* m_player; - - Menu* menu = nullptr; - int page = 0; - int selected = 0; - - // Screen Kind - uint64_t menuTextID = 0; - - // Center Kind - IGameEvent* centerMessageEvent = nullptr; - IGameEventListener2* playerListener = nullptr; - -public: - MenuRenderer(Player* player); - ~MenuRenderer(); - - void ShowMenu(std::string menu_id); - - void HideMenu(); - bool HasMenuShown(); - Menu* GetMenu(); - - int GetPage(); - void SetPage(int pg); - int GetSelection(); - void MoveSelection(); - - void PerformMenuAction(std::string button); - - bool ShouldRenderEachTick(); - void RenderMenu(); - void RenderMenuTick(); -}; - -#endif \ No newline at end of file diff --git a/src/server/menus/kinds/CenterMenu.cpp b/src/server/menus/kinds/CenterMenu.cpp deleted file mode 100644 index 07bbab8eb..000000000 --- a/src/server/menus/kinds/CenterMenu.cpp +++ /dev/null @@ -1,150 +0,0 @@ -#include "CenterMenu.h" - -#include "../../../utils/utils.h" -#include "../../../server/configuration/Configuration.h" - -#include - -CenterMenu::CenterMenu(std::string id, std::string title, std::string color, std::vector> options, bool tmp) -{ - this->id = id; - this->color = color; - this->options = options; - this->title = title; - this->temporary = tmp; - - fprintf(stdout, "Begin center\n"); - ProcessOptions(); - fprintf(stdout, "End center\n"); -} - -CenterMenu::~CenterMenu() -{ - this->id.clear(); - this->title.clear(); - this->color.clear(); - this->options.clear(); - this->processedOptions.clear(); -} - -std::string CenterMenu::GetID() -{ - return this->id; -} - -std::string CenterMenu::GetCommandFromOption(int page, int selected) -{ - if (page < 1) - return ""; - - return processedOptions[page - 1][selected].second; -} - -size_t CenterMenu::GetItemsOnPage(int page) -{ - if (page < 1) - return 0; - - return processedOptions[page - 1].size(); -} - -void CenterMenu::ProcessOptions() -{ - int pages = 0; - int processedItems = 0; - int totalProcessedItems = 0; - std::vector> tempmap; - - int reservedItems = g_Config->FetchValue("core.menu.buttons.exit.option") ? 3 : 2; - int allowedItems = g_Config->FetchValue("core.menu.kind_settings.center.itemsPerPage") - reservedItems; - - for (const std::pair entry : this->options) - { - ++processedItems; - ++totalProcessedItems; - tempmap.push_back({entry.first, entry.second}); - if (processedItems == allowedItems) - { - if (options.size() - totalProcessedItems > 0) tempmap.push_back({g_translations->FetchTranslation("core.menu.next"), "menunext"}); - if (pages != 0) tempmap.push_back({g_translations->FetchTranslation("core.menu.back"), "menuback"}); - if (reservedItems == 3) tempmap.push_back({g_translations->FetchTranslation("core.menu.exit"), "menuexit"}); - - processedItems = 0; - pages++; - this->processedOptions.push_back(tempmap); - tempmap.clear(); - } - } - - if (tempmap.size() > 0) - { - if (this->processedOptions.size() != 0) tempmap.push_back({g_translations->FetchTranslation("core.menu.back"), "menuback"}); - if (reservedItems == 3) tempmap.push_back({g_translations->FetchTranslation("core.menu.exit"), "menuexit"}); - - processedItems = 0; - this->processedOptions.push_back(tempmap); - tempmap.clear(); - } -} - -std::string CenterMenu::GeneratedItems(int playerid, int page) -{ - return this->generatedPages[playerid][page - 1]; -} - -void CenterMenu::RegeneratePage(int playerid, int page, int selected) -{ - if (this->generatedPages.find(playerid) == this->generatedPages.end()) - this->generatedPages.insert({playerid, {}}); - - while (this->generatedPages[playerid].size() < page) - { - this->generatedPages[playerid].push_back(""); - } - - std::string stringPage = string_format("
   %s

", this->color.c_str(), this->title.c_str()); - for (int i = 0; i < processedOptions[page - 1].size(); i++) - stringPage += string_format("
%s%d. %s

", (i == selected ? this->color.c_str() : "ffffff"), g_Config->FetchValue("core.menu.inputMode") == "chat" ? "    " : (i == selected ? (g_Config->FetchValue("core.menu.navigation_prefix") + " ").c_str() : "    "), i+1, processedOptions[page - 1][i].first.c_str()); - - std::string footer; - if(g_Config->FetchValue("core.menu.inputMode") == "chat") { - footer = replace(g_translations->FetchTranslation("core.menu.input.chat"), "{PAGE}", std::to_string(page)); - footer = replace(footer, "{MAXPAGES}", std::to_string(processedOptions.size())); - footer = replace(footer, "{PREFIX}", GenerateCommandDefaultPrefix()); - } else { - footer = replace(g_translations->FetchTranslation(g_Config->FetchValue("core.menu.buttons.exit.option") ? "core.menu.center.footer" : "core.menu.center.footer.nooption"), "{PAGE}", std::to_string(page)); - footer = replace(footer, "{MAXPAGES}", std::to_string(processedOptions.size())); - footer = replace(footer, "{CYCLE_BUTTON}", str_toupper(g_Config->FetchValue("core.menu.buttons.scroll"))); - footer = replace(footer, "{USE_BUTTON}", str_toupper(g_Config->FetchValue("core.menu.buttons.use"))); - footer = replace(footer, "{EXIT_BUTTON}", str_toupper(g_Config->FetchValue("core.menu.buttons.exit.button"))); - } - - stringPage += string_format("%s", footer.c_str()); - - this->generatedPages[playerid][page - 1] = stringPage; -} - -bool CenterMenu::IsTemporary() -{ - return this->temporary; -} - -Color CenterMenu::GetColor() -{ - return Color(0,0,0); -} - -std::string CenterMenu::GenerateFooter(int page) -{ - return ""; -} - -bool CenterMenu::RenderEachTick() -{ - return true; -} - -std::string CenterMenu::GetKind() -{ - return "center"; -} \ No newline at end of file diff --git a/src/server/menus/kinds/CenterMenu.h b/src/server/menus/kinds/CenterMenu.h deleted file mode 100644 index 54097a150..000000000 --- a/src/server/menus/kinds/CenterMenu.h +++ /dev/null @@ -1,36 +0,0 @@ -#ifndef _menus_kinds_center_h -#define _menus_kinds_center_h - -#include "../Menu.h" - -class CenterMenu: public Menu -{ -private: - std::string id; - std::string title; - std::string color; - std::vector> options; - std::vector>> processedOptions; - bool temporary; - - std::map> generatedPages; -public: - CenterMenu(std::string id, std::string title, std::string color, std::vector> options, bool tmp); - ~CenterMenu(); - - std::string GetID(); - void ProcessOptions(); - std::string GeneratedItems(int playerid, int page); - std::string GenerateFooter(int page); - void RegeneratePage(int playerid, int page, int selected); - - std::string GetCommandFromOption(int page, int selected); - size_t GetItemsOnPage(int page); - bool IsTemporary(); - - Color GetColor(); - bool RenderEachTick(); - std::string GetKind(); -}; - -#endif \ No newline at end of file diff --git a/src/server/menus/kinds/ScreenMenu.cpp b/src/server/menus/kinds/ScreenMenu.cpp deleted file mode 100644 index c67990c03..000000000 --- a/src/server/menus/kinds/ScreenMenu.cpp +++ /dev/null @@ -1,196 +0,0 @@ -#include "ScreenMenu.h" - -#include "../../../utils/utils.h" -#include "../../../server/configuration/Configuration.h" - -#include - -ScreenMenu::ScreenMenu(std::string id, std::string title, std::string color, std::vector> options, bool tmp) -{ - int r=255,g=255,b=255,a=255; - try { - r = std::stoi(color.substr(0,2), nullptr, 16); - } catch(std::exception& e) {} - - try { - g = std::stoi(color.substr(2,2), nullptr, 16); - } catch(std::exception& e) {} - - try { - b = std::stoi(color.substr(4,2), nullptr, 16); - } catch(std::exception& e) {} - - if(color.length() >= 8) { - try { - a = std::stoi(color.substr(6,2), nullptr, 16); - } catch(std::exception& e) {} - } - - this->id = id; - this->color.SetColor(r,g,b,a); - this->options = options; - this->title = title; - this->temporary = tmp; - - ProcessOptions(); -} - -ScreenMenu::~ScreenMenu() -{ - this->id.clear(); - this->title.clear(); - this->options.clear(); - this->processedOptions.clear(); -} - -std::string ScreenMenu::GetID() -{ - return this->id; -} - -std::string ScreenMenu::GetCommandFromOption(int page, int selected) -{ - if (page < 1) - return ""; - - return processedOptions[page - 1][selected].second; -} - -size_t ScreenMenu::GetItemsOnPage(int page) -{ - if (page < 1) - return 0; - - return processedOptions[page - 1].size(); -} - -std::string stringWithSplit(std::string text, int maxCharsPerRow) { - std::vector result; - - auto splitted = explode(text, " "); - std::string tmp = ""; - for(std::string& str : splitted) { - if(tmp.size() + str.size() > maxCharsPerRow) { - result.push_back(tmp); - tmp = ""; - } - tmp += (str + " "); - } - if(tmp != "") result.push_back(tmp); - - return implode(result, "\n "); -} - -std::string RemoveHtmlTags(std::string input) { - std::regex pattern("<(/?)(div|font)[^>]*>"); - - return std::regex_replace(input, pattern, ""); -} - -void ScreenMenu::ProcessOptions() -{ - int pages = 0; - int processedItems = 0; - int totalProcessedItems = 0; - std::vector> tempmap; - - int reservedItems = g_Config->FetchValue("core.menu.buttons.exit.option") ? 3 : 2; - int allowedItems = g_Config->FetchValue("core.menu.kind_settings.screen.itemsPerPage") - reservedItems; - - for (const std::pair entry : this->options) - { - ++processedItems; - ++totalProcessedItems; - - tempmap.push_back({stringWithSplit(RemoveHtmlTags(entry.first), 35), entry.second}); - - if (processedItems - (pages == 0 ? 1 : 0) == allowedItems) - { - tempmap[tempmap.size()-1].first += "\n"; - if (options.size() - totalProcessedItems > 0) tempmap.push_back({stringWithSplit(RemoveHtmlTags(g_translations->FetchTranslation("core.menu.next")), 35), "menunext"}); - if (pages != 0) tempmap.push_back({stringWithSplit(RemoveHtmlTags(g_translations->FetchTranslation("core.menu.back")), 35), "menuback"}); - if (reservedItems == 3) tempmap.push_back({stringWithSplit(RemoveHtmlTags(g_translations->FetchTranslation("core.menu.exit")), 35), "menuexit"}); - - processedItems = 0; - pages++; - this->processedOptions.push_back(tempmap); - tempmap.clear(); - } - } - - if (tempmap.size() > 0) - { - std::string padding = "\n"; - for(int i = 0; i < allowedItems - tempmap.size() + 2; i++) padding += "\n"; - tempmap[tempmap.size() - 1].first += padding; - - if (this->processedOptions.size() != 0) tempmap.push_back({stringWithSplit(RemoveHtmlTags(g_translations->FetchTranslation("core.menu.back")), 35), "menuback"}); - if (reservedItems == 3) tempmap.push_back({stringWithSplit(RemoveHtmlTags(g_translations->FetchTranslation("core.menu.exit")), 35), "menuexit"}); - - processedItems = 0; - this->processedOptions.push_back(tempmap); - tempmap.clear(); - } -} - -std::string ScreenMenu::GeneratedItems(int playerid, int page) -{ - return this->generatedPages[playerid][page - 1]; -} - -void ScreenMenu::RegeneratePage(int playerid, int page, int selected) -{ - if (this->generatedPages.find(playerid) == this->generatedPages.end()) - this->generatedPages.insert({playerid, {}}); - - while (this->generatedPages[playerid].size() < page) - { - this->generatedPages[playerid].push_back(""); - } - - std::string stringPage = string_format(" %s\n", stringWithSplit(RemoveHtmlTags(this->title), 35).c_str()); - for (int i = 0; i < processedOptions[page - 1].size(); i++) { - stringPage += string_format("\n%s%d. %s", g_Config->FetchValue("core.menu.inputMode") == "chat" ? " " : (i == selected ? (g_Config->FetchValue("core.menu.navigation_prefix")).c_str() : " "), i+1, processedOptions[page - 1][i].first.c_str()); - } - - stringPage += string_format("\n\n %s", GenerateFooter(page).c_str()); - - this->generatedPages[playerid][page - 1] = stringPage; -} - -bool ScreenMenu::IsTemporary() -{ - return this->temporary; -} - -Color ScreenMenu::GetColor() -{ - return this->color; -} - -std::string ScreenMenu::GenerateFooter(int page) -{ - if(g_Config->FetchValue("core.menu.inputMode") == "chat") { - std::string footer = replace(g_translations->FetchTranslation("core.menu.input.chat"), "{PAGE}", std::to_string(page)); - footer = replace(footer, "{MAXPAGES}", std::to_string(processedOptions.size())); - footer = replace(footer, "{PREFIX}", GenerateCommandDefaultPrefix()); - return footer; - } else { - std::string footer = replace(g_translations->FetchTranslation(g_Config->FetchValue("core.menu.buttons.exit.option") ? "core.menu.screen.footer" : "core.menu.screen.footer.nooption"), "{PAGE}", std::to_string(page)); - footer = replace(footer, "{MAXPAGES}", std::to_string(processedOptions.size())); - footer = replace(footer, "{CYCLE_BUTTON}", str_toupper(g_Config->FetchValue("core.menu.buttons.scroll"))); - footer = replace(footer, "{USE_BUTTON}", str_toupper(g_Config->FetchValue("core.menu.buttons.use"))); - footer = replace(footer, "{EXIT_BUTTON}", str_toupper(g_Config->FetchValue("core.menu.buttons.exit.button"))); - return footer; - } -} - -bool ScreenMenu::RenderEachTick() -{ - return false; -} - -std::string ScreenMenu::GetKind() -{ - return "screen"; -} \ No newline at end of file diff --git a/src/server/menus/kinds/ScreenMenu.h b/src/server/menus/kinds/ScreenMenu.h deleted file mode 100644 index 4a14ecb60..000000000 --- a/src/server/menus/kinds/ScreenMenu.h +++ /dev/null @@ -1,36 +0,0 @@ -#ifndef _menus_kinds_screen_h -#define _menus_kinds_screen_h - -#include "../Menu.h" - -class ScreenMenu: public Menu -{ -private: - std::string id; - std::string title; - Color color; - std::vector> options; - std::vector>> processedOptions; - bool temporary; - - std::map> generatedPages; -public: - ScreenMenu(std::string id, std::string title, std::string color, std::vector> options, bool tmp); - ~ScreenMenu(); - - std::string GetID(); - void ProcessOptions(); - std::string GeneratedItems(int playerid, int page); - std::string GenerateFooter(int page); - void RegeneratePage(int playerid, int page, int selected); - - std::string GetCommandFromOption(int page, int selected); - size_t GetItemsOnPage(int page); - bool IsTemporary(); - - Color GetColor(); - bool RenderEachTick(); - std::string GetKind(); -}; - -#endif \ No newline at end of file diff --git a/src/server/translations/Translation.cpp b/src/server/translations/Translation.cpp deleted file mode 100644 index 989bf9d24..000000000 --- a/src/server/translations/Translation.cpp +++ /dev/null @@ -1,17 +0,0 @@ -#include "Translation.h" - -void Translation::RegisterLanguage(std::string lang, std::string value) -{ - if (m_values.find(lang) != m_values.end()) - return; - - m_values.insert({lang, value}); -} - -std::string Translation::FetchLanguage(std::string lang) -{ - if (m_values.find(lang) == m_values.end()) - return "NO_TRANSLATION"; - - return m_values[lang]; -} \ No newline at end of file diff --git a/src/server/translations/Translation.h b/src/server/translations/Translation.h deleted file mode 100644 index 03a54293b..000000000 --- a/src/server/translations/Translation.h +++ /dev/null @@ -1,17 +0,0 @@ -#ifndef _translation_h -#define _translation_h - -#include -#include - -class Translation -{ -private: - std::map m_values; - -public: - void RegisterLanguage(std::string lang, std::string value); - std::string FetchLanguage(std::string lang); -}; - -#endif \ No newline at end of file diff --git a/src/server/translations/Translations.cpp b/src/server/translations/Translations.cpp deleted file mode 100644 index 672cf2605..000000000 --- a/src/server/translations/Translations.cpp +++ /dev/null @@ -1,128 +0,0 @@ -#include "Translations.h" - -#include "../../common.h" -#include "../configuration/Configuration.h" - -#include "../../filesystem/files/Files.h" -#include "../../player/playermanager/PlayerManager.h" - -#include -#include - -#define HAS_MEMBER(DOCUMENT, MEMBER_NAME, MEMBER_PATH) \ - if (!DOCUMENT.HasMember(MEMBER_NAME)) \ - { \ - TranslationsError(string_format("The field \"%s\" doesn't exists.", MEMBER_PATH)); \ - continue; \ - } - -#define IS_STRING(DOCUMENT, MEMBER_NAME, MEMBER_PATH) \ - if (!DOCUMENT[MEMBER_NAME].IsString()) \ - { \ - TranslationsError(string_format("The field \"%s\" is not a string.", MEMBER_PATH)); \ - continue; \ - } - -#define IS_OBJECT(DOCUMENT, MEMBER_NAME, MEMBER_PATH) \ - if (!DOCUMENT[MEMBER_NAME].IsObject()) \ - { \ - TranslationsError(string_format("The field \"%s\" is not an object.", MEMBER_PATH)); \ - continue; \ - } - -void TranslationsError(std::string text) -{ - if (!g_SMAPI) - return; - - PLUGIN_PRINTF("Translations", "%s\n", text.c_str()); -} - -void Translations::LoadTranslations() -{ - for (auto it = this->m_translations.begin(); it != this->m_translations.end(); ++it) - delete it->second; - - this->m_translations.clear(); - - if (!Files::ExistsPath("addons/swiftly/translations")) - Files::CreateDirectory("addons/swiftly/translations"); - - std::vector translationFiles = Files::FetchFileNames("addons/swiftly/translations"); - - for (const std::string &translationFilePath : translationFiles) - { - if (!ends_with(translationFilePath, ".json")) - continue; - if (!starts_with(translationFilePath, string_format("addons/swiftly/translations%stranslation.", WIN_LINUX("\\", "/")))) - continue; - - std::string translationFileName = explode(translationFilePath, string_format("addons/swiftly/translations%s", WIN_LINUX("\\", "/")))[1]; - std::string mainTranslationKey = explode(explode(translationFileName, ".json")[0], "translation.")[1]; - - rapidjson::Document transFile; - transFile.Parse(Files::Read(translationFilePath).c_str()); - if (transFile.HasParseError()) - { - TranslationsError(string_format("A parsing error has been detected for translation file \"%s\".\nError (offset %u): %s\n", translationFileName.c_str(), (unsigned)transFile.GetErrorOffset(), GetParseError_En(transFile.GetParseError()))); - continue; - } - if (transFile.IsArray()) - { - TranslationsError(string_format("Translation file \"%s\" cannot be an array.", translationFileName.c_str())); - continue; - } - - for (auto it = transFile.MemberBegin(); it != transFile.MemberEnd(); ++it) - { - std::string key = it->name.GetString(); - - IS_OBJECT(transFile, key.c_str(), string_format("%s.%s", mainTranslationKey.c_str(), key.c_str()).c_str()) - HAS_MEMBER(it->value, "en", string_format("%s.%s.en", mainTranslationKey.c_str(), key.c_str()).c_str()) - - Translation *translation = new Translation(); - for (auto it2 = it->value.MemberBegin(); it2 != it->value.MemberEnd(); ++it2) - { - std::string transKey = it2->name.GetString(); - - IS_STRING(it->value, transKey.c_str(), string_format("%s.%s.%s", mainTranslationKey.c_str(), key.c_str(), transKey.c_str()).c_str()) - - std::string transVal = it2->value.GetString(); - translation->RegisterLanguage(transKey, transVal); - } - this->m_translations.insert(std::make_pair(mainTranslationKey + "." + key, translation)); - } - } -} - -std::string Translations::FetchTranslation(std::string key, int playerid) -{ - Player* player = g_playerManager->GetPlayer(playerid); - if(player && g_Config->FetchValue("core.use_player_language")) { - std::string language = player->language; - if (this->m_translations.find(key) == this->m_translations.end()) - return key + "." + language; - - std::string translation = this->m_translations[key]->FetchLanguage(language); - if (translation == "NO_TRANSLATION") { - translation = this->m_translations[key]->FetchLanguage(g_Config->FetchValue("core.language")); - if(translation == "NO_TRANSLATION") - return key + "." + language; - else - return translation; - } - else - return translation; - } else { - std::string language = g_Config->FetchValue("core.language"); - - if (this->m_translations.find(key) == this->m_translations.end()) - return key + "." + language; - - std::string translation = this->m_translations[key]->FetchLanguage(language); - if (translation == "NO_TRANSLATION") - return key + "." + language; - else - return translation; - } -} \ No newline at end of file diff --git a/src/server/translations/Translations.h b/src/server/translations/Translations.h deleted file mode 100644 index 30e8d6cc2..000000000 --- a/src/server/translations/Translations.h +++ /dev/null @@ -1,22 +0,0 @@ -#ifndef _translations_h -#define _translations_h - -#include "Translation.h" -#include -#include - -class Translations -{ -private: - std::map m_translations; - -public: - Translations() {} - - void LoadTranslations(); - std::string FetchTranslation(std::string key, int playerid = -1); -}; - -extern Translations *g_translations; - -#endif \ No newline at end of file diff --git a/src/tools/crashreporter/CallStack.cpp b/src/tools/crashreporter/CallStack.cpp deleted file mode 100644 index de5f6c68c..000000000 --- a/src/tools/crashreporter/CallStack.cpp +++ /dev/null @@ -1,37 +0,0 @@ -#include "CallStack.h" -#include "../../utils/utils.h" -#include - -uint64_t stackID = 0; - -uint64_t CallStack::RegisterPluginCallstack(std::string plugin_name, std::string stackMsg) -{ - ++stackID; - if (stackID % 2000000000 == 0) - stackID = 1; - - callStacks[plugin_name].insert_or_assign(stackID, stackMsg); - return stackID; -} - -void CallStack::UnregisterPluginCallstack(std::string plugin_name, uint64_t stackID) -{ - if (callStacks[plugin_name].find(stackID) == callStacks[plugin_name].end()) return; - - callStacks[plugin_name].erase(stackID); -} - -std::unordered_map CallStack::GetPluginCallstack(std::string plugin_name) -{ - return callStacks[plugin_name]; -} - -EXT_API uint64_t swiftly_RegisterCallstack(const char* plugin_name, const char* stackmsg) -{ - return g_callStack->RegisterPluginCallstack(plugin_name, stackmsg); -} - -EXT_API void swiftly_UnregisterCallstack(const char* plugin_name, uint64_t stid) -{ - g_callStack->UnregisterPluginCallstack(plugin_name, stid); -} \ No newline at end of file diff --git a/src/tools/crashreporter/CallStack.h b/src/tools/crashreporter/CallStack.h deleted file mode 100644 index e617b86da..000000000 --- a/src/tools/crashreporter/CallStack.h +++ /dev/null @@ -1,24 +0,0 @@ -#ifndef _callstack_h -#define _callstack_h - -#include -#include -#include -#include "RegisterCallStack.h" - -#define REGISTER_CALLSTACK(plugin_name, stack_str) RegisterCallStack OUIERGBNHI9U43HBG98734VHBW9(plugin_name, stack_str) - -class CallStack -{ -private: - std::map> callStacks; -public: - uint64_t RegisterPluginCallstack(std::string plugin_name, std::string stackMsg); - void UnregisterPluginCallstack(std::string plugin_name, uint64_t stackID); - - std::unordered_map GetPluginCallstack(std::string plugin_name); -}; - -extern CallStack* g_callStack; - -#endif \ No newline at end of file diff --git a/src/tools/crashreporter/CrashReport.cpp b/src/tools/crashreporter/CrashReport.cpp deleted file mode 100644 index 064742cce..000000000 --- a/src/tools/crashreporter/CrashReport.cpp +++ /dev/null @@ -1,226 +0,0 @@ -#include "CrashReport.h" - -#ifndef GITHUB_SHA -#define GITHUB_SHA "LOCAL" -#endif - -#ifdef _WIN32 -bool BeginCrashListener() { return true; } -void EndCrashListener() {} -#else - -#include -#include -#include - -#include -#include -#include -#include - -#include - -#include -#include - -#include - -#include "../../filesystem/files/Files.h" -#include "../../common.h" -#include "../../entrypoint.h" -#include "../../plugins/PluginManager.h" -#include "CallStack.h" - -std::string startup_cmd = "None"; - -const char* ws = " \t\n\r\f\v"; - -// trim from end of string (right) -inline std::string& rtrim(std::string& s, const char* t = ws) -{ - s.erase(s.find_last_not_of(t) + 1); - return s; -} - -// trim from beginning of string (left) -inline std::string& ltrim(std::string& s, const char* t = ws) -{ - s.erase(0, s.find_first_not_of(t)); - return s; -} - -// trim from both ends of string (right then left) -inline std::string& trim(std::string& s, const char* t = ws) -{ - return ltrim(rtrim(s, t), t); -} - -std::string BacktraceRaw(int skip = 1) -{ - void* callstack[128]; - const int nMaxFrames = sizeof(callstack) / sizeof(callstack[0]); - char buf[1024]; - int nFrames = backtrace(callstack, nMaxFrames); - char** symbols = backtrace_symbols(callstack, nFrames); - - std::ostringstream trace_buf; - for (int i = skip; i < nFrames; i++) - { - Dl_info info; - if (dladdr(callstack[i], &info) && info.dli_sname) - { - char* demangled = NULL; - int status = -1; - if (info.dli_sname[0] == '_') - demangled = abi::__cxa_demangle(info.dli_sname, NULL, 0, &status); - snprintf(buf, sizeof(buf), "%02d. %p %s + %zd\n", - i - 1, callstack[i], - status == 0 ? demangled : info.dli_sname == 0 ? symbols[i] - : info.dli_sname, - (char*)callstack[i] - (char*)info.dli_saddr); - free(demangled); - } - else - { - snprintf(buf, sizeof(buf), "%02d. %p %s\n", - i - 1, callstack[i], symbols[i]); - } - trace_buf << buf; - } - free(symbols); - if (nFrames == nMaxFrames) - trace_buf << "[truncated]\n"; - return trace_buf.str(); -} - -TextTable GetBacktrace() -{ - TextTable backtraceTable('-', '|', '+'); - - backtraceTable.add(" ID "); - backtraceTable.add(" File "); - backtraceTable.add(" Function "); - backtraceTable.add(" Offset "); - backtraceTable.add(" Address "); - backtraceTable.endOfRow(); - - void* callstack[128]; - const int nMaxFrames = sizeof(callstack) / sizeof(callstack[0]); - char buf[1024]; - int nFrames = backtrace(callstack, nMaxFrames); - char** symbols = backtrace_symbols(callstack, nFrames); - - for (int i = 2; i < nFrames; i++) - { - backtraceTable.add(string_format(" %02d. ", i - 1)); - - std::vector symbolExploded = explode(symbols[i], "/"); - backtraceTable.add(string_format(" %s ", explode(symbolExploded[symbolExploded.size() - 1], "(")[0].c_str())); - - Dl_info info; - if (dladdr(callstack[i], &info) && info.dli_sname) - { - char* demangled = NULL; - int status = -1; - if (info.dli_sname[0] == '_') - demangled = abi::__cxa_demangle(info.dli_sname, NULL, 0, &status); - - std::string funcName = (status == 0 ? demangled : info.dli_sname == 0 ? "-" - : info.dli_sname); - - backtraceTable.add(string_format(" %s ", (funcName.size() > 36 ? (funcName.substr(0, 33) + "...") : funcName).c_str())); - free(demangled); - } - else - backtraceTable.add(" - "); - - backtraceTable.add(string_format(" %s ", explode(explode(symbolExploded[symbolExploded.size() - 1], "+")[1], ")")[0].c_str())); - backtraceTable.add(string_format(" %p ", callstack[i])); - backtraceTable.endOfRow(); - } - free(symbols); - - return backtraceTable; -} - -std::string WritePluginsCallStack() -{ - std::string callstacks = ""; - for (Plugin* plugin : g_pluginManager->GetPluginsList()) { - auto callstack = g_callStack->GetPluginCallstack(plugin->GetName()); - if (callstack.size() > 0) { - callstacks += string_format("Plugin %s:\n", plugin->GetName().c_str()); - for (auto it = callstack.begin(); it != callstack.end(); ++it) - callstacks += string_format(" - %s\n", it->second.c_str()); - - callstacks += "\n"; - } - } - return callstacks; -} - -void signal_handler(int signumber) -{ - try - { - void* tracePointers[20]; - size_t count = backtrace(tracePointers, 20); - - PLUGIN_PRINTF("Crash Reporter", "A crash has occured and a dump has been created:\n"); - std::string backtraceData = BacktraceRaw(); - - TextTable traceTable = GetBacktrace(); - PrintTextTable("Crash Reporter", traceTable); - - std::string file_path = string_format("addons/swiftly/dumps/crash.%s.log", get_uuid().c_str()); - if (Files::ExistsPath(file_path)) - Files::Delete(file_path); - - Files::Append(file_path, string_format("================================\nCommand: %s\nMap: %s\nVersion: %s (%s)\n================================\n\n%s\n%s", startup_cmd.c_str(), engine->GetServerGlobals() ? engine->GetServerGlobals()->mapname.ToCStr() : "None", g_Plugin.GetVersion(), GITHUB_SHA, backtraceData.c_str(), WritePluginsCallStack().c_str()), false); - PLUGIN_PRINTF("Crash Reporter", "A dump log file has been created at: %s\n", file_path.c_str()); - } - catch (const std::runtime_error& e) - { - PLUGIN_PRINTF("Crash Reporter", "Error crash handling: %s\n", e.what()); - } - - exit(EXIT_FAILURE); -} - -bool BeginCrashListener() -{ - if (!Files::ExistsPath("addons/swiftly/dumps")) - { - if (!Files::CreateDirectory("addons/swiftly/dumps")) - { - PLUGIN_PRINTF("Crash Listener", "Couldn't create dumps folder.\n"); - return false; - } - } - - ::signal(SIGSEGV, &signal_handler); - - startup_cmd = CommandLine()->GetCmdLine(); - std::vector exp = explode(startup_cmd, " "); - std::vector exp2; - for (std::size_t i = 1; i < exp.size(); i++) - { - std::string str = trim(exp[i]); - if (str.length() == 0) - continue; - if (exp2.size() > 0) - if (ends_with(exp2[exp2.size() - 1], "sv_setsteamaccount") || ends_with(exp2[exp2.size() - 1], "authkey") || ends_with(exp2[exp2.size() - 1], "ip")) - str = "REDACTED"; - - exp2.push_back(str); - } - startup_cmd = implode(exp2, " "); - - return true; -} - -void EndCrashListener() { - ::signal(SIGSEGV, SIG_DFL); -} - -#endif \ No newline at end of file diff --git a/src/tools/crashreporter/CrashReport.h b/src/tools/crashreporter/CrashReport.h deleted file mode 100644 index 60f44a7f3..000000000 --- a/src/tools/crashreporter/CrashReport.h +++ /dev/null @@ -1,4 +0,0 @@ -#pragma once - -bool BeginCrashListener(); -void EndCrashListener(); \ No newline at end of file diff --git a/src/tools/crashreporter/RegisterCallStack.cpp b/src/tools/crashreporter/RegisterCallStack.cpp deleted file mode 100644 index 104534a9a..000000000 --- a/src/tools/crashreporter/RegisterCallStack.cpp +++ /dev/null @@ -1,13 +0,0 @@ -#include "CallStack.h" -#include "RegisterCallStack.h" - -RegisterCallStack::RegisterCallStack(std::string plugin_name, std::string stack_msg) -{ - this->plugin_name = plugin_name; - this->id = g_callStack->RegisterPluginCallstack(plugin_name, stack_msg); -} - -RegisterCallStack::~RegisterCallStack() -{ - g_callStack->UnregisterPluginCallstack(plugin_name, this->id); -} \ No newline at end of file diff --git a/src/tools/crashreporter/RegisterCallStack.h b/src/tools/crashreporter/RegisterCallStack.h deleted file mode 100644 index e647a5140..000000000 --- a/src/tools/crashreporter/RegisterCallStack.h +++ /dev/null @@ -1,17 +0,0 @@ -#ifndef _registercallstack_h -#define _registercallstack_h - -#include - -class RegisterCallStack -{ -private: - std::string plugin_name; - uint64_t id; - -public: - RegisterCallStack(std::string plugin_name, std::string stack_msg); - ~RegisterCallStack(); -}; - -#endif \ No newline at end of file diff --git a/src/tools/resourcemonitor/ResourceMonitor.cpp b/src/tools/resourcemonitor/ResourceMonitor.cpp deleted file mode 100644 index 86206b495..000000000 --- a/src/tools/resourcemonitor/ResourceMonitor.cpp +++ /dev/null @@ -1,30 +0,0 @@ -#include "ResourceMonitor.h" -#include "../../common.h" - -void ResourceMonitor::Enable() -{ - if (this->m_enabled) - return; - - this->m_enabled = true; -} - -void ResourceMonitor::Disable() -{ - if (!this->m_enabled) - return; - - this->m_enabled = false; - this->resmonTimesTable.clear(); -} - -void ResourceMonitor::RecordTime(std::string plugin_id, std::string key, float value) -{ - if (this->resmonTimesTable.find(plugin_id) == this->resmonTimesTable.end()) - this->resmonTimesTable.insert({plugin_id, {}}); - - if (this->resmonTimesTable[plugin_id].find(key) == this->resmonTimesTable[plugin_id].end()) - this->resmonTimesTable[plugin_id].insert({key, {}}); - - this->resmonTimesTable[plugin_id][key].push_back(value); -} \ No newline at end of file diff --git a/src/tools/resourcemonitor/ResourceMonitor.h b/src/tools/resourcemonitor/ResourceMonitor.h deleted file mode 100644 index 7a774a4e6..000000000 --- a/src/tools/resourcemonitor/ResourceMonitor.h +++ /dev/null @@ -1,53 +0,0 @@ -#ifndef _resourcemonitor_h -#define _resourcemonitor_h - -#include -#include -#include -#include - -#define PERF_RECORD(key, plugin_id) \ - if (g_ResourceMonitor->IsEnabled()) \ - TempResMon djhgbjswefseiughwsoeirfwoietfiwoer(key, plugin_id); - -class ResourceMonitor -{ -private: - bool m_enabled = false; - std::map>> resmonTimesTable; - -public: - ResourceMonitor() {} - - void Enable(); - void Disable(); - bool IsEnabled() { return this->m_enabled; } - void RecordTime(std::string plugin_id, std::string key, float value); - - std::map>> GetResmonTimeTables() { return this->resmonTimesTable; } -}; - -extern ResourceMonitor* g_ResourceMonitor; - -class TempResMon -{ -private: - std::string m_plugin_id; - std::string m_key; - std::chrono::time_point startTime = std::chrono::high_resolution_clock::now(); - -public: - TempResMon(std::string key, std::string plugin_id) - { - m_plugin_id = plugin_id; - m_key = key; - startTime = std::chrono::high_resolution_clock::now(); - } - - ~TempResMon() - { - g_ResourceMonitor->RecordTime(m_plugin_id, m_key, float(std::chrono::duration_cast(std::chrono::high_resolution_clock::now() - startTime).count()) / 1000.0); - } -}; - -#endif \ No newline at end of file diff --git a/src/types/EventResult.h b/src/types/EventResult.h deleted file mode 100644 index fd8999684..000000000 --- a/src/types/EventResult.h +++ /dev/null @@ -1,11 +0,0 @@ -#pragma once - -enum class EventResult -{ - // Continues to process the event until the end - Continue = 0, - // Stops processing the event and stops calling the code following by it. - Stop = 1, - // Stops processing the event but calls the code followed by it. - Handled = 2, -}; \ No newline at end of file diff --git a/src/types/GamePhase.h b/src/types/GamePhase.h deleted file mode 100644 index 11ffc15be..000000000 --- a/src/types/GamePhase.h +++ /dev/null @@ -1,15 +0,0 @@ -#ifndef _gamephase_h -#define _gamephase_h - -enum class GamePhase -{ - GAMEPHASE_WARMUP_ROUND, - GAMEPHASE_PLAYING_STANDARD, - GAMEPHASE_PLAYING_FIRST_HALF, - GAMEPHASE_PLAYING_SECOND_HALF, - GAMEPHASE_HALFTIME, - GAMEPHASE_MATCH_ENDED, - GAMEPHASE_MAX -}; - -#endif \ No newline at end of file diff --git a/src/types/LogType.h b/src/types/LogType.h deleted file mode 100644 index 93b423788..000000000 --- a/src/types/LogType.h +++ /dev/null @@ -1,9 +0,0 @@ -#pragma once - -enum class LogType_t -{ - Debug = 1, - Warning = 2, - Error = 3, - Common = 4, -}; \ No newline at end of file diff --git a/src/types/PluginKind.h b/src/types/PluginKind.h deleted file mode 100644 index 9421944ff..000000000 --- a/src/types/PluginKind.h +++ /dev/null @@ -1,11 +0,0 @@ -#ifndef _pluginkind_h -#define _pluginkind_h - -enum class PluginKind_t -{ - None = 0, - Lua = 1, - JavaScript = 2, -}; - -#endif \ No newline at end of file diff --git a/src/types/PluginState.h b/src/types/PluginState.h deleted file mode 100644 index 1467bc8c8..000000000 --- a/src/types/PluginState.h +++ /dev/null @@ -1,10 +0,0 @@ -#ifndef _pluginstate_h -#define _pluginstate_h - -enum class PluginState_t -{ - Started = 0, - Stopped = 1, -}; - -#endif \ No newline at end of file diff --git a/src/utils/memory.h b/src/utils/memory.h deleted file mode 100644 index 5c3759718..000000000 --- a/src/utils/memory.h +++ /dev/null @@ -1,8 +0,0 @@ -#ifndef _utils_memory_h -#define _utils_memory_h - -#include "../../vendor/dynlib/module.h" - -DynLibUtils::CMemory FindVirtTable(DynLibUtils::CModule *_this, const std::string_view svTableName, int32_t offset = 0, bool bDecorated = false); - -#endif \ No newline at end of file diff --git a/src/utils/memory_linux.cpp b/src/utils/memory_linux.cpp deleted file mode 100644 index 1767a2078..000000000 --- a/src/utils/memory_linux.cpp +++ /dev/null @@ -1,49 +0,0 @@ -#ifndef _WIN32 -#include "memory.h" - -using namespace DynLibUtils; - -CMemory FindVirtTable(DynLibUtils::CModule *_this, const std::string_view svTableName, int32_t offset, bool bDecorated) -{ - if (svTableName.empty()) - return CMemory(); - - CModule::ModuleSections_t readOnlyData = _this->GetSectionByName(".rodata"), readOnlyRelocations = _this->GetSectionByName(".data.rel.ro"); - if (!readOnlyData.IsSectionValid() || !readOnlyRelocations.IsSectionValid()) - return CMemory(); - - std::string sDecoratedTableName(bDecorated ? svTableName : std::to_string(svTableName.length()) + std::string(svTableName)); - std::string sMask(sDecoratedTableName.length() + 1, 'x'); - - CMemory typeInfoName = _this->FindPattern(sDecoratedTableName.data(), sMask, nullptr, &readOnlyData); - if (!typeInfoName) - return CMemory(); - - CMemory referenceTypeName = _this->FindPattern(&typeInfoName, "xxxxxxxx", nullptr, &readOnlyRelocations); // Get reference to type name. - if (!referenceTypeName) - return CMemory(); - - CMemory typeInfo = referenceTypeName.Offset(-0x8); // Offset -0x8 to typeinfo. - - for (const auto& sectionName : { std::string_view(".data.rel.ro"), std::string_view(".data.rel.ro.local") }) - { - CModule::ModuleSections_t section = _this->GetSectionByName(sectionName); - if (!section.IsSectionValid()) - continue; - - CMemory reference; - while ((reference = _this->FindPattern(&typeInfo, "xxxxxxxx", reference, §ion))) // Get reference typeinfo in vtable - { - if (reference.Offset(-0x8).GetValue() == offset) // Offset to this. - { - return reference.Offset(0x8); - } - - reference.OffsetSelf(0x8); - } - } - - return CMemory(); -} - -#endif \ No newline at end of file diff --git a/src/utils/memory_win.cpp b/src/utils/memory_win.cpp deleted file mode 100644 index 21b41bb8e..000000000 --- a/src/utils/memory_win.cpp +++ /dev/null @@ -1,43 +0,0 @@ -#ifdef _WIN32 -#include "memory.h" - -using namespace DynLibUtils; - -CMemory FindVirtTable(DynLibUtils::CModule *_this, const std::string_view svTableName, int32_t offset, bool bDecorated) -{ - if(svTableName.empty()) - return CMemory(); - - CModule::ModuleSections_t runTimeData = _this->GetSectionByName(".data"), readOnlyData = _this->GetSectionByName(".rdata"); - if(!runTimeData.IsSectionValid() || !readOnlyData.IsSectionValid()) - return CMemory(); - - std::string sDecoratedTableName(bDecorated ? svTableName : ".?AV" + std::string(svTableName) + "@@"); - std::string sMask(sDecoratedTableName.length() + 1, 'x'); - - CMemory typeDescriptorName = _this->FindPattern(sDecoratedTableName.data(), sMask, nullptr, &runTimeData); - if (!typeDescriptorName) - return CMemory(); - - CMemory rttiTypeDescriptor = typeDescriptorName.Offset(-0x10); - const uintptr_t rttiTDRva = rttiTypeDescriptor - _this->GetModuleBase(); // The RTTI gets referenced by a 4-Byte RVA address. We need to scan for that address. - - CMemory reference; - while ((reference = _this->FindPattern(&rttiTDRva, "xxxx", reference, &readOnlyData))) // Get reference typeinfo in vtable - { - // Check if we got a RTTI Object Locator for this reference by checking if -0xC is 1, which is the 'signature' field which is always 1 on x64. - // Check that offset of this vtable is 0 - if (reference.Offset(-0xC).GetValue() == 1 && reference.Offset(-0x8).GetValue() == offset) - { - CMemory referenceOffset = reference.Offset(-0xC); - CMemory rttiCompleteObjectLocator = _this->FindPattern(&referenceOffset, "xxxxxxxx", nullptr, &readOnlyData); - if (rttiCompleteObjectLocator) - return rttiCompleteObjectLocator.Offset(0x8); - } - - reference.OffsetSelf(0x4); - } - - return CMemory(); -} -#endif \ No newline at end of file diff --git a/src/utils/plat.h b/src/utils/plat.h deleted file mode 100644 index 772b6d336..000000000 --- a/src/utils/plat.h +++ /dev/null @@ -1,39 +0,0 @@ -#pragma once -#include -#include "metamod_oslink.h" - -#ifdef FASTCALL -#undef FASTCALL -#endif - -#if defined(_WIN32) -#define FASTCALL __fastcall -#define THISCALL __thiscall -#else -#define FASTCALL __attribute__((fastcall)) -#define THISCALL -#define strtok_s strtok_r -#endif - -struct Module -{ -#ifndef _WIN32 - void *pHandle; -#endif - uint8_t *pBase; - unsigned int nSize; -}; - -#ifndef _WIN32 -int GetModuleInformation(HINSTANCE module, void **base, size_t *length); -#endif - -#ifdef _WIN32 -#define MODULE_PREFIX "" -#define MODULE_EXT ".dll" -#else -#define MODULE_PREFIX "lib" -#define MODULE_EXT ".so" -#endif - -void Plat_WriteMemory(void *pPatchAddress, uint8_t *pPatch, int iPatchSize); \ No newline at end of file diff --git a/src/utils/plat_unix.cpp b/src/utils/plat_unix.cpp deleted file mode 100644 index 5b1578e3b..000000000 --- a/src/utils/plat_unix.cpp +++ /dev/null @@ -1,218 +0,0 @@ -/** - * ============================================================================= - * CS2Fixes - * Copyright (C) 2023 Source2ZE - * ============================================================================= - * - * This program is free software; you can redistribute it and/or modify it under - * the terms of the GNU General Public License, version 3.0, as published by the - * Free Software Foundation. - * - * This program is distributed in the hope that it will be useful, but WITHOUT - * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS - * FOR A PARTICULAR PURPOSE. See the GNU General Public License for more - * details. - * - * You should have received a copy of the GNU General Public License along with - * this program. If not, see . - */ - -#ifdef __linux__ -#include -#include -#include -#include -#include "sys/mman.h" -#include -#include -#include -#include "dbg.h" -#include "plat.h" - -#define PAGE_SIZE 4096 -#define PAGE_ALIGN_UP(x) ((x + PAGE_SIZE - 1) & ~(PAGE_SIZE - 1)) - -struct ModuleInfo -{ - const char *path; // in - uint8_t *base; // out - uint size; // out -}; - -// https://github.com/alliedmodders/sourcemod/blob/master/core/logic/MemoryUtils.cpp#L502-L587 -int GetModuleInformation(HINSTANCE hModule, void **base, size_t *length) -{ - struct link_map *dlmap = (struct link_map *)hModule; - Dl_info info; - Elf64_Ehdr *file; - Elf64_Phdr *phdr; - uint16_t phdrCount; - - if (!dladdr((void *)dlmap->l_addr, &info)) - { - return 1; - } - - if (!info.dli_fbase || !info.dli_fname) - { - return 2; - } - - /* This is for our insane sanity checks :o */ - uintptr_t baseAddr = reinterpret_cast(info.dli_fbase); - file = reinterpret_cast(baseAddr); - - /* Check ELF magic */ - if (memcmp(ELFMAG, file->e_ident, SELFMAG) != 0) - { - return 3; - } - - /* Check ELF version */ - if (file->e_ident[EI_VERSION] != EV_CURRENT) - { - return 4; - } - - /* Check ELF endianness */ - if (file->e_ident[EI_DATA] != ELFDATA2LSB) - { - return 5; - } - - /* Check ELF architecture */ - if (file->e_ident[EI_CLASS] != ELFCLASS64 || file->e_machine != EM_X86_64) - { - return 6; - } - - /* For our purposes, this must be a dynamic library/shared object */ - if (file->e_type != ET_DYN) - { - return 7; - } - - phdrCount = file->e_phnum; - phdr = reinterpret_cast(baseAddr + file->e_phoff); - - for (uint16_t i = 0; i < phdrCount; i++) - { - Elf64_Phdr &hdr = phdr[i]; - - /* We only really care about the segment with executable code */ - if (hdr.p_type == PT_LOAD && hdr.p_flags == (PF_X | PF_R)) - { - /* From glibc, elf/dl-load.c: - * c->mapend = ((ph->p_vaddr + ph->p_filesz + GLRO(dl_pagesize) - 1) - * & ~(GLRO(dl_pagesize) - 1)); - * - * In glibc, the segment file size is aligned up to the nearest page size and - * added to the virtual address of the segment. We just want the size here. - */ - // lib.memorySize = PAGE_ALIGN_UP(hdr.p_filesz); - *length = PAGE_ALIGN_UP(hdr.p_filesz); - *base = (void *)(baseAddr + hdr.p_paddr); - - break; - } - } - - return 0; -} - -static int parse_prot(const char *s) -{ - int prot = 0; - - for (; *s; s++) - { - switch (*s) - { - case '-': - break; - case 'r': - prot |= PROT_READ; - break; - case 'w': - prot |= PROT_WRITE; - break; - case 'x': - prot |= PROT_EXEC; - break; - case 's': - break; - case 'p': - break; - default: - break; - } - } - - return prot; -} - -static int get_prot(void *pAddr, size_t nSize) -{ - FILE *f = fopen("/proc/self/maps", "r"); - - uintptr_t nAddr = (uintptr_t)pAddr; - - char line[512]; - while (fgets(line, sizeof(line), f)) - { - char start[16]; - char end[16]; - char prot[16]; - - const char *src = line; - - char *dst = start; - while (*src != '-') - *dst++ = *src++; - *dst = 0; - - src++; // skip "-"" - - dst = end; - while (!isspace(*src)) - *dst++ = *src++; - *dst = 0; - - src++; // skip space - - dst = prot; - while (!isspace(*src)) - *dst++ = *src++; - *dst = 0; - - uintptr_t nStart = (uintptr_t)strtoul(start, nullptr, 16); - uintptr_t nEnd = (uintptr_t)strtoul(end, nullptr, 16); - - if (nStart < nAddr && nEnd > (nAddr + nSize)) - { - fclose(f); - return parse_prot(prot); - } - } - - fclose(f); - return 0; -} - -void Plat_WriteMemory(void *pPatchAddress, uint8_t *pPatch, int iPatchSize) -{ - int old_prot = get_prot(pPatchAddress, iPatchSize); - - uintptr_t page_size = sysconf(_SC_PAGESIZE); - uint8_t *align_addr = (uint8_t *)((uintptr_t)pPatchAddress & ~(page_size - 1)); - - uint8_t *end = (uint8_t *)pPatchAddress + iPatchSize; - uintptr_t align_size = end - align_addr; - - int result = mprotect(align_addr, align_size, PROT_READ | PROT_WRITE); - - memcpy(pPatchAddress, pPatch, iPatchSize); - - result = mprotect(align_addr, align_size, old_prot); -} -#endif \ No newline at end of file diff --git a/src/utils/plat_win.cpp b/src/utils/plat_win.cpp deleted file mode 100644 index ef7aa8450..000000000 --- a/src/utils/plat_win.cpp +++ /dev/null @@ -1,8 +0,0 @@ -#ifdef _WIN32 -#include "plat.h" - -void Plat_WriteMemory(void *pPatchAddress, uint8_t *pPatch, int iPatchSize) -{ - WriteProcessMemory(GetCurrentProcess(), pPatchAddress, (void *)pPatch, iPatchSize, nullptr); -} -#endif \ No newline at end of file diff --git a/src/utils/progressbar.h b/src/utils/progressbar.h deleted file mode 100644 index 4993f2d33..000000000 --- a/src/utils/progressbar.h +++ /dev/null @@ -1,31 +0,0 @@ -#ifndef _utils_progressbar_h -#define _utils_progressbar_h - -#include "utils.h" -#include -#include - -class ProgressBar -{ -private: - size_t progress; - std::string barPrefix; - -public: - ProgressBar() {} - - void SetProgress(size_t prog) { this->progress = prog; } - void SetBarPrefix(std::string prefix) { this->barPrefix = prefix; } - - std::string GetContent(std::string sufix) - { - std::string output = this->barPrefix; - output += "["; - for (size_t i = 0; i < 50; i++) - output += (i < (progress / 2) ? "■" : "-"); - output += "]"; - return string_format("%s %s", output.c_str(), sufix.c_str()); - }; -}; - -#endif \ No newline at end of file diff --git a/src/utils/utils.cpp b/src/utils/utils.cpp deleted file mode 100644 index 50f3e87eb..000000000 --- a/src/utils/utils.cpp +++ /dev/null @@ -1,291 +0,0 @@ -#include "utils.h" - -#include -#include -#include -#include -#include - -#include "../sdk/schema/schema.h" -#include "../server/configuration/Configuration.h" -#include "../filesystem/logs/Logger.h" - -const char* wws = " \t\n\r\f\v"; - -std::map terminalColors = { - {"{DEFAULT}", WIN_LINUX("\033[38;2;255;255;255m", "\e[39m")}, - {"{WHITE}", WIN_LINUX("\033[38;2;255;255;255m", "\e[39m")}, - {"{DARKRED}", WIN_LINUX("\x1B[31m", "\e[31m")}, - {"{LIGHTPURPLE}", WIN_LINUX("\x1B[95m", "\e[95m")}, - {"{GREEN}", WIN_LINUX("\x1B[32m", "\e[32m")}, - {"{OLIVE}", WIN_LINUX("\x1B[33m", "\e[33m")}, - {"{LIME}", WIN_LINUX("\x1B[92m", "\e[92m")}, - {"{RED}", WIN_LINUX("\x1B[31m", "\e[31m")}, - {"{GRAY}", WIN_LINUX("\x1B[37m", "\e[37m")}, - {"{GREY}", WIN_LINUX("\x1B[37m", "\e[37m")}, - {"{LIGHTYELLOW}", WIN_LINUX("\x1B[93m", "\e[93m")}, - {"{YELLOW}", WIN_LINUX("\x1B[93m", "\e[93m")}, - {"{SILVER}", WIN_LINUX("\x1B[37m", "\e[37m")}, - {"{BLUEGREY}", WIN_LINUX("\x1B[94m", "\e[94m")}, - {"{LIGHTBLUE}", WIN_LINUX("\x1B[94m", "\e[94m")}, - {"{BLUE}", WIN_LINUX("\x1B[34m", "\e[34m")}, - {"{DARKBLUE}", WIN_LINUX("\x1B[34m", "\e[34m")}, - {"{PURPLE}", WIN_LINUX("\x1B[35m", "\e[35m")}, - {"{MAGENTA}", WIN_LINUX("\x1B[35m", "\e[35m")}, - {"{LIGHTRED}", WIN_LINUX("\x1B[91m", "\e[91m")}, - {"{GOLD}", WIN_LINUX("\x1B[93m", "\e[93m")}, - {"{ORANGE}", WIN_LINUX("\x1B[33m", "\e[33m")}, - - {"{BGDEFAULT}", WIN_LINUX("\x1B[40m", "\e[40m")}, - {"{BGDARKRED}", WIN_LINUX("\x1B[41m", "\e[41m")}, - {"{BGLIGHTPURPLE}", WIN_LINUX("\x1B[105m", "\e[105m")}, - {"{BGGREEN}", WIN_LINUX("\x1B[42m", "\e[42m")}, - {"{BGOLIVE}", WIN_LINUX("\x1B[43m", "\e[43m")}, - {"{BGLIME}", WIN_LINUX("\x1B[102m", "\e[102m")}, - {"{BGRED}", WIN_LINUX("\x1B[41m", "\e[41m")}, - {"{BGGRAY}", WIN_LINUX("\x1B[47m", "\e[47m")}, - {"{BGGREY}", WIN_LINUX("\x1B[47m", "\e[47m")}, - {"{BGLIGHTYELLOW}", WIN_LINUX("\x1B[103m", "\e[103m")}, - {"{BGYELLOW}", WIN_LINUX("\x1B[103m", "\e[103m")}, - {"{BGSILVER}", WIN_LINUX("\x1B[47m", "\e[47m")}, - {"{BGBLUEGREY}", WIN_LINUX("\x1B[104m", "\e[104m")}, - {"{BGLIGHTBLUE}", WIN_LINUX("\x1B[104m", "\e[104m")}, - {"{BGBLUE}", WIN_LINUX("\x1B[44m", "\e[44m")}, - {"{BGDARKBLUE}", WIN_LINUX("\x1B[44m", "\e[44m")}, - {"{BGPURPLE}", WIN_LINUX("\x1B[45m", "\e[45m")}, - {"{BGMAGENTA}", WIN_LINUX("\x1B[45m", "\e[45m")}, - {"{BGLIGHTRED}", WIN_LINUX("\x1B[101m", "\e[101m")}, - {"{BGGOLD}", WIN_LINUX("\x1B[103m", "\e[103m")}, - {"{BGORANGE}", WIN_LINUX("\x1B[43m", "\e[43m")}, -}; - -std::vector terminalPrefixColors = { - "{DEFAULT}", - "{WHITE}", - "{DARKRED}", - "{LIGHTPURPLE}", - "{GREEN}", - "{OLIVE}", - "{LIME}", - "{RED}", - "{LIGHTYELLOW}", - "{YELLOW}", - "{BLUEGREY}", - "{LIGHTBLUE}", - "{BLUE}", - "{DARKBLUE}", - "{PURPLE}", - "{MAGENTA}", - "{LIGHTRED}", - "{GOLD}", - "{ORANGE}", -}; - -std::string TerminalProcessColor(std::string str) -{ - for (auto it = terminalColors.begin(); it != terminalColors.end(); ++it) - { - str = replace(str, it->first, it->second); - str = replace(str, str_tolower(it->first), it->second); - } - return str; -} - -std::string GetTerminalStringColor(std::string plugin_name) -{ - auto hash = hash_64_fnv1a_const(plugin_name.c_str()); - uint64_t steps = (hash % terminalPrefixColors.size()); - return terminalColors[terminalPrefixColors[steps]]; -} - -size_t UTIL_FormatArgs(char* buffer, size_t maxlength, const char* fmt, va_list params) -{ - size_t len = vsnprintf(buffer, maxlength, fmt, params); - - if (len >= maxlength) - { - len = maxlength - 1; - buffer[len] = '\0'; - } - - return len; -} - -std::string replace(std::string str, const std::string from, const std::string to) -{ - if (from.empty()) - return str; - size_t start_pos = 0; - while ((start_pos = str.find(from, start_pos)) != std::string::npos) - { - str.replace(start_pos, from.length(), to); - start_pos += to.length(); - } - return str; -} - -std::vector explode(std::string s, std::string delimiter) -{ - if(s.size() == 0) return {}; - size_t pos_start = 0, pos_end, delim_len = delimiter.length(); - std::string token; - std::vector res; - - while ((pos_end = s.find(delimiter, pos_start)) != std::string::npos) - { - token = s.substr(pos_start, pos_end - pos_start); - pos_start = pos_end + delim_len; - res.push_back(token); - } - - res.push_back(s.substr(pos_start)); - return res; -} - -std::set explodeToSet(std::string str, std::string delimiter) -{ - if(str.size() == 0) return {}; - size_t pos_start = 0, pos_end, delim_len = delimiter.length(); - std::string token; - std::set res; - - while ((pos_end = str.find(delimiter, pos_start)) != std::string::npos) - { - token = str.substr(pos_start, pos_end - pos_start); - pos_start = pos_end + delim_len; - res.insert(token); - } - - res.insert(str.substr(pos_start)); - return res; -} - -std::string implode(std::vector elements, std::string delimiter) -{ - std::string s; - for (std::vector::iterator ii = elements.begin(); ii != elements.end(); ++ii) - { - s += (*ii); - if (ii + 1 != elements.end()) - s += delimiter; - } - return s; -} - -bool ends_with(std::string value, std::string ending) -{ - if (value.size() < ending.size()) - return false; - return std::equal(ending.rbegin(), ending.rend(), value.rbegin()); -} - -bool starts_with(std::string value, std::string starting) -{ - if (value.size() < starting.size()) - return false; - return std::equal(starting.begin(), starting.end(), value.begin()); -} - -void PLUGIN_PRINT(std::string category, std::string str) -{ - std::string final_string = string_format("%s %s[%s]%s ", PREFIX, GetTerminalStringColor(category).c_str(), category.c_str(), terminalColors.at("{DEFAULT}").c_str()); - auto splitted = explode(str, "\n"); - for(int i = 0; i < splitted.size(); i++) { - if(splitted[i] == "" && i+1 == splitted.size()) break; - META_CONPRINTF("%s%s\n", final_string.c_str(), splitted[i].c_str()); - } - - if (g_Config && g_Config->FetchValue("core.logging.save_core_messages")) { - if (g_Logger && g_Logger->FetchLogger("core")) { - str.pop_back(); - g_Logger->FetchLogger("core")->WriteLog(LogType_t::Common, "[" + category + "] " + str); - } - } -} - -void PLUGIN_PRINTF(std::string category, std::string str, ...) -{ - va_list ap; - char buffer[16384]; - - va_start(ap, str); - UTIL_FormatArgs(buffer, sizeof(buffer), str.c_str(), ap); - va_end(ap); - - std::string fstr = buffer; - - std::string final_prefix = string_format("%s %s[%s]%s ", PREFIX, GetTerminalStringColor(category).c_str(), category.c_str(), terminalColors.at("{DEFAULT}").c_str()); - auto splitted = explode(fstr, "\n"); - for(int i = 0; i < splitted.size(); i++) { - if(splitted[i] == "" && i+1 == splitted.size()) break; - META_CONPRINTF("%s%s\n", final_prefix.c_str(), splitted[i].c_str()); - } - - if (g_Config && g_Config->FetchValue("core.logging.save_core_messages")) { - if (g_Logger && g_Logger->FetchLogger("core")) { - std::string buf = buffer; - buf.pop_back(); - g_Logger->FetchLogger("core")->WriteLog(LogType_t::Common, "[" + category + "] " + buf); - } - } -} - -void PrintTextTable(std::string category, TextTable table) -{ - std::stringstream outputTable; - outputTable << table; - std::vector rows = explode(outputTable.str(), "\n"); - for (size_t i = 0; i < rows.size() - 1; i++) - PLUGIN_PRINTF(category, "%s\n", rows[i].c_str()); -} - -uint64_t GetTime() -{ - return std::chrono::duration_cast(std::chrono::system_clock::now().time_since_epoch()).count(); -} - -std::string str_tolower(std::string s) -{ - std::transform(s.begin(), s.end(), s.begin(), [](unsigned char c) - { return std::tolower(c); }); - return s; -} - -std::string str_toupper(std::string s) -{ - std::transform(s.begin(), s.end(), s.begin(), [](unsigned char c) - { return std::toupper(c); }); - return s; -} - -int32_t genrand() -{ - static std::random_device rd; - static std::mt19937 rng(rd()); - return std::uniform_int_distribution(0, INT_MAX)(rng); -} - -std::string get_uuid() -{ - return string_format( - "%04x%04x-%04x-%04x-%04x-%04x%04x%04x", - (genrand() & 0xFFFF), (genrand() & 0xFFFF), - (genrand() & 0xFFFF), - ((genrand() & 0x0fff) | 0x4000), - (genrand() % 0x3fff + 0x8000), - (genrand() & 0xFFFF), (genrand() & 0xFFFF), (genrand() & 0xFFFF)); -} - -characterset_t cset{""}; - -std::vector TokenizeCommand(std::string cmd) -{ - CCommand tokenizedArgs; - tokenizedArgs.Tokenize(cmd.c_str(), &cset); - - std::vector cmdString; - for (int i = 0; i < tokenizedArgs.ArgC(); i++) - cmdString.push_back(tokenizedArgs[i]); - - return cmdString; -} \ No newline at end of file diff --git a/src/utils/utils.h b/src/utils/utils.h deleted file mode 100644 index ab2cec9cf..000000000 --- a/src/utils/utils.h +++ /dev/null @@ -1,65 +0,0 @@ -#ifndef _utils_utils_h -#define _utils_utils_h - -#include -#include -#include -#include -#include -#include -#include "../entrypoint.h" - -std::string replace(std::string str, const std::string from, const std::string to); -std::vector explode(std::string str, std::string delimiter); -std::set explodeToSet(std::string str, std::string delimiter); -std::string implode(std::vector elements, std::string delimiter); -std::string ProcessColor(std::string str, int team); -bool ends_with(std::string value, std::string ending); -bool starts_with(std::string value, std::string starting); -void PrintTextTable(std::string category, TextTable table); -uint64_t GetTime(); -std::string str_tolower(std::string s); -std::string str_toupper(std::string s); -std::string get_uuid(); -std::string TerminalProcessColor(std::string str); -std::string GetTerminalStringColor(std::string plugin_name); -std::vector TokenizeCommand(std::string cmd); - -template -std::string string_format(const std::string &format, Args... args) -{ - int size_s = snprintf(nullptr, 0, format.c_str(), args...) + 1; // Extra space for '\0' - if (size_s <= 0) - return ""; - - size_t size = static_cast(size_s); - char* buf = new char[size]; - snprintf(buf, size, format.c_str(), args...); - std::string out = std::string(buf, buf + size - 1); // We don't want the '\0' inside - delete buf; - return out; -} - -extern const char* wws; - -inline std::string& rrtrim(std::string& s, const char* t = wws) -{ - s.erase(s.find_last_not_of(t) + 1); - return s; -} - -inline std::string& lltrim(std::string& s, const char* t = wws) -{ - s.erase(0, s.find_first_not_of(t)); - return s; -} - -inline std::string& strim(std::string& s, const char* t = wws) -{ - return lltrim(rrtrim(s, t), t); -} - -extern std::map terminalColors; -extern std::vector terminalPrefixColors; - -#endif \ No newline at end of file diff --git a/src/utils/virtual.h b/src/utils/virtual.h deleted file mode 100644 index dbcd8ba72..000000000 --- a/src/utils/virtual.h +++ /dev/null @@ -1,9 +0,0 @@ -#pragma once - -template -constexpr T CallVFunc(int index, void *pThis, Args... args) noexcept -{ - return reinterpret_cast(reinterpret_cast(pThis)[0][index])(pThis, args...); -} - -#define CALL_VIRTUAL(retType, idx, ...) CallVFunc(idx, __VA_ARGS__) \ No newline at end of file diff --git a/vendor/asmjit b/vendor/asmjit deleted file mode 160000 index 51b10b19b..000000000 --- a/vendor/asmjit +++ /dev/null @@ -1 +0,0 @@ -Subproject commit 51b10b19b6631434d3f9ad536a6fb140944a36d2 diff --git a/vendor/bzip2/linuxsteamrt64/include/bz_version.h b/vendor/bzip2/linuxsteamrt64/include/bz_version.h deleted file mode 100644 index 4dd67658b..000000000 --- a/vendor/bzip2/linuxsteamrt64/include/bz_version.h +++ /dev/null @@ -1 +0,0 @@ -#define BZ_VERSION "1.1.0" diff --git a/vendor/bzip2/linuxsteamrt64/include/bzlib.h b/vendor/bzip2/linuxsteamrt64/include/bzlib.h deleted file mode 100644 index 7b3d2cc85..000000000 --- a/vendor/bzip2/linuxsteamrt64/include/bzlib.h +++ /dev/null @@ -1,287 +0,0 @@ - -/*-------------------------------------------------------------*/ -/*--- Public header file for the library. ---*/ -/*--- bzlib.h ---*/ -/*-------------------------------------------------------------*/ - -/* ------------------------------------------------------------------ - This file is part of bzip2/libbzip2, a program and library for - lossless, block-sorting data compression. - - bzip2/libbzip2 version 1.1.0 of 6 September 2010 - Copyright (C) 1996-2010 Julian Seward - - Please read the WARNING, DISCLAIMER and PATENTS sections in the - README file. - - This program is released under the terms of the license contained - in the file LICENSE. - ------------------------------------------------------------------ */ - - -#ifndef _BZLIB_H -#define _BZLIB_H - -#ifdef __cplusplus -extern "C" { -#endif - -#define BZ_RUN 0 -#define BZ_FLUSH 1 -#define BZ_FINISH 2 - -#define BZ_OK 0 -#define BZ_RUN_OK 1 -#define BZ_FLUSH_OK 2 -#define BZ_FINISH_OK 3 -#define BZ_STREAM_END 4 -#define BZ_SEQUENCE_ERROR (-1) -#define BZ_PARAM_ERROR (-2) -#define BZ_MEM_ERROR (-3) -#define BZ_DATA_ERROR (-4) -#define BZ_DATA_ERROR_MAGIC (-5) -#define BZ_IO_ERROR (-6) -#define BZ_UNEXPECTED_EOF (-7) -#define BZ_OUTBUFF_FULL (-8) -#define BZ_CONFIG_ERROR (-9) - -typedef - struct { - char *next_in; - unsigned int avail_in; - unsigned int total_in_lo32; - unsigned int total_in_hi32; - - char *next_out; - unsigned int avail_out; - unsigned int total_out_lo32; - unsigned int total_out_hi32; - - void *state; - - void *(*bzalloc)(void *,int,int); - void (*bzfree)(void *,void *); - void *opaque; - } - bz_stream; - - -#ifndef BZ_IMPORT -#define BZ_EXPORT -#endif - -#ifndef BZ_NO_STDIO -/* Need a definitition for FILE */ -#include -#endif - -#ifdef _WIN32 -# include -# ifdef small - /* windows.h define small to char */ -# undef small -# endif -# ifndef WINAPI -# define WINAPI -# endif -# ifdef BZ_EXPORT -# define BZ_API(func) WINAPI func -# define BZ_EXTERN extern -# else - /* import windows dll dynamically */ -# define BZ_API(func) (WINAPI * func) -# define BZ_EXTERN -# endif -#else -# define BZ_API(func) func -#endif - -#ifndef BZ_EXTERN -#define BZ_EXTERN extern -#endif - -/*-- Core (low-level) library functions --*/ - -BZ_EXTERN int BZ_API(BZ2_bzCompressInit) ( - bz_stream* strm, - int blockSize100k, - int verbosity, - int workFactor - ); - -BZ_EXTERN int BZ_API(BZ2_bzCompress) ( - bz_stream* strm, - int action - ); - -BZ_EXTERN int BZ_API(BZ2_bzCompressEnd) ( - bz_stream* strm - ); - -BZ_EXTERN int BZ_API(BZ2_bzDecompressInit) ( - bz_stream *strm, - int verbosity, - int small - ); - -BZ_EXTERN int BZ_API(BZ2_bzDecompress) ( - bz_stream* strm - ); - -BZ_EXTERN int BZ_API(BZ2_bzDecompressEnd) ( - bz_stream *strm - ); - - - -/*-- High(er) level library functions --*/ - -#ifndef BZ_NO_STDIO -#define BZ_MAX_UNUSED 5000 - -typedef void BZFILE; - -BZ_EXTERN BZFILE* BZ_API(BZ2_bzReadOpen) ( - int* bzerror, - FILE* f, - int verbosity, - int small, - void* unused, - int nUnused - ); - -BZ_EXTERN void BZ_API(BZ2_bzReadClose) ( - int* bzerror, - BZFILE* b - ); - -BZ_EXTERN void BZ_API(BZ2_bzReadGetUnused) ( - int* bzerror, - BZFILE* b, - void** unused, - int* nUnused - ); - -BZ_EXTERN int BZ_API(BZ2_bzRead) ( - int* bzerror, - BZFILE* b, - void* buf, - int len - ); - -BZ_EXTERN BZFILE* BZ_API(BZ2_bzWriteOpen) ( - int* bzerror, - FILE* f, - int blockSize100k, - int verbosity, - int workFactor - ); - -BZ_EXTERN void BZ_API(BZ2_bzWrite) ( - int* bzerror, - BZFILE* b, - void* buf, - int len - ); - -BZ_EXTERN void BZ_API(BZ2_bzWriteClose) ( - int* bzerror, - BZFILE* b, - int abandon, - unsigned int* nbytes_in, - unsigned int* nbytes_out - ); - -BZ_EXTERN void BZ_API(BZ2_bzWriteClose64) ( - int* bzerror, - BZFILE* b, - int abandon, - unsigned int* nbytes_in_lo32, - unsigned int* nbytes_in_hi32, - unsigned int* nbytes_out_lo32, - unsigned int* nbytes_out_hi32 - ); -#endif - - -/*-- Utility functions --*/ - -BZ_EXTERN int BZ_API(BZ2_bzBuffToBuffCompress) ( - char* dest, - unsigned int* destLen, - char* source, - unsigned int sourceLen, - int blockSize100k, - int verbosity, - int workFactor - ); - -BZ_EXTERN int BZ_API(BZ2_bzBuffToBuffDecompress) ( - char* dest, - unsigned int* destLen, - char* source, - unsigned int sourceLen, - int small, - int verbosity - ); - - -/*-- - Code contributed by Yoshioka Tsuneo (tsuneo@rr.iij4u.or.jp) - to support better zlib compatibility. - This code is not _officially_ part of libbzip2 (yet); - I haven't tested it, documented it, or considered the - threading-safeness of it. - If this code breaks, please contact both Yoshioka and me. ---*/ - -BZ_EXTERN const char * BZ_API(BZ2_bzlibVersion) ( - void - ); - -#ifndef BZ_NO_STDIO -BZ_EXTERN BZFILE * BZ_API(BZ2_bzopen) ( - const char *path, - const char *mode - ); - -BZ_EXTERN BZFILE * BZ_API(BZ2_bzdopen) ( - int fd, - const char *mode - ); - -BZ_EXTERN int BZ_API(BZ2_bzread) ( - BZFILE* b, - void* buf, - int len - ); - -BZ_EXTERN int BZ_API(BZ2_bzwrite) ( - BZFILE* b, - void* buf, - int len - ); - -BZ_EXTERN int BZ_API(BZ2_bzflush) ( - BZFILE* b - ); - -BZ_EXTERN void BZ_API(BZ2_bzclose) ( - BZFILE* b - ); - -BZ_EXTERN const char * BZ_API(BZ2_bzerror) ( - BZFILE *b, - int *errnum - ); -#endif - -#ifdef __cplusplus -} -#endif - -#endif - -/*-------------------------------------------------------------*/ -/*--- end bzlib.h ---*/ -/*-------------------------------------------------------------*/ diff --git a/vendor/bzip2/linuxsteamrt64/include/bzlib_private.h b/vendor/bzip2/linuxsteamrt64/include/bzlib_private.h deleted file mode 100644 index fc305e197..000000000 --- a/vendor/bzip2/linuxsteamrt64/include/bzlib_private.h +++ /dev/null @@ -1,507 +0,0 @@ - -/*-------------------------------------------------------------*/ -/*--- Private header file for the library. ---*/ -/*--- bzlib_private.h ---*/ -/*-------------------------------------------------------------*/ - -/* ------------------------------------------------------------------ - This file is part of bzip2/libbzip2, a program and library for - lossless, block-sorting data compression. - - bzip2/libbzip2 version 1.1.0 of 6 September 2010 - Copyright (C) 1996-2010 Julian Seward - - Please read the WARNING, DISCLAIMER and PATENTS sections in the - README file. - - This program is released under the terms of the license contained - in the file LICENSE. - ------------------------------------------------------------------ */ - - -#ifndef _BZLIB_PRIVATE_H -#define _BZLIB_PRIVATE_H - -#include - -#ifndef BZ_NO_STDIO -#include -#include -#include -#endif - -#include "bzlib.h" - - - -/*-- General stuff. --*/ - -typedef char Char; -typedef unsigned char Bool; -typedef unsigned char UChar; -typedef int Int32; -typedef unsigned int UInt32; -typedef short Int16; -typedef unsigned short UInt16; - -#define True ((Bool)1) -#define False ((Bool)0) - -#ifndef __GNUC__ -#define __inline__ /* */ -#endif - -#ifndef BZ_NO_STDIO - -extern void BZ2_bz__AssertH__fail ( int errcode ); -#define AssertH(cond,errcode) \ - { if (!(cond)) BZ2_bz__AssertH__fail ( errcode ); } - -#if BZ_DEBUG -#define AssertD(cond,msg) \ - { if (!(cond)) { \ - fprintf ( stderr, \ - "\n\nlibbzip2(debug build): internal error\n\t%s\n", msg );\ - exit(1); \ - }} -#else -#define AssertD(cond,msg) /* */ -#endif - -#define VPrintf0(zf) \ - fprintf(stderr,zf) -#define VPrintf1(zf,za1) \ - fprintf(stderr,zf,za1) -#define VPrintf2(zf,za1,za2) \ - fprintf(stderr,zf,za1,za2) -#define VPrintf3(zf,za1,za2,za3) \ - fprintf(stderr,zf,za1,za2,za3) -#define VPrintf4(zf,za1,za2,za3,za4) \ - fprintf(stderr,zf,za1,za2,za3,za4) -#define VPrintf5(zf,za1,za2,za3,za4,za5) \ - fprintf(stderr,zf,za1,za2,za3,za4,za5) - -#else - -extern void bz_internal_error ( int errcode ); -#define AssertH(cond,errcode) \ - { if (!(cond)) bz_internal_error ( errcode ); } -#define AssertD(cond,msg) do { } while (0) -#define VPrintf0(zf) do { } while (0) -#define VPrintf1(zf,za1) do { } while (0) -#define VPrintf2(zf,za1,za2) do { } while (0) -#define VPrintf3(zf,za1,za2,za3) do { } while (0) -#define VPrintf4(zf,za1,za2,za3,za4) do { } while (0) -#define VPrintf5(zf,za1,za2,za3,za4,za5) do { } while (0) - -#endif - - -#define BZALLOC(nnn) (strm->bzalloc)(strm->opaque,(nnn),1) -#define BZFREE(ppp) (strm->bzfree)(strm->opaque,(ppp)) - - -/*-- Header bytes. --*/ - -#define BZ_HDR_B 0x42 /* 'B' */ -#define BZ_HDR_Z 0x5a /* 'Z' */ -#define BZ_HDR_h 0x68 /* 'h' */ -#define BZ_HDR_0 0x30 /* '0' */ - -/*-- Constants for the back end. --*/ - -#define BZ_MAX_ALPHA_SIZE 258 -#define BZ_MAX_CODE_LEN 23 - -#define BZ_RUNA 0 -#define BZ_RUNB 1 - -#define BZ_N_GROUPS 6 -#define BZ_G_SIZE 50 -#define BZ_N_ITERS 4 - -#define BZ_MAX_SELECTORS (2 + (900000 / BZ_G_SIZE)) - - - -/*-- Stuff for randomising repetitive blocks. --*/ - -extern Int32 BZ2_rNums[512]; - -#define BZ_RAND_DECLS \ - Int32 rNToGo; \ - Int32 rTPos \ - -#define BZ_RAND_INIT_MASK \ - s->rNToGo = 0; \ - s->rTPos = 0 \ - -#define BZ_RAND_MASK ((s->rNToGo == 1) ? 1 : 0) - -#define BZ_RAND_UPD_MASK \ - if (s->rNToGo == 0) { \ - s->rNToGo = BZ2_rNums[s->rTPos]; \ - s->rTPos++; \ - if (s->rTPos == 512) s->rTPos = 0; \ - } \ - s->rNToGo--; - - - -/*-- Stuff for doing CRCs. --*/ - -extern UInt32 BZ2_crc32Table[256]; - -#define BZ_INITIALISE_CRC(crcVar) \ -{ \ - crcVar = 0xffffffffL; \ -} - -#define BZ_FINALISE_CRC(crcVar) \ -{ \ - crcVar = ~(crcVar); \ -} - -#define BZ_UPDATE_CRC(crcVar,cha) \ -{ \ - crcVar = (crcVar << 8) ^ \ - BZ2_crc32Table[(crcVar >> 24) ^ \ - ((UChar)cha)]; \ -} - - - -/*-- States and modes for compression. --*/ - -#define BZ_M_IDLE 1 -#define BZ_M_RUNNING 2 -#define BZ_M_FLUSHING 3 -#define BZ_M_FINISHING 4 - -#define BZ_S_OUTPUT 1 -#define BZ_S_INPUT 2 - -#define BZ_N_RADIX 2 -#define BZ_N_QSORT 12 -#define BZ_N_SHELL 18 -#define BZ_N_OVERSHOOT (BZ_N_RADIX + BZ_N_QSORT + BZ_N_SHELL + 2) - - - - -/*-- Structure holding all the compression-side stuff. --*/ - -typedef - struct { - /* pointer back to the struct bz_stream */ - bz_stream* strm; - - /* mode this stream is in, and whether inputting */ - /* or outputting data */ - Int32 mode; - Int32 state; - - /* remembers avail_in when flush/finish requested */ - UInt32 avail_in_expect; - - /* for doing the block sorting */ - UInt32* arr1; - UInt32* arr2; - UInt32* ftab; - Int32 origPtr; - - /* aliases for arr1 and arr2 */ - UInt32* ptr; - UChar* block; - UInt16* mtfv; - UChar* zbits; - - /* for deciding when to use the fallback sorting algorithm */ - Int32 workFactor; - - /* run-length-encoding of the input */ - UInt32 state_in_ch; - Int32 state_in_len; - BZ_RAND_DECLS; - - /* input and output limits and current posns */ - Int32 nblock; - Int32 nblockMAX; - Int32 numZ; - Int32 state_out_pos; - - /* map of bytes used in block */ - Int32 nInUse; - Bool inUse[256]; - UChar unseqToSeq[256]; - - /* the buffer for bit stream creation */ - UInt32 bsBuff; - Int32 bsLive; - - /* block and combined CRCs */ - UInt32 blockCRC; - UInt32 combinedCRC; - - /* misc administratium */ - Int32 verbosity; - Int32 blockNo; - Int32 blockSize100k; - - /* stuff for coding the MTF values */ - Int32 nMTF; - Int32 mtfFreq [BZ_MAX_ALPHA_SIZE]; - UChar selector [BZ_MAX_SELECTORS]; - UChar selectorMtf[BZ_MAX_SELECTORS]; - - UChar len [BZ_N_GROUPS][BZ_MAX_ALPHA_SIZE]; - Int32 code [BZ_N_GROUPS][BZ_MAX_ALPHA_SIZE]; - Int32 rfreq [BZ_N_GROUPS][BZ_MAX_ALPHA_SIZE]; - /* second dimension: only 3 needed; 4 makes index calculations faster */ - UInt32 len_pack[BZ_MAX_ALPHA_SIZE][4]; - - } - EState; - - - -/*-- externs for compression. --*/ - -extern void -BZ2_blockSort ( EState* ); - -extern void -BZ2_compressBlock ( EState*, Bool ); - -extern void -BZ2_bsInitWrite ( EState* ); - -extern void -BZ2_hbAssignCodes ( Int32*, UChar*, Int32, Int32, Int32 ); - -extern void -BZ2_hbMakeCodeLengths ( UChar*, Int32*, Int32, Int32 ); - - - -/*-- states for decompression. --*/ - -#define BZ_X_IDLE 1 -#define BZ_X_OUTPUT 2 - -#define BZ_X_MAGIC_1 10 -#define BZ_X_MAGIC_2 11 -#define BZ_X_MAGIC_3 12 -#define BZ_X_MAGIC_4 13 -#define BZ_X_BLKHDR_1 14 -#define BZ_X_BLKHDR_2 15 -#define BZ_X_BLKHDR_3 16 -#define BZ_X_BLKHDR_4 17 -#define BZ_X_BLKHDR_5 18 -#define BZ_X_BLKHDR_6 19 -#define BZ_X_BCRC_1 20 -#define BZ_X_BCRC_2 21 -#define BZ_X_BCRC_3 22 -#define BZ_X_BCRC_4 23 -#define BZ_X_RANDBIT 24 -#define BZ_X_ORIGPTR_1 25 -#define BZ_X_ORIGPTR_2 26 -#define BZ_X_ORIGPTR_3 27 -#define BZ_X_MAPPING_1 28 -#define BZ_X_MAPPING_2 29 -#define BZ_X_SELECTOR_1 30 -#define BZ_X_SELECTOR_2 31 -#define BZ_X_SELECTOR_3 32 -#define BZ_X_CODING_1 33 -#define BZ_X_CODING_2 34 -#define BZ_X_CODING_3 35 -#define BZ_X_MTF_1 36 -#define BZ_X_MTF_2 37 -#define BZ_X_MTF_3 38 -#define BZ_X_MTF_4 39 -#define BZ_X_MTF_5 40 -#define BZ_X_MTF_6 41 -#define BZ_X_ENDHDR_2 42 -#define BZ_X_ENDHDR_3 43 -#define BZ_X_ENDHDR_4 44 -#define BZ_X_ENDHDR_5 45 -#define BZ_X_ENDHDR_6 46 -#define BZ_X_CCRC_1 47 -#define BZ_X_CCRC_2 48 -#define BZ_X_CCRC_3 49 -#define BZ_X_CCRC_4 50 - - - -/*-- Constants for the fast MTF decoder. --*/ - -#define MTFA_SIZE 4096 -#define MTFL_SIZE 16 - - - -/*-- Structure holding all the decompression-side stuff. --*/ - -typedef - struct { - /* pointer back to the struct bz_stream */ - bz_stream* strm; - - /* state indicator for this stream */ - Int32 state; - - /* for doing the final run-length decoding */ - UChar state_out_ch; - Int32 state_out_len; - Bool blockRandomised; - BZ_RAND_DECLS; - - /* the buffer for bit stream reading */ - UInt32 bsBuff; - Int32 bsLive; - - /* misc administratium */ - Int32 blockSize100k; - Bool smallDecompress; - Int32 currBlockNo; - Int32 verbosity; - - /* for undoing the Burrows-Wheeler transform */ - Int32 origPtr; - UInt32 tPos; - Int32 k0; - Int32 unzftab[256]; - Int32 nblock_used; - Int32 cftab[257]; - Int32 cftabCopy[257]; - - /* for undoing the Burrows-Wheeler transform (FAST) */ - UInt32 *tt; - - /* for undoing the Burrows-Wheeler transform (SMALL) */ - UInt16 *ll16; - UChar *ll4; - - /* stored and calculated CRCs */ - UInt32 storedBlockCRC; - UInt32 storedCombinedCRC; - UInt32 calculatedBlockCRC; - UInt32 calculatedCombinedCRC; - - /* map of bytes used in block */ - Int32 nInUse; - Bool inUse[256]; - Bool inUse16[16]; - UChar seqToUnseq[256]; - - /* for decoding the MTF values */ - UChar mtfa [MTFA_SIZE]; - Int32 mtfbase[256 / MTFL_SIZE]; - UChar selector [BZ_MAX_SELECTORS]; - UChar selectorMtf[BZ_MAX_SELECTORS]; - UChar len [BZ_N_GROUPS][BZ_MAX_ALPHA_SIZE]; - - Int32 limit [BZ_N_GROUPS][BZ_MAX_ALPHA_SIZE]; - Int32 base [BZ_N_GROUPS][BZ_MAX_ALPHA_SIZE]; - Int32 perm [BZ_N_GROUPS][BZ_MAX_ALPHA_SIZE]; - Int32 minLens[BZ_N_GROUPS]; - - /* save area for scalars in the main decompress code */ - Int32 save_i; - Int32 save_j; - Int32 save_t; - Int32 save_alphaSize; - Int32 save_nGroups; - Int32 save_nSelectors; - Int32 save_EOB; - Int32 save_groupNo; - Int32 save_groupPos; - Int32 save_nextSym; - Int32 save_nblockMAX; - Int32 save_nblock; - Int32 save_es; - Int32 save_N; - Int32 save_curr; - Int32 save_zt; - Int32 save_zn; - Int32 save_zvec; - Int32 save_zj; - Int32 save_gSel; - Int32 save_gMinlen; - Int32* save_gLimit; - Int32* save_gBase; - Int32* save_gPerm; - - } - DState; - - - -/*-- Macros for decompression. --*/ - -#define BZ_GET_FAST(cccc) \ - /* c_tPos is unsigned, hence test < 0 is pointless. */ \ - if (s->tPos >= (UInt32)100000 * (UInt32)s->blockSize100k) return True; \ - s->tPos = s->tt[s->tPos]; \ - cccc = (UChar)(s->tPos & 0xff); \ - s->tPos >>= 8; - -#define BZ_GET_FAST_C(cccc) \ - /* c_tPos is unsigned, hence test < 0 is pointless. */ \ - if (c_tPos >= (UInt32)100000 * (UInt32)ro_blockSize100k) return True; \ - c_tPos = c_tt[c_tPos]; \ - cccc = (UChar)(c_tPos & 0xff); \ - c_tPos >>= 8; - -#define SET_LL4(i,n) \ - { if (((i) & 0x1) == 0) \ - s->ll4[(i) >> 1] = (s->ll4[(i) >> 1] & 0xf0) | (n); else \ - s->ll4[(i) >> 1] = (s->ll4[(i) >> 1] & 0x0f) | ((n) << 4); \ - } - -#define GET_LL4(i) \ - ((((UInt32)(s->ll4[(i) >> 1])) >> (((i) << 2) & 0x4)) & 0xF) - -#define SET_LL(i,n) \ - { s->ll16[i] = (UInt16)(n & 0x0000ffff); \ - SET_LL4(i, n >> 16); \ - } - -#define GET_LL(i) \ - (((UInt32)s->ll16[i]) | (GET_LL4(i) << 16)) - -#define BZ_GET_SMALL(cccc) \ - /* c_tPos is unsigned, hence test < 0 is pointless. */ \ - if (s->tPos >= (UInt32)100000 * (UInt32)s->blockSize100k) return True; \ - cccc = BZ2_indexIntoF ( s->tPos, s->cftab ); \ - s->tPos = GET_LL(s->tPos); - - -/*-- externs for decompression. --*/ - -extern Int32 -BZ2_indexIntoF ( Int32, Int32* ); - -extern Int32 -BZ2_decompress ( DState* ); - -extern void -BZ2_hbCreateDecodeTables ( Int32*, Int32*, Int32*, UChar*, - Int32, Int32, Int32 ); - - -#endif - - -/*-- BZ_NO_STDIO seems to make NULL disappear on some platforms. --*/ - -#ifdef BZ_NO_STDIO -#ifndef NULL -#define NULL 0 -#endif -#endif - - -/*-------------------------------------------------------------*/ -/*--- end bzlib_private.h ---*/ -/*-------------------------------------------------------------*/ diff --git a/vendor/bzip2/linuxsteamrt64/lib/libbz2.a b/vendor/bzip2/linuxsteamrt64/lib/libbz2.a deleted file mode 100644 index 81f453e9987f18f4446c0fb2a3e1a075d45a8f78..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 370978 zcmd443t&{$wKsmwoH>)pa{>u3i4q|Q5eNhj5)DdV0+SdpK%xPZ7(zl)LlTpTJVa1J ztkW<&uH37=*Bbk_Ep2VD^+BzIFVNd6VvAU9r9MHtijP)QB;RlCz1KM>X9lJB`~Ls$ zJIb83etYe;*Is+==Q%Suzo@pouJO{OiP`60fbiEEQIO&g_Y#$Zj) z`m_CS$uv!G8mZ|wo)-T+FPCZF%%}hV_&00GK4BeUDYI zqn@iVtFxh@vXwsB2};;buxqN4nwyqiS>N8#)XFB;)S%hw+ry!nnugk@W+m2Y*J*`= zMssrEtF1;_zOJFUv!hYvtfLw$y1u==wO!Lh^mHJ4^6K(h(KXK08>UU2Dtf{6$&;qb z{%~#5#**?m9$iPLke9Aqs@WW)nik5i(U}6CsSVSHYQw#~Ui#+xbyXFlT7@o@m90KqGPr3X~tn|Ho0XJrw-n0!W-HD;_G`)noyUR`OQ$_UpwC>TOK8$ z=$e_4$0K_qAH$*---w3vu05Vm-NE9-tUDslDinO= zd%Rl%B_9TJ_soiB`U9cIsnSz7hoZ%z(!WP(<57%;duAW5z=)X|RA&Yw$I(E-_NRsI zU2l&dl|7kvbiWwb-0VX`{v)vYFl>zMJ)SDcC*U`5Pvm*HG_pVP9GpVg?nJI{!mbyO zbRX#aGg>q|vcCtPh46M@>z{>+dq;Gp9~%X&fe~7FUtsfU4?Gar4@JSq`*79sFTM>k zy56yjI21li5ts=@nNraXC@S0=*g6B%$lZ%djE_8$bA+^iiQ0{&T1JC@9dtTC4VlM7 zD7zd6%>+|{e<`9KK+`Eof;m}{qvL>folFdDeFzpcLC;g?A^?8&)1Uqn{u$l35sIFG zzF@Rk z4@IudnKUn2ba!#&SmfP#ktgk_hE6@F}*Z8^?{!A zB10o-$6plry7pv89*37zJ9mBF7k&?M5ZU|U8`S29scHA3eIn0^W;q&p_QfMg9Ff*} zG!pLDvfC~=-Pfn$cM0;oup*}bJ}4+e=UAW8Q<*cq`(U7Z_?MQ@^ALgndhv#;o}F?q zK=X$3|B?R;#p|8j2RjE)`Fm;b=&AhXsqTZ}k3w~OQMt&@%`|wxRS$%^p4N+ROYs(l zbB1o*cgtseaAjcIRZt$fcO%cCzn_Mi{!u(C^TF^@_&@Vl81=B)ZE|rWDKaS-d8M@Lac^+;Fj~@g33anA2CNF*86<091Q~$#(PaEm`KRKRf9|n5IL$6!r}9tH6j1o? z#<9+_-{7)O$+8c3{^Zy;c%Q~MbQ!A9@mCdbtP;jV_8&{8P&}yzHn)m?^%Qs9W3x_C zMh*S?c4R7^QImJBzxbU0Bk;^d8 ze6zG`pSQg5bmy^PjB)2Yuwk$h*1EMvl#jdWVn0xB?`->v0|K&wU~C zbo53&nEThl=QiYr>dG;uRYH98778sIpVA|hn=2w#sHGp<4mXs;9lPN!kwNHxDpI+n zf@XEZ=+27B=AD%P_;cl`{7jO{eh5ya;Lb!Ns{Voq@@}QktMEX008LHrqnEw-HjOWd zQ}3XOxA6I!UOu+vGh{?m=to~TNt1;fE|2~Gb7{u|um>h&BC4~GJqcOoAa!g$+9uS4 zF%BIFLrN%m5s{&ug8V(QlXQRK6ex%l_`%7(zG!uyP+t%A(Zxh(9{V0>rFr*o=oAxr zC^|#x_e<^Orx23E%47eHj%klA$E2LFZ1?$R%AW%3#Hu5(r5CD>t;Po`n{(_>NNBLz zp5mz#^WX`D-UD7wfj6l$5S_0_=jwq6Qj!W%JmJK^9ed<>7M<^j&h;p~^JsLw5uIx= z`*L)?H#*nL?6cANW^}H}>~Evx8bYWw3;oe0^rR3nAOv5q&@Wv=y+X(f zA$W*|zSU2ta|2uk0r*S`bgr^(>8ynVkq8f}#0p1Z5bi`G{HYSBI1Qw{ej4f=#Ke&mOg=I#s{tUimxiZvLy0!aaC#L@5Pm3alU3C zVjuHSb$QPZa_$q%&YbPAKZGUwwZX`ioO`J$C$U?k-#WGf$} z<-fA`Z~nynp}PG@?ecEbBYTlrdDUqo2M6^*UrgfFSDg}xr(+W%S6}tHNc%F>^{$uG zNp08Xp1`&>2&dxcm8W3+7hSKP%6&1^6VACdRQF={D{Cf%dbS92OY--?6d2)MAWeiS zosA?_-3Qkq<7OdTT6d^4ifV+SQ!DcKK)%w{^80Sf)Egp2b7N+{H^PR3ogfHR9 z@>FsRl^UJn4Mn$-JH-~I%OO0=H)Etj5#OMgc#Q+FtY6@9hP0HO7Rw1&M${d?c> zC!P#Ec#`PysQ1z0o&rn{#gT$gU0)>gVIkOeMxkJI7RK&AR9H%${wm4SPRTD>vR|Rl z_a&sL1xTmxd<8s@Neh0yh@5nhFgt|7>)O4q`x6fY9y}0=rrh2$EV>B8=+!yZkpUR^ zBU5h=b-k~5|6}ccg`zui_P_xTXX7J(Pbl&dA#K(%Q0X1%OeNoH66UNs;cVSrF-Aa zF3vrOV9fE)=%b~~wtJvwUft{D{q&N2bbuqD9-bc^|D#ad(a_$vJjFfNX!9ap1S4;k zM~=>fuRDl^{VgTqygQDkH*7}*^<%-pLxC;puw9$gllkpX-Ra0_ z>??~Shl06>kga&{+sHQ$D@Wv;J)FXF2LRH5qK`-rk%3FNPDY0(d zN`q=~*XMemdm{Op7K!COR5j|*>icMU-TIuiQ0_jJClvKQL=LE+aafMOn{#eM zDP>VFb$T>PFlP<5W(6#369YicQ2no1c%*;&N~rE>T z`3h(-pVY9O8h$KQyBO}<_8a(shVz0Tg2Erd$E4z(1c--<^{0*x$NIIWL<{MEDUKwR zM~j99X?qmdR!yFRJIW(}Gj4*n-VdP%Ws|GYk8Z(Qq&)K3<~^NHl}ApZuux+tj`Gsw#`I#>N*8fX3rdNdGrP^6{#blf;p4QqmAC<=d(YHVL&Mv;46<#g#onv z-}Vlip$sU71(Elu3&Q|xc#b9u13rWSPnJhc^fSPt40w!uX&Zo{@&6uulhgf=HFsfCd^74x z+vfSyD`cO?oI*XNB=TuAI0zMIgWKxWpwZZqP9-$n@+@`8NIGmU*8!A^ zK{e1lmX^_V%{gI=2lFCtl|)Y6{K)t{P=wBV4aOzPd~JC&llFL8{y|y?$T8*qoHncr z%A#56p~%a!UOjr~mc5t*HQCF(LwauULcQRqzk3IVuyqXG@;S+Lz7VS85d>3c&z4;@ zW?@5kYjF?GS1?Qz?!Re1?Xjw{E1vqz=#_o5qA4TcgAj5)iM%lBbH24~6PJLdiwbZhoXlmW%UlDPoWD(0p0Hzo!3 zBcVGRQ0L+hRw&(lYY#_Gym)d(A2e-9dhA`)O)M!xU2=*+q^tP}!A>z0=-z;x7LWUZ zt-p5c=(dPpE{PloMqamfZmO>p=kCXX*gDJ+8!nokVC}J=U{fc?WVkRGf-|eBqX#1= z_5G34Wzq4wX{%{W-GtMl$Y(~%CbVYwBCQ1Lm{hH2o)+~6fCNnqryvE7cO(QO2ZMnJ z4g?DhbtKI!I24$D2<$;RiEV>!48Si0w!MqG1S8J}a}UrMitccnCZC}+G8RW(ERLKk z$2e6@r+87S^;SA{rvtiPaPkyytT@FR%;V*ni}(!hN;t8{k2PyFoQj7}-Jw7@ZNIU*tJyRmdSVf?~$Rs+RF8qA`Wudx#;EQ`wZjA4(!kF$3 zj1Z-Dd!rlmVnhLDAS)oD&jBv{HDD$o21ipGqj}e<-pc|g~h10pL*`ipmEfI z^S2`ujSA_xe>2U#sDBWon4UKa0U&J{pZ%DEvugue>(NY)9pex=b|r1aVMyfUu~{%H zhy!!A0}rafP6YuRPdx;^*xKhG#$*wU>0OUd;{t38-5I%m3o()BB6rD# zMculd_C$7Wk?SoP2uLJ0I)_$y*wq4)uRV4U5;#%I8G9^?j+mr*2+nMp zq?EDakiz|u_S^I%3_ER{%Xhtpm3M1%sHe4{yl3^;V9#UQv34xJ<;%br4171?dB^S* zsP4mXA?D`Kx{l~w8>?3Y=3iA^5;;068XP+^)U$eKDDnZOviUDS9oAqU2BXXScGJU! z^1v@&57iwA=^vHueee8|z%SnlVndS|isF$+#Zk`*YznH27Z-Q+c{Z*=OQ&E%l}%h= z^9Lv|)YFk2>bY@fN#tZOa;!Y^(a}k7()_-tdEe|waCjfe+)7h<{+{E5t@Apu$tpY$ z*nB%ude9#*OC68Q#vtpv&@$#P0$d28IIEeeW zIB?+~9wHx<_7vrO99XvZPmGKZi{!K0o?J?ts%Ny*tw8Jve~V%j)H_R4j|W5+p6 zTo$P!k3Y<>3M}ueyRJT*P0vl6T2^M~<>e)5oVKFAE!>zrdfJNY#@dc-jfl<`JScB% zzM+0ac1O4!IXbXrz#OZtc0BTKK|*Jp&?X+qN}VKS%dM(yY7u2-H{pSLQ*CooM}0iG z>&dR{rIXf-UNb(MKCeMRD_UFXvq!H06>eOdX%yUK?&|%^rPG-sA?7q-up*TeI8i+v>wG^oIINvO7D-Q4O`t z&C6@+uCqK>+q|+B533tj$r3~{)(5pJMgk4TAKF;_TZ@0q080QKNYS+GFVM8g4o&-V zv96s=^=ij*Q?y5J%F+IuCG%;TpHyfN?SK6m0({X9PxHJmq!2g5k5w=7dQEskGrWQ` z{9+*Bo9-tO!z0slEM18cB0`mM=dk&JB>nB-M4Nt}pH@wVl9r_i1&6)){t1v3O1)DO zW%s7B{M(p4KSM| zbA^8)v~@{lL0~zU+a$9%bu+}aOJ?biRYJW=iH z`b_>ng~;{+ltm^{I?#Fms2#{z-g`g@I$`Xvs{u(m*Fj%6Y^H^e8%C9uG82Z?fgX7H z<%B1^e=(I?5}q1JwDeKJGwHo3O8O|_S;0sjCHx`%XJnPANWy{iH;_mADB%UcNFOB} z6pVCB!iz$|q>Q$3yOwZBq)4|Uyp(S4yS(rCL~qAEK({Y^Qur#Et%JZ1y@Vv zh)B6sGJi`Tt5-OgM#;P>#F{1ZmSEZ>^R{4QZ%TMaFl%JWyMkFSnd9kyhix}!!b4iZ zd+8r#L$5Ws>t z5+EBy4%3pOj8wP_CIi-Uc3l^#2Ht9-Ht_4-Cy<;>S-;I$VH5E`3J@aTJuH@r zccXCWNA!gIfF(jeUgywFPw)bi*Z0Ki2JEie5C_9MDDgZZ`O2c0))T!c)DiePmk2${ zn?k|OmjsjJNv3#H$Vk4VWNJJxEgl%~rclS>OV%x2N*X&J*(mi5=$|#KNz(`Rht6XS zTT#J2Or9h3D$fo0TDi%? z<3II?fRsjRTGlrRN^`2px{ja${h$tn->06;{@8NDhB`6X{wF=j5fo_b*t1dspLvpL z2s3tUzghyHTN14j_`(8KXVv9v`YDg-;cTT0qc2^i!=}@oWEvj$${|9pHpF~P^l186 zhN(R3h8r~fawFAgZC0bEm-mNchI7z{Su|1xo z!D!nt>l{gATAfUtlex;tlsTChPG*vm8RcN4W54M@a{tB2e8tuf8WcE53Yxw#D zz*n(%!O$cIu7#fUjxmW+KUb-87({9|`-4&`pOvC%;|>kvROelE902+bPwF?wbEh3* zV?K5=M;*-gL^658TdFy_ku&#QN84z5CmkH`z;=FDqokLdNqNbR@}?=9 z$D!BcraKaH&vh~vI+%&m9SpLGE4RP_YFgf02Ya!S*+ylQI}&miJDCOtGqJ8^uojp*o?N=qibi9E9zfSQVsWd@J$~qJDpcMw;R`Qcd+qm}t!udhx-QqP(9yIC)Vr*E^YZ$xK^`ppb$1YL7$xT2B&HU6!@Z$=v8c^`J>RgBE57?oFX$V(l3T6mqN zKQ7&;O{Y;nAWtZyKyXhgPVNH84PqxzCwUsP1@F-cMaazcB+$mjps8<4t)|cQ3?hCC zR$6mC=Lxco$T37tLx_}ml898n_?GU|X>O3g_?AAx4#v0j5q2=XqmQtI@u)t6T6YSy z`Y}aQtG}ygwEA&L%6NTGA3=dQ4I=OBA`GWt4f(z#N+$A7%-+aBEH_& z#gcUzR$?FM$+W{#)n2OmXn$wWl731PmVZn2p_DwOX|kqYEooW!HTqDy8q4&db~S38 zV%O?Jg^gIrF4x6+cN(oK>vXZIoK^?5b$UQJu><%DU92LfbpT(X2gG0|rVIU#sHwbe z5ywa9@pt_@maLZ$sQ>X?=dxa6e~N=0ii5p$E_t0VnfGu%tcVizKPS-^)7Wv}YRSKn zB-hsWway4>`m3S=Sj!Bw$*cXAxHHf+@&v<@flprTH;B(@2GVbxI|KX5SNm-*X4E0> zUKOK>rKpZv`f9eb8kbU{{+E76N$jt2u-B5E8=wowuY6%P!=>lysa@D}U-n-}y6iE0 zjQLN8(3l@P7`aw^$${j);bcB=GG92E1hMs&CFc%sGQ*wB1x_a4$rL%6kds;HU@p7{ z3|7QV7d8pvp5_VPRLO7Q7$kR#LsrZCwu8goR9q=TAa=JSL7UL2xG|Kp&Y3iG=x~({ zH|5Tbr28N@CgeyNGsDT`JDJfAMtXOV1IfL{$*goT9S#Pop`SU-Do{3MqE&P6b0p+G z;$-$an2CRMFxEovPYw`^us0OjOnTpRq~)G)GN&BOM8CsKOK+kBbgap&l?;7-!d^2{^cy?2jFJBrWqu zx}Ol7C%vETGj6uLpFN7^C+X$$1zkdJ899o^>=JUzC_x56jh1f1d@)+gAi?k|ICHe4 z4K9#V_8eMa@RjV5lztZl>zLOZNn?&Xn7N;V(HD&IVut5y?f@`)_1yF5ws`zF+;XQm z(sO4ynDO($j9-F}kh6SMIu;OPNDW_ONHt&m3LQg+@YT=6e#Xo3j!fd~%%Wo}oKtp}=fTz_D;1+%I*x zN*;-lRZ3}wM`|3^4}+$hBui)j=I+tSdesne=LP4Y*oFE-v&^a?)ya#^tC9&FgKrqH zs<9-Bjx^PVE)+Dhj00b3oZiP43xSBT3zAX&LZ|A|45|EL1)^8DJbZ~NNAwrv z;UZO-#Ndk=syL_6rTv6t(_BWr#bZLtb;9w<((%Pk8>CsYoP}fXcdFF1ptDpA!OB6x z2u+)lr@U^3>0HsWFgMh{d^9{>iOJKbJGP{8JmE#!eh_3X?++9L>UX89DnSDhbYLaeXLjYGS_PhGWnB!g3R%Y8PF(IyFYW4HEEW{E4h$+Y$#UUm2O1{ z8jY24eGIL0kH*Y*R7tv4>CP+p2}&T-Dt8&1@*^9HHD#Gw9hri@rPK|y@?OL0eqckf z>aKCCll)YrZm^ZNhSl9`L$T^=-0E}>P2j9R$zv9y*3aF+5Ewo_#7wJ zs=b`Z{=87@IIQjT`d7$Xc222(WX^aY8sIr_{2kJdCgF&xh95o z)5u{AN&Z4-E+&i6V?#eQMj~YkbP*lh1wjk+TbUaMGKhZf`nXb3GtBF zQWtWm^pt=uXuEGIGwfih%ffi>zHezfcQ5R9yIW}Giali2Wg(O7Wg*85J6V>_9Q#>_ zGQ+-*qOvAm{~7C!YIX-lp{^}sl4B4BpNI)azqaF)c#sp%ODC4Ny=05KJ%s|A$Ysf6+MfQuWk`Zt|u+<%wHAiRiliqElE>ko&{AhxypjB4l8nvy8E?t+D1&W zdM|g!30UCMm5O;{sSmHojM_7F^61{n6g*$e4X$K{uTsf@ez~EZhd%DPSYj~AUDl=2 z-637c+$&$RM!!W&a_>Y(Ikl7-?maFwvaXyMh0Ty8-XOg383!nKOrXh9WBc3aTGZ!41CEvE}z^i4&6YD2fHj`MA+ z16473mx4Un8jb1i*8q?e@u^9e}E;HHcGF42@wV+BSBNkMZglFh&M)xwiOvxq)7`={xZ`uj##n8&Yvvz?@ z{>ds3%V%wntX7G-!!RZ*6olbwWAB}cxm(?bY8{$*OGEBfCg)^{f&Jpqy)5xVC3()7 zBw;?we6D2Ai!Ym`d9yC231fg7ee%^E(ZS?J3c_w~W1PXLk_RJt97UIKH#6+_Vxd~Q?=R4R&y>GsCU!`Lgvbmn+KhfPn$tXc&aTT4jBsnU~6`&WiWBm25Q88kuNQ>YW|^zQg0 zK1TL3O7FJN1+$stUe`YZcfVJ;$MsX^j)MMq-M05nl?K?KV(A6;yQ)ndSNCLePT4Cq zXd@Z48?JJ=YOopV-cO#vN~=|?>=I)sp41<)2b&X1nc1U2_>4(Mqn?P@s3(@jY19+( z8udg>qq?jU?%@^MP1c-Hu}P5;8)9<11y%i6k-xB@3MPMJK~*m(@~{O}F!`DVRehmI zo?GA#o?fO}b4tafisX3&Qmz__u;n?$o*EXhQ#rWKc;bgxQHAgx37wWnUh<)99bUo= zw=dRzv860=+sFJ0)mgq}b(%^hf3F~vvS;ZnIBTWrKhz!TXC{BGAR#BE+@IGeRh?ET z6-+ux*=d#HP`NWEc+`_Ml);vA_x5O$t;OlDR74ZT-sVaW#zpYBPMEt>6Xvdpb3C#w zD92k_bYUsWBpZcY8xJ%QtCuZilFf9if!RtxZX*G?Z3HBXwm)^tG5wrt3rH%i*q#`7 z$BOA%>~X23+}$RKiX+xShifZ9cdH1{U1I^d>nuR4L`B4J7=9@mr$|iN4YMG&VHU(T z%r$O9q04P%oI@%=XErg8m+p<{rF*TBm!kr8zjvv-cmc-o(!DXQiRatS{k|c1W#{>L zK1NrCx@T%T4q#^GW!nyIWYUTBEKYq?Nnv5dlIVYDe^MWnMJ;Kp8NYf0aX*XS%m0}$g^JqaunY9Bx3kNwO?Ha4%RZMa4@vB@nU0fY-JX6 zWq1z2P#s&D#j>LIr)uSYrZSG!<{H3pO#Z~G%u*(~Ee-8Py_XrgWtPTP#u^hkt(LLY zVs;3}j0gQkO}mnk;=bNuSyZv>UJkA1Pn;!ZV$n zy1(xnQoxb=uuB2+zx_G|uPcH7R(Gt*V%=2nr0U^+vU++2lh-QGjlns_S}kiWt$TKQ zvjl@dka>{u!Ch~&%COaPc@>j)S7s)iblMT#o%wa%hYhjp~`P!(a(J1i{=nPls+tYq?6mdzNQnBj`x_?t?@ z4m`Ft5btk2#t*!&LKlw+Q&h9~5L5_^UUv&J&RthmwlMDQzl_UL?9XI$U$KysCvm!N zttxqHep0Pf>GXzaUQc*mN3Huu8`!armN@> zATv{K@Whfb#jxkGNN3UxDOl-tlF-P51RpTOIV2FnxN0y>b2}jZa)Fmvy!4AN#Y-&q zN_;7|d*Vy6zxc)G_)>1i#Ft`E8N+4h#Fw(eN>XBm_-Fit`Qa@51gW#|6Qs_ISK^@DrrY!cUNL`^j>VNH~jlI*@uceuC6l_z6;H;U`G3pSa7#@e`!Z!cUMo z3qL{1?I+#qO%T7E;!Y4e58iwq8h6=#yZ3fKOYnX886+1%*vmpZ5oDcNxZ-v%OYt0W zCg~-&dm+tI5312SSwoSSZABu3zl}+(y4}klPdAB_6B?1k&|jVTkR3*rn;!d8?8X_n$9 zJnu~Q9)>XfXSoro=O@#t?CoBujKLyn^bm>M`$e%3=Hx4^(L;y{{fu#wn-~|6g;|b( zf6gng&JhfPlv_dmX$C&V#Q7qVywZ(-q8U#eE90E;r%qn_@X=d*ssEvV^r*AYA7^nw z?l=qkaZYg-`XLq1e!B!doWu)7OtRDPj*`0sK=IVM&BeOjK6_>F3NT*oc*dONp=msI zag4E#I332so>4lr@%hBf>VTboD}yd*whH0r-ZK{wmAd_<94TS)y`L8ojfcjXY9Ts5vhoJRpZ%I!u|P<+K`X1YFo)9t4x!J4_Gzf+y+MwZtd=LcM*ceiNHx! zRDvoB2QhjtGpQEXsrRNUhVM9ZV)7D8j$WSl%FErl(83MP4T=W8b15^ktVXI}lABb> zG4q5i$0WN-$gzL8IRzMFsqR%LYJ5n8&KE0$o@xmWv5w%DFzLw4B;Rqg6r&CRmpaf= zR>9=C7PP>fQ`f$y68S(;*A}{kG%uej@~L;6D$&rxk0(wlogTb(!n9W%RRLS?E&zGO z`7ob0@^ghaQyZoRPW@16JP&82B8G87hxhyGjhTD#D&*wR0vy@Pa(`Fy*j=++i zs~jWa=b)D@Wf{oht`m6ixab+BgRO>tnPkIe#aBOh^w}M(;>b0&lEMFdopBs7C%#s4 z#M#>#$5|9S>?l58Mz3a)9d_17&9RN~wrU1$(l}wxQOJkH7pe6xmJdu8D`+U*ty`ns zMX}?J+JPlXl;k;Ql7tsnrp#Js$7+?XrPoYj>%<|Jsq$Z_?qd99hE2!oTY4`uY~`hK zt;2rpD-Xc4gaFyZdblS4d-^;v9+?@(KGEyW(!zKv1-xmf{KQB9IJ;$%9ds5?0b<)@ zy3)(-87Ial(;w9vNc_$nig&*o6z4Qq7WazE+o$g6Buvh;-qQ=~y|D@_-1btR(==9i zTq&gUd#3s2LDa*okHp*x@mNBcz^25Rs`NNQF|$&vW{FHt33vp}p8 z^zDk@`^5{{4F4ovvZt5fU$~O@Q*KW$!_TT@GKA^36^6)R@?8ZPTD#uM%m)gj?~qQ; z!MmwqyPU0h2fno`u4H-z8)hFs!MzM#@a72(g$GkUP&TtDnSfl=@ZI z&AhCD*VP?!Hxcv@27&3aDx@HMM-EBGy%aq9UyR4{q91ubN<(}F6P{GA0Y zq#qxqYmimN3MPXVw2-HxeD(AZG4bE{Au+l>Pi!FFr zY{AQ73yxVm+XcfUu~xW34ODB@9j8LCisqK5J@jn3Ejg=OrT$voafHgG?XoJie6}^5 zRWW&`1ugoaBJZ;yCZDpPDkh(`phdCut8zP5brw}O`NJ6`a~8Eck{G9!3%Hh#s)~zu zR+)L;^2P!t#jgaDZ|QAWX4pmI-BxzeOjR)<$!_AikYuLLa=`-jo$Zwcsp@TvI(5e& z73-*&O&|vXJM1hRnB;&>#forp&U#uyuff{?_e$~=bx#!wBrBQWcdX=oxw+bxswQ?R zXBYh3irxw)pNOAhgo=QPRwOTE@=*m%p=JJlj89qObI0$AWC$nJ4%B|5^huTZ9ZPQo zlOHK4SvZCUJA^`Pv&5O>G4+eS)2K9rE#*~A{#rr9ajuJZc-!R-cC|ZRcV*+)5_DfK ze~9V?fS4SvAlqK_N_Rjc_6vVur|RZB&3&MF+FLOFv4!RLikSgwO*@pBbaee!t*$Ts zP@m|guQoEn0f26Lz#0#DHU;=r>^Ppx0kN0txvX0L`8-X#)f)7wH>i4dsXH>d4Fu#i zK?yrx9-{2wXj1P4H4Nq3!x58Q1uRIJ;OIo-_n$;i`O!B&e3*;)v zzi%dXuuO6-S=3z-T|2CbW*^5nQNZu6tLdFrxN)Cn$3|70vk5YQTkb1HMo0JKR*c{M zxPrV}i!T*h?X$E4bFmdtXC4M1bryESnb+kc<@N`*m+nFVxl1_XCNx&vvRHM?V%5cL zErr*liPmiTs)~dU?KL2iCF(E>KWntUmzgpfys7s}#kAYUUQF(_**^Ry*b{YORq z%_+wW2a+h+U01R3a@Q8%`k12+F?-?Io$plt1XbQp+Y}~8Sj_A-;u$`;c1c#@6-?SzFJY^{WlJ$>TeBqA znkBK;@G}d`9y+b0i!HH>t>R+sGOT5zVNFR@v1P;@A)o}Ye&*ds(O0guICZ{~%EHf9 zZP2pB#)OxP^dbvwR7Uo))IueF-d9QE4FHzAO37!(lNXQdh5oO6k71P3F*oD zVjAWo-b^`mQVgL!4iudH#vbM{rIM>x9?#6lqgjtb2}5U6jh`oraoYUTU4GUS|G7{m8D5UW*x( z5VKkkbBf1t3B9r2sEqXnUN~Ye@ZHcHAUgnHJa2^Kc_SRp8{v4~2;1JMwJIJ?=w*f- zfYRf8qcWa1PjPr(*X0Q-DihgSj&$)#^9Um0;Uw5&p|4=57sy1yT zv){KYt6=h{4oMWsEQc=Yz)kd9EAv7oAMc-;*=KD@CST|;$?VIvB$G$_OEP=ZmSpmS z{*ugoYD+SCy1yi|KGpoFB$KHMQfHViou&{ETRIqJ`~!N|(w`N}ou zYW`kkrrKa)FEev(FsYXr?y<<8Y<1t;lq8B_^5=GDy_cDTHt6YP=2IIqdYKujS_{Q^ zdzrb&2F+e(7TTb%mzho*Oz36C4u;s55Ii0^$KWKR-xb%FRk6P8jOWYFc)skkeaUkH zCWd5dVqgbidS#N`C#ElE*nI%w`LZ*fFFWJ;vNN79F@3Qw+bv&W`eMfRWz5!x-y-8N zy<6qSR)NVamdds@z0BAuD>(YUZD*x^(*OE~ikpZMqT%Dl_``uSBZhQ(&Fu{Tc%;cv z%GH>}EdE-HxG;J#Ij+AXv(s%!CNJ$T$!wV|$>f6mlFYJ4Q94(?r@th#+Z0SMD_H|2 zgZK5%!|eTb9`$$2Ft{@Kr~Y}Eec8_AvC3ia^Zt35J#FVPtUL@3cQhuZMrKDS81?a5 zc^IU>E<~4VD`t!AJf@Y0!K(gwm|bk=@mYBobOu`dwZa*Kih^y8sx>!40%A2EKUp)9 zf$u1RRD2s>7A=w)=7zBHG4QyZPc@s!$1pdBm5+gU?0l-}L_UVOL9BcXq$n4`PSt!O zAH&=zRz3!D?R=^UMLvePVXS-%%(3&SW)%4t=Ekw|F;HjcQ%x!IG0dZll~2Zy{V7i5 z4D73jyw|mMRAR zVyj}3n;)v;MFsa^OBDki zIc}gTUO4eUV5wr@8e0{U97<62)e)wG!Hz9SjmJ$ynb!XS7XNt`xBOlytQ}PML+bul zb?1j(C)DE=`kQKWx!?TcXH)zPho56eY5S8O)9@P{?l)O%NlD$S%6mZF_o(|*>h6~3 zhX!n)`!v^m%<9fxtBw!&oh3eZ;^PFjJnyf5t#&57id&+(0q-t&XmGDW-1_*h7wl3$ zl>U(VY7PHXk6Zo<^&MRP!s<-*o$3ARK1}_Fa)G+D9{xQ9_wQM`_4Dt1x%J=kHTwCt zx%g*+&bB=F_u;ud{LN>#ef%|6{sBGrPXoH;`Kzk@^O^iLRsLN>xBPSJyIlv>{gAr5 zfAfTY-ol-KzxsX^|G5YLLe=4O+>(-~zrST@nPM^dMOrFmd7A&};etMK`MRdI$=bxu zj`oSoP0J^)tgD;2reIplw5b!Cn_4>8Ojy~{IWd3I#HN>x{qk8eXxYz9FxX1|A^}62nDDxV^J3Tr;P%yaWJV z+P10X>rerJ$Sla3w)UnQYQyysg1)9!km%w?%R8Hz!xNfXE*0)EbuCd1OmNd-T{pcM z;xcugu@0QiNbwIOCaiBa6O5GYX0GP(8uys#bn|&~Gfc0bbn|?1FEjHMFYqGCmYG=s z-6Zotu@aiFSmpCf&XB5ox{|GS$x@CoGu^ku9OfHldX2Sjnh8S7GxV8(zqm;j>1HC` zt5sUB1xwjZGg*lV@jO-5oVaCOc&%sDK=Zs#kt3{ZE;G*~zRVmZ;Qg+ga8lBCk+Ml; z_>(kch5$Rwp>+3O?9S$^Fw?$8{$AT)CS;mPs7MARb>Dp=JN}ZqIoLn)O(a}mrU@p) zOf3aF!yF8DxUa|@i+hr<6E4!t%sg|1Z?2i4n+ZO>tjJ8CY9@Ap{;iob$V`F2fXmI4 zOGNf`FaXm1W#+k?P^1S9F57UEIawH;CyhlB0|XCYx+6o9@B1)=a{FE~&-3XGl%KP0 zGN%Y}l&`A_tNsX_|%!0DPd1&4zHk6sZs5#i!qr;Pe9c=s#bgJ)i z(`Vej0YNl`Vl^`}!&m0puA4)FWSYZ_C-L)+NyZ}^QTI%EG|jxkw-e+pCN1C1WhNE@`Zdv`?=#hY~nH15E>yGswxi%?UI7VRO{o zFsa%c1wDZxkg@^Ne77nw=xI{qE|h)JhK)51%%q}aNJFY`B3zJZjw&?MXZTj?@OdT* zEA?$MC!iTJsFLX!zOb1`p7t3xqsvYbq>L92WpMJleT&UZD9#9P5^hn9Bv=_4&sFrI!CCoDAP~!T68NY|_136@~h!q6Uk5 zndIR~!Cr1sKzK;KxId#TlEZ^%u6Yi@^F$x@Aet$RJSq{vavjE{-|i}7S6sE}>pXF} zIS6HCume6aM~Px>M+_3Y@}yrF*MQm@UvAi)QB>s1Gshr*u5M1iEgzmvH5y?%;)g?m zga`Ta%xQzU6A$wlsrxw`eUJM5Kiy@f8|V77bze1_YNeSKHq$SGE=Ti1yuKPS{&R#d zVmwp$+3RbhJDM}#D>H{62RO3MFB^E^5_7;MW~LYtGR$EVIf(I8pZ|Pwrf+~bWQKXE z?<(M;^$O5JVNj$p)y%xY%=RrZhfp)4M4yqkU5pW#(1E7i4H$*cAQ4z%rd?tVC+=}?xMSWZ{}^XB#THglLmst=8$qTZJap>wYb7eoO21)EEDcU z=wgtVWTswhCKdTE*FO@j%kWkE%EBNAsV1G^GtMR3f4*`1CKzvgrlE!EePy~s9K%gD z<}BkB#-()MRX+bn^L)foCQW9Sqxy2{L=_NyIugc<`DVaJZ;%9W3a9I+psm4qz+?r`5BK#;S2O5j~AE8~1O#erFsa=fO)xO=;;i76W zQDKgMU8}}|fQ*o{y51q##e@m#%B1K7%DuK4!w`by*Bkx&F+_=W{fL$d|E*zEq;-Tj z3gd4kL2GsMyxC?NDvkPiGmsq?dlAb?$d*Y#fyo2F47AArGhs%VInZZ}twzM?rf%%f zC=QKpZ$!ACN&YL9{ohFR`HU;!Sz{b}-2c$%9bc96YZBq~%XN$)7iFXMi$r(!`Ysi- zo!3`R(SJUCJ0MSvBpIUPC14UiNAw{%aC?u&{_Wr*m`rEIvb!9(W z|GyH&{D|?kNccDbz9uIQ!*oka8jLC~{!+1qKn64h4R*P)M3Kh}swqGu!~BN_<4Yx?N+JIT#e>(0$$vZWQVNTp6}bf`437{yRY z7=n{-WF+n$pMRw_4W|(>!xYovr9@vQlZ%jq;vNMmy$wP=?RI zT3l}Ibg>#URuU}R$Uscf3XMW1N8CelrEf(Pfn`{y(Xv8n@r)dFHrqUG@@QA#U1Iv$ zX<9(2f&(IJjnxS4C&?*dvD+Y*otO{_wS$iKc$Uy*Vk?MMrSPYyC`-a9xJ#wreSYlG zGcaM(deV>GyXgmPyZHItiO%cc!9GtSu3P0iThKy&$@-f0G&bAqXSMbD1^OWsqmJu)2|Ey<9>xHdz6(3sF>v|dQgcj~Iru7J?NniHC)ERc z{=vSC30)mvzJUeHdpDt{8;N>GCbstUzb9v)zZzx(&NL?&`^4`4VY$1Xj!`lb%YRyJ z%bmSBf&BIf6#bb_2!tZqxzZ?tI)u%De^j^ub25z8eQ)}Ai8}b_lgyH>lg2})9Bb6X zB3k44-=gCZ8i~Xfht5r~%}TE}Q?3NknSoU*yiS|`rBq)t{ZcdYVsIF*a6aIBO{5Qf z#yqFm9Egf9Ekv#x#YQU0x3XI){<&D3L2pV3$v+oL(WbO_`>xbl{(n~M?eVn!_{_E@ zUv8#ib6E%LCT5b+aG7rWm!bRfKKh9EAl>W3YJ6_+?}C)E6D>ks!|v!Z3KVLs^L)lF zo;T6R$W4p=3>>xKshG7>U>~P7{f;aSYUx#zuHZt`4Y$ zjIhthMJu7$1m9+|kq!&!3^EU1pd-eWa2V=Kn|s8MIBvx4;-AXZl5dhYCZuUvobRBX zbh2vkWyEZvk81j$&i0NdZ2|^8Y@e?LFatv(b-0!0NT?ZKU2TpQDpF-kDJQFu&9?w) z`YzD`#@#Y7jL$Gwh*L@o6i7z=(C2oau|@aeEE&3A!qVISteMbm>PyUoyS8ug8NC>) zM)?Mryl#&&4DzytQ0O=Y#%Y+ZI0t3#%y>4(n-E48F_hV5geqLV{~&OV%+!! z%tVrP@)#N-j6gnQ9I)*22peKW3VV(^1|G zF}Kie4+pb28N?*yCNj-);L2o#12%c+#BkNUW)i0E0a0@rCJtmF0m7qZ(!9JpbHH44 zGW>B_8PX9ra&ta*JI?d+%&~b8z=49ePeZ=TD4;Um^krP-3;Qk)UxLAO0@;B>ocbN% z4pff$O@hX;pYkJ3rPbzGW6kbEYHeaXi-%*hD!E(qbL=&5-$=bqH)=eiWy)@11x5pg zUL;s*ySJc=8Ve?+Z#aaR_eUFaI5@%BwDE2{DS)n<4eV=Z2Rpz_@ejr})pt3qb7*R| zh)!{$569}hJLNJb$4J2>ztqeyu7@v-z%EIp7^|pX8kuF7;xo|+a|%gn?Db}r(TRsL zcpPHD+lcf8td8i3NrG>QINS&E12Pi}4>_}c*Yx_Y#)=8c!cy3R^LsK$F3hkU#u^5d zw9lQ1A+0!oflvz6&}ktpC~}aGj=M6dv&*QJFqhr!!x}8X=NUOfNT>Q9F>|nUA5D@t z+Vb@Z(d;nZUeWcAFdo^}w04GT+FJ4T9KkiU)HK((5L0(uP^;-^#8blMoef$|=@m8f z)UYP3gf1ro zh{uU2xpP_-9kn+|L#j$!!uivLb#>5GcSBgKo!r^B0#4G_iN~$Ytt~6F#YaD* zJL;S3>%y(=^TG|<^3D}2>%*ljO<`@;lF2p8*VWV%cXZUZheI_r4Yf_pTFd;_aIm$d zUR&N6u3fIJ3OC%Ku>$Eu*w@)sv%D7e*0#6j)5m13rnRA=qdu%HU%semUA@+T2d*tB z&T6!}MtG|U^=s8?Z$LTJtlH{^+B#$rCTaC`&9xmJ1ytgk_WJ9!4(LH^*0r{+EkQF- z1Gm@Lu8;*^e`Rg6)==Bryd2gnScD*$qLF{l;N%-^Rc%v?f|oa~6!np*cwXJ1EI>2W zuW5s4sEO;ZuWVgJrH0#AX?2aY?OMqq3OF<_>FaC>HNnD~@TxXpiEMG(sJ3vsCZC^A zbUwUpZe0|Xv5M@gTidUjg9^8{i%LO#J3(1RZxs?E2800oEAmkU z2_LRnRli~i6s}s{gdm;0aJJS`Dq@Mfv#4oRTXQ|RNJLs|M^kvMwyJ&=wU+d`9o5v6 z+UHlc&gE8WYC%x9)vmZmgB#~t9v9kbZa{!Eql2oJr|vhuRdqk=wW9wCcTh~^PnvX{ z)-p>(RYzk}16~hkZEspx0ne>n+m=rs2qSJ~>Uq?N4(ml<7rn5hbJY?}xQe_aN}!5& zwxBm5O*DM{3emqX4rnbxVqS5z)?QhGk)&!iwXg7e(~9~Ubf8*$&}eQ&3{lB*!&OqX zY(S`9z77G`TIcBI%8fOvEj^7*XmK$TNdxcK-D2{7HFJ@+M_ZSQYMUsh_d3zNNmssSa#ydtKuUysyi?hcr3d6{SmCAz?ri|+#0E0(f{~u*Ot;`d_zdn(ouK1zDIYv z9MnhE*;!77=ZduIrnGD4rd7{MtMGgyZjoilo(*vmiq-3jqCEEp74OwP>~rJ98|ur_ z?lgm58;Wxo^!8Ak%b-_;;#`KNzTxdiO9hQZi-quS;L&?ng!7laL>mGdsqlMLB}Kad z8;5^7|AGbR0{r94aNvy5-Eh5($!UhB-V$U$-3=|iXALdIB`H}$OFILu-Xe6R8XEr^ zV*dm~Q*ZV4hhabWGCN_CAWdzG4GHQZg>&EIGvMpafNwtoe#aSb`o3noa(@JT zAR;kc{mo6$-+}deInP>S(EP=drkJ(~5NoZx^4XI$eB{%|B>I>_AJgdLBKnw0AJgfh zK&zQse#NZf@|r8=%vn@YSyNd&tGuL!7c24Ct7?7E3r;n230Z4;A+ys|*QB1Fjen>5 z{`nV$lRflqEtk8BDv8Uj=Qf4A_1vLw(nDi9 z>-mX8kF(udNeGu)|BVWF>))bqcRTKM=*fXTF87`@==qgH4|QFZfA|b~3e`aBwr8fo z$sQtE&r*d`y`1%3?~p&&A%BZQ-f928IdEtD?oznhp359@=#;S)mD0%gsHbzLA-|Z_`k)(%p5|rn_NzZA@h^t86 zEd7s>V{w(qn}y%1_ysQfJSAW4!ueOkYFzjyO1{B`KdkDt%7uSN;b9jZPVL+ z{O>N@qw4EX_Hz8JQE~wnK3(}C%Y~OK`CJ$7Q+7^s;s2ue*)E*zsBq!;D*e~E@XwU} z-*Dm2D}J>L$J;aF+U&yl7wvbr@Khy#w+ru8_2NH3z2|FCNJr(F0h#UFIx z&8lAfEBCDbCrZzIF8SM4xu3c4CS|8jwLj~*RpA*fyj$_vE<8{9ALR^nn8PG7X5 zYnBVYL-9>6e6X@R?829+`u?j6FOllCpStjwO8!9?ev_*2lP}5T??&tBI@gJ-9%5uqfD*xoV@V}|@X1nlBim!0tJic7x!pEs{zv054SN5-V;ZG>} z%`TjGv^!il|HLH!r4Fv|LM8Vzm;CQleIIh+A;mxC!iOpTpbJ;crM>3Drz^j`=fdAp z89sC2JT4?CyV(Aq8h-}4a9%fza^Yi?UjA8B)-z7obD2wifx_px@Lwo=sSAHf;Y}|5 zPpV$4UHCs#J9fM9h{A7o;UR_d5A3u3(^Q;1=92$U#Xsl5KT`JGr2NNvHYh#(8;p!s zD*SmRPi8pxL5E#>_=h5oIOItM@4I#Ng;CN^F`I&abm0-DxEPn5rVV!C|E?0wap5}^ z&Oi3Y_H%z6=aPR%$@5ROak+0Oe5ym9*0($k%yi&nKc1V4E9k;UD7@5xlOFD0RSul= zgq8ea7v7@qWe%M5ydz4re-VuB=kcM%Ay4{$r}T6Q7=BtKBKdzTAOQTS~R zob>F&Ke~20aME+PlE2f1->LBLIB-!fWzR2Mc%{O3J8;s^^XQ{4yie)>gA2b__0tzz z_#(0t;V-IT=IM#yW1g8e&c!TQ5SxR(({A^r*`3f^t=NnJ^XjEUUcE# zS9g*UtKr`4fpn+tzj;WxYR|Ha;$Ku1+%f57i`XX%8c!y<-F8VH*#CV-d# zVj4QofdFA&L^-xF9%+sPO%6 z)xF&>)j^|~|HnDs`QGW*Rrgo7?!C3XdR6be^6+Fpk%9lh{Ob+;FU-Hez;9;!P6tl; zAouzIF!27|uAepVw;A7S;IWK<<-jT5rjQaGhYeizHUF;zC)RVhKHF3vIHX+OXE}JN zuoC_n;|&dbX#>rdY~YtM-rRwc2%Gz*HjGO@GlQ2Zx;XeL>uD{Ij=m0@(woam68#N4 zhw)JczMAoI27WE$7dvp$TgH0lJ8;tbJ@a2_;9oI*oq><%2`c$&3k8#$k&Lfre#r;< z;KE%FIb@IAum014lblCb&Z7o?ALCCMcsHJpD>LvmjPEh<7Z`upz;`pg-@w0P{A~mO zmhq1bJel_lmyg6yFr}*zRrS_2=`O7q`r;Mt7dW#G$NYyQ6)_!W%rH1Nk#H2(_*ejDSj8~Dd< zHUFCizJu|D2L5$>&HsskzsdO5j7vWwA6k)hA}UAK-}3dv!`D?QU%aWMj@kx(@@$Qt zVc^4=zp;T2VZ4=r|BLaq2L2Dm&oS`&owVL=240u(-Ugn}c&35RW<1-#%NZYR;7>C? z+Q4nzO>n${|IGY(20n!OFE#LijL&r7&T=Vm;MC7-Wd5rRd==v>418l3op09~_zjHT zXy7^LX#RBu-k@Yg?2%Ly5H665O~IMov$-!I%}$iI-sMcWPh3eM-Z z4E$lnzjWYq3!SUYv6_0dhsu%k%DhU71FsLfA={Jcz)55V+uz;5&t*Krfs>pqluhedcs<5T95~5o%I*C&2TpR*ng31$@4@)pjEkM}A+^U1{O4L^jb(jc;EVY_=$L_T z;q=y_!p1@JsXi>nNr%sYlj-xhzGWEr2F8ataGv^6a;7+NlJhk4&v)RYmxpOqh;gci zlyAK_-~MLcGJo}mfy;cry01^!#)Ns^>C1ZOFdj<;8L$1Fz^z#=M@9Ln(M*C8{bEmj0~dQ* z7`WIo-N0{Rd*(1M{gT#(jRy_>?HsVyfm6SCIrncj8~BBc-|oPvh^DaKdmK2)>5!on zJYe9B8UKd^Cpk;G{XXu%NzUiY|FnU>$@q2$PI4sQUUuLlXH!r7;n-*38yMg3z)8;M ziW}=T4xHq8dg*{q4cubflp_AmVy6^@hc4cZ;UTD z@QeIfevyHXVtl=UKh5|C1Amh7I~}+xFI&sM-+@!Pe8v0^8TdiQWxi9|_3PX&o-+8a z?yKdO8TdlRcQ|me=NqgsO@bjfo;VvF`NIjg> zPr+84flp=JYv5ln-oU`$XFS<~JN347;FPWz0j*c&eZ`(JjCV2khh}O1t_FS{{=AUNZrHs!p@X-S`|9k`Q z&G=#izh;o;UvA)Y7!Miv4>_8@#K1pc{1yYBIz;o|Zs6k>zuUlnV*EY>|D17oE?3HZ z-%u@I#>Ik{GybYW4%Mr8pXBdl`TZR@$xj@n0|pv+4C5mV z{3gc782Am0PcrZ(!?pZN47?%ZvkZI&<5w7X9^(rfxHDbL95|(GC-WB?_`evx!N9kU z&~~md@V_#Cn}M$%srm0T@Kuc8Yv5;%()@on@J5XPn{g>ed2Z$vgMS6{zh>Z9GyaZ& z4#{bK>*cpEQCRxXm`afu_rt2DbHsg&QIF+Nk_t(~e zQ#meR{<95yHsjq4yyZBp_dEkXlkrRgA3R?32Mj!$@xhEsde_8j{wW53Df3S=@H-io z_d!I?CLY%n8S?8B1CEaje1}KlKRR#{(M`ivVq@(Q`JXX=3kOd8y!>T#b>MW#m**q~ zIB+&m3BJ&Q6MsKmkIy&oJjPc#aK6=4a_(T9>PdZ^vMzkTfp1sbm}fF@xsNC_aG3{q z$-reE;DCY4{r)EgF8BL~4P5T`e=%^m-=Ek-8!YLP`~AxdT<-VfJsshf``HqMU+~gX z;PO6>$dUVKnWqt4?xXjgLe8fKE^@vzaFLVPv~qgI&c+7b$F2F=8n~2iR|A*w%{TBh zROxW6WL)aGy!X1v!B73hf$@sn`kR4oXZ&FU|Lj7||A>L_WxU+LKboNVcNqBljDKk0 zP3Q$o9G@C^GUMME_*BM^7`UHte5Ftwk`JiS_ZVMp@V~=&$iTbiY564v9>ci2*Cz6d zr)qwA4pHz~jNfg@nSQC}zt6yXGyYEpPW|(fTz?)t1^$$QU(FYdG6R1^tF?9+_{A*$ z#Z%y~8~BCXpS)?{8+blVt~HboyfmsbQ<>61>RigF|5~$t6ZbI>@jCfe8MyR64;i>T z=Sf?k&>?ctk1w!TUDU@zx=fir-|8}N4iUtj z)&*}nJIQn*;Zod7rcNoi6rU!UHU|=vfAW+m^QJBkioP=9;vzwwAWxJnd5Xk?mr?l;3n- zZxBX@$-AHmjQHNVfd273`V8&LzZw5p1eh4{UipBIk*b~WzsY+ILaIvtwtAXV;#2ym zzcbT+GcZ#oAnQKXzs9JTChz^Hh=1P0B*n7ieQHfb>$)2ORoVXq+b`ur_R|ulY5x{r zWRs*5UUhuDN4tZJjzR1f_gS!26~D_~9bfLBG!?O5;_v485-#p!jxV&h5>M#&;33Rx zKhrt>awCGIU*aEtr>gw3_(pLOGgAK1(t*U6e6311MfqYM{p0y$E`PeMZ-LW{p8(9L zB0wx_;eV84QTaFzBRT3F^{V1eV*5XLMuy*vKOLV}nl*WLm%J`>&hg<$r9VEjU;p>$ z-d&+-=l1BHu6&acmu2Pj#~#LE4Yt)MNPMMtC#dKPIirzm1~!NBc+l zM~)g1yymM_$mL*Yaf&aPcRZ)$hLlMt9gyuqIVqi1o?P0(+rlcYeQoH4@{c?#_xQbm zz5dY1Yhr?hWp*&*SivX76H?j-O9Cmm!B8M2HCPg}jXcRE{Z0l;o+_FSVPJI;mR{1& zhLc$mXnK+q5*F~b2v}BeAf^2-h#*UM6)6kYI~QHR34GyVWtn&N^~m-ds7uW$z9c0* zSn`l!43=z6A+BI(W=fJ@y#*Z%O-S*0TVz^+(DnhLn8NPtaW~OA4waI~!;0b@I%-do) z$;~S6l;SV^!p_OdPZ=42;UoPj&U(bj&fD<>9P4o^=HiXYwnI%}67nguH{hTN>;#VNn!z+zamm@N9q_O7P4v9j}aMO)OE@;BO^eW$W#-ygFF>FZlu zv_;j$Z~GSC@DTa>h8}u|iaOxkx)=T}Ymgxl)Alp-*JE8 zcH5t@J%|!X3WOToPae;%nERv3e?6D~31s+hlz&d%1Xcbyp||??TCehQF_nL?aEF~; z_*IO*u)+>4UZ1Oqa%E%G+G`f41l-8LrHRkJhFP{RARiStkm3sz=cKe(1)TOnpm=0T zC#u$-XQ{+hd1U9s6sNtmvTWfrUGBlWq9RHxQna${s_&?LU-PdDcusnAehe0t+y0C_ zOJ2+@`XT?aU~zs*Fj%ra@PT2 zQHZaUpna#69eSACOU2p9AF2Py$%-bwo;;~ct=J#-O+ey;*E~->$AuU9C-^V&PxN2> z+_W{>q2s~OkD>h;FD&a3C>duD&fA@~N6F7xS+=zC8t>MI@fk-7;{Bo8D_}PDA=w$_ z1z!~IwCz2CjQ0!nKR0b!7tua#jek^j=%^C<3UyY2&~wEzQ`%=`>|PcOgvzr+Z)BCs zu+vWF!ocX5}+?GIZuzW&!h5KmmK?rVLl7&8PBzDab3%y(8g0S6R7$}TE zZ+N8Oo9vQ)G1(=9CTM$#bAPdupfV`a=y1 zDVYdf@|iB4=Qg7@;D^Jbt{$jMl@Ix<1)(kvDl0CMF|qU^LRXBUTpo2FERL-%t1g!g zv(=czr9bWAVoFO!Cqqtmh{DD@pd>!-Jq~WiKwH8*hhC zsk8sy{%_!vLt_tCfjv|O_Hg^VBqCfL_aE&@vm7dA_CFP7>$hd?&6PM3=FYY3eaC-Z(8TQ7Zs3h9H4K1V7dt1xsblmQ9iq>)O zsD$aXZB&>&Het49-&Hvo%EY_sIOR~%?yB!Z*yszwM$0!d?2Ri?#)vMrBOP=mU$C(rM8$3`ohSjAQt46lr-c|w&@ z_aTzk9_3D?>t7PtPnlD%Gdym5DvtnS(SS>>pQw1QbnLWS&u&w{>;|qgAL|S0=;0g~?l%&;Ti9up1v673m`tn|_`(J-U+qd5gw?5Kk2;f7*A1<( zkv4j6&wKp}d=));ZC`{Z*>-jV3a{7F%5HEDdfWP4tP2|VZallL2v=EyH@%T#biB!~ zZH*GIbmO+gs{)!+{w1coQ*B!##T$uvp>S7rCGOi{t;59IfTu`pYl3)1T#R+p9#&de zl29V?m9WI&;vEo{I8wY$iNk+Kq8MgdW5s(kEOCT*of5}ZDN!txRJp9RmiWI93mh#8 z5?5W_ahvvUPMFx>vQkUMeq7gvo}h>$x%7Zg{a){zSl zX~TQ5{gS_AocPCZSiF^w@*Cc)bS?w(P+x64ZnDT~*1cKRHm&VaL9b#iXQ-=G(CaFP zrc+#3>Aj5pgI(JiA>Qp_Xqb3+GUT?duuETIq9V+fE8efed~@xpN)|aK1tH%xp!A3R z5s6X`ala#x%fUpED?e{6t6@^Qof2xit1~__DBk@;kyPz`C_yX@`X0HwP0DP5KFliMgJ<^ z6%5s~uCThMthHJt&TZICKHJqkTuh_Hn;tGEC=((l3_@AhKK3XDs1JP52E0uP zsv#%CY}$j)Z&|6tP6(%T;j&U8#xaPVU%Yu?XuNnOUn*sieBJ?3#Y;C{bhxdBcBv4Z zIOD-5-UQA!@WB)&Bs0M$S=cw6g=57V$t^_H+8qB%|IKVgAq%#xi6T%60+5;gfE~j}$P|ZxEy{w8qYsx$$uOk(r7lx>ieFZ`Y%5p1{A?$(8ZG__ zRu!oWX;F2-wuXs5DQQQcPh=a=`Aa&*by;bp_j6Xh5zf-#;yu8Sx(a>7#JB8HT=DpTV==M;EaZtWJda=@UEwM`T)f!#OC74{gz$vXk-QrEg- z@%osdZRT06(%NDWWo8N06fM#DPsulvjLef1mxWWDYs#zYqNFlYYJ|9?SX6u-mNzn5 zUextbC012O>4@5eE8tl1b`3+r#G4+5a>YA53=OMB#n7W8QCdYqxF#%ad^N-&(cGw{ zw|j!)Q_UCu%VC+r#rvNylq+8O+$pkOYPNJLB+Oa1LGeoGU(1>oxmcQ#tLQc(c`Oog*jUOI@m~~9 zz;N+S4MVx&y*msIm%Nn=%J1cIwDPWD<-@~bhly8=Kpu;?G{Pm`h&{Q{_EeF_sw~A4 zX@<6SvGk5oWdWJ;0GUJ`AwuFuOd~5@}0=xRvK7#G+u$?NlyrbQRABt@ehn;QJhIs?Wx?0tbO>!q6!S;FX z%RN5qOW2@cT%%ZTf5a(N``*T5%hY;^8z1)%+BBFp22XVLXcXHB8-)&95$BCNqf2Z< zFZRkSY|wy`fo+IA%VQG{U>U<5*MXOZz?ZNlmiAdqz<#IXKo2>PUPq(JiiARj&tW>9ToPaP zU))`uH3=_iA%}j;NgzcUQzCe?sbm(SH z>C#B(s;RTpZmtQ~by8_rt4S($ML$XZw5P28t19`(*x2swg^2M!_^PM{KxvzB%H9}N zxXP12J5|OEu+# zX>)JdjJ6xOEA(EF(AEIEN+x0-*H+jzvH|UKJ5KF@+B)t$uGa(OCaEnS8(>@0u~0|p zb;qrxf9!gxh}g^g8hcNa9{1W#}5!HF$H&!ARa7yHh3jrBZ;)L>6rDik!+hH%j) zsCwFQ17q7O7j1)S$`;zTTx~`l*GuU}Ht7xEsr;}x=6U2GM-A_d{|_+_;E=17l+rV*k(iU0~x)Y~xYW#uTqqU9{sLLDfyP)1_!darhKjY44)xQwC4Id}=>10KPPT`g~(!K)qclZNWKr@;rLXx2i4oh9LTUYj$wzWNem4 zTZ2~Gkx#3^=AYQzloVknK(%cjEs~RE*5sLUr%zV9dGh{$k&9-w+G(?rxX8|xmEh^5 zyy~5sX3m&}T}bt2jFom6jEGXU&}NNlTfzUE{SU+YNIG{k#F8&^9lJu#$w9{b+3f=x z^2o&8J1_`b9;;QefodPUfwW&=)%)m`b#V8LscP#${SL`=*3*w&dI(`L`?G1#2l*wg zL3NXFaQo}}u8qO|gN3o~?si?DU-lqm?y4OUar*Y!Q)}o^hMjuPJ9;8A`uN}Nd6yI| z9LTBnyrZXPD<8D_PJ64#Av3})0aPWO9)GL~9}Jx2$Rxg$KixwSF6(`&4ghlud#mnb zs@{LC>gF5We`utN-fbBV)ah2P9!}XyN*=hNcR|DtZ}`0s!YQwEIIAcw9fI%BB%TD- zhu|_d!>!P>#WPjTc(Wsk^N#dIG7f0yYj1OF@AnPcGH86RQb*-Xpgw&<1i zJlWuvy>cX6_#a}vIR<}U)+@^v!e7CBiwyoTOkZczsZQ#QujFckVGoa_(XLazjoEH_AB% zUYqeH20oDc5t;rJy#dD88vL6Wm$eq*zlHHT9Q>3&w{t#7JEmYVMf%sr4gRgn|GWdI z^fuy(yW7C)GcNO)WDn_;dUC+v&t?914P0geKXl;Edg9#MitM?bC&c{s7)qFK%~1LthE78v+sZKfrA;E{aJ0u^$bgP&yF$M)Q5 z;CC|quz@$@Z{a>-;Efo6%z=~Mxk{^Lz2Lw}uY9BU6$78ja^5rWuNeQ(zz;J1oq;dl zfsS)8HPS2Js+Cn&$)8PZXI<_urCeTTIdXjvd=KL-4gOrdrD$W|0mjcY@V6PyFz`1R zzrcZ0e(q&EWzRFQr!(J#jCSx-dRsFt4`~ViUm17q)kgdq8K28?sQOWpm9?V#9rCGu z%DC#GQ{db^sp}MX@rV_cld+*@yA!#_xd`WS4nJeEIf`gqyr+2&gLk*4a8nko!+cKh=9P{e6L%GAZWQ z)If2ZVFVhal?xsdqj)aX`(LBLOx{VSi2q|Vk`n#Suo?eC@KlxlAZ09$RP9)le(JZ( z^v?li%A_dmn$thx8-WI?#w8|3@y47*|CV)wQIAaCCE%&b{)KG6v;I<+n)a^-MlvOx z@T%kE6z%Rb6bdQsZD6Y^{sV1wd>Qv@Dw0Xg~`0a0NY>gh)Z5Ge%`!1e0gN%RC&4j_uj4Uc3ux=ss6jwo4GF_{h9QK z|0IEuV4FeTH>bFy`O%1X!_iD>gDX(xi@&$!F5>={5stK(8Fh3+;sCB7jD1h z*3kvUqlfSA(fG1u9S_XDx6U1T^^(S4+Ay>ERd-+X?vkq)mCk*6+Qj^WTU&1!^WaAt zSC{-{ZN{2OH}@`US6uwwXEzT2`JNS@es;;VV=wIZ%(wl&e4@vs2Ohg-$@E8yI-m1! zx72SQ__EQ%f4ivG%uQ=%b$z4V+@pI>jNbfS_Mj`?%4ynT*Uxc3KG({(<&~SyFLn}o%b&J>dLv-b}ySXAhq$JnDhTJ zdPl~CaVy$2Yuc~%j`Q&e6<_(;uim-3{=(%$8~x?p+D#ih`ErW}hpxB(_QRmqC3`)d z7hc{|JO0627jE7linSXmwLzGH#(2cu2ZXV;E6^DGH=~^&qKa)&8V&3V*2c&2>jFdf>J|=JY%7oYry8*^9nh|9SH* z2Xn20PeN^bRP^cf|P_IdT%{U={6 zyms4vy5DitzOSF|`R@2lKOgw!VC@;>etmh?@^@BGI&bIDOS<0Txq4;so~08WzJC6p z&4aEST_ucUdj6N6J=OGqL$%_jf4lX`c5mAE ze)jr-<@dZl=gv#szU<}J&%d|#qq3ME{_^sphbHY=TGHp~J!?)rp0xF;E%!aRWbCk2|hd@?+`!7jC(!MgM|Znl$RV>fu^PZ^-Yw`I_fa zuUL88n(Hs>QZi`Vj}LlAW^Ub+oAuf1AxC~5Isk06=JNNuj*9zZ6EV4JR z^;Oe%y~FNZciv}D4)1oso%Q;xTE4eu$=+L2dcHi`_wk`KI*c3AXFQ&z*7t?Tm z5$}Arjb2fMuI|==2KrSw7hO$gz@o2Wa*Y7sIQ;Ot)u+Qx`N&ZfPZ>q}ch&V*UiYlD zj7m!@;O^E{tru6ZnmbA_$wov}iq6Zc4t?R^JX&5=f8mADN{g{oEG#=0N+WB=|2M0% z)_{KfdivUr$e%iS*6@+OwA3!$x}bsox!SCnR#{t~mN|SDICcguB(9ZiE(}JG^oxh<2-5`=s_<&p9#^ zlO2`BsC7zM9E+x5gZK%O{(*2BH$6ij4jKc|A-Jq{IoIrnf0g12Z)>Rdoo&s>;Ued3 zrn?w8PnlTqR)X*^W4_)7Ka*BJ1E0zCKm)&->0t(bKht9kd<)a^T&vh4Ye~}#ezD_n z0~fomGjO^`remXaR7WCZL6DRY>2=PH{MH;r^r!89dwRn09XjJnb=CeX9b5nB9m)r4 z+mc?9lqnv=RTnh}))Icg%<+1r@JRb$+9x=>bW1_?H7dRlPokOn(-2@{#GA?S?~#b? zn!KHW6Kf`ii!+uR(PoZ7Q<=mkZAnS*DAGd{j)d5QC8_xJ8~yPwx1-KUP~-|KFYivz64RF>#_-OG`2dvQ`3 z(3q7X4BJ6qi zXW{IFGaF&6;nLpQwAOn!&Mi0_;iR?MJj8hoJU7CBKX?wprFt_P_&)e)9q9qk^x!+a zl#z#%*6Ju;8r+F+{|WbJ@X|9CAK|q*f%(P;amishk(rj&lPY< zej(f$aQ}|;V)#8c|Az24;nG?(ts6c7_a6wq4t`1(UC$`J^+D4sMf9*fy_EVB@TWn$ z;V%K!67I7&Z-xIdoNps+9^CKY(rYP~;JgNBOJMIJ?q6|sgP-2u8w}jW`7L-`fc^`@ zCV+kh{xjgd2YL;{R^X&O84HZQg0>X&Nciu9`yhB?;J*@nS{MBk?v3D~_B{n*9e~{p zcM9m+;lBrA_rp&wPmm5;Bl{TPREF;WdjkG=xRei#asC4*={*SiKfnWUU5G>Jr7=+f zu(mjRfNqcT6=2(N{uBPDIF}=A8BTgeU_H(sAZq~dD{;OEe?RbE2AAx834VH(VFpgR zE26we#YyX9n-JC)ep+iC3V#Z)NpNpNJX)`P2=onb?}bb2X7shLJ~$`iq`JEaVROM> z5B`<#Q(bS3b0WfvfnS7^@+c2(ci=bRoD9AgxVHnN&j$uTQ`$)XJop#jq?bQv9lQy` zkHe+BPYe6;Sm1oR!?p=S#I4!RTk=fWKVd<^{mgu5K)ahz07;}G@|&ISnk z9PTp2qk2O8li)6eI}Z3$IH!T8Hc$2~2L2&js(Vl4r22O!PD=Z=IJd%2&#fFpybd@& z2Yo+qT2tJNlj_k|z`6sYa;KMBX#IaHXljp?uCd^01OK}?KStO|&^N;E0(uDi)JCX% zTm$+^oEzZ(58M#kD-cGyUIgC~xSxQ21pX}esjk+B|1S6s1D}SI`WND*euL`b5u9xi zehlu{z}Mj{#d$r>e*$|7C%tZY7u+>Cr{Meu=PHC#9BOA&_o&QXgX;&L3I7b7R8~KL zUJCp^_>V&8Hqca_bAW9J-5dVpIH}(xJJW$ty(PWR;k*_8J&03|vpK?_1AQjkE(oLb zUy|DaVboXA^J(-h*B*+8b0cu-i$=qp2$#xhCQjPZa3-)T;l2Ty`l&+rX}+JHg{1m3 znQ*w@0{;$fPn>T;_5!%nHaFqC0X)<`sehw3PHz(*B-wD^2Tk$Qa8mtq5f1+rxaT8$ zIIuBrAIJGOU_XGq0^!uwsQrHfjQZtXIH^Bw1lI@r4!G1-uZI6k;Jx9`1#e@}=fdrX zb0C*3bZxk?I2Qq!RfAxh~sMBQ^V)x(k4LD8SVup1O5D{s)s?7|Z?-CcFB=Ah$&~q<>_x%Q3*S zD3>EsRrHj9cs_~<$6Qt=JQAf6942ZwmqpVZ^M(}6ns5Ez%wLL{3XhT3y%`ye`w`+!l?+=%6M^hwy7kj~Si#Kn@UB_~$cDV-`9D zr|T*mW3>~;k1%b{Z3&;GTjbD~gbupbrbBSKw_K&+Fn$x$cd|?MTFQbTDI=1Dt}Sx> z#@-G8|J+t2n=-}gtc<{Xg0tHWF0n+eMLHnUh{x=zdlx^sX*j9u%tPYeYXq3Qoe)mf z=S+i7o`3nXb6c_p*9=3hsXrItCPq<)Qsc(qQ~!}alXnn;s{*n3zGyf==X5A%Wsoa^INrdAt^;17zRs1CGkbiG(3wyE5 zoi}y<{OUf(k)F|wALOY1+}2*Y3F0GDxtX}$B;yEgp_{{#+2`NeV;(VZ_VXEI7+#cNE_ihcu(x=qd$5Jx0(qGSiK5OM3@5)1n12`w8 zUSQRPlzLg|FL;Yc8GYox-n2DjOjhVcaCic%k`Y?)bxwz}KuNBRfWWGpl%(K>oV*vv zjA;Wx4Ts=^)iAEGXeA|DS+(*qd}5qb6&--8VBQgbiT`AFN%sYZ+R(SG)k`DzthQ@f zAT;De;Yzw0wDEcTrELqpaD|TVJ63YFeZO7sW>#7mbM*(8k`AtAZwK>E7H)S9F6q8> znm<&xZ()(jZaZ`{-RRK_Q25w>ym$2@P+dGAUw=D1r+5H;;y-k_{EKA&su&LfG;g5zIud}~F8|DvRT4ZF z8jv4SQUW0*nuIMYdz?DM(B9D7fso=4bl6k=Wzy>hy<1;PI2^i8Ydr?7gGlSpeEFt% zu=q;o-2<(wV(KcTq^%@q7ppjdlK#g+L-X+wd6pXywd{GV^D&AL=urOpM+tkqTi?_S zg(skj=3JDj07}Bp!^sLO@|VnIMIj|HEN0mbrH0jex4zTiJJJ-f!@GI|=^2A0DLq4x zp4U`*>LERx|ERAzL0KjKW1%rsC+IoWq_UM#^l`$03$>!>B)<^fQ*k2-ocDHs-JXi0 z5gHlhsTim}s=pj&Stv2jq5C4=s1NQ^`AR{MnTh@=F20T?C5vxekN+R{`S+Fi({_h+P)G$89=Dgq?;4O#3JRa387td+V?PK8 zhCWc8PB3r8%wTA5&^^Le_#}z3gP{?*-lE>%p=~#QL{DD)B$a9LI;u5=CsC4jVM?R8 zUw*K7P;PJos`09ZHb~7-{HWB=k31zykA?c>hg8In5`yTjx9I zYc^F=`u~=EEeG`<@~?Er*LqKc<@-s#Vn!7?h$>P@_J?+=6nurjze>RfO2IeDnX9_H zC<%`ePoTI^((swbU$RgsQ6Z5;=xVra9Fzn?ik(ss+MaMkrvv*yAfr}`nyNC&k&r;i zfJjPM9!cQZzO8LIEmRL9nMH-s?YDGPw=hOjE)32rRT%GJF0puoF6?kiLRKmBsUfL+ zrJ@)??MN4?&TPbAwo8@v6O>Up_fYdXd{_J^)nC&!c=HjSmBqRQwV#U z#zkF@6ng))1y=uI_y*J?zp4>_#vHJ_wO{j-|RoelZHtDA^j6Ix%xT{!Q%PqBE6R{ zm(}kAx%ZeJNd$F)xL&TK#SE^++f#A1R!#7BN)NRK(kB<^a1#u-1vEk37F52NO)#7m zx?HM?TikCZy7(KLqv=(6am|YA=Z~HD8~Lb|&^Y9G`gyutI7L5CJ5{M(xF+Q^uW~t6 z?&teg(xCczb*cKJ{d^Xb{6;_jMUUzwZ9ksy zXZ+Xiy?J}#2^-FHWY+_@Vb97q<}KL-Pat$6n70r2G#y?EmMrdSAF8XznYi2pGv3T^ zSiEK3CTR7C_6F=%{GsnM4lnyS0HWmqf5vWa>Gqa;i^>WX^3@^>mrw7Fx5CIm7-$Ev z8I&ij43~ptO%8Qea?!qauAqwu_6wrDf1b~8ma%(rtUse{$tU43FNYO;61-++iia*4 z*k`I!R)<$$e$j)790={JI0K{5KChO7ciRJ1lK|5ci(^gp64-0(oBvt%?BJr1uf|=i-3@1Q_l~b}Mg%%~L>`H3? zo1mcmgDOT`MU#RhTSo3z*xn$<$jix#7<8+F4d|X*g9t&pj4rs?7i-JFVNz&!4&RaoLrF-X76=MIZI53S81g)sR3msKZ=CkGl$QYHz>ei` zaho1Td6|w;^g$Q0;C_IGpTz`AvRr`2QgiZ^T$L6m8P>Je;uO!~1nep|l1kcBxHu)r z<1O@Jawvc;@y5b%@5;v&g}I5WmG9&?@b8SXinl147~-tF>l`#AGJNHAn0N{u>#)1< zSekd`)gXd--vzvnEiQ0*9~)T^1MejT)?nN(h4yBnw6e=TjzI;9$+kZzE=t~p!U~pu z6w}vT)Rg>#Lmy|Cf1;V}x3lecB_L3I`%?%nzNrlVS?*FI{O(&dwJ}AL>r;qU8si3s zJ|}g9L%%>oFOm&uS?(%WJ=JGTtUhb)>a*6ZK5J6-S?gDywPE#H8&#h*x%#Y4s?XZ2 z`mASFpVe1=)>hSLO{qR>+v>BnuRiP9)o1Ngebz43XHBh=)$i6VRhpw}v0bZV6&8u2 zSi4uBwMX??)2q+gv-+&PtIyh}`mCANXYE^k)a z>RvX6SD$rc^;t((pLJ~YS;tqObwc%7Csv!G8>0VE9ffp?Lb^mDsZmJRD5QH7(jyAN z&en!KJ)@A`QAnRCBr^)>8-)a-kp58!Z6{p0)(wn8a-xtSQAlnSGCT?y8HJ3FLdHfR zrzLtE+;w9n8uJB#(5Ey-?aKi#-BZ#n z<0P6gNzM-KKqr|K`j&3gtk9R)*X&SfxaN7fzf`xIIT?ov-oee?gcyJ5s{l4=P7dPF zLo$5cmG*a-W5NCSK}5%bE$$H!g1=QU*g9GFm6-iLnLoi_GT~QV$
{0(L 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

c>;Ysaq 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 BGu{9I diff --git a/vendor/bzip2/win64/include/bz_version.h b/vendor/bzip2/win64/include/bz_version.h deleted file mode 100644 index f105cf3c9..000000000 --- a/vendor/bzip2/win64/include/bz_version.h +++ /dev/null @@ -1 +0,0 @@ -#define BZ_VERSION "1.1.0" diff --git a/vendor/bzip2/win64/include/bzlib.h b/vendor/bzip2/win64/include/bzlib.h deleted file mode 100644 index 7b3d2cc85..000000000 --- a/vendor/bzip2/win64/include/bzlib.h +++ /dev/null @@ -1,287 +0,0 @@ - -/*-------------------------------------------------------------*/ -/*--- Public header file for the library. ---*/ -/*--- bzlib.h ---*/ -/*-------------------------------------------------------------*/ - -/* ------------------------------------------------------------------ - This file is part of bzip2/libbzip2, a program and library for - lossless, block-sorting data compression. - - bzip2/libbzip2 version 1.1.0 of 6 September 2010 - Copyright (C) 1996-2010 Julian Seward <jseward@acm.org> - - Please read the WARNING, DISCLAIMER and PATENTS sections in the - README file. - - This program is released under the terms of the license contained - in the file LICENSE. - ------------------------------------------------------------------ */ - - -#ifndef _BZLIB_H -#define _BZLIB_H - -#ifdef __cplusplus -extern "C" { -#endif - -#define BZ_RUN 0 -#define BZ_FLUSH 1 -#define BZ_FINISH 2 - -#define BZ_OK 0 -#define BZ_RUN_OK 1 -#define BZ_FLUSH_OK 2 -#define BZ_FINISH_OK 3 -#define BZ_STREAM_END 4 -#define BZ_SEQUENCE_ERROR (-1) -#define BZ_PARAM_ERROR (-2) -#define BZ_MEM_ERROR (-3) -#define BZ_DATA_ERROR (-4) -#define BZ_DATA_ERROR_MAGIC (-5) -#define BZ_IO_ERROR (-6) -#define BZ_UNEXPECTED_EOF (-7) -#define BZ_OUTBUFF_FULL (-8) -#define BZ_CONFIG_ERROR (-9) - -typedef - struct { - char *next_in; - unsigned int avail_in; - unsigned int total_in_lo32; - unsigned int total_in_hi32; - - char *next_out; - unsigned int avail_out; - unsigned int total_out_lo32; - unsigned int total_out_hi32; - - void *state; - - void *(*bzalloc)(void *,int,int); - void (*bzfree)(void *,void *); - void *opaque; - } - bz_stream; - - -#ifndef BZ_IMPORT -#define BZ_EXPORT -#endif - -#ifndef BZ_NO_STDIO -/* Need a definitition for FILE */ -#include <stdio.h> -#endif - -#ifdef _WIN32 -# include <windows.h> -# ifdef small - /* windows.h define small to char */ -# undef small -# endif -# ifndef WINAPI -# define WINAPI -# endif -# ifdef BZ_EXPORT -# define BZ_API(func) WINAPI func -# define BZ_EXTERN extern -# else - /* import windows dll dynamically */ -# define BZ_API(func) (WINAPI * func) -# define BZ_EXTERN -# endif -#else -# define BZ_API(func) func -#endif - -#ifndef BZ_EXTERN -#define BZ_EXTERN extern -#endif - -/*-- Core (low-level) library functions --*/ - -BZ_EXTERN int BZ_API(BZ2_bzCompressInit) ( - bz_stream* strm, - int blockSize100k, - int verbosity, - int workFactor - ); - -BZ_EXTERN int BZ_API(BZ2_bzCompress) ( - bz_stream* strm, - int action - ); - -BZ_EXTERN int BZ_API(BZ2_bzCompressEnd) ( - bz_stream* strm - ); - -BZ_EXTERN int BZ_API(BZ2_bzDecompressInit) ( - bz_stream *strm, - int verbosity, - int small - ); - -BZ_EXTERN int BZ_API(BZ2_bzDecompress) ( - bz_stream* strm - ); - -BZ_EXTERN int BZ_API(BZ2_bzDecompressEnd) ( - bz_stream *strm - ); - - - -/*-- High(er) level library functions --*/ - -#ifndef BZ_NO_STDIO -#define BZ_MAX_UNUSED 5000 - -typedef void BZFILE; - -BZ_EXTERN BZFILE* BZ_API(BZ2_bzReadOpen) ( - int* bzerror, - FILE* f, - int verbosity, - int small, - void* unused, - int nUnused - ); - -BZ_EXTERN void BZ_API(BZ2_bzReadClose) ( - int* bzerror, - BZFILE* b - ); - -BZ_EXTERN void BZ_API(BZ2_bzReadGetUnused) ( - int* bzerror, - BZFILE* b, - void** unused, - int* nUnused - ); - -BZ_EXTERN int BZ_API(BZ2_bzRead) ( - int* bzerror, - BZFILE* b, - void* buf, - int len - ); - -BZ_EXTERN BZFILE* BZ_API(BZ2_bzWriteOpen) ( - int* bzerror, - FILE* f, - int blockSize100k, - int verbosity, - int workFactor - ); - -BZ_EXTERN void BZ_API(BZ2_bzWrite) ( - int* bzerror, - BZFILE* b, - void* buf, - int len - ); - -BZ_EXTERN void BZ_API(BZ2_bzWriteClose) ( - int* bzerror, - BZFILE* b, - int abandon, - unsigned int* nbytes_in, - unsigned int* nbytes_out - ); - -BZ_EXTERN void BZ_API(BZ2_bzWriteClose64) ( - int* bzerror, - BZFILE* b, - int abandon, - unsigned int* nbytes_in_lo32, - unsigned int* nbytes_in_hi32, - unsigned int* nbytes_out_lo32, - unsigned int* nbytes_out_hi32 - ); -#endif - - -/*-- Utility functions --*/ - -BZ_EXTERN int BZ_API(BZ2_bzBuffToBuffCompress) ( - char* dest, - unsigned int* destLen, - char* source, - unsigned int sourceLen, - int blockSize100k, - int verbosity, - int workFactor - ); - -BZ_EXTERN int BZ_API(BZ2_bzBuffToBuffDecompress) ( - char* dest, - unsigned int* destLen, - char* source, - unsigned int sourceLen, - int small, - int verbosity - ); - - -/*-- - Code contributed by Yoshioka Tsuneo (tsuneo@rr.iij4u.or.jp) - to support better zlib compatibility. - This code is not _officially_ part of libbzip2 (yet); - I haven't tested it, documented it, or considered the - threading-safeness of it. - If this code breaks, please contact both Yoshioka and me. ---*/ - -BZ_EXTERN const char * BZ_API(BZ2_bzlibVersion) ( - void - ); - -#ifndef BZ_NO_STDIO -BZ_EXTERN BZFILE * BZ_API(BZ2_bzopen) ( - const char *path, - const char *mode - ); - -BZ_EXTERN BZFILE * BZ_API(BZ2_bzdopen) ( - int fd, - const char *mode - ); - -BZ_EXTERN int BZ_API(BZ2_bzread) ( - BZFILE* b, - void* buf, - int len - ); - -BZ_EXTERN int BZ_API(BZ2_bzwrite) ( - BZFILE* b, - void* buf, - int len - ); - -BZ_EXTERN int BZ_API(BZ2_bzflush) ( - BZFILE* b - ); - -BZ_EXTERN void BZ_API(BZ2_bzclose) ( - BZFILE* b - ); - -BZ_EXTERN const char * BZ_API(BZ2_bzerror) ( - BZFILE *b, - int *errnum - ); -#endif - -#ifdef __cplusplus -} -#endif - -#endif - -/*-------------------------------------------------------------*/ -/*--- end bzlib.h ---*/ -/*-------------------------------------------------------------*/ diff --git a/vendor/bzip2/win64/include/bzlib_private.h b/vendor/bzip2/win64/include/bzlib_private.h deleted file mode 100644 index fc305e197..000000000 --- a/vendor/bzip2/win64/include/bzlib_private.h +++ /dev/null @@ -1,507 +0,0 @@ - -/*-------------------------------------------------------------*/ -/*--- Private header file for the library. ---*/ -/*--- bzlib_private.h ---*/ -/*-------------------------------------------------------------*/ - -/* ------------------------------------------------------------------ - This file is part of bzip2/libbzip2, a program and library for - lossless, block-sorting data compression. - - bzip2/libbzip2 version 1.1.0 of 6 September 2010 - Copyright (C) 1996-2010 Julian Seward <jseward@acm.org> - - Please read the WARNING, DISCLAIMER and PATENTS sections in the - README file. - - This program is released under the terms of the license contained - in the file LICENSE. - ------------------------------------------------------------------ */ - - -#ifndef _BZLIB_PRIVATE_H -#define _BZLIB_PRIVATE_H - -#include <stdlib.h> - -#ifndef BZ_NO_STDIO -#include <stdio.h> -#include <ctype.h> -#include <string.h> -#endif - -#include "bzlib.h" - - - -/*-- General stuff. --*/ - -typedef char Char; -typedef unsigned char Bool; -typedef unsigned char UChar; -typedef int Int32; -typedef unsigned int UInt32; -typedef short Int16; -typedef unsigned short UInt16; - -#define True ((Bool)1) -#define False ((Bool)0) - -#ifndef __GNUC__ -#define __inline__ /* */ -#endif - -#ifndef BZ_NO_STDIO - -extern void BZ2_bz__AssertH__fail ( int errcode ); -#define AssertH(cond,errcode) \ - { if (!(cond)) BZ2_bz__AssertH__fail ( errcode ); } - -#if BZ_DEBUG -#define AssertD(cond,msg) \ - { if (!(cond)) { \ - fprintf ( stderr, \ - "\n\nlibbzip2(debug build): internal error\n\t%s\n", msg );\ - exit(1); \ - }} -#else -#define AssertD(cond,msg) /* */ -#endif - -#define VPrintf0(zf) \ - fprintf(stderr,zf) -#define VPrintf1(zf,za1) \ - fprintf(stderr,zf,za1) -#define VPrintf2(zf,za1,za2) \ - fprintf(stderr,zf,za1,za2) -#define VPrintf3(zf,za1,za2,za3) \ - fprintf(stderr,zf,za1,za2,za3) -#define VPrintf4(zf,za1,za2,za3,za4) \ - fprintf(stderr,zf,za1,za2,za3,za4) -#define VPrintf5(zf,za1,za2,za3,za4,za5) \ - fprintf(stderr,zf,za1,za2,za3,za4,za5) - -#else - -extern void bz_internal_error ( int errcode ); -#define AssertH(cond,errcode) \ - { if (!(cond)) bz_internal_error ( errcode ); } -#define AssertD(cond,msg) do { } while (0) -#define VPrintf0(zf) do { } while (0) -#define VPrintf1(zf,za1) do { } while (0) -#define VPrintf2(zf,za1,za2) do { } while (0) -#define VPrintf3(zf,za1,za2,za3) do { } while (0) -#define VPrintf4(zf,za1,za2,za3,za4) do { } while (0) -#define VPrintf5(zf,za1,za2,za3,za4,za5) do { } while (0) - -#endif - - -#define BZALLOC(nnn) (strm->bzalloc)(strm->opaque,(nnn),1) -#define BZFREE(ppp) (strm->bzfree)(strm->opaque,(ppp)) - - -/*-- Header bytes. --*/ - -#define BZ_HDR_B 0x42 /* 'B' */ -#define BZ_HDR_Z 0x5a /* 'Z' */ -#define BZ_HDR_h 0x68 /* 'h' */ -#define BZ_HDR_0 0x30 /* '0' */ - -/*-- Constants for the back end. --*/ - -#define BZ_MAX_ALPHA_SIZE 258 -#define BZ_MAX_CODE_LEN 23 - -#define BZ_RUNA 0 -#define BZ_RUNB 1 - -#define BZ_N_GROUPS 6 -#define BZ_G_SIZE 50 -#define BZ_N_ITERS 4 - -#define BZ_MAX_SELECTORS (2 + (900000 / BZ_G_SIZE)) - - - -/*-- Stuff for randomising repetitive blocks. --*/ - -extern Int32 BZ2_rNums[512]; - -#define BZ_RAND_DECLS \ - Int32 rNToGo; \ - Int32 rTPos \ - -#define BZ_RAND_INIT_MASK \ - s->rNToGo = 0; \ - s->rTPos = 0 \ - -#define BZ_RAND_MASK ((s->rNToGo == 1) ? 1 : 0) - -#define BZ_RAND_UPD_MASK \ - if (s->rNToGo == 0) { \ - s->rNToGo = BZ2_rNums[s->rTPos]; \ - s->rTPos++; \ - if (s->rTPos == 512) s->rTPos = 0; \ - } \ - s->rNToGo--; - - - -/*-- Stuff for doing CRCs. --*/ - -extern UInt32 BZ2_crc32Table[256]; - -#define BZ_INITIALISE_CRC(crcVar) \ -{ \ - crcVar = 0xffffffffL; \ -} - -#define BZ_FINALISE_CRC(crcVar) \ -{ \ - crcVar = ~(crcVar); \ -} - -#define BZ_UPDATE_CRC(crcVar,cha) \ -{ \ - crcVar = (crcVar << 8) ^ \ - BZ2_crc32Table[(crcVar >> 24) ^ \ - ((UChar)cha)]; \ -} - - - -/*-- States and modes for compression. --*/ - -#define BZ_M_IDLE 1 -#define BZ_M_RUNNING 2 -#define BZ_M_FLUSHING 3 -#define BZ_M_FINISHING 4 - -#define BZ_S_OUTPUT 1 -#define BZ_S_INPUT 2 - -#define BZ_N_RADIX 2 -#define BZ_N_QSORT 12 -#define BZ_N_SHELL 18 -#define BZ_N_OVERSHOOT (BZ_N_RADIX + BZ_N_QSORT + BZ_N_SHELL + 2) - - - - -/*-- Structure holding all the compression-side stuff. --*/ - -typedef - struct { - /* pointer back to the struct bz_stream */ - bz_stream* strm; - - /* mode this stream is in, and whether inputting */ - /* or outputting data */ - Int32 mode; - Int32 state; - - /* remembers avail_in when flush/finish requested */ - UInt32 avail_in_expect; - - /* for doing the block sorting */ - UInt32* arr1; - UInt32* arr2; - UInt32* ftab; - Int32 origPtr; - - /* aliases for arr1 and arr2 */ - UInt32* ptr; - UChar* block; - UInt16* mtfv; - UChar* zbits; - - /* for deciding when to use the fallback sorting algorithm */ - Int32 workFactor; - - /* run-length-encoding of the input */ - UInt32 state_in_ch; - Int32 state_in_len; - BZ_RAND_DECLS; - - /* input and output limits and current posns */ - Int32 nblock; - Int32 nblockMAX; - Int32 numZ; - Int32 state_out_pos; - - /* map of bytes used in block */ - Int32 nInUse; - Bool inUse[256]; - UChar unseqToSeq[256]; - - /* the buffer for bit stream creation */ - UInt32 bsBuff; - Int32 bsLive; - - /* block and combined CRCs */ - UInt32 blockCRC; - UInt32 combinedCRC; - - /* misc administratium */ - Int32 verbosity; - Int32 blockNo; - Int32 blockSize100k; - - /* stuff for coding the MTF values */ - Int32 nMTF; - Int32 mtfFreq [BZ_MAX_ALPHA_SIZE]; - UChar selector [BZ_MAX_SELECTORS]; - UChar selectorMtf[BZ_MAX_SELECTORS]; - - UChar len [BZ_N_GROUPS][BZ_MAX_ALPHA_SIZE]; - Int32 code [BZ_N_GROUPS][BZ_MAX_ALPHA_SIZE]; - Int32 rfreq [BZ_N_GROUPS][BZ_MAX_ALPHA_SIZE]; - /* second dimension: only 3 needed; 4 makes index calculations faster */ - UInt32 len_pack[BZ_MAX_ALPHA_SIZE][4]; - - } - EState; - - - -/*-- externs for compression. --*/ - -extern void -BZ2_blockSort ( EState* ); - -extern void -BZ2_compressBlock ( EState*, Bool ); - -extern void -BZ2_bsInitWrite ( EState* ); - -extern void -BZ2_hbAssignCodes ( Int32*, UChar*, Int32, Int32, Int32 ); - -extern void -BZ2_hbMakeCodeLengths ( UChar*, Int32*, Int32, Int32 ); - - - -/*-- states for decompression. --*/ - -#define BZ_X_IDLE 1 -#define BZ_X_OUTPUT 2 - -#define BZ_X_MAGIC_1 10 -#define BZ_X_MAGIC_2 11 -#define BZ_X_MAGIC_3 12 -#define BZ_X_MAGIC_4 13 -#define BZ_X_BLKHDR_1 14 -#define BZ_X_BLKHDR_2 15 -#define BZ_X_BLKHDR_3 16 -#define BZ_X_BLKHDR_4 17 -#define BZ_X_BLKHDR_5 18 -#define BZ_X_BLKHDR_6 19 -#define BZ_X_BCRC_1 20 -#define BZ_X_BCRC_2 21 -#define BZ_X_BCRC_3 22 -#define BZ_X_BCRC_4 23 -#define BZ_X_RANDBIT 24 -#define BZ_X_ORIGPTR_1 25 -#define BZ_X_ORIGPTR_2 26 -#define BZ_X_ORIGPTR_3 27 -#define BZ_X_MAPPING_1 28 -#define BZ_X_MAPPING_2 29 -#define BZ_X_SELECTOR_1 30 -#define BZ_X_SELECTOR_2 31 -#define BZ_X_SELECTOR_3 32 -#define BZ_X_CODING_1 33 -#define BZ_X_CODING_2 34 -#define BZ_X_CODING_3 35 -#define BZ_X_MTF_1 36 -#define BZ_X_MTF_2 37 -#define BZ_X_MTF_3 38 -#define BZ_X_MTF_4 39 -#define BZ_X_MTF_5 40 -#define BZ_X_MTF_6 41 -#define BZ_X_ENDHDR_2 42 -#define BZ_X_ENDHDR_3 43 -#define BZ_X_ENDHDR_4 44 -#define BZ_X_ENDHDR_5 45 -#define BZ_X_ENDHDR_6 46 -#define BZ_X_CCRC_1 47 -#define BZ_X_CCRC_2 48 -#define BZ_X_CCRC_3 49 -#define BZ_X_CCRC_4 50 - - - -/*-- Constants for the fast MTF decoder. --*/ - -#define MTFA_SIZE 4096 -#define MTFL_SIZE 16 - - - -/*-- Structure holding all the decompression-side stuff. --*/ - -typedef - struct { - /* pointer back to the struct bz_stream */ - bz_stream* strm; - - /* state indicator for this stream */ - Int32 state; - - /* for doing the final run-length decoding */ - UChar state_out_ch; - Int32 state_out_len; - Bool blockRandomised; - BZ_RAND_DECLS; - - /* the buffer for bit stream reading */ - UInt32 bsBuff; - Int32 bsLive; - - /* misc administratium */ - Int32 blockSize100k; - Bool smallDecompress; - Int32 currBlockNo; - Int32 verbosity; - - /* for undoing the Burrows-Wheeler transform */ - Int32 origPtr; - UInt32 tPos; - Int32 k0; - Int32 unzftab[256]; - Int32 nblock_used; - Int32 cftab[257]; - Int32 cftabCopy[257]; - - /* for undoing the Burrows-Wheeler transform (FAST) */ - UInt32 *tt; - - /* for undoing the Burrows-Wheeler transform (SMALL) */ - UInt16 *ll16; - UChar *ll4; - - /* stored and calculated CRCs */ - UInt32 storedBlockCRC; - UInt32 storedCombinedCRC; - UInt32 calculatedBlockCRC; - UInt32 calculatedCombinedCRC; - - /* map of bytes used in block */ - Int32 nInUse; - Bool inUse[256]; - Bool inUse16[16]; - UChar seqToUnseq[256]; - - /* for decoding the MTF values */ - UChar mtfa [MTFA_SIZE]; - Int32 mtfbase[256 / MTFL_SIZE]; - UChar selector [BZ_MAX_SELECTORS]; - UChar selectorMtf[BZ_MAX_SELECTORS]; - UChar len [BZ_N_GROUPS][BZ_MAX_ALPHA_SIZE]; - - Int32 limit [BZ_N_GROUPS][BZ_MAX_ALPHA_SIZE]; - Int32 base [BZ_N_GROUPS][BZ_MAX_ALPHA_SIZE]; - Int32 perm [BZ_N_GROUPS][BZ_MAX_ALPHA_SIZE]; - Int32 minLens[BZ_N_GROUPS]; - - /* save area for scalars in the main decompress code */ - Int32 save_i; - Int32 save_j; - Int32 save_t; - Int32 save_alphaSize; - Int32 save_nGroups; - Int32 save_nSelectors; - Int32 save_EOB; - Int32 save_groupNo; - Int32 save_groupPos; - Int32 save_nextSym; - Int32 save_nblockMAX; - Int32 save_nblock; - Int32 save_es; - Int32 save_N; - Int32 save_curr; - Int32 save_zt; - Int32 save_zn; - Int32 save_zvec; - Int32 save_zj; - Int32 save_gSel; - Int32 save_gMinlen; - Int32* save_gLimit; - Int32* save_gBase; - Int32* save_gPerm; - - } - DState; - - - -/*-- Macros for decompression. --*/ - -#define BZ_GET_FAST(cccc) \ - /* c_tPos is unsigned, hence test < 0 is pointless. */ \ - if (s->tPos >= (UInt32)100000 * (UInt32)s->blockSize100k) return True; \ - s->tPos = s->tt[s->tPos]; \ - cccc = (UChar)(s->tPos & 0xff); \ - s->tPos >>= 8; - -#define BZ_GET_FAST_C(cccc) \ - /* c_tPos is unsigned, hence test < 0 is pointless. */ \ - if (c_tPos >= (UInt32)100000 * (UInt32)ro_blockSize100k) return True; \ - c_tPos = c_tt[c_tPos]; \ - cccc = (UChar)(c_tPos & 0xff); \ - c_tPos >>= 8; - -#define SET_LL4(i,n) \ - { if (((i) & 0x1) == 0) \ - s->ll4[(i) >> 1] = (s->ll4[(i) >> 1] & 0xf0) | (n); else \ - s->ll4[(i) >> 1] = (s->ll4[(i) >> 1] & 0x0f) | ((n) << 4); \ - } - -#define GET_LL4(i) \ - ((((UInt32)(s->ll4[(i) >> 1])) >> (((i) << 2) & 0x4)) & 0xF) - -#define SET_LL(i,n) \ - { s->ll16[i] = (UInt16)(n & 0x0000ffff); \ - SET_LL4(i, n >> 16); \ - } - -#define GET_LL(i) \ - (((UInt32)s->ll16[i]) | (GET_LL4(i) << 16)) - -#define BZ_GET_SMALL(cccc) \ - /* c_tPos is unsigned, hence test < 0 is pointless. */ \ - if (s->tPos >= (UInt32)100000 * (UInt32)s->blockSize100k) return True; \ - cccc = BZ2_indexIntoF ( s->tPos, s->cftab ); \ - s->tPos = GET_LL(s->tPos); - - -/*-- externs for decompression. --*/ - -extern Int32 -BZ2_indexIntoF ( Int32, Int32* ); - -extern Int32 -BZ2_decompress ( DState* ); - -extern void -BZ2_hbCreateDecodeTables ( Int32*, Int32*, Int32*, UChar*, - Int32, Int32, Int32 ); - - -#endif - - -/*-- BZ_NO_STDIO seems to make NULL disappear on some platforms. --*/ - -#ifdef BZ_NO_STDIO -#ifndef NULL -#define NULL 0 -#endif -#endif - - -/*-------------------------------------------------------------*/ -/*--- end bzlib_private.h ---*/ -/*-------------------------------------------------------------*/ diff --git a/vendor/bzip2/win64/lib/bz2.lib b/vendor/bzip2/win64/lib/bz2.lib deleted file mode 100644 index 78f286bfb14deef62ec11ed82010238f83130d04..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 123000 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 diff --git a/vendor/dyncall/linuxsteamrt64/include/dyncall/dyncall.h b/vendor/dyncall/linuxsteamrt64/include/dyncall/dyncall.h deleted file mode 100644 index 214be0eca..000000000 --- a/vendor/dyncall/linuxsteamrt64/include/dyncall/dyncall.h +++ /dev/null @@ -1,151 +0,0 @@ -/* - - Package: dyncall - Library: dyncall - File: dyncall/dyncall.h - Description: public header for library dyncall - License: - - Copyright (c) 2007-2020 Daniel Adler <dadler@uni-goettingen.de>, - Tassilo Philipp <tphilipp@potion-studios.com> - - Permission to use, copy, modify, and distribute this software for any - purpose with or without fee is hereby granted, provided that the above - copyright notice and this permission notice appear in all copies. - - THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES - WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF - MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR - ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES - WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN - ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF - OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. - -*/ - - -/* - - dyncall C API - - REVISION - 2015/07/08 added SYS_PPC64 system call - 2015/01/16 added SYS_PPC32 system call - 2007/12/11 initial - -*/ - -#ifndef DYNCALL_H -#define DYNCALL_H - -#include "dyncall_types.h" -#include "dyncall_signature.h" - -#ifdef __cplusplus -extern "C" { -#endif - -typedef struct DCCallVM_ DCCallVM; -typedef struct DCstruct_ DCstruct; - -/* Supported Calling Convention Modes */ - -#define DC_CALL_C_DEFAULT 0 -#define DC_CALL_C_ELLIPSIS 100 -#define DC_CALL_C_ELLIPSIS_VARARGS 101 -#define DC_CALL_C_X86_CDECL 1 -#define DC_CALL_C_X86_WIN32_STD 2 -#define DC_CALL_C_X86_WIN32_FAST_MS 3 -#define DC_CALL_C_X86_WIN32_FAST_GNU 4 -#define DC_CALL_C_X86_WIN32_THIS_MS 5 -#define DC_CALL_C_X86_WIN32_THIS_GNU DC_CALL_C_X86_CDECL /* alias - identical to cdecl (w/ this-ptr as 1st arg) */ -#define DC_CALL_C_X64_WIN64 7 -#define DC_CALL_C_X64_SYSV 8 -#define DC_CALL_C_PPC32_DARWIN 9 -#define DC_CALL_C_PPC32_OSX DC_CALL_C_PPC32_DARWIN /* alias */ -#define DC_CALL_C_ARM_ARM_EABI 10 -#define DC_CALL_C_ARM_THUMB_EABI 11 -#define DC_CALL_C_ARM_ARMHF 30 -#define DC_CALL_C_MIPS32_EABI 12 -#define DC_CALL_C_MIPS32_PSPSDK DC_CALL_C_MIPS32_EABI /* alias - deprecated. */ -#define DC_CALL_C_PPC32_SYSV 13 -#define DC_CALL_C_PPC32_LINUX DC_CALL_C_PPC32_SYSV /* alias */ -#define DC_CALL_C_ARM_ARM 14 -#define DC_CALL_C_ARM_THUMB 15 -#define DC_CALL_C_MIPS32_O32 16 -#define DC_CALL_C_MIPS64_N32 17 -#define DC_CALL_C_MIPS64_N64 18 -#define DC_CALL_C_X86_PLAN9 19 -#define DC_CALL_C_SPARC32 20 -#define DC_CALL_C_SPARC64 21 -#define DC_CALL_C_ARM64 22 -#define DC_CALL_C_PPC64 23 -#define DC_CALL_C_PPC64_LINUX DC_CALL_C_PPC64 /* alias */ -#define DC_CALL_SYS_DEFAULT 200 -#define DC_CALL_SYS_X86_INT80H_LINUX 201 -#define DC_CALL_SYS_X86_INT80H_BSD 202 -#define DC_CALL_SYS_X64_SYSCALL_SYSV 204 -#define DC_CALL_SYS_PPC32 210 -#define DC_CALL_SYS_PPC64 211 - -/* Error codes. */ - -#define DC_ERROR_NONE 0 -#define DC_ERROR_UNSUPPORTED_MODE -1 - -DC_API DCCallVM* dcNewCallVM (DCsize size); -DC_API void dcFree (DCCallVM* vm); -DC_API void dcReset (DCCallVM* vm); - -DC_API void dcMode (DCCallVM* vm, DCint mode); - -DC_API void dcArgBool (DCCallVM* vm, DCbool value); -DC_API void dcArgChar (DCCallVM* vm, DCchar value); -DC_API void dcArgShort (DCCallVM* vm, DCshort value); -DC_API void dcArgInt (DCCallVM* vm, DCint value); -DC_API void dcArgLong (DCCallVM* vm, DClong value); -DC_API void dcArgLongLong (DCCallVM* vm, DClonglong value); -DC_API void dcArgFloat (DCCallVM* vm, DCfloat value); -DC_API void dcArgDouble (DCCallVM* vm, DCdouble value); -DC_API void dcArgPointer (DCCallVM* vm, DCpointer value); -DC_API void dcArgStruct (DCCallVM* vm, DCstruct* s, DCpointer value); - -DC_API void dcCallVoid (DCCallVM* vm, DCpointer funcptr); -DC_API DCbool dcCallBool (DCCallVM* vm, DCpointer funcptr); -DC_API DCchar dcCallChar (DCCallVM* vm, DCpointer funcptr); -DC_API DCshort dcCallShort (DCCallVM* vm, DCpointer funcptr); -DC_API DCint dcCallInt (DCCallVM* vm, DCpointer funcptr); -DC_API DClong dcCallLong (DCCallVM* vm, DCpointer funcptr); -DC_API DClonglong dcCallLongLong (DCCallVM* vm, DCpointer funcptr); -DC_API DCfloat dcCallFloat (DCCallVM* vm, DCpointer funcptr); -DC_API DCdouble dcCallDouble (DCCallVM* vm, DCpointer funcptr); -DC_API DCpointer dcCallPointer (DCCallVM* vm, DCpointer funcptr); -DC_API void dcCallStruct (DCCallVM* vm, DCpointer funcptr, DCstruct* s, DCpointer returnValue); - -DC_API DCint dcGetError (DCCallVM* vm); - -#define DEFAULT_ALIGNMENT 0 -DC_API DCstruct* dcNewStruct (DCsize fieldCount, DCint alignment); -DC_API void dcStructField (DCstruct* s, DCint type, DCint alignment, DCsize arrayLength); -DC_API void dcSubStruct (DCstruct* s, DCsize fieldCount, DCint alignment, DCsize arrayLength); -/* Each dcNewStruct or dcSubStruct call must be paired with a dcCloseStruct. */ -DC_API void dcCloseStruct (DCstruct* s); -DC_API DCsize dcStructSize (DCstruct* s); -DC_API DCsize dcStructAlignment(DCstruct* s); -DC_API void dcFreeStruct (DCstruct* s); - -DC_API DCstruct* dcDefineStruct (const char* signature); - - -/* helpers */ - -/* returns respective mode for callconv sig char (w/o checking if mode exists */ -/* on current platform), or DC_ERROR_UNSUPPORTED_MODE if char isn't a sigchar */ -DC_API DCint dcGetModeFromCCSigChar(DCsigchar sig_char); - -#ifdef __cplusplus -} -#endif - -#endif /* DYNCALL_H */ - diff --git a/vendor/dyncall/linuxsteamrt64/include/dyncall/dyncall_alloc.h b/vendor/dyncall/linuxsteamrt64/include/dyncall/dyncall_alloc.h deleted file mode 100644 index 4b4322599..000000000 --- a/vendor/dyncall/linuxsteamrt64/include/dyncall/dyncall_alloc.h +++ /dev/null @@ -1,41 +0,0 @@ -/* - - Package: dyncall - Library: dyncall - File: dyncall/dyncall_alloc.h - Description: heap memory management interface (header only) - License: - - Copyright (c) 2007-2018 Daniel Adler <dadler@uni-goettingen.de>, - Tassilo Philipp <tphilipp@potion-studios.com> - - Permission to use, copy, modify, and distribute this software for any - purpose with or without fee is hereby granted, provided that the above - copyright notice and this permission notice appear in all copies. - - THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES - WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF - MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR - ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES - WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN - ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF - OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. - -*/ - - - -#ifndef DYNCALL_ALLOC_H -#define DYNCALL_ALLOC_H - -#ifndef dcAllocMem -#include <stdlib.h> -#define dcAllocMem malloc -#endif - -#ifndef dcFreeMem -#define dcFreeMem free -#endif - -#endif /* DYNCALL_ALLOC_H */ - diff --git a/vendor/dyncall/linuxsteamrt64/include/dyncall/dyncall_callf.h b/vendor/dyncall/linuxsteamrt64/include/dyncall/dyncall_callf.h deleted file mode 100644 index d09f7e5e3..000000000 --- a/vendor/dyncall/linuxsteamrt64/include/dyncall/dyncall_callf.h +++ /dev/null @@ -1,56 +0,0 @@ -/* - - Package: dyncall - Library: dyncall - File: dyncall/dyncall_callf.h - Description: formatted call interface to dyncall - License: - - Copyright (c) 2007-2018 Daniel Adler <dadler@uni-goettingen.de>, - Tassilo Philipp <tphilipp@potion-studios.com> - - Permission to use, copy, modify, and distribute this software for any - purpose with or without fee is hereby granted, provided that the above - copyright notice and this permission notice appear in all copies. - - THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES - WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF - MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR - ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES - WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN - ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF - OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. - -*/ - - - -/* - - dyncall formatted calls C API - - REVISION - 2007/12/11 initial - -*/ - - -#ifndef DYNCALL_CALLF_H -#define DYNCALL_CALLF_H - -/* dyncall formatted calls */ - -#include "dyncall.h" -#include "dyncall_signature.h" -#include "dyncall_value.h" - -#include <stdarg.h> - -void dcArgF (DCCallVM* vm, const DCsigchar* signature, ...); -void dcVArgF(DCCallVM* vm, const DCsigchar* signature, va_list args); - -void dcCallF (DCCallVM* vm, DCValue* result, DCpointer funcptr, const DCsigchar* signature, ...); -void dcVCallF(DCCallVM* vm, DCValue* result, DCpointer funcptr, const DCsigchar* signature, va_list args); - -#endif /* DYNCALL_CALLF_H */ - diff --git a/vendor/dyncall/linuxsteamrt64/include/dyncall/dyncall_callvm.h b/vendor/dyncall/linuxsteamrt64/include/dyncall/dyncall_callvm.h deleted file mode 100644 index af817ad91..000000000 --- a/vendor/dyncall/linuxsteamrt64/include/dyncall/dyncall_callvm.h +++ /dev/null @@ -1,89 +0,0 @@ -/* - - Package: dyncall - Library: dyncall - File: dyncall/dyncall_callvm.h - Description: Common call vm binary interface. - License: - - Copyright (c) 2007-2018 Daniel Adler <dadler@uni-goettingen.de>, - Tassilo Philipp <tphilipp@potion-studios.com> - - Permission to use, copy, modify, and distribute this software for any - purpose with or without fee is hereby granted, provided that the above - copyright notice and this permission notice appear in all copies. - - THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES - WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF - MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR - ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES - WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN - ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF - OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. - -*/ - - - -#ifndef DYNCALL_CALLVM_H -#define DYNCALL_CALLVM_H - -#include "dyncall.h" - -/* --- callvm virtual function table --------------------------------------- */ - -/* NOTE: if something changes in DCCallVM_, update offset marks in dyncall_call_sparc.S */ - -typedef struct DCCallVM_vt_ DCCallVM_vt; - -struct DCCallVM_ -{ - DCCallVM_vt* mVTpointer; - DCint mError; -}; - -struct DCCallVM_vt_ -{ - void (*free) (DCCallVM* vm); - void (*reset) (DCCallVM* vm); - void (*mode) (DCCallVM* vm,DCint mode); - void (*argBool) (DCCallVM* vm,DCbool B); - void (*argChar) (DCCallVM* vm,DCchar c); - void (*argShort) (DCCallVM* vm,DCshort s); - void (*argInt) (DCCallVM* vm,DCint i); - void (*argLong) (DCCallVM* vm,DClong l); - void (*argLongLong) (DCCallVM* vm,DClonglong L); - void (*argFloat) (DCCallVM* vm,DCfloat f); - void (*argDouble) (DCCallVM* vm,DCdouble d); - void (*argPointer) (DCCallVM* vm,DCpointer p); - void (*argStruct) (DCCallVM* vm,DCstruct* s, DCpointer p); - void (*callVoid) (DCCallVM* vm,DCpointer funcptr); - DCbool (*callBool) (DCCallVM* vm,DCpointer funcptr); - DCchar (*callChar) (DCCallVM* vm,DCpointer funcptr); - DCshort (*callShort) (DCCallVM* vm,DCpointer funcptr); - DCint (*callInt) (DCCallVM* vm,DCpointer funcptr); - DClong (*callLong) (DCCallVM* vm,DCpointer funcptr); - DClonglong (*callLongLong) (DCCallVM* vm,DCpointer funcptr); - DCfloat (*callFloat) (DCCallVM* vm,DCpointer funcptr); - DCdouble (*callDouble) (DCCallVM* vm,DCpointer funcptr); - DCpointer (*callPointer) (DCCallVM* vm,DCpointer funcptr); - void (*callStruct) (DCCallVM* vm,DCpointer funcptr,DCstruct* s, DCpointer returnValue); -}; - -typedef DCvoid (DCvoidvmfunc) (DCCallVM* vm,DCpointer funcptr); -typedef DCbool (DCboolvmfunc) (DCCallVM* vn,DCpointer funcptr); -typedef DCchar (DCcharvmfunc) (DCCallVM* vm,DCpointer funcptr); -typedef DCshort (DCshortvmfunc) (DCCallVM* vm,DCpointer funcptr); -typedef DCint (DCintvmfunc) (DCCallVM* vm,DCpointer funcptr); -typedef DClong (DClongvmfunc) (DCCallVM* vm,DCpointer funcptr); -typedef DClonglong (DClonglongvmfunc) (DCCallVM* vm,DCpointer funcptr); -typedef DCfloat (DCfloatvmfunc) (DCCallVM* vm,DCpointer funcptr); -typedef DCdouble (DCdoublevmfunc) (DCCallVM* vm,DCpointer funcptr); -typedef DCpointer (DCpointervmfunc) (DCCallVM* vm,DCpointer funcptr); - -/* Common base functions for CallVM implementations. */ - -void dc_callvm_base_init(DCCallVM *pInstance, DCCallVM_vt* pVTable); - -#endif /* DYNCALL_CALLVM_H */ - diff --git a/vendor/dyncall/linuxsteamrt64/include/dyncall/dyncall_callvm_arm32_arm.h b/vendor/dyncall/linuxsteamrt64/include/dyncall/dyncall_callvm_arm32_arm.h deleted file mode 100644 index 749b69efd..000000000 --- a/vendor/dyncall/linuxsteamrt64/include/dyncall/dyncall_callvm_arm32_arm.h +++ /dev/null @@ -1,55 +0,0 @@ -/* - - Package: dyncall - Library: dyncall - File: dyncall/dyncall_callvm_arm32_arm.h - Description: - License: - - Copyright (c) 2007-2020 Daniel Adler <dadler@uni-goettingen.de>, - Tassilo Philipp <tphilipp@potion-studios.com> - - Permission to use, copy, modify, and distribute this software for any - purpose with or without fee is hereby granted, provided that the above - copyright notice and this permission notice appear in all copies. - - THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES - WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF - MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR - ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES - WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN - ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF - OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. - -*/ - - - -/* - - dyncall callvm for 32bit ARM32 family of processors - - SUPPORTED CALLING CONVENTIONS - armcall - - REVISION - 2007/12/11 initial - -*/ - - -#ifndef DYNCALL_CALLVM_ARM32_ARM_H -#define DYNCALL_CALLVM_ARM32_ARM_H - -#include "dyncall_callvm.h" -#include "dyncall_vector.h" - -typedef struct -{ - DCCallVM mInterface; - DCpointer mpCallFunc; - DCVecHead mVecHead; -} DCCallVM_arm32_arm; - -#endif /* DYNCALL_CALLVM_ARM32_ARM_H */ - diff --git a/vendor/dyncall/linuxsteamrt64/include/dyncall/dyncall_callvm_arm32_arm_armhf.h b/vendor/dyncall/linuxsteamrt64/include/dyncall/dyncall_callvm_arm32_arm_armhf.h deleted file mode 100644 index 522b1bca3..000000000 --- a/vendor/dyncall/linuxsteamrt64/include/dyncall/dyncall_callvm_arm32_arm_armhf.h +++ /dev/null @@ -1,59 +0,0 @@ -/* - - Package: dyncall - Library: dyncall - File: dyncall/dyncall_callvm_arm32_arm_armhf.h - Description: - License: - - Copyright (c) 2007-2020 Daniel Adler <dadler@uni-goettingen.de>, - Tassilo Philipp <tphilipp@potion-studios.com> - - Permission to use, copy, modify, and distribute this software for any - purpose with or without fee is hereby granted, provided that the above - copyright notice and this permission notice appear in all copies. - - THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES - WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF - MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR - ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES - WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN - ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF - OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. - -*/ - - - -/* - - dyncall callvm for 32bit ARM32 family of processors - - SUPPORTED CALLING CONVENTIONS - armcall - - REVISION - 2007/12/11 initial - -*/ - - -#ifndef DYNCALL_CALLVM_ARM32_ARM_ARMHF_H -#define DYNCALL_CALLVM_ARM32_ARM_ARMHF_H - -#include "dyncall_callvm.h" -#include "dyncall_vector.h" - -typedef struct -{ - DCCallVM mInterface; - unsigned int i; - unsigned int s; - unsigned int d; - DCfloat S[16]; - DCpointer mpCallFunc; - DCVecHead mVecHead; -} DCCallVM_arm32_armhf; - -#endif /* DYNCALL_CALLVM_ARM32_ARM_H */ - diff --git a/vendor/dyncall/linuxsteamrt64/include/dyncall/dyncall_callvm_arm32_thumb.h b/vendor/dyncall/linuxsteamrt64/include/dyncall/dyncall_callvm_arm32_thumb.h deleted file mode 100644 index 7e4ea3cca..000000000 --- a/vendor/dyncall/linuxsteamrt64/include/dyncall/dyncall_callvm_arm32_thumb.h +++ /dev/null @@ -1,55 +0,0 @@ -/* - - Package: dyncall - Library: dyncall - File: dyncall/dyncall_callvm_arm32_thumb.h - Description: - License: - - Copyright (c) 2007-2020 Daniel Adler <dadler@uni-goettingen.de>, - Tassilo Philipp <tphilipp@potion-studios.com> - - Permission to use, copy, modify, and distribute this software for any - purpose with or without fee is hereby granted, provided that the above - copyright notice and this permission notice appear in all copies. - - THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES - WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF - MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR - ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES - WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN - ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF - OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. - -*/ - - - -/* - - dyncall callvm for 32bit ARM32 family of processors - - SUPPORTED CALLING CONVENTIONS - armthumbcall - - REVISION - 2008/08/12 initial - -*/ - - -#ifndef DYNCALL_CALLVM_ARM32_THUMB_H -#define DYNCALL_CALLVM_ARM32_THUMB_H - -#include "dyncall_callvm.h" -#include "dyncall_vector.h" - -typedef struct -{ - DCCallVM mInterface; - DCpointer mpCallFunc; - DCVecHead mVecHead; -} DCCallVM_arm32_thumb; - -#endif /* DYNCALL_CALLVM_ARM32_THUMB_H */ - diff --git a/vendor/dyncall/linuxsteamrt64/include/dyncall/dyncall_callvm_arm64.h b/vendor/dyncall/linuxsteamrt64/include/dyncall/dyncall_callvm_arm64.h deleted file mode 100644 index e2389cdb3..000000000 --- a/vendor/dyncall/linuxsteamrt64/include/dyncall/dyncall_callvm_arm64.h +++ /dev/null @@ -1,46 +0,0 @@ -/* - - Package: dyncall - Library: dyncall - File: dyncall/dyncall_callvm_arm64.h - Description: - License: - - Copyright (c) 2015-2020 Daniel Adler <dadler@uni-goettingen.de>, - Tassilo Philipp <tphilipp@potion-studios.com> - - Permission to use, copy, modify, and distribute this software for any - purpose with or without fee is hereby granted, provided that the above - copyright notice and this permission notice appear in all copies. - - THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES - WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF - MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR - ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES - WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN - ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF - OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. - -*/ - -#ifndef DYNCALL_CALLVM_ARM64_H -#define DYNCALL_CALLVM_ARM64_H - -#include "dyncall_callvm.h" -#include "dyncall_vector.h" - -typedef struct -{ - DCCallVM mInterface; - unsigned int i; /* int register counter */ - unsigned int f; /* float register counter */ - union { /* float register buffer */ - DCfloat S[16]; - DCdouble D[8]; - } u; - unsigned long long I[8]; /* int register buffer */ - DCVecHead mVecHead; /* argument buffer head */ -} DCCallVM_arm64; - -#endif /* DYNCALL_CALLVM_ARM64_DEBIAN_H */ - diff --git a/vendor/dyncall/linuxsteamrt64/include/dyncall/dyncall_callvm_mips.h b/vendor/dyncall/linuxsteamrt64/include/dyncall/dyncall_callvm_mips.h deleted file mode 100644 index 3f81af7d2..000000000 --- a/vendor/dyncall/linuxsteamrt64/include/dyncall/dyncall_callvm_mips.h +++ /dev/null @@ -1,38 +0,0 @@ -/* - - Package: dyncall - Library: dyncall - File: dyncall/dyncall_callvm_mips.h - Description: - License: - - Copyright (c) 2007-2018 Daniel Adler <dadler@uni-goettingen.de>, - Tassilo Philipp <tphilipp@potion-studios.com> - - Permission to use, copy, modify, and distribute this software for any - purpose with or without fee is hereby granted, provided that the above - copyright notice and this permission notice appear in all copies. - - THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES - WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF - MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR - ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES - WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN - ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF - OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. - -*/ - - - -#ifndef DYNCALL_CALLVM_MIPS_H -#define DYNCALL_CALLVM_MIPS_H - -/* Suported ABIs: */ - -#include "dyncall_callvm_mips_o32.h" -#include "dyncall_callvm_mips_eabi.h" -#include "dyncall_callvm_mips_n64.h" - -#endif /* DYNCALL_CALLVM_MIPS_H */ - diff --git a/vendor/dyncall/linuxsteamrt64/include/dyncall/dyncall_callvm_mips_eabi.h b/vendor/dyncall/linuxsteamrt64/include/dyncall/dyncall_callvm_mips_eabi.h deleted file mode 100644 index 34641c239..000000000 --- a/vendor/dyncall/linuxsteamrt64/include/dyncall/dyncall_callvm_mips_eabi.h +++ /dev/null @@ -1,73 +0,0 @@ -/* - - Package: dyncall - Library: dyncall - File: dyncall/dyncall_callvm_mips_eabi.h - Description: - License: - - Copyright (c) 2007-2020 Daniel Adler <dadler@uni-goettingen.de>, - Tassilo Philipp <tphilipp@potion-studios.com> - - Permission to use, copy, modify, and distribute this software for any - purpose with or without fee is hereby granted, provided that the above - copyright notice and this permission notice appear in all copies. - - THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES - WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF - MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR - ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES - WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN - ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF - OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. - -*/ - - - -/* - - dyncall callvm for 32bit MIPS family of processors - - SUPPORTED CALLING CONVENTIONS - eabi - - REVISION - 2008/01/03 initial - -*/ - - -#ifndef DYNCALL_CALLVM_MIPS_EABI_H -#define DYNCALL_CALLVM_MIPS_EABI_H - -#include "dyncall_callvm.h" -#include "dyncall_vector.h" - - -/* Call-kernel register data: - - Details: - Two register content buffers for the corresponding register types - integer and float are filled from CallVM code and then later at - call-kernel loaded into the registers. - */ - -typedef struct -{ - DCint mIntData[8]; - DCfloat mSingleData[8]; -} DCRegData_mips_eabi; - - -typedef struct -{ - DCCallVM mInterface; - int mIntRegs; - int mSingleRegs; - DCRegData_mips_eabi mRegData; - DCVecHead mVecHead; -} DCCallVM_mips_eabi; - -#endif /* DYNCALL_CALLVM_MIPS_EABI_H */ - diff --git a/vendor/dyncall/linuxsteamrt64/include/dyncall/dyncall_callvm_mips_n32.h b/vendor/dyncall/linuxsteamrt64/include/dyncall/dyncall_callvm_mips_n32.h deleted file mode 100644 index 2d3f6e9e5..000000000 --- a/vendor/dyncall/linuxsteamrt64/include/dyncall/dyncall_callvm_mips_n32.h +++ /dev/null @@ -1,77 +0,0 @@ -/* - - Package: dyncall - Library: dyncall - File: dyncall/dyncall_callvm_mips_n32.h - Description: mips64 "n32" ABI callvm C interface. - License: - - Copyright (c) 2007-2020 Daniel Adler <dadler@uni-goettingen.de>, - Tassilo Philipp <tphilipp@potion-studios.com> - - Permission to use, copy, modify, and distribute this software for any - purpose with or without fee is hereby granted, provided that the above - copyright notice and this permission notice appear in all copies. - - THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES - WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF - MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR - ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES - WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN - ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF - OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. - -*/ - - - -#ifndef DYNCALL_CALLVM_MIPS_N32_H -#define DYNCALL_CALLVM_MIPS_N32_H - -#include "dyncall_callvm.h" -#include "dyncall_vector.h" - -#ifdef __cplusplus -extern "C" { -#endif - - -/* - two register-files for integer (promoted to 64-bit) and float (not promoted!) - are used. - - arguments are transfered in a free slot on the corresponding register file. - the other register-file will be skipped by one. - - float arguments are either loaded from single or double - - a auto-conversion into double and then loaded as double precision - turned out to fail for several tests. - - therefore a union for storage of float or double is used instead. - a bitmask (mUseDouble) records which type is used and will be - interpreted in the call-kernel. -*/ - -typedef struct -{ - DClonglong mIntData[8]; - union { DCfloat f; DCdouble d; } mFloatData[8]; - DClonglong mUseDouble; /* bitmask: lower 8 bits specify to use float or double from union array. */ -} DCRegData_mips_n32; - - -typedef struct -{ - DCCallVM mInterface; - DCint mRegCount; - DCRegData_mips_n32 mRegData; - DCVecHead mVecHead; -} DCCallVM_mips_n32; - - -#ifdef __cplusplus -} -#endif - -#endif /* DYNCALL_CALLVM_MIPS_N32_H */ - diff --git a/vendor/dyncall/linuxsteamrt64/include/dyncall/dyncall_callvm_mips_n64.h b/vendor/dyncall/linuxsteamrt64/include/dyncall/dyncall_callvm_mips_n64.h deleted file mode 100644 index f204744a6..000000000 --- a/vendor/dyncall/linuxsteamrt64/include/dyncall/dyncall_callvm_mips_n64.h +++ /dev/null @@ -1,79 +0,0 @@ -/* - - Package: dyncall - Library: dyncall - File: dyncall/dyncall_callvm_mips_n64.h - Description: mips "n64" ABI callvm C interface. - License: - - Copyright (c) 2007-2020 Daniel Adler <dadler@uni-goettingen.de>, - Tassilo Philipp <tphilipp@potion-studios.com> - - Permission to use, copy, modify, and distribute this software for any - purpose with or without fee is hereby granted, provided that the above - copyright notice and this permission notice appear in all copies. - - THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES - WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF - MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR - ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES - WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN - ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF - OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. - -*/ - - - -#ifndef DYNCALL_CALLVM_MIPS_N64_H -#define DYNCALL_CALLVM_MIPS_N64_H - -#include "dyncall_callvm.h" -#include "dyncall_vector.h" - -#ifdef __cplusplus -extern "C" { -#endif - - -/* - two register-files for integer (promoted to 64-bit) and float (not promoted!) - are used. - - arguments are transfered in a free slot on the corresponding register file. - the other register-file will be skipped by one. - - float arguments are either loaded from single or double - - a auto-conversion into double and then loaded as double precision - turned out to fail for several tests. - - therefore a union for storage of float or double is used instead. - a bitmask (mUseDouble) records which type is used and will be - interpreted in the call-kernel. -*/ - -typedef struct -{ - DClonglong mIntData[8]; -#if defined(DC__ABI_HARDFLOAT) - union { DCfloat f; DCdouble d; } mFloatData[8]; - DClonglong mUseDouble; /* bitmask: lower 8 bits specify to use float or double from union array. */ -#endif /* DC__ABI_HARDFLOAT */ -} DCRegData_mips_n64; - - -typedef struct -{ - DCCallVM mInterface; - DCint mRegCount; - DCRegData_mips_n64 mRegData; - DCVecHead mVecHead; -} DCCallVM_mips_n64; - - -#ifdef __cplusplus -} -#endif - -#endif /* DYNCALL_CALLVM_MIPS_N64_H */ - diff --git a/vendor/dyncall/linuxsteamrt64/include/dyncall/dyncall_callvm_mips_o32.h b/vendor/dyncall/linuxsteamrt64/include/dyncall/dyncall_callvm_mips_o32.h deleted file mode 100644 index 72f1b4b8f..000000000 --- a/vendor/dyncall/linuxsteamrt64/include/dyncall/dyncall_callvm_mips_o32.h +++ /dev/null @@ -1,74 +0,0 @@ -/* - - Package: dyncall - Library: dyncall - File: dyncall/dyncall_callvm_mips_o32.h - Description: mips "o32" ABI callvm C interface. - License: - - Copyright (c) 2007-2020 Daniel Adler <dadler@uni-goettingen.de>, - Tassilo Philipp <tphilipp@potion-studios.com> - - Permission to use, copy, modify, and distribute this software for any - purpose with or without fee is hereby granted, provided that the above - copyright notice and this permission notice appear in all copies. - - THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES - WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF - MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR - ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES - WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN - ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF - OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. - -*/ - - - -#ifndef DYNCALL_CALLVM_MIPS_O32_H -#define DYNCALL_CALLVM_MIPS_O32_H - -#include "dyncall_callvm.h" -#include "dyncall_vector.h" - - -/* Call-kernel register data: - - Details: - - The structure holds the argument data for transfering float/double arguments - via registers as well. - The call-kernel on hardfloat platforms implements loads two doubles, which - involves four 32-bit floating pointer registers. It's unused for softfloat - platforms. - - Float arguments map as following: - - float argument 0 is at u[0][0] for little, u[0][1] for big endian and - float argument 1 is at u[1][0] for little, u[1][1] for big endian of - DCRegData_mips_o32 union. - -*/ - -typedef struct -{ -#if defined(DC__ABI_HARDFLOAT) - union { - double d; - float f[2]; - } u[2]; -#endif /* DC__ABI_HARDFLOAT */ -} DCRegData_mips_o32; - - -typedef struct -{ - DCCallVM mInterface; - int mArgCount; - DCRegData_mips_o32 mRegData; - DCVecHead mVecHead; -} DCCallVM_mips_o32; - - -#endif /* DYNCALL_CALLVM_MIPS_O32_H */ - diff --git a/vendor/dyncall/linuxsteamrt64/include/dyncall/dyncall_callvm_ppc32.h b/vendor/dyncall/linuxsteamrt64/include/dyncall/dyncall_callvm_ppc32.h deleted file mode 100644 index cbcc409bc..000000000 --- a/vendor/dyncall/linuxsteamrt64/include/dyncall/dyncall_callvm_ppc32.h +++ /dev/null @@ -1,64 +0,0 @@ -/* - - Package: dyncall - Library: dyncall - File: dyncall/dyncall_callvm_ppc32.h - Description: - License: - - Copyright (c) 2007-2020 Daniel Adler <dadler@uni-goettingen.de>, - Tassilo Philipp <tphilipp@potion-studios.com> - - Permission to use, copy, modify, and distribute this software for any - purpose with or without fee is hereby granted, provided that the above - copyright notice and this permission notice appear in all copies. - - THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES - WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF - MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR - ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES - WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN - ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF - OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. - -*/ - - - -#ifndef DYNCALL_CALLVM_PPC32_H -#define DYNCALL_CALLVM_PPC32_H - -/* - - dyncall callvm for 32bit ppc architectures - - SUPPORTED CALLING CONVENTIONS - standard and ... (ellipsis) calls - - REVISION - 2007/12/11 initial - -*/ - - -#include "dyncall_callvm.h" -#include "dyncall_vector.h" - -typedef struct -{ - DCint mIntData[8]; - DCdouble mFloatData[13]; /* 13 for darwin, 8 for sysv */ -} DCRegData_ppc32; - - -typedef struct -{ - DCCallVM mInterface; - int mIntRegs; - int mFloatRegs; - DCRegData_ppc32 mRegData; - DCVecHead mVecHead; -} DCCallVM_ppc32; - -#endif /* DYNCALL_CALLVM_PPC32_H */ - diff --git a/vendor/dyncall/linuxsteamrt64/include/dyncall/dyncall_callvm_ppc64.h b/vendor/dyncall/linuxsteamrt64/include/dyncall/dyncall_callvm_ppc64.h deleted file mode 100644 index b90bb15cb..000000000 --- a/vendor/dyncall/linuxsteamrt64/include/dyncall/dyncall_callvm_ppc64.h +++ /dev/null @@ -1,64 +0,0 @@ -/* - - Package: dyncall - Library: dyncall - File: dyncall/dyncall_callvm_ppc64.h - Description: - License: - - Copyright (c) 2014-2015 Masanori Mitsugi <mitsugi@linux.vnet.ibm.com> - 2020 Tassilo Philipp <tphilipp@potion-studios.com> - - Permission to use, copy, modify, and distribute this software for any - purpose with or without fee is hereby granted, provided that the above - copyright notice and this permission notice appear in all copies. - - THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES - WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF - MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR - ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES - WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN - ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF - OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. - -*/ - - -#ifndef DYNCALL_CALLVM_PPC64_H -#define DYNCALL_CALLVM_PPC64_H - -/* - - dyncall callvm for 64bit ppc architectures - - SUPPORTED CALLING CONVENTIONS - standard and ... (ellipsis) calls - - REVISION - 2014/08/07 initial - -*/ - - -#include "dyncall_callvm.h" -#include "dyncall_vector.h" - - -typedef struct -{ - DClonglong mIntData[8]; - DCdouble mFloatData[13]; -} DCRegData_ppc64; - -typedef struct -{ - DCCallVM mInterface; - int mIntRegs; - int mFloatRegs; - DCRegData_ppc64 mRegData; - DCVecHead mVecHead; -} DCCallVM_ppc64; - - -#endif /* DYNCALL_CALLVM_PPC64_H */ - diff --git a/vendor/dyncall/linuxsteamrt64/include/dyncall/dyncall_callvm_sparc.h b/vendor/dyncall/linuxsteamrt64/include/dyncall/dyncall_callvm_sparc.h deleted file mode 100644 index 30913bab1..000000000 --- a/vendor/dyncall/linuxsteamrt64/include/dyncall/dyncall_callvm_sparc.h +++ /dev/null @@ -1,43 +0,0 @@ -/* - - Package: dyncall - Library: dyncall - File: dyncall/dyncall_callvm_sparc.h - Description: Call VM for sparc processor architecture. - License: - - Copyright (c) 2011-2020 Daniel Adler <dadler@uni-goettingen.de> - - Permission to use, copy, modify, and distribute this software for any - purpose with or without fee is hereby granted, provided that the above - copyright notice and this permission notice appear in all copies. - - THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES - WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF - MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR - ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES - WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN - ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF - OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. - -*/ - - - -#ifndef DYNCALL_CALLVM_SPARC_H -#define DYNCALL_CALLVM_SPARC_H - -#include "dyncall_callvm.h" -#include "dyncall_vector.h" - -/* NOTE: if something changes here, update offset marks in dyncall_call_sparc.S */ - -typedef struct DCCallVM_sparc_ DCCallVM_sparc; -struct DCCallVM_sparc_ -{ - DCCallVM mInterface; /* 8 bytes (vtable,errorid) */ - DCVecHead mVecHead; /* 8 bytes (max,size) */ -}; - -#endif /* DYNCALL_CALLVM_SPARC_H */ - diff --git a/vendor/dyncall/linuxsteamrt64/include/dyncall/dyncall_callvm_sparc64.h b/vendor/dyncall/linuxsteamrt64/include/dyncall/dyncall_callvm_sparc64.h deleted file mode 100644 index 9a484e04f..000000000 --- a/vendor/dyncall/linuxsteamrt64/include/dyncall/dyncall_callvm_sparc64.h +++ /dev/null @@ -1,42 +0,0 @@ -/* - - Package: dyncall - Library: dyncall - File: dyncall/dyncall_callvm_sparc64.h - Description: Call VM for sparc64 (v9) ABI. - License: - - Copyright (c) 2011-2018 Daniel Adler <dadler@uni-goettingen.de> - - Permission to use, copy, modify, and distribute this software for any - purpose with or without fee is hereby granted, provided that the above - copyright notice and this permission notice appear in all copies. - - THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES - WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF - MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR - ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES - WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN - ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF - OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. - -*/ - - - -#ifndef DYNCALL_CALLVM_SPARC_V9_H -#define DYNCALL_CALLVM_SPARC_V9_H - -#include "dyncall_callvm.h" -#include "dyncall_vector.h" - -typedef struct -{ - DCCallVM mInterface; /* 0: +12:8 = 16*/ - DCVecHead mVecHead; /* 16 152: mTotalSize +8 */ - /* 24 160: mSize +8 */ - /* 32 168: mData */ -} DCCallVM_v9; - -#endif /* DYNCALL_CALLVM_SPARC_V9_H */ - diff --git a/vendor/dyncall/linuxsteamrt64/include/dyncall/dyncall_callvm_x64.h b/vendor/dyncall/linuxsteamrt64/include/dyncall/dyncall_callvm_x64.h deleted file mode 100644 index cb3885fb9..000000000 --- a/vendor/dyncall/linuxsteamrt64/include/dyncall/dyncall_callvm_x64.h +++ /dev/null @@ -1,108 +0,0 @@ -/* - - Package: dyncall - Library: dyncall - File: dyncall/dyncall_callvm_x64.h - Description: - License: - - Copyright (c) 2007-2018 Daniel Adler <dadler@uni-goettingen.de>, - Tassilo Philipp <tphilipp@potion-studios.com> - - Permission to use, copy, modify, and distribute this software for any - purpose with or without fee is hereby granted, provided that the above - copyright notice and this permission notice appear in all copies. - - THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES - WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF - MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR - ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES - WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN - ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF - OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. - -*/ - - - -/* - - dyncall callvm for x64 architecture - - SUPPORTED CALLING CONVENTIONS - MS Windows x64 calling convention, AMD64 SystemV ABI - - REVISION - 2007/12/11 initial - -*/ - - -#ifndef DYNCALL_CALLVM_X64_H -#define DYNCALL_CALLVM_X64_H - -#include "dyncall_macros.h" -#include "dyncall_callvm.h" -#include "dyncall_vector.h" - - -#if defined(DC_WINDOWS) - -typedef long long int64; /* llp64 */ - -#define numIntRegs 4 -#define numFloatRegs 4 -#define DCRegCount_x64 DCRegCount_x64_u -#define DCRegData_x64 DCRegData_x64_u - -#elif defined(DC_UNIX) - -typedef long int64; /* lp64 */ - -#define numIntRegs 6 -#define numFloatRegs 8 -#define DCRegCount_x64 DCRegCount_x64_s -#define DCRegData_x64 DCRegData_x64_s - -#else - -#error Unsupported OS. - -#endif - -typedef union -{ - int i; - int f; -} DCRegCount_x64_u; - -typedef struct -{ - int i; - int f; -} DCRegCount_x64_s; - -typedef union -{ - int64 i[numIntRegs ]; - double f[numFloatRegs]; -} DCRegData_x64_u; - -typedef struct -{ - int64 i[numIntRegs ]; - double f[numFloatRegs]; -} DCRegData_x64_s; - - -typedef struct -{ - DCCallVM mInterface; /* This CallVM interface. */ - DCpointer mpCallFunc; /* Function to call. */ - DCRegCount_x64 mRegCount; /* Number of int/sse registers used for parameter passing. */ - DCRegData_x64 mRegData; /* Parameters to be passed via registers. */ - DCVecHead mVecHead; /* Parameters to be pushed onto stack. */ -} DCCallVM_x64; - -#endif /* DYNCALL_CALLVM_X64_H */ - diff --git a/vendor/dyncall/linuxsteamrt64/include/dyncall/dyncall_callvm_x86.h b/vendor/dyncall/linuxsteamrt64/include/dyncall/dyncall_callvm_x86.h deleted file mode 100644 index 41c3e84cb..000000000 --- a/vendor/dyncall/linuxsteamrt64/include/dyncall/dyncall_callvm_x86.h +++ /dev/null @@ -1,59 +0,0 @@ -/* - - Package: dyncall - Library: dyncall - File: dyncall/dyncall_callvm_x86.h - Description: Call virtual machine for x86 architecture header - License: - - Copyright (c) 2007-2018 Daniel Adler <dadler@uni-goettingen.de>, - Tassilo Philipp <tphilipp@potion-studios.com> - - Permission to use, copy, modify, and distribute this software for any - purpose with or without fee is hereby granted, provided that the above - copyright notice and this permission notice appear in all copies. - - THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES - WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF - MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR - ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES - WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN - ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF - OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. - -*/ - - - -#ifndef DYNCALL_CALLVM_X86_H -#define DYNCALL_CALLVM_X86_H - -/* - - dyncall callvm for 32bit X86 architectures - Copyright 2007 Daniel Adler. - - SUPPORTED CALLING CONVENTIONS - cdecl,stdcall,fastcall,thiscall,msthiscall - - REVISION - 2007/12/10 initial - -*/ - - -#include "dyncall_callvm.h" -#include "dyncall_vector.h" - -typedef struct DCCallVM_x86_ DCCallVM_x86; - -struct DCCallVM_x86_ -{ - DCCallVM mInterface; - DCpointer mpCallFunc; - int mIntRegs; /* used by fastcall implementation */ - DCVecHead mVecHead; -}; - -#endif /* DYNCALL_CALLVM_X86_H */ - diff --git a/vendor/dyncall/linuxsteamrt64/include/dyncall/dyncall_config.h b/vendor/dyncall/linuxsteamrt64/include/dyncall/dyncall_config.h deleted file mode 100644 index 3763f9fcc..000000000 --- a/vendor/dyncall/linuxsteamrt64/include/dyncall/dyncall_config.h +++ /dev/null @@ -1,47 +0,0 @@ -/* - - Package: dyncall - Library: dyncall - File: dyncall/dyncall_config.h - Description: Macro configuration file for non-standard C types - License: - - Copyright (c) 2007-2018 Daniel Adler <dadler@uni-goettingen.de>, - Tassilo Philipp <tphilipp@potion-studios.com> - - Permission to use, copy, modify, and distribute this software for any - purpose with or without fee is hereby granted, provided that the above - copyright notice and this permission notice appear in all copies. - - THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES - WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF - MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR - ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES - WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN - ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF - OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. - -*/ - - - -/* - - dyncall type configuration - - REVISION - 2007/12/11 initial - -*/ - -#ifndef DYNCALL_CONFIG_H -#define DYNCALL_CONFIG_H - -#include "dyncall_macros.h" - -#define DC_BOOL int -#define DC_LONG_LONG long long -#define DC_POINTER void* - -#endif /* DYNCALL_CONFIG_H */ - diff --git a/vendor/dyncall/linuxsteamrt64/include/dyncall/dyncall_macros.h b/vendor/dyncall/linuxsteamrt64/include/dyncall/dyncall_macros.h deleted file mode 100644 index 0055e47f9..000000000 --- a/vendor/dyncall/linuxsteamrt64/include/dyncall/dyncall_macros.h +++ /dev/null @@ -1,301 +0,0 @@ -/* - - Package: dyncall - Library: dyncall - File: dyncall/dyncall_macros.h - Description: Platform detection macros - License: - - Copyright (c) 2007-2018 Daniel Adler <dadler@uni-goettingen.de>, - Tassilo Philipp <tphilipp@potion-studios.com> - - Permission to use, copy, modify, and distribute this software for any - purpose with or without fee is hereby granted, provided that the above - copyright notice and this permission notice appear in all copies. - - THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES - WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF - MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR - ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES - WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN - ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF - OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. - -*/ - - - -/* - - dyncall macros - - Platform detection, specific defines and configuration. - The purpose of this file is to provide coherent platform and compiler - specific defines. So instead of defines like WIN32, _OpenBSD_ or - __GNUC__, one should use DC__OS_Win32, DC__OS_OpenBSD or DC__C_GNU, - respectively. - - REVISION - 2007/12/11 initial - -*/ - - -#ifndef DYNCALL_MACROS_H -#define DYNCALL_MACROS_H - - -/* Platform specific defines. */ - -/* MS Windows XP x64/Vista64 or later. */ -#if defined(WIN64) || defined(_WIN64) || defined(__WIN64__) -#define DC__OS_Win64 - -/* MS Windows NT/95/98/ME/2000/XP/Vista32. */ -#elif defined(WIN32) || defined(_WIN32) || defined(__WIN32__) || defined(__NT__) || defined(__WINDOWS__) || defined(_WINDOWS) -#define DC__OS_Win32 - -/* All the OS' based on Darwin OS (MacOS X, OpenDarwin). Note that '__APPLE__' may be defined for classic MacOS, too. */ -/* __MACOSX__ is not defined in gcc assembler mode (switch: -S) */ -/* @@@ TODO: Check for Classic OS */ - -#elif defined(__APPLE__) || defined(__Darwin__) -# define DC__OS_Darwin -# if defined(__ENVIRONMENT_IPHONE_OS_VERSION_MIN_REQUIRED__) -# define DC__OS_IPhone -# else /* defined(__ENVIRONMENT_MAC_OS_X_VERSION_MIN_REQUIRED__) */ -# define DC__OS_MacOSX -# endif - -/* The most popular open source Unix-like OS - Linux. */ -#elif defined(__linux__) || defined(__linux) || defined(__gnu_linux__) -#define DC__OS_Linux - -/* The most powerful open source Unix-like OS - FreeBSD. */ -#elif defined(__FreeBSD__) || defined(__FreeBSD_kernel__) /* latter is (also) used by systems using FreeBSD kernel, e.g. Debian/kFreeBSD, which could be detected specifically by also checking for __GLIBC__ */ -#define DC__OS_FreeBSD - -/* The most secure open source Unix-like OS - OpenBSD. */ -#elif defined(__OpenBSD__) -#define DC__OS_OpenBSD - -/* The most portable open source Unix-like OS - NetBSD. */ -#elif defined(__NetBSD__) -#define DC__OS_NetBSD - -/* The FreeBSD fork having heavy clusterization in mind - DragonFlyBSD. */ -#elif defined(__DragonFly__) -#define DC__OS_DragonFlyBSD - -/* Sun's Unix-like OS - SunOS / Solaris. */ -#elif defined(__sun__) || defined(__sun) || defined(sun) -#define DC__OS_SunOS - -/* The "Linux-like environment for Windows" - Cygwin. */ -#elif defined(__CYGWIN__) -#define DC__OS_Cygwin - -/* The "Minimalist GNU for Windows" - MinGW. */ -#elif defined(__MINGW__)/*@@@*/ -#define DC__OS_MinGW - -/* The Nintendo DS (homebrew) using devkitpro. */ -#elif defined(__nds__) -#define DC__OS_NDS - -/* The PlayStation Portable (homebrew) SDK. */ -#elif defined(__psp__) || defined(PSP) -#define DC__OS_PSP - -/* Haiku (BeOS alike). */ -#elif defined(__HAIKU__) -#define DC__OS_BeOS - -/* The Unix successor - Plan9 from Bell Labs */ -#elif defined(Plan9) || defined(__Plan9__) -#define DC__OS_Plan9 - -/* Digital's Unix-like OS - VMS */ -#elif defined(__vms) -#define DC__OS_VMS - -#elif defined(__minix) -#define DC__OS_Minix - -#else - -/* Unable to determine OS, which is probably ok (e.g. baremetal stuff, etc.). */ -#define DC__OS_UNKNOWN -#endif - - - -/* Compiler specific defines. Do not change the order, because */ -/* some of the compilers define flags for compatible ones, too. */ - -/* Intel's C/C++ compiler. */ -#if defined(__INTEL_COMPILER) -#define DC__C_Intel - -/* MS C/C++ compiler. */ -#elif defined(_MSC_VER) -#define DC__C_MSVC - -/* LLVM clang. */ -#elif defined(__clang__) || defined(__llvm__) -#define DC__C_CLANG - -/* The GNU Compiler Collection - GCC. */ -#elif defined(__GNUC__) -#define DC__C_GNU - -/* Watcom compiler. */ -#elif defined(__WATCOMC__) -#define DC__C_WATCOM - -/* Portable C Compiler. */ -#elif defined(__PCC__) -#define DC__C_PCC - -/* Sun Pro C. */ -#elif defined(__SUNPRO_C) -#define DC__C_SUNPRO - -/* Undetected C Compiler. */ -#else -#define DC__C_UNKNOWN -#endif - - - -/* Architecture. */ - -/* Check architecture. */ -#if defined(_M_X64_) || defined(_M_AMD64) || defined(__amd64__) || defined(__amd64) || defined(__x86_64__) || defined(__x86_64) -# define DC__Arch_AMD64 -#elif defined(_M_IX86) || defined(__i386__) || defined(__i486__) || defined(__i586__) || defined(__i686__) || defined(__386__) || defined(__i386) -# define DC__Arch_Intel_x86 -#elif defined(_M_IA64) || defined(__ia64__) -# define DC__Arch_Itanium -#elif defined(_M_PPC) || defined(__powerpc__) || defined(__powerpc) || defined(__POWERPC__) || defined(__ppc__) || defined(__power__) -# if defined(__ppc64__) || defined(_ARCH_PPC64) || defined(__power64__) || defined(__powerpc64__) -# define DC__Arch_PPC64 -# else -# define DC__Arch_PPC32 -# endif -#elif defined(__mips64__) || defined(__mips64) -# define DC__Arch_MIPS64 -#elif defined(_M_MRX000) || defined(__mips__) || defined(__mips) || defined(_mips) -# define DC__Arch_MIPS -#elif defined(__arm__) -# define DC__Arch_ARM -#elif defined(__aarch64__) || defined(__arm64) || defined(__arm64__) -# define DC__Arch_ARM64 -#elif defined(__sh__) -# define DC__Arch_SuperH -#elif defined(__sparc) || defined(__sparc__) -# if defined(__sparcv9) || defined(__sparc_v9__) || defined(__sparc64__) || defined(__arch64__) -# define DC__Arch_Sparc64 -# else -# define DC__Arch_Sparc -# endif -#endif - - - -/* Rough OS classification. */ - -#if defined(DC__OS_Win32) || defined(DC__OS_Win64) -# define DC_WINDOWS -#elif defined(DC__OS_Plan9) -# define DC_PLAN9 -#elif defined(DC__OS_NDS) || defined(DC__OS_PSP) -# define DC_OTHER -#else -# define DC_UNIX -#endif - - - -/* Misc machine-dependent modes, ABIs, etc.. */ - -#if defined(__arm__) && !defined(__thumb__) -# define DC__Arch_ARM_ARM -#elif defined(__arm__) && defined(__thumb__) -# define DC__Arch_ARM_THUMB -#endif - -#if defined(DC__Arch_ARM_ARM) || defined(DC__Arch_ARM_THUMB) -# if defined(__ARM_EABI__) || defined(DC__OS_NDS) -# if defined (__ARM_PCS_VFP) && (__ARM_PCS_VFP == 1) -# define DC__ABI_ARM_HF -# else -# define DC__ABI_ARM_EABI -# endif -# elif defined(__APCS_32__) -# define DC__ABI_ARM_OABI -# endif -#endif /* ARM */ - -#if defined(DC__Arch_MIPS) || defined(DC__Arch_MIPS64) -# if defined(_ABIO32) || defined(__mips_o32) || defined(_MIPS_ARCH_MIPS1) || defined(_MIPS_ARCH_MIPS2) -# define DC__ABI_MIPS_O32 -# elif defined(_ABI64) || defined(__mips_n64) -# define DC__ABI_MIPS_N64 -# elif defined(_ABIN32) -# define DC__ABI_MIPS_N32 -# else -# define DC__ABI_MIPS_EABI -# endif -/* Set extra flag to know if FP hardware ABI, default to yes, if unsure */ -# if (defined(__mips_hard_float) && (__mips_hard_float == 1)) || !defined(__mips_soft_float) || (__mips_soft_float != 1) -# define DC__ABI_HARDFLOAT /* @@@ make this general for all archs? */ -# else -# define DC__ABI_SOFTFLOAT -# endif -#endif /* MIPS */ - -#if defined(DC__Arch_PPC64) -# if defined(_CALL_ELF) -# define DC__ABI_PPC64_ELF_V _CALL_ELF -# else -# define DC__ABI_PPC64_ELF_V 0 /* 0 means not explicitly set, otherwise this is 1 (big endian) and 2 (little endian) */ -# endif -#endif /* PPC64 */ - - -/* Endian detection. */ -#if defined(DC__Arch_Intel_x86) || defined(DC__Arch_AMD64) /* always little */ -# define DC__Endian_LITTLE -#elif defined(DC__Arch_Sparc) /* always purely big until v9 */ -# define DC__Endian_BIG -#else /* all others are bi-endian */ -/* @@@check flags used on following bi-endianness archs: -DC__Arch_Itanium -DC__Arch_PPC32 -DC__Arch_PPC64 -DC__Arch_SuperH -*/ -# if (defined(DC__Arch_PPC64) && (DC__ABI_PPC64_ELF_V == 1)) || defined(_BIG_ENDIAN) || defined(__BIG_ENDIAN__) || defined(MIPSEB) || defined(_MIPSEB) || defined(__MIPSEB) || defined(__MIPSEB__) || defined(__ARMEB__) || defined(__AARCH64EB__) -# define DC__Endian_BIG -# elif (defined(DC__Arch_PPC64) && (DC__ABI_PPC64_ELF_V == 2)) || defined(_LITTLE_ENDIAN) || defined(__LITTLE_ENDIAN__) || defined(MIPSEL) || defined(_MIPSEL) || defined(__MIPSEL) || defined(__MIPSEL__) || defined(__ARMEL__) || defined(__AARCH64EL__) -# define DC__Endian_LITTLE -# elif defined(DC__Arch_Sparc64) && !defined(__BYTE_ORDER__) /* Sparc64 default is big-endian, except if explicitly defined */ -# define DC__Endian_BIG -# elif defined(__BYTE_ORDER__) /* explicitly set */ -# if defined(__ORDER_BIG_ENDIAN__) && (__BYTE_ORDER__ == __ORDER_BIG_ENDIAN__) -# define DC__Endian_BIG -# elif defined(__ORDER_LITTLE_ENDIAN__) && (__BYTE_ORDER__ == __ORDER_LITTLE_ENDIAN__) -# define DC__Endian_LITTLE -# endif -# endif /* no else, leave unset if not sure */ -#endif - - -/* Internal macro/tag. */ -#if !defined(DC_API) -# define DC_API -#endif - -#endif /* DYNCALL_MACROS_H */ - diff --git a/vendor/dyncall/linuxsteamrt64/include/dyncall/dyncall_signature.h b/vendor/dyncall/linuxsteamrt64/include/dyncall/dyncall_signature.h deleted file mode 100644 index 5d1033b45..000000000 --- a/vendor/dyncall/linuxsteamrt64/include/dyncall/dyncall_signature.h +++ /dev/null @@ -1,79 +0,0 @@ -/* - - Package: dyncall - Library: dyncall - File: dyncall/dyncall_signature.h - Description: Type and calling-convention signature character defines - License: - - Copyright (c) 2007-2020 Daniel Adler <dadler@uni-goettingen.de>, - Tassilo Philipp <tphilipp@potion-studios.com> - - Permission to use, copy, modify, and distribute this software for any - purpose with or without fee is hereby granted, provided that the above - copyright notice and this permission notice appear in all copies. - - THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES - WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF - MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR - ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES - WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN - ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF - OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. - -*/ - - - -/* - - dyncall signature characters - - REVISION - 2007/12/11 initial - -*/ - - -#ifndef DYNCALL_SIGNATURE_H -#define DYNCALL_SIGNATURE_H - -typedef char DCsigchar; - -#define DC_SIGCHAR_VOID 'v' -#define DC_SIGCHAR_BOOL 'B' -#define DC_SIGCHAR_CHAR 'c' -#define DC_SIGCHAR_UCHAR 'C' -#define DC_SIGCHAR_SHORT 's' -#define DC_SIGCHAR_USHORT 'S' -#define DC_SIGCHAR_INT 'i' -#define DC_SIGCHAR_UINT 'I' -#define DC_SIGCHAR_LONG 'j' -#define DC_SIGCHAR_ULONG 'J' -#define DC_SIGCHAR_LONGLONG 'l' -#define DC_SIGCHAR_ULONGLONG 'L' -#define DC_SIGCHAR_FLOAT 'f' -#define DC_SIGCHAR_DOUBLE 'd' -#define DC_SIGCHAR_POINTER 'p' -#define DC_SIGCHAR_STRING 'Z' -#define DC_SIGCHAR_STRUCT 'T' -#define DC_SIGCHAR_ENDARG ')' /* also works for end struct */ - -/* calling convention / mode signatures */ - -#define DC_SIGCHAR_CC_PREFIX '_' -#define DC_SIGCHAR_CC_DEFAULT ':' -#define DC_SIGCHAR_CC_ELLIPSIS 'e' -#define DC_SIGCHAR_CC_ELLIPSIS_VARARGS '.' -#define DC_SIGCHAR_CC_CDECL 'c' -#define DC_SIGCHAR_CC_STDCALL 's' -#define DC_SIGCHAR_CC_FASTCALL_MS 'F' -#define DC_SIGCHAR_CC_FASTCALL_GNU 'f' -#define DC_SIGCHAR_CC_THISCALL_MS '+' -#define DC_SIGCHAR_CC_THISCALL_GNU '#' /* GNU thiscalls are cdecl, but keep specific sig char for clarity */ -#define DC_SIGCHAR_CC_ARM_ARM 'A' -#define DC_SIGCHAR_CC_ARM_THUMB 'a' -#define DC_SIGCHAR_CC_SYSCALL '$' - -#endif /* DYNCALL_SIGNATURE_H */ - diff --git a/vendor/dyncall/linuxsteamrt64/include/dyncall/dyncall_struct.h b/vendor/dyncall/linuxsteamrt64/include/dyncall/dyncall_struct.h deleted file mode 100644 index c9f548289..000000000 --- a/vendor/dyncall/linuxsteamrt64/include/dyncall/dyncall_struct.h +++ /dev/null @@ -1,70 +0,0 @@ -/* - - Package: dyncall - Library: dyncall - File: dyncall/dyncall_struct.h - Description: C interface to compute struct size - License: - - Copyright (c) 2010-2015 Olivier Chafik <olivier.chafik@centraliens.net> - - Permission to use, copy, modify, and distribute this software for any - purpose with or without fee is hereby granted, provided that the above - copyright notice and this permission notice appear in all copies. - - THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES - WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF - MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR - ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES - WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN - ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF - OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. - -*/ - - - -/* - - dyncall struct metadata structures - - REVISION - 2007/12/11 initial - -*/ - -#ifndef DYNCALL_STRUCT_H -#define DYNCALL_STRUCT_H - -#include "dyncall.h" - -#ifdef __cplusplus -extern "C" { -#endif - -typedef struct DCfield_ { - DCsize offset, size, alignment, arrayLength; - DCint type; - DCstruct* pSubStruct; -} DCfield; - -struct DCstruct_ { - DCfield *pFields; - DCsize size, alignment, fieldCount; - - /* struct building uses a state machine. */ - DCint nextField; /* == -1 if struct is closed */ - DCstruct *pCurrentStruct, *pLastStruct; /* == this, unless we're in a sub struct */ -}; - - -/* Helper. */ -void dcArgStructUnroll(DCCallVM* vm, DCstruct* s, DCpointer value); - - -#ifdef __cplusplus -} -#endif - -#endif /* DYNCALL_H */ - diff --git a/vendor/dyncall/linuxsteamrt64/include/dyncall/dyncall_types.h b/vendor/dyncall/linuxsteamrt64/include/dyncall/dyncall_types.h deleted file mode 100644 index 5d2a89ba3..000000000 --- a/vendor/dyncall/linuxsteamrt64/include/dyncall/dyncall_types.h +++ /dev/null @@ -1,74 +0,0 @@ -/* - - Package: dyncall - Library: dyncall - File: dyncall/dyncall_types.h - Description: Typedefs - License: - - Copyright (c) 2007-2018 Daniel Adler <dadler@uni-goettingen.de>, - Tassilo Philipp <tphilipp@potion-studios.com> - - Permission to use, copy, modify, and distribute this software for any - purpose with or without fee is hereby granted, provided that the above - copyright notice and this permission notice appear in all copies. - - THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES - WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF - MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR - ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES - WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN - ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF - OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. - -*/ - - - -/* - - dyncall argument- and return-types - - REVISION - 2007/12/11 initial - -*/ - -#ifndef DYNCALL_TYPES_H -#define DYNCALL_TYPES_H - -#include <stddef.h> - -#include "dyncall_config.h" - -#ifdef __cplusplus -extern "C" { -#endif - -typedef void DCvoid; -typedef DC_BOOL DCbool; -typedef char DCchar; -typedef unsigned char DCuchar; -typedef short DCshort; -typedef unsigned short DCushort; -typedef int DCint; -typedef unsigned int DCuint; -typedef long DClong; -typedef unsigned long DCulong; -typedef DC_LONG_LONG DClonglong; -typedef unsigned DC_LONG_LONG DCulonglong; -typedef float DCfloat; -typedef double DCdouble; -typedef DC_POINTER DCpointer; -typedef const char* DCstring; -typedef size_t DCsize; - -#define DC_TRUE 1 -#define DC_FALSE 0 - -#ifdef __cplusplus -} -#endif - -#endif /* DYNCALL_TYPES_H */ - diff --git a/vendor/dyncall/linuxsteamrt64/include/dyncall/dyncall_utils.h b/vendor/dyncall/linuxsteamrt64/include/dyncall/dyncall_utils.h deleted file mode 100644 index 5f7e105b0..000000000 --- a/vendor/dyncall/linuxsteamrt64/include/dyncall/dyncall_utils.h +++ /dev/null @@ -1,39 +0,0 @@ -/* - - Package: dyncall - Library: dyncall - File: dyncall/dyncall_utils.h - Description: Type and calling-convention signature character defines - License: - - Copyright (c) 2007-2018 Daniel Adler <dadler@uni-goettingen.de>, - Tassilo Philipp <tphilipp@potion-studios.com> - - Permission to use, copy, modify, and distribute this software for any - purpose with or without fee is hereby granted, provided that the above - copyright notice and this permission notice appear in all copies. - - THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES - WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF - MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR - ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES - WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN - ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF - OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. - -*/ - - - - -#ifndef DYNCALL_UTILS_H -#define DYNCALL_UTILS_H - -/* C portable macros. */ - -#ifndef DC_MAX -#define DC_MAX(a,b) ((a)>=(b))?(a):(b) -#endif - -#endif /* DYNCALL_UTILS_H */ - diff --git a/vendor/dyncall/linuxsteamrt64/include/dyncall/dyncall_value.h b/vendor/dyncall/linuxsteamrt64/include/dyncall/dyncall_value.h deleted file mode 100644 index 6785b4cc6..000000000 --- a/vendor/dyncall/linuxsteamrt64/include/dyncall/dyncall_value.h +++ /dev/null @@ -1,98 +0,0 @@ -/* - - Package: dyncall - Library: dyncall - File: dyncall/dyncall_value.h - Description: Value variant type - License: - - Copyright (c) 2007-2018 Daniel Adler <dadler@uni-goettingen.de>, - Tassilo Philipp <tphilipp@potion-studios.com> - - Permission to use, copy, modify, and distribute this software for any - purpose with or without fee is hereby granted, provided that the above - copyright notice and this permission notice appear in all copies. - - THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES - WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF - MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR - ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES - WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN - ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF - OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. - -*/ - - -/* - - dyncall value variant - - a value variant union-type that carries all supported dyncall types. - - REVISION - 2007/12/11 initial - -*/ - -#ifndef DYNCALL_VALUE_H -#define DYNCALL_VALUE_H - -#include "dyncall_types.h" - -#ifdef __cplusplus -extern "C" { -#endif - -typedef union DCValue_ DCValue; - -union DCValue_ -{ -/* dyncallback assembly pulls value directly from DCValue structs, without */ -/* knowledge about types used, so lay it out as needed at compile time, here */ -#if defined(DC__Endian_BIG) && (defined(DC__Arch_PPC32) || defined(DC__Arch_MIPS) || defined(DC__Arch_Sparc)) - DCbool B; - struct { DCchar c_pad[3]; DCchar c; }; - struct { DCuchar C_pad[3]; DCuchar C; }; - struct { DCshort s_pad; DCshort s; }; - struct { DCshort S_pad; DCshort S; }; - DCint i; - DCuint I; -#elif defined(DC__Endian_BIG) && (defined(DC__Arch_PPC64) || defined(DC__Arch_MIPS64) || defined(DC__Arch_Sparc64)) - struct { DCbool B_pad; DCbool B; }; - struct { DCchar c_pad[7]; DCchar c; }; - struct { DCuchar C_pad[7]; DCuchar C; }; - struct { DCshort s_pad[3]; DCshort s; }; - struct { DCshort S_pad[3]; DCshort S; }; - struct { DCint i_pad; DCint i; }; - struct { DCint I_pad; DCuint I; }; -#else - DCbool B; - DCchar c; - DCuchar C; - DCshort s; - DCushort S; - DCint i; - DCuint I; -#endif - DClong j; - DCulong J; - DClonglong l; - DCulonglong L; -/* floats on mips are right justified in fp-registers on big endian targets, as they aren't promoted */ -#if defined(DC__Endian_BIG) && (defined(DC__Arch_MIPS) || defined(DC__Arch_MIPS64)) - struct { DCfloat f_pad; DCfloat f; }; -#else - DCfloat f; -#endif - DCdouble d; - DCpointer p; - DCstring Z; -}; - -#ifdef __cplusplus -} -#endif - -#endif /* DYNCALL_VALUE_H */ - diff --git a/vendor/dyncall/linuxsteamrt64/include/dyncall/dyncall_vector.h b/vendor/dyncall/linuxsteamrt64/include/dyncall/dyncall_vector.h deleted file mode 100644 index 924c4d7e0..000000000 --- a/vendor/dyncall/linuxsteamrt64/include/dyncall/dyncall_vector.h +++ /dev/null @@ -1,58 +0,0 @@ -/* - - Package: dyncall - Library: dyncall - File: dyncall/dyncall_vector.h - Description: Simple dynamic vector container type header - License: - - Copyright (c) 2007-2018 Daniel Adler <dadler@uni-goettingen.de>, - Tassilo Philipp <tphilipp@potion-studios.com> - - Permission to use, copy, modify, and distribute this software for any - purpose with or without fee is hereby granted, provided that the above - copyright notice and this permission notice appear in all copies. - - THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES - WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF - MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR - ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES - WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN - ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF - OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. - -*/ - - - -#ifndef DC_VECTOR_H -#define DC_VECTOR_H - -#include "dyncall_types.h" - -typedef struct -{ - DCsize mTotal; - DCsize mSize; -} DCVecHead; - -#define DC_SIZEOF_DCVector(size) (sizeof(DCVecHead)+size) - -#define dcVecInit(p,size) (p)->mTotal=size;(p)->mSize=0 -#define dcVecReset(p) (p)->mSize=0 -#define dcVecResize(p,size) (p)->mSize=(size) -#define dcVecSkip(p,size) (p)->mSize+=(size) -#define dcVecData(p) ( (unsigned char*) (((DCVecHead*)(p))+1) ) -#define dcVecAt(p,index) ( dcVecData(p)+index ) -#define dcVecSize(p) ( (p)->mSize ) -#define dcVecAlign(p,align) (p)->mSize=( (p)->mSize + align-1 ) & -align - -/* -#include <string.h> - #define dcVecAppend(p,s,n) memcpy( dcVecData(p)+p->mSize, s, n );p->mSize+=n -*/ - -void dcVecAppend(DCVecHead* pHead, const void* source, size_t length); - -#endif /* DC_VECTOR_H */ - diff --git a/vendor/dyncall/linuxsteamrt64/lib/libdyncall_s.a b/vendor/dyncall/linuxsteamrt64/lib/libdyncall_s.a deleted file mode 100644 index ba3ab0e3f5dfcb91202a2a3fc458a1ebba8aeaa4..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 39450 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 UZIm^1zx~Y||7zPaoooO91>q*f3IG5A diff --git a/vendor/dyncall/win64/include/dyncall/dyncall.h b/vendor/dyncall/win64/include/dyncall/dyncall.h deleted file mode 100644 index 214be0eca..000000000 --- a/vendor/dyncall/win64/include/dyncall/dyncall.h +++ /dev/null @@ -1,151 +0,0 @@ -/* - - Package: dyncall - Library: dyncall - File: dyncall/dyncall.h - Description: public header for library dyncall - License: - - Copyright (c) 2007-2020 Daniel Adler <dadler@uni-goettingen.de>, - Tassilo Philipp <tphilipp@potion-studios.com> - - Permission to use, copy, modify, and distribute this software for any - purpose with or without fee is hereby granted, provided that the above - copyright notice and this permission notice appear in all copies. - - THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES - WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF - MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR - ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES - WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN - ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF - OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. - -*/ - - -/* - - dyncall C API - - REVISION - 2015/07/08 added SYS_PPC64 system call - 2015/01/16 added SYS_PPC32 system call - 2007/12/11 initial - -*/ - -#ifndef DYNCALL_H -#define DYNCALL_H - -#include "dyncall_types.h" -#include "dyncall_signature.h" - -#ifdef __cplusplus -extern "C" { -#endif - -typedef struct DCCallVM_ DCCallVM; -typedef struct DCstruct_ DCstruct; - -/* Supported Calling Convention Modes */ - -#define DC_CALL_C_DEFAULT 0 -#define DC_CALL_C_ELLIPSIS 100 -#define DC_CALL_C_ELLIPSIS_VARARGS 101 -#define DC_CALL_C_X86_CDECL 1 -#define DC_CALL_C_X86_WIN32_STD 2 -#define DC_CALL_C_X86_WIN32_FAST_MS 3 -#define DC_CALL_C_X86_WIN32_FAST_GNU 4 -#define DC_CALL_C_X86_WIN32_THIS_MS 5 -#define DC_CALL_C_X86_WIN32_THIS_GNU DC_CALL_C_X86_CDECL /* alias - identical to cdecl (w/ this-ptr as 1st arg) */ -#define DC_CALL_C_X64_WIN64 7 -#define DC_CALL_C_X64_SYSV 8 -#define DC_CALL_C_PPC32_DARWIN 9 -#define DC_CALL_C_PPC32_OSX DC_CALL_C_PPC32_DARWIN /* alias */ -#define DC_CALL_C_ARM_ARM_EABI 10 -#define DC_CALL_C_ARM_THUMB_EABI 11 -#define DC_CALL_C_ARM_ARMHF 30 -#define DC_CALL_C_MIPS32_EABI 12 -#define DC_CALL_C_MIPS32_PSPSDK DC_CALL_C_MIPS32_EABI /* alias - deprecated. */ -#define DC_CALL_C_PPC32_SYSV 13 -#define DC_CALL_C_PPC32_LINUX DC_CALL_C_PPC32_SYSV /* alias */ -#define DC_CALL_C_ARM_ARM 14 -#define DC_CALL_C_ARM_THUMB 15 -#define DC_CALL_C_MIPS32_O32 16 -#define DC_CALL_C_MIPS64_N32 17 -#define DC_CALL_C_MIPS64_N64 18 -#define DC_CALL_C_X86_PLAN9 19 -#define DC_CALL_C_SPARC32 20 -#define DC_CALL_C_SPARC64 21 -#define DC_CALL_C_ARM64 22 -#define DC_CALL_C_PPC64 23 -#define DC_CALL_C_PPC64_LINUX DC_CALL_C_PPC64 /* alias */ -#define DC_CALL_SYS_DEFAULT 200 -#define DC_CALL_SYS_X86_INT80H_LINUX 201 -#define DC_CALL_SYS_X86_INT80H_BSD 202 -#define DC_CALL_SYS_X64_SYSCALL_SYSV 204 -#define DC_CALL_SYS_PPC32 210 -#define DC_CALL_SYS_PPC64 211 - -/* Error codes. */ - -#define DC_ERROR_NONE 0 -#define DC_ERROR_UNSUPPORTED_MODE -1 - -DC_API DCCallVM* dcNewCallVM (DCsize size); -DC_API void dcFree (DCCallVM* vm); -DC_API void dcReset (DCCallVM* vm); - -DC_API void dcMode (DCCallVM* vm, DCint mode); - -DC_API void dcArgBool (DCCallVM* vm, DCbool value); -DC_API void dcArgChar (DCCallVM* vm, DCchar value); -DC_API void dcArgShort (DCCallVM* vm, DCshort value); -DC_API void dcArgInt (DCCallVM* vm, DCint value); -DC_API void dcArgLong (DCCallVM* vm, DClong value); -DC_API void dcArgLongLong (DCCallVM* vm, DClonglong value); -DC_API void dcArgFloat (DCCallVM* vm, DCfloat value); -DC_API void dcArgDouble (DCCallVM* vm, DCdouble value); -DC_API void dcArgPointer (DCCallVM* vm, DCpointer value); -DC_API void dcArgStruct (DCCallVM* vm, DCstruct* s, DCpointer value); - -DC_API void dcCallVoid (DCCallVM* vm, DCpointer funcptr); -DC_API DCbool dcCallBool (DCCallVM* vm, DCpointer funcptr); -DC_API DCchar dcCallChar (DCCallVM* vm, DCpointer funcptr); -DC_API DCshort dcCallShort (DCCallVM* vm, DCpointer funcptr); -DC_API DCint dcCallInt (DCCallVM* vm, DCpointer funcptr); -DC_API DClong dcCallLong (DCCallVM* vm, DCpointer funcptr); -DC_API DClonglong dcCallLongLong (DCCallVM* vm, DCpointer funcptr); -DC_API DCfloat dcCallFloat (DCCallVM* vm, DCpointer funcptr); -DC_API DCdouble dcCallDouble (DCCallVM* vm, DCpointer funcptr); -DC_API DCpointer dcCallPointer (DCCallVM* vm, DCpointer funcptr); -DC_API void dcCallStruct (DCCallVM* vm, DCpointer funcptr, DCstruct* s, DCpointer returnValue); - -DC_API DCint dcGetError (DCCallVM* vm); - -#define DEFAULT_ALIGNMENT 0 -DC_API DCstruct* dcNewStruct (DCsize fieldCount, DCint alignment); -DC_API void dcStructField (DCstruct* s, DCint type, DCint alignment, DCsize arrayLength); -DC_API void dcSubStruct (DCstruct* s, DCsize fieldCount, DCint alignment, DCsize arrayLength); -/* Each dcNewStruct or dcSubStruct call must be paired with a dcCloseStruct. */ -DC_API void dcCloseStruct (DCstruct* s); -DC_API DCsize dcStructSize (DCstruct* s); -DC_API DCsize dcStructAlignment(DCstruct* s); -DC_API void dcFreeStruct (DCstruct* s); - -DC_API DCstruct* dcDefineStruct (const char* signature); - - -/* helpers */ - -/* returns respective mode for callconv sig char (w/o checking if mode exists */ -/* on current platform), or DC_ERROR_UNSUPPORTED_MODE if char isn't a sigchar */ -DC_API DCint dcGetModeFromCCSigChar(DCsigchar sig_char); - -#ifdef __cplusplus -} -#endif - -#endif /* DYNCALL_H */ - diff --git a/vendor/dyncall/win64/include/dyncall/dyncall_alloc.h b/vendor/dyncall/win64/include/dyncall/dyncall_alloc.h deleted file mode 100644 index 4b4322599..000000000 --- a/vendor/dyncall/win64/include/dyncall/dyncall_alloc.h +++ /dev/null @@ -1,41 +0,0 @@ -/* - - Package: dyncall - Library: dyncall - File: dyncall/dyncall_alloc.h - Description: heap memory management interface (header only) - License: - - Copyright (c) 2007-2018 Daniel Adler <dadler@uni-goettingen.de>, - Tassilo Philipp <tphilipp@potion-studios.com> - - Permission to use, copy, modify, and distribute this software for any - purpose with or without fee is hereby granted, provided that the above - copyright notice and this permission notice appear in all copies. - - THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES - WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF - MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR - ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES - WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN - ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF - OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. - -*/ - - - -#ifndef DYNCALL_ALLOC_H -#define DYNCALL_ALLOC_H - -#ifndef dcAllocMem -#include <stdlib.h> -#define dcAllocMem malloc -#endif - -#ifndef dcFreeMem -#define dcFreeMem free -#endif - -#endif /* DYNCALL_ALLOC_H */ - diff --git a/vendor/dyncall/win64/include/dyncall/dyncall_callf.h b/vendor/dyncall/win64/include/dyncall/dyncall_callf.h deleted file mode 100644 index d09f7e5e3..000000000 --- a/vendor/dyncall/win64/include/dyncall/dyncall_callf.h +++ /dev/null @@ -1,56 +0,0 @@ -/* - - Package: dyncall - Library: dyncall - File: dyncall/dyncall_callf.h - Description: formatted call interface to dyncall - License: - - Copyright (c) 2007-2018 Daniel Adler <dadler@uni-goettingen.de>, - Tassilo Philipp <tphilipp@potion-studios.com> - - Permission to use, copy, modify, and distribute this software for any - purpose with or without fee is hereby granted, provided that the above - copyright notice and this permission notice appear in all copies. - - THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES - WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF - MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR - ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES - WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN - ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF - OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. - -*/ - - - -/* - - dyncall formatted calls C API - - REVISION - 2007/12/11 initial - -*/ - - -#ifndef DYNCALL_CALLF_H -#define DYNCALL_CALLF_H - -/* dyncall formatted calls */ - -#include "dyncall.h" -#include "dyncall_signature.h" -#include "dyncall_value.h" - -#include <stdarg.h> - -void dcArgF (DCCallVM* vm, const DCsigchar* signature, ...); -void dcVArgF(DCCallVM* vm, const DCsigchar* signature, va_list args); - -void dcCallF (DCCallVM* vm, DCValue* result, DCpointer funcptr, const DCsigchar* signature, ...); -void dcVCallF(DCCallVM* vm, DCValue* result, DCpointer funcptr, const DCsigchar* signature, va_list args); - -#endif /* DYNCALL_CALLF_H */ - diff --git a/vendor/dyncall/win64/include/dyncall/dyncall_callvm.h b/vendor/dyncall/win64/include/dyncall/dyncall_callvm.h deleted file mode 100644 index af817ad91..000000000 --- a/vendor/dyncall/win64/include/dyncall/dyncall_callvm.h +++ /dev/null @@ -1,89 +0,0 @@ -/* - - Package: dyncall - Library: dyncall - File: dyncall/dyncall_callvm.h - Description: Common call vm binary interface. - License: - - Copyright (c) 2007-2018 Daniel Adler <dadler@uni-goettingen.de>, - Tassilo Philipp <tphilipp@potion-studios.com> - - Permission to use, copy, modify, and distribute this software for any - purpose with or without fee is hereby granted, provided that the above - copyright notice and this permission notice appear in all copies. - - THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES - WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF - MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR - ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES - WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN - ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF - OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. - -*/ - - - -#ifndef DYNCALL_CALLVM_H -#define DYNCALL_CALLVM_H - -#include "dyncall.h" - -/* --- callvm virtual function table --------------------------------------- */ - -/* NOTE: if something changes in DCCallVM_, update offset marks in dyncall_call_sparc.S */ - -typedef struct DCCallVM_vt_ DCCallVM_vt; - -struct DCCallVM_ -{ - DCCallVM_vt* mVTpointer; - DCint mError; -}; - -struct DCCallVM_vt_ -{ - void (*free) (DCCallVM* vm); - void (*reset) (DCCallVM* vm); - void (*mode) (DCCallVM* vm,DCint mode); - void (*argBool) (DCCallVM* vm,DCbool B); - void (*argChar) (DCCallVM* vm,DCchar c); - void (*argShort) (DCCallVM* vm,DCshort s); - void (*argInt) (DCCallVM* vm,DCint i); - void (*argLong) (DCCallVM* vm,DClong l); - void (*argLongLong) (DCCallVM* vm,DClonglong L); - void (*argFloat) (DCCallVM* vm,DCfloat f); - void (*argDouble) (DCCallVM* vm,DCdouble d); - void (*argPointer) (DCCallVM* vm,DCpointer p); - void (*argStruct) (DCCallVM* vm,DCstruct* s, DCpointer p); - void (*callVoid) (DCCallVM* vm,DCpointer funcptr); - DCbool (*callBool) (DCCallVM* vm,DCpointer funcptr); - DCchar (*callChar) (DCCallVM* vm,DCpointer funcptr); - DCshort (*callShort) (DCCallVM* vm,DCpointer funcptr); - DCint (*callInt) (DCCallVM* vm,DCpointer funcptr); - DClong (*callLong) (DCCallVM* vm,DCpointer funcptr); - DClonglong (*callLongLong) (DCCallVM* vm,DCpointer funcptr); - DCfloat (*callFloat) (DCCallVM* vm,DCpointer funcptr); - DCdouble (*callDouble) (DCCallVM* vm,DCpointer funcptr); - DCpointer (*callPointer) (DCCallVM* vm,DCpointer funcptr); - void (*callStruct) (DCCallVM* vm,DCpointer funcptr,DCstruct* s, DCpointer returnValue); -}; - -typedef DCvoid (DCvoidvmfunc) (DCCallVM* vm,DCpointer funcptr); -typedef DCbool (DCboolvmfunc) (DCCallVM* vn,DCpointer funcptr); -typedef DCchar (DCcharvmfunc) (DCCallVM* vm,DCpointer funcptr); -typedef DCshort (DCshortvmfunc) (DCCallVM* vm,DCpointer funcptr); -typedef DCint (DCintvmfunc) (DCCallVM* vm,DCpointer funcptr); -typedef DClong (DClongvmfunc) (DCCallVM* vm,DCpointer funcptr); -typedef DClonglong (DClonglongvmfunc) (DCCallVM* vm,DCpointer funcptr); -typedef DCfloat (DCfloatvmfunc) (DCCallVM* vm,DCpointer funcptr); -typedef DCdouble (DCdoublevmfunc) (DCCallVM* vm,DCpointer funcptr); -typedef DCpointer (DCpointervmfunc) (DCCallVM* vm,DCpointer funcptr); - -/* Common base functions for CallVM implementations. */ - -void dc_callvm_base_init(DCCallVM *pInstance, DCCallVM_vt* pVTable); - -#endif /* DYNCALL_CALLVM_H */ - diff --git a/vendor/dyncall/win64/include/dyncall/dyncall_callvm_arm32_arm.h b/vendor/dyncall/win64/include/dyncall/dyncall_callvm_arm32_arm.h deleted file mode 100644 index 749b69efd..000000000 --- a/vendor/dyncall/win64/include/dyncall/dyncall_callvm_arm32_arm.h +++ /dev/null @@ -1,55 +0,0 @@ -/* - - Package: dyncall - Library: dyncall - File: dyncall/dyncall_callvm_arm32_arm.h - Description: - License: - - Copyright (c) 2007-2020 Daniel Adler <dadler@uni-goettingen.de>, - Tassilo Philipp <tphilipp@potion-studios.com> - - Permission to use, copy, modify, and distribute this software for any - purpose with or without fee is hereby granted, provided that the above - copyright notice and this permission notice appear in all copies. - - THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES - WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF - MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR - ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES - WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN - ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF - OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. - -*/ - - - -/* - - dyncall callvm for 32bit ARM32 family of processors - - SUPPORTED CALLING CONVENTIONS - armcall - - REVISION - 2007/12/11 initial - -*/ - - -#ifndef DYNCALL_CALLVM_ARM32_ARM_H -#define DYNCALL_CALLVM_ARM32_ARM_H - -#include "dyncall_callvm.h" -#include "dyncall_vector.h" - -typedef struct -{ - DCCallVM mInterface; - DCpointer mpCallFunc; - DCVecHead mVecHead; -} DCCallVM_arm32_arm; - -#endif /* DYNCALL_CALLVM_ARM32_ARM_H */ - diff --git a/vendor/dyncall/win64/include/dyncall/dyncall_callvm_arm32_arm_armhf.h b/vendor/dyncall/win64/include/dyncall/dyncall_callvm_arm32_arm_armhf.h deleted file mode 100644 index 522b1bca3..000000000 --- a/vendor/dyncall/win64/include/dyncall/dyncall_callvm_arm32_arm_armhf.h +++ /dev/null @@ -1,59 +0,0 @@ -/* - - Package: dyncall - Library: dyncall - File: dyncall/dyncall_callvm_arm32_arm_armhf.h - Description: - License: - - Copyright (c) 2007-2020 Daniel Adler <dadler@uni-goettingen.de>, - Tassilo Philipp <tphilipp@potion-studios.com> - - Permission to use, copy, modify, and distribute this software for any - purpose with or without fee is hereby granted, provided that the above - copyright notice and this permission notice appear in all copies. - - THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES - WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF - MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR - ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES - WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN - ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF - OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. - -*/ - - - -/* - - dyncall callvm for 32bit ARM32 family of processors - - SUPPORTED CALLING CONVENTIONS - armcall - - REVISION - 2007/12/11 initial - -*/ - - -#ifndef DYNCALL_CALLVM_ARM32_ARM_ARMHF_H -#define DYNCALL_CALLVM_ARM32_ARM_ARMHF_H - -#include "dyncall_callvm.h" -#include "dyncall_vector.h" - -typedef struct -{ - DCCallVM mInterface; - unsigned int i; - unsigned int s; - unsigned int d; - DCfloat S[16]; - DCpointer mpCallFunc; - DCVecHead mVecHead; -} DCCallVM_arm32_armhf; - -#endif /* DYNCALL_CALLVM_ARM32_ARM_H */ - diff --git a/vendor/dyncall/win64/include/dyncall/dyncall_callvm_arm32_thumb.h b/vendor/dyncall/win64/include/dyncall/dyncall_callvm_arm32_thumb.h deleted file mode 100644 index 7e4ea3cca..000000000 --- a/vendor/dyncall/win64/include/dyncall/dyncall_callvm_arm32_thumb.h +++ /dev/null @@ -1,55 +0,0 @@ -/* - - Package: dyncall - Library: dyncall - File: dyncall/dyncall_callvm_arm32_thumb.h - Description: - License: - - Copyright (c) 2007-2020 Daniel Adler <dadler@uni-goettingen.de>, - Tassilo Philipp <tphilipp@potion-studios.com> - - Permission to use, copy, modify, and distribute this software for any - purpose with or without fee is hereby granted, provided that the above - copyright notice and this permission notice appear in all copies. - - THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES - WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF - MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR - ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES - WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN - ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF - OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. - -*/ - - - -/* - - dyncall callvm for 32bit ARM32 family of processors - - SUPPORTED CALLING CONVENTIONS - armthumbcall - - REVISION - 2008/08/12 initial - -*/ - - -#ifndef DYNCALL_CALLVM_ARM32_THUMB_H -#define DYNCALL_CALLVM_ARM32_THUMB_H - -#include "dyncall_callvm.h" -#include "dyncall_vector.h" - -typedef struct -{ - DCCallVM mInterface; - DCpointer mpCallFunc; - DCVecHead mVecHead; -} DCCallVM_arm32_thumb; - -#endif /* DYNCALL_CALLVM_ARM32_THUMB_H */ - diff --git a/vendor/dyncall/win64/include/dyncall/dyncall_callvm_arm64.h b/vendor/dyncall/win64/include/dyncall/dyncall_callvm_arm64.h deleted file mode 100644 index e2389cdb3..000000000 --- a/vendor/dyncall/win64/include/dyncall/dyncall_callvm_arm64.h +++ /dev/null @@ -1,46 +0,0 @@ -/* - - Package: dyncall - Library: dyncall - File: dyncall/dyncall_callvm_arm64.h - Description: - License: - - Copyright (c) 2015-2020 Daniel Adler <dadler@uni-goettingen.de>, - Tassilo Philipp <tphilipp@potion-studios.com> - - Permission to use, copy, modify, and distribute this software for any - purpose with or without fee is hereby granted, provided that the above - copyright notice and this permission notice appear in all copies. - - THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES - WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF - MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR - ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES - WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN - ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF - OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. - -*/ - -#ifndef DYNCALL_CALLVM_ARM64_H -#define DYNCALL_CALLVM_ARM64_H - -#include "dyncall_callvm.h" -#include "dyncall_vector.h" - -typedef struct -{ - DCCallVM mInterface; - unsigned int i; /* int register counter */ - unsigned int f; /* float register counter */ - union { /* float register buffer */ - DCfloat S[16]; - DCdouble D[8]; - } u; - unsigned long long I[8]; /* int register buffer */ - DCVecHead mVecHead; /* argument buffer head */ -} DCCallVM_arm64; - -#endif /* DYNCALL_CALLVM_ARM64_DEBIAN_H */ - diff --git a/vendor/dyncall/win64/include/dyncall/dyncall_callvm_mips.h b/vendor/dyncall/win64/include/dyncall/dyncall_callvm_mips.h deleted file mode 100644 index 3f81af7d2..000000000 --- a/vendor/dyncall/win64/include/dyncall/dyncall_callvm_mips.h +++ /dev/null @@ -1,38 +0,0 @@ -/* - - Package: dyncall - Library: dyncall - File: dyncall/dyncall_callvm_mips.h - Description: - License: - - Copyright (c) 2007-2018 Daniel Adler <dadler@uni-goettingen.de>, - Tassilo Philipp <tphilipp@potion-studios.com> - - Permission to use, copy, modify, and distribute this software for any - purpose with or without fee is hereby granted, provided that the above - copyright notice and this permission notice appear in all copies. - - THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES - WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF - MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR - ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES - WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN - ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF - OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. - -*/ - - - -#ifndef DYNCALL_CALLVM_MIPS_H -#define DYNCALL_CALLVM_MIPS_H - -/* Suported ABIs: */ - -#include "dyncall_callvm_mips_o32.h" -#include "dyncall_callvm_mips_eabi.h" -#include "dyncall_callvm_mips_n64.h" - -#endif /* DYNCALL_CALLVM_MIPS_H */ - diff --git a/vendor/dyncall/win64/include/dyncall/dyncall_callvm_mips_eabi.h b/vendor/dyncall/win64/include/dyncall/dyncall_callvm_mips_eabi.h deleted file mode 100644 index 34641c239..000000000 --- a/vendor/dyncall/win64/include/dyncall/dyncall_callvm_mips_eabi.h +++ /dev/null @@ -1,73 +0,0 @@ -/* - - Package: dyncall - Library: dyncall - File: dyncall/dyncall_callvm_mips_eabi.h - Description: - License: - - Copyright (c) 2007-2020 Daniel Adler <dadler@uni-goettingen.de>, - Tassilo Philipp <tphilipp@potion-studios.com> - - Permission to use, copy, modify, and distribute this software for any - purpose with or without fee is hereby granted, provided that the above - copyright notice and this permission notice appear in all copies. - - THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES - WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF - MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR - ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES - WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN - ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF - OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. - -*/ - - - -/* - - dyncall callvm for 32bit MIPS family of processors - - SUPPORTED CALLING CONVENTIONS - eabi - - REVISION - 2008/01/03 initial - -*/ - - -#ifndef DYNCALL_CALLVM_MIPS_EABI_H -#define DYNCALL_CALLVM_MIPS_EABI_H - -#include "dyncall_callvm.h" -#include "dyncall_vector.h" - - -/* Call-kernel register data: - - Details: - Two register content buffers for the corresponding register types - integer and float are filled from CallVM code and then later at - call-kernel loaded into the registers. - */ - -typedef struct -{ - DCint mIntData[8]; - DCfloat mSingleData[8]; -} DCRegData_mips_eabi; - - -typedef struct -{ - DCCallVM mInterface; - int mIntRegs; - int mSingleRegs; - DCRegData_mips_eabi mRegData; - DCVecHead mVecHead; -} DCCallVM_mips_eabi; - -#endif /* DYNCALL_CALLVM_MIPS_EABI_H */ - diff --git a/vendor/dyncall/win64/include/dyncall/dyncall_callvm_mips_n32.h b/vendor/dyncall/win64/include/dyncall/dyncall_callvm_mips_n32.h deleted file mode 100644 index 2d3f6e9e5..000000000 --- a/vendor/dyncall/win64/include/dyncall/dyncall_callvm_mips_n32.h +++ /dev/null @@ -1,77 +0,0 @@ -/* - - Package: dyncall - Library: dyncall - File: dyncall/dyncall_callvm_mips_n32.h - Description: mips64 "n32" ABI callvm C interface. - License: - - Copyright (c) 2007-2020 Daniel Adler <dadler@uni-goettingen.de>, - Tassilo Philipp <tphilipp@potion-studios.com> - - Permission to use, copy, modify, and distribute this software for any - purpose with or without fee is hereby granted, provided that the above - copyright notice and this permission notice appear in all copies. - - THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES - WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF - MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR - ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES - WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN - ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF - OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. - -*/ - - - -#ifndef DYNCALL_CALLVM_MIPS_N32_H -#define DYNCALL_CALLVM_MIPS_N32_H - -#include "dyncall_callvm.h" -#include "dyncall_vector.h" - -#ifdef __cplusplus -extern "C" { -#endif - - -/* - two register-files for integer (promoted to 64-bit) and float (not promoted!) - are used. - - arguments are transfered in a free slot on the corresponding register file. - the other register-file will be skipped by one. - - float arguments are either loaded from single or double - - a auto-conversion into double and then loaded as double precision - turned out to fail for several tests. - - therefore a union for storage of float or double is used instead. - a bitmask (mUseDouble) records which type is used and will be - interpreted in the call-kernel. -*/ - -typedef struct -{ - DClonglong mIntData[8]; - union { DCfloat f; DCdouble d; } mFloatData[8]; - DClonglong mUseDouble; /* bitmask: lower 8 bits specify to use float or double from union array. */ -} DCRegData_mips_n32; - - -typedef struct -{ - DCCallVM mInterface; - DCint mRegCount; - DCRegData_mips_n32 mRegData; - DCVecHead mVecHead; -} DCCallVM_mips_n32; - - -#ifdef __cplusplus -} -#endif - -#endif /* DYNCALL_CALLVM_MIPS_N32_H */ - diff --git a/vendor/dyncall/win64/include/dyncall/dyncall_callvm_mips_n64.h b/vendor/dyncall/win64/include/dyncall/dyncall_callvm_mips_n64.h deleted file mode 100644 index f204744a6..000000000 --- a/vendor/dyncall/win64/include/dyncall/dyncall_callvm_mips_n64.h +++ /dev/null @@ -1,79 +0,0 @@ -/* - - Package: dyncall - Library: dyncall - File: dyncall/dyncall_callvm_mips_n64.h - Description: mips "n64" ABI callvm C interface. - License: - - Copyright (c) 2007-2020 Daniel Adler <dadler@uni-goettingen.de>, - Tassilo Philipp <tphilipp@potion-studios.com> - - Permission to use, copy, modify, and distribute this software for any - purpose with or without fee is hereby granted, provided that the above - copyright notice and this permission notice appear in all copies. - - THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES - WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF - MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR - ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES - WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN - ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF - OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. - -*/ - - - -#ifndef DYNCALL_CALLVM_MIPS_N64_H -#define DYNCALL_CALLVM_MIPS_N64_H - -#include "dyncall_callvm.h" -#include "dyncall_vector.h" - -#ifdef __cplusplus -extern "C" { -#endif - - -/* - two register-files for integer (promoted to 64-bit) and float (not promoted!) - are used. - - arguments are transfered in a free slot on the corresponding register file. - the other register-file will be skipped by one. - - float arguments are either loaded from single or double - - a auto-conversion into double and then loaded as double precision - turned out to fail for several tests. - - therefore a union for storage of float or double is used instead. - a bitmask (mUseDouble) records which type is used and will be - interpreted in the call-kernel. -*/ - -typedef struct -{ - DClonglong mIntData[8]; -#if defined(DC__ABI_HARDFLOAT) - union { DCfloat f; DCdouble d; } mFloatData[8]; - DClonglong mUseDouble; /* bitmask: lower 8 bits specify to use float or double from union array. */ -#endif /* DC__ABI_HARDFLOAT */ -} DCRegData_mips_n64; - - -typedef struct -{ - DCCallVM mInterface; - DCint mRegCount; - DCRegData_mips_n64 mRegData; - DCVecHead mVecHead; -} DCCallVM_mips_n64; - - -#ifdef __cplusplus -} -#endif - -#endif /* DYNCALL_CALLVM_MIPS_N64_H */ - diff --git a/vendor/dyncall/win64/include/dyncall/dyncall_callvm_mips_o32.h b/vendor/dyncall/win64/include/dyncall/dyncall_callvm_mips_o32.h deleted file mode 100644 index 72f1b4b8f..000000000 --- a/vendor/dyncall/win64/include/dyncall/dyncall_callvm_mips_o32.h +++ /dev/null @@ -1,74 +0,0 @@ -/* - - Package: dyncall - Library: dyncall - File: dyncall/dyncall_callvm_mips_o32.h - Description: mips "o32" ABI callvm C interface. - License: - - Copyright (c) 2007-2020 Daniel Adler <dadler@uni-goettingen.de>, - Tassilo Philipp <tphilipp@potion-studios.com> - - Permission to use, copy, modify, and distribute this software for any - purpose with or without fee is hereby granted, provided that the above - copyright notice and this permission notice appear in all copies. - - THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES - WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF - MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR - ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES - WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN - ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF - OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. - -*/ - - - -#ifndef DYNCALL_CALLVM_MIPS_O32_H -#define DYNCALL_CALLVM_MIPS_O32_H - -#include "dyncall_callvm.h" -#include "dyncall_vector.h" - - -/* Call-kernel register data: - - Details: - - The structure holds the argument data for transfering float/double arguments - via registers as well. - The call-kernel on hardfloat platforms implements loads two doubles, which - involves four 32-bit floating pointer registers. It's unused for softfloat - platforms. - - Float arguments map as following: - - float argument 0 is at u[0][0] for little, u[0][1] for big endian and - float argument 1 is at u[1][0] for little, u[1][1] for big endian of - DCRegData_mips_o32 union. - -*/ - -typedef struct -{ -#if defined(DC__ABI_HARDFLOAT) - union { - double d; - float f[2]; - } u[2]; -#endif /* DC__ABI_HARDFLOAT */ -} DCRegData_mips_o32; - - -typedef struct -{ - DCCallVM mInterface; - int mArgCount; - DCRegData_mips_o32 mRegData; - DCVecHead mVecHead; -} DCCallVM_mips_o32; - - -#endif /* DYNCALL_CALLVM_MIPS_O32_H */ - diff --git a/vendor/dyncall/win64/include/dyncall/dyncall_callvm_ppc32.h b/vendor/dyncall/win64/include/dyncall/dyncall_callvm_ppc32.h deleted file mode 100644 index cbcc409bc..000000000 --- a/vendor/dyncall/win64/include/dyncall/dyncall_callvm_ppc32.h +++ /dev/null @@ -1,64 +0,0 @@ -/* - - Package: dyncall - Library: dyncall - File: dyncall/dyncall_callvm_ppc32.h - Description: - License: - - Copyright (c) 2007-2020 Daniel Adler <dadler@uni-goettingen.de>, - Tassilo Philipp <tphilipp@potion-studios.com> - - Permission to use, copy, modify, and distribute this software for any - purpose with or without fee is hereby granted, provided that the above - copyright notice and this permission notice appear in all copies. - - THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES - WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF - MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR - ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES - WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN - ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF - OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. - -*/ - - - -#ifndef DYNCALL_CALLVM_PPC32_H -#define DYNCALL_CALLVM_PPC32_H - -/* - - dyncall callvm for 32bit ppc architectures - - SUPPORTED CALLING CONVENTIONS - standard and ... (ellipsis) calls - - REVISION - 2007/12/11 initial - -*/ - - -#include "dyncall_callvm.h" -#include "dyncall_vector.h" - -typedef struct -{ - DCint mIntData[8]; - DCdouble mFloatData[13]; /* 13 for darwin, 8 for sysv */ -} DCRegData_ppc32; - - -typedef struct -{ - DCCallVM mInterface; - int mIntRegs; - int mFloatRegs; - DCRegData_ppc32 mRegData; - DCVecHead mVecHead; -} DCCallVM_ppc32; - -#endif /* DYNCALL_CALLVM_PPC32_H */ - diff --git a/vendor/dyncall/win64/include/dyncall/dyncall_callvm_ppc64.h b/vendor/dyncall/win64/include/dyncall/dyncall_callvm_ppc64.h deleted file mode 100644 index b90bb15cb..000000000 --- a/vendor/dyncall/win64/include/dyncall/dyncall_callvm_ppc64.h +++ /dev/null @@ -1,64 +0,0 @@ -/* - - Package: dyncall - Library: dyncall - File: dyncall/dyncall_callvm_ppc64.h - Description: - License: - - Copyright (c) 2014-2015 Masanori Mitsugi <mitsugi@linux.vnet.ibm.com> - 2020 Tassilo Philipp <tphilipp@potion-studios.com> - - Permission to use, copy, modify, and distribute this software for any - purpose with or without fee is hereby granted, provided that the above - copyright notice and this permission notice appear in all copies. - - THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES - WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF - MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR - ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES - WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN - ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF - OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. - -*/ - - -#ifndef DYNCALL_CALLVM_PPC64_H -#define DYNCALL_CALLVM_PPC64_H - -/* - - dyncall callvm for 64bit ppc architectures - - SUPPORTED CALLING CONVENTIONS - standard and ... (ellipsis) calls - - REVISION - 2014/08/07 initial - -*/ - - -#include "dyncall_callvm.h" -#include "dyncall_vector.h" - - -typedef struct -{ - DClonglong mIntData[8]; - DCdouble mFloatData[13]; -} DCRegData_ppc64; - -typedef struct -{ - DCCallVM mInterface; - int mIntRegs; - int mFloatRegs; - DCRegData_ppc64 mRegData; - DCVecHead mVecHead; -} DCCallVM_ppc64; - - -#endif /* DYNCALL_CALLVM_PPC64_H */ - diff --git a/vendor/dyncall/win64/include/dyncall/dyncall_callvm_sparc.h b/vendor/dyncall/win64/include/dyncall/dyncall_callvm_sparc.h deleted file mode 100644 index 30913bab1..000000000 --- a/vendor/dyncall/win64/include/dyncall/dyncall_callvm_sparc.h +++ /dev/null @@ -1,43 +0,0 @@ -/* - - Package: dyncall - Library: dyncall - File: dyncall/dyncall_callvm_sparc.h - Description: Call VM for sparc processor architecture. - License: - - Copyright (c) 2011-2020 Daniel Adler <dadler@uni-goettingen.de> - - Permission to use, copy, modify, and distribute this software for any - purpose with or without fee is hereby granted, provided that the above - copyright notice and this permission notice appear in all copies. - - THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES - WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF - MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR - ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES - WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN - ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF - OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. - -*/ - - - -#ifndef DYNCALL_CALLVM_SPARC_H -#define DYNCALL_CALLVM_SPARC_H - -#include "dyncall_callvm.h" -#include "dyncall_vector.h" - -/* NOTE: if something changes here, update offset marks in dyncall_call_sparc.S */ - -typedef struct DCCallVM_sparc_ DCCallVM_sparc; -struct DCCallVM_sparc_ -{ - DCCallVM mInterface; /* 8 bytes (vtable,errorid) */ - DCVecHead mVecHead; /* 8 bytes (max,size) */ -}; - -#endif /* DYNCALL_CALLVM_SPARC_H */ - diff --git a/vendor/dyncall/win64/include/dyncall/dyncall_callvm_sparc64.h b/vendor/dyncall/win64/include/dyncall/dyncall_callvm_sparc64.h deleted file mode 100644 index 9a484e04f..000000000 --- a/vendor/dyncall/win64/include/dyncall/dyncall_callvm_sparc64.h +++ /dev/null @@ -1,42 +0,0 @@ -/* - - Package: dyncall - Library: dyncall - File: dyncall/dyncall_callvm_sparc64.h - Description: Call VM for sparc64 (v9) ABI. - License: - - Copyright (c) 2011-2018 Daniel Adler <dadler@uni-goettingen.de> - - Permission to use, copy, modify, and distribute this software for any - purpose with or without fee is hereby granted, provided that the above - copyright notice and this permission notice appear in all copies. - - THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES - WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF - MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR - ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES - WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN - ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF - OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. - -*/ - - - -#ifndef DYNCALL_CALLVM_SPARC_V9_H -#define DYNCALL_CALLVM_SPARC_V9_H - -#include "dyncall_callvm.h" -#include "dyncall_vector.h" - -typedef struct -{ - DCCallVM mInterface; /* 0: +12:8 = 16*/ - DCVecHead mVecHead; /* 16 152: mTotalSize +8 */ - /* 24 160: mSize +8 */ - /* 32 168: mData */ -} DCCallVM_v9; - -#endif /* DYNCALL_CALLVM_SPARC_V9_H */ - diff --git a/vendor/dyncall/win64/include/dyncall/dyncall_callvm_x64.h b/vendor/dyncall/win64/include/dyncall/dyncall_callvm_x64.h deleted file mode 100644 index cb3885fb9..000000000 --- a/vendor/dyncall/win64/include/dyncall/dyncall_callvm_x64.h +++ /dev/null @@ -1,108 +0,0 @@ -/* - - Package: dyncall - Library: dyncall - File: dyncall/dyncall_callvm_x64.h - Description: - License: - - Copyright (c) 2007-2018 Daniel Adler <dadler@uni-goettingen.de>, - Tassilo Philipp <tphilipp@potion-studios.com> - - Permission to use, copy, modify, and distribute this software for any - purpose with or without fee is hereby granted, provided that the above - copyright notice and this permission notice appear in all copies. - - THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES - WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF - MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR - ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES - WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN - ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF - OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. - -*/ - - - -/* - - dyncall callvm for x64 architecture - - SUPPORTED CALLING CONVENTIONS - MS Windows x64 calling convention, AMD64 SystemV ABI - - REVISION - 2007/12/11 initial - -*/ - - -#ifndef DYNCALL_CALLVM_X64_H -#define DYNCALL_CALLVM_X64_H - -#include "dyncall_macros.h" -#include "dyncall_callvm.h" -#include "dyncall_vector.h" - - -#if defined(DC_WINDOWS) - -typedef long long int64; /* llp64 */ - -#define numIntRegs 4 -#define numFloatRegs 4 -#define DCRegCount_x64 DCRegCount_x64_u -#define DCRegData_x64 DCRegData_x64_u - -#elif defined(DC_UNIX) - -typedef long int64; /* lp64 */ - -#define numIntRegs 6 -#define numFloatRegs 8 -#define DCRegCount_x64 DCRegCount_x64_s -#define DCRegData_x64 DCRegData_x64_s - -#else - -#error Unsupported OS. - -#endif - -typedef union -{ - int i; - int f; -} DCRegCount_x64_u; - -typedef struct -{ - int i; - int f; -} DCRegCount_x64_s; - -typedef union -{ - int64 i[numIntRegs ]; - double f[numFloatRegs]; -} DCRegData_x64_u; - -typedef struct -{ - int64 i[numIntRegs ]; - double f[numFloatRegs]; -} DCRegData_x64_s; - - -typedef struct -{ - DCCallVM mInterface; /* This CallVM interface. */ - DCpointer mpCallFunc; /* Function to call. */ - DCRegCount_x64 mRegCount; /* Number of int/sse registers used for parameter passing. */ - DCRegData_x64 mRegData; /* Parameters to be passed via registers. */ - DCVecHead mVecHead; /* Parameters to be pushed onto stack. */ -} DCCallVM_x64; - -#endif /* DYNCALL_CALLVM_X64_H */ - diff --git a/vendor/dyncall/win64/include/dyncall/dyncall_callvm_x86.h b/vendor/dyncall/win64/include/dyncall/dyncall_callvm_x86.h deleted file mode 100644 index 41c3e84cb..000000000 --- a/vendor/dyncall/win64/include/dyncall/dyncall_callvm_x86.h +++ /dev/null @@ -1,59 +0,0 @@ -/* - - Package: dyncall - Library: dyncall - File: dyncall/dyncall_callvm_x86.h - Description: Call virtual machine for x86 architecture header - License: - - Copyright (c) 2007-2018 Daniel Adler <dadler@uni-goettingen.de>, - Tassilo Philipp <tphilipp@potion-studios.com> - - Permission to use, copy, modify, and distribute this software for any - purpose with or without fee is hereby granted, provided that the above - copyright notice and this permission notice appear in all copies. - - THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES - WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF - MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR - ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES - WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN - ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF - OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. - -*/ - - - -#ifndef DYNCALL_CALLVM_X86_H -#define DYNCALL_CALLVM_X86_H - -/* - - dyncall callvm for 32bit X86 architectures - Copyright 2007 Daniel Adler. - - SUPPORTED CALLING CONVENTIONS - cdecl,stdcall,fastcall,thiscall,msthiscall - - REVISION - 2007/12/10 initial - -*/ - - -#include "dyncall_callvm.h" -#include "dyncall_vector.h" - -typedef struct DCCallVM_x86_ DCCallVM_x86; - -struct DCCallVM_x86_ -{ - DCCallVM mInterface; - DCpointer mpCallFunc; - int mIntRegs; /* used by fastcall implementation */ - DCVecHead mVecHead; -}; - -#endif /* DYNCALL_CALLVM_X86_H */ - diff --git a/vendor/dyncall/win64/include/dyncall/dyncall_config.h b/vendor/dyncall/win64/include/dyncall/dyncall_config.h deleted file mode 100644 index 3763f9fcc..000000000 --- a/vendor/dyncall/win64/include/dyncall/dyncall_config.h +++ /dev/null @@ -1,47 +0,0 @@ -/* - - Package: dyncall - Library: dyncall - File: dyncall/dyncall_config.h - Description: Macro configuration file for non-standard C types - License: - - Copyright (c) 2007-2018 Daniel Adler <dadler@uni-goettingen.de>, - Tassilo Philipp <tphilipp@potion-studios.com> - - Permission to use, copy, modify, and distribute this software for any - purpose with or without fee is hereby granted, provided that the above - copyright notice and this permission notice appear in all copies. - - THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES - WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF - MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR - ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES - WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN - ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF - OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. - -*/ - - - -/* - - dyncall type configuration - - REVISION - 2007/12/11 initial - -*/ - -#ifndef DYNCALL_CONFIG_H -#define DYNCALL_CONFIG_H - -#include "dyncall_macros.h" - -#define DC_BOOL int -#define DC_LONG_LONG long long -#define DC_POINTER void* - -#endif /* DYNCALL_CONFIG_H */ - diff --git a/vendor/dyncall/win64/include/dyncall/dyncall_macros.h b/vendor/dyncall/win64/include/dyncall/dyncall_macros.h deleted file mode 100644 index 0055e47f9..000000000 --- a/vendor/dyncall/win64/include/dyncall/dyncall_macros.h +++ /dev/null @@ -1,301 +0,0 @@ -/* - - Package: dyncall - Library: dyncall - File: dyncall/dyncall_macros.h - Description: Platform detection macros - License: - - Copyright (c) 2007-2018 Daniel Adler <dadler@uni-goettingen.de>, - Tassilo Philipp <tphilipp@potion-studios.com> - - Permission to use, copy, modify, and distribute this software for any - purpose with or without fee is hereby granted, provided that the above - copyright notice and this permission notice appear in all copies. - - THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES - WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF - MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR - ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES - WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN - ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF - OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. - -*/ - - - -/* - - dyncall macros - - Platform detection, specific defines and configuration. - The purpose of this file is to provide coherent platform and compiler - specific defines. So instead of defines like WIN32, _OpenBSD_ or - __GNUC__, one should use DC__OS_Win32, DC__OS_OpenBSD or DC__C_GNU, - respectively. - - REVISION - 2007/12/11 initial - -*/ - - -#ifndef DYNCALL_MACROS_H -#define DYNCALL_MACROS_H - - -/* Platform specific defines. */ - -/* MS Windows XP x64/Vista64 or later. */ -#if defined(WIN64) || defined(_WIN64) || defined(__WIN64__) -#define DC__OS_Win64 - -/* MS Windows NT/95/98/ME/2000/XP/Vista32. */ -#elif defined(WIN32) || defined(_WIN32) || defined(__WIN32__) || defined(__NT__) || defined(__WINDOWS__) || defined(_WINDOWS) -#define DC__OS_Win32 - -/* All the OS' based on Darwin OS (MacOS X, OpenDarwin). Note that '__APPLE__' may be defined for classic MacOS, too. */ -/* __MACOSX__ is not defined in gcc assembler mode (switch: -S) */ -/* @@@ TODO: Check for Classic OS */ - -#elif defined(__APPLE__) || defined(__Darwin__) -# define DC__OS_Darwin -# if defined(__ENVIRONMENT_IPHONE_OS_VERSION_MIN_REQUIRED__) -# define DC__OS_IPhone -# else /* defined(__ENVIRONMENT_MAC_OS_X_VERSION_MIN_REQUIRED__) */ -# define DC__OS_MacOSX -# endif - -/* The most popular open source Unix-like OS - Linux. */ -#elif defined(__linux__) || defined(__linux) || defined(__gnu_linux__) -#define DC__OS_Linux - -/* The most powerful open source Unix-like OS - FreeBSD. */ -#elif defined(__FreeBSD__) || defined(__FreeBSD_kernel__) /* latter is (also) used by systems using FreeBSD kernel, e.g. Debian/kFreeBSD, which could be detected specifically by also checking for __GLIBC__ */ -#define DC__OS_FreeBSD - -/* The most secure open source Unix-like OS - OpenBSD. */ -#elif defined(__OpenBSD__) -#define DC__OS_OpenBSD - -/* The most portable open source Unix-like OS - NetBSD. */ -#elif defined(__NetBSD__) -#define DC__OS_NetBSD - -/* The FreeBSD fork having heavy clusterization in mind - DragonFlyBSD. */ -#elif defined(__DragonFly__) -#define DC__OS_DragonFlyBSD - -/* Sun's Unix-like OS - SunOS / Solaris. */ -#elif defined(__sun__) || defined(__sun) || defined(sun) -#define DC__OS_SunOS - -/* The "Linux-like environment for Windows" - Cygwin. */ -#elif defined(__CYGWIN__) -#define DC__OS_Cygwin - -/* The "Minimalist GNU for Windows" - MinGW. */ -#elif defined(__MINGW__)/*@@@*/ -#define DC__OS_MinGW - -/* The Nintendo DS (homebrew) using devkitpro. */ -#elif defined(__nds__) -#define DC__OS_NDS - -/* The PlayStation Portable (homebrew) SDK. */ -#elif defined(__psp__) || defined(PSP) -#define DC__OS_PSP - -/* Haiku (BeOS alike). */ -#elif defined(__HAIKU__) -#define DC__OS_BeOS - -/* The Unix successor - Plan9 from Bell Labs */ -#elif defined(Plan9) || defined(__Plan9__) -#define DC__OS_Plan9 - -/* Digital's Unix-like OS - VMS */ -#elif defined(__vms) -#define DC__OS_VMS - -#elif defined(__minix) -#define DC__OS_Minix - -#else - -/* Unable to determine OS, which is probably ok (e.g. baremetal stuff, etc.). */ -#define DC__OS_UNKNOWN -#endif - - - -/* Compiler specific defines. Do not change the order, because */ -/* some of the compilers define flags for compatible ones, too. */ - -/* Intel's C/C++ compiler. */ -#if defined(__INTEL_COMPILER) -#define DC__C_Intel - -/* MS C/C++ compiler. */ -#elif defined(_MSC_VER) -#define DC__C_MSVC - -/* LLVM clang. */ -#elif defined(__clang__) || defined(__llvm__) -#define DC__C_CLANG - -/* The GNU Compiler Collection - GCC. */ -#elif defined(__GNUC__) -#define DC__C_GNU - -/* Watcom compiler. */ -#elif defined(__WATCOMC__) -#define DC__C_WATCOM - -/* Portable C Compiler. */ -#elif defined(__PCC__) -#define DC__C_PCC - -/* Sun Pro C. */ -#elif defined(__SUNPRO_C) -#define DC__C_SUNPRO - -/* Undetected C Compiler. */ -#else -#define DC__C_UNKNOWN -#endif - - - -/* Architecture. */ - -/* Check architecture. */ -#if defined(_M_X64_) || defined(_M_AMD64) || defined(__amd64__) || defined(__amd64) || defined(__x86_64__) || defined(__x86_64) -# define DC__Arch_AMD64 -#elif defined(_M_IX86) || defined(__i386__) || defined(__i486__) || defined(__i586__) || defined(__i686__) || defined(__386__) || defined(__i386) -# define DC__Arch_Intel_x86 -#elif defined(_M_IA64) || defined(__ia64__) -# define DC__Arch_Itanium -#elif defined(_M_PPC) || defined(__powerpc__) || defined(__powerpc) || defined(__POWERPC__) || defined(__ppc__) || defined(__power__) -# if defined(__ppc64__) || defined(_ARCH_PPC64) || defined(__power64__) || defined(__powerpc64__) -# define DC__Arch_PPC64 -# else -# define DC__Arch_PPC32 -# endif -#elif defined(__mips64__) || defined(__mips64) -# define DC__Arch_MIPS64 -#elif defined(_M_MRX000) || defined(__mips__) || defined(__mips) || defined(_mips) -# define DC__Arch_MIPS -#elif defined(__arm__) -# define DC__Arch_ARM -#elif defined(__aarch64__) || defined(__arm64) || defined(__arm64__) -# define DC__Arch_ARM64 -#elif defined(__sh__) -# define DC__Arch_SuperH -#elif defined(__sparc) || defined(__sparc__) -# if defined(__sparcv9) || defined(__sparc_v9__) || defined(__sparc64__) || defined(__arch64__) -# define DC__Arch_Sparc64 -# else -# define DC__Arch_Sparc -# endif -#endif - - - -/* Rough OS classification. */ - -#if defined(DC__OS_Win32) || defined(DC__OS_Win64) -# define DC_WINDOWS -#elif defined(DC__OS_Plan9) -# define DC_PLAN9 -#elif defined(DC__OS_NDS) || defined(DC__OS_PSP) -# define DC_OTHER -#else -# define DC_UNIX -#endif - - - -/* Misc machine-dependent modes, ABIs, etc.. */ - -#if defined(__arm__) && !defined(__thumb__) -# define DC__Arch_ARM_ARM -#elif defined(__arm__) && defined(__thumb__) -# define DC__Arch_ARM_THUMB -#endif - -#if defined(DC__Arch_ARM_ARM) || defined(DC__Arch_ARM_THUMB) -# if defined(__ARM_EABI__) || defined(DC__OS_NDS) -# if defined (__ARM_PCS_VFP) && (__ARM_PCS_VFP == 1) -# define DC__ABI_ARM_HF -# else -# define DC__ABI_ARM_EABI -# endif -# elif defined(__APCS_32__) -# define DC__ABI_ARM_OABI -# endif -#endif /* ARM */ - -#if defined(DC__Arch_MIPS) || defined(DC__Arch_MIPS64) -# if defined(_ABIO32) || defined(__mips_o32) || defined(_MIPS_ARCH_MIPS1) || defined(_MIPS_ARCH_MIPS2) -# define DC__ABI_MIPS_O32 -# elif defined(_ABI64) || defined(__mips_n64) -# define DC__ABI_MIPS_N64 -# elif defined(_ABIN32) -# define DC__ABI_MIPS_N32 -# else -# define DC__ABI_MIPS_EABI -# endif -/* Set extra flag to know if FP hardware ABI, default to yes, if unsure */ -# if (defined(__mips_hard_float) && (__mips_hard_float == 1)) || !defined(__mips_soft_float) || (__mips_soft_float != 1) -# define DC__ABI_HARDFLOAT /* @@@ make this general for all archs? */ -# else -# define DC__ABI_SOFTFLOAT -# endif -#endif /* MIPS */ - -#if defined(DC__Arch_PPC64) -# if defined(_CALL_ELF) -# define DC__ABI_PPC64_ELF_V _CALL_ELF -# else -# define DC__ABI_PPC64_ELF_V 0 /* 0 means not explicitly set, otherwise this is 1 (big endian) and 2 (little endian) */ -# endif -#endif /* PPC64 */ - - -/* Endian detection. */ -#if defined(DC__Arch_Intel_x86) || defined(DC__Arch_AMD64) /* always little */ -# define DC__Endian_LITTLE -#elif defined(DC__Arch_Sparc) /* always purely big until v9 */ -# define DC__Endian_BIG -#else /* all others are bi-endian */ -/* @@@check flags used on following bi-endianness archs: -DC__Arch_Itanium -DC__Arch_PPC32 -DC__Arch_PPC64 -DC__Arch_SuperH -*/ -# if (defined(DC__Arch_PPC64) && (DC__ABI_PPC64_ELF_V == 1)) || defined(_BIG_ENDIAN) || defined(__BIG_ENDIAN__) || defined(MIPSEB) || defined(_MIPSEB) || defined(__MIPSEB) || defined(__MIPSEB__) || defined(__ARMEB__) || defined(__AARCH64EB__) -# define DC__Endian_BIG -# elif (defined(DC__Arch_PPC64) && (DC__ABI_PPC64_ELF_V == 2)) || defined(_LITTLE_ENDIAN) || defined(__LITTLE_ENDIAN__) || defined(MIPSEL) || defined(_MIPSEL) || defined(__MIPSEL) || defined(__MIPSEL__) || defined(__ARMEL__) || defined(__AARCH64EL__) -# define DC__Endian_LITTLE -# elif defined(DC__Arch_Sparc64) && !defined(__BYTE_ORDER__) /* Sparc64 default is big-endian, except if explicitly defined */ -# define DC__Endian_BIG -# elif defined(__BYTE_ORDER__) /* explicitly set */ -# if defined(__ORDER_BIG_ENDIAN__) && (__BYTE_ORDER__ == __ORDER_BIG_ENDIAN__) -# define DC__Endian_BIG -# elif defined(__ORDER_LITTLE_ENDIAN__) && (__BYTE_ORDER__ == __ORDER_LITTLE_ENDIAN__) -# define DC__Endian_LITTLE -# endif -# endif /* no else, leave unset if not sure */ -#endif - - -/* Internal macro/tag. */ -#if !defined(DC_API) -# define DC_API -#endif - -#endif /* DYNCALL_MACROS_H */ - diff --git a/vendor/dyncall/win64/include/dyncall/dyncall_signature.h b/vendor/dyncall/win64/include/dyncall/dyncall_signature.h deleted file mode 100644 index 5d1033b45..000000000 --- a/vendor/dyncall/win64/include/dyncall/dyncall_signature.h +++ /dev/null @@ -1,79 +0,0 @@ -/* - - Package: dyncall - Library: dyncall - File: dyncall/dyncall_signature.h - Description: Type and calling-convention signature character defines - License: - - Copyright (c) 2007-2020 Daniel Adler <dadler@uni-goettingen.de>, - Tassilo Philipp <tphilipp@potion-studios.com> - - Permission to use, copy, modify, and distribute this software for any - purpose with or without fee is hereby granted, provided that the above - copyright notice and this permission notice appear in all copies. - - THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES - WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF - MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR - ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES - WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN - ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF - OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. - -*/ - - - -/* - - dyncall signature characters - - REVISION - 2007/12/11 initial - -*/ - - -#ifndef DYNCALL_SIGNATURE_H -#define DYNCALL_SIGNATURE_H - -typedef char DCsigchar; - -#define DC_SIGCHAR_VOID 'v' -#define DC_SIGCHAR_BOOL 'B' -#define DC_SIGCHAR_CHAR 'c' -#define DC_SIGCHAR_UCHAR 'C' -#define DC_SIGCHAR_SHORT 's' -#define DC_SIGCHAR_USHORT 'S' -#define DC_SIGCHAR_INT 'i' -#define DC_SIGCHAR_UINT 'I' -#define DC_SIGCHAR_LONG 'j' -#define DC_SIGCHAR_ULONG 'J' -#define DC_SIGCHAR_LONGLONG 'l' -#define DC_SIGCHAR_ULONGLONG 'L' -#define DC_SIGCHAR_FLOAT 'f' -#define DC_SIGCHAR_DOUBLE 'd' -#define DC_SIGCHAR_POINTER 'p' -#define DC_SIGCHAR_STRING 'Z' -#define DC_SIGCHAR_STRUCT 'T' -#define DC_SIGCHAR_ENDARG ')' /* also works for end struct */ - -/* calling convention / mode signatures */ - -#define DC_SIGCHAR_CC_PREFIX '_' -#define DC_SIGCHAR_CC_DEFAULT ':' -#define DC_SIGCHAR_CC_ELLIPSIS 'e' -#define DC_SIGCHAR_CC_ELLIPSIS_VARARGS '.' -#define DC_SIGCHAR_CC_CDECL 'c' -#define DC_SIGCHAR_CC_STDCALL 's' -#define DC_SIGCHAR_CC_FASTCALL_MS 'F' -#define DC_SIGCHAR_CC_FASTCALL_GNU 'f' -#define DC_SIGCHAR_CC_THISCALL_MS '+' -#define DC_SIGCHAR_CC_THISCALL_GNU '#' /* GNU thiscalls are cdecl, but keep specific sig char for clarity */ -#define DC_SIGCHAR_CC_ARM_ARM 'A' -#define DC_SIGCHAR_CC_ARM_THUMB 'a' -#define DC_SIGCHAR_CC_SYSCALL '$' - -#endif /* DYNCALL_SIGNATURE_H */ - diff --git a/vendor/dyncall/win64/include/dyncall/dyncall_struct.h b/vendor/dyncall/win64/include/dyncall/dyncall_struct.h deleted file mode 100644 index c9f548289..000000000 --- a/vendor/dyncall/win64/include/dyncall/dyncall_struct.h +++ /dev/null @@ -1,70 +0,0 @@ -/* - - Package: dyncall - Library: dyncall - File: dyncall/dyncall_struct.h - Description: C interface to compute struct size - License: - - Copyright (c) 2010-2015 Olivier Chafik <olivier.chafik@centraliens.net> - - Permission to use, copy, modify, and distribute this software for any - purpose with or without fee is hereby granted, provided that the above - copyright notice and this permission notice appear in all copies. - - THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES - WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF - MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR - ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES - WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN - ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF - OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. - -*/ - - - -/* - - dyncall struct metadata structures - - REVISION - 2007/12/11 initial - -*/ - -#ifndef DYNCALL_STRUCT_H -#define DYNCALL_STRUCT_H - -#include "dyncall.h" - -#ifdef __cplusplus -extern "C" { -#endif - -typedef struct DCfield_ { - DCsize offset, size, alignment, arrayLength; - DCint type; - DCstruct* pSubStruct; -} DCfield; - -struct DCstruct_ { - DCfield *pFields; - DCsize size, alignment, fieldCount; - - /* struct building uses a state machine. */ - DCint nextField; /* == -1 if struct is closed */ - DCstruct *pCurrentStruct, *pLastStruct; /* == this, unless we're in a sub struct */ -}; - - -/* Helper. */ -void dcArgStructUnroll(DCCallVM* vm, DCstruct* s, DCpointer value); - - -#ifdef __cplusplus -} -#endif - -#endif /* DYNCALL_H */ - diff --git a/vendor/dyncall/win64/include/dyncall/dyncall_types.h b/vendor/dyncall/win64/include/dyncall/dyncall_types.h deleted file mode 100644 index 5d2a89ba3..000000000 --- a/vendor/dyncall/win64/include/dyncall/dyncall_types.h +++ /dev/null @@ -1,74 +0,0 @@ -/* - - Package: dyncall - Library: dyncall - File: dyncall/dyncall_types.h - Description: Typedefs - License: - - Copyright (c) 2007-2018 Daniel Adler <dadler@uni-goettingen.de>, - Tassilo Philipp <tphilipp@potion-studios.com> - - Permission to use, copy, modify, and distribute this software for any - purpose with or without fee is hereby granted, provided that the above - copyright notice and this permission notice appear in all copies. - - THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES - WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF - MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR - ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES - WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN - ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF - OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. - -*/ - - - -/* - - dyncall argument- and return-types - - REVISION - 2007/12/11 initial - -*/ - -#ifndef DYNCALL_TYPES_H -#define DYNCALL_TYPES_H - -#include <stddef.h> - -#include "dyncall_config.h" - -#ifdef __cplusplus -extern "C" { -#endif - -typedef void DCvoid; -typedef DC_BOOL DCbool; -typedef char DCchar; -typedef unsigned char DCuchar; -typedef short DCshort; -typedef unsigned short DCushort; -typedef int DCint; -typedef unsigned int DCuint; -typedef long DClong; -typedef unsigned long DCulong; -typedef DC_LONG_LONG DClonglong; -typedef unsigned DC_LONG_LONG DCulonglong; -typedef float DCfloat; -typedef double DCdouble; -typedef DC_POINTER DCpointer; -typedef const char* DCstring; -typedef size_t DCsize; - -#define DC_TRUE 1 -#define DC_FALSE 0 - -#ifdef __cplusplus -} -#endif - -#endif /* DYNCALL_TYPES_H */ - diff --git a/vendor/dyncall/win64/include/dyncall/dyncall_utils.h b/vendor/dyncall/win64/include/dyncall/dyncall_utils.h deleted file mode 100644 index 5f7e105b0..000000000 --- a/vendor/dyncall/win64/include/dyncall/dyncall_utils.h +++ /dev/null @@ -1,39 +0,0 @@ -/* - - Package: dyncall - Library: dyncall - File: dyncall/dyncall_utils.h - Description: Type and calling-convention signature character defines - License: - - Copyright (c) 2007-2018 Daniel Adler <dadler@uni-goettingen.de>, - Tassilo Philipp <tphilipp@potion-studios.com> - - Permission to use, copy, modify, and distribute this software for any - purpose with or without fee is hereby granted, provided that the above - copyright notice and this permission notice appear in all copies. - - THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES - WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF - MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR - ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES - WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN - ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF - OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. - -*/ - - - - -#ifndef DYNCALL_UTILS_H -#define DYNCALL_UTILS_H - -/* C portable macros. */ - -#ifndef DC_MAX -#define DC_MAX(a,b) ((a)>=(b))?(a):(b) -#endif - -#endif /* DYNCALL_UTILS_H */ - diff --git a/vendor/dyncall/win64/include/dyncall/dyncall_value.h b/vendor/dyncall/win64/include/dyncall/dyncall_value.h deleted file mode 100644 index 6785b4cc6..000000000 --- a/vendor/dyncall/win64/include/dyncall/dyncall_value.h +++ /dev/null @@ -1,98 +0,0 @@ -/* - - Package: dyncall - Library: dyncall - File: dyncall/dyncall_value.h - Description: Value variant type - License: - - Copyright (c) 2007-2018 Daniel Adler <dadler@uni-goettingen.de>, - Tassilo Philipp <tphilipp@potion-studios.com> - - Permission to use, copy, modify, and distribute this software for any - purpose with or without fee is hereby granted, provided that the above - copyright notice and this permission notice appear in all copies. - - THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES - WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF - MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR - ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES - WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN - ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF - OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. - -*/ - - -/* - - dyncall value variant - - a value variant union-type that carries all supported dyncall types. - - REVISION - 2007/12/11 initial - -*/ - -#ifndef DYNCALL_VALUE_H -#define DYNCALL_VALUE_H - -#include "dyncall_types.h" - -#ifdef __cplusplus -extern "C" { -#endif - -typedef union DCValue_ DCValue; - -union DCValue_ -{ -/* dyncallback assembly pulls value directly from DCValue structs, without */ -/* knowledge about types used, so lay it out as needed at compile time, here */ -#if defined(DC__Endian_BIG) && (defined(DC__Arch_PPC32) || defined(DC__Arch_MIPS) || defined(DC__Arch_Sparc)) - DCbool B; - struct { DCchar c_pad[3]; DCchar c; }; - struct { DCuchar C_pad[3]; DCuchar C; }; - struct { DCshort s_pad; DCshort s; }; - struct { DCshort S_pad; DCshort S; }; - DCint i; - DCuint I; -#elif defined(DC__Endian_BIG) && (defined(DC__Arch_PPC64) || defined(DC__Arch_MIPS64) || defined(DC__Arch_Sparc64)) - struct { DCbool B_pad; DCbool B; }; - struct { DCchar c_pad[7]; DCchar c; }; - struct { DCuchar C_pad[7]; DCuchar C; }; - struct { DCshort s_pad[3]; DCshort s; }; - struct { DCshort S_pad[3]; DCshort S; }; - struct { DCint i_pad; DCint i; }; - struct { DCint I_pad; DCuint I; }; -#else - DCbool B; - DCchar c; - DCuchar C; - DCshort s; - DCushort S; - DCint i; - DCuint I; -#endif - DClong j; - DCulong J; - DClonglong l; - DCulonglong L; -/* floats on mips are right justified in fp-registers on big endian targets, as they aren't promoted */ -#if defined(DC__Endian_BIG) && (defined(DC__Arch_MIPS) || defined(DC__Arch_MIPS64)) - struct { DCfloat f_pad; DCfloat f; }; -#else - DCfloat f; -#endif - DCdouble d; - DCpointer p; - DCstring Z; -}; - -#ifdef __cplusplus -} -#endif - -#endif /* DYNCALL_VALUE_H */ - diff --git a/vendor/dyncall/win64/include/dyncall/dyncall_vector.h b/vendor/dyncall/win64/include/dyncall/dyncall_vector.h deleted file mode 100644 index 924c4d7e0..000000000 --- a/vendor/dyncall/win64/include/dyncall/dyncall_vector.h +++ /dev/null @@ -1,58 +0,0 @@ -/* - - Package: dyncall - Library: dyncall - File: dyncall/dyncall_vector.h - Description: Simple dynamic vector container type header - License: - - Copyright (c) 2007-2018 Daniel Adler <dadler@uni-goettingen.de>, - Tassilo Philipp <tphilipp@potion-studios.com> - - Permission to use, copy, modify, and distribute this software for any - purpose with or without fee is hereby granted, provided that the above - copyright notice and this permission notice appear in all copies. - - THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES - WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF - MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR - ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES - WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN - ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF - OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. - -*/ - - - -#ifndef DC_VECTOR_H -#define DC_VECTOR_H - -#include "dyncall_types.h" - -typedef struct -{ - DCsize mTotal; - DCsize mSize; -} DCVecHead; - -#define DC_SIZEOF_DCVector(size) (sizeof(DCVecHead)+size) - -#define dcVecInit(p,size) (p)->mTotal=size;(p)->mSize=0 -#define dcVecReset(p) (p)->mSize=0 -#define dcVecResize(p,size) (p)->mSize=(size) -#define dcVecSkip(p,size) (p)->mSize+=(size) -#define dcVecData(p) ( (unsigned char*) (((DCVecHead*)(p))+1) ) -#define dcVecAt(p,index) ( dcVecData(p)+index ) -#define dcVecSize(p) ( (p)->mSize ) -#define dcVecAlign(p,align) (p)->mSize=( (p)->mSize + align-1 ) & -align - -/* -#include <string.h> - #define dcVecAppend(p,s,n) memcpy( dcVecData(p)+p->mSize, s, n );p->mSize+=n -*/ - -void dcVecAppend(DCVecHead* pHead, const void* source, size_t length); - -#endif /* DC_VECTOR_H */ - diff --git a/vendor/dyncall/win64/lib/dyncall_s.lib b/vendor/dyncall/win64/lib/dyncall_s.lib deleted file mode 100644 index 737f03c2c04f3b6dd3f4b923da16a6b9dd0e0719..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 35054 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 diff --git a/vendor/dynlib b/vendor/dynlib deleted file mode 160000 index 5eb954751..000000000 --- a/vendor/dynlib +++ /dev/null @@ -1 +0,0 @@ -Subproject commit 5eb95475170becfcc64fd5d32d14ec2b76dcb6d4 diff --git a/vendor/dynohook/linuxsteamrt64/include/dynohook/convention.h b/vendor/dynohook/linuxsteamrt64/include/dynohook/convention.h deleted file mode 100644 index 691d9e21c..000000000 --- a/vendor/dynohook/linuxsteamrt64/include/dynohook/convention.h +++ /dev/null @@ -1,244 +0,0 @@ -#pragma once - -#include "registers.h" - -namespace dyno { - enum class DataType : uint8_t { - Void, - Bool, - Char, - UChar, - Short, - UShort, - Int, - UInt, - Long, - ULong, - LongLong, - ULongLong, - Float, - Double, - Pointer, - String, - M128, - M256, - M512, - Object - }; - - struct DataObject { - DataType type; - RegisterType reg; - uint16_t size; - - DataObject(DataType type, RegisterType reg = NONE, uint16_t size = 0) : type(type), reg(reg), size(size) {} - - bool isFlt() const { return type == DataType::Float || type == DataType::Double; } - bool isVec() const { return type == DataType::M128 || type == DataType::M256 || type == DataType::M512; } - }; - - /** - * Returns the size after applying alignment. - * @param size The size that should be aligned. - * @param alignment The alignment that should be used. - * @return - */ - inline size_t Align(size_t size, size_t alignment) { - size_t unaligned = size % alignment; - if (unaligned == 0) - return size; - - return size + (alignment - unaligned); - } - - /** - * @brief Returns the size of a data type after applying alignment. - * @param type The data type you would like to get the size of. - * @param alignment The alignment that should be used. - * @return - */ - inline size_t GetDataTypeSize(DataType type, size_t alignment) { - switch (type) { - case DataType::Void: - return 0; - case DataType::Bool: - return Align(sizeof(bool), alignment); - case DataType::Char: - return Align(sizeof(char), alignment); - case DataType::UChar: - return Align(sizeof(unsigned char), alignment); - case DataType::Short: - return Align(sizeof(short), alignment); - case DataType::UShort: - return Align(sizeof(unsigned short), alignment); - case DataType::Int: - return Align(sizeof(int), alignment); - case DataType::UInt: - return Align(sizeof(unsigned int), alignment); - case DataType::Long: - return Align(sizeof(long), alignment); - case DataType::ULong: - return Align(sizeof(unsigned long), alignment); - case DataType::LongLong: - return Align(sizeof(long long), alignment); - case DataType::ULongLong: - return Align(sizeof(unsigned long long), alignment); - case DataType::Float: - return Align(sizeof(float), alignment); - case DataType::Double: - return Align(sizeof(double), alignment); - case DataType::Pointer: - return Align(sizeof(void*), alignment); - case DataType::String: - return Align(sizeof(char*), alignment); - case DataType::M128: - return Align(sizeof(float) * 4, alignment); - case DataType::M256: - return Align(sizeof(float) * 8, alignment); - case DataType::M512: - return Align(sizeof(float) * 16, alignment); - default: - puts("[Warning] - Convention - Unknown data type."); - } - return 0; - } - - /** - * @brief This is the base class for every calling convention. - * - * Inherit from this class to create your own calling convention. - */ - class CallingConvention { - public: - /** - * @brief Initializes the calling convention. - * @param arguments A list of DataType_t objects, which define the arguments of the function. - * @param returnType The return type of the function. - * @param alignment - */ - CallingConvention(std::vector<DataObject> arguments, DataObject returnType, size_t alignment); - virtual ~CallingConvention() = default; - NONCOPYABLE(CallingConvention); - - /** - * @brief This should return a list of RegisterType values. These registers will be saved for later access. - * @return - */ - virtual std::vector<RegisterType> getRegisters() = 0; - - /** - * Returns a pointer to the memory at the stack. - * @param registers A snapshot of all saved registers. - * @return - */ - virtual void** getStackArgumentPtr(const Registers& registers) = 0; - - /** - * @brief Returns a pointer to the argument at the given index. - * @param index The index of the argument. - * @param registers A snapshot of all saved registers. - * @return - */ - virtual void* getArgumentPtr(size_t index, const Registers& registers) = 0; - - /** - * @brief - * @param index The index of the argument. - * @param registers A snapshot of all saved registers. - * @param argumentPtr A pointer to the argument at the given index. - */ - virtual void onArgumentPtrChanged(size_t index, const Registers& registers, void* argumentPtr) = 0; - - /** - * @brief Returns a pointer to the return value. - * @param registers A snapshot of all saved registers. - * @return - */ - virtual void* getReturnPtr(const Registers& registers) = 0; - - /** - * - * @param registers A snapshot of all saved registers. - * @param returnPtr A pointer to the return value. - */ - virtual void onReturnPtrChanged(const Registers& registers, void* returnPtr) = 0; - - /** - * @brief Save the return value in a seperate buffer, so we can restore it after calling the original function. - * @param registers A snapshot of all saved registers. - */ - virtual void saveReturnValue(const Registers& registers); - - /** - * @brief - * @param registers A snapshot of all saved registers. - */ - virtual void restoreReturnValue(const Registers& registers); - - /** - * @brief Save the value of arguments in a seperate buffer for the post callback. - * Compiler optimizations might cause the registers or stack space to be reused - * and overwritten during function execution if the value isn't needed anymore - * at some point. This leads to different values in the post hook. - * @param registers A snapshot of all saved registers. - */ - virtual void saveCallArguments(const Registers& registers); - - /** - * @brief Restore the value of arguments from a seperate buffer for the call. - * @param registers A snapshot of all saved registers. - */ - virtual void restoreCallArguments(const Registers& registers); - - /** - * @brief Returns the number of bytes that should be added to the stack to clean up. - * @return - */ - virtual size_t getPopSize() { - return 0; - } - - /** - * Returns the number of bytes for the buffer to store all the arguments that are passed in a stack in. - * @return - */ - size_t getArgStackSize() const { - return m_stackSize; - } - - /** - * @brief Returns the number of bytes for the buffer to store all the arguments that are passed in a register in. - * @return - */ - size_t getArgRegisterSize() const { - return m_registerSize; - } - - const std::vector<DataObject>& getArguments() const { - return m_arguments; - } - - DataObject getReturn() const { - return m_return; - } - - size_t getAlignment() const { - return m_alignment; - } - - protected: - void init(); - - protected: - std::vector<DataObject> m_arguments; - DataObject m_return; - size_t m_alignment; - size_t m_stackSize; - size_t m_registerSize; - - // save the return in case we call the original function and want to override the return again. - std::vector<std::unique_ptr<uint8_t[]>> m_savedReturnBuffers; - // save call arguments in case the function reuses the space and overwrites the values for the post hook. - std::vector<std::unique_ptr<uint8_t[]>> m_savedCallArguments; - }; -} \ No newline at end of file diff --git a/vendor/dynohook/linuxsteamrt64/include/dynohook/conventions/x64/x64MsFastcall.h b/vendor/dynohook/linuxsteamrt64/include/dynohook/conventions/x64/x64MsFastcall.h deleted file mode 100644 index 0c631bb74..000000000 --- a/vendor/dynohook/linuxsteamrt64/include/dynohook/conventions/x64/x64MsFastcall.h +++ /dev/null @@ -1,44 +0,0 @@ -#pragma once - -#if DYNO_ARCH_X86 == 64 - -#include "dynohook/convention.h" - -/* - Source: DynCall manual and Windows docs - - Registers: - - rax = return value - - rsp = stack pointer - - xmm0 = floating point return value - - Parameter passing: - - first parameter in rcx/xmm0, second parameter in rdx/xmm1, third parameter in r8/xmm2, forth parameter in r9/xmm3, rest on the stack - - stack parameter order: right-to-left - - caller cleans up the stack - - alignment: 8 bytes - - shadow space: 32 bytes (for arguments) - - Return values: - - return values of pointer or intergral type (<= 64 bits) are returned via the rax register - - integers > 64 bits are returned via the rax registers as pointers - - floating pointer types are returned via the xmm0 register -*/ -namespace dyno { - class x64MsFastcall : public CallingConvention { - public: - x64MsFastcall(std::vector<DataObject> arguments, DataObject returnType, size_t alignment = 8); - ~x64MsFastcall() override = default; - - std::vector<RegisterType> getRegisters() override; - void** getStackArgumentPtr(const Registers &registers) override; - - void* getArgumentPtr(size_t index, const Registers& registers) override; - void onArgumentPtrChanged(size_t index, const Registers& registers, void* argumentPtr) override; - - void* getReturnPtr(const Registers& registers) override; - void onReturnPtrChanged(const Registers& registers, void* returnPtr) override; - }; -} - -#endif // DYNO_ARCH_X86 \ No newline at end of file diff --git a/vendor/dynohook/linuxsteamrt64/include/dynohook/conventions/x64/x64SystemVcall.h b/vendor/dynohook/linuxsteamrt64/include/dynohook/conventions/x64/x64SystemVcall.h deleted file mode 100644 index bbb561073..000000000 --- a/vendor/dynohook/linuxsteamrt64/include/dynohook/conventions/x64/x64SystemVcall.h +++ /dev/null @@ -1,49 +0,0 @@ -#pragma once - -#if DYNO_ARCH_X86 == 64 - -#include "dynohook/convention.h" - -/* - Source: DynCall manual and Windows docs - - Registers: - - rax = return value - - rdx = return value - - rsp = stack pointer - - [xyz]mm0 = floating point return value - - [xyz]mm1 = floating point return value - - Parameter passing: - - rdi, rsi, rdx, rcx, r8, r9, rest on the stack - - [xyz]mm0-[xyz]mm7 used for passing floating values - - stack parameter order: right-to-left - - caller cleans up the stack - - alignment: 8 bytes - - Return values: - - return values of pointer or intergral type (<= 64 bits) are returned via the rax register - - integers > 64 bits are returned via the rax and rdx registers - - floating pointer types are returned via the xmm0 and xmm1 register -*/ -namespace dyno { - class x64SystemVcall : public CallingConvention { - public: - x64SystemVcall(std::vector<DataObject> arguments, DataObject returnType, size_t alignment = SIZE_QWORD); - ~x64SystemVcall() override; - - std::vector<RegisterType> getRegisters() override; - void** getStackArgumentPtr(const Registers &registers) override; - - void* getArgumentPtr(size_t index, const Registers& registers) override; - void onArgumentPtrChanged(size_t index, const Registers& registers, void* argumentPtr) override; - - void* getReturnPtr(const Registers& registers) override; - void onReturnPtrChanged(const Registers& registers, void* returnPtr) override; - - private: - void* m_returnBuffer; - }; -} - -#endif // DYNO_ARCH_X86 \ No newline at end of file diff --git a/vendor/dynohook/linuxsteamrt64/include/dynohook/conventions/x86/x86GccCdecl.h b/vendor/dynohook/linuxsteamrt64/include/dynohook/conventions/x86/x86GccCdecl.h deleted file mode 100644 index e78685743..000000000 --- a/vendor/dynohook/linuxsteamrt64/include/dynohook/conventions/x86/x86GccCdecl.h +++ /dev/null @@ -1,11 +0,0 @@ -#pragma once - -#if DYNO_ARCH_X86 == 32 - -#include "x86MsCdecl.h" - -namespace dyno { - typedef x86MsCdecl x86GccCdecl; -} - -#endif // DYNO_ARCH_X86 \ No newline at end of file diff --git a/vendor/dynohook/linuxsteamrt64/include/dynohook/conventions/x86/x86GccThiscall.h b/vendor/dynohook/linuxsteamrt64/include/dynohook/conventions/x86/x86GccThiscall.h deleted file mode 100644 index b756371f7..000000000 --- a/vendor/dynohook/linuxsteamrt64/include/dynohook/conventions/x86/x86GccThiscall.h +++ /dev/null @@ -1,12 +0,0 @@ -#pragma once - -#if DYNO_ARCH_X86 == 32 - -#include "dynohook/convention.h" -#include "x86MsCdecl.h" - -namespace dyno { - typedef x86MsCdecl x86GccThiscall; -} - -#endif // DYNO_ARCH_X86 \ No newline at end of file diff --git a/vendor/dynohook/linuxsteamrt64/include/dynohook/conventions/x86/x86MsCdecl.h b/vendor/dynohook/linuxsteamrt64/include/dynohook/conventions/x86/x86MsCdecl.h deleted file mode 100644 index d9ec3377f..000000000 --- a/vendor/dynohook/linuxsteamrt64/include/dynohook/conventions/x86/x86MsCdecl.h +++ /dev/null @@ -1,47 +0,0 @@ -#pragma once - -#if DYNO_ARCH_X86 == 32 - -#include "dynohook/convention.h" - -/* - Source: DynCall manual and Windows docs - - Registers: - - eax = return value - - edx = return value - - esp = stack pointer - - st0 = floating point return value - - Parameter passing: - - stack parameter order: right-to-left - - caller cleans up the stack - - all arguments are pushed onto the stack - - alignment: 4 bytes - - Return values: - - return values of pointer or intergral type (<= 32 bits) are returned via the eax register - - integers > 32 bits are returned via the eax and edx registers - - floating pointer types are returned via the st0 register -*/ -namespace dyno { - class x86MsCdecl : public CallingConvention { - public: - x86MsCdecl(std::vector<DataObject> arguments, DataObject returnType, size_t alignment = 4); - ~x86MsCdecl() override; - - std::vector<RegisterType> getRegisters() override; - void** getStackArgumentPtr(const Registers& registers) override; - - void* getArgumentPtr(size_t index, const Registers& registers) override; - void onArgumentPtrChanged(size_t index, const Registers& registers, void* argumentPtr) override; - - void* getReturnPtr(const Registers& registers) override; - void onReturnPtrChanged(const Registers& registers, void* returnPtr) override; - - private: - void* m_returnBuffer; - }; -} - -#endif // DYNO_ARCH_X86 \ No newline at end of file diff --git a/vendor/dynohook/linuxsteamrt64/include/dynohook/conventions/x86/x86MsFastcall.h b/vendor/dynohook/linuxsteamrt64/include/dynohook/conventions/x86/x86MsFastcall.h deleted file mode 100644 index c77193c84..000000000 --- a/vendor/dynohook/linuxsteamrt64/include/dynohook/conventions/x86/x86MsFastcall.h +++ /dev/null @@ -1,36 +0,0 @@ -#pragma once - -#if DYNO_ARCH_X86 == 32 - -#include "dynohook/convention.h" -#include "x86MsStdcall.h" - -/* - Source: DynCall manual and Windows docs - - Registers: - - eax = return value - - edx = return value - - esp = stack pointer - - st0 = floating point return value - - Parameter passing: - - first parameter in ecx, second parameter in edx, rest on the stack - - stack parameter order: right-to-left - - callee cleans up the stack - - alignment: 4 bytes - - Return values: - - return values of pointer or intergral type (<= 32 bits) are returned via the eax register - - integers > 32 bits are returned via the eax and edx registers - - floating pointer types are returned via the st0 register -*/ -namespace dyno { - class x86MsFastcall : public x86MsStdcall { - public: - x86MsFastcall(std::vector<DataObject> arguments, DataObject returnType, size_t alignment = 4); - ~x86MsFastcall() override = default; - }; -} - -#endif // DYNO_ARCH_X86 \ No newline at end of file diff --git a/vendor/dynohook/linuxsteamrt64/include/dynohook/conventions/x86/x86MsStdcall.h b/vendor/dynohook/linuxsteamrt64/include/dynohook/conventions/x86/x86MsStdcall.h deleted file mode 100644 index 87e36b965..000000000 --- a/vendor/dynohook/linuxsteamrt64/include/dynohook/conventions/x86/x86MsStdcall.h +++ /dev/null @@ -1,38 +0,0 @@ -#pragma once - -#if DYNO_ARCH_X86 == 32 - -#include "dynohook/convention.h" -#include "x86MsCdecl.h" - -/* - Source: DynCall manual and Windows docs - - Registers: - - eax = return value - - edx = return value - - esp = stack pointer - - st0 = floating point return value - - Parameter passing: - - stack parameter order: right-to-left - - callee cleans up the stack - - all arguments are pushed onto the stack - - alignment: 4 bytes - - Return values: - - return values of pointer or intergral type (<= 32 bits) are returned via the eax register - - integers > 32 bits are returned via the eax and edx registers - - floating pointer types are returned via the st0 register -*/ -namespace dyno { - class x86MsStdcall : public x86MsCdecl { - public: - x86MsStdcall(std::vector<DataObject> arguments, DataObject returnType, size_t alignment = 4); - ~x86MsStdcall() override = default; - - size_t getPopSize() override; - }; -} - -#endif // DYNO_ARCH_X86 \ No newline at end of file diff --git a/vendor/dynohook/linuxsteamrt64/include/dynohook/conventions/x86/x86MsThiscall.h b/vendor/dynohook/linuxsteamrt64/include/dynohook/conventions/x86/x86MsThiscall.h deleted file mode 100644 index 1e5cc357d..000000000 --- a/vendor/dynohook/linuxsteamrt64/include/dynohook/conventions/x86/x86MsThiscall.h +++ /dev/null @@ -1,37 +0,0 @@ -#pragma once - -#if DYNO_ARCH_X86 == 32 - -#include "dynohook/convention.h" -#include "x86MsStdcall.h" - -/* - Source: DynCall manual and Windows docs - - Registers: - - eax = return value - - ecx = this pointer - - edx = return value - - esp = stack pointer - - st0 = floating point return value - - Parameter passing: - - stack parameter order: right-to-left - - callee cleans up the stack - - all other arguments are pushed onto the stack - - alignment: 4 bytes - - Return values: - - return values of pointer or intergral type (<= 32 bits) are returned via the eax register - - integers > 32 bits are returned via the eax and edx registers - - floating pointer types are returned via the st0 register -*/ -namespace dyno { - class x86MsThiscall : public x86MsStdcall { - public: - x86MsThiscall(std::vector<DataObject> arguments, DataObject returnType, size_t alignment = 4); - ~x86MsThiscall() override = default; - }; -} - -#endif // DYNO_ARCH_X86 \ No newline at end of file diff --git a/vendor/dynohook/linuxsteamrt64/include/dynohook/core.h b/vendor/dynohook/linuxsteamrt64/include/dynohook/core.h deleted file mode 100644 index fcf1a6cf3..000000000 --- a/vendor/dynohook/linuxsteamrt64/include/dynohook/core.h +++ /dev/null @@ -1,16 +0,0 @@ -#pragma once - -#define NONCOPYABLE(x) x(const x&) = delete; \ - x(x&&) = delete; \ - x& operator=(const x&) = delete; \ - x& operator=(x&&) = delete; - -#define ITERATABLE(t, o) std::vector<t>::iterator begin() { return o.begin(); } \ - std::vector<t>::iterator end() { return o.end(); } \ - std::vector<t>::reverse_iterator rbegin() { return o.rbegin(); } \ - std::vector<t>::reverse_iterator rend() { return o.rend(); } \ - [[nodiscard]] std::vector<t>::const_iterator begin() const { return o.begin(); } \ - [[nodiscard]] std::vector<t>::const_iterator end() const { return o.end(); } \ - [[nodiscard]] std::vector<t>::const_reverse_iterator rbegin() const { return o.rbegin(); } \ - [[nodiscard]] std::vector<t>::const_reverse_iterator rend() const { return o.rend(); } \ - diff --git a/vendor/dynohook/linuxsteamrt64/include/dynohook/decoder.h b/vendor/dynohook/linuxsteamrt64/include/dynohook/decoder.h deleted file mode 100644 index 0c825796f..000000000 --- a/vendor/dynohook/linuxsteamrt64/include/dynohook/decoder.h +++ /dev/null @@ -1,32 +0,0 @@ -#pragma once - -namespace dyno { - enum class RelativeInstruction : uint8_t { - CALL, - BRANCH, // jcc, loopcc - RIP_RELATIV - }; - - /** - * @brief Decodes the target binary and provides utilities to work with assembly instructions - * - * Uses the Zydis Disassembler to analyse and/or relocate assembler instructions. - */ - class Decoder { - public: - Decoder(); - ~Decoder(); - - std::vector<uint8_t> relocate(void* sourceAddress, size_t length, void* targetAddress, bool restrictedRelocation = false) const; - void printInstructions(void* address, size_t byteCount) const; - size_t getLengthOfInstructions(void* sourceAddress, size_t length) const; -#if DYNO_ARCH_X86 == 64 - std::vector<uint8_t*> findRelativeInstructionsOfType(void* startAddress, RelativeInstruction type, size_t length) const; - bool calculateRipRelativeMemoryAccessBounds(void* sourceAddress, size_t length, int64_t& lowestAddress, int64_t& highestAddress) const; -#endif // DYNO_ARCH_X86 - - private: - // we use a void pointer here since we don't want forward declare the ZydisDecoder - void* m_zydisDecoder; - }; -} \ No newline at end of file diff --git a/vendor/dynohook/linuxsteamrt64/include/dynohook/detour.h b/vendor/dynohook/linuxsteamrt64/include/dynohook/detour.h deleted file mode 100644 index 954edd942..000000000 --- a/vendor/dynohook/linuxsteamrt64/include/dynohook/detour.h +++ /dev/null @@ -1,35 +0,0 @@ -#pragma once - -#include "hook.h" - -namespace dyno { - class Detour : public Hook { - public: - Detour(void* pFunc, const ConvFunc& convention); - ~Detour() override; - - void* getOriginal() const override { - return m_trampoline; - } - - bool operator==(void* pFunc) { - return m_func == pFunc; - } - - private: - bool createTrampoline(bool restrictedRelocation); - - protected: - // address of the original function - void* m_func; - - // address of the trampoline - void* m_trampoline; - - // instructions of the original function - std::unique_ptr<uint8_t[]> m_originalBytes; - - // length of the original instructions - size_t m_hookLength; - }; -} \ No newline at end of file diff --git a/vendor/dynohook/linuxsteamrt64/include/dynohook/hook.h b/vendor/dynohook/linuxsteamrt64/include/dynohook/hook.h deleted file mode 100644 index f8bbbdb16..000000000 --- a/vendor/dynohook/linuxsteamrt64/include/dynohook/hook.h +++ /dev/null @@ -1,160 +0,0 @@ -#pragma once - -#include "registers.h" -#include "convention.h" - -namespace asmjit { inline namespace _abi_1_10 { - namespace x86 { - class Assembler; - } - } -} - -namespace dyno { - enum class HookType : bool { - Pre, // callback will be executed before the original function - Post // callback will be executed after the original function - }; - - enum class ReturnAction : uint8_t { - Ignored, // handler didn't take any action - Handled, // we did something, but real function should still be called - Override, // call real function, but use my return value - Supercede // skip real function; use my return value - }; - - class Hook; - typedef ReturnAction (*HookHandler)(HookType, Hook&); - using ConvFunc = std::function<CallingConvention*()>; - - /** - * @brief Creates and manages hooks at the beginning of a function. - * - * This hooking method requires knowledge of parameters and calling convention of the target function. - */ - class Hook { - public: - /** - * @brief Creates a new function hook. - * @param func The address of the function to hook. - * @param convention The calling convention of <func>. - */ - Hook(const ConvFunc& convention); - virtual ~Hook() = default; - NONCOPYABLE(Hook); - - /** - * @brief Adds a hook handler to the hook. - * @param hookType The hook type. - * @param handler The hook handler that should be added. - */ - void addCallback(HookType hookType, HookHandler* handler); - - /** - * @brief Removes a hook handler to the hook. - * @param hookType The hook type. - * @param handler The hook handler that should be removed. - */ - void removeCallback(HookType hookType, HookHandler* handler); - - /** - * @brief Checks if a hook handler is already added. - * @param hookType The hook type. - * @param handler The hook handler that should be checked. - * @return - */ - bool isCallbackRegistered(HookType hookType, HookHandler* handler) const; - - /** - * @brief Checks if there are any hook handlers added to this hook. - * @return - */ - bool areCallbacksRegistered() const; - - template<class T> - T getArgument(size_t index) const { - return *(T*) m_callingConvention->getArgumentPtr(index, m_registers); - } - - template<class T> - void setArgument(size_t index, T value) { - void* argumentPtr = m_callingConvention->getArgumentPtr(index, m_registers); - *(T*) argumentPtr = value; - m_callingConvention->onArgumentPtrChanged(index, m_registers, argumentPtr); - } - - template<class T> - T getReturnValue() const { - return *(T*) m_callingConvention->getReturnPtr(m_registers); - } - - template<class T> - void setReturnValue(T value) { - void* returnPtr = m_callingConvention->getReturnPtr(m_registers); - *(T*) returnPtr = value; - m_callingConvention->onReturnPtrChanged(m_registers, returnPtr); - } - - void* getBridge() const { - return m_bridge; - } - - virtual void* getOriginal() const = 0; - - protected: - bool createBridge() const; - bool createPostCallback() const; - - private: - typedef asmjit::x86::Assembler Assembler; - - void writeModifyReturnAddress(Assembler& a) const; - void writeCallHandler(Assembler& a, HookType hookType) const; - void writeSaveRegisters(Assembler& a, HookType hookType) const; - void writeRestoreRegisters(Assembler& a, HookType hookType) const; - void writeSaveScratchRegisters(Assembler& a) const; - void writeRestoreScratchRegisters(Assembler& a) const; - void writeRegToMem(Assembler& a, const Register& reg, HookType hookType = HookType::Pre) const; - void writeMemToReg(Assembler& a, const Register& reg, HookType hookType = HookType::Pre) const; - -#ifdef DYNO_PLATFORM_MSVC -#pragma optimize ("", off) -#elif DYNO_PLATFORM_GCC_COMPATIBLE -#pragma OPT push_options -#pragma OPT optimize ("O0") -#endif - - DYNO_NOINLINE ReturnAction DYNO_CDECL hookHandler(HookType hookType); - DYNO_NOINLINE void* DYNO_CDECL getReturnAddress(void* stackPtr); - DYNO_NOINLINE void DYNO_CDECL setReturnAddress(void* retAddr, void* stackPtr); - -#ifdef DYNO_PLATFORM_MSVC -#pragma optimize ("", on) -#elif DYNO_PLATFORM_GCC_COMPATIBLE -#pragma OPT pop_options -#endif - - protected: - // address of the bridge - void* m_bridge; - - // address of new return - void* m_newRetAddr; - - // interface if the calling convention - std::unique_ptr<CallingConvention> m_callingConvention; - - // register storage - Registers m_registers; - Registers m_scratchRegisters; - - // save the last return action of the pre HookHandler for use in the post handler. - std::vector<ReturnAction> m_lastPreReturnAction; - - // individual return's stack for stack pointers - std::map<void*, std::vector<void*>> m_retAddr; - - // callbacks list - std::map<HookType, std::vector<HookHandler*>> m_handlers; - }; -} \ No newline at end of file diff --git a/vendor/dynohook/linuxsteamrt64/include/dynohook/manager.h b/vendor/dynohook/linuxsteamrt64/include/dynohook/manager.h deleted file mode 100644 index 99d0cbe9b..000000000 --- a/vendor/dynohook/linuxsteamrt64/include/dynohook/manager.h +++ /dev/null @@ -1,93 +0,0 @@ -#pragma once - -#include "convention.h" -#include "hook.h" -#include "vtable.h" -#include "detour.h" - -namespace dyno { - - class HookManager { - private: - HookManager() = default; - ~HookManager() = default; - - public: - NONCOPYABLE(HookManager); - - /** - * @brief Creates a detour hook for a given function. - * If the function was already hooked, the existing Hook instance will be returned. - * @param pFunc address to apply the hook to. - * @param convention - * @return NULL or the Hook instance. - */ - Hook* hook(void* pFunc, const ConvFunc& convention); - - /** - * @brief Creates a function hook inside the virtual function table. - * If the function was already hooked, the existing Hook instance will be returned. - * @param pClass address of the class to instantiate hook on. - * @param index index of the function to hook inside the virtual function table. (starting at 0) - * @param convention - * @return NULL or the Hook instance. - */ - Hook* hook(void* pClass, size_t index, const ConvFunc& convention); - - /** - * @brief Removes all callbacks and restores the original function. - * @param pFunc address to apply the hook to. - * @return true if the function was hooked previously and is unhooked now. False otherwhise. - */ - bool unhook(void* pFunc); - - /** - * @brief Removes all callbacks and restores the original function. - * @param pClass address of the class to instantiate hook on. - * @param index index of the function to hook inside the virtual function table. (starting at 0) - * @return true if the function was hooked previously and is unhooked now. False otherwhise. - */ - bool unhook(void* pClass, size_t index); - - /** - * @brief Finds the hook for a given function. - * @param pFunc address to apply the hook to. - * @return NULL or the found Hook instance. - */ - Hook* find(void* pFunc) const; - - /** - * @brief Finds the hook for a given class and virtual function index. - * @param pClass address of the class to instantiate hook on. - * @param index index of the function to hook inside the virtual function table. (starting at 0) - * @return NULL or the found Hook instance. - */ - Hook* find(void* pClass, size_t index) const; - - /** - * @brief Removes all callbacks and restores all functions. - */ - void unhookAll(); - - /** - * @brief Unhooks all previously hooked functions in the virtual function table. - * @param pClass address of the class to instantiate hook on. - */ - void unhookAll(void* pClass); - - /** - * @brief Unhooks all previously virtual hooked functions. - */ - void clearCache(); - - /** - * @return Returns a pointer to a static HookManager object. - */ - static HookManager& Get(); - - public: - std::vector<std::unique_ptr<Detour>> m_detours; - std::vector<std::unique_ptr<VTable>> m_vtables; - std::map<void*, std::shared_ptr<VTHook>> m_vthooks; - }; -} \ No newline at end of file diff --git a/vendor/dynohook/linuxsteamrt64/include/dynohook/memory.h b/vendor/dynohook/linuxsteamrt64/include/dynohook/memory.h deleted file mode 100644 index f2f12b3a1..000000000 --- a/vendor/dynohook/linuxsteamrt64/include/dynohook/memory.h +++ /dev/null @@ -1,55 +0,0 @@ -#pragma once - -namespace dyno { - - class Memory { - public: - static void* AllocateMemory(void* address, size_t size); - static void FreeMemory(void* address, size_t size); - static size_t GetPageSize(); - }; - - // unsafe enum by design to allow binary OR - enum ProtFlag : uint8_t { - UNSET = 0, // value means this give no information about protection state (un-read) - X = 1 << 1, - R = 1 << 2, - W = 1 << 3, - S = 1 << 4, - P = 1 << 5, - N = 1 << 6, // value equaling the linux flag PROT_UNSET (read the prot, and the prot is unset) - RWX = R | W | X - }; - - int TranslateProtection(ProtFlag flags); - ProtFlag TranslateProtection(int prot); - - class MemoryProtect { - public: - MemoryProtect(void* addr, size_t size, ProtFlag flags); - ~MemoryProtect(); - NONCOPYABLE(MemoryProtect); - - private: - bool protect(void* addr, size_t size, ProtFlag flags); - - void* m_address; - size_t m_size; - ProtFlag m_flags; - ProtFlag m_oldProtection; - }; - -// Credit to Dogmatt on unknowncheats.me for IsValidPtr -#if DYNO_ARCH_X86 == 64 -#define _PTR_MAX_VALUE (void*)0x000F000000000000 -#elif DYNO_ARCH_X86 == 32 -#define _PTR_MAX_VALUE (void*)0xFFF00000 -#endif -#define _PTR_MIN_VALUE (void*)0x10000 - - inline bool IsValidPtr(void* ptr) { return (ptr != nullptr) && (ptr >= _PTR_MIN_VALUE) && (ptr < _PTR_MAX_VALUE); } -} - -dyno::ProtFlag operator|(dyno::ProtFlag lhs, dyno::ProtFlag rhs); -bool operator&(dyno::ProtFlag lhs, dyno::ProtFlag rhs); -//std::ostream& operator<<(std::ostream& os, dyno::ProtFlag v); \ No newline at end of file diff --git a/vendor/dynohook/linuxsteamrt64/include/dynohook/platform.h b/vendor/dynohook/linuxsteamrt64/include/dynohook/platform.h deleted file mode 100644 index 4b77e8fa3..000000000 --- a/vendor/dynohook/linuxsteamrt64/include/dynohook/platform.h +++ /dev/null @@ -1,217 +0,0 @@ -#pragma once - -/// https://github.com/steinwurf/platform - -// here we create a number of defines to make it easy to choose between -// different compilers, operatings systems and CPU architectures. -// some information about the defines used can be found here: -// http://sourceforge.net/p/predef/wiki/Architectures/ - -// detect operating systems -#if defined(__linux__) -#define DYNO_PLATFORM_LINUX 1 -#if defined(__ANDROID__) -#define DYNO_PLATFORM_ANDROID 1 -#endif -#elif defined(_WIN32) -#define DYNO_PLATFORM_WINDOWS 1 -#if defined(WINAPI_FAMILY) -#include <winapifamily.h> -#if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_PHONE_APP) -#define DYNO_PLATFORM_WINDOWS_PHONE 1 -#endif -#endif -#elif defined(__APPLE__) -#define DYNO_PLATFORM_APPLE 1 -// detect iOS before MacOSX (__MACH__ is also defined for iOS) -#if defined(IPHONE) -#define DYNO_PLATFORM_IOS 1 -#elif defined(__MACH__) -#define DYNO_PLATFORM_MAC 1 -#endif -#elif defined(__EMSCRIPTEN__) -#define DYNO_PLATFORM_EMSCRIPTEN 1 -#else -#error "Unable to determine operating system" -#endif - -// detect compilers and CPU architectures -// note: clang also defines __GNUC__ since it aims to be compatible with GCC. -// therefore we need to check for __clang__ or __llvm__ first. -#if defined(__clang__) || defined(__llvm__) -#define DYNO_PLATFORM_CLANG 1 -#define DYNO_PLATFORM_GCC_COMPATIBLE 1 -#if defined(__i386__) || defined(__x86_64__) -#define DYNO_PLATFORM_X86 1 -#define DYNO_PLATFORM_CLANG_X86 1 -#define DYNO_PLATFORM_GCC_COMPATIBLE_X86 1 -#elif defined(__arm__) || defined(__arm64__) || defined(__aarch64__) -#define DYNO_PLATFORM_ARM 1 -#define DYNO_PLATFORM_CLANG_ARM 1 -#define DYNO_PLATFORM_GCC_COMPATIBLE_ARM 1 -#elif defined(__mips__) -#define DYNO_PLATFORM_MIPS 1 -#define DYNO_PLATFORM_CLANG_MIPS 1 -#define DYNO_PLATFORM_GCC_COMPATIBLE_MIPS 1 -#elif defined(__asmjs__) -#define DYNO_PLATFORM_ASMJS 1 -#define DYNO_PLATFORM_CLANG_ASMJS 1 -#define DYNO_PLATFORM_GCC_COMPATIBLE_ASMJS 1 -#endif -#elif defined(__GNUC__) -#define DYNO_PLATFORM_GCC 1 -#define DYNO_PLATFORM_GCC_COMPATIBLE 1 -#if defined(__i386__) || defined(__x86_64__) -#define DYNO_PLATFORM_X86 1 -#define DYNO_PLATFORM_GCC_X86 1 -#define DYNO_PLATFORM_GCC_COMPATIBLE_X86 1 -#elif defined(__arm__) || defined(__arm64__) || defined(__aarch64__) -#define DYNO_PLATFORM_ARM 1 -#define DYNO_PLATFORM_GCC_ARM 1 -#define DYNO_PLATFORM_GCC_COMPATIBLE_ARM 1 -#elif defined(__mips__) -#define DYNO_PLATFORM_MIPS 1 -#define DYNO_PLATFORM_GCC_MIPS 1 -#define DYNO_PLATFORM_GCC_COMPATIBLE_MIPS 1 -#endif -#elif defined(_MSC_VER) -#define DYNO_PLATFORM_MSVC 1 -#if defined(_M_IX86) || defined(_M_X64) -#define DYNO_PLATFORM_X86 1 -#define DYNO_PLATFORM_MSVC_X86 1 -#elif defined(_M_ARM) || defined(_M_ARMT) -#define DYNO_PLATFORM_ARM 1 -#define DYNO_PLATFORM_MSVC_ARM 1 -#endif -#else -#error "Unable to determine compiler" -#endif - -// define macros for supported CPU instruction sets -#if defined(DYNO_PLATFORM_GCC_COMPATIBLE) -#if defined(__MMX__) -#define DYNO_PLATFORM_MMX 1 -#endif -#if defined(__SSE__) -#define DYNO_PLATFORM_SSE 1 -#endif -#if defined(__SSE2__) -#define DYNO_PLATFORM_SSE2 1 -#endif -#if defined(__SSE3__) -#define DYNO_PLATFORM_SSE3 1 -#endif -#if defined(__SSSE3__) -#define DYNO_PLATFORM_SSSE3 1 -#endif -#if defined(__SSE4_1__) -#define DYNO_PLATFORM_SSE41 1 -#endif -#if defined(__SSE4_2__) -#define DYNO_PLATFORM_SSE42 1 -#endif -#if defined(__PCLMUL__) -#define DYNO_PLATFORM_PCLMUL 1 -#endif -#if defined(__AVX__) -#define DYNO_PLATFORM_AVX 1 -#endif -#if defined(__AVX2__) -#define DYNO_PLATFORM_AVX2 1 -#endif -#if defined(__ARM_NEON__) || defined(__ARM_NEON) -#define DYNO_PLATFORM_NEON 1 -#endif -// first, check the PLATFORM_WINDOWS_PHONE define, because -// the X86 instructions sets are not supported on the Windows Phone emulator -#elif defined(DYNO_PLATFORM_WINDOWS_PHONE) -#if defined(DYNO_PLATFORM_MSVC_ARM) -// NEON introduced in VS2012 -#if (_MSC_VER >= 1700) -#define DYNO_PLATFORM_NEON 1 -#endif -#endif -#elif defined(DYNO_PLATFORM_MSVC_X86) -// MMX, SSE and SSE2 introduced in VS2003 -#if (_MSC_VER >= 1310) -#define DYNO_PLATFORM_MMX 1 -#define DYNO_PLATFORM_SSE 1 -#define DYNO_PLATFORM_SSE2 1 -#endif -// SSE3 introduced in VS2005 -#if (_MSC_VER >= 1400) -#define DYNO_PLATFORM_SSE3 1 -#endif -// SSSE3, SSE4.1, SSE4.2, PCLMUL introduced in VS2008 -#if (_MSC_VER >= 1500) -#define DYNO_PLATFORM_SSSE3 1 -#define DYNO_PLATFORM_SSE41 1 -#define DYNO_PLATFORM_SSE42 1 -#define DYNO_PLATFORM_PCLMUL 1 -#endif -// AVX and AVX2 introduced in VS2012 -#if (_MSC_VER >= 1700) -#define DYNO_PLATFORM_AVX 1 -#define DYNO_PLATFORM_AVX2 1 -#endif -#endif - -// define macros for architecture type -#if DYNO_PLATFORM_X86 -#if UINTPTR_MAX == UINT64_MAX -#define DYNO_ARCH_X86 64 -#elif UINTPTR_MAX == UINT32_MAX -#define DYNO_ARCH_X86 32 -#else -#error "Unable to determine architecture type" -#endif -#endif - -// function attributes -#if !defined(DYNO_BUILD_DEBUG) && defined(__GNUC__) -#define DYNO_FORCE_INLINE inline __attribute__((__always_inline__)) -#elif !defined(DYNO_BUILD_DEBUG) && defined(_MSC_VER) -#define DYNO_FORCE_INLINE __forceinline -#else -#define DYNO_FORCE_INLINE inline -#endif - -#if defined(__GNUC__) -#define DYNO_NOINLINE __attribute__((__noinline__)) -#define DYNO_NORETURN __attribute__((__noreturn__)) -#elif defined(_MSC_VER) -#define DYNO_NOINLINE __declspec(noinline) -#define DYNO_NORETURN __declspec(noreturn) -#else -#define DYNO_NOINLINE -#define DYNO_NORETURN -#endif - -// calling conventions -#if DYNO_ARCH_X86 == 32 && defined(__GNUC__) -#define DYNO_CDECL __attribute__((__cdecl__)) -#define DYNO_STDCALL __attribute__((__stdcall__)) -#define DYNO_FASTCALL __attribute__((__fastcall__)) -#define DYNO_THISCALL __attribute__((__thiscall__)) -#define DYNO_REGPARM(N) __attribute__((__regparm__(N))) -#elif DYNO_ARCH_X86 == 32 && defined(_MSC_VER) -#define DYNO_CDECL __cdecl -#define DYNO_STDCALL __stdcall -#define DYNO_FASTCALL __fastcall -#define DYNO_THISCALL __thiscall -#define DYNO_REGPARM(N) -#else -#define DYNO_CDECL -#define DYNO_STDCALL -#define DYNO_FASTCALL -#define DYNO_THISCALL -#define DYNO_REGPARM(N) -#endif - -#if DYNO_ARCH_X86 && defined(_WIN32) && defined(_MSC_VER) -#define DYNO_VECTORCALL __vectorcall -#elif DYNO_ARCH_X86 && defined(_WIN32) -#define DYNO_VECTORCALL __attribute__((__vectorcall__)) -#else -#define DYNO_VECTORCALL -#endif \ No newline at end of file diff --git a/vendor/dynohook/linuxsteamrt64/include/dynohook/registers.h b/vendor/dynohook/linuxsteamrt64/include/dynohook/registers.h deleted file mode 100644 index 4d361d41f..000000000 --- a/vendor/dynohook/linuxsteamrt64/include/dynohook/registers.h +++ /dev/null @@ -1,369 +0,0 @@ -#pragma once - -namespace dyno { - enum RegisterType : uint8_t { - // no register at all. - NONE, - - // ======================================================================== - // >> 8-bit General purpose registers - // ======================================================================== - AL, - CL, - DL, - BL, - -#if DYNO_ARCH_X86 == 64 - SPL, - BPL, - SIL, - DIL, - R8B, - R9B, - R10B, - R11B, - R12B, - R13B, - R14B, - R15B, -#endif // DYNO_ARCH_X86 - - AH, - CH, - DH, - BH, - - // ======================================================================== - // >> 16-bit General purpose registers - // ======================================================================== - AX, - CX, - DX, - BX, - SP, - BP, - SI, - DI, - -#if DYNO_ARCH_X86 == 64 - R8W, - R9W, - R10W, - R11W, - R12W, - R13W, - R14W, - R15W, -#endif // DYNO_ARCH_X86 - - // ======================================================================== - // >> 32-bit General purpose registers - // ======================================================================== - EAX, - ECX, - EDX, - EBX, - ESP, - EBP, - ESI, - EDI, - -#if DYNO_ARCH_X86 == 64 - R8D, - R9D, - R10D, - R11D, - R12D, - R13D, - R14D, - R15D, -#endif // DYNO_ARCH_X86 - - // ======================================================================== - // >> 64-bit General purpose registers - // ======================================================================== -#if DYNO_ARCH_X86 == 64 - RAX, - RCX, - RDX, - RBX, - RSP, - RBP, - RSI, - RDI, - - R8, - R9, - R10, - R11, - R12, - R13, - R14, - R15, -#endif // DYNO_ARCH_X86 - - // ======================================================================== - // >> 64-bit MM (MMX) registers - // ======================================================================== - MM0, - MM1, - MM2, - MM3, - MM4, - MM5, - MM6, - MM7, - - // ======================================================================== - // >> 128-bit XMM registers - // ======================================================================== - XMM0, - XMM1, - XMM2, - XMM3, - XMM4, - XMM5, - XMM6, - XMM7, -#if DYNO_ARCH_X86 == 64 - XMM8, - XMM9, - XMM10, - XMM11, - XMM12, - XMM13, - XMM14, - XMM15, -#ifdef DYNO_PLATFORM_AVX512 - XMM16, - XMM17, - XMM18, - XMM19, - XMM20, - XMM21, - XMM22, - XMM23, - XMM24, - XMM25, - XMM26, - XMM27, - XMM28, - XMM29, - XMM30, - XMM31, -#endif // DYNO_PLATFORM_AVX512 -#endif // DYNO_ARCH_X86 - - // ======================================================================== - // >> 256-bit YMM registers - // ======================================================================== -#if DYNO_ARCH_X86 == 64 - YMM0, - YMM1, - YMM2, - YMM3, - YMM4, - YMM5, - YMM6, - YMM7, - YMM8, - YMM9, - YMM10, - YMM11, - YMM12, - YMM13, - YMM14, - YMM15, -#ifdef DYNO_PLATFORM_AVX512 - YMM16, - YMM17, - YMM18, - YMM19, - YMM20, - YMM21, - YMM22, - YMM23, - YMM24, - YMM25, - YMM26, - YMM27, - YMM28, - YMM29, - YMM30, - YMM31, -#endif // DYNO_PLATFORM_AVX512 -#endif // DYNO_ARCH_X86 - - // ======================================================================== - // >> 512-bit ZMM registers - // ======================================================================== -#ifdef DYNO_PLATFORM_AVX512 - ZMM0, - ZMM1, - ZMM2, - ZMM3, - ZMM4, - ZMM5, - ZMM6, - ZMM7, - ZMM8, - ZMM9, - ZMM10, - ZMM11, - ZMM12, - ZMM13, - ZMM14, - ZMM15, - ZMM16, - ZMM17, - ZMM18, - ZMM19, - ZMM20, - ZMM21, - ZMM22, - ZMM23, - ZMM24, - ZMM25, - ZMM26, - ZMM27, - ZMM28, - ZMM29, - ZMM30, - ZMM31, -#endif // DYNO_PLATFORM_AVX512 - - // ======================================================================== - // >> 16-bit Segment registers - // ======================================================================== - CS, - SS, - DS, - ES, - FS, - GS, - - // ======================================================================== - // >> 80-bit FPU registers - // ======================================================================== -#if DYNO_ARCH_X86 == 32 - ST0, - ST1, - ST2, - ST3, - ST4, - ST5, - ST6, - ST7, -#endif // DYNO_ARCH_X86 - - // ======================================================================== - // >> Maximum value of this enum. - // ======================================================================== - REG_COUNT - }; - - enum RegisterSize : uint8_t { - SIZE_INVALID = 0, - SIZE_BYTE = 1, - SIZE_WORD = 2, - SIZE_DWORD = 4, - SIZE_QWORD = 8, - SIZE_TWORD = 10, - SIZE_XMMWORD = 16, - SIZE_YMMWORD = 32, - SIZE_ZMMWORD = 64 - }; - - struct RegisterInfo { - std::string_view name; - RegisterSize size; - uint8_t alignment; - }; - - const RegisterInfo& RegisterTypeInfo(RegisterType regType); - - size_t RegisterTypeToSSEIndex(RegisterType regType); - RegisterType SSEIndexToRegisterType(size_t index, size_t size = 0); - - class Register { - public: - Register(RegisterType type, RegisterSize size, uint8_t alignment = 0); - ~Register(); - Register(const Register& other); - Register(Register&& other) noexcept; - Register& operator=(const Register&) = delete; - Register& operator=(Register&&) = delete; - - void* operator*() const { - return m_address; - } - - template<class T> - T getAddress() const { - return (T) m_address; - } - - template<class T> - T getValue() const { - return *(T*) m_address; - } - - template<class T> - void setValue(T value) { - *(T*) m_address = value; - } - - template<class T> - T getPointerValue(size_t offset = 0) const { - return *(T*) (getValue<uintptr_t>() + offset); - } - - template<class T> - void setPointerValue(T value, size_t offset = 0) { - *(T*) (getValue<uintptr_t>() + offset) = value; - } - - RegisterType getType() const { - return m_type; - } - - operator RegisterType() const { - return m_type; - } - - private: - void* m_address; - RegisterType m_type; - RegisterSize m_size; - uint8_t m_alignment; - }; - - class Registers { - public: - Registers(const std::vector<RegisterType>& registers); - ~Registers() = default; - NONCOPYABLE(Registers); - - ITERATABLE(Register, m_registers); - - const Register& operator[](RegisterType regType) const; - const Register& at(RegisterType regType, bool reverse = false) const; - - size_t size() const { - return m_registers.size(); - } - - static const std::vector<RegisterType>& ScratchList() { - return s_Scratch; - } - - private: - std::vector<Register> m_registers; - - static Register s_None; - static std::vector<RegisterType> s_Scratch; - }; - -} - -//std::ostream& operator<<(std::ostream& os, dyno::RegisterType v); \ No newline at end of file diff --git a/vendor/dynohook/linuxsteamrt64/include/dynohook/trampoline.h b/vendor/dynohook/linuxsteamrt64/include/dynohook/trampoline.h deleted file mode 100644 index cc70e39d0..000000000 --- a/vendor/dynohook/linuxsteamrt64/include/dynohook/trampoline.h +++ /dev/null @@ -1,15 +0,0 @@ -#pragma once - -namespace dyno { - /** - * @brief Allocates trampolines and provides information about it. - */ - class Trampoline { - public: - static void* HandleTrampolineAllocation(void* sourceAddress, bool& restrictedRelocation); - static void* AllocateTrampoline(void* sourceAddress, bool& restrictedRelocation); -#if DYNO_ARCH_X86 == 64 - static void* AllocateTrampolineWithinBounds(void* sourceAddress, int64_t lowestRipRelativeMemoryAccess, int64_t highestRipRelativeMemoryAddress, bool& restrictedRelocation); -#endif // DYNO_ARCH_X86 - }; -} \ No newline at end of file diff --git a/vendor/dynohook/linuxsteamrt64/include/dynohook/vtable.h b/vendor/dynohook/linuxsteamrt64/include/dynohook/vtable.h deleted file mode 100644 index c6d2fe7d0..000000000 --- a/vendor/dynohook/linuxsteamrt64/include/dynohook/vtable.h +++ /dev/null @@ -1,37 +0,0 @@ -#pragma once - -#include "vthook.h" - -namespace dyno { - - typedef std::function<std::shared_ptr<VTHook>(void*)> HookSupplier; - - class VTable { - public: - VTable(void* pClass); - ~VTable(); - NONCOPYABLE(VTable); - - Hook* hook(const HookSupplier& supplier, size_t index); - bool unhook(size_t index); - - Hook* find(size_t index) const; - bool empty() const { - return m_hooked.empty(); - } - - bool operator==(void* pClass) const { - return m_class == pClass; - } - - private: - static size_t GetVFuncCount(void** vtable); - - void*** m_class; - void** m_origVtable; - size_t m_vFuncCount; - std::unique_ptr<void*[]> m_newVtable; - - std::map<size_t, std::shared_ptr<VTHook>> m_hooked; - }; -} diff --git a/vendor/dynohook/linuxsteamrt64/include/dynohook/vthook.h b/vendor/dynohook/linuxsteamrt64/include/dynohook/vthook.h deleted file mode 100644 index 352d77583..000000000 --- a/vendor/dynohook/linuxsteamrt64/include/dynohook/vthook.h +++ /dev/null @@ -1,22 +0,0 @@ -#pragma once - -#include "hook.h" - -namespace dyno { - class VTHook : public Hook { - public: - VTHook(void* pFunc, const ConvFunc& convention); - ~VTHook() override; - - void* getOriginal() const override { - return m_func; - } - - private: - // address of the original function - void* m_func; - - // address of the page - void* m_page; - }; -} diff --git a/vendor/dynohook/linuxsteamrt64/lib/libdynohook.a b/vendor/dynohook/linuxsteamrt64/lib/libdynohook.a deleted file mode 100644 index 7ac1c4b210d381398bcac73afb7256d992146f30..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 262184 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 diff --git a/vendor/dynohook/win64/include/dynohook/convention.h b/vendor/dynohook/win64/include/dynohook/convention.h deleted file mode 100644 index 691d9e21c..000000000 --- a/vendor/dynohook/win64/include/dynohook/convention.h +++ /dev/null @@ -1,244 +0,0 @@ -#pragma once - -#include "registers.h" - -namespace dyno { - enum class DataType : uint8_t { - Void, - Bool, - Char, - UChar, - Short, - UShort, - Int, - UInt, - Long, - ULong, - LongLong, - ULongLong, - Float, - Double, - Pointer, - String, - M128, - M256, - M512, - Object - }; - - struct DataObject { - DataType type; - RegisterType reg; - uint16_t size; - - DataObject(DataType type, RegisterType reg = NONE, uint16_t size = 0) : type(type), reg(reg), size(size) {} - - bool isFlt() const { return type == DataType::Float || type == DataType::Double; } - bool isVec() const { return type == DataType::M128 || type == DataType::M256 || type == DataType::M512; } - }; - - /** - * Returns the size after applying alignment. - * @param size The size that should be aligned. - * @param alignment The alignment that should be used. - * @return - */ - inline size_t Align(size_t size, size_t alignment) { - size_t unaligned = size % alignment; - if (unaligned == 0) - return size; - - return size + (alignment - unaligned); - } - - /** - * @brief Returns the size of a data type after applying alignment. - * @param type The data type you would like to get the size of. - * @param alignment The alignment that should be used. - * @return - */ - inline size_t GetDataTypeSize(DataType type, size_t alignment) { - switch (type) { - case DataType::Void: - return 0; - case DataType::Bool: - return Align(sizeof(bool), alignment); - case DataType::Char: - return Align(sizeof(char), alignment); - case DataType::UChar: - return Align(sizeof(unsigned char), alignment); - case DataType::Short: - return Align(sizeof(short), alignment); - case DataType::UShort: - return Align(sizeof(unsigned short), alignment); - case DataType::Int: - return Align(sizeof(int), alignment); - case DataType::UInt: - return Align(sizeof(unsigned int), alignment); - case DataType::Long: - return Align(sizeof(long), alignment); - case DataType::ULong: - return Align(sizeof(unsigned long), alignment); - case DataType::LongLong: - return Align(sizeof(long long), alignment); - case DataType::ULongLong: - return Align(sizeof(unsigned long long), alignment); - case DataType::Float: - return Align(sizeof(float), alignment); - case DataType::Double: - return Align(sizeof(double), alignment); - case DataType::Pointer: - return Align(sizeof(void*), alignment); - case DataType::String: - return Align(sizeof(char*), alignment); - case DataType::M128: - return Align(sizeof(float) * 4, alignment); - case DataType::M256: - return Align(sizeof(float) * 8, alignment); - case DataType::M512: - return Align(sizeof(float) * 16, alignment); - default: - puts("[Warning] - Convention - Unknown data type."); - } - return 0; - } - - /** - * @brief This is the base class for every calling convention. - * - * Inherit from this class to create your own calling convention. - */ - class CallingConvention { - public: - /** - * @brief Initializes the calling convention. - * @param arguments A list of DataType_t objects, which define the arguments of the function. - * @param returnType The return type of the function. - * @param alignment - */ - CallingConvention(std::vector<DataObject> arguments, DataObject returnType, size_t alignment); - virtual ~CallingConvention() = default; - NONCOPYABLE(CallingConvention); - - /** - * @brief This should return a list of RegisterType values. These registers will be saved for later access. - * @return - */ - virtual std::vector<RegisterType> getRegisters() = 0; - - /** - * Returns a pointer to the memory at the stack. - * @param registers A snapshot of all saved registers. - * @return - */ - virtual void** getStackArgumentPtr(const Registers& registers) = 0; - - /** - * @brief Returns a pointer to the argument at the given index. - * @param index The index of the argument. - * @param registers A snapshot of all saved registers. - * @return - */ - virtual void* getArgumentPtr(size_t index, const Registers& registers) = 0; - - /** - * @brief - * @param index The index of the argument. - * @param registers A snapshot of all saved registers. - * @param argumentPtr A pointer to the argument at the given index. - */ - virtual void onArgumentPtrChanged(size_t index, const Registers& registers, void* argumentPtr) = 0; - - /** - * @brief Returns a pointer to the return value. - * @param registers A snapshot of all saved registers. - * @return - */ - virtual void* getReturnPtr(const Registers& registers) = 0; - - /** - * - * @param registers A snapshot of all saved registers. - * @param returnPtr A pointer to the return value. - */ - virtual void onReturnPtrChanged(const Registers& registers, void* returnPtr) = 0; - - /** - * @brief Save the return value in a seperate buffer, so we can restore it after calling the original function. - * @param registers A snapshot of all saved registers. - */ - virtual void saveReturnValue(const Registers& registers); - - /** - * @brief - * @param registers A snapshot of all saved registers. - */ - virtual void restoreReturnValue(const Registers& registers); - - /** - * @brief Save the value of arguments in a seperate buffer for the post callback. - * Compiler optimizations might cause the registers or stack space to be reused - * and overwritten during function execution if the value isn't needed anymore - * at some point. This leads to different values in the post hook. - * @param registers A snapshot of all saved registers. - */ - virtual void saveCallArguments(const Registers& registers); - - /** - * @brief Restore the value of arguments from a seperate buffer for the call. - * @param registers A snapshot of all saved registers. - */ - virtual void restoreCallArguments(const Registers& registers); - - /** - * @brief Returns the number of bytes that should be added to the stack to clean up. - * @return - */ - virtual size_t getPopSize() { - return 0; - } - - /** - * Returns the number of bytes for the buffer to store all the arguments that are passed in a stack in. - * @return - */ - size_t getArgStackSize() const { - return m_stackSize; - } - - /** - * @brief Returns the number of bytes for the buffer to store all the arguments that are passed in a register in. - * @return - */ - size_t getArgRegisterSize() const { - return m_registerSize; - } - - const std::vector<DataObject>& getArguments() const { - return m_arguments; - } - - DataObject getReturn() const { - return m_return; - } - - size_t getAlignment() const { - return m_alignment; - } - - protected: - void init(); - - protected: - std::vector<DataObject> m_arguments; - DataObject m_return; - size_t m_alignment; - size_t m_stackSize; - size_t m_registerSize; - - // save the return in case we call the original function and want to override the return again. - std::vector<std::unique_ptr<uint8_t[]>> m_savedReturnBuffers; - // save call arguments in case the function reuses the space and overwrites the values for the post hook. - std::vector<std::unique_ptr<uint8_t[]>> m_savedCallArguments; - }; -} \ No newline at end of file diff --git a/vendor/dynohook/win64/include/dynohook/conventions/x64/x64MsFastcall.h b/vendor/dynohook/win64/include/dynohook/conventions/x64/x64MsFastcall.h deleted file mode 100644 index 0c631bb74..000000000 --- a/vendor/dynohook/win64/include/dynohook/conventions/x64/x64MsFastcall.h +++ /dev/null @@ -1,44 +0,0 @@ -#pragma once - -#if DYNO_ARCH_X86 == 64 - -#include "dynohook/convention.h" - -/* - Source: DynCall manual and Windows docs - - Registers: - - rax = return value - - rsp = stack pointer - - xmm0 = floating point return value - - Parameter passing: - - first parameter in rcx/xmm0, second parameter in rdx/xmm1, third parameter in r8/xmm2, forth parameter in r9/xmm3, rest on the stack - - stack parameter order: right-to-left - - caller cleans up the stack - - alignment: 8 bytes - - shadow space: 32 bytes (for arguments) - - Return values: - - return values of pointer or intergral type (<= 64 bits) are returned via the rax register - - integers > 64 bits are returned via the rax registers as pointers - - floating pointer types are returned via the xmm0 register -*/ -namespace dyno { - class x64MsFastcall : public CallingConvention { - public: - x64MsFastcall(std::vector<DataObject> arguments, DataObject returnType, size_t alignment = 8); - ~x64MsFastcall() override = default; - - std::vector<RegisterType> getRegisters() override; - void** getStackArgumentPtr(const Registers &registers) override; - - void* getArgumentPtr(size_t index, const Registers& registers) override; - void onArgumentPtrChanged(size_t index, const Registers& registers, void* argumentPtr) override; - - void* getReturnPtr(const Registers& registers) override; - void onReturnPtrChanged(const Registers& registers, void* returnPtr) override; - }; -} - -#endif // DYNO_ARCH_X86 \ No newline at end of file diff --git a/vendor/dynohook/win64/include/dynohook/conventions/x64/x64SystemVcall.h b/vendor/dynohook/win64/include/dynohook/conventions/x64/x64SystemVcall.h deleted file mode 100644 index bbb561073..000000000 --- a/vendor/dynohook/win64/include/dynohook/conventions/x64/x64SystemVcall.h +++ /dev/null @@ -1,49 +0,0 @@ -#pragma once - -#if DYNO_ARCH_X86 == 64 - -#include "dynohook/convention.h" - -/* - Source: DynCall manual and Windows docs - - Registers: - - rax = return value - - rdx = return value - - rsp = stack pointer - - [xyz]mm0 = floating point return value - - [xyz]mm1 = floating point return value - - Parameter passing: - - rdi, rsi, rdx, rcx, r8, r9, rest on the stack - - [xyz]mm0-[xyz]mm7 used for passing floating values - - stack parameter order: right-to-left - - caller cleans up the stack - - alignment: 8 bytes - - Return values: - - return values of pointer or intergral type (<= 64 bits) are returned via the rax register - - integers > 64 bits are returned via the rax and rdx registers - - floating pointer types are returned via the xmm0 and xmm1 register -*/ -namespace dyno { - class x64SystemVcall : public CallingConvention { - public: - x64SystemVcall(std::vector<DataObject> arguments, DataObject returnType, size_t alignment = SIZE_QWORD); - ~x64SystemVcall() override; - - std::vector<RegisterType> getRegisters() override; - void** getStackArgumentPtr(const Registers &registers) override; - - void* getArgumentPtr(size_t index, const Registers& registers) override; - void onArgumentPtrChanged(size_t index, const Registers& registers, void* argumentPtr) override; - - void* getReturnPtr(const Registers& registers) override; - void onReturnPtrChanged(const Registers& registers, void* returnPtr) override; - - private: - void* m_returnBuffer; - }; -} - -#endif // DYNO_ARCH_X86 \ No newline at end of file diff --git a/vendor/dynohook/win64/include/dynohook/conventions/x86/x86GccCdecl.h b/vendor/dynohook/win64/include/dynohook/conventions/x86/x86GccCdecl.h deleted file mode 100644 index e78685743..000000000 --- a/vendor/dynohook/win64/include/dynohook/conventions/x86/x86GccCdecl.h +++ /dev/null @@ -1,11 +0,0 @@ -#pragma once - -#if DYNO_ARCH_X86 == 32 - -#include "x86MsCdecl.h" - -namespace dyno { - typedef x86MsCdecl x86GccCdecl; -} - -#endif // DYNO_ARCH_X86 \ No newline at end of file diff --git a/vendor/dynohook/win64/include/dynohook/conventions/x86/x86GccThiscall.h b/vendor/dynohook/win64/include/dynohook/conventions/x86/x86GccThiscall.h deleted file mode 100644 index b756371f7..000000000 --- a/vendor/dynohook/win64/include/dynohook/conventions/x86/x86GccThiscall.h +++ /dev/null @@ -1,12 +0,0 @@ -#pragma once - -#if DYNO_ARCH_X86 == 32 - -#include "dynohook/convention.h" -#include "x86MsCdecl.h" - -namespace dyno { - typedef x86MsCdecl x86GccThiscall; -} - -#endif // DYNO_ARCH_X86 \ No newline at end of file diff --git a/vendor/dynohook/win64/include/dynohook/conventions/x86/x86MsCdecl.h b/vendor/dynohook/win64/include/dynohook/conventions/x86/x86MsCdecl.h deleted file mode 100644 index d9ec3377f..000000000 --- a/vendor/dynohook/win64/include/dynohook/conventions/x86/x86MsCdecl.h +++ /dev/null @@ -1,47 +0,0 @@ -#pragma once - -#if DYNO_ARCH_X86 == 32 - -#include "dynohook/convention.h" - -/* - Source: DynCall manual and Windows docs - - Registers: - - eax = return value - - edx = return value - - esp = stack pointer - - st0 = floating point return value - - Parameter passing: - - stack parameter order: right-to-left - - caller cleans up the stack - - all arguments are pushed onto the stack - - alignment: 4 bytes - - Return values: - - return values of pointer or intergral type (<= 32 bits) are returned via the eax register - - integers > 32 bits are returned via the eax and edx registers - - floating pointer types are returned via the st0 register -*/ -namespace dyno { - class x86MsCdecl : public CallingConvention { - public: - x86MsCdecl(std::vector<DataObject> arguments, DataObject returnType, size_t alignment = 4); - ~x86MsCdecl() override; - - std::vector<RegisterType> getRegisters() override; - void** getStackArgumentPtr(const Registers& registers) override; - - void* getArgumentPtr(size_t index, const Registers& registers) override; - void onArgumentPtrChanged(size_t index, const Registers& registers, void* argumentPtr) override; - - void* getReturnPtr(const Registers& registers) override; - void onReturnPtrChanged(const Registers& registers, void* returnPtr) override; - - private: - void* m_returnBuffer; - }; -} - -#endif // DYNO_ARCH_X86 \ No newline at end of file diff --git a/vendor/dynohook/win64/include/dynohook/conventions/x86/x86MsFastcall.h b/vendor/dynohook/win64/include/dynohook/conventions/x86/x86MsFastcall.h deleted file mode 100644 index c77193c84..000000000 --- a/vendor/dynohook/win64/include/dynohook/conventions/x86/x86MsFastcall.h +++ /dev/null @@ -1,36 +0,0 @@ -#pragma once - -#if DYNO_ARCH_X86 == 32 - -#include "dynohook/convention.h" -#include "x86MsStdcall.h" - -/* - Source: DynCall manual and Windows docs - - Registers: - - eax = return value - - edx = return value - - esp = stack pointer - - st0 = floating point return value - - Parameter passing: - - first parameter in ecx, second parameter in edx, rest on the stack - - stack parameter order: right-to-left - - callee cleans up the stack - - alignment: 4 bytes - - Return values: - - return values of pointer or intergral type (<= 32 bits) are returned via the eax register - - integers > 32 bits are returned via the eax and edx registers - - floating pointer types are returned via the st0 register -*/ -namespace dyno { - class x86MsFastcall : public x86MsStdcall { - public: - x86MsFastcall(std::vector<DataObject> arguments, DataObject returnType, size_t alignment = 4); - ~x86MsFastcall() override = default; - }; -} - -#endif // DYNO_ARCH_X86 \ No newline at end of file diff --git a/vendor/dynohook/win64/include/dynohook/conventions/x86/x86MsStdcall.h b/vendor/dynohook/win64/include/dynohook/conventions/x86/x86MsStdcall.h deleted file mode 100644 index 87e36b965..000000000 --- a/vendor/dynohook/win64/include/dynohook/conventions/x86/x86MsStdcall.h +++ /dev/null @@ -1,38 +0,0 @@ -#pragma once - -#if DYNO_ARCH_X86 == 32 - -#include "dynohook/convention.h" -#include "x86MsCdecl.h" - -/* - Source: DynCall manual and Windows docs - - Registers: - - eax = return value - - edx = return value - - esp = stack pointer - - st0 = floating point return value - - Parameter passing: - - stack parameter order: right-to-left - - callee cleans up the stack - - all arguments are pushed onto the stack - - alignment: 4 bytes - - Return values: - - return values of pointer or intergral type (<= 32 bits) are returned via the eax register - - integers > 32 bits are returned via the eax and edx registers - - floating pointer types are returned via the st0 register -*/ -namespace dyno { - class x86MsStdcall : public x86MsCdecl { - public: - x86MsStdcall(std::vector<DataObject> arguments, DataObject returnType, size_t alignment = 4); - ~x86MsStdcall() override = default; - - size_t getPopSize() override; - }; -} - -#endif // DYNO_ARCH_X86 \ No newline at end of file diff --git a/vendor/dynohook/win64/include/dynohook/conventions/x86/x86MsThiscall.h b/vendor/dynohook/win64/include/dynohook/conventions/x86/x86MsThiscall.h deleted file mode 100644 index 1e5cc357d..000000000 --- a/vendor/dynohook/win64/include/dynohook/conventions/x86/x86MsThiscall.h +++ /dev/null @@ -1,37 +0,0 @@ -#pragma once - -#if DYNO_ARCH_X86 == 32 - -#include "dynohook/convention.h" -#include "x86MsStdcall.h" - -/* - Source: DynCall manual and Windows docs - - Registers: - - eax = return value - - ecx = this pointer - - edx = return value - - esp = stack pointer - - st0 = floating point return value - - Parameter passing: - - stack parameter order: right-to-left - - callee cleans up the stack - - all other arguments are pushed onto the stack - - alignment: 4 bytes - - Return values: - - return values of pointer or intergral type (<= 32 bits) are returned via the eax register - - integers > 32 bits are returned via the eax and edx registers - - floating pointer types are returned via the st0 register -*/ -namespace dyno { - class x86MsThiscall : public x86MsStdcall { - public: - x86MsThiscall(std::vector<DataObject> arguments, DataObject returnType, size_t alignment = 4); - ~x86MsThiscall() override = default; - }; -} - -#endif // DYNO_ARCH_X86 \ No newline at end of file diff --git a/vendor/dynohook/win64/include/dynohook/core.h b/vendor/dynohook/win64/include/dynohook/core.h deleted file mode 100644 index fcf1a6cf3..000000000 --- a/vendor/dynohook/win64/include/dynohook/core.h +++ /dev/null @@ -1,16 +0,0 @@ -#pragma once - -#define NONCOPYABLE(x) x(const x&) = delete; \ - x(x&&) = delete; \ - x& operator=(const x&) = delete; \ - x& operator=(x&&) = delete; - -#define ITERATABLE(t, o) std::vector<t>::iterator begin() { return o.begin(); } \ - std::vector<t>::iterator end() { return o.end(); } \ - std::vector<t>::reverse_iterator rbegin() { return o.rbegin(); } \ - std::vector<t>::reverse_iterator rend() { return o.rend(); } \ - [[nodiscard]] std::vector<t>::const_iterator begin() const { return o.begin(); } \ - [[nodiscard]] std::vector<t>::const_iterator end() const { return o.end(); } \ - [[nodiscard]] std::vector<t>::const_reverse_iterator rbegin() const { return o.rbegin(); } \ - [[nodiscard]] std::vector<t>::const_reverse_iterator rend() const { return o.rend(); } \ - diff --git a/vendor/dynohook/win64/include/dynohook/decoder.h b/vendor/dynohook/win64/include/dynohook/decoder.h deleted file mode 100644 index 0c825796f..000000000 --- a/vendor/dynohook/win64/include/dynohook/decoder.h +++ /dev/null @@ -1,32 +0,0 @@ -#pragma once - -namespace dyno { - enum class RelativeInstruction : uint8_t { - CALL, - BRANCH, // jcc, loopcc - RIP_RELATIV - }; - - /** - * @brief Decodes the target binary and provides utilities to work with assembly instructions - * - * Uses the Zydis Disassembler to analyse and/or relocate assembler instructions. - */ - class Decoder { - public: - Decoder(); - ~Decoder(); - - std::vector<uint8_t> relocate(void* sourceAddress, size_t length, void* targetAddress, bool restrictedRelocation = false) const; - void printInstructions(void* address, size_t byteCount) const; - size_t getLengthOfInstructions(void* sourceAddress, size_t length) const; -#if DYNO_ARCH_X86 == 64 - std::vector<uint8_t*> findRelativeInstructionsOfType(void* startAddress, RelativeInstruction type, size_t length) const; - bool calculateRipRelativeMemoryAccessBounds(void* sourceAddress, size_t length, int64_t& lowestAddress, int64_t& highestAddress) const; -#endif // DYNO_ARCH_X86 - - private: - // we use a void pointer here since we don't want forward declare the ZydisDecoder - void* m_zydisDecoder; - }; -} \ No newline at end of file diff --git a/vendor/dynohook/win64/include/dynohook/detour.h b/vendor/dynohook/win64/include/dynohook/detour.h deleted file mode 100644 index 954edd942..000000000 --- a/vendor/dynohook/win64/include/dynohook/detour.h +++ /dev/null @@ -1,35 +0,0 @@ -#pragma once - -#include "hook.h" - -namespace dyno { - class Detour : public Hook { - public: - Detour(void* pFunc, const ConvFunc& convention); - ~Detour() override; - - void* getOriginal() const override { - return m_trampoline; - } - - bool operator==(void* pFunc) { - return m_func == pFunc; - } - - private: - bool createTrampoline(bool restrictedRelocation); - - protected: - // address of the original function - void* m_func; - - // address of the trampoline - void* m_trampoline; - - // instructions of the original function - std::unique_ptr<uint8_t[]> m_originalBytes; - - // length of the original instructions - size_t m_hookLength; - }; -} \ No newline at end of file diff --git a/vendor/dynohook/win64/include/dynohook/hook.h b/vendor/dynohook/win64/include/dynohook/hook.h deleted file mode 100644 index f8bbbdb16..000000000 --- a/vendor/dynohook/win64/include/dynohook/hook.h +++ /dev/null @@ -1,160 +0,0 @@ -#pragma once - -#include "registers.h" -#include "convention.h" - -namespace asmjit { inline namespace _abi_1_10 { - namespace x86 { - class Assembler; - } - } -} - -namespace dyno { - enum class HookType : bool { - Pre, // callback will be executed before the original function - Post // callback will be executed after the original function - }; - - enum class ReturnAction : uint8_t { - Ignored, // handler didn't take any action - Handled, // we did something, but real function should still be called - Override, // call real function, but use my return value - Supercede // skip real function; use my return value - }; - - class Hook; - typedef ReturnAction (*HookHandler)(HookType, Hook&); - using ConvFunc = std::function<CallingConvention*()>; - - /** - * @brief Creates and manages hooks at the beginning of a function. - * - * This hooking method requires knowledge of parameters and calling convention of the target function. - */ - class Hook { - public: - /** - * @brief Creates a new function hook. - * @param func The address of the function to hook. - * @param convention The calling convention of <func>. - */ - Hook(const ConvFunc& convention); - virtual ~Hook() = default; - NONCOPYABLE(Hook); - - /** - * @brief Adds a hook handler to the hook. - * @param hookType The hook type. - * @param handler The hook handler that should be added. - */ - void addCallback(HookType hookType, HookHandler* handler); - - /** - * @brief Removes a hook handler to the hook. - * @param hookType The hook type. - * @param handler The hook handler that should be removed. - */ - void removeCallback(HookType hookType, HookHandler* handler); - - /** - * @brief Checks if a hook handler is already added. - * @param hookType The hook type. - * @param handler The hook handler that should be checked. - * @return - */ - bool isCallbackRegistered(HookType hookType, HookHandler* handler) const; - - /** - * @brief Checks if there are any hook handlers added to this hook. - * @return - */ - bool areCallbacksRegistered() const; - - template<class T> - T getArgument(size_t index) const { - return *(T*) m_callingConvention->getArgumentPtr(index, m_registers); - } - - template<class T> - void setArgument(size_t index, T value) { - void* argumentPtr = m_callingConvention->getArgumentPtr(index, m_registers); - *(T*) argumentPtr = value; - m_callingConvention->onArgumentPtrChanged(index, m_registers, argumentPtr); - } - - template<class T> - T getReturnValue() const { - return *(T*) m_callingConvention->getReturnPtr(m_registers); - } - - template<class T> - void setReturnValue(T value) { - void* returnPtr = m_callingConvention->getReturnPtr(m_registers); - *(T*) returnPtr = value; - m_callingConvention->onReturnPtrChanged(m_registers, returnPtr); - } - - void* getBridge() const { - return m_bridge; - } - - virtual void* getOriginal() const = 0; - - protected: - bool createBridge() const; - bool createPostCallback() const; - - private: - typedef asmjit::x86::Assembler Assembler; - - void writeModifyReturnAddress(Assembler& a) const; - void writeCallHandler(Assembler& a, HookType hookType) const; - void writeSaveRegisters(Assembler& a, HookType hookType) const; - void writeRestoreRegisters(Assembler& a, HookType hookType) const; - void writeSaveScratchRegisters(Assembler& a) const; - void writeRestoreScratchRegisters(Assembler& a) const; - void writeRegToMem(Assembler& a, const Register& reg, HookType hookType = HookType::Pre) const; - void writeMemToReg(Assembler& a, const Register& reg, HookType hookType = HookType::Pre) const; - -#ifdef DYNO_PLATFORM_MSVC -#pragma optimize ("", off) -#elif DYNO_PLATFORM_GCC_COMPATIBLE -#pragma OPT push_options -#pragma OPT optimize ("O0") -#endif - - DYNO_NOINLINE ReturnAction DYNO_CDECL hookHandler(HookType hookType); - DYNO_NOINLINE void* DYNO_CDECL getReturnAddress(void* stackPtr); - DYNO_NOINLINE void DYNO_CDECL setReturnAddress(void* retAddr, void* stackPtr); - -#ifdef DYNO_PLATFORM_MSVC -#pragma optimize ("", on) -#elif DYNO_PLATFORM_GCC_COMPATIBLE -#pragma OPT pop_options -#endif - - protected: - // address of the bridge - void* m_bridge; - - // address of new return - void* m_newRetAddr; - - // interface if the calling convention - std::unique_ptr<CallingConvention> m_callingConvention; - - // register storage - Registers m_registers; - Registers m_scratchRegisters; - - // save the last return action of the pre HookHandler for use in the post handler. - std::vector<ReturnAction> m_lastPreReturnAction; - - // individual return's stack for stack pointers - std::map<void*, std::vector<void*>> m_retAddr; - - // callbacks list - std::map<HookType, std::vector<HookHandler*>> m_handlers; - }; -} \ No newline at end of file diff --git a/vendor/dynohook/win64/include/dynohook/manager.h b/vendor/dynohook/win64/include/dynohook/manager.h deleted file mode 100644 index 99d0cbe9b..000000000 --- a/vendor/dynohook/win64/include/dynohook/manager.h +++ /dev/null @@ -1,93 +0,0 @@ -#pragma once - -#include "convention.h" -#include "hook.h" -#include "vtable.h" -#include "detour.h" - -namespace dyno { - - class HookManager { - private: - HookManager() = default; - ~HookManager() = default; - - public: - NONCOPYABLE(HookManager); - - /** - * @brief Creates a detour hook for a given function. - * If the function was already hooked, the existing Hook instance will be returned. - * @param pFunc address to apply the hook to. - * @param convention - * @return NULL or the Hook instance. - */ - Hook* hook(void* pFunc, const ConvFunc& convention); - - /** - * @brief Creates a function hook inside the virtual function table. - * If the function was already hooked, the existing Hook instance will be returned. - * @param pClass address of the class to instantiate hook on. - * @param index index of the function to hook inside the virtual function table. (starting at 0) - * @param convention - * @return NULL or the Hook instance. - */ - Hook* hook(void* pClass, size_t index, const ConvFunc& convention); - - /** - * @brief Removes all callbacks and restores the original function. - * @param pFunc address to apply the hook to. - * @return true if the function was hooked previously and is unhooked now. False otherwhise. - */ - bool unhook(void* pFunc); - - /** - * @brief Removes all callbacks and restores the original function. - * @param pClass address of the class to instantiate hook on. - * @param index index of the function to hook inside the virtual function table. (starting at 0) - * @return true if the function was hooked previously and is unhooked now. False otherwhise. - */ - bool unhook(void* pClass, size_t index); - - /** - * @brief Finds the hook for a given function. - * @param pFunc address to apply the hook to. - * @return NULL or the found Hook instance. - */ - Hook* find(void* pFunc) const; - - /** - * @brief Finds the hook for a given class and virtual function index. - * @param pClass address of the class to instantiate hook on. - * @param index index of the function to hook inside the virtual function table. (starting at 0) - * @return NULL or the found Hook instance. - */ - Hook* find(void* pClass, size_t index) const; - - /** - * @brief Removes all callbacks and restores all functions. - */ - void unhookAll(); - - /** - * @brief Unhooks all previously hooked functions in the virtual function table. - * @param pClass address of the class to instantiate hook on. - */ - void unhookAll(void* pClass); - - /** - * @brief Unhooks all previously virtual hooked functions. - */ - void clearCache(); - - /** - * @return Returns a pointer to a static HookManager object. - */ - static HookManager& Get(); - - public: - std::vector<std::unique_ptr<Detour>> m_detours; - std::vector<std::unique_ptr<VTable>> m_vtables; - std::map<void*, std::shared_ptr<VTHook>> m_vthooks; - }; -} \ No newline at end of file diff --git a/vendor/dynohook/win64/include/dynohook/memory.h b/vendor/dynohook/win64/include/dynohook/memory.h deleted file mode 100644 index f2f12b3a1..000000000 --- a/vendor/dynohook/win64/include/dynohook/memory.h +++ /dev/null @@ -1,55 +0,0 @@ -#pragma once - -namespace dyno { - - class Memory { - public: - static void* AllocateMemory(void* address, size_t size); - static void FreeMemory(void* address, size_t size); - static size_t GetPageSize(); - }; - - // unsafe enum by design to allow binary OR - enum ProtFlag : uint8_t { - UNSET = 0, // value means this give no information about protection state (un-read) - X = 1 << 1, - R = 1 << 2, - W = 1 << 3, - S = 1 << 4, - P = 1 << 5, - N = 1 << 6, // value equaling the linux flag PROT_UNSET (read the prot, and the prot is unset) - RWX = R | W | X - }; - - int TranslateProtection(ProtFlag flags); - ProtFlag TranslateProtection(int prot); - - class MemoryProtect { - public: - MemoryProtect(void* addr, size_t size, ProtFlag flags); - ~MemoryProtect(); - NONCOPYABLE(MemoryProtect); - - private: - bool protect(void* addr, size_t size, ProtFlag flags); - - void* m_address; - size_t m_size; - ProtFlag m_flags; - ProtFlag m_oldProtection; - }; - -// Credit to Dogmatt on unknowncheats.me for IsValidPtr -#if DYNO_ARCH_X86 == 64 -#define _PTR_MAX_VALUE (void*)0x000F000000000000 -#elif DYNO_ARCH_X86 == 32 -#define _PTR_MAX_VALUE (void*)0xFFF00000 -#endif -#define _PTR_MIN_VALUE (void*)0x10000 - - inline bool IsValidPtr(void* ptr) { return (ptr != nullptr) && (ptr >= _PTR_MIN_VALUE) && (ptr < _PTR_MAX_VALUE); } -} - -dyno::ProtFlag operator|(dyno::ProtFlag lhs, dyno::ProtFlag rhs); -bool operator&(dyno::ProtFlag lhs, dyno::ProtFlag rhs); -//std::ostream& operator<<(std::ostream& os, dyno::ProtFlag v); \ No newline at end of file diff --git a/vendor/dynohook/win64/include/dynohook/platform.h b/vendor/dynohook/win64/include/dynohook/platform.h deleted file mode 100644 index 4b77e8fa3..000000000 --- a/vendor/dynohook/win64/include/dynohook/platform.h +++ /dev/null @@ -1,217 +0,0 @@ -#pragma once - -/// https://github.com/steinwurf/platform - -// here we create a number of defines to make it easy to choose between -// different compilers, operatings systems and CPU architectures. -// some information about the defines used can be found here: -// http://sourceforge.net/p/predef/wiki/Architectures/ - -// detect operating systems -#if defined(__linux__) -#define DYNO_PLATFORM_LINUX 1 -#if defined(__ANDROID__) -#define DYNO_PLATFORM_ANDROID 1 -#endif -#elif defined(_WIN32) -#define DYNO_PLATFORM_WINDOWS 1 -#if defined(WINAPI_FAMILY) -#include <winapifamily.h> -#if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_PHONE_APP) -#define DYNO_PLATFORM_WINDOWS_PHONE 1 -#endif -#endif -#elif defined(__APPLE__) -#define DYNO_PLATFORM_APPLE 1 -// detect iOS before MacOSX (__MACH__ is also defined for iOS) -#if defined(IPHONE) -#define DYNO_PLATFORM_IOS 1 -#elif defined(__MACH__) -#define DYNO_PLATFORM_MAC 1 -#endif -#elif defined(__EMSCRIPTEN__) -#define DYNO_PLATFORM_EMSCRIPTEN 1 -#else -#error "Unable to determine operating system" -#endif - -// detect compilers and CPU architectures -// note: clang also defines __GNUC__ since it aims to be compatible with GCC. -// therefore we need to check for __clang__ or __llvm__ first. -#if defined(__clang__) || defined(__llvm__) -#define DYNO_PLATFORM_CLANG 1 -#define DYNO_PLATFORM_GCC_COMPATIBLE 1 -#if defined(__i386__) || defined(__x86_64__) -#define DYNO_PLATFORM_X86 1 -#define DYNO_PLATFORM_CLANG_X86 1 -#define DYNO_PLATFORM_GCC_COMPATIBLE_X86 1 -#elif defined(__arm__) || defined(__arm64__) || defined(__aarch64__) -#define DYNO_PLATFORM_ARM 1 -#define DYNO_PLATFORM_CLANG_ARM 1 -#define DYNO_PLATFORM_GCC_COMPATIBLE_ARM 1 -#elif defined(__mips__) -#define DYNO_PLATFORM_MIPS 1 -#define DYNO_PLATFORM_CLANG_MIPS 1 -#define DYNO_PLATFORM_GCC_COMPATIBLE_MIPS 1 -#elif defined(__asmjs__) -#define DYNO_PLATFORM_ASMJS 1 -#define DYNO_PLATFORM_CLANG_ASMJS 1 -#define DYNO_PLATFORM_GCC_COMPATIBLE_ASMJS 1 -#endif -#elif defined(__GNUC__) -#define DYNO_PLATFORM_GCC 1 -#define DYNO_PLATFORM_GCC_COMPATIBLE 1 -#if defined(__i386__) || defined(__x86_64__) -#define DYNO_PLATFORM_X86 1 -#define DYNO_PLATFORM_GCC_X86 1 -#define DYNO_PLATFORM_GCC_COMPATIBLE_X86 1 -#elif defined(__arm__) || defined(__arm64__) || defined(__aarch64__) -#define DYNO_PLATFORM_ARM 1 -#define DYNO_PLATFORM_GCC_ARM 1 -#define DYNO_PLATFORM_GCC_COMPATIBLE_ARM 1 -#elif defined(__mips__) -#define DYNO_PLATFORM_MIPS 1 -#define DYNO_PLATFORM_GCC_MIPS 1 -#define DYNO_PLATFORM_GCC_COMPATIBLE_MIPS 1 -#endif -#elif defined(_MSC_VER) -#define DYNO_PLATFORM_MSVC 1 -#if defined(_M_IX86) || defined(_M_X64) -#define DYNO_PLATFORM_X86 1 -#define DYNO_PLATFORM_MSVC_X86 1 -#elif defined(_M_ARM) || defined(_M_ARMT) -#define DYNO_PLATFORM_ARM 1 -#define DYNO_PLATFORM_MSVC_ARM 1 -#endif -#else -#error "Unable to determine compiler" -#endif - -// define macros for supported CPU instruction sets -#if defined(DYNO_PLATFORM_GCC_COMPATIBLE) -#if defined(__MMX__) -#define DYNO_PLATFORM_MMX 1 -#endif -#if defined(__SSE__) -#define DYNO_PLATFORM_SSE 1 -#endif -#if defined(__SSE2__) -#define DYNO_PLATFORM_SSE2 1 -#endif -#if defined(__SSE3__) -#define DYNO_PLATFORM_SSE3 1 -#endif -#if defined(__SSSE3__) -#define DYNO_PLATFORM_SSSE3 1 -#endif -#if defined(__SSE4_1__) -#define DYNO_PLATFORM_SSE41 1 -#endif -#if defined(__SSE4_2__) -#define DYNO_PLATFORM_SSE42 1 -#endif -#if defined(__PCLMUL__) -#define DYNO_PLATFORM_PCLMUL 1 -#endif -#if defined(__AVX__) -#define DYNO_PLATFORM_AVX 1 -#endif -#if defined(__AVX2__) -#define DYNO_PLATFORM_AVX2 1 -#endif -#if defined(__ARM_NEON__) || defined(__ARM_NEON) -#define DYNO_PLATFORM_NEON 1 -#endif -// first, check the PLATFORM_WINDOWS_PHONE define, because -// the X86 instructions sets are not supported on the Windows Phone emulator -#elif defined(DYNO_PLATFORM_WINDOWS_PHONE) -#if defined(DYNO_PLATFORM_MSVC_ARM) -// NEON introduced in VS2012 -#if (_MSC_VER >= 1700) -#define DYNO_PLATFORM_NEON 1 -#endif -#endif -#elif defined(DYNO_PLATFORM_MSVC_X86) -// MMX, SSE and SSE2 introduced in VS2003 -#if (_MSC_VER >= 1310) -#define DYNO_PLATFORM_MMX 1 -#define DYNO_PLATFORM_SSE 1 -#define DYNO_PLATFORM_SSE2 1 -#endif -// SSE3 introduced in VS2005 -#if (_MSC_VER >= 1400) -#define DYNO_PLATFORM_SSE3 1 -#endif -// SSSE3, SSE4.1, SSE4.2, PCLMUL introduced in VS2008 -#if (_MSC_VER >= 1500) -#define DYNO_PLATFORM_SSSE3 1 -#define DYNO_PLATFORM_SSE41 1 -#define DYNO_PLATFORM_SSE42 1 -#define DYNO_PLATFORM_PCLMUL 1 -#endif -// AVX and AVX2 introduced in VS2012 -#if (_MSC_VER >= 1700) -#define DYNO_PLATFORM_AVX 1 -#define DYNO_PLATFORM_AVX2 1 -#endif -#endif - -// define macros for architecture type -#if DYNO_PLATFORM_X86 -#if UINTPTR_MAX == UINT64_MAX -#define DYNO_ARCH_X86 64 -#elif UINTPTR_MAX == UINT32_MAX -#define DYNO_ARCH_X86 32 -#else -#error "Unable to determine architecture type" -#endif -#endif - -// function attributes -#if !defined(DYNO_BUILD_DEBUG) && defined(__GNUC__) -#define DYNO_FORCE_INLINE inline __attribute__((__always_inline__)) -#elif !defined(DYNO_BUILD_DEBUG) && defined(_MSC_VER) -#define DYNO_FORCE_INLINE __forceinline -#else -#define DYNO_FORCE_INLINE inline -#endif - -#if defined(__GNUC__) -#define DYNO_NOINLINE __attribute__((__noinline__)) -#define DYNO_NORETURN __attribute__((__noreturn__)) -#elif defined(_MSC_VER) -#define DYNO_NOINLINE __declspec(noinline) -#define DYNO_NORETURN __declspec(noreturn) -#else -#define DYNO_NOINLINE -#define DYNO_NORETURN -#endif - -// calling conventions -#if DYNO_ARCH_X86 == 32 && defined(__GNUC__) -#define DYNO_CDECL __attribute__((__cdecl__)) -#define DYNO_STDCALL __attribute__((__stdcall__)) -#define DYNO_FASTCALL __attribute__((__fastcall__)) -#define DYNO_THISCALL __attribute__((__thiscall__)) -#define DYNO_REGPARM(N) __attribute__((__regparm__(N))) -#elif DYNO_ARCH_X86 == 32 && defined(_MSC_VER) -#define DYNO_CDECL __cdecl -#define DYNO_STDCALL __stdcall -#define DYNO_FASTCALL __fastcall -#define DYNO_THISCALL __thiscall -#define DYNO_REGPARM(N) -#else -#define DYNO_CDECL -#define DYNO_STDCALL -#define DYNO_FASTCALL -#define DYNO_THISCALL -#define DYNO_REGPARM(N) -#endif - -#if DYNO_ARCH_X86 && defined(_WIN32) && defined(_MSC_VER) -#define DYNO_VECTORCALL __vectorcall -#elif DYNO_ARCH_X86 && defined(_WIN32) -#define DYNO_VECTORCALL __attribute__((__vectorcall__)) -#else -#define DYNO_VECTORCALL -#endif \ No newline at end of file diff --git a/vendor/dynohook/win64/include/dynohook/registers.h b/vendor/dynohook/win64/include/dynohook/registers.h deleted file mode 100644 index 4d361d41f..000000000 --- a/vendor/dynohook/win64/include/dynohook/registers.h +++ /dev/null @@ -1,369 +0,0 @@ -#pragma once - -namespace dyno { - enum RegisterType : uint8_t { - // no register at all. - NONE, - - // ======================================================================== - // >> 8-bit General purpose registers - // ======================================================================== - AL, - CL, - DL, - BL, - -#if DYNO_ARCH_X86 == 64 - SPL, - BPL, - SIL, - DIL, - R8B, - R9B, - R10B, - R11B, - R12B, - R13B, - R14B, - R15B, -#endif // DYNO_ARCH_X86 - - AH, - CH, - DH, - BH, - - // ======================================================================== - // >> 16-bit General purpose registers - // ======================================================================== - AX, - CX, - DX, - BX, - SP, - BP, - SI, - DI, - -#if DYNO_ARCH_X86 == 64 - R8W, - R9W, - R10W, - R11W, - R12W, - R13W, - R14W, - R15W, -#endif // DYNO_ARCH_X86 - - // ======================================================================== - // >> 32-bit General purpose registers - // ======================================================================== - EAX, - ECX, - EDX, - EBX, - ESP, - EBP, - ESI, - EDI, - -#if DYNO_ARCH_X86 == 64 - R8D, - R9D, - R10D, - R11D, - R12D, - R13D, - R14D, - R15D, -#endif // DYNO_ARCH_X86 - - // ======================================================================== - // >> 64-bit General purpose registers - // ======================================================================== -#if DYNO_ARCH_X86 == 64 - RAX, - RCX, - RDX, - RBX, - RSP, - RBP, - RSI, - RDI, - - R8, - R9, - R10, - R11, - R12, - R13, - R14, - R15, -#endif // DYNO_ARCH_X86 - - // ======================================================================== - // >> 64-bit MM (MMX) registers - // ======================================================================== - MM0, - MM1, - MM2, - MM3, - MM4, - MM5, - MM6, - MM7, - - // ======================================================================== - // >> 128-bit XMM registers - // ======================================================================== - XMM0, - XMM1, - XMM2, - XMM3, - XMM4, - XMM5, - XMM6, - XMM7, -#if DYNO_ARCH_X86 == 64 - XMM8, - XMM9, - XMM10, - XMM11, - XMM12, - XMM13, - XMM14, - XMM15, -#ifdef DYNO_PLATFORM_AVX512 - XMM16, - XMM17, - XMM18, - XMM19, - XMM20, - XMM21, - XMM22, - XMM23, - XMM24, - XMM25, - XMM26, - XMM27, - XMM28, - XMM29, - XMM30, - XMM31, -#endif // DYNO_PLATFORM_AVX512 -#endif // DYNO_ARCH_X86 - - // ======================================================================== - // >> 256-bit YMM registers - // ======================================================================== -#if DYNO_ARCH_X86 == 64 - YMM0, - YMM1, - YMM2, - YMM3, - YMM4, - YMM5, - YMM6, - YMM7, - YMM8, - YMM9, - YMM10, - YMM11, - YMM12, - YMM13, - YMM14, - YMM15, -#ifdef DYNO_PLATFORM_AVX512 - YMM16, - YMM17, - YMM18, - YMM19, - YMM20, - YMM21, - YMM22, - YMM23, - YMM24, - YMM25, - YMM26, - YMM27, - YMM28, - YMM29, - YMM30, - YMM31, -#endif // DYNO_PLATFORM_AVX512 -#endif // DYNO_ARCH_X86 - - // ======================================================================== - // >> 512-bit ZMM registers - // ======================================================================== -#ifdef DYNO_PLATFORM_AVX512 - ZMM0, - ZMM1, - ZMM2, - ZMM3, - ZMM4, - ZMM5, - ZMM6, - ZMM7, - ZMM8, - ZMM9, - ZMM10, - ZMM11, - ZMM12, - ZMM13, - ZMM14, - ZMM15, - ZMM16, - ZMM17, - ZMM18, - ZMM19, - ZMM20, - ZMM21, - ZMM22, - ZMM23, - ZMM24, - ZMM25, - ZMM26, - ZMM27, - ZMM28, - ZMM29, - ZMM30, - ZMM31, -#endif // DYNO_PLATFORM_AVX512 - - // ======================================================================== - // >> 16-bit Segment registers - // ======================================================================== - CS, - SS, - DS, - ES, - FS, - GS, - - // ======================================================================== - // >> 80-bit FPU registers - // ======================================================================== -#if DYNO_ARCH_X86 == 32 - ST0, - ST1, - ST2, - ST3, - ST4, - ST5, - ST6, - ST7, -#endif // DYNO_ARCH_X86 - - // ======================================================================== - // >> Maximum value of this enum. - // ======================================================================== - REG_COUNT - }; - - enum RegisterSize : uint8_t { - SIZE_INVALID = 0, - SIZE_BYTE = 1, - SIZE_WORD = 2, - SIZE_DWORD = 4, - SIZE_QWORD = 8, - SIZE_TWORD = 10, - SIZE_XMMWORD = 16, - SIZE_YMMWORD = 32, - SIZE_ZMMWORD = 64 - }; - - struct RegisterInfo { - std::string_view name; - RegisterSize size; - uint8_t alignment; - }; - - const RegisterInfo& RegisterTypeInfo(RegisterType regType); - - size_t RegisterTypeToSSEIndex(RegisterType regType); - RegisterType SSEIndexToRegisterType(size_t index, size_t size = 0); - - class Register { - public: - Register(RegisterType type, RegisterSize size, uint8_t alignment = 0); - ~Register(); - Register(const Register& other); - Register(Register&& other) noexcept; - Register& operator=(const Register&) = delete; - Register& operator=(Register&&) = delete; - - void* operator*() const { - return m_address; - } - - template<class T> - T getAddress() const { - return (T) m_address; - } - - template<class T> - T getValue() const { - return *(T*) m_address; - } - - template<class T> - void setValue(T value) { - *(T*) m_address = value; - } - - template<class T> - T getPointerValue(size_t offset = 0) const { - return *(T*) (getValue<uintptr_t>() + offset); - } - - template<class T> - void setPointerValue(T value, size_t offset = 0) { - *(T*) (getValue<uintptr_t>() + offset) = value; - } - - RegisterType getType() const { - return m_type; - } - - operator RegisterType() const { - return m_type; - } - - private: - void* m_address; - RegisterType m_type; - RegisterSize m_size; - uint8_t m_alignment; - }; - - class Registers { - public: - Registers(const std::vector<RegisterType>& registers); - ~Registers() = default; - NONCOPYABLE(Registers); - - ITERATABLE(Register, m_registers); - - const Register& operator[](RegisterType regType) const; - const Register& at(RegisterType regType, bool reverse = false) const; - - size_t size() const { - return m_registers.size(); - } - - static const std::vector<RegisterType>& ScratchList() { - return s_Scratch; - } - - private: - std::vector<Register> m_registers; - - static Register s_None; - static std::vector<RegisterType> s_Scratch; - }; - -} - -//std::ostream& operator<<(std::ostream& os, dyno::RegisterType v); \ No newline at end of file diff --git a/vendor/dynohook/win64/include/dynohook/trampoline.h b/vendor/dynohook/win64/include/dynohook/trampoline.h deleted file mode 100644 index cc70e39d0..000000000 --- a/vendor/dynohook/win64/include/dynohook/trampoline.h +++ /dev/null @@ -1,15 +0,0 @@ -#pragma once - -namespace dyno { - /** - * @brief Allocates trampolines and provides information about it. - */ - class Trampoline { - public: - static void* HandleTrampolineAllocation(void* sourceAddress, bool& restrictedRelocation); - static void* AllocateTrampoline(void* sourceAddress, bool& restrictedRelocation); -#if DYNO_ARCH_X86 == 64 - static void* AllocateTrampolineWithinBounds(void* sourceAddress, int64_t lowestRipRelativeMemoryAccess, int64_t highestRipRelativeMemoryAddress, bool& restrictedRelocation); -#endif // DYNO_ARCH_X86 - }; -} \ No newline at end of file diff --git a/vendor/dynohook/win64/include/dynohook/vtable.h b/vendor/dynohook/win64/include/dynohook/vtable.h deleted file mode 100644 index c6d2fe7d0..000000000 --- a/vendor/dynohook/win64/include/dynohook/vtable.h +++ /dev/null @@ -1,37 +0,0 @@ -#pragma once - -#include "vthook.h" - -namespace dyno { - - typedef std::function<std::shared_ptr<VTHook>(void*)> HookSupplier; - - class VTable { - public: - VTable(void* pClass); - ~VTable(); - NONCOPYABLE(VTable); - - Hook* hook(const HookSupplier& supplier, size_t index); - bool unhook(size_t index); - - Hook* find(size_t index) const; - bool empty() const { - return m_hooked.empty(); - } - - bool operator==(void* pClass) const { - return m_class == pClass; - } - - private: - static size_t GetVFuncCount(void** vtable); - - void*** m_class; - void** m_origVtable; - size_t m_vFuncCount; - std::unique_ptr<void*[]> m_newVtable; - - std::map<size_t, std::shared_ptr<VTHook>> m_hooked; - }; -} diff --git a/vendor/dynohook/win64/include/dynohook/vthook.h b/vendor/dynohook/win64/include/dynohook/vthook.h deleted file mode 100644 index 352d77583..000000000 --- a/vendor/dynohook/win64/include/dynohook/vthook.h +++ /dev/null @@ -1,22 +0,0 @@ -#pragma once - -#include "hook.h" - -namespace dyno { - class VTHook : public Hook { - public: - VTHook(void* pFunc, const ConvFunc& convention); - ~VTHook() override; - - void* getOriginal() const override { - return m_func; - } - - private: - // address of the original function - void* m_func; - - // address of the page - void* m_page; - }; -} diff --git a/vendor/dynohook/win64/lib/dynohook.lib b/vendor/dynohook/win64/lib/dynohook.lib deleted file mode 100644 index 3a72982006602d099b531dbc2a11ee206faf1c1c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2312530 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 Ra@=7ee*aM1iO0ie^FQQFbJhR= diff --git a/vendor/embedder b/vendor/embedder deleted file mode 160000 index 9762f66d7..000000000 --- a/vendor/embedder +++ /dev/null @@ -1 +0,0 @@ -Subproject commit 9762f66d7fb5b32257034b4535c6f3b488673388 diff --git a/vendor/funchook/LICENSE b/vendor/funchook/LICENSE deleted file mode 100644 index 2da840da3..000000000 --- a/vendor/funchook/LICENSE +++ /dev/null @@ -1,360 +0,0 @@ -Funchook is distributed under the terms of the GNU General Public -License version 2 or later with the following clarification and -special exception. - -Linking this library statically or dynamically with other modules is -making a combined work based on this library. Thus, the terms and -conditions of the GNU General Public License cover the whole -combination. - -As a special exception, the copyright holders of this library give you -permission to link this library with independent modules to produce an -executable, regardless of the license terms of these independent -modules, and to copy and distribute the resulting executable under -terms of your choice, provided that you also meet, for each linked -independent module, the terms and conditions of the license of that -module. An independent module is a module which is not derived from or -based on this library. If you modify this library, you must extend this -exception to your version of the library. - -===================================================================== - - GNU GENERAL PUBLIC LICENSE - Version 2, June 1991 - - Copyright (C) 1989, 1991 Free Software Foundation, Inc., - 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA - Everyone is permitted to copy and distribute verbatim copies - of this license document, but changing it is not allowed. - - Preamble - - The licenses for most software are designed to take away your -freedom to share and change it. By contrast, the GNU General Public -License is intended to guarantee your freedom to share and change free -software--to make sure the software is free for all its users. This -General Public License applies to most of the Free Software -Foundation's software and to any other program whose authors commit to -using it. (Some other Free Software Foundation software is covered by -the GNU Lesser General Public License instead.) You can apply it to -your programs, too. - - When we speak of free software, we are referring to freedom, not -price. Our General Public Licenses are designed to make sure that you -have the freedom to distribute copies of free software (and charge for -this service if you wish), that you receive source code or can get it -if you want it, that you can change the software or use pieces of it -in new free programs; and that you know you can do these things. - - To protect your rights, we need to make restrictions that forbid -anyone to deny you these rights or to ask you to surrender the rights. -These restrictions translate to certain responsibilities for you if you -distribute copies of the software, or if you modify it. - - For example, if you distribute copies of such a program, whether -gratis or for a fee, you must give the recipients all the rights that -you have. You must make sure that they, too, receive or can get the -source code. And you must show them these terms so they know their -rights. - - We protect your rights with two steps: (1) copyright the software, and -(2) offer you this license which gives you legal permission to copy, -distribute and/or modify the software. - - Also, for each author's protection and ours, we want to make certain -that everyone understands that there is no warranty for this free -software. If the software is modified by someone else and passed on, we -want its recipients to know that what they have is not the original, so -that any problems introduced by others will not reflect on the original -authors' reputations. - - Finally, any free program is threatened constantly by software -patents. We wish to avoid the danger that redistributors of a free -program will individually obtain patent licenses, in effect making the -program proprietary. To prevent this, we have made it clear that any -patent must be licensed for everyone's free use or not licensed at all. - - The precise terms and conditions for copying, distribution and -modification follow. - - GNU GENERAL PUBLIC LICENSE - TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION - - 0. This License applies to any program or other work which contains -a notice placed by the copyright holder saying it may be distributed -under the terms of this General Public License. The "Program", below, -refers to any such program or work, and a "work based on the Program" -means either the Program or any derivative work under copyright law: -that is to say, a work containing the Program or a portion of it, -either verbatim or with modifications and/or translated into another -language. (Hereinafter, translation is included without limitation in -the term "modification".) Each licensee is addressed as "you". - -Activities other than copying, distribution and modification are not -covered by this License; they are outside its scope. The act of -running the Program is not restricted, and the output from the Program -is covered only if its contents constitute a work based on the -Program (independent of having been made by running the Program). -Whether that is true depends on what the Program does. - - 1. You may copy and distribute verbatim copies of the Program's -source code as you receive it, in any medium, provided that you -conspicuously and appropriately publish on each copy an appropriate -copyright notice and disclaimer of warranty; keep intact all the -notices that refer to this License and to the absence of any warranty; -and give any other recipients of the Program a copy of this License -along with the Program. - -You may charge a fee for the physical act of transferring a copy, and -you may at your option offer warranty protection in exchange for a fee. - - 2. You may modify your copy or copies of the Program or any portion -of it, thus forming a work based on the Program, and copy and -distribute such modifications or work under the terms of Section 1 -above, provided that you also meet all of these conditions: - - a) You must cause the modified files to carry prominent notices - stating that you changed the files and the date of any change. - - b) You must cause any work that you distribute or publish, that in - whole or in part contains or is derived from the Program or any - part thereof, to be licensed as a whole at no charge to all third - parties under the terms of this License. - - c) If the modified program normally reads commands interactively - when run, you must cause it, when started running for such - interactive use in the most ordinary way, to print or display an - announcement including an appropriate copyright notice and a - notice that there is no warranty (or else, saying that you provide - a warranty) and that users may redistribute the program under - these conditions, and telling the user how to view a copy of this - License. (Exception: if the Program itself is interactive but - does not normally print such an announcement, your work based on - the Program is not required to print an announcement.) - -These requirements apply to the modified work as a whole. If -identifiable sections of that work are not derived from the Program, -and can be reasonably considered independent and separate works in -themselves, then this License, and its terms, do not apply to those -sections when you distribute them as separate works. But when you -distribute the same sections as part of a whole which is a work based -on the Program, the distribution of the whole must be on the terms of -this License, whose permissions for other licensees extend to the -entire whole, and thus to each and every part regardless of who wrote it. - -Thus, it is not the intent of this section to claim rights or contest -your rights to work written entirely by you; rather, the intent is to -exercise the right to control the distribution of derivative or -collective works based on the Program. - -In addition, mere aggregation of another work not based on the Program -with the Program (or with a work based on the Program) on a volume of -a storage or distribution medium does not bring the other work under -the scope of this License. - - 3. You may copy and distribute the Program (or a work based on it, -under Section 2) in object code or executable form under the terms of -Sections 1 and 2 above provided that you also do one of the following: - - a) Accompany it with the complete corresponding machine-readable - source code, which must be distributed under the terms of Sections - 1 and 2 above on a medium customarily used for software interchange; or, - - b) Accompany it with a written offer, valid for at least three - years, to give any third party, for a charge no more than your - cost of physically performing source distribution, a complete - machine-readable copy of the corresponding source code, to be - distributed under the terms of Sections 1 and 2 above on a medium - customarily used for software interchange; or, - - c) Accompany it with the information you received as to the offer - to distribute corresponding source code. (This alternative is - allowed only for noncommercial distribution and only if you - received the program in object code or executable form with such - an offer, in accord with Subsection b above.) - -The source code for a work means the preferred form of the work for -making modifications to it. For an executable work, complete source -code means all the source code for all modules it contains, plus any -associated interface definition files, plus the scripts used to -control compilation and installation of the executable. However, as a -special exception, the source code distributed need not include -anything that is normally distributed (in either source or binary -form) with the major components (compiler, kernel, and so on) of the -operating system on which the executable runs, unless that component -itself accompanies the executable. - -If distribution of executable or object code is made by offering -access to copy from a designated place, then offering equivalent -access to copy the source code from the same place counts as -distribution of the source code, even though third parties are not -compelled to copy the source along with the object code. - - 4. You may not copy, modify, sublicense, or distribute the Program -except as expressly provided under this License. Any attempt -otherwise to copy, modify, sublicense or distribute the Program is -void, and will automatically terminate your rights under this License. -However, parties who have received copies, or rights, from you under -this License will not have their licenses terminated so long as such -parties remain in full compliance. - - 5. You are not required to accept this License, since you have not -signed it. However, nothing else grants you permission to modify or -distribute the Program or its derivative works. These actions are -prohibited by law if you do not accept this License. Therefore, by -modifying or distributing the Program (or any work based on the -Program), you indicate your acceptance of this License to do so, and -all its terms and conditions for copying, distributing or modifying -the Program or works based on it. - - 6. Each time you redistribute the Program (or any work based on the -Program), the recipient automatically receives a license from the -original licensor to copy, distribute or modify the Program subject to -these terms and conditions. You may not impose any further -restrictions on the recipients' exercise of the rights granted herein. -You are not responsible for enforcing compliance by third parties to -this License. - - 7. If, as a consequence of a court judgment or allegation of patent -infringement or for any other reason (not limited to patent issues), -conditions are imposed on you (whether by court order, agreement or -otherwise) that contradict the conditions of this License, they do not -excuse you from the conditions of this License. If you cannot -distribute so as to satisfy simultaneously your obligations under this -License and any other pertinent obligations, then as a consequence you -may not distribute the Program at all. For example, if a patent -license would not permit royalty-free redistribution of the Program by -all those who receive copies directly or indirectly through you, then -the only way you could satisfy both it and this License would be to -refrain entirely from distribution of the Program. - -If any portion of this section is held invalid or unenforceable under -any particular circumstance, the balance of the section is intended to -apply and the section as a whole is intended to apply in other -circumstances. - -It is not the purpose of this section to induce you to infringe any -patents or other property right claims or to contest validity of any -such claims; this section has the sole purpose of protecting the -integrity of the free software distribution system, which is -implemented by public license practices. Many people have made -generous contributions to the wide range of software distributed -through that system in reliance on consistent application of that -system; it is up to the author/donor to decide if he or she is willing -to distribute software through any other system and a licensee cannot -impose that choice. - -This section is intended to make thoroughly clear what is believed to -be a consequence of the rest of this License. - - 8. If the distribution and/or use of the Program is restricted in -certain countries either by patents or by copyrighted interfaces, the -original copyright holder who places the Program under this License -may add an explicit geographical distribution limitation excluding -those countries, so that distribution is permitted only in or among -countries not thus excluded. In such case, this License incorporates -the limitation as if written in the body of this License. - - 9. The Free Software Foundation may publish revised and/or new versions -of the General Public License from time to time. Such new versions will -be similar in spirit to the present version, but may differ in detail to -address new problems or concerns. - -Each version is given a distinguishing version number. If the Program -specifies a version number of this License which applies to it and "any -later version", you have the option of following the terms and conditions -either of that version or of any later version published by the Free -Software Foundation. If the Program does not specify a version number of -this License, you may choose any version ever published by the Free Software -Foundation. - - 10. If you wish to incorporate parts of the Program into other free -programs whose distribution conditions are different, write to the author -to ask for permission. For software which is copyrighted by the Free -Software Foundation, write to the Free Software Foundation; we sometimes -make exceptions for this. Our decision will be guided by the two goals -of preserving the free status of all derivatives of our free software and -of promoting the sharing and reuse of software generally. - - NO WARRANTY - - 11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY -FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN -OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES -PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED -OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF -MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS -TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE -PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING, -REPAIR OR CORRECTION. - - 12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING -WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR -REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, -INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING -OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED -TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY -YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER -PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE -POSSIBILITY OF SUCH DAMAGES. - - END OF TERMS AND CONDITIONS - - How to Apply These Terms to Your New Programs - - If you develop a new program, and you want it to be of the greatest -possible use to the public, the best way to achieve this is to make it -free software which everyone can redistribute and change under these terms. - - To do so, attach the following notices to the program. It is safest -to attach them to the start of each source file to most effectively -convey the exclusion of warranty; and each file should have at least -the "copyright" line and a pointer to where the full notice is found. - - <one line to give the program's name and a brief idea of what it does.> - Copyright (C) <year> <name of author> - - This program is free software; you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation; either version 2 of the License, or - (at your option) any later version. - - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License along - with this program; if not, write to the Free Software Foundation, Inc., - 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. - -Also add information on how to contact you by electronic and paper mail. - -If the program is interactive, make it output a short notice like this -when it starts in an interactive mode: - - Gnomovision version 69, Copyright (C) year name of author - Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'. - This is free software, and you are welcome to redistribute it - under certain conditions; type `show c' for details. - -The hypothetical commands `show w' and `show c' should show the appropriate -parts of the General Public License. Of course, the commands you use may -be called something other than `show w' and `show c'; they could even be -mouse-clicks or menu items--whatever suits your program. - -You should also get your employer (if you work as a programmer) or your -school, if any, to sign a "copyright disclaimer" for the program, if -necessary. Here is a sample; alter the names: - - Yoyodyne, Inc., hereby disclaims all copyright interest in the program - `Gnomovision' (which makes passes at compilers) written by James Hacker. - - <signature of Ty Coon>, 1 April 1989 - Ty Coon, President of Vice - -This General Public License does not permit incorporating your program into -proprietary programs. If your program is a subroutine library, you may -consider it more useful to permit linking proprietary applications with the -library. If this is what you want to do, use the GNU Lesser General -Public License instead of this License. diff --git a/vendor/funchook/README.md b/vendor/funchook/README.md deleted file mode 100644 index 419021f8b..000000000 --- a/vendor/funchook/README.md +++ /dev/null @@ -1,273 +0,0 @@ -Funchook - an API hook library -============================== - -[![tests](https://github.com/kubo/funchook/actions/workflows/run-tests.yml/badge.svg?branch=master)](https://github.com/kubo/funchook/actions/workflows/run-tests.yml) - -This library depends on one of the following disassemblers. - -On x86_64 and x86 -* [diStorm3][] (default) -* [zydis][] (when `-DFUNCHOOK_DISASM=zydis` is passed to the `cmake` command) -* [capstone][] (when `-DFUNCHOOK_DISASM=capstone` is passed to the `cmake` command) - -On arm64 -* [capstone][] - -TODO ----- - -* write documents. - -News ----- - -### 2.0.0 (20XX-XX-XX) - -* Add `funchook_prepare_with_params()` to support prehook. -* Add `funchook_get_arg()` to get arguments in prehook. - -### 1.1.1 (2022-10-02) - -* More permissive check for page allocation mmap ([#25][]) -* Flush instruction cache for arm64. It does nothing for intel CPU. -* Disassember engine - * Upgrade capstone to 4.0.2 - * Upgrade distorm to 3.5.2 -* CMake - * Allow user to specify FUNCHOOK_CPU explicitly ([#19][]) - * Avoid polluting global include and link dirs ([#20][]) - * Use target based compile options for gcc's -Wall ([#21][]) - * Use ExternalProject_add to download captone only ([#30][]) - * Add option FUNCHOOK_INSTALL ([#31][]) - * Use "FUNCHOOK_CPU MATCHES <string>" ([#32][]) -* Documentation - * added example usage from python ([#22][]) -* Fix tests on Android ([#29][]) - -### 1.1.0 (2020-03-22) - -* Arm64 Linux support. [capstone][] is used as the disassembler library on arm64. -* Options to use [zydis][] and [capstone][] as a disassembler library on x86_64 and x86. -* `extern "C"` was added in funchook.h for C++. ([#15][]) -* Libc-compatible functions were removed to simplify code. - -### 1.0.0 (2020-01-19) - -* [diStorm3][] is used as the disassembler library. -* Libc-compatible functions were implemented on Linux in order not to hook function calls issued by funchook itself. - -Supported Platforms -------------------- - -* Linux x86_64 -* Linux x86 -* Linux arm64 (since 1.1.0) -* macOS x86_64 (Functions in executables cannot be hooked when Xcode version >= 11.0. (*1)) -* Windows x64 (except C-runtime functions under [Wine][]) -* Windows 32-bit - -*1 [`mprotect`] fails with EACCES. - -Unsupported Platforms ---------------------- - -* macOS arm64 (*1) - -*1 I received a mail that [`mprotect`] failed with `EINVAL`. Apple seems to prevent executable memory regions from being writable. - -Compilation and installation ------------ - -### Unix - -```shell -$ git clone --recursive https://github.com/kubo/funchook.git -$ mkdir build -$ cd build -$ cmake -DCMAKE_BUILD_TYPE=Release -DCMAKE_INSTALL_PREFIX=/path/to/install/directory ../funchook -$ make -$ make install -``` - -* Available [`CMAKE_BUILD_TYPE`][] values are empty(default), `Debug`, `Release`, `RelWithDebInfo`(release build with debug information) and `MinSizeRel`. -* When [`CMAKE_INSTALL_PREFIX`][] isn't set, funchook is installed at `/usr/local`. - - installed files: - * `${CMAKE_INSTALL_PREFIX}/include/funchook.h` (header file) - * `${CMAKE_INSTALL_PREFIX}/lib/libfunchook.so` (symbolic link to `libfunchook.so.1`) - * `${CMAKE_INSTALL_PREFIX}/lib/libfunchook.so.1` ([soname][]; symbolic link to `libfunchook.so.1.1.0`) - * `${CMAKE_INSTALL_PREFIX}/lib/libfunchook.so.1.1.0` (shared library) - * `${CMAKE_INSTALL_PREFIX}/lib/libfunchook.a` (static library) - -### Windows - -Here is an example to compile funchook with Visual Studio 2017 Win64. -Change the argument of `-G` to use other compilers. - -```shell -$ git clone --recursive https://github.com/kubo/funchook.git -$ mkdir build -$ cd build -$ cmake -G "Visual Studio 15 2017 Win64" -DCMAKE_INSTALL_PREFIX=c:\path\to\install\directory ..\funchook -$ cmake --build . --config Release --target INSTALL -``` - -* Available `-G` arguments (generators) are listed in the output of `cmake --help`. -* Available `--config` arguments are `Debug`(default), `Release`, `RelWithDebInfo` and `MinSizeRel`. -* When [`CMAKE_INSTALL_PREFIX`][] isn't set, funchook is installed at `c:\Program Files\funchook`. - - installed files: - * `${CMAKE_INSTALL_PREFIX}\include\funchook.h` (header file) - * `${CMAKE_INSTALL_PREFIX}\bin\funchook.dll` (shared library) - * `${CMAKE_INSTALL_PREFIX}\bin\funchook.pdb` (debug file for `funchook.dll` when `--config` is `Debug` or `RelWithDebInfo`) - * `${CMAKE_INSTALL_PREFIX}\lib\funchook.lib` (static library) - * `${CMAKE_INSTALL_PREFIX}\lib\funchook_dll.lib` (import library for `funchook.dll`) - -Example -------- - -```c -static ssize_t (*send_func)(int sockfd, const void *buf, size_t len, int flags); -static ssize_t (*recv_func)(int sockfd, void *buf, size_t len, int flags); - -static ssize_t send_hook(int sockfd, const void *buf, size_t len, int flags); -{ - ssize_t rv; - - ... do your task: logging, etc. ... - rv = send_func(sockfd, buf, len, flags); /* call the original send(). */ - ... do your task: logging, checking the return value, etc. ... - return rv; -} - -static ssize_t recv_hook(int sockfd, void *buf, size_t len, int flags); -{ - ssize_t rv; - - ... do your task: logging, etc. ... - rv = recv_func(sockfd, buf, len, flags); /* call the original recv(). */ - ... do your task: logging, checking received data, etc. ... - return rv; -} - -int install_hooks() -{ - funchook_t *funchook = funchook_create(); - int rv; - - /* Prepare hooking. - * The return value is used to call the original send function - * in send_hook. - */ - send_func = send; - rv = funchook_prepare(funchook, (void**)&send_func, send_hook); - if (rv != 0) { - /* error */ - ... - } - - /* ditto */ - recv_func = recv; - rv = funchook_prepare(funchook, (void**)&recv_func, recv_hook); - if (rv != 0) { - /* error */ - ... - } - - /* Install hooks. - * The first 5-byte code of send() and recv() are changed respectively. - */ - rv = funchook_install(funchook, 0); - if (rv != 0) { - /* error */ - ... - } -} - -``` - -Example - Using Python ctypes ------------------------------ -```python -# should work on python 2.7/3 windows/linux - -# load funchook -import ctypes -fh_lib = ctypes.cdll.LoadLibrary('/path/to/funchook/dll/or/so') - -# define signatures -funchook_create = fh_lib.funchook_create -funchook_create.restype = ctypes.c_void_p -funchook_create.argtypes = [] - -funchook_prepare = fh_lib.funchook_prepare -funchook_prepare.restype = ctypes.c_ssize_t -funchook_prepare.argtypes = [ctypes.c_void_p, ctypes.c_void_p, ctypes.c_void_p] - -funchook_install = fh_lib.funchook_install -funchook_install.restype = ctypes.c_ssize_t -funchook_install.argtypes = [ctypes.c_void_p, ctypes.c_int] - -PySys_WriteStdout = ctypes.pythonapi.PySys_WriteStdout -PySys_WriteStdout.restype = None -PySys_WriteStdout.argtypes=[ctypes.c_char_p] - -# must keep those references alive, or stuff will be GC'd and weird errors will occur -global orig_write, hook, orig_write_ptr - -# create hook (this function will replace the original function) -hook_type = ctypes.PYFUNCTYPE(None, ctypes.c_char_p) -orig_write = None -def hook_impl(msg): - print('about to write: ' + str(msg)) # do what we want - orig_write(msg) # call the original function - -hook = hook_type(hook_impl) - -fh = funchook_create() -# create a pointer object with the function address -orig_write_ptr = ctypes.c_void_p(ctypes.c_void_p.from_address(ctypes.addressof(PySys_WriteStdout)).value) -# orig_write_ptr.value will get a ptr to the original PySys_WriteStdout and PySys_WriteStdout will now point to the hook -ret = funchook_prepare(fh, ctypes.addressof(orig_write_ptr), hook) -assert not ret, 'ret is ' + str(ret) -ret = funchook_install(fh, 0) -assert not ret, 'ret is ' + str(ret) -orig_write = hook_type.from_address(ctypes.addressof(orig_write_ptr)) -PySys_WriteStdout(b'hi there\n') -``` - -License -------- - -GPLv2 or later with a [GPL linking exception][]. - -You can use funchook in any software. Though funchook is licensed under -the GPL, it doesn't affect outside of funchook due to the linking exception. -You have no need to open your souce code under the GPL except funchook itself. - -If you modify funchook itself and release it, the modifed part must be -open under the GPL with or without the linking exception because funchook -itself is under the GPL. - -[diStorm3][] and [capstone][] are released under the 3-clause BSD license. -[zydis][] is released under the MIT license. They are compatible with the GPL. - -[GPL linking exception]: https://en.wikipedia.org/wiki/GPL_linking_exception -[diStorm3]: https://github.com/gdabah/distorm/ -[zydis]: https://github.com/zyantific/zydis -[capstone]: https://github.com/aquynh/capstone -[Wine]: https://www.winehq.org/ -[`CMAKE_BUILD_TYPE`]: https://cmake.org/cmake/help/latest/variable/CMAKE_BUILD_TYPE.html -[`CMAKE_INSTALL_PREFIX`]: https://cmake.org/cmake/help/latest/variable/CMAKE_INSTALL_PREFIX.html -[soname]: https://en.wikipedia.org/wiki/Soname -[#15]: https://github.com/kubo/funchook/issues/15 -[#19]: https://github.com/kubo/funchook/pull/19 -[#20]: https://github.com/kubo/funchook/pull/20 -[#21]: https://github.com/kubo/funchook/pull/21 -[#22]: https://github.com/kubo/funchook/pull/22 -[#25]: https://github.com/kubo/funchook/pull/25 -[#29]: https://github.com/kubo/funchook/pull/29 -[#30]: https://github.com/kubo/funchook/pull/30 -[#31]: https://github.com/kubo/funchook/pull/31 -[#32]: https://github.com/kubo/funchook/pull/32 -[`mprotect`]: https://developer.apple.com/library/archive/documentation/System/Conceptual/ManPages_iPhoneOS/man2/mprotect.2.html diff --git a/vendor/funchook/include/funchook.h b/vendor/funchook/include/funchook.h deleted file mode 100644 index 5c6ed34ee..000000000 --- a/vendor/funchook/include/funchook.h +++ /dev/null @@ -1,167 +0,0 @@ -/* - * This file is part of Funchook. - * https://github.com/kubo/funchook - * - * Funchook is free software: you can redistribute it and/or modify it - * under the terms of the GNU General Public License as published by the - * Free Software Foundation, either version 2 of the License, or (at your - * option) any later version. - * - * As a special exception, the copyright holders of this library give you - * permission to link this library with independent modules to produce an - * executable, regardless of the license terms of these independent - * modules, and to copy and distribute the resulting executable under - * terms of your choice, provided that you also meet, for each linked - * independent module, the terms and conditions of the license of that - * module. An independent module is a module which is not derived from or - * based on this library. If you modify this library, you may extend this - * exception to your version of the library, but you are not obliged to - * do so. If you do not wish to do so, delete this exception statement - * from your version. - * - * Funchook is distributed in the hope that it will be useful, but WITHOUT - * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or - * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License - * for more details. - * - * You should have received a copy of the GNU General Public License - * along with Funchook. If not, see <http://www.gnu.org/licenses/>. - */ -#ifndef FUNCHOOK_H -#define FUNCHOOK_H 1 - -#ifdef __cplusplus -extern "C" { -#endif - -/* - * Only functions with FUNCHOOK_EXPORT are visible from outside of funchook.dll - * or libfunchook.so. Others are invisible. - */ -#ifdef FUNCHOOK_EXPORTS -#if defined(_WIN32) -#define FUNCHOOK_EXPORT __declspec(dllexport) -#elif defined(__GNUC__) -#define FUNCHOOK_EXPORT __attribute__((visibility("default"))) -#endif -#endif /* FUNCHOOK_EXPORTS */ -#ifndef FUNCHOOK_EXPORT -#define FUNCHOOK_EXPORT -#endif - -typedef struct funchook funchook_t; - -#define FUNCHOOK_ERROR_INTERNAL_ERROR -1 -#define FUNCHOOK_ERROR_SUCCESS 0 -#define FUNCHOOK_ERROR_OUT_OF_MEMORY 1 -#define FUNCHOOK_ERROR_ALREADY_INSTALLED 2 -#define FUNCHOOK_ERROR_DISASSEMBLY 3 -#define FUNCHOOK_ERROR_IP_RELATIVE_OFFSET 4 -#define FUNCHOOK_ERROR_CANNOT_FIX_IP_RELATIVE 5 -#define FUNCHOOK_ERROR_FOUND_BACK_JUMP 6 -#define FUNCHOOK_ERROR_TOO_SHORT_INSTRUCTIONS 7 -#define FUNCHOOK_ERROR_MEMORY_ALLOCATION 8 /* memory allocation error */ -#define FUNCHOOK_ERROR_MEMORY_FUNCTION 9 /* other memory function errors */ -#define FUNCHOOK_ERROR_NOT_INSTALLED 10 -#define FUNCHOOK_ERROR_NO_AVAILABLE_REGISTERS 11 -#define FUNCHOOK_ERROR_NO_SPACE_NEAR_TARGET_ADDR 12 - -#define FUNCHOOK_FLAG_THISCALL (1u << 0) -#define FUNCHOOK_FLAG_FASTCALL (1u << 1) - -typedef struct funchook_arg_handle funchook_arg_handle_t; - -typedef struct funchook_info { - void *original_target_func; - void *target_func; - void *trampoline_func; - void *hook_func; - void *user_data; - funchook_arg_handle_t *arg_handle; -} funchook_info_t; - -typedef void (*funchook_hook_t)(funchook_info_t *fi); - -typedef struct { - void *hook_func; - funchook_hook_t prehook; - void *user_data; - unsigned int flags; -} funchook_params_t; - -/** - * Create a funchook handle - * - * @return allocated funchook handle. NULL when out-of-memory. - */ -FUNCHOOK_EXPORT funchook_t *funchook_create(void); - -/** - * Prepare hooking - * - * @param funchook a funchook handle created by funchook_create() - * @param target_func function pointer to be intercepted. The pointer to trampoline function is set on success. - * @param hook_func function pointer which is called istead of target_func - * @return error code. one of FUNCHOOK_ERROR_*. - */ -FUNCHOOK_EXPORT int funchook_prepare(funchook_t *funchook, void **target_func, void *hook_func); - -FUNCHOOK_EXPORT int funchook_prepare_with_params(funchook_t *funchook, - void **target_func, const funchook_params_t *params); - -/** - * Install hooks prepared by funchook_prepare(). - * - * @param funchook a funchook handle created by funchook_create() - * @param flags reserved. Set zero. - * @return error code. one of FUNCHOOK_ERROR_*. - */ -FUNCHOOK_EXPORT int funchook_install(funchook_t *funchook, int flags); - -/** - * Uninstall hooks installed by funchook_install(). - * - * @param funchook a funchook handle created by funchook_create() - * @param flags reserved. Set zero. - * @return error code. one of FUNCHOOK_ERROR_*. - */ -FUNCHOOK_EXPORT int funchook_uninstall(funchook_t *funchook, int flags); - -/** - * Destroy a funchook handle - * - * @param funchook a funchook handle created by funchook_create() - * @return error code. one of FUNCHOOK_ERROR_*. - */ -FUNCHOOK_EXPORT int funchook_destroy(funchook_t *funchook); - -/** - * Get error message - * - * @param funchook a funchook handle created by funchook_create() - * @return pointer to buffer containing error message - */ -FUNCHOOK_EXPORT const char *funchook_error_message(const funchook_t *funchook); - -/** - * Set log file name to debug funchook itself. - * - * @param name log file name - * @return error code. one of FUNCHOOK_ERROR_*. - */ -FUNCHOOK_EXPORT int funchook_set_debug_file(const char *name); - -/* This function is under developemnt. It will be used by C++ template functions later. */ -FUNCHOOK_EXPORT void *funchook_arg_get_int_reg_addr(const funchook_arg_handle_t *arg_handle, int pos); - -/* This function is under developemnt. It will be used by C++ template functions later. */ -FUNCHOOK_EXPORT void *funchook_arg_get_flt_reg_addr(const funchook_arg_handle_t *arg_handle, int pos); - -/* This function is under developemnt. It will be used by C++ template functions later. */ -FUNCHOOK_EXPORT void *funchook_arg_get_stack_addr(const funchook_arg_handle_t *arg_handle, int pos); - -#ifdef __cplusplus -} // extern "C" -#endif - -#endif diff --git a/vendor/funchook/lib/distorm.lib b/vendor/funchook/lib/distorm.lib deleted file mode 100644 index 746006f8646e05c9373665ef678ed62e7439e3c4..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 76378 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 diff --git a/vendor/funchook/lib/funchook.lib b/vendor/funchook/lib/funchook.lib deleted file mode 100644 index c321ae51d6180bc2835a37c424d28e80037ee559..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 65438 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 O8Lt(ltJ?k}MsFYOe2<_2 diff --git a/vendor/funchook/lib/libdistorm.a b/vendor/funchook/lib/libdistorm.a deleted file mode 100644 index 7094a7b7663fed34b9094c26bc7d616f12cdc2ef..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 85698 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 NMC>nng+ZJ0{|^ym-97*S diff --git a/vendor/funchook/lib/libfunchook.a b/vendor/funchook/lib/libfunchook.a deleted file mode 100644 index 1b25984bd77f74380fa77ad902ec3030bdc361c8..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 46806 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 Z>eLUjO#(E|+q$QV8#sN0PK;ou|G!4Hu)6>N diff --git a/vendor/json b/vendor/json deleted file mode 160000 index ab1842a2d..000000000 --- a/vendor/json +++ /dev/null @@ -1 +0,0 @@ -Subproject commit ab1842a2dae061284c0a62dca1cc6d5e7e37e346 diff --git a/vendor/json-lua b/vendor/json-lua deleted file mode 160000 index c06b8a64a..000000000 --- a/vendor/json-lua +++ /dev/null @@ -1 +0,0 @@ -Subproject commit c06b8a64a1c4173e2c38651952e0ead0372dd5e5 diff --git a/vendor/msgpack b/vendor/msgpack deleted file mode 160000 index 820ccf1f1..000000000 --- a/vendor/msgpack +++ /dev/null @@ -1 +0,0 @@ -Subproject commit 820ccf1f1d919b98a0bbe1ed9e9a004e922a80fc diff --git a/vendor/msgpack-lua/msgpack.cpp b/vendor/msgpack-lua/msgpack.cpp deleted file mode 100644 index 8ef9a183e..000000000 --- a/vendor/msgpack-lua/msgpack.cpp +++ /dev/null @@ -1,1112 +0,0 @@ -#include <math.h> -#include <stdlib.h> -#include <stdint.h> -#include <string.h> -#include <assert.h> - -#include <lua.h> -#include <lauxlib.h> - -#define LUACMSGPACK_NAME "cmsgpack" -#define LUACMSGPACK_SAFE_NAME "cmsgpack_safe" -#define LUACMSGPACK_VERSION "lua-cmsgpack 0.4.0" -#define LUACMSGPACK_COPYRIGHT "Copyright (C) 2012, Salvatore Sanfilippo" -#define LUACMSGPACK_DESCRIPTION "MessagePack C implementation for Lua" - -/* Allows a preprocessor directive to override MAX_NESTING */ -#ifndef LUACMSGPACK_MAX_NESTING -#define LUACMSGPACK_MAX_NESTING 16 /* Max tables nesting. */ -#endif - -/* Check if float or double can be an integer without loss of precision */ -#define IS_INT_TYPE_EQUIVALENT(x, T) (!isinf(x) && (T)(x) == (x)) - -#define IS_INT64_EQUIVALENT(x) IS_INT_TYPE_EQUIVALENT(x, int64_t) -#define IS_INT_EQUIVALENT(x) IS_INT_TYPE_EQUIVALENT(x, int) - -/* If size of pointer is equal to a 4 byte integer, we're on 32 bits. */ -#if UINTPTR_MAX == UINT_MAX -#define BITS_32 1 -#else -#define BITS_32 0 -#endif - -#if BITS_32 -#define lua_pushunsigned(L, n) lua_pushnumber(L, n) -#else -#define lua_pushunsigned(L, n) lua_pushinteger(L, n) -#endif - -/* ============================================================================= - * MessagePack implementation and bindings for Lua 5.1/5.2. - * Copyright(C) 2012 Salvatore Sanfilippo <antirez@gmail.com> - * - * http://github.com/antirez/lua-cmsgpack - * - * For MessagePack specification check the following web site: - * http://wiki.msgpack.org/display/MSGPACK/Format+specification - * - * See Copyright Notice at the end of this file. - * - * CHANGELOG: - * 19-Feb-2012 (ver 0.1.0): Initial release. - * 20-Feb-2012 (ver 0.2.0): Tables encoding improved. - * 20-Feb-2012 (ver 0.2.1): Minor bug fixing. - * 20-Feb-2012 (ver 0.3.0): Module renamed lua-cmsgpack (was lua-msgpack). - * 04-Apr-2014 (ver 0.3.1): Lua 5.2 support and minor bug fix. - * 07-Apr-2014 (ver 0.4.0): Multiple pack/unpack, lua allocator, efficiency. - * ========================================================================== */ - -/* -------------------------- Endian conversion -------------------------------- - * We use it only for floats and doubles, all the other conversions performed - * in an endian independent fashion. So the only thing we need is a function - * that swaps a binary string if arch is little endian (and left it untouched - * otherwise). */ - -/* Reverse memory bytes if arch is little endian. Given the conceptual - * simplicity of the Lua build system we prefer check for endianess at runtime. - * The performance difference should be acceptable. */ -void memrevifle(void *ptr, size_t len) -{ - unsigned char *p = (unsigned char *)ptr, - *e = (unsigned char *)p + len - 1, - aux; - int test = 1; - unsigned char *testp = (unsigned char *)&test; - - if (testp[0] == 0) - return; /* Big endian, nothing to do. */ - len /= 2; - while (len--) - { - aux = *p; - *p = *e; - *e = aux; - p++; - e--; - } -} - -/* ---------------------------- String buffer ---------------------------------- - * This is a simple implementation of string buffers. The only operation - * supported is creating empty buffers and appending bytes to it. - * The string buffer uses 2x preallocation on every realloc for O(N) append - * behavior. */ - -typedef struct mp_buf -{ - unsigned char *b; - size_t len, free; -} mp_buf; - -void *mp_realloc(lua_State *L, void *target, size_t osize, size_t nsize) -{ - void *(*local_realloc)(void *, void *, size_t osize, size_t nsize) = NULL; - void *ud; - - local_realloc = lua_getallocf(L, &ud); - - return local_realloc(ud, target, osize, nsize); -} - -mp_buf *mp_buf_new(lua_State *L) -{ - mp_buf *buf = NULL; - - /* Old size = 0; new size = sizeof(*buf) */ - buf = (mp_buf *)mp_realloc(L, NULL, 0, sizeof(*buf)); - - buf->b = NULL; - buf->len = buf->free = 0; - return buf; -} - -void mp_buf_append(lua_State *L, mp_buf *buf, const unsigned char *s, size_t len) -{ - if (buf->free < len) - { - size_t newsize = (buf->len + len) * 2; - - buf->b = (unsigned char *)mp_realloc(L, buf->b, buf->len + buf->free, newsize); - buf->free = newsize - buf->len; - } - memcpy(buf->b + buf->len, s, len); - buf->len += len; - buf->free -= len; -} - -void mp_buf_free(lua_State *L, mp_buf *buf) -{ - mp_realloc(L, buf->b, buf->len + buf->free, 0); /* realloc to 0 = free */ - mp_realloc(L, buf, sizeof(*buf), 0); -} - -/* ---------------------------- String cursor ---------------------------------- - * This simple data structure is used for parsing. Basically you create a cursor - * using a string pointer and a length, then it is possible to access the - * current string position with cursor->p, check the remaining length - * in cursor->left, and finally consume more string using - * mp_cur_consume(cursor,len), to advance 'p' and subtract 'left'. - * An additional field cursor->error is set to zero on initialization and can - * be used to report errors. */ - -#define MP_CUR_ERROR_NONE 0 -#define MP_CUR_ERROR_EOF 1 /* Not enough data to complete operation. */ -#define MP_CUR_ERROR_BADFMT 2 /* Bad data format */ - -typedef struct mp_cur -{ - const unsigned char *p; - size_t left; - int err; -} mp_cur; - -void mp_cur_init(mp_cur *cursor, const unsigned char *s, size_t len) -{ - cursor->p = s; - cursor->left = len; - cursor->err = MP_CUR_ERROR_NONE; -} - -#define mp_cur_consume(_c, _len) \ - do \ - { \ - _c->p += _len; \ - _c->left -= _len; \ - } while (0) - -/* When there is not enough room we set an error in the cursor and return. This - * is very common across the code so we have a macro to make the code look - * a bit simpler. */ -#define mp_cur_need(_c, _len) \ - do \ - { \ - if (_c->left < _len) \ - { \ - _c->err = MP_CUR_ERROR_EOF; \ - return; \ - } \ - } while (0) - -/* ------------------------- Low level MP encoding -------------------------- */ - -void mp_encode_bytes(lua_State *L, mp_buf *buf, const unsigned char *s, size_t len) -{ - unsigned char hdr[5]; - int hdrlen; - - if (len < 32) - { - hdr[0] = 0xa0 | (len & 0xff); /* fix raw */ - hdrlen = 1; - } - else if (len <= 0xff) - { - hdr[0] = 0xd9; - hdr[1] = len; - hdrlen = 2; - } - else if (len <= 0xffff) - { - hdr[0] = 0xda; - hdr[1] = (len & 0xff00) >> 8; - hdr[2] = len & 0xff; - hdrlen = 3; - } - else - { - hdr[0] = 0xdb; - hdr[1] = (len & 0xff000000) >> 24; - hdr[2] = (len & 0xff0000) >> 16; - hdr[3] = (len & 0xff00) >> 8; - hdr[4] = len & 0xff; - hdrlen = 5; - } - mp_buf_append(L, buf, hdr, hdrlen); - mp_buf_append(L, buf, s, len); -} - -/* we assume IEEE 754 internal format for single and double precision floats. */ -void mp_encode_double(lua_State *L, mp_buf *buf, double d) -{ - unsigned char b[9]; - float f = d; - - assert(sizeof(f) == 4 && sizeof(d) == 8); - if (d == (double)f) - { - b[0] = 0xca; /* float IEEE 754 */ - memcpy(b + 1, &f, 4); - memrevifle(b + 1, 4); - mp_buf_append(L, buf, b, 5); - } - else if (sizeof(d) == 8) - { - b[0] = 0xcb; /* double IEEE 754 */ - memcpy(b + 1, &d, 8); - memrevifle(b + 1, 8); - mp_buf_append(L, buf, b, 9); - } -} - -void mp_encode_int(lua_State *L, mp_buf *buf, int64_t n) -{ - unsigned char b[9]; - int enclen; - - if (n >= 0) - { - if (n <= 127) - { - b[0] = n & 0x7f; /* positive fixnum */ - enclen = 1; - } - else if (n <= 0xff) - { - b[0] = 0xcc; /* uint 8 */ - b[1] = n & 0xff; - enclen = 2; - } - else if (n <= 0xffff) - { - b[0] = 0xcd; /* uint 16 */ - b[1] = (n & 0xff00) >> 8; - b[2] = n & 0xff; - enclen = 3; - } - else if (n <= 0xffffffffLL) - { - b[0] = 0xce; /* uint 32 */ - b[1] = (n & 0xff000000) >> 24; - b[2] = (n & 0xff0000) >> 16; - b[3] = (n & 0xff00) >> 8; - b[4] = n & 0xff; - enclen = 5; - } - else - { - b[0] = 0xcf; /* uint 64 */ - b[1] = (n & 0xff00000000000000LL) >> 56; - b[2] = (n & 0xff000000000000LL) >> 48; - b[3] = (n & 0xff0000000000LL) >> 40; - b[4] = (n & 0xff00000000LL) >> 32; - b[5] = (n & 0xff000000) >> 24; - b[6] = (n & 0xff0000) >> 16; - b[7] = (n & 0xff00) >> 8; - b[8] = n & 0xff; - enclen = 9; - } - } - else - { - if (n >= -32) - { - b[0] = ((signed char)n); /* negative fixnum */ - enclen = 1; - } - else if (n >= -128) - { - b[0] = 0xd0; /* int 8 */ - b[1] = n & 0xff; - enclen = 2; - } - else if (n >= -32768) - { - b[0] = 0xd1; /* int 16 */ - b[1] = (n & 0xff00) >> 8; - b[2] = n & 0xff; - enclen = 3; - } - else if (n >= -2147483648LL) - { - b[0] = 0xd2; /* int 32 */ - b[1] = (n & 0xff000000) >> 24; - b[2] = (n & 0xff0000) >> 16; - b[3] = (n & 0xff00) >> 8; - b[4] = n & 0xff; - enclen = 5; - } - else - { - b[0] = 0xd3; /* int 64 */ - b[1] = (n & 0xff00000000000000LL) >> 56; - b[2] = (n & 0xff000000000000LL) >> 48; - b[3] = (n & 0xff0000000000LL) >> 40; - b[4] = (n & 0xff00000000LL) >> 32; - b[5] = (n & 0xff000000) >> 24; - b[6] = (n & 0xff0000) >> 16; - b[7] = (n & 0xff00) >> 8; - b[8] = n & 0xff; - enclen = 9; - } - } - mp_buf_append(L, buf, b, enclen); -} - -void mp_encode_array(lua_State *L, mp_buf *buf, int64_t n) -{ - unsigned char b[5]; - int enclen; - - if (n <= 15) - { - b[0] = 0x90 | (n & 0xf); /* fix array */ - enclen = 1; - } - else if (n <= 65535) - { - b[0] = 0xdc; /* array 16 */ - b[1] = (n & 0xff00) >> 8; - b[2] = n & 0xff; - enclen = 3; - } - else - { - b[0] = 0xdd; /* array 32 */ - b[1] = (n & 0xff000000) >> 24; - b[2] = (n & 0xff0000) >> 16; - b[3] = (n & 0xff00) >> 8; - b[4] = n & 0xff; - enclen = 5; - } - mp_buf_append(L, buf, b, enclen); -} - -void mp_encode_map(lua_State *L, mp_buf *buf, int64_t n) -{ - unsigned char b[5]; - int enclen; - - if (n <= 15) - { - b[0] = 0x80 | (n & 0xf); /* fix map */ - enclen = 1; - } - else if (n <= 65535) - { - b[0] = 0xde; /* map 16 */ - b[1] = (n & 0xff00) >> 8; - b[2] = n & 0xff; - enclen = 3; - } - else - { - b[0] = 0xdf; /* map 32 */ - b[1] = (n & 0xff000000) >> 24; - b[2] = (n & 0xff0000) >> 16; - b[3] = (n & 0xff00) >> 8; - b[4] = n & 0xff; - enclen = 5; - } - mp_buf_append(L, buf, b, enclen); -} - -/* --------------------------- Lua types encoding --------------------------- */ - -void mp_encode_lua_string(lua_State *L, mp_buf *buf) -{ - size_t len; - const char *s; - - s = lua_tolstring(L, -1, &len); - mp_encode_bytes(L, buf, (const unsigned char *)s, len); -} - -void mp_encode_lua_bool(lua_State *L, mp_buf *buf) -{ - unsigned char b = lua_toboolean(L, -1) ? 0xc3 : 0xc2; - mp_buf_append(L, buf, &b, 1); -} - -/* Lua 5.3 has a built in 64-bit integer type */ -void mp_encode_lua_integer(lua_State *L, mp_buf *buf) -{ -#if (LUA_VERSION_NUM < 503) && BITS_32 - lua_Number i = lua_tonumber(L, -1); -#else - lua_Integer i = lua_tointeger(L, -1); -#endif - mp_encode_int(L, buf, (int64_t)i); -} - -/* Lua 5.2 and lower only has 64-bit doubles, so we need to - * detect if the double may be representable as an int - * for Lua < 5.3 */ -void mp_encode_lua_number(lua_State *L, mp_buf *buf) -{ - lua_Number n = lua_tonumber(L, -1); - - if (IS_INT64_EQUIVALENT(n)) - { - mp_encode_lua_integer(L, buf); - } - else - { - mp_encode_double(L, buf, (double)n); - } -} - -void mp_encode_lua_type(lua_State *L, mp_buf *buf, int level); - -/* Convert a lua table into a message pack list. */ -void mp_encode_lua_table_as_array(lua_State *L, mp_buf *buf, int level) -{ -#if LUA_VERSION_NUM < 502 - size_t len = lua_objlen(L, -1), j; -#else - size_t len = lua_rawlen(L, -1), j; -#endif - - mp_encode_array(L, buf, len); - luaL_checkstack(L, 1, "in function mp_encode_lua_table_as_array"); - for (j = 1; j <= len; j++) - { - lua_pushnumber(L, j); - lua_gettable(L, -2); - mp_encode_lua_type(L, buf, level + 1); - } -} - -/* Convert a lua table into a message pack key-value map. */ -void mp_encode_lua_table_as_map(lua_State *L, mp_buf *buf, int level) -{ - size_t len = 0; - - /* First step: count keys into table. No other way to do it with the - * Lua API, we need to iterate a first time. Note that an alternative - * would be to do a single run, and then hack the buffer to insert the - * map opcodes for message pack. Too hackish for this lib. */ - luaL_checkstack(L, 3, "in function mp_encode_lua_table_as_map"); - lua_pushnil(L); - while (lua_next(L, -2)) - { - lua_pop(L, 1); /* remove value, keep key for next iteration. */ - len++; - } - - /* Step two: actually encoding of the map. */ - mp_encode_map(L, buf, len); - lua_pushnil(L); - while (lua_next(L, -2)) - { - /* Stack: ... key value */ - lua_pushvalue(L, -2); /* Stack: ... key value key */ - mp_encode_lua_type(L, buf, level + 1); /* encode key */ - mp_encode_lua_type(L, buf, level + 1); /* encode val */ - } -} - -/* Returns true if the Lua table on top of the stack is exclusively composed - * of keys from numerical keys from 1 up to N, with N being the total number - * of elements, without any hole in the middle. */ -int table_is_an_array(lua_State *L) -{ - int count = 0, max = 0; -#if LUA_VERSION_NUM < 503 - lua_Number n; -#else - lua_Integer n; -#endif - - /* Stack top on function entry */ - int stacktop; - - stacktop = lua_gettop(L); - - lua_pushnil(L); - while (lua_next(L, -2)) - { - /* Stack: ... key value */ - lua_pop(L, 1); /* Stack: ... key */ - /* The <= 0 check is valid here because we're comparing indexes. */ -#if LUA_VERSION_NUM < 503 - if ((LUA_TNUMBER != lua_type(L, -1)) || (n = lua_tonumber(L, -1)) <= 0 || - !IS_INT_EQUIVALENT(n)) -#else - if (!lua_isinteger(L, -1) || (n = lua_tointeger(L, -1)) <= 0) -#endif - { - lua_settop(L, stacktop); - return 0; - } - max = (n > max ? n : max); - count++; - } - /* We have the total number of elements in "count". Also we have - * the max index encountered in "max". We can't reach this code - * if there are indexes <= 0. If you also note that there can not be - * repeated keys into a table, you have that if max==count you are sure - * that there are all the keys form 1 to count (both included). */ - lua_settop(L, stacktop); - return max == count; -} - -/* If the length operator returns non-zero, that is, there is at least - * an object at key '1', we serialize to message pack list. Otherwise - * we use a map. */ -void mp_encode_lua_table(lua_State *L, mp_buf *buf, int level) -{ - if (table_is_an_array(L)) - mp_encode_lua_table_as_array(L, buf, level); - else - mp_encode_lua_table_as_map(L, buf, level); -} - -void mp_encode_lua_null(lua_State *L, mp_buf *buf) -{ - unsigned char b[1]; - - b[0] = 0xc0; - mp_buf_append(L, buf, b, 1); -} - -void mp_encode_lua_type(lua_State *L, mp_buf *buf, int level) -{ - int t = lua_type(L, -1); - - /* Limit the encoding of nested tables to a specified maximum depth, so that - * we survive when called against circular references in tables. */ - if (t == LUA_TTABLE && level == LUACMSGPACK_MAX_NESTING) - t = LUA_TNIL; - switch (t) - { - case LUA_TSTRING: - mp_encode_lua_string(L, buf); - break; - case LUA_TBOOLEAN: - mp_encode_lua_bool(L, buf); - break; - case LUA_TNUMBER: -#if LUA_VERSION_NUM < 503 - mp_encode_lua_number(L, buf); - break; -#else - if (lua_isinteger(L, -1)) - { - mp_encode_lua_integer(L, buf); - } - else - { - mp_encode_lua_number(L, buf); - } - break; -#endif - case LUA_TTABLE: - mp_encode_lua_table(L, buf, level); - break; - default: - mp_encode_lua_null(L, buf); - break; - } - lua_pop(L, 1); -} - -/* - * Packs all arguments as a stream for multiple upacking later. - * Returns error if no arguments provided. - */ -int mp_pack(lua_State *L) -{ - int nargs = lua_gettop(L); - int i; - mp_buf *buf; - - if (nargs == 0) - return luaL_argerror(L, 0, "MessagePack pack needs input."); - - if (!lua_checkstack(L, nargs)) - return luaL_argerror(L, 0, "Too many arguments for MessagePack pack."); - - buf = mp_buf_new(L); - for (i = 1; i <= nargs; i++) - { - /* Copy argument i to top of stack for _encode processing; - * the encode function pops it from the stack when complete. */ - luaL_checkstack(L, 1, "in function mp_check"); - lua_pushvalue(L, i); - - mp_encode_lua_type(L, buf, 0); - - lua_pushlstring(L, (char *)buf->b, buf->len); - - /* Reuse the buffer for the next operation by - * setting its free count to the total buffer size - * and the current position to zero. */ - buf->free += buf->len; - buf->len = 0; - } - mp_buf_free(L, buf); - - /* Concatenate all nargs buffers together */ - lua_concat(L, nargs); - return 1; -} - -/* ------------------------------- Decoding --------------------------------- */ - -void mp_decode_to_lua_type(lua_State *L, mp_cur *c); - -void mp_decode_to_lua_array(lua_State *L, mp_cur *c, size_t len) -{ - assert(len <= UINT_MAX); - int index = 1; - - lua_newtable(L); - luaL_checkstack(L, 1, "in function mp_decode_to_lua_array"); - while (len--) - { - lua_pushnumber(L, index++); - mp_decode_to_lua_type(L, c); - if (c->err) - return; - lua_settable(L, -3); - } -} - -void mp_decode_to_lua_hash(lua_State *L, mp_cur *c, size_t len) -{ - assert(len <= UINT_MAX); - lua_newtable(L); - while (len--) - { - mp_decode_to_lua_type(L, c); /* key */ - if (c->err) - return; - mp_decode_to_lua_type(L, c); /* value */ - if (c->err) - return; - lua_settable(L, -3); - } -} - -/* Decode a Message Pack raw object pointed by the string cursor 'c' to - * a Lua type, that is left as the only result on the stack. */ -void mp_decode_to_lua_type(lua_State *L, mp_cur *c) -{ - mp_cur_need(c, 1); - - /* If we return more than 18 elements, we must resize the stack to - * fit all our return values. But, there is no way to - * determine how many objects a msgpack will unpack to up front, so - * we request a +1 larger stack on each iteration (noop if stack is - * big enough, and when stack does require resize it doubles in size) */ - luaL_checkstack(L, 1, - "too many return values at once; " - "use unpack_one or unpack_limit instead."); - - switch (c->p[0]) - { - case 0xcc: /* uint 8 */ - mp_cur_need(c, 2); - lua_pushunsigned(L, c->p[1]); - mp_cur_consume(c, 2); - break; - case 0xd0: /* int 8 */ - mp_cur_need(c, 2); - lua_pushinteger(L, (signed char)c->p[1]); - mp_cur_consume(c, 2); - break; - case 0xcd: /* uint 16 */ - mp_cur_need(c, 3); - lua_pushunsigned(L, - (c->p[1] << 8) | - c->p[2]); - mp_cur_consume(c, 3); - break; - case 0xd1: /* int 16 */ - mp_cur_need(c, 3); - lua_pushinteger(L, (int16_t)(c->p[1] << 8) | - c->p[2]); - mp_cur_consume(c, 3); - break; - case 0xce: /* uint 32 */ - mp_cur_need(c, 5); - lua_pushunsigned(L, - ((uint32_t)c->p[1] << 24) | - ((uint32_t)c->p[2] << 16) | - ((uint32_t)c->p[3] << 8) | - (uint32_t)c->p[4]); - mp_cur_consume(c, 5); - break; - case 0xd2: /* int 32 */ - mp_cur_need(c, 5); - lua_pushinteger(L, - ((int32_t)c->p[1] << 24) | - ((int32_t)c->p[2] << 16) | - ((int32_t)c->p[3] << 8) | - (int32_t)c->p[4]); - mp_cur_consume(c, 5); - break; - case 0xcf: /* uint 64 */ - mp_cur_need(c, 9); - lua_pushunsigned(L, - ((uint64_t)c->p[1] << 56) | - ((uint64_t)c->p[2] << 48) | - ((uint64_t)c->p[3] << 40) | - ((uint64_t)c->p[4] << 32) | - ((uint64_t)c->p[5] << 24) | - ((uint64_t)c->p[6] << 16) | - ((uint64_t)c->p[7] << 8) | - (uint64_t)c->p[8]); - mp_cur_consume(c, 9); - break; - case 0xd3: /* int 64 */ - mp_cur_need(c, 9); -#if LUA_VERSION_NUM < 503 - lua_pushnumber(L, -#else - lua_pushinteger(L, -#endif - ((int64_t)c->p[1] << 56) | - ((int64_t)c->p[2] << 48) | - ((int64_t)c->p[3] << 40) | - ((int64_t)c->p[4] << 32) | - ((int64_t)c->p[5] << 24) | - ((int64_t)c->p[6] << 16) | - ((int64_t)c->p[7] << 8) | - (int64_t)c->p[8]); - mp_cur_consume(c, 9); - break; - case 0xc0: /* nil */ - lua_pushnil(L); - mp_cur_consume(c, 1); - break; - case 0xc3: /* true */ - lua_pushboolean(L, 1); - mp_cur_consume(c, 1); - break; - case 0xc2: /* false */ - lua_pushboolean(L, 0); - mp_cur_consume(c, 1); - break; - case 0xca: /* float */ - mp_cur_need(c, 5); - assert(sizeof(float) == 4); - { - float f; - memcpy(&f, c->p + 1, 4); - memrevifle(&f, 4); - lua_pushnumber(L, f); - mp_cur_consume(c, 5); - } - break; - case 0xcb: /* double */ - mp_cur_need(c, 9); - assert(sizeof(double) == 8); - { - double d; - memcpy(&d, c->p + 1, 8); - memrevifle(&d, 8); - lua_pushnumber(L, d); - mp_cur_consume(c, 9); - } - break; - case 0xd9: /* raw 8 */ - mp_cur_need(c, 2); - { - size_t l = c->p[1]; - mp_cur_need(c, 2 + l); - lua_pushlstring(L, (char *)c->p + 2, l); - mp_cur_consume(c, 2 + l); - } - break; - case 0xda: /* raw 16 */ - mp_cur_need(c, 3); - { - size_t l = (c->p[1] << 8) | c->p[2]; - mp_cur_need(c, 3 + l); - lua_pushlstring(L, (char *)c->p + 3, l); - mp_cur_consume(c, 3 + l); - } - break; - case 0xdb: /* raw 32 */ - mp_cur_need(c, 5); - { - size_t l = ((size_t)c->p[1] << 24) | - ((size_t)c->p[2] << 16) | - ((size_t)c->p[3] << 8) | - (size_t)c->p[4]; - mp_cur_consume(c, 5); - mp_cur_need(c, l); - lua_pushlstring(L, (char *)c->p, l); - mp_cur_consume(c, l); - } - break; - case 0xdc: /* array 16 */ - mp_cur_need(c, 3); - { - size_t l = (c->p[1] << 8) | c->p[2]; - mp_cur_consume(c, 3); - mp_decode_to_lua_array(L, c, l); - } - break; - case 0xdd: /* array 32 */ - mp_cur_need(c, 5); - { - size_t l = ((size_t)c->p[1] << 24) | - ((size_t)c->p[2] << 16) | - ((size_t)c->p[3] << 8) | - (size_t)c->p[4]; - mp_cur_consume(c, 5); - mp_decode_to_lua_array(L, c, l); - } - break; - case 0xde: /* map 16 */ - mp_cur_need(c, 3); - { - size_t l = (c->p[1] << 8) | c->p[2]; - mp_cur_consume(c, 3); - mp_decode_to_lua_hash(L, c, l); - } - break; - case 0xdf: /* map 32 */ - mp_cur_need(c, 5); - { - size_t l = ((size_t)c->p[1] << 24) | - ((size_t)c->p[2] << 16) | - ((size_t)c->p[3] << 8) | - (size_t)c->p[4]; - mp_cur_consume(c, 5); - mp_decode_to_lua_hash(L, c, l); - } - break; - default: /* types that can't be idenitified by first byte value. */ - if ((c->p[0] & 0x80) == 0) - { /* positive fixnum */ - lua_pushunsigned(L, c->p[0]); - mp_cur_consume(c, 1); - } - else if ((c->p[0] & 0xe0) == 0xe0) - { /* negative fixnum */ - lua_pushinteger(L, (signed char)c->p[0]); - mp_cur_consume(c, 1); - } - else if ((c->p[0] & 0xe0) == 0xa0) - { /* fix raw */ - size_t l = c->p[0] & 0x1f; - mp_cur_need(c, 1 + l); - lua_pushlstring(L, (char *)c->p + 1, l); - mp_cur_consume(c, 1 + l); - } - else if ((c->p[0] & 0xf0) == 0x90) - { /* fix map */ - size_t l = c->p[0] & 0xf; - mp_cur_consume(c, 1); - mp_decode_to_lua_array(L, c, l); - } - else if ((c->p[0] & 0xf0) == 0x80) - { /* fix map */ - size_t l = c->p[0] & 0xf; - mp_cur_consume(c, 1); - mp_decode_to_lua_hash(L, c, l); - } - else - { - c->err = MP_CUR_ERROR_BADFMT; - } - } -} - -int mp_unpack_full(lua_State *L, int limit, int offset) -{ - size_t len; - const char *s; - mp_cur c; - int cnt; /* Number of objects unpacked */ - int decode_all = (!limit && !offset); - - s = luaL_checklstring(L, 1, &len); /* if no match, exits */ - - if (offset < 0 || limit < 0) /* requesting negative off or lim is invalid */ - return luaL_error(L, - "Invalid request to unpack with offset of %d and limit of %d.", - offset, len); - else if (offset > len) - return luaL_error(L, - "Start offset %d greater than input length %d.", offset, len); - - if (decode_all) - limit = INT_MAX; - - mp_cur_init(&c, (const unsigned char *)s + offset, len - offset); - - /* We loop over the decode because this could be a stream - * of multiple top-level values serialized together */ - for (cnt = 0; c.left > 0 && cnt < limit; cnt++) - { - mp_decode_to_lua_type(L, &c); - - if (c.err == MP_CUR_ERROR_EOF) - { - return luaL_error(L, "Missing bytes in input."); - } - else if (c.err == MP_CUR_ERROR_BADFMT) - { - return luaL_error(L, "Bad data format in input."); - } - } - - if (!decode_all) - { - /* c->left is the remaining size of the input buffer. - * subtract the entire buffer size from the unprocessed size - * to get our next start offset */ - int offset = len - c.left; - - luaL_checkstack(L, 1, "in function mp_unpack_full"); - - /* Return offset -1 when we have have processed the entire buffer. */ - lua_pushinteger(L, c.left == 0 ? -1 : offset); - /* Results are returned with the arg elements still - * in place. Lua takes care of only returning - * elements above the args for us. - * In this case, we have one arg on the stack - * for this function, so we insert our first return - * value at position 2. */ - lua_insert(L, 2); - cnt += 1; /* increase return count by one to make room for offset */ - } - - return cnt; -} - -int mp_unpack(lua_State *L) -{ - return mp_unpack_full(L, 0, 0); -} - -int mp_unpack_one(lua_State *L) -{ - int offset = luaL_optinteger(L, 2, 0); - /* Variable pop because offset may not exist */ - lua_pop(L, lua_gettop(L) - 1); - return mp_unpack_full(L, 1, offset); -} - -int mp_unpack_limit(lua_State *L) -{ - int limit = luaL_checkinteger(L, 2); - int offset = luaL_optinteger(L, 3, 0); - /* Variable pop because offset may not exist */ - lua_pop(L, lua_gettop(L) - 1); - - return mp_unpack_full(L, limit, offset); -} - -int mp_safe(lua_State *L) -{ - int argc, err, total_results; - - argc = lua_gettop(L); - - /* This adds our function to the bottom of the stack - * (the "call this function" position) */ - lua_pushvalue(L, lua_upvalueindex(1)); - lua_insert(L, 1); - - err = lua_pcall(L, argc, LUA_MULTRET, 0); - total_results = lua_gettop(L); - - if (!err) - { - return total_results; - } - else - { - lua_pushnil(L); - lua_insert(L, -2); - return 2; - } -} - -/* -------------------------------------------------------------------------- */ -const struct luaL_Reg cmds[] = { - {"pack", mp_pack}, - {"unpack", mp_unpack}, - {"unpack_one", mp_unpack_one}, - {"unpack_limit", mp_unpack_limit}, - {0}}; - -int luaopen_create(lua_State *L) -{ - int i; - /* Manually construct our module table instead of - * relying on _register or _newlib */ - lua_newtable(L); - - for (i = 0; i < (sizeof(cmds) / sizeof(*cmds) - 1); i++) - { - lua_pushcfunction(L, cmds[i].func); - lua_setfield(L, -2, cmds[i].name); - } - - /* Add metadata */ - lua_pushliteral(L, LUACMSGPACK_NAME); - lua_setfield(L, -2, "_NAME"); - lua_pushliteral(L, LUACMSGPACK_VERSION); - lua_setfield(L, -2, "_VERSION"); - lua_pushliteral(L, LUACMSGPACK_COPYRIGHT); - lua_setfield(L, -2, "_COPYRIGHT"); - lua_pushliteral(L, LUACMSGPACK_DESCRIPTION); - lua_setfield(L, -2, "_DESCRIPTION"); - return 1; -} - -LUALIB_API int luaopen_cmsgpack(lua_State *L) -{ - luaopen_create(L); - -#if LUA_VERSION_NUM < 502 - /* Register name globally for 5.1 */ - lua_pushvalue(L, -1); - lua_setglobal(L, LUACMSGPACK_NAME); -#endif - - return 1; -} - -LUALIB_API int luaopen_cmsgpack_safe(lua_State *L) -{ - int i; - - luaopen_cmsgpack(L); - - /* Wrap all functions in the safe handler */ - for (i = 0; i < (sizeof(cmds) / sizeof(*cmds) - 1); i++) - { - lua_getfield(L, -1, cmds[i].name); - lua_pushcclosure(L, mp_safe, 1); - lua_setfield(L, -2, cmds[i].name); - } - -#if LUA_VERSION_NUM < 502 - /* Register name globally for 5.1 */ - lua_pushvalue(L, -1); - lua_setglobal(L, LUACMSGPACK_SAFE_NAME); -#endif - - return 1; -} - -/****************************************************************************** - * Copyright (C) 2012 Salvatore Sanfilippo. All rights reserved. - * - * Permission is hereby granted, free of charge, to any person obtaining - * a copy of this software and associated documentation files (the - * "Software"), to deal in the Software without restriction, including - * without limitation the rights to use, copy, modify, merge, publish, - * distribute, sublicense, and/or sell copies of the Software, and to - * permit persons to whom the Software is furnished to do so, subject to - * the following conditions: - * - * The above copyright notice and this permission notice shall be - * included in all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, - * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF - * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. - * IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY - * CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, - * TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE - * SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - ******************************************************************************/ diff --git a/vendor/other/lua.hpp b/vendor/other/lua.hpp deleted file mode 100644 index f782979e0..000000000 --- a/vendor/other/lua.hpp +++ /dev/null @@ -1,3 +0,0 @@ -#include "lua.h" -#include "lauxlib.h" -#include "lualib.h" \ No newline at end of file diff --git a/vendor/swiftly-ext b/vendor/swiftly-ext deleted file mode 160000 index 56d032e6a..000000000 --- a/vendor/swiftly-ext +++ /dev/null @@ -1 +0,0 @@ -Subproject commit 56d032e6a0c38a8aa1f764bedae73198c14bb05c diff --git a/vendor/texttable/TextTable.h b/vendor/texttable/TextTable.h deleted file mode 100644 index 0a6c6d855..000000000 --- a/vendor/texttable/TextTable.h +++ /dev/null @@ -1,222 +0,0 @@ -#pragma once - -#include <iomanip> -#include <iostream> -#include <map> -#include <string> -#include <vector> - -#ifdef TEXTTABLE_ENCODE_MULTIBYTE_STRINGS -#include <clocale> -#ifndef TEXTTABLE_USE_EN_US_UTF8 -#define TEXTTABLE_USE_EN_US_UTF8 -#endif -#endif - -class TextTable -{ -public: - enum class Alignment - { - LEFT, - RIGHT - }; - typedef std::vector<std::string> Row; - TextTable() - : _horizontal('-'), _vertical('|'), _corner('+'), _has_ruler(true) {} - - TextTable(char horizontal, char vertical, char corner) - : _horizontal(horizontal), _vertical(vertical), _corner(corner), - _has_ruler(true) {} - - explicit TextTable(char vertical) - : _horizontal('\0'), _vertical(vertical), _corner('\0'), - _has_ruler(false) {} - - void setAlignment(unsigned i, Alignment alignment) - { - _alignment[i] = alignment; - } - - Alignment alignment(unsigned i) const { return _alignment[i]; } - - char vertical() const { return _vertical; } - - char horizontal() const { return _horizontal; } - - void add(const std::string &content) { _current.push_back(content); } - - void endOfRow() - { - _rows.push_back(_current); - _current.assign(0, ""); - } - - template <typename Iterator> - void addRow(Iterator begin, Iterator end) - { - for (auto i = begin; i != end; ++i) - { - add(*i); - } - endOfRow(); - } - - template <typename Container> - void addRow(const Container &container) - { - addRow(container.begin(), container.end()); - } - - const std::vector<Row> &rows() const { return _rows; } - - void setup() const - { - determineWidths(); - setupAlignment(); - } - - std::string ruler() const - { - std::string result; - result += _corner; - for (auto width = _width.begin(); width != _width.end(); ++width) - { - result += repeat(*width, _horizontal); - result += _corner; - } - - return result; - } - - int width(unsigned i) const { return _width[i]; } - - bool has_ruler() const { return _has_ruler; } - - int correctDistance(const std::string &string_to_correct) const - { - return static_cast<int>(string_to_correct.size()) - - static_cast<int>(glyphLength(string_to_correct)); - }; - -private: - const char _horizontal; - const char _vertical; - const char _corner; - const bool _has_ruler; - Row _current; - std::vector<Row> _rows; - std::vector<unsigned> mutable _width; - std::vector<unsigned> mutable _utf8width; - std::map<unsigned, Alignment> mutable _alignment; - - static std::string repeat(unsigned times, char c) - { - std::string result; - for (; times > 0; --times) - result += c; - - return result; - } - - unsigned columns() const { return (unsigned)_rows[0].size(); } - - unsigned glyphLength(const std::string &s) const - { - unsigned int _byteLength = (unsigned int)(s.length()); -#ifdef TEXTTABLE_ENCODE_MULTIBYTE_STRINGS -#ifdef TEXTTABLE_USE_EN_US_UTF8 - std::setlocale(LC_ALL, "en_US.utf8"); -#else -#error You need to specify the encoding if the TextTable library uses multybyte string encoding! -#endif - unsigned int u = 0; - const char *c_str = s.c_str(); - unsigned _glyphLength = 0; - while (u < _byteLength) - { - u += std::mblen(&c_str[u], _byteLength - u); - _glyphLength += 1; - } - return _glyphLength; -#else - return _byteLength; -#endif - } - - void determineWidths() const - { - if (_rows.empty()) - { - return; - } - _width.assign(columns(), 0); - _utf8width.assign(columns(), 0); - for (auto rowIterator = _rows.begin(); rowIterator != _rows.end(); - ++rowIterator) - { - Row const &row = *rowIterator; - for (unsigned i = 0; i < row.size(); ++i) - { - _width[i] = - _width[i] > glyphLength(row[i]) ? _width[i] : glyphLength(row[i]); - } - } - } - - void setupAlignment() const - { - if (_rows.empty()) - { - return; - } - for (unsigned i = 0; i < columns(); ++i) - { - if (_alignment.find(i) == _alignment.end()) - { - _alignment[i] = Alignment::LEFT; - } - } - } -}; - -inline std::ostream &operator<<(std::ostream &stream, const TextTable &table) -{ - if (table.rows().empty()) - { - return stream; - } - table.setup(); - if (table.has_ruler()) - { - stream << table.ruler() << "\n"; - } - for (auto rowIterator = table.rows().begin(); - rowIterator != table.rows().end(); ++rowIterator) - { - TextTable::Row const &row = *rowIterator; - stream << table.vertical(); - for (unsigned i = 0; i < row.size(); ++i) - { - auto alignment = table.alignment(i) == TextTable::Alignment::LEFT - ? std::left - : std::right; - // std::setw( width ) works as follows: a string which goes in the stream - // with byte length (!) l is filled with n spaces so that l+n=width. For a - // utf8 encoded string the glyph length g might be smaller than l. We need - // n spaces so that g+n=width which is equivalent to g+n+l-l=width ==> l+n - // = width+l-g l-g (that means glyph length minus byte length) has to be - // added to the width argument. l-g is computed by correctDistance. - stream << std::setw(table.width(i) + table.correctDistance(row[i])) - << alignment << row[i]; - stream << table.vertical(); - } - stream << "\n"; - if (table.has_ruler()) - { - stream << table.ruler() << "\n"; - } - } - - return stream; -} diff --git a/vendor/zydis/linuxsteamrt64/libZydis.a b/vendor/zydis/linuxsteamrt64/libZydis.a deleted file mode 100644 index ed42d7892d8bf5673e89bde8a14d8cdb6654ec92..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 882084 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 diff --git a/vendor/zydis/win64/Zydis.lib b/vendor/zydis/win64/Zydis.lib deleted file mode 100644 index 3a191cca7720624a337ef652eb27ab248b2294d8..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1158758 zcmeFaOOIUHw(nJ(&Es%&Iy9kyK-z6^z9J%}D{8%Cz1KRncUA38!#AB7X=gcKj>xoK z)x2#)mv4a(Z6rFkK@;%__yqLm^BZ$T#Qe{&>z<21x=6UB)ZSim#a#0-=6L?cnE&}d zzgS<s|F8bpfBBz<{~gVbPma#!M<?^}`HSs8=kpgY7ViK5i+}dR5C7r+{=?r@|HZ%k zzyI-H{_uC-|Nd{S!Jn@Gk01VD`TL*#w;%rWM}Pn7*B}1$PyPL$?|=9cfB){^{rAD& zzxUIB`orPhzyBZqw?F*b{QD37yZ_~fZ~guK;_rTNfB*bH`Qh*FFa4MQ`oI7BU;Xg+ z|Av46@TWij@DKm+zkdJwz6RfE;5!ZcKcj*F`G5G~AHM&6UxV*7@SO&})4+Ec_)Y`g zY2Z5ze5Zl$H1M4UzSF>W8u(5F-)Z1G4Sc78?=<k82ENn4cN+Lk1K(-jI}LoNf$uc% z|2Z1?kN%zi=7;Zp-`C(f4gCL_27dhUO&Yy<@gnWVK8edTihkHWI!dxQjk{)y-uq{1 z+oWCHq|uLO{$W0L11~P4Kl^7jPug-AqaV-x!#2sXZb<6r$3GXnf815YGKrV=IBoso zKFRwuNh^EY_{T%Jte167&wnob+s945?AyL;qaR<$*p9o5|Kci(UVPbiaoVPNpA|*J zEUqus`{!p_S(fRT<UGG$NyBVhwsqStOBy!sAJ$L%pUk_s9pZ*T-rRq>xV^dBx16_K znpAPuMQ?w5TK#zT__UUBop<RnAG4;4K0mCl4qMx(EV`m8<0Sg{2klK?mQ`9tPv7dj zjhbeecVksWSKt2qn8sDP%<Jg-TkU<64f!(ZhdTQ0?(W-fR9V%P2_yLZkKP!vKJM~m z7kxQ+<8QxR-E4}7_1(qO(`sGaKdo-3e^vLJr}gvY)6K*E5C0}Fb@8k2k6#=fSL=)W zt1kcMJLCH1{wcn?TCX;nKkCQ5lU1+AZ+*lycK55hhx?n$KYZck>fOzTS^nV*uYY@7 zU0!USrWam4F|2p-<Kyc7>XlJida+sUPh^^Nq?#5Q|8ptlr*5k;%Sz7A$)5a<$D9p{ zvlx=)ZGTWslBA6Lg11*2A;^;~Pui+!is&+Y+!bY0m(g|bbeYF#-)Bv<2_83f*R^TV zMOVS&wk_+VAJgcaK0YnWJRRd|h}Nq|8Odo`7fF+3OP+tx=T+Gk1IK(jqu+x?IPKf2 z8`>s`-rjSb_Umw#l-ZEPFsEr9R_}wKopnXQQK*M)^E&MH48}I(W0UQgpTl4G>DZ<9 za*S>tE<fm3`)p{c<zSq|R-YrTJ9gF&Wglmmu~FB2A2ttg*s3ht%D_7IlbI#UuE@%& za7%OgR-4kI8HPC7&2w|H3i_O}+DVdT(=T;hXU&k+`MB*<nbfSUh9P5$wnO*9K)Td; zwhi#hkEfqy9P=bgs$%GND|W?y!9eCoSJ%rbtGB<^NzBu{DQYNgyDpdf7ydYH^Rlku zcKY!;_;J?2riZ5Aw&@(_S)UI>I&yN{f?r-;ybU|f(<ZHp7GdLFxVpGJd;u~jE4JEA z`AhI+K3gu^WOvry@?Y3H>zL-qwyE>C7gq<<s^hAyig>qqM^6vOVFz^{FUPvw(GxG6 z9=y;eT^#qjA@IT?d;!6Yc<*5nZh{y5cksg4wFrc1N0kibUEe2lvfORy=~sRCX_XI1 z<mtD%@Qb8Rsv+-W;77CIyNi72$|4`i-L~n<E^-7_*XpMae_myI8&}D0a7=s_F3qA^ zre)v4!?wc<K2V`d6#bY)_YY6&i{KD1s;Y_`*yVP~7EcdfeY{TN7;@jf@r+0bmwnO3 zNmb>w4DTe|+Qm@UP1cUvlleKI>BZ2Dan>()%eVRZ17nr8NndP_@8`9y{yD6^E0@EL z@N9esQ#env2A<s~+bOJ{e>^|r9q0M7L<$VW?w$K@yaStU%Mv#7<>K<=^UYe>#d*{B zO`nZr^ku!eT_MthW1RPpRym?4Oq6MJJRBs9Kkw3PcRJzHUk`Ff;{qnQn=35$>vzU} znT^@9*-?3LjN53;>%1uThv@qD;bK3OP#;N{!=$rpwT!Ae)H1$$WqkeeKnwWlm6!SQ z8?UIU5+|?zi8o&6?H|37tu7zd7f%m|+K7$AedOD-a82WSb$#<?wfUpIU#;HVt?svK z%wD-GSGQ<k%hgl<<?;6B^5*H)&F`zJ3srR(*mhd_v|N38wby;}xNl+LWAxiz93B<R zzQ~ZJW+4>vxbEU)7>CHK{71`nT$WwgMZf#^N{$A`OdH+$XH}WN<r_})3wc<@X;ZXi z^wB@-hk~bB5`Fg1hOBJ!tii7MGZw*q=tDj9L(T}_`e$RagdN+-{Bv4I2a6iNe*I4= z#QRtNP|M|we?8&sUigNByKDNI9(FB%p!n{Z|3K|cp0BT0>q)&mnDf*GrA!p?N3E|P zKCBLngXyO)S9hzsw_j=6yT%P<zoooAb-K>@<WCp3&);n8S6>b(dg`ybzxm?^*DZ8@ zbufv4YEP&3?S>xw_8T93wR$Qa9zGnr$kTECz@dBk?Vx2htUtE0c5ehj$Zj?ln+;2Q zyJB~zKIK_u=G*ktj`{uN1G?4iN<Ok>8MMA!-B$P44?nEzt=0O?jkovS+%lEt$8R-l zf1f<x++OYIDj1>r=xS};?P_%;Uw-|tZF;%-_`KTLSlegQ|H#|ZB>t#1e!F?NeSX@K z$@Z=O;jy^6z5Su6+SmEZS8veiU*@k~y?IsrE#E)PyPxu3{J;3en`HmbF7C7V_3-kq zZ^oB-QTg|}A@g0>Ki<S$=6_}n@M64<|MK$i;p>A3ZI*Y#>x0hHp&R4$;MK~;kiSmL zu!p8k!w2o((*EG5-53u2&Fin<`5BKw)&CUC;$`=S$!Yh~lQ-WOAT1^!cZ<#M>`CVz z*wXrW4r8ioIE?vA7CYRVY0=*-Uk-m6kM<qC47SMr_4B^%r#xl5-n4nYeC^jscleiK z>o1rHa{YR}T0#8jd+4`^LidM7XwT6TmcKh5zng#L&6OkP^_wSt{$~B~u;n*Xr(62p z9*ymXrvE9PAxNjK1druo-)Q}2fBC(g<ZeIYZGWB>8S7lFH+y$YwJBB?PtWVs^vf;( zOD}FOcc*9TaG6H%jfVWoPHHAeRHu2-7IhxII66K#J)6xJ=NE4;uU6N4F={U@m&3Bf zE8t&>v2$~;4|Fx|v?NVOjJFprUL3tResS{R^u^hW*^Bv$#f$T!7e_}&$44her$<{s ztV+l<RDHrS{N>wEXQy93M~V5y+xC>Vt5>gIzG19YU%jq|{?(fk)R~{Zew-V9ef2W4 zj?=$>{oL`JuipM<7e=eQgCXOXror~cmzVg*R#(OC#XHZ(^IK%?{gWeBM`^q%^p&A0 zA|Ll;LF<;je2ec)ez?^kH#-_Q&f_9am*`UK#eUC^^9nn^%^Q4D^03bGKEW&YP9HXH z92eMzD}C6O>2geSoK*62oRwvb_vkWsn2&hHi|EPwh>wdjX)$IJTwng@5b2oUmyXun z+kL#mea!?=`yTz9%c?4y5kvk)9+q{stm-6<HuA8FhpfqpB)ahG>2a0fDKBtWeSlWC zj(Q$8MbgJr^j6=@mUy$XF}l=;tmQIko9Id&)@|9acw_XztGvfeRV~{k{`)JhL?1VG z-W8b3(T8LI^#&Js*YNPIzS*N##~50d`f$kmGLQ4<LLRnpQ7%h-h96FRpIx8Ebyn2T zhnaua=NV3nq>4Vw{lg*6me}BUB5(9zo;P_rL{~m^aXc8^EZL3=eYlMKF0PyCgZHu> z56iCZaotC6_02MF+cayVOL;i9#aI_3t0Z3^$7DGseH(o^-4E#`sfi%87`dA#zjh}H zCUb^a5?!w4-E`T-%WBC(Kd6(m&Xb~mtzEADn((w7$F?q*zTZ)v;>^msI9kcLPSPeR zatrZX$!R)CaUS>eFfcH`{U=#m5J6z8F4umsd1~(6tl&KP`JQBaYp945ZJs<)o)C2z zO5#0y&7TRp%*(t;OI$?@A1XP?_*hou9P@L1YBXrZ`sPvQ#-Zx#IOn9UWg+u%$dYd0 z-6vVdBIoBx9P_Rxu9G6q>$2`~0-Sr>?W91hNU{O%;X<D-@vrolh?^(bi)ES(BRkK# z-lRLhwb0ds!su6@qI}`Ss_8*ia=DCA=c<&E$(r%B7@)IgEsWr##Hj2N^J@yvI4PSF zzdF8(m7LI%vK^8XUrDqUrgKtuZCn=6?n+MHN!b$y7?u?y6N(~cx5VR?Mk_hbC*_#5 zV~SVzaxGL+j#&;-K@W1wPmFPmSlh5o*`X@oF{d(GAIT13YRB<da#HmGR8>2`ruyja zPQF$rO;N;nqwnry&FU&CST+1#N3ui22MGtHOU58OUyp5@F*v>^@8WB3(w<e2H=C@+ zJ<quA?(}KfwH5RL{XhDn-Lw#1$IPB|FPpyVi;g*5=?Q9vzRv3kzNn|7P0E3g2Rp3$ zgIBJoaWl}btO8DurW;D!g}UZ#mQ_ujv%0!#_;Z)bo)x=Np26mhdBV9`DUGycTl8?q zXsz_rmR(v_L{%@9XS7Y(G(!bFDMhxNR}7$$HIsesU{GUOHar#j?`p!putY{C>uV>a zN%8iskMyZMLz=J-vTJ=jHcd4W;Z!Q?Qx+|&V`Q%IjGpjqQ4I+_2<`Q_o$D-3`I?Nk zA2>cs&dS}LoQfgsx{g`%HQ5V-q}>RqvSz{$P0(a8G`^-i<ZV*tE&Nb9^-!=G33FQ? zX}`!n<X6oYWV~ZR<fLH6cXzT5Xtl5hPUiEC*NacawlBw)SzIYij$MgsjCEKa$q5>J zw5$Ow2~FNpH9{eeTUO^u==U_qx@7E7bm-R);xx&ZS%z9<!QjQdk5im*JuW*=p$_>p zT^7uv$nd$}ul(C-ofM5>3m!kLpXD(z#kwvzUP?iy8GhQPLKgAZFY{?$)NRq4-l8;g znpX`W^%5G=1AUrvO3OHJEzIqu)M=5l-Ll8G$J?GXc-)U@Dg?BZ3!WBPNAMICgid7g zMVS+YN8H|AiT-$6bQO9L4n_tjeIx&xm>siEdP+E54h^ay3L7zW=^K~+GOkiP*g`i% zRPnOcOXE4R!8|6o1n;v>WR}Er5qN}U`J^X@Q$#}7;Ope6C%#ioc0&XS(R6g=rQ2zh zz-Oxrd2{qaAE$9LHhE@CB3%Pm=#s8*Cr;naEPl2$7Jj0S(V~{|U}xi0AD5^Wz#n*g zrjM(FrEOjOS3lWUP_)R6GKEaw%_Uqnu_f`W=Cn@oVXQ~k$NiP;LY<9mT4D&$iDzP` zb)K`CgxKjswz6&$LMm};lh;n*S82`T+khULr0XGChog`a)g%b=m?%98f<7kti@u)P z0Oga=Su><<Y9o<PHg(!HgiCEC`gY&IV2pE$C_ZgtAOuyH*vqmc1lRDA!(SMOSBy^E zB+rS4I&rR#;Td(zy0Vq}7}f<nz$lN7^|6^qgPC_nFZ6L)jd`A+Bpw~<;|c^0ZWr4H zp-l8wf^@`&SSfuB2W}elPgY8&GlFX&24pKGWCB))C}F#_$I?lMWj+*GmGrG|7Y)!J zf_jWZANNFQyDGO86k3B%wM5};@~2+CJtgc_H$C<p3#*SYc-ywOg*^@);|l4!!up<j z=4gSjJ{g?E)VEE)WbC$r`nV*ZS+_Q9;RAh%d>!F2?1H}B#thM7b^-Iouv=n@b+#lz zY9Ox~;*hEJEsqEEk8I3K8@7<~fDxQn(Dq$$7KS=&%e*9p7)){)st&wXY<&wE4?`2T zgx+l=@));foEKScoyabXWnB(wl2|7~4<lN1g^FUG=;N_8*0Z#6dwMua>Jm*4!OY`h z|N2?dW?h-Xs(3EloTX`*Lo4pFAL3bBaU7D`QQNWKi8I(klPuA_ts75RXK7On9f5Fr zeiA+(0pE=_)g$c(jR4u`#M-gEpT$5xN<bjizu%>^jE%z)?Y8>Zi<z@51t-Lm?fqkY zAHYaCfZVa~>iZdT9an-Ir@YUhg$y_W_FYc~XBOQz`f&Zra|CTw0v(I)zFcnBdul%` z^0FUTQ`e7dOM$+IbRS$l@_d<~eN^tLtUh)v@Eo*ao0X@Kvt^#5ekRei`MUf^mqm<) zQTLAeWRaK4yyZB#6M3ZFK*7TR;sHX_O+oZE@E#(Nd{!2%<dh-#-J%`)qkUEmMc0pD zeXJjSe=OoQ0a|2>DeqS~W**2P+mvHj%nGG5E924iBg=qojqL?vw@uXdmt#@Yg=4eF z@_r5X#Z}<6h+|n~ENL{Fd~p5CnW#rx1qmju^{?-b!_ZcsDr_C({f6~vfl}IYC31Xi z*sd7y){m?+n1ZTraD7-mLgdX@Bm<U{TL*oAtOr1mZvFLewRzkvQydD`zpN)`2uK5r z*!mY@ZlQ<DSgwszpD)oSJKR(Bqx;w{(M*gN^S&Ost}fepiHpU)E9=|=^GU|qF)H21 zuFVkI_}Q#~eILUdC8Bcu%Rct;GHzf$u76o)#1VlJ90xWp*%wTwB`_Zc*VKJMLf7Dv zYS+KKk6sls1IGk({fD?8IoD3g=za|_nIvi4zUcn)JgYm*QKM%$Uqf1ecEdMj>m&O+ zq_w#r9i8a$1;tjRDFWY)we({ODiJKl4D}rG9Q4lM_DlD1tYe(Zy<@7n?_&*;6c2`5 z2ceS@=A2}xWcFP-r<i5^h>qmOFLW}tsKGt5&(`1fGb<8YEHO-M9WtO9E+~++AZyTM zF0bG1InxYX8uSzF@XKQUbRi8uT+#v`RkRAbI>+^v^(|{nSDPn7HJ;C%b0!gZHRp9P zKWJ+sRL%hxg=@TgxPMwdU|u`d|1Kh%-V!Co)BiK(&ik-w3YLb?c+>sjtEbgAYP9Q@ z7u$>VJEFIAbNc`~=-pSpQOJP&ZhHLl`T{uZ*S$^y-TBZ783AZy$$s@V#c`g%$J3OD zew~hsA?w-%E$?By--_cU+$(|YM87`zhxkokIBgvL>U|N%SOAz9c*lPANR;EI#Aq0C z>iqiPf8KT&+VQdlS}qR<xCuti)Be#(65}$#B@<m-_+g$TX@a0AqF?X*$9dSLDIt~U zS<IUgu(se)vEDDPy#9BBF<t;mBmQuqPnSh!aJIK%)1D+1Uc&<A@9mS0py|@F?@&Tl zI$EH32;h`~`2{$^Q-H?~4F|xspII7X2bB1+pT*cY!F|li!uYRrzG>C=cnFE1yq5{5 zjU^^@OTOk;7EgF(ktJra5uZtl)mtVgckgdyyg=jXqDT3>d-x<HL-I7Z{4Q_BWdfWh z#q$Y=6VkwGjvKBSo9K2U10%G9dy)C-t9a+(o}m6OKgwwHc*M1g$+CHpkKu8^xq@1< z4thvob%221irRFN<03`F$6bBtN%o{j@mrQ;M!bEx^b^A+))7#}IJ}YR7VPAJdJl!@ zyCd-c3%y=lT=*V<1w&$G72U5qOFCIr1jA77p(cH|9*M|cyWKzdb91u9Y%3Ea>D5ZU zw(K~KB`FObbi!z04S6ChTAL6KEWfA{9JP1PvgSlsQw#$_C|4i-c<ZDB#EtC??oghh z738P|Je4ujILd~Y^W*s6mUo=sg2umsJM{8SW&z5XXXrWW&7Jhy6?szQm|ja<?xgOC zJ+v4;fFtEy9G^YDaERA4r4tfxVvzlWTb}hPF^xXKj(K>NS&%|fHWhnu`B_#6GS3G9 zyHKw_ZIYU#5(`wwjN7)UGi>*0^H#oQM=g)>IbM0ee8PI+OXFh~7c$|lD_bH|HVNSk zSObJx@h<*)>pg%ceVq}fAmIO~<j~hm9b<5U(DiH6*TA7mTnE3t)ebtWULbtY<=fBl zZcj`kMU%MRNDl*X&=wUqx>Z(&^R`S;gYeSGaEBtni^ReFRd;wG9GADG7TijF`2_b_ zLKvuuZpDf?A*_=TG9ptzqSibumJOuJ;t1soIBCZmC+j8{SsO3$SS?u`ImKf}IIO^l zw~>6MlM#iJd=3lh$qu7O6s3u?%UjuD7;lL}3pL#7(-yafg*$J9e!H=2kQFdl9Roh| zn!p|$&ac@i8C@W96MDemwcm_Wq$FGx;NxcX<j>}5QY>-i6To=9TKT0oP0F$dpq)e? zR4|+-V7k$(vDLl^t>JGbI#S_V<$!ytI3<ZJX0PllZ~Stcrsn;J3r9~V7k+>|?(r}Z z<W`P<nif6rIsoz;d=~O{nK3*h!3Smfr}&b(u^{S4N?7oAUlnAY;S(12%G(SaSO5e3 zqywxG$^^oqYmh_oNnCwd7dvv6rAi6SlT?Oo@cVl&Cr%N;7BnF6{C+K+U{K-P$;#+4 z7&qQy5c_!Sk)rxGUXL{8w6SSkGM#39(~Q_!V7^6jIE8iM?88yVdi!H|niIb(aZE(l zmk&ZGC|RRT@`Il5(>xy<*zd^8@Ac&+x-G6pV`#F&c@2mlHMQhcVi>2SzzsDhi0IeL zFJ9R=CHXJz2r~pEg|37<3C4`NBQpnIj6)7<?^@aIX;BaeFeC8o?WHVs(Hj_nyckHw zi<na!cYQVBR=x;7IaDLcSRMWP;dl8Yj!2@XDB`evnd36g%B(|rp`81Jdb(WJc#^;z zUw;u~!YSYnqIqDBAD=fKuyDG>R>^S*)3-3*Q|lwidK|G2>o1<t5MV$N7&mZ!q2eXp z_W|S5W~t*Q0ja_$BpFKB_vx}l0~)d4uO1)u?Y<)a5C!!jAV4A;M3Qig@wV(cp#W62 z%FrzDWW9-%H+Ze#_qWgb7;eJC8dH4l6};0jN7*2YjPs-izRX)xT0$?MR%;<w=%&fh zmyL?O=sP9r673PTwz*T{=Jcj12}02)WzVN@uLM1dBdnUpX@!0>Hu!MRW#p3tQc#G@ zjemO~>x~BoD+132+L!E3Rg7hiY6wB-<SYEdSq}^WA?lThQ+y??HwmW~R}b3B2q2>) z_QJ`QS=Ok{sHmpke%8kc5hm0)9xDyj*}!@uc5j3Au5nHi^(^ebdyU|<uE@k1ajaac z)^}PH-A7lkK)h}-!k_g98*&@0ca7%B<ZaKqBsy)<wm{{FGM{f{k_}2hmt(SB2W+=Z zEAp<`NdStT=vy!&&e{5~Rtm%?K(vC4V+5^qjh84-fYRDd%0d}zvF^+ixP0%m;8PG) z2ugf(^etzhMKc&s45Kfkefp7fKv&2|&Z3L8M6*vj5El){n@tdN>(s`91Fg1w7ovw_ zkjTwWq96+o><XAPNj(6ER6r4@K*}W;D}j_FZrr+cMMoC?55{YVEq4gnB5Pt6Q&!=j z;q4PYogRzB7^E$gFvotGEPDg0T|eom?8_d@4aJjjdnNOfuy$wB2gp@sL-c_L^k*Im z*Xa9v3BUxE2^_x+gt%hGTA7fOVdMS4J;eedM1-aWBs1e%M%RI0zzsD3z**XCWY0(e zA*&TA-}S{?8Ht1PH8|Z^5}D0F%ra}Se-I=3c0r<RPt;^}cc+g**@3UX*1-$nrvv4X z;LcgNytoyOYD@vq6&##Rpnvfg8OpjMilh_5BXNqq!d6g}3Z%OwxW>`-Th#}~u_Htd ztG`jUc7`Vc27%G^D}W%sJ!eS*BOOqQude|!??=vaq!IWx6C}U;oj3zF77rE-f84Au zJb&alPO1zS{Rg%}pOX|DqwPKhT=tAm%4lI!C%gTm&MZOIFe2-#M^SkR?ttNJmP7O@ zIQeG~#SnuZaQ-*Hzyy7ABd!)jf+Sa&6?O^cE1Kf!Nz{7YC+tN+vCZmMM~~M&!F3;9 zKP#U+OF9n!K>WhSqy6{ffD@T<I<Y<<u%3XP*lKQcHSxE{1DR8%(CT*qDkdrC4rwT> zgV&xy3OT?s{B7O`aE5E6?koa%`S>h#4(xfG5RfphhcL`Du&@0{(9&&|XN^3^XyPQW zXrhhV<GSqF6;rhQ@jFY4Ho>W3E{)F@I?ST)aa6cf7B%V2z$JNwstPg4Dd9PhbE}A8 z!<1DcLT6x6QwQG$<0-LviN83N(u)UTcO-T<mdu4W)*m2ZcLnMXOvP4Nr`rH^$?-Lr z1>@P?S=tdPTY`i%>e1(L5QG7S(Dm_+>{d$W1F7+#A+N<hbq2FpqGfcvuNo@P^9=YS z+5vW!oH>x4Xev1Sj5<AYAqEJ93=_xP3S!2c;fg6TbZ&dD+iPjJ0B12Vd0*C(@L$?= z@GjP0&}?Vmb(Wo(RX8Yu_wik#U~@<x*DJ3joMlTiA$Yp`uJ%v*J4P>u9mUq`H)r$$ zvI!Hw><E2-Ksm-<itavN+;|~yhBZ!1gSA&;AVn40Nm17xpDtu`akAqXAtq*;j1VEn zeL}W$ZV9i_d0v3VFweX(D%o5ZMjIRP8?njeqB{XeCxiOZIH6}HISwTAzc`}OemIGQ zzd++$J?dFRwZ}Vz7yD{;d-0p}gQo-M7s}s#FyFi-Ke^~9^IC`&ylIwzC5^5F33LY5 z0K*eEw-K$r-!BVdWx%U`zZ5ST?*n3N3H%z%)A5fPp$7W5@dy!85(POy7QX2)!TU^h zWc}?>$mSMgUsnn4UGzF7sv^ySd9t27*ZnP0Jf`>|O{ut)^~V=nSGN8}oWXMt8Yruj zNePGt^Uo^QI7>&)mSKni{A21c9GMor4G`Tp+^$1;S(IJR4uGa(nEHMNga-VJQD^YD zAUPFp(PQATI0M^-HyJzf^ZHISm$RbbzX~N3?ME~&o@1Y5rn;k|v!&ic&H->#D1r`; zf8$IwlL$JV5#Tlkm9u$tSAdtA7Hur@?t`a7u=ZurW7vN9axXrtGgMA|Yd8jsB?(pW zyjyYv+^z)AL7D;;jjoTs2>#}bOrShV@yC6EGaSix!KJdn7<kxbLRF}pV3M#;jAcmw zB}Y23@7ihf>h2kPGN2E^nmN7tKEjxAo3Z#n5un@xMjqV6)EHSGDsc=*kb%>3w~_V1 zg+bty(|i3kkjPZ}K@lcoWX=W=ML5IZJ`Jp&)1v)j>~J2j1YnWg6gUIOOKcM`FB1P* z$KS++1&LtVDb;=&G#^6I?z9V?5RrieqY0Qu3!VdqB^<yiDD|VrFB7y#XOL?5W1NEk znH+8M9AD(n5DRq@_StV^#X%(3#FqclJNaz2Wce$A66S)FX;pZ+Q9D6vlcFjb1wwil zOXqgE7r)CH90oVD#oOTJLME6BK(&CYKC){1U2~<_cg>L`!lD{b1!}hCI`HzH8Ey*S zB6>PxCC8{npp6XxkoDEmMz$B{OVP2Qy#J`{S(7a`B1MdeJ$kRl8FeIZshFgrdl@Hw zcEZ!-573XY6EnC8qaoR!9>Vvj&r-7OpYGPrGA}Igo;ooF$4Ff^XJFJhrPy^gPT5E7 zBQv|%_rP*Gs{v?qU<%-#S9*-#VixIgVH9QBH30G@1*xJ9b&_O%(Y;XtId<q7IxjLl z(8Ngkf?Ems7~qUbBbIV;d2;N@s!2HQYyi^@)MFf;xR~K$bg#?bq!^0kD7+12U4#CI z^PzCVk!9fEqMCrNyLuE@^I21(u^9I8@#gqib_<X>U@yyZ;IrCI1+f)48f+ExeK=uS z0WY!D)aOl+p)eY?J#K`W8+7RktTDR?*~&678W=syWOJ+53FW3NXkbB(i%%l!ntp%_ zICtbjuq)s>P@zDnLxr+iSO}>ZI_{LpIDy}g(EyJ7ODNRZA_tbpIPJ7+KQN`D#cT7{ zq?#Xp3nCTRD0(NSRNuz|(l_YYcB*B*c#jAd!~E?uib@A>AZa2qCt+ZXbupk53yd0> zNIwp>1m})E1^&%55T!{DE*_!0(e>|A&>{(j_OB#xh^p6RhK@1g9+O(e0|24Iy3bwz z!Zk4ZdmL30H<9_`Mj8Q!(~l_?etiJ6=MLp*^rquSB;fwF5>|md*3|{pBpNKTQOF1M zX9-9S8Fd4jm+s*v7BF?>sm~1<(f6q9kd;1fi9U}UY9mh_KK^EK6sY|$CH*d#B3vcT z=d90riXM&dZAVtpKVHgZjI=Q3b16)<r$P)>!WjQ=x5r{6<ClWxF<;X`MCSLz5BeB% zn`!>SY<so}*#h&2++>^>$SLj^9DkeOxWF^YdWmLhyim4<`eG~)mIB7AGCgDqn2HQb zWb;w#4W41*^mUCcW8)O^8B%mTOQfP7Wg7!N-yFXQWc%eom^q0jWG=Re`>v1`7BxUc z#<{)<bV=fucpZC$btvox1S#j5<IZ=rA94<eDL_BS3Rxc*b6n$3F%NC<e#038PG--Q znGY210xoMh)bm@}U-GD?nsV#QK&TCU3z`+SXZ`E@1FU=`0pu2gOr(NksNm_wlDZ6p z>@bc6N;Sz$j7Rzzv)a5_CiI^-!VY;GUou{bhiB!gJkH5HNgWr^ZZIeN95S&}DqL)& zf>K+soR8NG$R97BQ{@j&nQ<RkPC}-oRep2aR{Mv@3Hn)V;6axG1qu%*QpAp(aA9hH zRRkLy*H&+e<p!l4@irqjF$qQzc{u=$JJvcL)MIM*P269|VWb8hz+K#nNH2YVfOb%3 z9QX0hXGx67k>N@F;_9~S7lMYu3TIL`^KB3;oh1nO4p{P}-1;S*k@*kWoTdJ}e%{Dh z%<v@El-XphH#hI@{bJD2TLKqr9Y}tv?^!}0IlPEYl}R&_0a9l$V8yBMp@Bq1)E!RK zW+P-|4Fp3mF|I>CF(VhO0XSkd6$i)fs5MYT4o`rI$>2GDHuOq<0EY@1ILobR@0+^| zi2>4+K@*ec9lmk_*v!bxS(<foZ4%M5<Qd0_dVbK@=XH>oMFT-Y>Oe*ptBpc+X32<$ zufPNP>F)Yj@G~?}@R22iD_{Z2U;($6z*wV4mi$?^f^=`BD9{bOTgnG##3=A97$1E9 ze61^+CaB-73&aIx!VDdTvQRhxA43*71Nn!l2lk9<>sg-x3MQ+;sYDQntO&LIh+z@C zbRYL*J_B9^N|(?KU2VST{BZP>4o1f0{l`n)rIZxUnsoDtI^_hU%btxQROCjb-=OGK zK^oDg$F*9mGn{DDKcFV3&F@*i4Lk|ckLcVrDzWETGphF4j&JR8{dP+^!UUfmM{M=z z{aUjWzYw@L02YiYSdk7dXGP}Or@KJz&C;GCS(zixKyc8|!j4hX9ii*T@fwqOKvzc4 z+JK^q@HVQVFq=*g)qvbe^2h9y=`To`tVZgCeSy~BdSCX8LSm2`{vLN=mEJ~Tr{*g+ zXS3jUW*`O#Ct%aTz{H(8!)=;V2@JK_n1#>?jtFzil0#@_g4Y~oSq?^tk|ojO`@mf= z%dp0f?5Ik12(&8_bCGH=B-?TsEpAy0{UDT$DagdLk~}0rI<|qgk3Il7qrx#K89Mw# zg(#&%t6YX6<#?XR-&tm5f=RD}i(FiZ^*h6#f|U!6d_t52zo-lHF+i4lf)_q|?7<AI z6%j}9ppVE@(FJKhA)qIFF5c2v1}M&){H`bEU_j+SG9d))+oDDAi?O3*2GSq$3>F<E zIUq20<0^=f&A{?niZr9OX$Vn~Awrr6r0%|<4ah_X%CTsT7tu3(Uckc%-hVpaFBIZs z&xxrz#v|L86Nba7Z@O8a{LKg#j3f}E^IKPP_VXMsBHDyw(O!$0Ss|Dh1I1B@E-ev; znmP=2F8PG^RFaNQl8_sea@-untpzY=-i6!yV=s9z@$pE&sjT5$&_GTwc=O0Obnp!V zhh)CtFfb)bKMoH8u0+t>#DGvbCN2me)B)=%m^cPE3WVuDf!;Wy$_FHkHEYLDcF8Ix z0GF{7&Nk^Mx~|6G$cBd+-;6p9L_mP_xY24?Ab>be=s-5VpaEPW*o^2?s8r63BY=7_ z78Yo&G*qZfSSxM=g%#5<l8^(nh59VNz{9%4?r{^>kK;Y-Dz?Kdl{AnYga?6mwQ&oT zv3Ol5a7zLP3v#1th4&k72t2~^7wrmqBe|Kdg#AJ`(CW1g4P@oyfE)q~Tz3Y6cFav^ zy;#=RdqgrE<Ix5@+7y5>H3g<1JgmUZG~o2a+++t)kQ0*b?VurLb-0vbM@J*1W(-EZ zfx8Jk6DCH(du`~c%t#FvjBAW#;Z<1r5F8$UcJNjr7qfye3WbL4X!3Dg5?px5Wqv_d z%B)E78PT{13>uS`kK+zsQf3A)4PB{BStcX`);LDpTFK0pSy7=Bv*+e07xHnS4P5lo z4$2}zQW;rHcFd6}vQ|KK$0dFm_X{!5W=o1<=H{<*0!@EG1rMSm({r5$fN>PQ$#M>+ z0i2j>L-vWl_Ma^qJT<s4+{A-vbZAyJu|0P0@lq#l$vVV(?Ud^Yw3<9rXEEuE&Lckn z#}7me-QGxA_peN?u)Q-}(CK7)xZ{8`TBY;H3yuBFN-H8mGN}88O8BxQhDF^bQ#)2G z?WzR9+f~@^=0cLwQBnw$><v2v@CDhX5^Iet0~5>qLKc_0ARunBzZ|F31|EZ|-fCh( zhg4sIsK~GQg#DmQ*A?t17u@ZJ^h7CcQv&VVV7z4-6{s#!Ly!aj1Oy>4t8$=%#Os|T zI2QE~eG)Vfd7&6c8Wf&UEF9Q8({O{*Z<IukEc29)zt<y+U%jBh4rFLC30W#?0+G~7 zPKb*aA9?vy!QBQ+>oiZtwGVsDC}N6J1_0uxyHNI{g&71EkL`hC3@^sn<QO86Bwed< z0CoT{g$Zh4cUH$S5jebePK^*oLIMxBJm7qH+K}v%MQ(CR(@%~fZ2<F(MHfe=9_j|x zr0x(VW)UGCWj$6WuLhtysVe$$Zt&m&5A)cg-N+)6frC`xR)9~WMy-9+eOBj`{Q&8O zdxId394HE$;jX}PbEA?StP9*ZRE%Jw7?rFQK@h%fo+ldg(2`J0nwjx$`-OH@VVL3$ zo_tK&6?vy1-td-~&Lz4uC1j|qi_CU%=)n^M<zj#v!`{s32o@2yI2IRvFTA)PJ$_(T zlO{yQB*G(%meNpio>8)0ct%b$A)Y!W6hlL37uVn$twa<Aw_d5CQV#$F3Vwm_<sw)T zgehQe)Kf%+fH`MG!YICgUcUKYCG}*2_$mpokWXV1)I|jEZK9UA!u>`WJHBqx2+8mK zWLqo0psa`4xmEQ3V53++t0`~3TQ*9Ffq)4I8U|op>BlKn0=IG@I=&%0*klyI2S|cm zKwsJbnv@_NW`vQbjw;9XMA?>UxN<(=#nk5kOa@F(!>2Q-igGDEhx6dz0LukQ&VINF zYF8w&H&*@a>4=`Zmv}}-GpIa5X-=(_6Georv-*A0>gsT7yg6K6V7?HnY`;;|TR^SE z>Ve?iD<yLLfk1=2bwW+Q0ZgWanN7dYZ{Xje++80%hgg;w_{0SFoxz}gU#;aB&`_X7 zP2THAp<O(=*j%8P9kuH>IJ6BuQ47{8l!IF$V!T`!O75t6&od3?$s(MGU9h?rBO5J= zFgM1Sa~TWyVA@c~gOChNU-5l2U~0rJ@LD=)puZr&mNGzGMZ|S20<@X6Xi5-}`7^Qj zyn}Mq0+t8VPPX)0ZeY3h`vDLJp3j~;86`Zi&A}vtT$(t87*{RIL^l!${KBWzi_ik& z#((2P>iY{FE_XS&j7%pcWOb=kGT<?Xu1u`SF=zorQ$-K|=z%CA!P+3#_@T|B)!|aT zhk=2QHB6;!EmaEHb2v2;^;sf4GhD(JK>@^MK4<*}78k%l`^2+SC}yC6NKJtQd9KqK zs6)xM15;2$dxB9Spi!cTy{>$Cg;ZtID**jOD0c8Aza1d0NmMugz8y~a25~YlHh?5t z6n!nf0A*u<VMYbVkTrBz5hE%jnk*FQj0Dli+Xg)m@C&Xl;^G%HiKoz)KckEg=sbL_ z*K6}W%cm=}N>kI^`P1o<kQ!Sq`85@-1z0pAiiY>n$q2iPNV=*k@*GfU9h=r!w3&JO zo#D!c$S*o8W{A4!j;#KI5~T#YFwE~m-y3D=NKrwJaR*SAgqyx7x`$iZowJ}J13(HR z;md)50{3P99%s=imSqOU7!MJ(N8NFfGeE(X9LN@EYCu3b4<d7xfJns4z9FPQq^GCu z-n57+Jn%nHWd_aja4cpI4QOMIU$D5cx;+uo%(+|)0iz8>ZyKu^;|^fZfIHH{(C)~} z>h_cZwd;=DT3zT`H57J8$nJI?eBt<1SHew+vg;0@cGZ_~KD>?&x~Lz=Q$K>Hc9K~n z0r!$nyn|E@hl!PQHV_3tD}hMNvm(Es0e_&=r&$ph?T}Efk5V@#pKb*8JOiH;Q*r{k z)jTWOm7zpQv?ICetzLOH17wwD7%}YMvr242jboo0*e`_e&dfjBk{LSDp`53oAd%Fm zBq1J>Ux4|@M##;aG&(3QaiCy~v!K?x8#q)cpkOMA84|L#13|^SCqd77R<tV!nng#o z`fa1&%^BDoJQ9SaKe2?t1i7?rq<+rSAe2ir4T^afRhhp|zd=|Tj=!z9APj>DHwp82 zz#NUpu_3*fTeMO;nrJaW1I_}IrZz!UD(N1jnFKIL(z@kV8;E+MZd3u0kR#bUi`Gtu z{9;TBsz{=xId_OGBH33KxIxLkzSnU2%qocx_B8tqW-P-cbWObo+z8GcqFos#GzL88 zz9EY^;#;gSoTp!CgB51xvOYuySL}I)NVJ=(%jO=25_Q!9c3|HimmS~JZ{uAj36ZS5 z`>R_ib2$TfL;w$}GR;x;4|}Av+p(CQY3A~6WIs1i;mbB_LFY}WJ>qoO#`mGZPUReP zd4g9z@NLil_7ph3rOn+7ccY{&04JPmPDJQ8EI{Il0*3NwZZTFe(IK99=I-?~pC{D& z1ojPT{dPk(sb57}YVz0l&GnbV-coYtmt3Rbyk?T8Hpf2&;)|U^WGk4S1~jFZgMh3( z_zZY%5JR?-m~i5WnnQCnH9JvDoI~AnIa+{nQDkO29ZwQ-LNVOjVt_?d9MPlZs6-`6 zQ|Ptk=@Y;99BVKqjcI#Kgf-HF{c723j*-t!_q#k#pyHbR_2}vL?dCVp>gPy3+(H)1 zpc=~cjgPR*Ns~pz%TQ?W@jkBn>6%-G5yKyEbydI9Tzh7bWdsJlcqd984M;@%ZrfGU z&VUqCw2SqG_!ZGGClLW04*H)l3RM7Up<E#qqo)Cg<82Ojgy<yf=;`Y5?X&I<5H+lR z;Q6ja%*J_&aOX-U>f|`Ok=-H1pa-Prglu3q&JFcV4eIFAfp3Eb@FjK~=BEQA)LO{? zv#1}_QBTl3vkY^vv6g`qoK9M(DP#-kn5d`{v|!0w=~2ABfgw646`cK<l==0oAiU;? z3DjouiMZ{NQ)Mk^qD=I_vYg{KYd|8S2$QO%>CUuJ7j&Qy#vSM2PE7hanzKb3nCa@v z<FTGzl9jL`Q8kzk=Dv^tQ8+Gbbl&slx6i>$sVD4iy!+(XhmIP=Ijq3AU1+P$Gwv*H zVyN1PN{v<S&jY7q<>05W>1Gdkg8vCOkNb^&hv-&WVPm3^!z87J%oMOtsG0T~)idV^ zAB(h(+c>#=hZc&_QBG`PAf6r0DZ<-uhk?ntP@|kfH&sI}Y~<WV;xd~<?U=tX1INMi zGd-|Oc4+$(88mP>sup9ZOr#UEkSPn}H9i$UQRjGEIvA2u9w92P3(lzmLg`>`fSia* zTL|f*{kY&ev0Lw=n%h;C_}U>}_Z=MpIWFkC_8r{a0uY*8@CaT-0|sZ%0N|(T+;p&) zl-j8Jlj6v+6K5_Y9a`6R0N;SK9K`45l&b5or%XX`hs5(xynq0>5O2;d6McV9b}%+N z2F*kt`keu|JF&p&JNla?X%VO{#@uY8vIMwU0fd25ofcH+15t%R3_|wP?Zdm{ptmKw z8a<QVjJL=L$Q;C7ZJsY!s6>qB=$|;Ixk-edApCRys3R1|-1;a*jG38`7(YI6oz7AE z$q+ywObehxX1K<2CjO-j2&&u)l1_W0Emka?nBW9#d_3|yupEhsjR2EBne$W>r8(tV zkbHPgu7U4p%E6rK22}7hO~UQ8SBd7-Tme8vg8p<4Wz7i4W1!-gbH5QaYR)zzDlk5b z<EZs9Cl!J!qqsL7uO9==a*o%7gnH2CP}Jj%B+bq#R8Ag0RV=w><Y3g)+X8N4LNRpp z&#m~PT@5;IwCoyH61e`6kj3p)SZs1mwNMgeIH41ULY5k@A&4laNdzwMc{#!*E&s<p z^L(v8v4Z$GGdHUXe8OIloa1OrDP%I)Eo)UvDsa?bm(8*c@o95faNZdShOX*4@jUe2 ziLI)0n+7hD#23NBd|ux?iRu9y6M;;w2)y$)VEIHE@nR8-`{aUaB6PT^A*CXeWyA3+ z)g!pHmN85QlDggJhQI^DXpS#4k+d^&gpfRj_Vxba_-y9s*5$r&I#_?GUG~fnWaOCu zdOQH7%t^DNXruEc6LM63TcMFOR{6}0S=8)#Ma2n<I8PyuK!oC~!>$6~W@M`Xx49Xu z+zey&GJtz3OQHBN7ZQSGW1<0+jo*Ml!6nKb;2V>wI&=6Ig3_QgrnM>!P@vH68*o*q z0s!H>hBy(Uuwom5iZ&uOXbZSe+z3=9AXEb;$Sz!Vqm~r~F}Eat0S(j?ncz3X2FZO% zjXpje2V=whA>G@8>R3%uUusSzDzs*t5YyQ7J2lXEVA+mIuRaDXr1_3$lP1K~3ppp6 zK_D5o0(N>3znj;bPKpjAK-_P%H!9_)6po;Ud)LJsFgI^b16G&SK~O!*5ykc-Een>< zHSX{3y_aH6F(=&2+??ySM}o<7vXsbp!dcD{U0*1<p%CC_W&jQcp$ke2{M(Et7hsnG zSiuc|O{V)?y<JO+%A7)c+yTq78N*YA+Z+{>s~iB6p_H%-vII?uvTp?q-FI}NoJ317 zF=hz4>EaOn#zu0`5!-I<&7v51eJ~v!gOV0=uv@qpEwsz`gENl+v+^gVYlqmexz*+7 zG9S}QY!gI=kkCMlHj7@n-gE@m&uv^#cl!4F7Qcn(6Wl~$IL66*T74AW0^r;37TO-H z_tG0_uY}0}gR%zjqo4)T-fD3e#`k$6`vc)}vYDyf_^y88Iiw4E00gNKqC!Y%p{5C@ zH+I0&qk=EzhBlx&5vyaOLiH~ahbw~tn#HAn<vDc(sbdAg(+yg!G>Vg0^>(9o8-VDu zRI8;Nu6fcdy07|5OQL+)0Aig6puYhTmtrm3Zvx=!+=4U21QFLy2XdsP(p-f~ZNH(= zlrAXAos`6IknpRUwU6G;sT9AYvYIXR)m6CEXtUrj>CFtgU_Mq-)xd&qgVh%`pQtiN z;UJ1VO~26*02d%=XgMVZGM+?6_#uEAM$G}1-&l$xaZwAx-9K?mJh_1*O!^MLsN*f- z6q-|8lT<G_;x*>Z#idAj%qp_P$vSa|QN>?J`8MK%RwIY4yBBgJR%19E*p5@%bZp#F zjL)w#$@qAwk`WXx1q#iCJU~;;DRIozTO=jA5j@KwA(%=UtSQ0nJ3<FQ_b7?U0iMR@ zLt=BQ2LnFKzGG}h4lt0k7J|2<Z7f7vNZ6=w>{?3z&zh58nboM3CS&fORK|3;(!s15 z^qg!Ii5txU;&*tvoEi!X(bXBS61iZ0`i|=E1o5cHNJ^G*oz+KK>)tYZ0T@P~NW1u5 z4<msO;2Vs<+*X0P-ortN3fgG|XQ#B|!e*6OmyWr}8uS1OaSpjPz-^-~_)8mn#V|e- zKQbQzDdc>cfo)?`Rt4;zWFypS){O%sCP#01rd-RlosaA(_g)YXHb;xo>U0E4%6@bv z7TkCAH%kiek1l`O&bI!B3xj~FFt$U3uy1gtSeaW#iE4OSxo~dTpuwz5Aw+;&+>8Q_ zbh00G08~LJNXo{oh-?hDhXA)L&OQx5myHZl?kO;jr~O8I8-c`Gg^lSu`kRqk#w+B7 zE$GK%9oq=gF@a_N7ahO=->r(t7zp=`3@+4n0_KjYRYM~d6I*taixz6gd``YHrAQ1> z>UKvcl-e%94p2{AZ#o@fV+5OsF-(*rgXSV5>h!=XrxD0R$@DaLfvF8PRsGHqqa2fc z8i9&Gu5uuX>q2Kn@A@4;a9joE=<r?<vh!g{btf>PL{jgsw7%+`i(t8C3I8ejX2ALf zpbx0FeBYK@$J|?G6u9d|QPP5ai-yQ-9^GCGeU8AQF=H)#>EiA|R}D*ffFExC6=D!^ zF9VJ{vsIk}ub<&YFq9K+Ml=0P{lsMW08p}EhtuiwH%oM_)@g1Vu4I-)BYM%{8E~u` z(W5Q6PKm@!uA!B(P%79{JJXW<aL)x|9@60cJLhPk?XzsC-PUAf5g424TKXMuMV7hX z^bF;o6n$#I9U9d0`Sw})F-e%PN#}^<Gr~a^PzE&|oU_j;>eyq-78J&|y1h;G0blv$ zg;f2d30odqe)PdCSrwTJt8_t~&>b5WC6OjenKbv|1XA(qO%r)X@MMG%ge3=ck<?aS z)Pe~F;@_>priP1KjIyrp%>41ZVqpcr5&(qJ<)^33&9QLb1)z`=SCF+lZjL1p-&*Pn zb87pk@JD1pQ$cY1DWS*(+XvdptoLbvItsgljr8o@0CmE4{H?Us^s8X(2H%AEcHatq zMGZ*IPRJiuo_bdn$%ruS2)Au#tiu=)D~`%dWtFfCKO&#4bf5)xe<L)z;1VOCgBI_b zHp>&>0$(>JBQ3?^@#^ujs=A959UQ}E%b+$&X(-18<;YrMx7cRgND@WSogvT9>+8+i z3(3!<!*0n9V035*DJ_(?z)<Xf7f(5qw<<?zvWrnDUOatEcamahmYrhf*QP8-ZUJc` zWHBMOBa|h?mWPKJf9Ei2sAoYq1uM#O2HdoCBe5)qFC#K-OEv)!!jUL$OFri`3gP4n zxD{a-vkCaw=VS55(ZscW9EU05wGmdf$N;NT7|;;aR+CMjdJ8L%&m|Pb8QtK8o+$3b zO+;weZWwR%^jp4I&#ja+Iacqv^CAP?$O1!!wu0feT2N&cUz-B2cb=gwD98#MvP66X z`aFr0rU^CQZVWTV^?og8_aei(Cz!Yo7RfNE$4!j`=b?6(H~AJhJrpn^lJ$K5c=_SI z(ppYIE~{z29lZEI7NqZxW<edD?XP72@tiSZvz8A-5(^4X1H-^nG}P$k`OeFv1-Y;w zVBz7$Yp&D_Llc`~XyM0;%MZ^RQO*{`4k=k>w)FHZ*)Pg?plJbpKr9A6l?4~65{$J{ zqmF^<&_~>)R{mq644p7{B7<KCA?LRLvu;0rS{f{ea=p4<JxPh$ML|j%R~!J|{e;r5 zj(M6W3Q1vj*5dYp3{r3HFTjKX+H`8Sqe9t8p!H<dS>@A-c4fjO4HLdHt-?r6R|z$h zF2P7|N1;FBQZ;I)050U*T^&nh;YCq#=coY^x1_7T!lvfN8dGr1coitx0<1ef1SSTM zaI+z#ytgVB_)|&Cv!KgiY=tHY6I;c`Ex`+YQpXVNRqGBHnz?8Z3#(ND;up@~I#fx6 zQi|Da0(lCY%HRoG#+2$uFPfH6xV7Ez$jz|Et=+=QFvv?G{}O2NM4$RCF7U<Tzz&#D zQp##5^+F8Y@C}Z1m4hy^YCuEQ(bLWCDuA>uxE_mu0mpwDp=c)yLgGNn>~idBUOITZ z%!nG3LT18<wYI<}M2vF*@^*QJpeS98=MhDH+U4L|eM_MVDv51(S=W#ZFZ{-aL2ztM zhrubP4xSrD5La3N`JZ$er^0H{vIVu_FecqjUOpb3st_vi&r`z6sK%O<KM`{&0bSy) zy4YArLKy{hk${z2g1h^biW;mb!**DyDYRS`%Tp*#+@s1crfGfF4hs@-sBpd0@Z`8s z)d81PZfcxkuCluLbeUCY#B1zYG|)v!iD|?dXK0$24x=R23YNq<fP%tK3u^QkxX+f? zCai3ztbmh4qFbs729KRsP|L%8>v$2YMvLUKyBTd5$BSS!@a6y{Fulu~f=xmEqdzl@ z!<f>7bBCYbykt{{LN%l-QO?pKERAf$`O2?GxD7zA_0_urwFW!~0T1dbeAv9dxmG07 zg6n*ishJT*^0xtR;MPu%@=Td80f|+zAsYzrifsyQK|p9hsR>a3OnLh&*%Zs~0XF9Z zlxZm5$+y77!8E~U**dsHtbwHm6YN|Bb|!^1D*R|%$zd$dRaugC!g)<{6|8(hoou|< zV?nhk+`5)=;=&lJyHF?%R!*D|(zv+XeAaK(T*ide2de(Sue+dNXadz(?feTe1SIKo zLEZqF890zHZ>jGSuyVWfgS6gBt$n*ux~{O)2}VO2hoP$l=**a_Ug6g)FMytfKY11Q z1e(0_3b0|S@lb{!p#qC3Lr83mUM(!Hh49KzhQFd3605j)#X3CjF)z633uliF<1n<f z098ja8msZa={2eV)Cm{Bac>44I>sUU1qh#-|Hg+V=bpziEXZ5JtwMhjyB2{$6-&a8 zrd%I}w-%HoB2HtnhIE6w2Z?1`Qy&9a+l^gEK}ARkD%*??B3%3mV4C^+C$iR2EV;0m zEAqC7>o#ZtSBeh6tXwR>Lpv8WnUw|gcKOsnV2mcP&y+9OO-l#J<)d6}z>f~XPy7gT zd<20-Udh$-jT)K+FaTc?%rd#V3G_k~e;m#(dW^KzP}`!Wax>mEaA^GMCeXX67s9pc zwoKOc{#cF)P6Uh>tIjt4O2<x<T`i42+MFE9CTr>ha*xPXcezp0ZSbRGQJ|4K)}`ho z*WO@(5)9m)yCZ)Vfb($Ofpc`2=UG*JYVnZ|<|1Ag1~<ntLP{fH$-Cr71Gp)-<|<q+ znlL<rvE&mSJfU9@=J-mT?(!goFc!w&ai|+Tx#bmM2)L_5g*Lu>0H#}T3lwFY>_^UW zkpV(x25dH-;TWFuN6^cPGf-dIaXi(aTJE3#@8HbS=i5s)@i_Y<7l4_8Z}5p@zk*nB zTux%?cUEcaQX**!E*`XU%P=)ZPbwFP7TFc2Mxaib=-6?LT3mTs%O)5g*M|~tC8KW= zPeM;EW_*mm-f|Pwttf+$V?NnBIi@D(j&cH6r(9IwMEsrZaXWCaiWQ`rViL;z$wQ#H znyKW65ugQ57s{rXE<918%!@KuBgx1tl&krnltDfzMUKqSM0Le+A@l0ktrCaFb{NVf ziOz7Ru6YccVW2;v<Q#yXEoI#3xg-357mPhIxe!E07F|n;Djao_ovHr71*spDiLu&| zx2sP#mrpPJ{!_KACfg5rXEv=yD;Jiz&p?a{9aYQ1_qYte+=3m2G_C@7SD)jAHx!YR zT!H_DD?^C_;GWp-zpQQ#5t7GaCYd8BSq+-V>ZEe`cJOlixeg0G6vJ?Rb?D(CS%D!s zSd6iFC8(Z4lx!I1#7QTmYdkoZA>jSC1f|2kOAk~4AH?)4(RWD9Af$(fk3HGE52uVL z*cGtblA%m_z!8e4n&q7ga#52JXjb-{RGsOd$oXf34YF$M6uQb610@Q$lF|r@?Yfn! zPzylocw9}MII2<F#VbgjogpBmCLJKx!C^r=9&ZM(%$V|N*#9oo#`vxzuP?X=7z#C* z%%odshm>$6L}diU$L@}Wps-s2M{-;zZ9<PLCOp+BoMGTV4Z0X0Xgd4Wbnw(>bO{O= zD16K9m+U0PEx0t)2}2jIln#+kX=bjKNioplibIZ2GxhYhCb?`Er4tfL^E-b6>ZF9b z7vxn@Q^NcclijVqD!B@c;<h_pqr<4|DtQ-1awks*Uze1*CN<FZEAaX+h~$y(V-;xK zj6ccpLQCkpT-?CQhfe$j9-a)pu<=kQC;hL^xpWVgEGz#wF$XzB=hRW7C>yQ;xUw-l zS^INb#@xb_O<~$wy<O)#p?)7F7xvpCuDo+tGP(IyHOf>a)N)Tc=iDJe^(1acG*u)d z#&d2z2BONLrOA0jy}fZxDGCCa#+tVdC%=^E+)7LF2ato-XQ<ztBOm~TSP^8?+5!+1 zZCoLnS*(UF2+uohQ2&xjZl6vM9k=Ho{y|t+%wgIfsq8=-bpdf8?tUjn^qg~@5Y&Q% zR#(rL8mpj*To|@)Y7s@|9Dk%i%h{hR3iSuYn$B@9Qzp~yV%|L4bs%eBb^09W8}xwj z{^=`$a87j_e5w^A*|L34&F4s4lq~~WZoT)OThIm<A-!_nr?wF;EeZtWmd13`tq?eQ z;wGqZORf|ab50U9QVSXBDpQ6;mceH*KRF}Q?{r<j1tXrEPII6npJ#X(tm5KM-IXBI zIi;jfg)DpOD;a;zHBAWt1>?y;^@&r;5dyYCp(_BDyD8|@i3)H>9fxu|Oljk~D#D(o z9T@sQP(;rO3BzLzzPY6%IVU+T6fPaxst!+@H*ika4=gv)$H~rnmMaZu%ivPRAlTaH zAU;4FX=7Y&xZ5IO&a|1K$I+XBU<;W#RS07Wo|7nz1N(r=@YtC{&$x%veU;oXiF?}# zcbr4z;vCm3c?=d=V3-zx6AH}hByL<rz#;oPCy^V^H>!~%T*7m@VnB!}J?omx@2ovi z3$%9;iOXBq=11j!1#TEB*+OHC<YV|dir`b4*$^LgPTs3cb&k^)v@D<79$DFQZnp+W zWXGBMbZom0h01jper86(bMOa<T76z%mf*HF+MMXmOA^}fwmRi`I~18Y?qY5%GR87} zPZx6;gVtb<(WkGhxO2S1353g0w@tvmBTKd<rw2upKBuAR#x8+lbA7wf=HzFPxl{Ro z%2M2_v)v(G>Lr13au;da_9=6K8<9KW=5C&xKxR-@1n(9118sBJbj>JUmT?wXPp73^ zee{s7bLuFQneUvG(+Bl?AT`LB+)~o}W5E}mFIy0N<b>?@NUl3SrvM)`Xd0NU*?aYg zor7NHLIM}wICP4f<Lw2!YHW4dKV6p+e-1@D0kYwbx+i4rooVMN2|W-z_F>B-geI)M z7Juxmo4e{O=cs&0MC0P82SM2LlB;#$15DkNH~fUMeWbg>JX})2L=qx`OG2ZN+9bO1 zOX!kWIwdH*-DwEA<T~LJ;~7WC`UWq^?>ak@7b*HNN#M|Bc@AKQdZSkU#+1xwjXu-H zU40a;0N!t*giE<Toi^&VyYdZAaI5)zUV+8MPr~=6Hl=vz2-Kcw5$<GOD3yWJ0v^G& zYTKl^pbb+9=o1uS<NW=LIHAu;RI(ykaN~)U>AKKHMH%NO<#(I#cO-mM1BX7hzZ1$e zryTRJ)8~FCI{P_ZIZCM6Y2aX9AI<c8-~uS&0#kBbYHH9qnbZZh@-X$Sd=^GPtdVFG zzD>iE9Ck^mNK%>{0ooLlsHy9famfn2b1M|JPpUu>bYNMo?+>6E=ioVTF1Sn_x12$r zAPTwa(zeh2E|?zI7?3UQ++PRCjdNnvfXXpSw{Vo;cZgE*qUduXGco$lfxG9_y?2VN z3!BT~qYVJPOJFp!|6Y|q#?RfDkc(3?aNmkF#c@(_7b{z2i~y5cP9L>`u&Yep*{+Lj zJJ)>yrv&Bb^tt!Jx=@#>aeB+dJ4H7pr-$SfQ@yrJCS7vJCW01ohlK{hJ3EzO;%6XK zJK?2lYo&(Axm}cLwISUUOw?+hT<dE&c<y^>++mxQXrWm5CxQl{kLnz4j$0n>G#FnE zqO#{)i$+qY$y4S)pQ;9O0}|qvq8{5mRn`)CC46P3BNMz|Yeph{;$tK8Z+B{g`Lz_K zaUKHa(YaUK#_quC;1hdt(KQ1f#AOjM-K|a_Bu`j|Ju(hC%|W-Fto<A|Pwdl-L~e)n zD68{^8g9VgC%F-Z)6dPM1BlM?n@C9+GWwc@IB46hnUGmy<?1jGcH<1zj5{_6TBDP0 z*GztAH&s)9b1VDUBbgsq`3~8?<<@XPp$Ut`0%tIeWp=t2iaIACggxjI$oXJ+R9e95 zgTsSO;#<ht@Yuwra2Oao^6ElGCU|<zt=0UPmPJnrh<Y*u0VlxCt{+1N+2WfbJCH3h z(;xs{oa2r+yvvr!BaCF*VVvNWIMLga8BCpM681I6Z#uQQ?Nm77_6ZX>6C)3PM<SYC z2kJ-y!&~t6=j}+^pED`8eacdU3nh5KFzrZxe3opJb395!X3;!J3%$7d^;sb9wBalR zg=j-LfY_XqIfAM0eEoD9;CarelvYvT5TkEPxuPyuRxKfzy}S`ZqNp8LUpTz<#5;wr z(l(Gc?-aTNsM0xWLSBqxbdHd8#X44#s2PU-v?^-c;EX_eJFm&)yVtQ$Q5o;SWJn$` z9<pEU4neyJ_2LMq>*jRtZ#~Dq%zaOQJ{-de;9KWC9!663OfF6YFFOQVg-hUXfjAFP zKj%G_A-K<$-?{C((Cq^iPGE|9T-JseCb;l(F5k*2E;Pv$Q%d!FSc4QLB%g~dGD;HW z(o?aAO4m^5<T6rbO)*Uh?ONd47&3jzngL|RZ)`s^d2{tq_yA2DBTH}Cb}2t2xe)|~ zAs!}CE5Yz{Jf$UUV*5D^Lj4_g*V?@Y{LU?>9%!y2#$Ggy$A%d|InOC&$GHR$VLGDK z7MEoi0ESwGcw!P*k}?M_#Q<LGoX6Al33&o=Zeiog=-u`4<ATE?j9{Q#Bo%^<&l#C* z)Gp^P6YAkn?Sx_6eEzWV7@_kKeVdB7MlI&JQ`bFh1f#Lpccz{05bjUA@02Cmntd`o zA|t@;9H?*VQ<jr^D~U-P(sFB_Y8!wRiubUb+dhLf?x40}e{TEG)@AA=WfAPoTbJO4 zLtFXW2t80hbh4t&!q#yDAtb&BlKbf^MV^X>fQTKMec}@OJBlDssMyS+i4({cVZ7n~ z=gt=x9hHm%*?^N2<;=o3kc*8)=QpB4x|*J*V+1f`N_Bu~2E9#zhbd|F^Uc-j=y>tL zo16AdLnPhuRC$Ljez&^6*lg5o$~)9$LQOTS=vx4*lr7&pUC&Oxc+SE*I4ihL#jfPq zzjJeP9KN$8xfPE`&=2o;d;$GXdM5_8K)Fm;5yHkyDsDJtF!9iyl~)YD<s*yqQ$m4V zXFkaNJ2vLv9dq$v=D`&9@7#R#4x3hUose7o>o1S@Pr%T15BL`5%@Y0(1M&SF&a37I zS8&zzvw!EBcY^V>z`J9P6%?|6>F%>c7Wo!9AnpPKkL1_qt3B-sG8*j4Z@=$ftszx` zxx32Z(ECr>c!E8p>?O&{mRq%d$JQr!hgx3nET<9dU%GoM(RId5fgG}c&A|)>yEVj! zP&7a9j42g1t)PQ{XA{1YL=C}lQk~<8kzHJqb-yC<Oca|WiSXkS+H|F{{)nQ}2pgA3 zJFfXp?=GI+uhx&(FW!?BqRBakWnzD*)TTThyyZ_dZ*@4bsLW$L&G_p#hm}QHOGOCc zQ_i-0;ugSfeUjIJLz2Xb+`t44Ui05<BYYZIj;7kNpwFQ%l2$_|STJ_WoRxc7E9Eh` zT-N>8IS4&sgjNi%27sb5%tN#utt0oQS-^JRv*$%^g!&M3_Y4cMliOakqLmU#)EP5v zd+Xi_e!C>iGq=PplZouS0Jr!pH$+*vHSVxq|MvLw=2EU(qqQ8lMA2RBu?@5w?R6en zYuY%(enz^IDR)wl^>0jh(!oSO<F_bpHrYFK@2So}6G?v*g$MlSY6S$4tTrM8#%e&r z4UtKA7eOi#ttkwJJf$67eH4~XE0Ar<(ZMCRzZKQUTDic;8L~V5)hkD|;$pI^KHZqF zu8vQRbh24aVNsX2v>TOf0r*`LUi^0V-Jq2^i8z5-jp;0W6p_exOLG0eO6<RT5_}iv z3ho$F)sazFx-@9TuU<OOifuiNA=r9Ko{g>DC9~c72dQPjcLDTK|9{8nZjnr~^;ot5 z;9W(?En#@@K^t);9&tpM%JO*0FE^r3S*sb26!vnYetZp+m7eJp+ruTaOurSolHan0 zE`joE-wlo2iwP4mvieH9rL};Qkk3i$w9cY9(uz4$Q|@b0SwL<FghRxQYOAo>9Y{!A ze*6}q!gX$S0IVY0!$v|(w03<=zM-9ac+)-QX}oq~trYHuEy0yYw+ZDats`Dr<iI}8 zDHtDXozU9T$$o#Zy(Cb8Hn6M_Hvho3Xd|kAfY|_kvEBUDrPtrA6(6Qmq~DUHI&Nq+ z#A&?s_#C)rthE91>y*u}Y%f~*Fm{Bgn@&8aT(DLbXr1(T8?!huXf3%f0W{&XzvdcI zE?8h;0&C>x8|OAn!YlFomJ1-ze^_T1u@6FTw88`psj{by;JaYhDG6m_h@LGC?7i}J z!XJ1Aai#8J(ND@F(OyWVbG3Z7tj_C*ZA7*u_K`_0Ha}GAXe^2Hv|O@@2Lct8yb3+r z-0Q%_%<dFz*+$Sx4X5Q2pW}zS)%xA)`1UCHY{!5JzwAPP8Uo|Hc**J(A-59=Z++cU zT0umEe(=m$XG>YWm=F?lgHMk^EAXt1$Z7=sz;q_M2+p5f+0X#&-TyM!J*ys0X*4_8 zTe8u~TIC^*7^ib9!vaQTR~wlZ3yS;7NMlT3-nzl%yKPTr&@<q$DR#Hrf<R!DTw_k~ z2dc5`g=ed>FN_R(gj@9(^PVo0MRI!sPWEkN_5j|{Mir4~HlM9`)C%Zd1xAIl3$VqG zmdO?fTFDipx)(&X`>oEXV*gOR5E$FmU`7>nZR|#dEzby|I*bZm5~;R`F*^r{li-w4 z;L%EZvKrF~TLfYZC^i1-trBX{(_r_F;0SMXcDKI`M@4~C%8bIvc0C94C9Fq0a8iLe zovQsZW-LkoG|Xt%bMRa8AW3(E-%K>Ab$QwdU%9ylr}^5LgZbip2TED73)|HQW`yIr zpkT<fk~XUFx8w+P+&?(2a~L?}yM#QbqPaVs@5AF+1LVl;5?1@}0oZ}x_F!~!r%Y_s zBjti1bw`p`OgW!g1K~;)N>CeHz!PUz!>(;)P-AXlp12^>QA^EQdpr!7^;_Lmt5wpv z<Tg#p__#5<-zrUVDZ`R%ALG7`Gu#H6B095`EM&~5UpdR^8GsF@ChNRy4bB3!VG=Ht z@SoMi;96`T9(L;z3+YsS9h5}`2nhg_n=lYZGZm1qSIgdpsqB8MWQ8S3X-YE$9A6I% z-!^JTqOlWD&3I&hLTV!uG~92t6Wd62@93r#g_@*#2*<ob$2XzwM6porQe;9qmg8;U zHp0C{l_iH$`U>|zE49Tz>YG|kNh>aP2{;aEKbV=E?QLBig-P>UD<_19-F!CgCQn^Q zN(NHG%0=*|%@tQ{8<A-evm7QAm``XXTPt|(#B^>uVk|{)#3;~4j*|;!ZM96@gMo`( z$#a6JuD5z*(25YF>MdlmZ4H<e7Zg}fjy>4@R%gVOac~r?=4N{zx-43(Z4?Ot4tQoK zD=+Ao<Z8>Vb+>79gT#SWP2y$UC05mB*K_b)xZGG92+gUAflGn!QgMWGI*e-fU7atO zbmDt}5_jr=9)yuHi0*E_-7*WW>LPCc96C%g2E{!`fPR!TXwKV&lQgY{+obT<BzfgT zjpf&VPW+k#ftXOs*5?xXQd~1BIEX<PpvUHt#q4mN8A1ye<ldtzsu#_mcWu`8YmB4g zqZ837XtoP&tias9S(qWsBk6Na*iG)BV5>UJ(3E(M$%d^rK`l+1snvu@2wm@+b=r2X zBFk!elCglJ6IE9EH9;iO98DS8HU~okoJF-K1kY|&L|S$crdJAn%eTr&wpMQb0}Qg` zwSjP<nG1a^oW!qhzC1tP+}(wJlQ)oK-TCHVLoju$T0a!J|FtJVI;S)~*L8V~=>F+q zuQ1Wf{cT-rP_NyugOL-Xq+S%7=j3`jBo#_vEio+Y%(~q^pcM=jFbEyN8*c1|in-S9 zQNE2yLvdm=9e2MD=1r<Hm=?o7ZMRbmq7JjA=OTOaWbS?)j+~@qd@K;+{@1!Jm^H+| z%&D~dwaBn8qH+^H04vc5Q#e$+XkOyhGzY+*7_@ItVkG96Qs#afYDfIIBDmXG#YXq( zLprodpWKf}+SJy_*CG=9n$SPRY&iP6Uk7ALnmhY}VKn)1EMn&65x=I;37C8{Z;Z&# zj&G%INf%LG(PHwZ0^eV4J)5#&Tn9<8%C6|%56!FB{JNwFH&wFa*SaiR)?p|e$ow1X z3cm*Ll@Q+WOD=-Pn#rx2bZF*e7}nqvkTX_tyX^FB*BsDNN%;z7v1#wSUk5{@#tade zNzF3#PBllqZRtvImfe0IFtrlB5r5FMYSXua&VlD(w6Nb3{x9&o&^h;yQ>V+(F<S!1 z3^vqi!jhI@$9u<6m8p@5j%8w!&z;}<3$3BlVbg%>ixGXst=B86V@l}`np50~qrvQ4 zwe?%_S-hXbnlUcgDWPd%=E0(p(Td{Z5dOO}77Pt*7xZbi<sG40pU%0ifD#Z!$j0?- z<hp7=bnq)#j>vxAK{FN9$eVD?d^@zD8C+NIYG?0Ab*0AuJCEC2JJ#Ghc<a!G*I|Ri z+=OAMzMUuthDNZH4R?;=uYFJa8ng&^$M3iU=R066D51C}ENZ>)TvrX3SUIA9xh<JQ zf6z=O4ne-19J0=X<{JB$=%`I>a=1%`w~MG;4yxX&idoS$mS!Ur^JwOB9%^M6ci0~A zm3K7IY?U4;pgo;X3@CMN(u}D|cHwSIpygoIC^*NJ@Kbde7Tub4<e*upU1sH}c04su z92%<oP!__mJv${Qnor2LiOE>lROYRO%uRjV@MpCecbx}kjB<dKYc{oYw`u|FX;BdI z+u5?%odkADbmXQt;ECKz_W<17MckvAw@a6twp&zXnw{y7_?lhk)0TLfr^7NqdqslV z$XPWL7E0%k0!P?@q`T&T)<8;8Wzb6R@0x=($B|;;lbrxQBqpw|qny5#b91Z4=fhva z6!(VSVUUB7a{|e(H_gICjr}?pImHyI*R$Lzp@-Z7j7DWuEVjQkJyO@4;H*`?WN0R0 z54`MMMA{MFCv%!i`wdSGevJv!j*j)%(5!PE8kPLG;?NA|y|D0_JDsClTj?t4Joq)G zBN}|j{?`Gm!4UzbP*!Sp#6Ac5GXM>{hR2ToB%t310-9I}2vXxrlR|c&Ae)1uGQ^ov zJVM*8!&)J!nZTuxnm2Q4#@$B&?44d>ioZ^qJKU()V9vrxj0I*ezorIAHd?9viC>=_ z$+Y_jLD5nxonM2UxnJMEd(a!IXg9|=CA;~#!<B}FPP^S_<iKtFcA<3IJM#P}XRN>X zTTXjVbt{}l`u(6CvzMz$jn;SH7n12Qd$3$6GU=A~o@?QPR0P@$Nah?hyM0wX+uFHL zi<rc2^+Kzg_MEIjhqRl%AFe*_=-CKzlNxS(v<K@;VO>1ErvH%iNrCj6r;m4@kMt3C zDtStVPulKY5cuvRYQI+Gl-hZ70MEnq&%uP@{k9XeYY)~xx7(hlLTbBqIk5CkD97sc z>F;&@xw|vxmN4UU)BJ)1-$&F-wJ4)8x?Ov)KO}B2d&|Atx67I4_n<<#orEI(tNWY9 zi^crS{e!nfXy-zjJT@on{`bNBAU$BEmaOoW%J}yyq+ifKI)9EM0s7kp$pS5}2M2=g zN~tMbf3K1B5eXvH(lx=&_nm;#(?`2iouOKZv<Lf-r9{<5vjVsK8vr)?sKSclE^FFd z(iKIPS5j}A_RMY`b~0{{dr<nJ*oa*%%lKd|_p66P`sXqX@)B4-94rr4E1);nihI+6 z{z0-KzBxbp@4xpFns(fC6V7|P{(&h;d&A`fj^XdygZ&2+#;w#=HE7=+><<XTin7C; zkF64ZxIX0I_8@5G_rd;iA3a6n`1y8w4#*S326T>vjketf?#Di&)-HfbisZ}hJ#(eq zE;!)MJ82KLmzzc`49D^G%csYug>;}0Qww+OOPF^bwJG;ElMyBDVgGqSN{Xqh6ZHiG zlb^$#s6%3Q!k#+3=%Ae#6BJ@n>w*kcM_oF+jyg5OkQx5|=fUn#Ni%PqcIVr@Ozk5w zc<n-98D6lt-B4JTzu(*g<_7Plrj*^?=MRTR{qzx0A+8&BSv>pi>+mVM4@loqa<<EJ zK%8X3GedJc?c0Ot;f>`o)ojmPjk)Xe2s{uKHounty|xbkWXRRqGY4bNN<C;=6f1I7 z;`Za$!(~+tsDQs`9;WC8zo$SV7<b0MWnO`7?*TkfYs!Kyo;q}Rcrp`QYt!)2^FpUz zA5n^iD||tG+wZ6L;Pd38QHr7StV12_1ELd`Gv)pK=z{GXkZpLZxx0M-LMU7ZFbX)L za7;p;$H1ai7<_8z4$(5r;V*W*#%=)u_Ao@8EfS6$j>z}mNrV@W4~C-fJp>$p7naoO z!f<2^J2OBv1YY3Qd4h<+84?l73nKwH?i$fUCS){VQ6pjSq3_2KA{&N?J0iM{n=1SZ z2h*&%UKcLK7^a9Xpe}W>(gO(%6rg4$4Mj_Af#WXs9Pk3TNiJDtkkW%Ll-<<LO*aU7 z--FyAFho|8FX37)-@}oDb9jN;dt4eJgX9HIkGwz_Fvo&dT-`@6%y@yq85BZcyJZai z!0^IAQSQ#zy?;T(<q&bp0R?*zC)fB69`BA1^a);|OjVI?A#L|7TuPR?wHJs()R7+z z+=nsj7V1dtWnSPaS88=aQSySWBv+A-RBU6ALbRT(4H1E<lnZ@iyAKWy=9x=@6N=J{ zYKDlsIa4YrKy!7o`C4t_1@7!c^My0-8Nb%@<OS;TP%ckq@j~r>Uck{p#TQuzUhum) z0uChHWJb%*j10LSFCcxO*<iDD8oWVliPRWI>9<pdIU42;D7wLGQEw*4XHfNNj40iU zXBA)eejLWd{eJKU)xwEhx{<==wuWW!1~tB>?Bd;ALP<a$h$52VSWa;5Ph2TQ={X@? zUI1T&1K1P=W2IkNuOpBvB#mXM`GKOWcy`YlWY7{HGJd`5gQ@5nTp0)_F^tS!o&+Lc zgdq}ROt-!u>>;CW)rfh+LaM1HUhcjU+7!Hjxk^cioo|D=*c-ZFRZiI{qzh-jV^M?k z06YQg*Y2j6^zyIAK|&^1MO%i2-+Tr5j}g@io8Bc%=o?Cd#{6-P2@%@H>55S~i_5l3 zM;?A(f;WKor0#0It!M7>Iymu+!*1Pi*X`*Wx*jzp{>iO^kewFJf`@En#KTv>T#d!= z`v?vkZ{#F<rPQtu-q6`{uSyTff<AU+dbo4ga+J+?8o}1LbGUQpL)5`Fr?(%6a_KR$ zlK`d-D%3Z0wtY%E2U89yNY`|rvKy8wbD6A?uXmpwsFdXF*6m0`SJD^_Br$;J7AibE z*r-1U=dJDIm_rzUrVsE+7K8RH7W$NUV+7}l4esZ1c=WMOKye$CZhz(i8*+r%0ww@2 zB1|eMS<D-h)}YLwt|_un*L0+$WksnkS#{oE_y6`AEWW#^@ZbH-<#P4(3ZUQpyFYmR zGnt%^tE(S={P9g1y?Jq5p+Axq4De?!;f~F>k0TxR@AdxS3GOSdjwDx<+r;!K?ANNf z{6Z=2U8g6Q3^l4m61~i|2SVH2d{{<t{>s0bl3zuhQ6K&E`WJZ$Mijfah+h5F`KJas zrb1E{Q5i#?61W1--b6p;(gQd{@>syukyPd1U0U7?p4aG?#oRvyxn%K_EP6$L?S2+` z%(#u3pxDdTG6q6E1kzA)s)bhyPPnxY9|Ljw*O`og+ZXXb^ZjnrrvQU`t55zK&3XSd zk_+wfN74qGzxbyu=@Y0Tua@$AO9mh|i=VcWrvU${oRKBbEAHOf_iAMfU~thZeU+RH zI4`;Z<(lMG=7oQ=jM|^&DOH6yL3puWy~_Q&IG1A*Uy3OHNrphQj0{kmvjxiXeh8=u zL`AXhQz3>^D`3JMJA?ImvVZwB1tUQHLrjObZRIg`SZ=P@>O@xkl-q`ZSK{|vTKT)( z7f&e-#{Hr!E~E3Fno|lZ6NkhU2DatLcM2StGeE(mpOh|7b1sVk(hb<Pi@j=g%5rc) z(`dt%t^sRN;S4^*V|kgo?XZ2Z&eHbh#E*}p7@XMTW)(*>PsgX!++?qzEYd9t|8_;X zL1j?u>PY7feh@$%Zoy&{?evt$H*qFr!x8Ztc1rk&xl^0_r(o{rJtZ~qIO%_RRr*h& zBcrQ8i`A)qlA7Bc@FNmUs#h{@0EJ5mlP>Y(R!6=Q;#F)V%KkXM^vvb7uYla~UGOHu zPx3YqMc76YC9x3NDNs|&Qvn{LZ&`1s(keDK&^5*F_8U)LA{XZ2YWzzu%MpRcO^XQ7 zKJ}kG<Bkoc31i0qgtT_OoLLT4#ibe1tJklEtj;K<m$!yX_~ljnlV97jtV}6yL@_cZ zgu1-%CnH)29ullk{1=(i8QI4;bn+znDVWq5i5M_=cyar;wD)}T4EuA5kAs~Kmh6lR zCtFHc6wyn(_ns%8+4aY9p1=u!>-g0<gROH(2;4Jm3)$_n7KkJnFC6jwH45y0`~<L| z88|5Yzw|um%&w*a3;<uWq96W!${~_6+LoyGIbYfL!|fv=gMjxnUHqz%=UAjEwVK_b z@tb>Q*Cxab#fR-M`Ga}}!k6SfQak=q^{-$0e(0R?ePrFd3V6vGq6RIL45n9Ho8s4V z#s!6OjL$0isVn{>f@DS}Ea?z{UyE>uXXF!EG4DEhIlPWv`z@Y9vgDfpr_B3*#E-Kd z(~P2U1j$JSUB<7=+z)m}B}{Ihu*v=P)oVDzZk1+s@f?>AbBd}ye)(5vz&}2qPZ>8m zJM!x^Bk>y42afCf7ubw^+^*B=sEdH}kGw+Ziue}Dd+@t2vsYw)_-{~Ilp>6{x!lCP zbe`4tKDer+vX3i!oYi(+5^im}di@Hw!+svrG_mqp2`L1QQSKYKc){#{Bfr1p!VzZZ z=T?>-CNyyOuWS?*l(<+9URJ)$p-umdt}mev*w)MJWiWF}WODmDum?8}Pn$F1GhF;l zF%p(tl@c28%y3td9p0?+8#T8wT9hV45)J)N`Ah%xdD`KyrOpr7MX({2v{-=-@}HaN z=a=29m%U#{?lA}HPYvm)>VG2j*e^Y|hy&H9*pjty1D3SFC&>LkR3YT5*Mp3Wq&ton z9K;A-HJLf+rW}8MYV!<4C>JXuTPa5qy^M!99H9MbazigzF>VjCnPzVi`3_nwF>v%E zpptaz&n|b@TAe#+kFUIbEd)L%7G(eq0{eDNjGT9FxFpg?J*MdADuaD^nweWcY4Ax+ z#HzK`D;XOUj1We(W~Rrg@63r=aV(ZaMD(Cys(wB#_%Mj3h+n@6zf#)`=lE?{u{Uw+ zIU1KP;+)G+IPA*uPWz&=6gWE+sHA$G{8f%V7xZyo43!6?pX2H^S9AOC+s&wmA@=Q% zKDhXcs6Oa3)~0TBrGY7N7cV>vn(C>Czwd29apZzqFx>7?QYQ6_vml!=;aZ|J%Hr4Y zFNN&Ff@+DB!-2U~$BWrZyNzyl4i{+$)S4hSV|Wt?a_;B>m<sts<4bTbuL+s%e*~Zp ztr^H3Q=;{iCv9%50i6lL*I2}xpL&s)3yO=u>`3W;_4=jJh2L_T$U&t%1m?sqZvqu& z0k)5tT_}u>pX;VC2sIE50Eh-TbibspJgqK(<o2!I($Wq+Y9aB${oo5Qd0Zx(xo^G3 z4EIe-OzH+e!ItGqo*LEcxjUS&9`?=&hxBLvBVe+WvB8$N83(H8f(v9wOU0S|GW+>u z@oFjSWVtbT>JvAL1l7-XNOYPICRFa&)*xorf@^FlQhlax1&Zr}4K5R;hU<_Mz3?3Z zPX@vP%GeaRaQg@1HRPqB#7$hq>+cI{AA<V?utqH*677WA&ru)2!9vqejWL$kulzZ6 zH^`I6cv}AQ2KZ#_RjhN8>Ii)iyL^?u1R_xV%`g3Vfu4e~Fhs9k{qm;GUcdD0<(w2x ze54foY4X1s;}Oz6hh5>n#kXK)`(N6B%>Hpd@AE1p+R6{3I2(R>L)8dBJFC-0AdZ5O zHig$LiWk1;<Vw*g-$NfbV1nlqfVO)*O`U@H%HgHV0lX$7fe9opx%4oNg>{`HZ*b94 zK#8sSzi7Lc<~WutPwecjd34Y8NZqxQ7BVenEnR{j9%eGDL;{(K1oG7+>)z_tf&%d% zaS4LBc<{1nIcu4=`W7;o)-uy(7Fx>m3G@lH(_X*hk&$sc0rX7INJYB^AUwju!~OX2 z^ZcK|n>W8ttGX*4RJ9?g2hEwD6;~PPD&>G3l!wu@mhJIAAN}s(T3LwLTD13sEcrfr zU*aA)ZKU}2ErnFq?*WM(ntCf;lnuQ8F0mzQ9EdGljwi_QQ9t;Qh`~{NPbgFC_Y8)C zSL)DM_7lwF(LI39VX)x~McR2^`dRySxx)jcXp4TQ>3tc`+C3b~@B|5YZ9g$T>-Rt< zlKwnz?}@Fveh+<&MUDS+*-x;l^)WjoL$};p-gEG`@7K17CdJ;>0}CG1d{;1l^?nq) zmi9FeyeUOz@ct1O*3B{I$RfI0_A=z`uaA3_D=G#5@~5xe!>LNIqTM$44Bk93WKln( zQb%;zPnqWRet1fV0jtj{%e8jTl&%9ibwxg9+1KuwM=6B}>s-F8O!N9Z;f$5`w7jLv z;My$<A}3GXYUh-Ds#Wjz;Fb+ZZ>uRRT3Edl{T^G4REu_c-Z%HGbp+T#qL0HUkJ%QS zt@sg{YQf;Z%evZwO;6RZ_eDq-jMddF5;mYR*QDqu2Vn|Sd9^i`cdhlsu0z>f?dQ#y z?Vr}WI))oLnM$Zz4t>*(Uc6nu3r51oKMS`!0-qqs{T>%JPSj0#GxmxVL6eZAF4JPQ z)yn#=?~(zpmDoR;;&NC&E;b7Dd^<>D4`To^&5b-utNV)PVB=MjK{jOD=!-{ud}B4f zVGmmx&0zgKzOh>LVK1_%oPVoDSkBz~rx27B%Hi2=nZkQw|MIx1r+LJH!*mz|%j#=Z zcUGeuiC^3YK)_A>_|EFX$8rr+aEJn4t2?`ytS4#Ai6Xfsq>rcWtv-KjvDF4w*YwGI z^JqbINH;nFTphP=tf|3T*~N%uRExpv-T3z)&%2{Ka=8^xm=i#|SzB$Y$f+j4unUDD zW5RHi1tuxVffIfxS!g_eBz8*p#9L{uL*}Q&A5@-xxz!owq~<}`Q3Z?%u2Cu+z3IKO zTW2b5Ex&z`Pi?tZME<dov$0v|S3d%p>w4B~zY+7=i5pf7hk<a&_5&knHLs4V)thBF zLBE2y3wVamz8Jng%nBUyr_zrMT(D~zJ?(v<s<h&-W=Lh}&=^((Nb!W^P%0d>PlFpz zPwP0c%}4D@RpO+Wc{#A@5FJ+3MGF)mGIeBiLu0t^hK80X__kAf*!}dbGa*iU^QZ$a zxNSKt!}r|#>1l3V;NdidcI0muJ=)GijtVQKYPOreA(yFHWMw$*q6||*_}E9?E^3Ug zK#tU^JySTli+V>wOP0<3pQ_PODJV>P;Z<lJ-#@6PhE)Sduk7QNm3TgHVu5pTA@=2p zcKz4GI~LeSFm0dL|604C5vA2zE?G#fJDY@l^&>A{B=+j_^6YB22N*NjqYK&9{ZB(> zUD!&i=j-uLIc1birPD6e$x0m;yA{eI7hg9&_4ESm6L>o+_QA&|4|5U59_R|){N(4w z4nZIp(W|TWZUW{k1nQzjICv<@jMVQOGs!9@xae49@rXUy7dDb{rDlmXQOR)}_~*?O zyl+n16$uIjkqOMG(~{8p=D0{V(9{@>DAvm!nnOL`z@<BcTD-ggk^0K+D+EBWxXmNA ztLb65F3E`+*q0zRQkW|~V>WodZqeeu<^U5$b=>J&@54y5^eyf~f&2LN_K$16#qry{ z!T0;e7vG+zi~se1S^w|lHt*@{?U%2%>+3%(|J>gAVPmKK{@?wJ-@bV9;=daI`HO$^ zzx?@&|NG)MFaFQ}^*1km{<pt*@#+8h&5Qr(&;QAb|Ki7g`r?21&;Hqq|NVdb=P&+z z=PzFT=l{)Ly!bc!fAQkq{<nYe;$Q#fuU`BgfAv={{^$SguU`E3fA%*o{;$7$@#4?? z`*Z*Oru_FCKbwDXt@#&!NBeJH{LPEMF8}?tpWVN>+Ft+d>iXZ5JO6C${@?ohZ}iqZ z-Te0F%RYW<EX_S}-`|wqqwnaqxzhY>-_wj}y}ju(`ugkTlYi~^=K1*lZoKX9?bUdD z^K^4}jHUUz`~U7r+|%6AjJX+Gyt8YGYwehuuZ%aeZ)tjszuJ++m1eBbOLJfM#(XW0 zFh8Bg()=E+?bT*1`Tph`+AH12+h?Ptc~|#a*I#>A{@Hv@+}&LLZTT5r)_iI6uI6g@ zzV;pYXWLVIEoLVA`J1w~akZJj=2|<>=1qC^o9ClFM%3KhU2E=d-_`!ru2Il%Jk#Fa z+!uGXPpr4bo$+<;J>4p{<8AJUm2TUb-rHI1)}(81d&}R@j;g)C`PuBDrmef9c|-I6 zPhX9;=Bx5J^Aqhi=jVTGKX>oXZ(0Anp@;6-_P6z)>(ABm+m7M!JG<HI#vFaO|Fvu1 z{@uN2{mE$QW}^A4yZgD{;)&*4nxFOi+TGASUB9*CP|f(7r<>6?ZB73T)x?$N`L>sa zcQ$Vcs%hTSKGV%%`~L2I?UnqqeXjYLTOR-ZxThFXJFe!p?yvm(<0o_L|Chf%{r=_+ zF<0yD?ceRsb}Z|EH`lxQ?t1zU|F-TO-EZyt+xNA9KX*sI@9{lPjjg@wskZ1XX6d=M zXm6iyNA}duf1i80zMi_fq3ebxKlO%s9P8uFf7ic1^{%e}?yTzOpp{gjpWIhHg07GD zx9&~dZ|yU6KkXCs&-_%|(p>9Wn%~;q+Mny=Y@dGqdUwZq-;Z0mJEARSEI3koU-MhN zZuJw*Q_W0t&o$5Izn^}peb0aF&&Rz#9zk5m6w$u3dG>J+>-V;Q*LTKWF=Oqw)~)S3 zp8NTayZh;0+BXM1w7)k$+rR!}-_kt)xR<v7r^fa8?&hwzzTVdT-Tl_}+0tYCvulap zo*qM7ecadMdmrCZ_ul-q{#<)*{QEuK_SkZs_V4Cr+eiDeZhh)2*6;Xt|DDJG^m~Fo zce}j%?Q!4DE@*pfe|Gmh{>rD{xW01DUD12<FTT9}*ZkhTqwTM4jh{_h{@Gmp?Tdfq zU)xvvv%9Z-Husf(ulsFB@c-w}c5LyE=J)POtjj;NHhEm#Q~7H1d(%gACO>Xnf3o>I zo~c(m-xt5<zoXanzyE#T^!UE#t~`G0`a9SEey*qW>&<iB(?LhwU-jK_J!YqEU;o+N z-L~YryVkac=C1bM_G<I9rRw}t{NAi+_e@-S?%wv<`tIh5?z#4^_Gi93|K7AezS2JT z+|R#!@gMr{KY5Y={l$yF^6$4V{zdxtmoNUAe}A$3*V@Kf3t60!`QJZz5&!<Ff9=md z_j_wcYk%hUc>h25-(SA?Ps?xrvds0rH0O=}nYFNg<z2ypn*aYZ&;4`HEprxr5ZWRU z2C)9hO!`tpD)%v`?x*gWvM%7hMRon|Ukm1KpMI$tiU>XcsK0yNU5o^L5O#}RS6bvH zJi56)N4<aD-8W>66%2H!PZrlzpI~MH`3e^N-d$4&F;L8=y+3u=4%y?qd(yk=u8Gh% zWa^*ye)mJVINk&KE|#{-ZG3s89^-)!!`|;+bvFXt1N+Y_^1I#c;-s&bvDh%96ePJC zrBoMD3Zm2vz6%I@3BE_HHaD-!T@21kSq27i(C>BW;xFe1he92=1l-#Br(ViTfiWP| z+xt?-ocaPX&C`c&3?k*MoWKJ;9IY;IfCn@-S-L-W_ihOC7!?2W?M`<mbYh5LJjp-b zrHg_-C(2Vv>P#0^jGRRr_s4uuGQ*yvvfg>VI5`CD&+C<n&TI_S?-r@v@15p51@0g| z;GMVKizGu$fWrXGOLq>z#dE(L^=`X`*@y~|feG0AnjRN}#!)0#>%&dgXE^kZ7edu8 z^F<MqeTCF}Kc|b}@J8csBPE2sjq#q4^g!S{=_u{VTp#`o)#0N4cIS87fEJ?6p4`w6 z`DrnLqN`M-%@>6S2);h<o#l(t7=+&J^?ptlK~4+I68rdbw;wi+!hbf9u=2U1{SC-~ z{60c=e)mJ#q8rDDfwIjV_Vd?nnvS6xOd_!GtlN1T#{$b`&(3<EH`1NrI+ehh^*-b~ zK`4oqQBNvg6w@KUMX{Q6aUuj<xZSk(`Bm5FQ;AX=>ffmuC5rO$I^7A>$ZCAJ?=Hcn zm2WK~=!f(gKH@#$lt;bKU3lPz5IQ_dAp7SoXK6$AOX$*KjZ={V7loS0J?@=#d~ibs z{z4?ruy>L#3J`_14e`9=f*XKx6!8%l_aWaY^j!@>$iC^K0%QVZ`L%xc8h4#^UnN#< z0oBTaT&9a$b<*1>z0aGgi?71->$?tnCnw#udG&0X831ss@BA*2gqxqtK2zfuyk+m_ z>yG?hsjw%dTD<AQSx0KGRK%Qv2t4k|U`-<vs6K%zV`TX%<nyQt@*!>g=Q7<O8p^NU zcW?eQxr$2WsO6f<61?gkOU4BT-Mc;Sh{M&Va^>Vp1Gkica(bI5Qlf$LYu^WVTkDnM z2=JM;REoR%G<681Xo)F*IP3PtD-cC{BSFWfw;eIOl2{E?RlMX`ULSZI(ifbbcc0Si zK9j^JJy$^SP`@2DzY5$!V6j7lTlF9dK!9cMJQ2>TeHljqckR=<P48+SN`UkKEFBE4 ziYOWK-+s8eNFRJ0!4FUkK3%2h-G4H@5Z0@*S%PNn?h}nbpOk7a+>1h=sb8TY$5Q-H zuR1z^<y=#nkH`Ca;_t5x_5dCRKRLba_OGi_R)in)uI|z_sAVh<ickGKZR=MDriO!d zVPGAXeuaBLww1JTmW~)#pU#o&PgFIs6x9ZTG_7P3Oz7L4L?l8co=B(^<PC;MD#-0_ zzE_OGp}47&>WhOd2dc^4P5w4fVo}8Nq8fsQ6wNDN<n))c!~mT}X7a!nr}<S=M%fqv zq__EP$}5szM%KMMR9{JG5xr(9Zcp=7b<B_CMp=qP{)2@Wwx}<6cb~SE$i}It#n|wt z-MS+%Ft3uvPH($|;FT<?BcOQ4=BAUDTs;E2DEjQ|GEvSDasx@nN9^Q#M-uC1B*VM= zv<Kx=E#|<r@uxfnh3!Z?BRlh?8<}uU3{IHk_4&tibw3dMV;*)o$?BE4g(d=S?shj{ z6|MpV#5`0h^h_qL2ytlyM+TgzdL*@K8ki8Lw~10+6#yz~>^8|LufUdti0+)NK10|X z)Ks65P`+M8i4^r(P33u-h^Mo8N7JYs1#s<irjkRF>ooF=Z<9pz>QL0f<WPvuc@iLA z9V)B`6lU7HO(NMV==Ksb9fapeFnHzofInoB@9q<m!~aDwOGG+P;>Igc<nlh{iJjgi z1|vyufTP*-NeX#27I{N3pY$#gN{g#=+kzBzp9vUHtVkQ&==NnIU`oYa1gzr^`KmH$ zB(_=a%a=3;sYydsG+cd1J63qjKIAoABcW=(dM;afEE`ZH7nq)o{2UcZ*a+4B@+Hy3 zGnv&w@)c?z@?NJkJ{saiAS3PhG%`5%j(7>kw=dInaTS)8bOS{Q(irF_ww#iNcVF^V z$D0HqGnqE>Guhoj-1-5`ahqh{R|3O@he_3i&71mtG80^Y@4hVFiGwU{IKYXKMnzc4 z2QM%(H>0OCE-LFDfy)W-ke*k0TMU~O{_-W?ix<uMM6j<9X(f&im0*_z(>qP&B3?a{ zp)R}JF*KzQWpPW{=ZR>%nZqefud8ziu>%vCmYAmURFb>w-(euNpXH<Q>C|_aijaQf zNSx;5%{nS>f+ODMO;`kR3ac?BqNdTS98F`m%^M5Gio_#nt+#n=I*esaBh<4jt2~*0 zKiUUB?r=NL%z=~v>PnX8Y2L0A(04P^ckec{7fHnXhh!^Xw$l;LL`tJn&tRyD{0YdC z))3BlW?K^n?4Fa}!l!c#C$qBz1b(cRZ30#J00H*yJ|x-+F%HxcK`^b_GtdIy*!SXO zIXOui=xM+K75&t}la%!3OF9+=)xvTig`MTiCJ}8y5{yl8*Udv5E5}p=TRRc;G_KLr ztZ>@!U=)Pt!9G08>=1eqD-G=24_W+p8VZ3@%N9g-zB=!Q@C-nL<YRHNeM3n6bS6~! z=s*v*DL40(q)BImT;-d5ip`FWp%G3UZE0ghT}$?dG1EsL!W58Cq~M>X0wAwuPhvDE z(<WG&T5yqy&b<Qk0@lEB_2o-CnC6sqS>t=XtE|R&8VI6QJInhA4F6P}#h~6Kgi$9C zqm)GNDp^Zjg_3zdKr}h|ZK_?!HzT5ES>FObg()%YOXMa9{+yXN=uW9TjBskDbPEIk zLvbWuar-jucj_y=0fEz3$>Q^h;Bi0#TJ)}xamdxD5G>|0ua2FBC^B)lIqTj+jI*7Y zWXX9{beGL(iStz&JPrKFtS2IQ1{p&-HeH!6b&`6Jwl^O1>F{?6tNPVK-2wNG^_%EF zG7KPu*u|Gg=Ya+QsEvv2^eS-@>foXJOE}b*d{u6noxvhmjbSo7TufX&%RC+0pP8@$ zZeJ#zv6wEV(59pQWc~^zTO)khp_^!jdL<XtX1UM&U!ikZi9%ejk^$}2Gq@o#8`<xS z_v)<MM4PN))I4TIpl+R*uqgsua*CDn9o@8Ts-C1s5^?=cU%qr4c(X4h4^XL1dv@L} z|E8Q>amuVWpR+2x*_VW%0B*l`@jbD{=YUO&O@06?FHx%7=9{$i8M8AfB(LkUFerd$ zY>1GM5=!N!ilYbn<bYmOdR}dkxEzRn%wSn_-4u0AK$mKK_c70)RBH64I?VOg>omZ9 zsqT`=2EET&r`?pvFqMaS)VsQ@IysyvFhi8R%qow&eLZugaewP{$4zO{u)Ek2Za&{W zq;W$c1gBwQFVk7NNoNnJ=ECLD>L{oo{b9hi_NPxBrEOwpG6^XcCbm0>HWf>K3P^?p zCN>w-%%|HlzysAhSR4;~H`T`<3}?UrDCzp{nBB8zG-{a=$3|f>$$gWVp#0Gr&hI<L z7j})>nNq-e-?K^TSx6g2;Glwyf*?9&auX^VAoMA7`03Y<Yr4!uVO~Gy^XFMuoPkoQ zN?hsVQ|@DUB<Us$uK9T0gzqc^5@nJu6ZNR13=;&Xl9}ob^G#)QAbW)^?J98xNIWwM z2hutI_~lDyG=CPL2ddu@i*)bj)9;<#3vLe^3X-b!>OT(5hrI@qf^T0f0j2{b=)m!x zg|1D8a(q=%i)xD9S+w~aBGAD!D&ro<CnnCrr^M4SKX8ISbTZoJ5HdJrHs<Lx(YCcc zR>Ov>b(Rh!sRd)EY%IpoY;@b{9|=Mv$1I9chPCUL)CmjaI6$mVs(BrPW?)o3>izur zPl>jlK{6V#G!eJLP?<!XO;)92>8M19tded@4g+IC`MkS7=?<(-b!YoWJ`>wb2I)<{ z34(SMxOqqjwVN_T`U4oVUYP{E&FG^KHaiSS-@C7*C$fb4%FAqw-BdMzhHuf#N%~4Y zyZLypPn7zaguKnsglRAE;?8aoe%q!pp};wqrB5neGE#U==9j9%6+w*V)Rcg>(@ENW zE{~La3N0lGKAVi|Y@agtPOm;DI$?29&x@pXdi9VmJLfD~h#j9gsbNzR3dzGcesP&k z5m2Vg-d5+^`E6n`)Ey8PfVytaZ<3C<X+uJFumN$TM9Hqs4y0Jdz&qK&-ID;Hp2XLu z9e>CH6*5ro?n`EChtMEl50OXDzgO?1#j<jdDzcSf(}A<U54s&BXOhr19p*B7r;e9w z>)5oyQ?}yhqZ8aVX<6WD!gBTUW%?Wm@hm1JdCQP5EBA>XAH?oXUkQ}}@(G*{`!e6n zqO~}dsK`#0W>)bG{#3vw7;JSni=Fzmz3*2i>5v}>`Zfgfun;Cn25K1PaKnC@mma<( z5nHu+hN9f}Avpn&yZpMk{50}dpf*JLuEzKCr^>y)Ip*k^GPm?TTqn(P^BK4@5)q+a z3LZ%;9i@s%sgB7$Nqy>UE1Qf5hYSGyAeVHUs8tkIz38WBU-KL+7`LY;(g~ZsO7$R# z_L7@UuYS#!qlgW3;TU(~<41jz%S!3)%!QtTSvxuiD0>6Es<swD8uAaXv9C<R$kAYc zWpkqWoW!uzlpD~ShH-j#`u3*8Td1wGLGL14MmLWb*w}T#UX=GfP16=)t-q?a5Etq( zdf5*O&0oo$j9g-m-*)Vf&45$J%|z{VS(P)+DTaJslZ5K$Am)^)hAK$ys6_B%xx2hO zc<RGdS~L7=9NKWKLYk6ey6|+sZw}4)TQ@+5U{n{fC#tVe&PYD@crQLOck(pYU7&7( znGepCHvTgZc#}O0b&PrFI#D2ye}NtJFyENA@+2@bM@n7kI$z!=q*yf@=pt!dn~GQO zjm4|nog}?&bHd>OCv7TbARh(bEha~MNDZ6FeGlw~nJ5f8Wtvx7;-C+WFnCQOdgzpV z6ydNs{nR-PHYb!#d<>&~xsm&hNQJqn!u6`lp}lb>8(=yfVLJ!BJm1pGm-+4}RuUpB z>dEsBrN0kNI>;nnW>Pq2`wx1^^G%_jN5QJ^=gGUd89CQV@Eim^B>r1U)51CFo!lma z&}LJW&dxc#N^aWCDPI!xW)z*Ik;MFo9Z`+(>rFZ}2`FNZa1&<wB!y0gBy;XAPR^_! zDWk<o8LzC4!Rhe0uTH{2%t;<M<i9Z#MfQxU6M+zA>#(#Z%|Rr?e2=p-beOdA|2WV_ zJ9`ht^dRUv@niZ9bWu6r7AGySQcp+lmxBghSC@}CaGZArm=^6hKuD5rRNB(XM(zX} z_E1r>7|C|G<zZ5|%&~%yf612xZG@z3H{?!6{gIS?O3ZzhY2e}r0)ii574qF`VH`6@ zT7@Kxz?$PoB%z`D>gE~OG^?tGPiw|*qJS?&^87xL!?U25d!|qZGg3>OG>TFv1y_#H zEaybky(cg-#juQoh)jd15>FRF12#-pfX}Hf8zZlU5#FT<goMLi#F_<?K3$F^YjhvV zYa*&Bf6J746bf8A8J<Jyr2AWiQSYKssOI}h6i(!STgo)CV$6t^;+Za#RqjSo;+d51 z3ZhE$&6fBi5-1_$K;_`joN_1dUmfR%y>pdXQ{PPgYKk5Pt)+E%22K<Ni0#U>Wmo2p zhad;HisoJstm0a%FhtyoyUQ*hXcPAm`{T$}4>K98XcUTw2{y23>FAoPk2Hbn7fYNj zF9baT@4yDD-3mpKjm+79SJ}v1rlq4;DqI@L)99$1QD$*Ju!qsfO*d68gWc=*V}P&n z<-l@hWHrEi8Segmz~^0j$hHq2f{;Q-G2e;BE*7eJW7fUPESbOV!}7HU2fd#;NV`q- zTBr~}ROa4`i`(<g=-@h?Pnb-oYk%s9_IbS52&4%8^XBgMq&ulzbM9GX+we28&DUXg z?pceQN`ZJDHWq+D$UsH6?`9I5>;d!(mhDE2KL1q7(a)mI@^AuSA;F*BBs=cw0D`km zk77zUx)pF;6ykA|ZLY+J*S7C`k98&v*5uTD-B%QXC#%R#X(e5ULKjhOHzuRot*)z= z3F;-tB-zYew@t*)#-v{5$(zg-;WT>}4_Uf>-JdE!JC7<>l@#$BPPF=A;Dy5Yn%@h> zo`7)>i+q<CdCo4coNO_A=JzfZfzVQv+q4K`ZNwTXbr99XJIV6(J^(I<a?EDhaIZ!8 z1a>cn_|3y*8jb79db66)?URu9T3ja>KD94{ggUv)bxsYu%++MbjmxTlTHG)Lb*$wz zpx?eAmk4qB^(2oTq?iDcGWp4(@;Yp}%I>ICc=07M9oI?M3y~2q%shN0(1Z_!)$Btx zo&ctrS(LETbvBsS9MpmfBCr?nbgaa6awF?Z@S~0H2z?#lVZg+S){)eI*Fh91FIW~U zPY)PHX6}Qs=-ny*npI$4L}APFsyhVY`a-n!BHsHlzn9p{P+JU&8~J|FSA3d_Ld>~; zXAilO1K?ugG7*mwN<179vUYQk!pL4brbf&OQ}<`Po$CW7gF^e}jYyp7U=Ix*0+S1} z`eDUAUyBf9s^E`^P1K!BuMb3bjalo%>z`aBt_QX%eLd!RC-q~aFnSm3;zsTt=<osi zZ1j`KQ?(HlDH(BM-f}-`CYhmGjPq6QN2TS!eJ|rl^y60Lr=6eZExF}iGn6ZN%L5@2 zA=8zqVPAz(d!eFIr{caoP>Wf~n8Py8-2Zb3+pJC2V1R{QpC?TUBsT+yN}|OY*clLB zKL^QeIQ&`!@Gy<%7tdK5c^!IRem%MD#G=<6ii)4xy?GZMKwVNsfMMz8{v_>+0Z>ZB zL;Q)#z1?aJ^s#rW^M}gZ_*#*KeUO8}^3GD+&1(#J0)-k&wM!FqvNs4`7kz&k2VUx* z6(&6YWp^bir}2TC6;j{`$xMu$6jh1AKRdrV`D5yb!&o2?^U8Jgy+G{u`ta4tE={{v zm=)lmVDXid1@}Cl`2@bj5t8qpjfV61uKPcorr06(hge4Gh~3hOWzXWL3zpiSP23+x zPX1o?IYPdRel~JHB%jfdamIJ0T}PrMR!neDnqJk9NdwzixI-cmFhXNR(Aa7(zhx@t z8E^#BqQ87UO;YmfA>3Z)NQ6j#%k(o;gFPbRLZdiM>nr5&XdLSsyQsRZ7`20{%ugpq zy@n=7OCpP1)I`gh5a}PqT%DLw#3RZ+V6Qg(G!2SQvI7V%ifPN;QwYE;9yv-YF>R<$ z0gB*j^;x+eF!+6DfY>e7Wk`SFYQL$xmamzEg_LqB{CfMPnzdv9Q-{76C9~4148e<u zb3=u;Zk`<#E(SJa*%h6H{aO$=oMm?SIPvp%AXzapDV@VwoL5({Pnclhto!o0+ZE#H z)llZl`277knU`OW`uw@$GHIQp{+c2$w1G!1IDDdg*QdaVCuMD`>mq#UHoc3D@5v<a zI$|-Ix~HZ8PC<8_tB$;KadnbnA6~=n6elNOHq?o9Fsg8%WUp}G*jl-p5diglGU@lb zPbV+a$5L$OaWLv9AF#4i_E0D1fJsY>@?0qc$~dzU(`GDI`dlz$igcQWU}2q2<2AyW zQz0D4SYE#0K{woI777-b7VA)I7>i)Pi1PV5*C%;pj>UYrON+=0i8)|-7a#7Dmh)`M zg+rNIGMGrs9CAq@5^ai=191<Qk>AT|iMcTv@k(`8qt~Lpl$8_##@F(Yzv~zbI#mC{ z!g4>y#PvSn57wE8TqM79jyxLDadkavZzzls>z)qwC_yihrO2I$_Js?Mc;L!;zp>pd z`{8Ul>Qmr~89omus#QnD=pcvO{bEnG00Dv#aggtqk3l*vR;8Dzf6*v#4GHTZM?Q4# zeXg<vBtWHhB}LtweEXO_SNTLL1q)=zLy5z4jtCnTH5ubfyHRjDmcd*ba!<Y=o*qlH z=_DYhWwGeaYMei&GxtMNqJj#DjM9{8{Kq`xhs7;=o&2J&9UsEKA~lGAF>MzX7M3)z z7dNOOe^)p!V?5!_P7=j<PH;X#ZWmRY#j}+^!agJzgs~yCrEZ*X9~X;b>wbH7f0xLa z8&m->c5898`AATKe7qon#0hoNc@$r(ZN<46Vv_FD_{DZ8jw0q-KbiN3&q6F6dG!8k zeg6^2L1g~z%k4w@Ue1gez-(1qt3Zs`J}D|Q7x!U4qN3OuaM5{L_gCqAXLHP!9unV` z=#w2P{0r#3vQWKN)rlx0nmy<w9f3y+l_};&qF=tAWwzw#ioAsqf1FSDqXn&0Ntr@F zc|2kzN2)*f)KSa*P_!v_*c)j&&zr;p`jXs5M_1Y|VU3#Nhm0?$uM&B}sfW$W;1iYG z)3S&=5xC??(|ulEg~Dn00w1nwLF_n6a7zg+!%5SI5t5r3M$c|i{Lbs+C>0QHf}6{Y zi~L&g$H0(LiPz?C#)y2#HxaXt?{@(1k6CGBmh*LGM5tpy%{O;x7eVuO9z`MXD){3y z`$3c|#GLQ0vMEApaD>T4XyM7XBoGN*CTI&wvfHzkDZ`T*#jzjMkPgjb!nACl!VR;Q zsnj0sTml%rR;#NbFg-yipWTwU%rUAG`NJ85%jEtSN640oH@H|jlyTJku%;AlmFDN! zIzQ4o$W{!LwZz4fq)PChcvW9+ce{o1d_XQQhkn*3CxnV|*xF-$l6E*Dcq)hy`pLJC z>ANI@9xK1e>fpO_|0AyAu)@c8<$j*2M>KH=4k!F$A3_97<K$+G8uW#G=J)c=%#`OY z+&0l0Pp7m5LP&7Kq>tg*V!#g~0HQKYP2tE7Bf}%MQR=6V2??V2t%~$`{cPPNX48St zLz3-Xrdwq~a2b}?pT(&s{Y_2DeqRo72~<eql>V&dI_@0rP28MCdB#=PaQQS3Q6@mx zh<-vc@8)efRPA9b^|vuV-qw!%*Mglyb@6+|HqM_-auGixp4PUkt`Aw{XstxMv@1C$ z4oRj&tV^;>di&9#_!e1lv6~Xp;>L>FqM}o9gX(^TEiGJ7OFrYDt41}AT<MuARk7=H zKa&HxtUTbL#{AxiJO-(Ag{$P*ld;3&JuXz5WQD0fA={O$!WovoS8ZXU_(40X54BlW zH3<noW;Hf{dTgfN;(~NgHgg*8Y){}3TV$E0bae2@MX8v^QIL)%vG0nmN!^Ig%l9j9 zab&g2XH@sg+BpJod-e77b8<Glezuy|!Q5eQo|aT|R)3#ZiIHMH?8Fx*r%9xEwg}h| z8!qJW$E%I+9eHr^kpz%aC`?Hs5J3EN(J-Nas&ODQdpC(DGaHD6MuZ|-<@pwm!vlla z-c`*1+2Ug&oMl`DYJ?A-++MGJ_VcyL_Rx8;u;sJi`I=<{<VI`{A&8{C`b;e|HO^2? z#3uz0O=kuoME-08?7vwOAy7(9JD@1u{c?NXO*iA$>_{P>GTn&>IjVvQl`|=yg{~{B zOoRvpGAWi)5Jyv1gF>z^Q~&!>f1HRCyEl(>pH?3^YQ~v&I~T`rKNP$$KIHzz`6yYh zi1L^3Uz3C=Awb%>sH6Da#1k3E#a@}u+q24=ASplqhI(M3IOTpw?G9CEv+?A91ghCq zxEswNkr8QZ?}#TQ!dR;NiN0e1{1F~^p0|~nwGmw)Kj7i28t9BF5rHK^r)mF7f@*Sl zZci&_KUck5{Wr!XFV6SF#y6pY64?%uj2Lm|!k!rYPAidKb=x6(i%cTpN&PGij>5kd zs>j1!5{}$0MujKh>qCmXc<u5)sPBF`+j2K7pGwX#7CC#;nY~cOM~#i}P#920C$57z zi6Xc7W144S`G@;Mmgiubxqo4JvVV((KWn1G^C11}9~;aviej~3LT1HNkYyTf9nuZ} zk=RE`Mp+P96^SgKi>ydXyO=3fQ9K=4c3G&<6%}R+o#%cqIb(`=ysy>xVKD4P)LF=~ zzovO$e-s5@WW?;*SxBqc7s6ilX|if9AXZ>>4r`}fo;Su5A(M@)ndli}_#V?C@2*oe z-#<tERJ?Mych|T2d#q-vIbfIfUvE2l(4ayZ7kuy64^?pgR-Z~T<z8q^9Np4y^@+YT zfiUnr+@-nL;%kj!0%+py^5b<k85(AhTZASmePv7Fpj<+L3IzTvacY?I(bAhEP;~P{ z+J9T(Z1#(#iH-8%LwC+=0AND`$0_da(oTp5(e!Ln7xhuGCI3j(5OHutEA5Cf8s>r< zdY?niuCBA*QN%sqkg6K+DfPj8`InOvzO1Jpw0`fSSdEnU{126|giyp@b`i2|{<`N% zTjC)K@!D9w-d0%{TWp)kci@mG=XW{jdaJ+Sx*YQOe*1FqkTP{O2ne<wcqEHx`aHo1 z9Oh4z&)kzP2y^Jh!ak%0f3~b95ELS`<AuX5pI-`bss}QP^Xt>YMP9xAK3j=Uw1!6V zI|B5g&lh@AA3a-;i0H@S?aW|iiCa`8AvHyhM4xGL_X*^4AKART+htplr%9W_y@G3f z&od%CMGU{J&g)-JGbQW~ox?y_n$3|mU@*TB8kX|M-N|_+fNZIBfLNHo%Bb@gAXW{< zaDKbF%_dh5s1Os${_*_}d2EuX*(b%YUa&Kyt-e1V1aU1b-g#`woQ>6B6`J$y{HBvC zw)S~~pkxSJF{*0DrX0Kq8=#>|{My=|ft*q-D3&W9%o-+6HMWnk+49Rd*bn41X|Sns z1M30VGU)W`YXWlFV)B(INTe=1JwGAIZmi6D@4Nl>;oFKEdxBRoJTQf6WFlG!Q;ukZ z@XIH|`<5IO4sQlJ{55%iw|I01aJASXf|n&4Vs#H+vh0$uy>tTX*1<ren!2~Wn@^Rk zd+UG+jl@R5iQSXCl5$Kqz%OIT(`cjqwJ9X@1Y=4cesCz}Ph?Ll;MGkR2)cCuZ{}D4 zhOW+UGo1zw7|FA+<Rr#yiN%tO<@~$3J2^|H%q>m=CQCH(t+oYf81gj9vHFG|-+byO zorzWiC19KzqDj)=wj2`?e^#z1|LE3%bo_{iC_QB^DlSVxq%$hsouo8RER+H=Q$e29 zq?2KzJaq5=tcuUt0^b#B;zk>vk#-HI49^TwFYm|=j_i`m7V$2fq_f4VMBos+{B4c@ zKvuHmqCN{_O3OD8yCn`GWZz1t-x4XI(3Hcubd~o0KmllSbaNVX!r)ev1y+(h4o;{F zX|RGKpgUk#<rTT7LkJUMDaxQSt5$&=&yVP)tFx=?PM_W)95Ex~WYO@kYG5GQH>%*^ znRcR3y(m*w-dZ-^BJ;yP;GrxBOQLjkLuqcLmFOxjED`VN^2;XNw@aXjcT`VEx;PYy zUu29tBdk2qkYejwzx-|$KsohLLM>5m!9@|Z!8}$zBX=do%SI!+#fMi7vclzY^uE<X z`&O_D*+jwHDy=}nn7GGUP|o?pqctpeH;`eiFL;7;bHwgYK0Lpi&t@t+qnX3hz-2@D z6}1^el8^IYzt4|BXS=Pvja!W3D%4UI&D3R<?4B=rEly84WRx4MD!&}*N|h7S5M3og zlvE7V5rvi`CGDq(>||UaLj|8q+h#aAV%QM|QFvHxAR)qZ3#ki#N$gNjB`#v=s)bLc zHGjTFw^G#-<zq8f`pK45$;fXJX%tK>znuSosEtu-_>>!-EB8H|K~sdT#_Y$8ml!46 zB%<cnM<rSK-x`YAI5-YNVT>wIBBu|bz!SR4oRU3mLF5#W6(>X*6>ql$Hp#a!?fF0( z^#ymStJ=(NnycrllOGJnGzkP3uJA;=CD@&7z9ELR9_aaiB|4aolP*ySSc-+>&y8@C z)bcG=rJVj;6XlrAPk_o1P0?J>-^Z9iux-pu)%U^VfN&VEsO*Saqhm&A7S}Q()n};k z%ZM<Sq5kX5X`Yei%CdugI)G%+gwtK5<5vUoX-F{qK<O(;)3Vnwj3T?GS3o+G$3}%J zj6F?ZRB-DHSZ{Qz+|_d>;W=^SA_rX8%}EYt+BysbEaAK5<ynL|JQPj?iZbM?^Yi?U zLn48wx1x>Z%)Kp@?Lp0qnWMtwo_6yg=um)(v1xI>{2}ycaBLxwcp|MJSQt12G~;qe z<OY|4j4XxFv<qM<A!z~f-|DE%t+AjCsQ}HAr=G@<!3g6h8a^Z=jR&0Y;21;Ky-#rj zTjPNwQ&FAe5Zp+TF;QBohR8c|ZVtKJ0?`WX$Y+#6rAcH>I!11xZHmRuqY5udNd6J_ zl-U>zHlZjW^-7f8%TBTyW7G2pA_*hfMHiN^HHHGhClIG#E%p#VBM+Vja7`z0+AwDq z1}<VGk7_X&oGPf=2j(cYt)o4Kk_ps}1eMqr%*+Gw4Nek*U|Oe$tQd%uZcMeg0Wt%H zdaoB8zj^}HqnJ38sH@EQjv~TV-hCsb<(I<`1|J+AW`bR!H+U7!O$e9YZbAg^CQ*Pb zn<)!rsoDKDH?UF5&tW+e-J3QiKv<SA`f(X<TH2!_6Qb->D`>cB5_$OzE3BO{CHaZb zfj|qvO)9!6w47cp)*Dcj4~(wz6KYdJKA^mXUX|a$fqopYLnR<PDIV~8p!bqv%1Qe* zz2g{yUSQ@#Pt~+@%u-(&Vfo2^>B26zj$k<QV>kut;4KZo0ca#803q#v!3{@yf(<m( zW{D$7kRzCONc8qRYjx_&!UOXJJK9M#SDe2GjNVGJzkAEj*}@@ji9KPQ43*1Sm$GD| zK{6lh=I-<5bqf335<87Ci9ab{o@W<+L`WHYW!HE4AYxLYZHi7CLW|M9dO80ip3hJ7 zEvO`QCEGa64CCIXwKX^6Q%<6AXj$4sSDgHq1|}0-<u8|6jw6<E8ShAIetZBZmM@#E zq_5l{(^WtVEiJY|9@T*15t>6Y+_VRs1VDzk$ApOI(5fwTD7Rf@=rXGOgzRn>!+G<8 zRf90=fTX>Dsi)3&v?Z8BDv$7zBAlmP%Mqo#C|**gJrDN?vy_&nLhRoU-ptdqAF<>q zoEcUv){Wc{xL~wRwEHO&b)>)^_MP*x6ZU8C(i4C;#*wF8PUk!-A<q*mw&^O5iaiu+ z@2vMwhZAqfj_Nb_Mxy?o&TrFJ(=a59HeRipv_H5mD8Vx1%Z|$Lz%h>5`Xgj3N7HUe z4rKbIxt8tRxp*{)0>}Bv>3o}Qr8IwrPhl=pxby2|4<S<ur=vF)W|Bye7Am=u%iSTB zb7{8ZWbi?=f0xrMKf$^Vss(WStrbZp<b+&_7{fA7Iqyu}TNAJl;2St_Kb(I|*$o;9 zSkSz@!<m|R_#_I(i%)O(QqqG-?bLh=a`<NOc97O~LXes+xVOF=Q?>-D<;f3GWK`!} z{*Lib?Opja<-AJ^A`ErTzXB@Y{N_5lg0`T|&gZsUnXG)GPo#PSd}W+pJ8d}<BO9Hw zChQgY3n3sFvSh?ag-UcHV-Nv3a|jI&$&0_m9}#Y7LFwU`$xqOy1y#i>9`Zh*<VRjv z2*RKS@(0dgi0^Z~70+w#31=sRkRXLCop-+7Eh%0@g=6`sevOUWZ7C=TY#+Rq-*>j} zPm&<a<;xKs-mzd<>E%<d{E^^-LcG6b;uTdP+?fZi#K_&Imxwuuq);D%$0g=h0&#<M zo%3mKLAW**+{JuW9ByjU9?i*D_qC5~3;coV(i{L6x8W^GuO1W6LwGIwKhFp>K*eae zeXpVa<uQqpBa6m4c<azfU8!t*AP%Epeff#WL3q%L!NMA*C#Hd1OFS<uBR>Jpp3|PC z=DIe<PDSem_OX-m4dYhoO4Q~&q`tEM(_AUb0CAKPrEK%6;Xtw$4rfT!=`1H8EQ7_w zahuO`DU581FzCx}PCHF{<Ukm{+*1MB`2&R>1PUXccf2E!71!zvRAw`~`5ff?XpmRK zMzxVtQ4NIG!miAEn)aE%8(BO=wFv0V4cw*2k)au!FPqe696LbnL$Y){r)i&oS{Ke8 z8wxAQb9F2*st-QD_?yxh1*m{Qn{H4xbM9((i1D&d$Ed1F6wVEPa=#H$_q!Do2q{yG zpdZplI=g1FX=DJ}HTGF%3v+%xvKq1q<6L?|1MRiwC8jEU#=H-<QdVdjwU;SXaZ7ym z-t>qMxtOAISCIn+Rt@&mhp#C*Varz>98d-=>_e7H=7Xb!8qblD5yS01FHGzckd+OA zRt@}6MeM4RXtw4eVI{|+!!YONK`G)Pd8BBfw|SY^<XOT(>~eozaaF;O1~ZUp#RiwV zLg^-*T=~bl3^24MmX{?;OwBh_Sbg9$>QZn&mxe^rB7ekB1-XUwIKM*{JT$Xe@9p2c zeUp#0xriF)P03@pyHC7F3=^z+*408)X`|URAbw2ybpGSP_)VH!dEQ505*m`uPs|yK zLM|vIopy)!Qa*q-mEDnvB=YuPLznNU$O>4Vn$@J;*l6jAMSlpsmF!x~VCfw&ki!3H zYhGOE(4(!0lM=EJM>B?>hAR#RmMkk#F@xo<=<?DF=DqVZ3+EzojP}IamzSsYSg>>- zv1K$}RSj$p!j$>#?mksS&EG-^0PgVX&9_vgV@ouQ$|2##K<;^I1;0^7$sUF4=Hc=J zL3}G98CMBtc1t)iXE)Lf#UK$0Rq!yRJ~I-!Pq(td7Y+uLqUMaqQw67qPn#j*x>kuq zUx#U43hJ7*OM|Q>iMxT0b)9%CuyxVREVxBz&+iCFUV*}@kIn4}RR9x(-agiz4=p?Z z6LojiOPX)@A@s_rWK+AkgCp3<k6Mo4MC<M1`}%wKVPKE+R&25flWCigQ{cGOEnKmi zdJW{nJ^PSwu=W~(<3q0XrNdU5N*yV;&0qxhQUD~f{Q4!CHMddt5dd4VS@9WlB9#^) z;7T7YXQHFCZQe$eg(7i;oR@^jZF1q^o*1;|qmt`pn+`vK=(*gKiFIpXjtCf|asq8_ zt_Wn?Y0bpPnBE9nIkaNCZ$BM@^zGeWeYpE$Qm(cg<&1{m$~*mfeR0_dcH0mT$-oB$ zJD!Z2^KPGSM?s)Sh+E449RY1KWs3W73VPyWl7cnR>=YSTPWh?-RZem@kONqNms6hK zCaFzMt;MkEa^Tdq9A(j{B<SF2S%lUCy@_(zj4+viw*|HF?qjL<XEz@n^3qD|gdfCX z)o5GQ{HaO>Bm+Cbuoy)<b!1yKJ-d;7+0tLK7Hsbmg!Ucry@r+(LC7hd$=4_XNo6nC zj;u%ZGkV|F%w`%y#j(L@LFefliWW#l;Y%-PU7EN98HMs&3)p_eOSTV$-*T4*eTR_I zi7Q%|d;)5e8^eoo3+F$7O)L;8Dg|3_J2|N<VO1-up0;4L5a)ep8Fik5(f+YyHVO#n zjf{l34fS~-g@8tA>wQTko^1-`q2R#d-cN6)Z{N(`cBC(NSiA^J$9VQ5pVdKb8Ha1n z?3{nU*{J4?Zv>2Pe2<g;I?o&3=$QS<hJE<(P|Xe?Ek}4*9K)EDzw}soG@Htjc(NsZ z+e?nHyWsV;Wkbs}%BYZRkajk0Y%@U3X*XoLGVVNcMCLMvCffD%?BqkelSDnxK4c)7 zj6H`&nvD6N&&q1}<#l=Z+}DR=HVYb-0RGg%Txy#U6`R+cot&<{PCC7)Sn5M`n)Qcm zW>64+;+M;Y`d)1)QbNRGES6C=>HD<El$Y4k@ZRna+6H-jJP$`u^QQcaAeUpHbiH88 z*(bSeud~JAqvdqSkIZDkptR*9`HKOBOETUgTg}Gr=ACf0Er=dkI#svX9O;>%BuSA* zgpZHm4@&Q0N}S^IMU}8^(uPvE0ED-&<!0OD7NH<S-V(GU=A*OLZbw=GZ<y^_-jhcl z8=m$P?-4hU;xo6yw~Wbah<%&r+^SMr%I8q4^WIQmX`h8McuLTD9@=y=6}K%EZ_Tg2 zE$whd?G72Quz`;3SjxrE;{8Q^uO>$tFy$}a6J(d)!v#B-4f?&eZwIgbu(O?eljSM8 zpcz5#Z6uYMTpGtgOhK9)-V2es(uta>PBcYyV1$wA^6l#D$BnAD0pzp^#!gxn#Xadp z04;-yh6B9exM|ejWcY`|4D2{cp5twb3Qv%&;1SwT9vYDnO4QQCpX7;9H2ZP3t+^z& zIT7|otjfJNd-M0>WcJj;3>4>bGoAS}ePVFvhTrFg0JNMqcAM?}!T)M*62itHV9^>< z$dAg0nu$>8T||1o&C4`FR1>+lc0<{YopiemLRg0^hZo`&b6W2<G+h9lAxIX&%Flq_ zgTo)o8p2qbZgE4*CfI&?CP~rTsLI)kYX!^A8tyiKCtxpjx|@reN*CE?zJp0BlMw;m zTqYo^ZIvS6ukw;!IIHSWOP~@J7qUt1mfIHE&PE&478+<;@POf#pvwn+R)Y_018<Ts zk0CUnUTLZUfd~aH(qQF<+CE%3CITQJUh{B~AK?JUVEZ9{AH44;E(QupYG$OnpYYRk z8pbx+XCG*Kqcz`Vp>r%NPR3RkeCqh$Z7q!5LD#kWXq)SwLe!iJ+2N#NeyqZgw|x2a z_VPXnkK*;oJ~FZ$Bv;jGC@6smm*4(d@v0{trs&naN=yOZ;i)X>vH$bL3p<s$V;diL z<jGxYbdBPkon+e)`z**ktiGYT=hqxYF&H}wD|q*AkY;ln#y%Js<nd1@8?U?kiR}XM z;SsB8?<5L{KwO#L0_N8u@wTBi$m=UU9uW=suz<`s-&gyhhe)S;Z}Zm>C6A+eUYUWU z&25hX6@xHsyq%RC!|p8*LKVl7F!O=YxZd=v-z)+w6|sGCgz<J5XcXBDbY@8gnO_3D zRD9Juo4hJy*fWmj2x)0v_wxShM*TXluaL0uO}=djpSRso;o9VqQJlDJTbU#=!Kimr zDiT#e;oC=c5uwBp6+=ue=4}pRsVKzW)j&4a1~OO>3Rxq|H)P3=ADB@fFqO-9r`04J zjb!1{c|yjmo)M8Cb9_JO`In7q@bvhA3#9mk;W76Xm_>(7cFo{(%aKGx>09LtJO8C> z0YSB(XoOsp9Ru4OpJHSf;aIh*sDbSxd<F!eleavRd!t6~L#WkqbDzzn+eZNs!`R<V z-_F|fv6>!BLNR?rfQQ75*k7PLI2cc^#AoLPUZ`foKGQ64N{`qEJ^&Dbw+zp@J;{54 zsKuRRge9CT&$t#xRTu+Ga8VjSzzPdB4SDnI!)?mM-d0a?CWSY^3r`VJ+Vs>D#e{_S z689`qnxo@G>SdI~ZD>8eCm8i2B>ECnmY-4aU>Zn^TF^t)!oSIgN?E<Bz+SgS(=z8r z#EJJ;tjb{?VA-Lk)zQ4$0m-T;X~=uA2<f;4f&m_wh2kfcq*?NKZ_7+oO)SD~%6szI z*pMcBLjaan7gx-E-PTn3C}PeVUH|--Ja38&smHq9w4YLM94TOi1h&)PCgZnBjRsf5 zO)uo%>|njsGjy21lZ`}@hr2Y_b_0fEcD{TS3Xq&R+xCMHDR}}x-8oS}3q)q-Cwk}o zO%9>oj*u!<3(RPoq*)pU_%x1S?$GdaR?IfsJ!VQ9kC3`Co&KSl93`t%1M#8dbF!5| zic{be$M%Y$B~3x@wj}c~b4LhMmJz`*lMT4D#W9W}qp%HC*q%U>J3N-&&<r~FCKh_1 z5h;4BQX)KK@5_*d?z46PPt+kBQ<vfy#WwOHfXIRTS#p)mE^oU~lx;xAqxlfdS6CA2 z<pHhDe>>cJ_r4-F7I;b-wn(ghzc=}P`Wh92Aazc9p-V;VaQB@;F966Wk6lhIRS8dO z)&os{kK$|SVd<!*HFCisCLIqv|DNp$3S7bQSEZtPCV#HbEWs0zK)fcS3EHx@OA}l6 z$ZvytaXyHhG<o<{>Mej^M2<wz!S%gktotnA=%58RKt{kB^E3VZ{%p$MQn+xk18=L9 z3);ciaY17`IZg5#TLQ>39#=#sgCXt6si_k}5wPW`?mF!uj^+r)#D9yZo<}g0p$`Q; z#&&aBjZIpae1W}QfBdfhckc%2dtfTC83s46<94^97^v#RC{f1tkjFMU06Y}hR2e}c zVe#fr|M9qH)Ln4EHq$74h~oGO&YXChaOsKt9o#RtY;KXPIp#`=mMY$NJJQsTC>e21 zU*G3*THP(vE!N<tz41G0XZlk9KKgUyW=UR6j`Hm|&m70h2kWLn32{^A@}kJ#%z3T_ zm>l&-twDP8{_EPwDk7ODpDm{hK5LdjA;9iKE(mUa{!3cgSpYPNsPBD~$N8ts(46C< z`3yc3s>;MR!-d6G1m6-^o{6}G7>vV`QW$ia*qO+AcH%Oz4763t7@;ifKfhKsF~wSh zsj%k<-G5Bp^KCw4&|_hwiecxIKz^RYa7vwZ!fTSQJPQOJg?N{rnrKK>0zo=qH!Ye& z9-Inc(D@ESqUP;MBE4{GD-~yW8A0xC1Os>xXGCF;xi_v{;f_YVZWoyyvzkV6^|B|j z{Uwla6gJQhMwYZC#1E?$BMqa`Yx4lW28OMPPlF&+t*LON0w>lCAQ2ZpK^g+470x!s zppJ-Va0j4Mha)C>%kNo;>JCt`W(2vng(Uy6!#x(^myJB?1vVRUN0?Ld(B=-j@vu=} z>$R5hPOTL9RCZn#)p@AdF3G16b&&&{wxK$KLye4#vZ9IL!OjXeBW0G}^5+O8;G5@Q zZKy2`S{**f#!iQ31nEN~G?6_mq`&yo{GJi36`NKwf-I5D<(2jKN~A$-pZp%d*NVv& z+P%&hCfoe7Vqqc}=Jxt57iis{GhGwRmS*TY03mF29Pf{*&SPf!h0$5)lm3`m!dVQw zjH{`vb)wt=s%ChJwB?g8U-PW7?acA)r9m$#>TqP)?!&rLRK5HfFbpI~wRJ<x&fY2M zyMkH6p<528{LF~RJShVB-T7^H8gaKynZe3&;z&)?x!^tFZEkF*=b6m|<gu*-wSYyv zlCO}4Qqsi|tL@h`pHYS`!1atRMCSY+p{9`%SVX_fvDE=P7S$fv3J+Hg`OFYhit84? zg4ZO5yn`|T4HhGNP}D{jvAoldlxzS=z0bUGrzfdSo+j2O32(j6VPVM!{tmzhnKhGQ z<G~mAJ9&C1@EaA~YY&X1251WSi7?nVafsbgXp%jQ`#V$VvS|<R^pB$aUU)afI(<B^ zn~v$#L39^iLIdvD$W8#!^UKg4zTMwlZX{;DBZzOGNi<q+?lux)S+pD-(5RQMsviQY zqyW+KRf$-4tSsd;3{K4e^C+UEE1aozfcb+X&>s)#RN9wYm0-C88V_Pz*ceN{)z?L4 z0m^Mhllz@3a>96F?=X~SW8zMKLE2DNqMegG(1mlXY>`kwlBd{1GTjeL<QUSqO9a0| zFcxkeaSzRMcGSBA%#_#HE;-nHxA%u(GF$D)N|KLB;~Q`6Y`uwttCh8Pc+2E7N4n(A z+0Cz6;o0F@Q){DW#AO)W9?}$e#WIjl0rJTNLY61b+Y!IsUfg{+NstwunvPVV!(=14 zHpA`jut7|v*fg*bSNXWt6h<)BAewh&3IU5BnWn{_V4~74-%)nZOzp>c|9(1t+eKXM z*bJluD&}(RX-Qa^Ftj*qaE9#B_K@sY9)jND4aD$wA|tyQ#O%b>ga8q9k!glfDmuua zA3Nf%+7URXYCHtTa^T#h6K4lk<uMMW(PO`EBulp@BC5UF!~@(Vmb-Jn|EAJOq#^~{ zesbpS@Z^eQkF?w7yAtUFhE_w0?o)>GA#*9NSxz&uCdt-UzkS<%GJ89WRuNaS9^U^5 zbuBkBC92x4L+l~jA$Jah^IHzvB*>{AA#W<Ynoy@gqx+IbO+h|PHbB239P~cPAUg;A zKgysol3~lAZj)_j=YR=HfX2!j-W`EE2XbDSu{oRGy$M6>A`KpR5aDURw>SO6`{5$t z`0OY<4yCTRwMsm98lePYNN*hc57#%RpFicz04R&26_W7V@N8wH!Oj4d`54OZayF7# za7P-k<V{H>%MKHTGJu=Huo100KX+6E7R$%j5eXT04_~??d<SHR<Pt|-@ZYm+oYaIi zB6a8H<n;5yT@vVbB*N~A*JcKPJDC1q|7|BU?+D+3!Wkx{W*CX0lq{G{hH?ZZ0^MZb z4!Y?bAhbvuZQbVCN4#UR?#by+TG2Xl78_4a7PLonsqCAcCF^?S@+8aiwcvaSz{+M< z<XL8;Hf6M|SnPLWvg~S0520A_K^5_Z@Q`-}$B+h!GQjkU^ZQi!aAzphe<}wfW|^>@ z&nq!Rl20Sh;>*<utd7pIwj-GX%@rlAFr7rH^6nrGMDev|OQ%_;lnWRLp)mGRUN!oM zE~ODHN0A>=qze$JNPg_-Y$H|t+!>DdumREk%e|SOVsV1E7@AAjo9W1r+u=dc(t`8v z?!+3UDWniX0>PTseaAbL18F3IhS}`sw3SrU5NS-tX;iKx1nvazpHv+TvvgR^F41w= z4|z&lANG+3FYsh<#2ea9VH$i?9v(#jj3rl0!x+ILIO4Eh?w9<okt)1VJaZWnoH;PO zQNdLaPgk~5K8@7tf{Vi1H!MkN)l+0SDF#Qq`^&5ID(Pg0>zVTs>uc6O$(=i*q@u_? zIkEZV{9SxhPV^8F!mgL}f*r;KQrJ8`x$x3NYl>y^9Z<m<0;t|Kn?TsZ#Fhk*r&sPf z-%-T06_%cdf#Ik+P)1R?$9JR(HX><JPBQZP4i%l%p)B(0&CAVv)*tc+f~*dLil)qE z`F|w_IniPE1mJNR1zcdc8Ua~Up2~+a4LX7e145eqVzN5o)ijIhq07(uHFsDLbXZfC zvU}Re@Wfbw2O))*BO=W%uZ*uc47!e^D(MzGhl-jK1Z=P7yYes&nMTDX7Gq`wY`mk8 zK}5O7^u`Bg4s|$|B8GaGR8tL}1z-q;ue@txr<#q4Q#)!2#xOQ^s@Y&=6eSiyaWqwn zLYAT#8OFMQd&idK$_w*y(_x|-nbC@+lvINto8%qw)B+=lBjW7in)E2dkGm97*5|uV zmlyZ9X}<zN9qosL7$kpnmI*+CP}y%j*_$MdWU}EG5h}ytxN;C~)gHnf@s&a%W7#}i zIjMKRpoz*bDa(G-vPI^wK=N|hhSb;D&v&S|)KdED(lndSXlTfXB6XLC<F8c!)eiiQ zkvM|Bn&6=oW_(C(@?`_IrP=O@>O|xMP%2K^0wkQ4fa6NOw*#a^-tvTX#6JcluL58j zyt#A#b^Ra)(aeDp*|5b6nng|M>y8)!7wGcj^zPR@8cy6jk+{q0eqjBm?VdY=ZTknz z4bt+~d_0=O>jN%?>~tb2F~OMZNL7?2%9(U}1<tiPgh)}q_KuwJ2e0@Geo7z7j0(b~ zQF}hz<qb&^h%g~Ez3#E!kw&qnNU$@=stZot$sJBP=qSHsLw?C(DoCn6G{cZ!2`H6F z98P-&@_@4Rh}>n8FT~e+YRwb1!^O@r8N*oj%kPLxmwj)ZJ{Q?B%R5ZYWUrDeP&i(q z23dUS^8^EJY~o!E+KxnRmOlM8=S<pkYLtl72<2<t^}ch&HYuXt`6*xV%hwe45lu6j zE*SEfZ(WnHU;y&Ic+I)4NrZNI1)JTLM=?5zS~vz+xWZM{Bmsn6<Ex6tuuHYrIf7R) zRGlhT%bHZvq|UN9pWw$Oq99L`Vw9?@$2!)IZT+zjErgHBWj%Yi%mxl_PB{<U<RN?C zRkAl7j|Zm&+7xqsewFfTOuvGzJ#|^hlG2#^lUYntw0%l-L3h}-sIUQh-aM5%)U@D9 z;ou3oTjuXa3Ktxz8|1r41(%t0k2$6&kJPAUcGGr-X)a$BRfi6UIVBzNcwc2MB|_TG z`m)<5;x?6~DrULx<z$tOXb-*KUU+lx)0^Sj(cAQtst&?;mvYPHM*1$GrR+`xBO*e) z^WmhL>@hz<keYMrRsLkrE;7qF3QAo4*94We6UQ0vRZwABlyvqBRG!i^;+R<rC*L`S ztlW@p5v<Yx5ohEr#n=lIPW^F%kH-TJhSdS|s*aV};fxP}FQ~PJPiMJtB4buCS}}_} zT%Bes0iLqx(*O#j=jHuIH<640hZEkpuvK^{dH8pLI!ARgY_!m6J}CK}qZVBdemP$A z*YN>FsLT?Ru^ONXSVBYq9W>{4qMZrz(H;qA$)&Qe2}(^UW(n#j%rfm~kW>sD2yMw? z^DySh_y)pz6TFd6BpHf;b3=Vuckk{1dIS+8BsMg_{xGZi?2AzOLZxU3KfMcz?E<Qd zIV_NJnXFjfKzxQl!Wqq$mOeRfFb`SomLtp@2L#__uNbk4ew7~rgD#RY9x6LCHysD^ zyXA_bsPbd(OecV3nX4P~LAHwTOo_rX6NNFKf4e-r|Dhud@y|!l4jjH=#mHe4JAvk8 zAVI=qOQbd74wMUJs~5dyzDP!CxYd!dD=Py*omEC(_J*+{S`F{uEZXaa!QQ||AZD~2 zv6UfE@)qA3li8A>(wfXrwOr!RhYN+KiP8i;L*>8aCnsh!8w(B$t^D?E-Bc<4(dbL4 zW1K~qLT5@;SY{iq9HV)oFtQ#-{l`L3f_0O8z)DFy6oI}Z-aJCiFM(8yUrmQelqB-; z^OKn@^4+I;HaJ)c?D>-9(`*3c6B*3tG2UD^_s+Q<_=YTHW4KA`i}N~)?#U%?_G@BP zh$-?!Vs^u(m)2jP3e>WK>4h||vg$2@l8+;f%R-@fpD?AvA&AhirYVn|MTXI%9AROj zNRt6jnKh^60>{~rz=(E~&a)dLgs~AjbBE*uTxh=y@bBVwb~r@Ei78##<WSvK_9$ZP zhyyx^-XOnh<c}7?0NYh{nzC0iw_)KFw2wIUCkOE7Qn<v9Kv+R5qt^Q%6J}lhW$FRJ zR<y(tf|gf6#N;$Su;DD(woq~{X{!cW=qFK@>=<z0MZhSL6RAUI{{BIj1RG&1^CR|b zF*K%SX}U=?0_3X?exul(i1#UIXh*g=ShTQXHTIeO)S=Ws6^2@7nujq4SO8$EU4k4o zu)_yM$}O(s!gunQ9UY2zhRhHYRC)e(L;y&Hj#@osI=-caL){b<u`JfKcI54_ARch< z#Nkp{ZTHk}KY)klmgS~ljfolT!cYdt%)Ue>43?i3W|!yZFoO0<(8v`)suh>p?ZX&{ z1GZYTWboc~RzZK_2@YC5qeFGXyeqdv^>4eQkr+aUT2sz;;RHZ0oj2lPy@Pi99AGSO zd*Ky{G>5&;q`S-YB@G0F!mf+6qElOU0kVmbh;wae^z2q*S2qC7gv*CGTFaxm4qjn? zQAI1H>?&SX8^G{`aQ9llnzw1Qokx(KziqDjRCc8!ih&E?WV5~rdQ2PWb4K;{xx{m# zO|T9}Xft)U55L=8$L`(5%=&!iNcjBh;WYa_HOUc19ZgFTGk4kXBZ&<OoI%T~z*cu< z1*!`Wb&KvEq6YMBSMqFEtTvKkN&5Ea#NB0?z$(T@vOGMy-Ly;6iSYE;gN?_oW0Bgh zPG}gbK69HTj40%{qd&Y?CUo*+M~-%j7z4t|lEO2|MZG*2MIk>ix}WD*$z3=-BnI+H z0rjs*`~d%C1hGS#=kk<E&~eBYQFBcv+C4y;fl1$LH_4a1i&v9SBS-y_e6@Q({pMec zGfEDfNQtz8BS#JrI8s}FLY@__z`jbwZCg5Ub_eqKU<-LJ(()<|LYsIndu>IAX_pR| z`bNANF_v&yB@tm);DK~25>KPnKb)np09U|3gFRXGhsyKkIm!7$XU=ko(xIa*^m;qD zi74JlpAO`FPa!_|IebEE1PEi+R^lmN?uhFrb_DBl7^j23HJ_4)E43w7t8k23!rSG6 zkUSZFMV}JE0EvJHN0BWaC(k;A-USZCt3-4ybT3jM&#KT)bzw?VxL0zIDk{v1XYuq3 zWB(;{Xx>9AF<$a^@J7zd`0qPE&#p*YRj2uRAeh|UpWHvBuNyK&DqDkoeZepF`&6e? zCM&|@Vtand>iO<aKB>TpdGFoZKfIqDynEASZ|w4y$Y1dZOD>XMM+Kio70z!UuaR5+ zJYd-D3t_FmDw&;<mbE*i$MX2Zo@nU4J6yGKR1{rmIm|ShJS`KbE;vl{zPv!AJrQia zzxVBtv0#@&rEkOFKC!T@n`s$F5}GL=`fP@h*{?#E%ozc*wlrs@Z-?ClVKyL}Vw{zY zWOpPa2r`AXWuNIAFi6R$<=ey9Se=ye=GbnJSKtD9&fp<)0!JJ|krvN>x$0P<R9bLQ z#faa$FuzZX8Z?Y0b$;4NVeq>n;0M41eP6RiNtxV*>5Z;K5{^0hlr6%$a)T7^ES|x2 z+uJU0i1du$^v(KZvR1rW9t}TK7(}lH3w5UCUGZx0cks~fC#SzeP2&W|v<sI9J{~*s z@!;<wQ!2%Y?2@Tu48*asJX;en1wgO=5Jj1^Ec@+}*+~F#B5ke(k?bBG(^87}(7c2J zKCL_46x^<44mPxuL=JT%VMYbiTtgFit^+b7EamMnox5BRkeF#0;%+Zl>Hd_b1q=m* zyhh@veF3{>OU*rU+(NM7?<aqI@V6aFh<{XRA+Rb#6L`q+IJ+SFr5G|l;jR34rwKGx zn__(hqO1rp*+jFeIEhsf)2!y{AKuG$>(r9nvFw#2VNuI~l5C~Xrb<+iwhEb@WU>}U zOQfTHE+Gi2Hkvcr8WN0e_|x~~721`r6_C4*orWLhCDI1yv3M6ecUM0LaVQ{FR?nra z62@lV5!<~ymz1?#)@G><vHe)lE?#cs_lcr{lZXqJq2x5>T~IzlMac=8%TqjY9&MnH zoyH;9z7ydz?UqlV0<SWAeuVX{zYY|>)aydj@p*ZN!TUW>z8RBW3NZP7pk8?hP1(iu zS{U4}*g1x;lKoqzy6RK#`3R<5`&{+uoE4yqipe*)U@{`_!d;ic#lEqO3ap+ZPsrca zXG5OJ>a;7nOjKB-7ni7@w4t@hS1V8wVRyRDg0%7P1zMIq*L~T$jCu-cM_^;@OopAb z{h)YKnnUPY&Pyf<r8h<1i(N1B?x$*AKw}*j;jLlhNxzT`EbBGo&!)>P5*({3%g$W< z77|sqHk0JT&?V%e30sY&O<;Aq$2M(X-<MAaSt1QnB^eby;$ZYXT1(v)xQ1#vedE8Y z?Wem$+G9$8bBNW^6}t*wg6D|Cz3DT{!fLuJ(*>h$*=IiZ1yD?)ghV-1u5UBmf<D=Q zAr!Pby86BeB*$V=Dj^%!S-k|m$ZlV7!jUI~d7d+|m@157<Vyi1kvt!&H43h~oR_rh z0HOwt4uJ}xr{CS*cEPT@Do#S7VD<=dsl#Hl5g-plgp*FCg5FgJRjAzZx9rV^&hiOB zq784Lw&jH8!31D6-KzbFYC=_Ql|W2t_w6yE={ZsOkmLB5<9)G!>EmH~I3Ilc?`P{7 z*1OWrrX-l<@qo1^Vv2YR@m0YF!vK>ZR(APjDe47ws4PS_9f-SQkBxJ<5kk^_h-@JK zWtO0lM0Ao5e#uHUd_deaQ<k@wR5UOKqLZ+}i<_G3PS{658Cct9yJr?cJdTLI<;mgn zOZ0*p3j)OomRq{|bjKfj8>;Wl_PT5>Y#)$h_}Cg&P%VQF8GWX`4}ZKz53*9T^a2V{ z70|FYH0Mh7MoIG`<<%rYh0HA}acy_908vm>x#b(vBFPBgqw|55fpneHMR(<zL&#;Q z{#D_HM}uMa6xTs6ho^CJ_VYuw@I<QBKy-QxbS*e>S7K;nWCwTk$|@3a7uvD{*T7BM zt(0V<fFt1tT^){zctL3^L|W2v8fKmty|y`|rXudHg@*2$F=?-b^A-Zl^EoxwT-U5O z&75VGlYxq;Q7mbVD=d#i2^%J%M!jF-gkVDiBXUBA*eV6$ZnHb6d0bS77fn_+U==RA z%LNfRV1hO!?+W*Nle9S1CP{9zxc(c-C;NLT({y*nv<{je4)|sRrge8dFnFsC)abuq zkX<*Xxdlfg7TQm1k(0YK=xGDm@se&%GTlgC;&=ww8#G1lPU%a#bVErsqH&jM_n)3n zyGb*w)&X`Nyokn-hs{I)iCsGRlFSpcoss)hHnOoAD`q~t6dh1MC8BPYeWoRoU%^`w zkHz_W_Df=YnsA568C-Um9)krT{42t>8qp&~^6YXa9O8b<*RcTP=PU`+N^8cnwI18z zpdJxEoqhZ$gEwz}pIl43AW!$BjGy<GRn2^Ej*%(5x}3Ty4Ph5HH|`=DEM)blMU|#? zF5EfdPa57y{7Q2Ghf3B+ao#jkly;ZAorz;{)cbg`akFEuC;m8xv9EAUu>aU4ciGr8 zXKx*jco_N5U%%Y=aga0sjsoD{5D5+O^4HJjU0mhvg1)3AN)U9|sk5I>n=lwgqE@HR ztIricYl>5Gsqd#xr~8P#F7e?_pJ}NUFkbig3fku~t5ye0?p#FXFZ;~Tf%hH;vUwp5 z+E$vD1u!rgzvrv~k5bhqT2qmsF|CBzC67~Fxkv!XOZShIEm%MRVKITFFQ<y1+Jy=) ztEQxPHS96>3gk;2n>cJ67MK>7P9OPng0f@^-JDg2Esp^)IXt@dQ;al!y{MyEDWS0Z z!tQ<0ccN@hAKzV8^!xSl?EK}%&gaew5%&l$lM#EkB##n}{vMsI*k#;vEY>FgMBsKH zl8@)tCwF(*&)^;quat_&Y4{-JLJ_UI`-`p3?;YEXd$7T%P2IlhN2dArMwH(LcyBZg zz^8^>OT@?eJ;DwEu8ZGV-V>Pt>tlxcCq4;G-SVFB{yyr5ADvt{YVY|`Wraug%w`I{ zavXKvb@^(e{x0BR4Aekb@_5$1Yarl&E-K`|Y{U2EU2F3ksO7S{r|msu%xm}9CJZ^) zPTNn+;rcxUDG{vm_MV8ES-)ol!-b)<S})&Ktp)qsOd_|)^=8bGsjxmjkSqivTioWJ zgTH;h=J3%3D%Emv&ooGNL5DDHYC4qohucK;fEE43JXdshi04eF;Q?9Q6Es%c6J7*{ z8Ar_Op36t~93D$YiHQ8>yCNiG{ksIyQH8^hVb@)Jzq!7bkC*qJ?_zuy5qKO~-MiN3 z@JQ`hS!DWI-E*=2U0_7OHw=1E7(@iUf0X*;Rcav1@Djbd9CBIG3=9<a2thB2cFTLp z_FB6~gf%xBQL?#b@aBo-n)s}e^t<e*kl}hiLprExDD8L(Ij`R%M{my=g5j;c{mZW@ zsLGf{15ZX^=@Mx?Vo}qfj8zHJiH&(vO+Hf@WE>Z(?Os^I+IT>04#880{b|LbEJekl z6ulTrR<D+HosB`ccEA_iVAau=4=J3@cg-V24yax`KV|EzjR$-yRG{!8wj{>Nk+VLd zAO3&Bf7?x=)U|FFpfXU{ii4MX);PjqUn!3O*y~<(SHG&?qvH=*NmnEm<g-z4i+(Ta z=}d->#vfj8yxM%dwY{@@^5OLCysIhHcT<F2gE2`r$$5sN(=qyf4*(>~iPb3b%*h25 zv~!>kN$t~<iqS#?TWWpZ45|9Ieh+EP3Pi?|Tw5+R%WqrAI)S3MI#!yVs+sKf_`?NA z74Yrn4!Zr`;Zbn{ttcN{1<!QNUL`>Chj1*f*!}XZ>V@u-nkAd6UER%~+Mm|DI%Z3T zIlOw|rju;(cKt54RWXQM=ife_+<!X1y}9_|6GbEE-_x*!C^6TB?P2Y%BsYj);jsbh z8!}wTnoq9Hevi#k89Fc{ZPfD<jBCFqcFdXI5oa@7)!}#mnI*Q1Y~;Lz>*t8uCeRjz z;1o;g{r%G)={89^$cEI;pjzFQzH-oW`pGvMwD0_Ju~9UDw}X`N47N^cgd1TwF30v` zQx?WSS1l$Oo!L;ni7c8&H&$Oe>=6}40mS<F#)`6sJ@|Z>NJm7=m0zD2nUliSmHuiE z;rHNbm)?b%Oh!Fbc-d#1HLF3c?yN>R>Vdvc-juld_|EFX$33PAQluF7)t%i;){`{u zslrQh7RUG0z18QBkq+n^>FrP6n@2k#=|=5ph9%u@jP~9gCU28g)^~2r<}81xy~J80 zRye{Kmzqvi1)>%H=mMDp=PWMR?<>BdbtZj%#ES<f{@wWZ;%PeVN-KNvu_UR`P1ZAp zv@RyHHyW7I(6F*_A+Bq0xTkEnJ=m(>oq<LxSa1;jVGCS(!aAiut1vXmX`^EDo%-Z7 zW|=<Ru5w_%pWgoQ=KlTZ{cUaq<Ou#M)bM2t&dc0-q%B|%S6|d^Depa!{~3^D-yYlP zv@!ujw_n1AnpJ;IAZ%cXNI)uRhgIIiqz7Li>ems$sefNiDxeFk`=m4|7%fZtCFw_6 zWw_3zBCVcH7LI6L2viLFd}{^kY#ds7+{8CFAA5GT@#<y%*r>;*F0e^%N0paAdSPgS zo?W&kvxJ^GM>*QfM#F}GN!n+$D$gW5xy)6(_f_>?@#MTrVeq5UMzx}<RXhafRmT8w zWfQBHKI%SAq6GMI>Azld+Oqdb8B%Mtm9ws>aB1lo?BxrW@+?cj_#w3p`uI0+GKTV- zQ%~L{v&N(+yPwIMjkavDjf;Bo>J|SlhzHHH$s+DqOIRR%9=oJ84i2V-h#;#+Mk=jC zhZyi7t<5|q`;As&$`P3Q#yTLev?3gVR>~+5&f3WR<mL1%q7t4EV1ZGf;OkuqAJPgB z51LKvdxz9D4B$@Hk5-jUollM@cnq}yqjf=0B4MsV;8Iw9v^L44&GLR)TV5e3H0;Rr zxA<#j#0khW>GZ6d?c$%G=EVmNEx<4mzL!%~k)(KY;igMR)>=-lp5eB@2MjaWBMYup zFJ=z3_-)U5qsTpu7`(=e7GqBC7tbDYw@M6Z);BypnUf9KsfkdwzV9vSS!YZ0tkSs@ zPxD*?MXRtXt(aiMa<6Ekdao2)h}<Co1=kNFUFP~iOgKAvk6RXbpLrye5L8RSHeRy2 z&fqfX!SZ3|3=ziS*Omm06kHMihrR9qPkT(tFIX-D7w-vsmZb2!^I`bGN+^45$yBOV z0NbMxN9*S==eHlvH?Ce*gPQsr0WfXQR}O44Dz3q!i374dFg~2-Q3*=~`bh|x3@5*T zE1KzD)rv>@+!bTbGo?($o)8~2$Ia=Jas<MpcNj5}aI8tmj}R2J%9<#VZw<v&J3DIM z9?KkD^;<EcsCO9P`Ky&r)>-}9BsQ;ozdRi)770~^tqe{5@|2^-(<7b*`Z8L7WTn+g z^oAL8*t>tq=cHW%%yeF$T9$kxFQM3G*d-;%x>^3}C=+ZGp+D$3a=Ra*c4=A$X2)TG zn{*VLnYWs_A|96UfNL?ilipaoBf>*=Wgkh2&ii-FNhrX$-DPsAt5z^KVBe8@`)vNA zvD{qxh@))TT78k|wt3XKU2?O#nlpqa4aAfKHg>3kuG+scJfk{~*=Y9uPQ}e+ataVw zYQrJaRn!y2PIbpsme1CsQoKkBAw0J2x%yr~U82G8x`uCLZQe{WD+?O;MQzX3vkW{S zByhrpi)LWrNl$P>xK*3)jWJi>E9F(dABU_mbbo-H_j0SBR$nlLtgEp#TFzDVz2Xpt zwDV@3@w$2@WgNobk05=|t_77Dl?W6SZCb|hsb(BeE%!hzmFC$x;Lfu%QR|TW?3JZh zm$|oO!G(nX&}W<0N+?j&#ZFx22jCkyByZA-Y)5ALhI{**TC$Fk4l}T<Z5Dqn{^Hru z0MZzjQG9QCHdCy!wj)RhacUI4bCvv<o{b899L^CI-o$j|_2o_j3nzd0>}lSiILMIw z&wMPOu6EM#;;^r5Z#S$wS;}TI&m%iNa8O_O3KgW~pBxPZEvu7NKB-2`n)D*PLwtus zm?o<C<yIC892<d%hM~oD#IyO6SnpJP3FWAqW|f^)&r#*P$qEVXUWMgPdU3oifZ>&% zgP<!BYD$d&REO-s{j_meON=V_aNhf%_5kioz>^-|8ieW+xc?|hS1X7rsm7s9fHPG# zwBlwANlbG1#uAt~XKZ?wMHtA#QHz+%S(2uio+#{LSbTm_1u_*x_b5A_tq@9PLpaIF zJ?Y8s-!oZeIleaR!<|twS|y(LLl24VYoe;{8%6?Qn0js{@4Q0uV<1lqHLKQY{lG08 zDu0FK+GjJd<2TCew5EbV_8c12LOxB@ENmaGxa5MPd_Y2O$fh=&!?t1pa8iO{e0nE@ z^}<(K{H5Alac^*D1ODC?F#Lk^a^0Wq6(Uq5q0W|e<uzSK&f3wmAHb(U)iJ#M-IO}0 zJdqVr1oXAl&>HzwKCK;Go^R>7g2iMYwPIG@rVAEGu_{YGY#|d5pR!>D+`4Vbo~8oF zk3va0CaxJS$&{XK%wNBtdn#7<V$Fj|-$rj{yiiHqIrNVK`)+!=`(#hEvhIn_Sxy%N zPcpBUX5a@TfD&Lz5l-`^HLACO4_?}7hLz2D$}<=l6FjslXLu5qH7kTT=BHd)d6=D7 zyGpaX#F)}}H+^^G<*OvjX^t}LQT1TeoX!c&3#cqbN@!e96&*}j7WRet#G$&h6lUXr zW~kb<eA{x>oG0x7IGIHW@iq9{%U9W#?`cs>&~rixT{c%kqZ4tfI+TTyzF!RAALgPf zo)(oRF<|+yDNp-r+M{gm%f{$hD_V%05qUkKZa30#K9)VK%6tSVdHVAE!_DQFFLmFN zvj_C~uDM!m%54-&wL4Z%XF8Nt%L_##Z&~y8{YhF*=RLHqNXlrRu0}4N4&pX_p{WqD zPKU6}L4Dc!%hg^ZL@KIa+Nq$QlW*tV|1IN<OsS~?8AUyHPgma!J4?WKWECt|JBMU? zn!SyJ9GtWeqIc)-7W^yECGrPWPgl){aLf7dx~CH(p7t2hIRa?z%d#Tx!{XS&glSd* zn<i|%@vC)dS2JE3RnHni3tGvqmYM-{A!On5aP9Z;@K~JUG|H2d?^>tgD221f#JO6} z3_Iy*A+E4<v7PqmipaslSuUD#qyI%9R(Di;S{PCCY7Q%FwPvuZd^Vx*#twSDag|V1 zr#)psA~ZD=lk2nMqOAz^P<E6JPBvZIt1eR-x~C5n8-y#Kp3bwT1akzk+ayaipT$H^ z%fXQ2*s|N&Zx_vAH5$#vCr3V8Jv3Uvyitpm%@rjcLbfEupv0K4@^m#ch_`}e8u2!) z6ZJWA7?=~-R!a_R9P^O8&VJa;TIsx^7O`*AgCml($;qi~bv{g`6UgRe7g!SPxLWV1 zsU*=om_y60Gsgt1MqiABz3l$$lZ@!Bv|ONa?K!mLq*zAkrd^=C4m)q8zLctxS8xS7 zyPBs3<}>mKYgxX#np7A|M8=Yc-0sk7XzU*mB)sH2<jv{?gmo3*i$UkXGh^g=NqCaj zAtSZEeRti=&{&eq+wCpWF@Kl<94Y7JAZgCHYDqALuxN~0Cqo6S>boUQ%u4;eme9}h z9;3S-DurXkN|CVIU_7N)?x}Sg={D^tRgGMP8*(Xbh{u*rPjd$k4p}r-Pgf%+{4<0_ zq~)sfJm>ThSf{Hvm0{&9(m8{b12SahR^+Lk2Am+ct34tyu4=uHj+jJ5%*A&%Zom{Z zsN#`a;y?pWoo8Y?rbzS52J2aJkMquQ<>^30R7|hosRAdnon15Q0%)3cL2Z<3QjfWX zrnLQz+uLs)w^syU3Ld&8<aj!NH=i7Q_W<fHlN!=kCuDjzFk=Xdg(Jrfef6q-x2S`N zrc2XOeYY6Bz|`(KulBcSAf?tqooFXD=^~&wiPdb(F>BP&i`b!g<RK8Tny=)NDuL3| z6FE7f0#MS<`44GYrXh9ni<HhA3Aoc#r}RlOKiMNjZWF~hmUk#h!9D_>rERV#Rj8Pg zDC&^5&DESUt%W176&==TZ7R?llux@PUSB_rA+MD8u&>qBBKTRwyKv@}1&ybxkt=-x zEO@k(&DS}T(BW|aLN1>U0XfgP=(Q-ZVrX&tuX%)~J;)5~m0?C}hzUQho~BxYlUxy# z&hyaJK^Q>xwux2;RVKw5r6Z8KQ|Hywpcan<J9+hVMQgaRkZQ_6y90l%^ae4(QKmh( zLn9n~s)PfM<9&(f`zs*jpWfvS%<U(TF4$fpX|5>-Ve=YC+D8$YYL$B`xQDZYQ);E~ z$aqME3W}Evv2oolRkbd!Vk*i+SaDzEeM4&N`&SGge8ezbHwSQK`tUTw&4WeM1Z_?l z!d{+o;+8yfid=irypcDzVl79#L)&j(tU&LFAAWfG!^RJ<e%Sos^$%M=Z2z$H!|ux; zUcP*ZfL?BPQ#GS_Lf_((T7IpNvFxYUJ_Z&a=#fpX%k{^vIo(Bjc%7mGa^%oF+L_vg z_EH&w{M+`lHMOfRWeCBN+V(`@+GoNaSUB_hI~vx`elq4HPR}PApV3e0ko4EG*w^Rh zEG&u0wMQmMu_m^Jm{po+pW&wgHMW$PDuaRc0eG5{WYdhlUU2PH8d6UjlI8nCe(#oa z#!0=;73nZ(LM8;B)bp>56=z7;*kKZ>)_8gU%a@KZdY)n;NB*ey$1h)=vbVTHbUi7- z3@%Boig=sxvd-ZUQM*<n$mTfhLY*KI1q&)>&zkpYml(o56-=gWuU1&uFvX~f^SEuV zRv4V%<WM3)^ZNcz@AH1sJx6WSddS^p0vO8N^LU&L%>-905>~FXIWYurG_>s%fed9y zDf`{NfB&G8Q#{YBV_U}A(LP@hkkA-mHw<YP=hv4zKd4W2{q<(GDLt=@`d}{{9joW7 z>9IHD%0)W(2X#WP&xspV{}en1vDhF>7kMSK&xGI7MBsAg<?STI8J-|4yHsoP{vtAD zi9&ne-oi^Q<7?V00+q<!XUcD5-K<Xz5c2#S36eQh@3%p^IOADwOyeH~azX>Q5vJ2r zvQPWL!3?(zsbUpxnF$;Sj}#Ca_)pIfI5<=pVu9(4pI@JUUEktrI|(B}z$*%?x0qVT zQpBy$`St17vvV=<^%wH_L?R>>QUF8Z3qEyHl`mijZ_;CzD_j{av>z)5TMp?}dqsg# zKjtHm-zy5Kj1Qit&oQcE0UZmfW*D9oP?i;o4Hna##4}0&3XBY+B>}8$5Q?y{>u@|T zyRQuWv)-}kMMEtC*dX=vsc9uG4BUO{KXbU_C^$QeOyAY}D*`)Kq!JoY8-iC1j9ql+ ztOs2;!UXW2Zu&C=m>_O69GXJepuwN=`yF3=m}I0Cf2$eHWPeW9h-w|H=d1Be21Dor zp#(MirxKzJ&jA1uHT2dM{dNL@cAjh$8j{QjY^Os1)$lP-`NwVSDqCSay;HLzM#kr_ zy05559U2h(p%HZLdG%pmQ3;x_i|t(rd9&U$3Oy}2HdeD!6aRER4D`T`_|{I3sfbNQ zBUFl7mb9n}_sx1yBT_(G8{>?6>eI#XE^1xz()M&(J749%Ie(?sDIf4S1XceMTo{?- zd|Z8ho?fL<<#q=;#B%x8HYXfDGaOdnReLqP5upudes%iA`JShjgH+T_7@520bNgI) zVmY6e?d#M@I{-)>&v)a`%q7qn!ON}Kv*#=7gjcucc$@aVKgS;JJ(+@$VYECzDw%WE z6Inn@Xtqy7AQksm&_KeI)N#*x0eL<8EalAv5CDU~^7e!KD~U_Sa7;kcUVQ*m79f<< zj``;9=aE&UqEwia+tF79I49olp9zm$-B3H&=HwfOV}1rRydh@#{PylVo0i-l5Ns6n zUsmUXA#@yQF1AW}kkE9Z@Xg{4Jih&R_)#l(&lz|Jczl$HZU<Q%f^Ik_q^k5DuPCKX zq6mA(!{-s00!66=lXipb=-3U!gb1bUUQw}WH;jPBv*-BCR=>`YtQ(FeN8&XqMwA3G zH^@<j?i(ujic=+8pZA~&1|SnsX+@E>G2rCDe9_A4hP8QMDC3BtTXhlY*(oy@a=-%t z#u5~~JTv|cBe}}+AoSxvdYC~raZn=Rb9|*9WN#eqN9b4A!>8Osl#S>gMTAh>!^^q{ z!la0BnpHy&@0-B=wA^$wxl_T?QxDyyp9?d9gU0ffvmbuxgc>&hAcatiVA3GFZSMxC zF6t&>Yuyb=Y??b2MYcvkxeGSGn=cz{a;F>Ml1t+;4@D|sNDkPN^c7PGX@WwHVf7W+ zkTvg34}n;#mQdZ0XHs~cj2lk=cA`q|LVg7+nh1Mek@iLB{GK}<fTNKvRyWjHh4UVV zDyR&8ndK{*OpEji@oDOh@nAGJ(4W>eFWXCjpGj1m>%`C5UH3x40zQ0pdG}a?cf)Wt zp(Tcd+U|>7p2rPPo7Ij;6ZJzj>bZdp7Nl>QYBzKQvk=41#~(I@)<#qx6K)_z*f$kD z<j-&ipFIQ#qwFXq4|CDmXWnPVwzp73<58(lvfKg2W*$zJW-^EC>0^tYGGvSpoN%j= z#(~%og*%i@6mn9&1-oC09Mv6=<r}cE_G{}yRUb}ua5N@dCiMMfL6S}T#|=VZxu!y< zj5FntT(jUq<wF^PZTBhfXM^_uH+~$v>4F#C0RXWe$#kDm9bN7Kxy7#@M_c<AAKM*n z3sH>JPbYj5zN*vJ9qb2o8eUPh;dyMrtl+sLB4y~H-CJVuGj&9e7U;~@_~~oojy$FC zzahmAEKADisb);PoxK``iyJlb@i@ewg{E@cL3+K9qTj2%wvZ7C2Dab=bR?Ej$KAnT zI4f!X`HuW8am+ElCsL2a&vOdcy$=n%kXX02)g9th_a|`<Ep7id7ccAmR7%ye3)FYy z89P!*70`+8Qr5+U*Zgt8hcI-E#9_92OSP@tp&k!AWFE)bzE(F}j%`sMLihGL>ubxn zp$2IYztSCfq{LGNtHNj3jUykLi(c#|A>8OR-;w)(H{-;MeE61<*BQ)QO#+r4-%{q| z>tp)R13A9fd6pxst<j6#TmrnL$3&;=%z>;)3|Xq`g$32oL;4T|8xcY=(q_hLjl~_o zqu8{%Z&_y_5rKpg+H)(FpfZ{)uyj#m!VD8DtO}aB14^g@8F@}CF~J?G$S_Uhb#Vt; zcizC7cngp1APU~Se+w;gb#X8iY1RGZkN5r6pHo<_d++9N{;p^`<L<twfY#mRkN3ie z>I<q~yxaTzoArzD)-EgorPr=XpWNGDyLH@ZboIRgTIvgvzu%v&Jt|DKzUSTJdw!x7 ziG!-X;?4BEFU^lOS8(q~1Jv?nFj~9!&9u7^Q`=42oV1kY5FE)HlU=V(eDGKqiZ}D$ zFJ7)XdQ&Y?{PokS?MIrx{LTBxU^aSpn67r8|A+bF#aM*<dkM1R+4vn@>h1edM&|M5 z2*P`ORjTdY{@*>mUI^(?*H3m4gJ{1vjpN1N|B=Ykf4ICldvpE~<iq*xT!<pr+oomz z<mz<q!`;`bhx_xrv$Kdwd$wWly=}Tb|M>OxkE8SZxAHlzKQ@;S&cn2}?0wlwbM3bI zF;rhY-@3d!R?7MI;q?CU>-7_@Pxd#sJ^}kT^}6bbvFa_=g?G2-=SI2z$>-0yyD#tL zH=Tdc#ooJj%Llq^V+!PQoP%O5T#oZB4fNgDWz(DUUmj$&G@UH3H9ykb|8Q$N{ncHw zuQ$WXcDjaNZ@-j0Si^08f7JQoTb2_?5NkTlcPy;h{c^eY`fs1P;b8oB@k|q7fM;5! z*XsCOU!FeG+!Enhb04HzGr;ArAHU$yEsJ+={$0HU_b3}+_3_cmKm7IUcf1))p6esX z`u2pm@3|YE{)+Pc1r7f4`}uO8JRaZM^N(N7ua|_?HOn_Uzul7@(r)0jrnNo!xb@xF z&*#g1w$|9~o+ld0V?a`uY-8<?H|Jk$r}IbiP)7U4{$NjEo1><O=jpg<UsA)`vxnzb zc$iNee7_N*aC!gM$ky(8;%myr{&&6i>6@l|Z`TPv-T3TQEB9n_d#;~y&lCHt>)@Gv z)!p#S&gyP>_s5&_K=oOhsJG|$hhM*betdOt`_(Mp|8cFQP=dMt@#N}ZebP(Yj3MBu zXROil%iYpfwcy^ecY5kbIzJm;oqSyGm00&H1b2NuzP|X{yeX~)ua09Oy`+00T|BVy z92BeL#<QulbmL5``cCc3ecAQA9C6oc*YxK6s_N!PhRM}y$8Yxr-|xLVpP?>VkM)ap z!*h`1x982Vx7>m)L9E^U=<-j%D{tC;+Y-sXaEUul{&abE|EZb6wy8P2>TB*SPdvIh zUJj;x*o~7D>4|r-99Lf<<t>GSbVL5$N0*-*Z9UND`OE|J6+HQEGt9NCzkmAb*5>2u zhv(m)=)=_~`iQGf_3`$TI(Yj|n-}Me5b^%9lXKo**>MjyPc_}W_)|!1@6U=fb^HI4 z_a5L;RPEdNY<5!!fek$%!io_iLI@#1XtJAZU=}tZbOe+@sL~>AAb?;r2@sbkcCcc{ zuBZVE8j1o|6bp9j#8|MPV9R$u=bSk+vpbvQ_4j_i>-%5-xsu&`p1Gg<^fPD9%+8q} zzz}Bo(j`j*O7Gq-)7EDIE{ggM=+k$A$?QrKyZtiL1uBSVC&5&_`F0xWB)va%n(V<@ z2a&pD=0!XotVwiIY>b1!Nn?~Oc0y>372&v7AEGUdK;d<Fsdq+TM#GE<NBKClA%DS$ z;Lo$!Ixi>Snb>6!{CHK3ba37b{1mByG>I-Lg1gqlA{^HGi%5rO2WC(o#t!$^s+Oo% zvIh1y*T6n$Y5n`dmfnA0S_V5*5I<{Owz6sDQ*%<zQ<QNwg>9+0-Y5(#pUw9ar8mIF zcx_L7$0sVOvu4jMo|`;QJ8}!avmrdUl9-jc6ffSJp|KRDBtcOoHCL23I&d3;R@_Ry zJCqj%``}KxA0c;Qnk8>&6L@y`4{HK18oaC~@Z!K55yo>{#&2{O&pI7rn#dd11YQi{ zH=zl<Sn#Gcfk#C<GmICWUg9lm0uNO{S>8n6WliL5Y$ET*Ch%Gyes?yJ_h=J&&ozNZ z_5NTO&$_<6V#UMyBZ1^aiy_0dUs3U218;X1zEAbmm6%_U8p3-ByjEQmWmh-OqjI$3 zJ%I?Gai*fYeHQ1TIa~5xLVx1#t|+ZjIFIV1m0mi+%>$?OT+WLWZVDRam*6Dy;k=#^ z^r+nSr7Oyt_@|A!HLGwhM7SS<Gq69SDO4XBFQmUB|N8`oGpQd+3~T3*Q?`Zitjp~| zD_%%>oPgfL;N3ZZhbq%iV(w29arhy@;Y`s_(hE;#Xcpuf;B(*|5L}8c>rX@Ui1&39 z^?nBLpGNeOq1QPRVd0-P8LmbAE(GVIP+my<D7_oN*&NEV(5nV#Pbe=$kJ5Woa43GX zv3#-6`wqO5jp((7fBS)o(gXjrHI!ZzobjQ&koa|m#!_&u4CPtG?;&t@hVnx6DF5CC z=j%|Og`Q)Oq9o#<HkpnPy(An<6&yyyN2L544&K;C^eBEsP1Gv|Z(|em9%!Q8GvK|{ zh#vKyUp7(iJMd06qDS?w{a}0;wn+Kc4ZKvrjZ_}g-u&Pch4L)Q_eyYX3gv~AFO|nm za1Mm>EcCtx=jTvf;k*UQa51KBNjQHb4$=0+H#&U`Nqb|C+%v&H9t$-M>XtihV)oea z-ONU;K|+sRjqB!e!1E{kZ^Hjr#ny_1vIk9@fR%%mO&hnMc*>Od)4X`!WME0rv{^Hz zvFo>KGil0wT9dB31}Q^YDKi!2kkUp;QQDL%@;i5a;nF3`mdpvbQpTR+8eJ5azi9p{ zTvNNU@v{W_i5*3SZPaBuqM{UWW)oI^N^(RsQ>dtDYtzaW<x=cXtCbefeF96;6^F9M z!k!Vqo~hZ}ww5|E(CO1(90;-Z)dC2yqmX#O#`t6emRRb;ZmFMXup4z|VAJAhwBs3q zLQDJ1nKLzeTntN>vYO?VIll_AX*{EDA*P+I?6YPRTH9yMnx*kuIb}ZDXV2qSN0cZO z#G!p#c|1<MD1niTeoLjAqO@xx`LRo9^}@oHT+_r~tc4!JUmSs79D!dPfxjvOf0fQ} zohak!kdZ`sjrD{rd@H1k>Ei1z@B>CZEpn<=AS0hIe#-fYEoHb-S~RKM^c3Z-eew2W zQ(T%se4|HUTU<<3R8I`}T-YQ3kX{;rk-fQWcgzVNbO}UTd{m5rm*ryNv02<8KK0|V z^0*_)j()+s@%Y)5sW4N0Imdh$G2`|NEbUQBj}SXuiqaMz7wwpddkb31n>UM&Ubv)i zfo7oNOJ^5py9yo0{%p;V5FZ_b{l%K0Mf2!byl6jlMG0rLOo)!-`!ktA9$y-Ad?`OJ z`AfNgvqf|>=D)Or6L_>)ykXa(q40Q=q-rE>Ut?(DYAV`s5e-E<E~26DhonP`hUULQ z#6a_3AtKN$HrigeOh!+k{aGRVxEZ8nJ3BrnWFHgYrsKF(EB7g1v_<@MtD-Qw_$9W{ zPWifcNnk0Sc4KBoRIDPdvRIDNC6sY%CU%@H5}MJw&s<n;$Ec@qjXe6TQY0Q-deN5H zG9jM5PALM>$YU>?X#$VE+N}vZ_7b-UJQ^y|);cjEK|FSC$u#oB&$AlkiC?)`@_4(A zQhM>=k;Sy>pM>hMQ9neO{xwYBTK@!S+PH$rWZKb=NBTCA|AU=KdYZj4skjJ4%}hg6 z+O%)Y&aMCXr{*8&`#)Fwf6If{6`nf!)Y3_@H0~SiRw=MGLeLIJ`nJ++iY=0!W^amy z6-V=r^ljy1v=wNMMkBCh*4m}^t=U89|DW1@f~Aix%3Cs&k48wdO*Um75M7(ulubY$ zhPD9>XXt=L$AR*gEfE8z@eHK^ozIXP=t73_aXPw;p#q=^hBg3Q!O&wsS21)1=sJdI zptXge6rkG}$_KiOp%S2N3~dE^n4tqe)eIHky8A<JljtbW5oUAY6!!^3B|x0F6=)B$ z?F8DvPz}(F3>^U4$<QI7rx`i|bbz6wK(8=#4Con#jsrc*&`F@z8B%a6e2$?wpf?#x z1lq+=643Juxqx0^s0N6~F9|b_92H5l0q9f4I{@@KL&t&MW+)CPHlB_|AfApSAf65v z5Kl)65Kl)M&@0S06X-pL+!CokJRSK!JROsPcsdGzcsk|*@pKdc@pL3BE~TeSam|^r zRE~+KDi>f3>smY;HrFz`*Q#j45|^S4JY0$#TDTNBdT=RnfZ$T(7{H|%PV+9sa4vT# zh7-06SJ=H2_qd6Z)Uxl=e8J;t@B=k?s{ZOswCsu+=Z4o%rTxK|)Zk$?_(uJWC(+Q! zTn%&SV8vfKE4jd5xiER2ziNT%ue>DL<*!<u5{U5yCn$AxU$BE3jLAv=QUztQS~)&B z-(ML>PVr_Ibabv84~;p_u3oe#XZ1d{s%NRX`zwcPUmWKt{mWLIShmJxD~>N)lMv%9 zcYy1xZte^2FF)vW=Dg?+ruhf|41H&L8H%R-U?5+u%8FA5X2&_#{ffBzf;q~D{CYJQ zjUDXeDr%)89-J7TEk{v<qvF(a5BT=S($Ssu_)sfh8hk)?X6;rhv(xG>1vg3^oSo)e ze>X_Z9nl~$p*fY_R`t$mCcMGh%H}JJjjGE>6wZZ<gGb?FJqmgZcm$$qS7E>ds*S4; z4^xk?_tnR$m5USA;Q9l|aJ8Z)&_geTLqnUR1{Ejzg72!qSB_D%YLAL?p-2UDU1hbl zz;OCVqmNEyr)<uO_dwA_Zaj|Nx;_TOF*3Le2GXo^8VpBZun2n=%v2{T@r@WCqOZnd zoXWi_>E@{#Y#H<<lpS-FowPaEC&7|a{$+8m(v=-;%g<JW!{f?Iro|MW?s*zVjA?Kq zwG^@w_TU6p*&k8GesAz)LzFef_i#j2EGtQfc2-bF;CUK-tCiMXb`YJXQg^98*b-Iq z)f{KFr=zFJT|f9hactQij=;*gv#LBc@8Fu{OH=^0Dxs8OsoD>gU2?$X2*l#cVJ{x* zDO;HkUEI<0G}WE3Sd~omJdJ8?aUjd{G|m+k2hKqnJpb(T4l3xlEJ+QbJ=NCyRbRi; zp(K{pC7`p$S2X&xMEIhesX;V5e~{WJ&^&(-?Ncq=mp1*vse3<005q5AP`V@c1~b%O zqUk^bn5`U$&VmkQ7ZBAphcXcP&e0Ny^ghImdi#?vcoJPnP)$MI3q+Tlaul~xgRj@$ zkRpogVx-(3+|T+InA3!L3e4zN)Zn-j>P-qfFHqYI__UU_+@}V!RWxkgs?d%_vyM`2 zSXrDmYjuA%1*7-|zd^0qgJ85)ou;+B<*g|<3RsqDSt8mviLy4X)@P@bu8l+2u#k6L zlZ(^TvP+Zd11N_PiKQiOCD663Btt3g7<8whB9>DdiyngJO%-|FLF^IH8&uQ0!J>?u zii5@RITgPZN4uZ0)pd2Je-BHbgCQH}dWR~s7vCT{%P$iWWhH4!phV<MAXm!{=ej=_ z;Xln1^rJFMx@lSBT>mh{tTMqL9Gxg*nG^J7)Zd`R^d=EOXSJGHe$ZKd2>D)Cl45t3 zzXViz%C;iDbZv~{ET=|i5&uE|&G=I*w~9Z)4Yc0gT<a|<hd&3E%0{gkm6+4_pt|3i z?1D+j>09Hh&d+4MD)DFl<1YU`kR;Pze?uHArIqK@-im{=CUjEEN>nA##z3SA`-+;9 zm0G%oYvs0lc*JT<RhX(W&Q84gYPH$#%sS<-T%A^TmR4ZPV|k13Xq9H!3rwb7AfMHC zt)gFyc#p=vL!m;V5vxO?c8&oS&?`VR7Ir994W}>^1fo%_L%9#=8;0Hh`j(+gwAu*_ zT?$0wUI!Y@wB$HyIf*Jx`AL&J6FoG>aA9<j8$9U?#!>g+bFhrYnca_}2lBgOAOfd) zbU8$*7eHF$>6E%cq;<T=xSySg>;z1W^=D@*M=Rt3MV}gO9GpV?gE$<sI?uCgQiIcy z-IPt}K?2G7$R?L(y63{_d;P)el;EUHUzIzSpR8BVsT)CJTmeDFSLuzbFZ<RO$SM27 zR=gZXQsAPh^#}d--8ePC>%g+<&(PTfCz7}-&+S7xu81l9>{HK%IA48@3fJPV)w1lA z*xF@W*}}i8!T$y3f6x`~-xvNEgS6frW31-gV8!VR=O#ogxFU08l|u|W9{z_?lC2^d zzF>Q`{(x#fzzU=62U}oB**~`81?0n>>kpzVRMq~bugXEAq-CQwIjiG&a-xx(4e@II z9$(opTk)~Fj0W72m=`4?y7ZvS;Dy{l9BtVtzF=%He_q)i_TrA-;D}7MsvYGswNe(j z+A)ZB>7~ukp=1G7yyYw(gl{T>6cj-qo}CJ7&xOs>y>+Amr~a<5PeDju;oqSY;&TK; z%Ov^?XgIU2MIGf$;3=RVn9YaAa2`Wrfod7r05p}MtEKG@pta2QfV7FG5=c(eS_s;P zCwP#h*je316>Vc4wGE_rJ^W2=qa8nup%$l61<s@jJbmx~t(Ia8gEx>NdIMP+p@B?C z={PGkvY1;nl44fL<>f#_O+_|YV??Z*o@_cwmHI;IDO9@zG#$m<^epwt-wL$c9;-K{ z5}d_H4550c2H#}`L!E{(1|5;MuUW~?#HWuTx}nJtT|n~MbDOL^+ktpZG1mZeMW=8n z7WBDL4=_SlLxcDdHi#dEO5+Q<6KOnvYa@(3oaJp`V`rGLDbDgQp()QYOCz3T!Us!M zon!4zs8Mk2)V5}wF;uFABGf>E7UBxMCgxL3oQ#_2mNl^{V>YX3)OCSA>$X;GwK~=D z(|f#LSh#GZY$zPv8M#-?GOjflg2NM4I-%26ss>e69sF_tes8M3f1o<mH*xhcndRT8 zM6a`Yv=1L6lGREtmGgSc{@|qMO-_MP-GJc&s|7e`RVFg+X*h8hlWYvjAH;8_2k!~Q z`+|oMmd~jkV%q-s2OmRRs9O1g<pZ|?=LY=)^C=u%pHWcTO#1Tr@d|WlP0SS<gQ<m+ zI#;|E2vBd?j`fyQk&V(U=@cdZ{5?GAi4?m`ik%u9tFjF71-+U1GJitzq$FQ9st{%5 zCsTgeplnFDkk`_VNtr~&sU8UK4vpjtM1~Jns2E7hq4YvI(3F=$@d5E3x*DjC+1jI- z@Zm}}5Fg-72jaY!fjF-<hA^Dx9!CQfU$6$vFqc|E@DMBWvXgG-`j6n?EHA)k*~vI( zc@4rTJDKP#KbrxUvz+2ob~4Rb@fNP-SW6j|5}1NPK_Z_bxC2DiKGk|TmdREzl)>=D z)6(K{#;R%XY({rKbuYZ)`5<KkDcfmWl*mRY7$144io_vCb1FTtn7g2?+u&&?+_O{S z>69^buNKWS^l1J8ra79m<Ef9Ap}kLpe;?Yol)z{-Zzs<beu7|^Gw9J-3XsFle;J9e z1zEf+J#k1(OPG<E1SBRAa09ZeDyv29KC}jaW|R{vJX#KLtyVN|qh*7)Rjf>XGehbT zpNU$0Ry5bH4=I27h3CJERxe|;9{3m0Lftt>FO=ErEQ@SX*%(gLAJiRN?F$&l=!HYq zqW`XN%8unb%b%pmd@Rjbo(#~d6#48dzXqQ}sWWs|oWv)qGRU-n$h6kH5cgAJ_1w~9 zM}zd%aHl~!uDr4mYumBdW+m{7dnFvh^CrkDE?lVMVir}wq+4@Yb_wRPGepDP^k`g( zNfg9KL?iaU8jYtZiA~FmSW`4g;rKtv4OAIJJ5JZ4A-kK}jek<AwO*qY5t`JF>4GKR z(DSrKnS6(Thq4f#*E6&apLFZOfycl!L{s+M)&>=46FZs?L^nGe%6Sq|@6B!NfP(Dk zwG!Pb(Kd<biRmjCk7i&vIvpLyI%ex3QHDgrB)R~og7Fqh^bpWZ%tjZvTNwIKqOT<y ziF3sx?C1oERszv27>80R(RC8N33NX@`jJGSvfDS9#gphXi6#Tx%{&SvS`Ty=v)w4s zof3TrbUQox2heQ{#o$c9Q7egj``t-6$i|>bGk`seikUpmM4b8ZbA!kIRU4B_VZ|8` zlX{pO@darx(2|`8X?`RbsR-sJ(S?4IiW$2Sf92iD8{k2A1=t+{cTV5>vQwBa-|Y$3 zJ9ADJd&|})*ox2d1!FL2)UNbYVxVj3DOaFn=_$9f;&HgTcO=$z4VEXDG8|Xe+_^*B zaj2CX()Euwb8ui3nk}1iUp`7SvVT3wq`3w*%3L1Ly8YUoC};Fohy~Jbm=jbB^AajB zN6{8_jixunMd#nxrD*wskFZf>@Db`IF-DrB;sZ06RU>U`@X6#-rk9<jVuG)d?F>G! zqKZNgfuVbhucygJ*izJr?*rNXU``TRYQ4{1!+Xl9;soHsb$f6^rs48kB`U1AmS*ng zdAu7gvDF&}zJq@b^u|>TAN0OkcP1|Ao$H%HQH1Xg{;j7MJj8@b6LY5+6QYc1Qs8wY zX}@>FEW<GMB+^w&A9PWO!bns3=++;6vd=b_=7oLoeO0QS36ud9bc7<Xfpyn<CU|IW zrQuwdAbR+Jn+s`%Tu5e-urtMRDzZQ;jI2s;6gqI04Y|QL=mwUH5>L4ynn8&+=T22V z$m_p~>E#ldQ!1jVH#g2w`JM|g?|v52OY@WtWj8*Z4ABJyjc4$jBoH6MJ_E$37N}nF z;VR9N^Fiw6K%7?t#Ch>(ik#OIh!0_vv=U{WHW#N)Fud;xo<tgO!z}o-8uTTJX(88g z{rU}gW1LCIq-*A2YePjV`_UF~m(|;fSE8~cK@Af)Y@R67Fi&&=yT2E4uIRi5T)WM| zY(P131-VomC9dBc39b!Ma;`~C8YS^_QONc97&!8bu{kjTJu6mmX5c%$c@asTpbxSA zh;KV}!U{)mK&P0^7Uxjn#yX1Z1yN}*C<Ez3Y{&7<y*MH-x>;dY&KMA{4EQoy={3H& z(&kr(690A!C3+u?TyzEMc)4F^iCjQjfx`I?g{W;-VMU`_AS^-AVn(UZ<HHe!%ymhV ze$}LHR=UlZZfMFWH?{320G@J=DCMnqY%nJq{VPwY=0Qg}kL(;JN)KY~#lN=k<CF@H z$h!mA?iQnT`?9%m`gmNtgoHtQoKIsBjwpwDtVsWEL#nO9IGu+9CT(N*7poJTZB7N( zCC!H#(LIyrCZ1<VnuY)I&6K2!I3+2)?eW$}6N@Mq`c;^={S3f!mLm%F9IjwdhiTNK zZNC6;Pmaj5x52YHYJa@qT*_-d{c=p(eg)v39Fb=~?imxM#H90@Pro74HflTEgCp`7 z%srYplxEjNAJy7RhUS9r-|)}9I3h0(^E#t*ywdsCIHkke&6L*rS}E}XrxHD$Iz&a$ z6sR=0AGH^bTtHlbSTq9DHmk7cs#tF?nl9BeJw6;!J>|NjNxyc}HY?p+rn~&N2mhR? zezO0x!nxgU8gyduxPH@%OUKW-r*HKoPi0Q~{)2V5pZ@2Tn{s*&Exz=`_3p~?3CbJx zEfcPNYj44tReMfc^TUxbTiZ>&=<N2})4mH-Ug+u5;hhtA4SMRgNAAh|Y}2a1m6?g% zyah+r=B)f-#h)o7&hOLi!7pxK`IxKp=Q;i3*Iw4_)ODV=vC*G>@!2O?TN0J_?RS;V z&b`LoF6*-aegEim^U$t$-~G#vf34bm)})0WzokAmVfuyBTm^0K?!M4<dGfbib~S(W z@O4qqJsx@Mvg5Po^}nv|A<xVEPE|eiXu-H&dNqI6_DEo|ZO_*e60*wr9^UN!>V|2% zl3V=Q=aR2ZYkO9q@?^}LCw}ifY1-n9=C{;8v1;>-Nz=!El$`Yb4ITEsd|LVkD~@Dd zvbX58n;$8B<Ivmjm3PhE`OCVQ-6wti;zc{EPgFj3Z*`~F%PXIrJ@JnreOm4Mq~*8; z>wZr;-0pTy{ra{;y7qNnF>S)ytvyDbzhSk;UvtQI;F^m)yQjCl__WI(u5I^dX<Yu( zM?C{wt_dZ-T=``CDF+9RUo&mm#rOZXxliYDvyM;BD4hM^b5DGB`QowpM|ZrNw5RI+ z%I8Ks@T?XeyYIViCfK`<u3xhESixDp+_~o6cW%C;Z{OZ^>qqvQG%<6@+I8*L75#R& z)PC!$9iqA(KkAFhD0ZxCGqkEO|K<}N_g(+nS@Sa%y|vKw%|P$m@mD^+)cxq~LpPke zou>WS=BAZ`Qs>WVQ|_?UqZ76(c<cU*Kx$grCY!BPSe7qYn7U{dj?u%g#4-Mo9Mwy) z+j?_3!>93A<kW@OZMPVXa%lWzIH}uh^c!-zPqF*H3$}3%z3B_@ePcU}!w|I#Y6rTd z751nVa*I)!xOSV?jotg%F?5;Q-kCT?8*#Xe9xF)3zpk8zy)=_$2KH2wC4jvGlZ7Ur zOH7uVvA4-&c@%q;Og*f<*sC#F-o@S#lZA#($4!=huouVLIoIN67MICFQzV%t%K+@< zn=GTSS75SSh`kb%<znn@GFj->EM4pBskjk)H6{xkf7@iC0pwAW<q-Bxnk=7TFA>F} zEB^)yJv^aX=n*Nm$<i5nlTDUh*efzwvam<@zjU2(*xPEd%){PJlVuh54w)=hV(*yA zau@bUR#)BuOOna*DlBOx%crn-O_md|&?BDs!@sdU)2U9c&vz!5U$50&)B>VoBMt<x zoes-1sY8~2*rP{A@fV^TLlzs^Y3qLT;kz{z+;0?S;&5d;^OWG94)BA;_$rqcYPrKb zW7$KgoMTKyEP2_q)Ar7xn=p~Wb@9tjE~gNO+h{Cvi&TbL*?~QJ$Q6Gfsh~5r-A13Z zJ>R1c&j@JBuM!;_9p$#KVc98l*g<p#^w2C(=^u3vmLn$1S+IO*vJ8WT9<U`3b9vF! zg<f8_mybSQ3tLep!izTI@c1l(<u9p2$0}iQ;GZj#<qqsooWjGx*wYYJ$1~eGHC<eg z!Gkv9@UUKkrL)wb^2(jySLl)8aOLLk(o>Q0>VhSj3hq$|W#Vw<e_+XwI;5PJ;~DFg z7Gq6d{kV<l6>aLpBUfrFiqc$E5aMv<WLWa04tey4rNCtI!BS+hOogS?WLXT$CX?lI zShkuhH^TCm$?^~^H73h$SPq#i@4|A_WT}JYxXGd*xpA=SW!eswB$K5FEHtjwIm2Md zG+D;OqM9u8VVP{Q;Q1zHp2>18EF~t(Hdr>8EW2RYY_hxs%Qlnc8(4OlEPugrz+`EK zMtsC%=?=>=lVvb0CruW5csveTdfMm0;xbv*!jfsSTnCG4vfK*`J<c9ppIe~j*ljq> zwy$sPah+DfQ0Br+9A4{QhNZw#hpq$cHfmF}<#ZUoRrA3^;6jHuT;~)lMN)@6oal<^ z;rj3xqUjox&zRNf6HNv0=@8u;ak%m@ST;)?Ql1D4J**$DoXC`^wbFL;Wt}nP;wq>q zLYX++wgHwJsY4#O!$J@Lhbz-4%x=?^r(_n*(Nq-WL7_|>uKWrt$D|G^e?%PQQMfYQ zn9-G6*Y5gEQ^7onP$mvnZix;xQR={~oCOR0I3ZlQjY&D9|D!)>DvHvFI%aId;mTuR z$&@;DY$hyJU&EE#;;7w5wTQM>Yo<bmt0+pbP$mwy-3Uv8)FF>YVWA&Sge$khQC<1E zyI*@<Q^7R3P$mvn{t}iAQiqiPf@Q0;7<=RPCgmvyVwY(usH>uy6NfAJfrVNNk0JH* z<0fP&^y3b0p|E`5ye%!pusX1?v>ciLchPc97qwS}MVu(p_=k=1<#_(bDLq`e*COFX z9Iku0u%P!4mV3f12f{3MVU`wJrItFq!z?4iEc3%Gl_rbvT|FIHZqWP}Rp)EoJAI@6 zgQf?BS4S4Q(W?{lqIn*Qa>ixLN9$g12(M0IUZ*iHn%ki>>xsctS-RIR!t1m!FPhu1 z+h|?~jaFIrUF)H`S6dRo);Y}UbXe^+n$w{e{_?$Nn(oz4c%2^R)rEPb;H=OSD7I{O zt?o5ecy$T$>dL&R#UYZ)W$(TDzV5Y5cy$f)axpI&&r;I6K6)74D*4lPi|}$WFS69Y za@4XupMj%xo90PetrlX8AasahuFu_I(MR2j+gI(?y}l4$#6e+UI|)k~G7^!+zp*u) zNfy~I9{nu&Va-QTT8K`FI0)VFMxtcqMKfg-@4No$GEVn8L+iQ}mk51WnB{^nOG%jJ zI$=qcI**2NUJSE*7-p$AS@06v!Xk_n`9?8J_UC1!i+xI03|Z3C`f(GrFJ|eJDJ;}> zxTS9&&Y^a}ECc#-1M0KJNf#Wd&s;epjgzRZa-EF++~Q)ERKpur&Vt2mqq8b)_gyyn z`($>NMtey#K)}X0N~+=gE8StW+o%#yd8c*??$Esk3oph|jA5NEy#SP~Ro@kMlwn;U zycow6R*LkZuqLXP-=uq8A-ovJ6xKP+i`62aTPxQ*sC!ilFUB#2)x#84_wF4Q>Rw+8 zFUB#2buRN_qZgoO?tJG=-K#YXg|IP>DXgBb>Uo%x^5kv0ms@x-jw!5O(u-6n4?D>` zTr9j8#}rno^rAeR{L98Iy4Ov@i*Zb0^=4jdv;b7NCJV0>M90Ur7ljw&n8KpUr>ASj z#NYAqK+WrC;l((nu&5H-ZLB8;+L--^TleZJswd-^!lG8Cht>SlJDIwdUwAQ&DJ*J3 zyv|c@JlXL>m+rMvcrlJCtPE3FnYN@<-RoZA#W<$0s7c#xbl#_J^gq|+o+fkSu<&9W zQ&`ko^>i(&`T7mr>o4KOIHs^@j?mneJIk<=TT%G@=Sk?F4Q)9SRy{07&hwpguUz59 zIHs@$GA|Jo<(i)79zR`%RV=(1#}w8eQ&_j=DZlAnHwiDsF@-gld5OWaa@V%^f9)c} zdR}-jjw!4mrm(ydA1u+mz7bxGV+spH2ay{9O1Iaq+Ub&EIcXq|jd4t2;X=ibhwCp` zZ_~X73ophog*A+MX?@hjH``yTd(9DEjAIJRZ3@f#t!=RGb*=DX98*{x=0)X2b$-E) zLxyzK2rtGlg@xglAzgvT*826Zz87AMqof+%x|Pkm=x03Uty3HP%w_bb=~(&%KNP{_ zIStHd@f0lZ;rER9P0Z0&+Ut{p<+VMzqei%s-6j_URVvZKW7GSLADyl<HB&~oDKp%J z_ezC{;hj}sHoULOY|9uwI#dp(Fu6<%n+IEnT9(I~9cs$T$_h2*V3p<&8x~g!_00Bq zLOs2n>@brTrC?4|jv8vn3#APAkM@iYOXb*5+E}c*;>ih78ygz;v3XXk388KitXNY* zSyL=n;c*y8Ychtok}WJr6D){i3nNa+89Ul2h_yziW6cdL@Wbl3H-{PWV8If|vXW=} zu|U?yQQ7Wc{S37{giLLOo5aE{ntS>vEEVR@%k{g5rCA7QY(wc%B*tN_Gb|vaiDY0= z>^$#qEGadtAAVVHhz3@z$np9-<8xRFuz-&TD*#T<4N1d*Tn{P(Eh;SDV`Wqb^`WF_ zLbND{jGCp9=il@!s_)Zji57A<8Br2gmSfnk>Dlh-X??It6PAa@VvWO+hx-lDuyBz9 zi(|-w&=AOE*7s+5y;$OXB<bgc>xVn!W#!~$XCZ5bC1WuyJ+(BMEh62|i(gY@=V#?0 z`{^wP1{SSRG(F4M_L#*#I(w8Z#Y|&!^205LcBhf@!flhMXBc`RL4?uJPv}NN7o!^u zjb1le1~fb@k_afx%Gk%sXy}jifcjc74ZXC^>}SO^^!qw<fEClwUFgh#AxyNb>Dl8f zj9x2aj+Jq^m2rfXaa^czvL}1Y1mD=uyq}D7YmR4Js5x)+_^}>iRYHTr8dEuASu-1_ zjvg!fi2nH_{3Ee6vx-W}Ub5ll9ISRWJ=5Gs2KsZevuK%dH@$~rSU<cU%+xi}3Te`Z z+A}ls=^vt!n>`{2Yt;JO^bU^*D$+^H^i4O*_}!yMjmXK(_xarH4ImMOq?;7V$kf`W z-%U%*sUvbmy4jmUB1phNI`_{AjfFZqclapPljUY_9El(y-K0=vnjQ;vRGzB(vQ;;G zQ%M8~I7nx#jcSetmVb`4fVAuld0|LTDTal@L&dzKb4IY$uEi@-B1B2|lww%)JXFl* z#qxStNS%1aN(3?8Q;#ubb+!H<>j{p?@{FMVIUD`IW*&)gq+cD4)51VEU)(}2dO_=1 zm{u6FUMb2%X~KF_4XpPRakZ`gV7;jZ<RdH>g=98qwJBQG!fGWewm1mS1;ZLRA(?3) ziN$bma<$^HsAvmLL?mbnRzxH;xK2`pRgMgCG$f?K<(Nc?G0yPOV{<VO$)Qn<VdRmP zotKaGLDg)xtaa(R7+7PqPp><z1nWea{iZW9t$t=<SdJ^5eD^$2J+-XCdN+JUkVvcH zSRB=>c4JF~nbzYnE|Q}!S;JmiY&?Ye5n=6{kWy-3X|8OGr3RCW7q6JVcvf;)fO=e# z*@Q)d45Nt52kR17jB<@~3+K(4zc@LA2i_=~N3^MIuHElH(rzldu?#UZ)5h|{NaayZ ziyUPmnde3m$&F@oxN-yeY$P|D%|<eha|5|-BuCC<b3Ye3heLRc2+Dr35kZ~Th#>1n z8xiB2MucRa+lZLXYedl4^){kuqBc;CSYDgR4K&wqas$;UoZLV)3M2OpS-z{WHI*{@ z_eme%qK(#6Dr0LZUA7265fyW8#wTHE4vuE&H_}ADaf`I3QV7p&v8GZp=uB#76jQJU zL-^V}kKx8;0eFdLaBd;K+!kvuk=_q95o*}1^k@$F_a^e{o5+i$+gpasDqNZ~b%yc6 z*IJ?YwGQKj=L_*VHIdh?iM$?7;L-i@^e|p{I;a|DHi1X?r3Z!a!qZFP=7jOW!^I6` zWmFi?T5m!a&suM47|&X7b{NlEZ$TK(TCX^aXRWt7j2Etl+xkjH7%yCp+R?@^Ubr6R z^Yu;Ok>2f1;E~?8Ch(%c+aAUXPY2b%9Zlpt-2@(m`)m_<R8MP~z$3kvn!qEySDL`1 z@_n-jJnA=&gz>`5m&)yE6L_Ro+XNoz{nSL>A5Gv<eX)1PhhekoccXE<MHnx<zEJ+P zZX&N^6L^#_t}tGBK2x|UVZ8A8kzVgGUbr6d1~h?3<uR-YJc^$h#<Py!=rCS*{2b7m z6vhkJBi_^|@}@VDSJ*_}+$QoCG=WF;bV(R5JYR^nvI#sYx3VVisQ=p-#tYA9sxMcD z@xtRryc?RxyR8X4O2@rT<UQI%-p(fQC>^`4c!np(Kw;139Sq@Ft;u%|GWrB~UCtpd z{)D3yj~-iDEI5pa4=WzMjbjaX&-UOfY6n(4dbh?G;IyDeb+A!8wc?fIhW$8j-lInj zu)TnPD;~W)FE<D0>Jf~_o>;Kry?}(g3C^ZToL3w{PenSqO~cxF7jPccZ!5iZu)i)i zoN3LYUwe+f5Wf(a&RNv2Tj{L;?=UzcXEe+^fy0-8bMZ{hgB#Z~JlRG^=y`|Lf<ybX zMOy1D2;Pl?OXGdUv(S60iFz-B_hut{bgA_tICi=)!Y0FI7mwUVpY){N8Q}B^<%PtL z^hSX*J(Opmw+5WbP+o{0<==ha><Hyq=)D8ZXQ8|hJ&Iqw-~h5MQhBtQg=b#zPn#Y8 zR^>r@L%|sn%Cm^y5^z?B@<QTA>D>a({h>Syz5U=E4&{aDQT%=aCwevjHkl3!y)(h- z9m)&Qqxj{5b3rK2LT@!V>qB`KdiMwpiy%HCmB&-y?QTSmo^$&YoZmxv7V&F02Xz|% zw8?z2h~F@9Mu+k&^cI1$GL&bbccb9&kRzw}KJcDsM32h%O>n*n<ypkfJ{NNc_@}L* z^!5U0XeiG@Zz?!*LwOeItq>d@a^&=058fS(=uvuK0OxQh&mw+5f%A7L&mw-O&BN2N z_@_<gi-n#KoC%>k3%zB6!xbZ^w+y_i8qte`$iq$4dkVbWjp)(yt)Dhg?@#bz=krv^ zd<jV}wYRebhchFmcPMziP`!|~hoc}e*GkXubRUJ2<WQ9PAw2pS1tui_&6=85L2}H0 zZB0$Om&#VE{~s->=~~TJoLpmCjL^6UCFKKcas11~GcHOg4zn>HVdJ8a#ziU{;u#mM zY>;PI#8Tr?nbH=zs3o`Zu_s|;yb7@?`udZM8Y>)3Jj0@w;;>~pjf-G5$TKX8sqvx( zFfLxHEt08m=$poX#zix=V>EW9Ez%;I{3y=R0vN+FE~=^Vnh9WBT++D6rpB|>Gc3BP z@htTWi*RZ@OFhG)oEpzk&#*|R#<SGZR>Rat__owDEaItAV+4q_sHeuWYA?n`J~f_I zxW+|4HJ+88aS>3BXQgLc6jbA(YhznOi-bC&Y>G?pjEjH@6Z_)zkuM5rTm&?9(a(4+ zx~MGzsx9(K-&3KYE$T_%beTnqjN-D<v}y4TU9?jpY2_Tch^Kbk=x<!qQ#)?-H!kw2 z9oNd8FMg>n`l%h)`VF}lrndT~AZX<$7x~my;}plk{6m(U4D;7k>x`r?77^9rr`3x{ zi;8MIb3TP60wi-j=!=eO{-MW16++V)k_}<{A=x1NT`iwOvLXC<NCZOjQCrkBQv9_= zPPOBq@z)kT)sE8`hPKc}P`Q<l{j}r8MNzGe8y88nIzGp+D5}+Q<07h7$Bm1sYR8TB z#A=aMOP<A|s~XRk-&TvTMp|T*?AqF9IO(}Gy-16wl3gx)W^f?8Tmvn{E*C^I*dr~1 zN_N9SY0`u2hBeceo%$~^<)uX%cJrq7oAir0<D%snORHzbafopd^G0~un&TQxwu=xw zZ4GJ3)5^=Z*tBucbB!2*Cl^6)geMn8*LYUxH7=5_@w9NY{r|sy(=`#zlh_nDKItI^ zEJcaWP7H0rXIF-H;xn0{BltXrA*zh@J4l<70z|(7w6S+lWimu>oT7<Xo3a%si=mxB zBN#dg<Yy=jL+&vQ(W^%%GDL5FqBFWpDFrHEXdBRMhUo207cq1aXbD3ubeI8#RG^g% z6#=bfXfse5Lp4Af7&-=2#ZVefR+~8w=pKf!YJu_qLq~ufW#}Z(lME%{H2*Y1nLy7o zG#O|wLnS~57}^Z<8bdpQ-eTwo(0dHgN$MkpTtJ^O<Ocehp#q>fhDw2sGqe?mW^--q zT^@fhbQHFFhNy8mkgw?GfSNJn25QMr0T8_t8+i(p#L!kCdMhRLfVwes6o?iWz#ke( zPli%}`Y@Ca)Sscr=;E(o;m!jZ&TJciX!hEsJO(tDp(8+(7@}+5X$++R&0r`WXbwXq zKnob!3Ir!o0eYXIoj{*3R0H${L-fXnV+<Vv`ktX9KtD5d6zF$`jsg9}&~YFe3*#hE z3`6v~fM?m!IG`Ga5`kW1h?W6;nIRX@8w{lYz0FV>(8mmA0)5Vq8|WK`RG{w|$_M(1 zp~*nMF;oEbCqwgqD7$S+5fHs|)uxmH#WPe2^a3Mn0NTgUCZK~1Z3cRsp{+oN8QKO! ztrYcOHM_Q613(wg^i3DX>>C%q^o>8dekE9l>r?us>reKL>r48cJ#URd-*Xl&nGxvI zpWsq<fM3Y5{l)yV*RmP287k(Va(@-uXBR?*1dUzEu>JXqg)+MsArrsaAVj{(AZ6y_ zSuSPalEMWp1tV+rF`IoZW?v<#D@tgWzGn)sRQr|&je_wSJH`p(usEo>3-6`k=u&Z5 zb4^_#)N#CU85T~(|7`rv!T((RFT=k!^Z^os8<!%6FSIPGYc-vVDUJBf5Z{^No98qR z^wk*s8HG+~YuJ)Gr6uPmfzwJ?#wx`vePtzBG%!}Jzk@ndd?oTP7ky!!G`v0?D>Jf} zuDeSIVF{Sy?0xH}LKm$&hDwL^TN2oUgtV;MWUS;ehOMkb?cRs=Z9I=T@G9ofK6O4@ zVa2&4AFtx(E6a$5Y`j=r2CuHRTFPeSpxV{Cj)jDuElwl6wMAN-8>oZP)`9rH`9gN; zWUOAu&R-?po?ay%k5|bT_jFgs)!E(E4n!(64{w47<sowJe8Y-iWiV6z8CItW=J!Na zzN9V8qb++gke0nc23srzRN~%AXY9Ixq(r_V3!$VHf@KaqO<rP|8?4pGml4A2tPAKR z;`8w8aJT2ey~&8-24u8@t!l85q32+`f}t;gw&35P^u<1%F&)Z0Anx%J5cl{8h<oG) z)kLi2n1br4uzDz#>T}T|WNxfK<*)K57hv5REHwHpR-{t#=6@{IN}akwZ~i}p@8IaR zRDbjPe#qbO@60(;oKbcuUhkiZl}feO`=el7fo6EUfAP>K66@Lqy~zbn#MQ+*cM!lE z{qa@021A6_+wnf~*JJ?KA^=fR<Ef-#ao)%JrkC>UugXnS=fCwBIM~PHEaii?5g%fB zbGdgAGI2ce&#I8l<ApT9&zlG*LXLE_!VX)7$yh{exg=W97;i{tr89l+IS6|*vev;C zpWvDP1#CRiJIYL_MvJB=TRU4~0olyn!+y$QeT6UK8XS!dA|#hHSuUp=7E$O#x!i&+ zqCg81M9k^)D5INUF;<z;)aJ3mCoO3}10t+8<}BYwfR+tD0Dz(wiz5tA(-uddHZR*^ zp0;4>@Dx#E<5;g0gtI8Fynk6-&dM7gQcI&U(VAF+i9%;fM~OCt5K!D&ue5Sz?Oo)< zoBA|EQ{UKxNM)MqP#UfI^%B<pvKbcsDjCiz(lAjE)vCNi&*Qex>WKc=SRJ+ag;gk8 zEzQu}^%_M3VP2!&1fqO*u%REXTeGmw8#FcYDt6R?_8eqLUs#SRT@qWofUm>psXwTl zXMXaOor-a;zt4&6;_EH?3U>#~FGpxtd1+7mQD0EGti*j1yUy}eV4+)O>+;fS7tZpp zi6$1`ULlswC?G8?J%QE0X|-Ot47XD(*Bj%rVR1dIDbCj6)|NQsYjD4ziq&a@uhUB0 zxxqMeQ*M39SqF~+1s=$g%YUrL%8_ziU|-NF7Tadwm;({Zs`5adMpmKM$WE)hjweGb zkJ%5)VL(M&1cFxNs9S`<#FF6c4Xb4!iD0r7gAJ>KQ|hozP81qiSPHUQQtq(DO+|1o zVciK+aINIh7dz<^5NcSZ(_fWf4`vN1J7&Khi}lnyE52`m!gz)X1|@Tpc5uQQqpuUS zgvrKYnJBRc6EcZbi2|dg%yg6i<<hwaRGu@eR%3bKQz}-Qt-S%N-r#VrRx`x1lsE%a zF2SMN<@iATC@t|~K`44xm0GB(Wv3FH>nC9+xbX^#9M<ou|BT|Mie$IpD@DDbElNaH z1WSMLHC@GWuC3w7R*FKdwgtwrPpwe`t!iWKT9h!1;T2Zv%PK#_117bf<HI7f8UHG@ zEvO+p1HwaFM4<(&L;Hmmb82+mr_i*W+dydbxOS+G5ux=JIoX!yWJSc#f^5mH+LzHE zL`ufJB>XTwDAPiOdp0Ia@2id^oJ+!31;a}CFs(jinLi@NbQv5;_*Yya*8YhPi(+0C zQ5dZ`Vx`)S8Wt(Ebrf2a2o1vv)^bJ0CqxX5C!=nBB-J!h#Zn<G4Rg(^)qgacIbs2| z*3^OWu9&YGEt;^_w#`lX6<oMSip*U&R{H=xSX-W~1XaJY{0K^bMg{9&XQP6tFfc%U zK7d$Ua}kbHL10yDmNo5oo&4!k<B351Z_nFyTeR&qwdbN=ixkKDIK(l=I;@I+5!MUn z9V3NxEroRxJ}lDJ@n3{Bu7R-5rm#}2!+QASf1Zcmpr4DBu4gfWRJ#WsRIZQUn-%9! ztz6#{<+^~4{jSGxO8*d1uB~{vc8nM&lqNMW^wj8>vz)aTG!T<M6cc*Ut3?Pqevg#u z&=CGa_Y^6uZ(#PV_Fa5fgfOAWA#7<NghdoWz&eCqerswP1~d>ta|)p~K1928mY>2L zWm$<IXWJivC}~4Q@rdOYS49rk(Ep))5^Hy%^NN&vS3|v)CP@)8&guDOr{bLJ%dp?b zIsMNQ5z}o5KJ>iTw}F_%QcPOngAyAuf~fjep}mOiHB!2_I1t)ad{~6m^<RZHse#bW zrO?u?Lwo$!f0L87=$#^^Z5KvPwfpd4k+$rA724_sLK{t?O|%Z}onQV<+FCRa+GiL! z)gHr#McU^6tI%#oKNl${mr-c6Tm^3(<I7G(JJ-*~erW3$AsT0U-gkcdbEI_h;R2o5 zF-)OzB8`3Nq}aB$eFG8s7F~DkPxzo@hm75d8VRiSDfEJoQg}59)0~EdaEHc(r!^p) zNy5W~aLAD1`JbAQJt0Gelj!dvCE``&V=c|RQzAmb8v8H8+88mcm9y#=vp)KKC2&54 z7IM=3@_3|_g`Uz<B8E|tzy@@6(QGEnumC-+FzCl@6t2AXxjfVN(!Ig|XSTkGNg-N> zgWYm`90hM@vt(z%?ofWgXEsCGIFiNCbf9F0mP)i;9!-GOmF#FP&=m|#0ICGTp_Bp9 zvc-1gaiBbAdrqPQ5`76Yk{zuD;=WzcSB+z~9uoDJXe`iZc61UD_oxDz%xrWUlcT#O zq8pmy+0hq)xW}JB7cg5idVP*M0-eunU4S@mJkU&LyHKK~K(t_xLs=nt4+G6*wjC0^ z0#wLsha@is=g)=AMhn1lbh<<XfoQrI%kTp67zBWDu?gE+iLL@##CX?9-pfF(81HR~ zI%C9w%YXQu0mSvL0xDv*EfU==Q4P>ScJxIckyk)-m@OLPM2=|D0gieC&16SuD9Jr& z5sR_RcCkd4NVFL!j~%@gh<h9cn#OD&OLR;k2S(+S+0kY|A`GAf%(hgbD}m-R8(lbX z-a()l%=WfK$AQ@6Z^{YDI~P|pxs2CeqOm|eW}5`W^{RmA*G>*)vqVn<jbpZ_B`*e- zl=O2bhtf)-RG^EQtuGMQn*_8QWocI`fO@l|n<TnLBD%eME<3sli2MEmbQ-h$BT+oA z^SP}%PzQGOTp;c-11N*p7D_}nQn~Fqpfq-L3lR69m+RAc(4l-F(bp11p=#2#hC_)3 z;vPeRT+F6Qgq8M$tq7<yJ6a6HJst$=!EDtM?UCpcpziD_y(XS}bVRit$ZW|HrAg!m z>c@_b0pcFTKs5VeSMCB*+0ln3+9}aHKwftA10e33h?&Aw%+^VwRG{U|))$EL<^z>8 z+cJsP1C=t{M#<X)bSbmFD$#oq{Q|U_9X$!el~Xa>TFGpg5@ky?9jJmGokcdJ(xKb} zbRM(Oj50@ifd(<#0m(ZFM7_FQ`3vX?hUj^h=NWPUy}(c$Pz^%~KnEF01fu24>`Ggp zHyKI-dWxaWK-CPnfOasH478J>6riUW>Ip>4q}i1;ptl&xkSJ54AwbWvqi&$*81e$` zVn_wzF`yT9bCeIXhaDXcw3ngDK>HY)2J|9B1wb@!Z&zjk?Pq8n&;f=P0&%?}pjVhJ z0Q4$DB|xt+bP3Sw43z@C!H_=l&+g~pwz4mHlHF!{pWhPI@Bg&H2{4%5v+SfT&>r); z74M*+)ZmE3(vlQREAJP3{$PGuZpB;9%4!(=h1n@N6*YlE54@Ze9t4T|9;2|vbzWlb z{F=u=@de+)-L#}_<c|9?nZBSmiEf=@U1+*V2f*&AV6s5ovvF4DK#0aQxP3?WLvZJF z`d;7sL!`%Dp`X+DAa3_{(uC>$N~e5;X1x33tfa>`LY0D}()zxo-KjjJ24kV=Ztp2Q z85fv}&&0rBe7XWIe7cK^aB$B~<R|Wf)q9=Z8p;wCnNT-^j=)%K_dFIyRx+j&V9e@0 z&)}?!_<Hx?_Ip}glJN+#njfjoPxBX!LM9#z%)|W`TcDjB)EN_>%h%ARd_`_{)DoSB z-0VoXi7ZEMrciDgGO{F_&-{htq=gu6bau=)=A7kyDOL_=BI^7;)FVLrPSZ&sey8bo zlpMb!m5wxCfjtMxeOhuHJ*<E`bAjZfNqAfK1kXfv|H)mtG9KmgfiIYtOZBqWS)PM4 zSWfzv-prXr&UK5?0X+}#Qopz(wF^6RpIY%ePft|&5Ks1CjxtAIC)(qze$^ZFz8r8? zU-EJZ)z7w`vSYZLxfNVqQ(ui!6gO7yPCh=w?W~xM0ZZ98P7K%8D#zcX=q%re!W$WU zjtU+TT!yTTRqZeFtGCVYra5c1YEqPYLlL`afkFU*w<g>s#Omhb;>dwb$R1KF$HlR9 z&>?5F6SrA>!Iyl4-^IPI6x?Ll!|pvL@>sobS?zHahfNqHmeoc%%RfgxvZ=Uw3`zVI z7rC6}H-JIc7scYj(#fOtHwa=n{bz9>g>I?f&dblvR<>X?PSZ-ICl1$^$XQ%ldJ=Hm zL5bXeTR~M>Em(Xpn@snC_T#=4j`#-S1{`h<1z$o$cT+^`I(vgT8SL>9^L>{MdvSuq z&848~Qk~Cy*4bHhIRq%0Gek7wc{C?lM-y>$v_jk{mUP`4hbYDU52KW3iqh%MvIk;# zl$MAnHRn;<3$x)ygqC|@Q9^z}ktR3e5xZthid}7gh)2q^t1y_UrDf^-6(b`TY_c9b zEo%Rp1^X?EL@(Gb&azTbu+v2@Ch%NbgQjFr|5z@H+Q*AEzDXGuxu%`3N2ua;XZbs5 zu2j#4nd{jPFgK-8sh-vLVUzRL75iKCO0`8i5NA1EX_;$JMH2)1SG5PrX`?TCQuIZm zQi5wT(A^A=8(D>WxP!CPoa<vm@V@#QHP~LQKcLzV9772yWk1>igYi+k6tyLVd8zd{ zagIZm@Fw>^uxz5UI=;$t`;d++qDw#fbVIyazsH9Tv-nsYW-lUoxtv|gDF}smzref? zx(wbFMb_z|s8eeDqBEl|x2)!ap)Zry`kT<ZsGHGSms2;Rc!C?Lw@`fIF0r#>O9KUR zKKja9TF#Y9{X9_^&3GlGXO1J5dNu1^(0r+LiLG7LKo}>`OVzHn4&%E2AdL16gmE>6 z(ZM<ldfK|F>DbQhu~=8$UK9q6tS$1229Zq-Bd>ul4x)dmrFjvHFlb7lsbPG}?t)mS zV>X3Rhbm$b20c~X)G*dH5QdGySTDk8y**kDzQP(3J?r)rIyYx^4$k|d=rOTeAD+}w z_hS@G)s{dC0aWt$41+M|hDYE=F>bvbqXJ!xRy`H<mbKy)UYz-u5>D83_G8a}=p!6$ z2o&t#`DdSZ5QayWx5oTx?MOJWL1S$Wp=NkGu68hKWAMkvMtrQKR%GGy(uWt3T7}1E zmidEGzA85xIxK&Qa?iWLU2i<S`0NK7A2&e4JZ`{`V&t&FqYoQupMu#N^kk?(oH{+t zc-J)ww|Z6kD3yYx2qQdCJ#qr=o5m-xG;|9LrD0of0FHhdchw*C+jnz`1IsRa27R-F zZX}NPVKL~#JR9PuD=hogR{V9{Kufo?nVYk#TewmO7E^lAWpt%nQp=*6;mqfgBTs+D zyvV2NHE8Oh8XEKQe{1}ejZRiSO`qm0t3uXL-CJlrUA>EzY!S`>%3vq*Ir|>e3q5vS zBaRL;n;5(Q!sxIykCMu+Bj^OHR;Vc5jUw9?h-_=gPb{~i<A{`P`shXuuDz`i5XFT5 z;Yeo*S}bx+)d$sD_Y^Xyw&}5>p`lj)!U~mT8;$Y#!y;mQuMPM8&a9vOmCMp<e?}fe z7_(Nsi(|F)LBsshm(8atHqu<hmYJW3i5Q!Z5mD_-_UMPz31DSm-5d(9%d#mHo_4=m zj6CfPgr}Dc(jH%1AMt!#5-qQoi`3x4<PtUbWO6B`6W6|2<LN@r1)gcs_s-b_Q^Q*< z-)!PLN_^YJcf((f=!TE~Zyt>qfrRoKH`E2rM1!%jU-E20y>uw_)NndOblK0*4HDfU z(I-Hu_;)B@;FC`gc7xVq&~zv?S-{c7Ko2q7av;v5r!(o?;ZR<b=uL@QqtAPs9qj<b zJ;np|Vxi5JXo*CtB%;;r&tbghfVeN+nt6ul#bZ>>kqSf;UJfM}i1V%lx|i8*l8A1; z+{tXuN#5^34>Fq_CpeCr644s!GmsWLTPd99>6sXV+>2P*m2-jaV~Ez<zK_QMh{vED z$jM^ANuq~<nlszul1FPlr!d>E644EmWM*pz#P$3@^w79NnJiHND3RIl8y3N%m54hs z+j9~f0cyu=bOVL!wZ%ES3$wW-8Uoab**rj;R|0e<vz1G<6{st--6MIsf%w$ZNgzJW z<iyFJ+j;_B!*XaO5U;UM0P%XTPomc)dS9X*xSH(ALhCOPJy*!<a{{i=IchJ_84_Ix z#A|jT5KqyaKo7FGY?tVHiT(n*j~%5YN4bX^=w4>am*^@WUYo9yy!U|yu$Uf`=og97 zam#>y`QcCo$eRbNfq2_mFVRat53$f*k-TP@5#p_^okV9yG!%%pGJ0&8$9W|XZy)6n zZ3W^j<sQj<8|Wd#%B~y%x}TwsfF5AzDA0opeF^k1L&ty~Vdy)cZ44a;dXypeIQ%xn z<qNto5&MBZ_`Wx&_ViR;HV9{qvXgiK!v>aGg@oa2vp0C%WrY0pH$C;A`+~1{>aV34 z#EP1g6X`zr)V-e4)zM1vSM&%68wR+^j|~H81YP$kKi)weFO|nP0~r;a8-lRl<V2^! zz;v8!95irP(VUISd1zw%5R66~z#AnVg^#irCG4arPX09f0d4M$pPyK~A<r)y?y$OW zFc6_)xt$FwZzp|#sIRswF9B`Azk~Gzlt71)h9h^fqZty>;~RG|+Yo%-&5#?PoadFO zbfrV_2VV}vc$_=jiTH)i*f<qGx>}Iqti~1p0h*odQHDoIqcOi(JYiH-LaAy$h$|ug z%ZXxVj(4E{<(j}iPjEMWm}4s~=@_-NXK-YZb4OO<@4Io<uMc#cGdQcDxFbolE?YG| zsyHEdpl?mts*)(DclX}DHG63a8ne#}G5d_FlZK0hV`}gZHTXW_;;dx9DhZBB;u-33 zEpNxm3-jhGjRNvfa%s~McVDKK)0oJ1)6IzjT&Ts<g&L;!M<uBhzXi_s2Ztx&k_Z<y zyK#l%THZ;BF^^Ei>`WgfYl0Iq4Rbas1ZdYLM1$FxFL~qY6_wf=ZKdkqKLYV;@ICeS z4^*f69&UXk&%^x?T$8@YCh@h)%(}{)@`Hiysv&L8^)BR?mJFmwyV67gpaN0+j)s1T z^a?5A+Z5wk3f_<Z0@PlIaz7A1Wzq8+e73(0ik|;E#RsI{0pQth_|X#zp%%5^xS=5G zpkj>d@>rI4bvYqfk6R;rSQeK1(?fILC37E6)9A-F3n^9l59-h!|2t(+p1c9kM;W|E zIhTf{z2vO+CKpjwYI6f}UZD0OltSqx$t6l?@x(_g9v%P{JL!{buspexvW(yRL0G!J z6EZ4}@q&5;h!<2#6be6c(s_ax)M9Bf-!62afp~%^ktEE*2Y*H(B#9|UV-rD40?C=w zxlt3L%&bv^tqt{=<{;f=^|s=b)JC8-JdV#nW?~M~SLKLP2On5=fwQYuOeI=PL}G?7 zqH8z(){nC~s!DyK^i;<cjs(|+C^?bI!bE%Gog(UiG16mX=GdGuigQ-1;>^Hzdh;S2 zU_a)kZ`y7`M%hvCHH1-!@-DM6&++l_Y^FHJa?gBn5!=nulOyu{h}q7-i6D9w?JJ7r zL3^BsGrK^EK-_~^H{xI0thDKlkzF~1PIUi~HtC+ygz;^qeN1R`niglu6+LZw?0K9? zGZ%i^W~KWB)3vpWQ`!YuDDCjbM!SsWO1q`4j*=JkI@)#%V^WA5QGWf(W5se4BR6cC z2OZ@+%1w?aH@OF~*5O~<thE2&+Jd6#n#0#a;JT!FizZ6gBF<DiS}FY}aVFgk(9<?6 z?HHlWIZcZ*X|8BQm!7+`E4IWKB@v~Rn313)E=@Q}q0lot+IFi<Ek{%aG}nUE;;Jfs zR&ym9t%Wwti^_&`scblE3&g#Ml>~onv(l&Il$(6hbg7i|IB-N^ab5DEmu735m2MZN z%ln2FiW5I%axUd9JX3SS_iZx898rpsd5ow|X7JQ%9(0uRC@vgPy156jQVr!`rA@Eg z)>EtLQfl?^^$@r&X`a`JF5Pr6lrKt3D_<=P1fkq6Q_B&hr+<T~<vdC)N0eIbLAo8` zt8G@=Ln5YD4_^;~>yjqrlD1jtW-(n}wkTJWl2*234W3(NYB{3Rs@xOJEG9iFjlxh3 zIeU-v;D|i(xJTy%r86G$={(-4bk1n0bY7Zty#3L(hg#Pp7Lf|Q(p=jflPVmM%6P8Q zDPHOHWizEyAWrFoGgc>@u{x!<KTe+Il(k|zEEPB+g(*y-m$Lk~2mhR?ezHIAj{3Y? zay<P9KGyTroU1-u-Ev{wQ|Gn5^6W>Sj_UqF%%tj9`#!U4@5*!hlSh<y8}#i9!+SpU z;FGIIO@8R~6(@fAy8en$m!!HT_Q*c`?6mu;KlvzY;MT|UhAqCm<FrA2&da~CAp8Eo zEu+?~7~<?O(f!-i3rb$U`q<gq=eEg+8x{4)$HTiHIiq4u@sbbPe*WN?gO^<YY}<n) z+T1ztnx5sUf4=oz{+M%>t9^(5*mupGr}ymtYv^rjFaJ1Y<F?D}UEi8r^Wl>@6YBms z)W!GGvcINn9KU_zrb(ZVn*2@KSL-IWu)Q{6Z@a3IKQF$b@UQ2;zN6hgt8TdYf&Evl zyZ!V(x7?J|d%0S7*}mF;e(&?br@LYXHDB=1ro%rkYUcN*cklLL`w2g_{^M9t>x+7; zk1QVlPjFJfKlM*_f9R!0rd=F=&7rF2dkwj4)RXEw*PZu&Y>WD1e(JkLKR<KJkGG7t z;fI6X<o8zI{NS0%w=L>m`{4B!SKB+yb&a}uR#DtndzwE`RI)JV&E$*jd!yfgi@V>_ z_Scd2`Kc4<?D}y3)cb}F&O77lam{{xrPVq8cUJ%2{`<X8yl}R!VpYHGzc`jwc#~`w zcRNvaba-)m&#R_<KkMi}cc1!uWZu>BF6HRxE;Hv$xNhus>YB|zcDZWn+?`8j+|_RX zC3|oB^URj-lzPwTaBNd{i+kUG{OG8M&R#U+O;<tNySp!RU0%9EQMbJP{_T%!{o=sS zbKiUPy<P406`#LgYL~wjetGtx%P%{td*I9Zmj`u88$7V4ONZmPEPVOXwas?j@$Mn# z>?zf!^7_2Han+V!@sjWNcDdq<FZSPaL;BV`*B@Qp?ze&gA3l0#`-{K$=mUTME8f3; z_Ly<6>>vDE)!Lo!Kf3R`;rZ`9+k9R1tEcWwd??|atgD_r?%Vm|^A-2+Uz?J2=>-=I zIegCNM=~$jTXfpZj}*Rf=<WE*yXNlvW!=o~lRkg3_4zAax%h{DMasE(k8YiR*`T<x zO*gFB9&_nk*ZunbJKJ-XE$X-9a#!6spN#wRtA)3Gb@Ae}PrEwi!*zKv&HQaAJ$C5C z?)HQI7f<Qha&({Jw)KOrD}4X=?N3}#cI1v%x3xW<x4rr5Eh|s^^SX_`%2V~THs4pc zbnw+>H@&}j`}Ox9xHTi7<evEUR_*u>SC31s9{B9*tJJ%jzti>k3SU%4v147Ep|_WQ za;(R=xF>gY&QPE3J%8jk1HE&{U-|gbcK07$xa+3J+MT)i=^KBIJ@4kjQ}?}a%ai{+ zahLkdm0x_Y*D>njr=ET4jdPwUA98=z>8Y!yzxPn^+dk+0aN35W-fyCg-#9vye?!S< zsXw-!u}kCI=Z@)f^V;@3>X+<2R&drYckX+3TZ^lDR>#+^AK7ct#LOk99eMZGkAK~D z?VI)2j`--AJIZg){39^;>`C8l3}pXQy7t`}hgWp&mt1+gXY#jQb~S(W@O4_B;VxXV zs3>**tTyEiTRo;A?23EN>=}X7w6sk&TdA-tU$QWD(JUOptF0KvxI`OugmznRO;CQP z&YC^5cy2O1s!T&4aEv1)PD?es!kN_VHq6qoE#39*MD9nsbf%+?I8lnxi;mcBk2S~S z22g?PW)Hr^)?Iuv4#R`+nS_6CG3sDu))4yek;|{vL-#RX{*qlv34azm1>d^zrPy;z zi%~fSR=bV*V%kQJ{oAE0S1}uZ{U%qYi?@9I>&m;aH&0rO%9wjKDDQIg#f&Id;jhNR zVTCx{_9IXU{&nRj6x}9iF)CAR^*FB^HRvZzg-;OUFujdTDAR4`t=Q9*X-a6Pv>27C zeC;+WN7_FAdfl&@3jZAjS&75rybwAEu%|1R!g54fjLJ0T(&N1Qxe`2%qUFYw@S=@4 z+(wg&$FQd>?;#HUxy7iA%4JYqwC7sP=W5D_gfels?I&0gr4Gz^5u`RH4;@qOr4f=I z=hUYzMbb278ne<y91i>9i>BiAI1h&<Us{ZDrU_A9dBWNkD>W59svu?JaOGlr6-XUA zwgHwBX)!8eW){j+t7-cq&wjq9qA2vB3~j{W@CkhJDSJvgZTn!MkyUs;(_qMM6B5d^ zu~*-uso<GtVI~fT$M8iH&3bP90Si6v9j;7+B)g5uh_=0_eOI8V;0B7QjKtx}X|NoS zI^;1NmZQ>Q%#Bt!s^`YeBk$d+so+;BLYX*R`C?d(OC3_a9F{m7439JY(!p-yR}y#` z;P#?_G!@+X5X!{i%GI#Y^^KkzufRg%`*7tpOj#?z#TU5I32+s>3Q;H%hueOG#VvJU zR$?JJSz3&_(UvJ|abEbnGDTCtH7rF08*#YuU|8l!9Xgf|OR2ONmD}N{p3n8I`j%=c z_$`l6CJt9#4a+8}1G7Sp_->OHqjGy3)$@7sS?>?iRB#<Hl!?QYYhc+abx4_>Mm!`f zM&%AnS<B}=6PE-v6}(<jC=-V((>vUcN*z+BUu~U~7Nc?!Q`YkN@d;NSlq$*@bSlF} z9Ii}{3dNxmDM((tQ($pPi&42Facp$fpzX$*p(8XE{Mtz<6Nf9WhlN^;uDk^ndgUj# z7?nH0OFzH&dp8Et$Xo>_Bb155ZS)JX$x;Vq<r7$nq{XOAzd+JU@T+6(U(-~uFso1| z4p(l40x6X`q}&}A`Ym60oI5jRIv>&I{Ni0hOX(*HmN;B_5-i)K4tXqqrAAteaXuYK z^*GP`Y$ZA;EjLyRW#Vw#ZLl1YI;8vrEcD9M@Hls2$|Bjy-JjEAnVRx$p-dcZ`xKUw zQiqg(h9v>A;mTc^vZi%sa{2X|3hI}rGQ{DG(_v{Vbx64%EH0CUZbH-RUc<w3fv=wn zR(^8-S(+|>4=KVT4i9S?EJLIY%*qw8cukgDVWIwoheeznuoRdqufnp>WceDFfXNbt zfzKr-OD9;$O_mH;sK>#dg3QH6H^4Vbi?Jr0K^&V_UfExa`CLmCW)a{;8*z9_=fJW} z>d-N|p^iraE%LA%j_Q48-xa$t0Ou;01r^G~;kMghIUsdNc{?meq{SHLGnuj$=Y=P4 z&(l;ery-Py!<FBI<(SkV<yu%yN{dlBnJJ5Eszkki`+b@UULPxziNlo>(KO=_4M>T6 zJ`<KCX)!9F#gtK;Y+KWM%?FwaZupBPP8_c6hb2YokV^q9nbKlZ?vA7SSgYCM6PQ@% zD(JC<GI6*q2#YFpNO>zPlcmL|d^S@S63R<yZ{Dt{;5NT76Nf9m2FpCDL&~4SQX(xz z<rJnYGF17rZstvz3VHycOdPJ9fK$x|sYA+Vz_M9djLPRQWg(&5d1&ErO$9G47N;!Y zaOFH$wn-gQE`(*Lv>26pn3NsAef*iGqA1IRGI6*v{jT+Z)FI`2U^yZ!M&)yvvXD@| znAP5({FE>ghbte3<(SkVWqPHtf=bKlp;5Uf4(P4>?fW;nH5Ie~p-ddEoQSgkCfg15 z`7Bsm(qdHZ#gw)B?C3BtpsApzg%@qa;mY~2q)8n*HX9bVv>26Baa11z+}Y=w*_sM| zWh|75!<FeLE%{Q1l<$V6Kw6B-y_vFB>rPER`x8wCzu*_j#No<^U@4M1r2G{urP5+l zPGibiZUmkzny0DYuAWdP4p(;KqH2@WA?0LPwn~dpxers;;(Y7Qn;zFxa6bcHv=K+- zGc1ou9Xd7}mKtd>DyQS9-fs-P?cA-J3i4Sf6Nf8b4a*^^1G923EJvlqsN5Gv^|4m< z3w<VODtKT=C=-V(ABN?))FEYh+=!+Q!s~Me4(N5`_T|qm)>KfRg)(uta%)^-(!*zZ z|9mzqE@?5wxgS&3^7&EKyG~QVLs0OdjW}F+94u*4hmOsI#VsvH<^DKow^1Bu8~(u7 zZ#5P4jzXC@T=^<k@}&-W+zm^Cv>25K;Ha)#f6a;&nhNT(P$mvnrpK>}qz);w_cuz5 zQ90A3eA9_n-q2J~RzjILTsgKS>a)}#<<78dl@_D&K$CJ{%G!@L6+9LPFWQL1mFWSn z$D|G&n*>XZv>25K;i#S)t%mL~^c!=9GI6-_T38NA9a6p)mZQ>QR32<ne*f>MpV3tC zV3JTK4p)8#mg7=~l;0o@s#bV?9)bh<IQ){Mw=L0BaE&IEiNlrufrWm!sn_RrPK*<z z#Te(ICgru>M-BbP+3=!`I9%BaOQzJJV^d+F*ZYUZ`8*ueTld!L0>h|ap-?6cSKa_i zfz%=8+h8d&SssIh#*uouUV>$l$?`EQ+f0^UVW}}$q7!k3HCZ~ta@=I;1xp-;2YOgJ zu((W?3t-7KS&CtyF`4dlIV_W<#hCNMSpM+TW2wKti<WD7p(t0wi#Fm!DdWbEo$m2^ z6<RVuSKbCrz+`y}mP<^QS7D*$6}Xo%bT^dsUVYO&6LFT;;_`tAojBa~CoG$#4$Ml+ zR(xz1uI#~4UAf!)AEGvD%AMgw8*#X8C@eK5<$PF<NQ*JfS@6=8hr4#8^=Qf$3T5JO z+oiA^lR7Xf*ANHk43Bd*4(N6DdMEuzQ&YY}C=-X<_QH}VbzoNBgC#{;jB)mwl=m$8 z;eJg8OLhol;&A0SOqFFy9a8QLOTM%im2*tWSzqijjE&EQ7j4Ah%DJ!<NF6#h1C|nL zF)9zoQ9YkeJf2`UFE0_w#No=DVA&vbNck>Uwn|H?Vd3x*Ot~kKu$_Be=fC;S!HgUg zN9;Cw0s;+EnSDkHCPi#OMvjkh(6HGysQI<M!Z{-uhn_8<@=i#ZhBI}j&M3yAJMySX z$~8AVzcHNSXB@hN{Q^+*_|#X!Ik}8O_vfR5Ui7@NDV&qXICL+)80hVXw^+nyG~>`+ zdt{%oci?;XgzMxp4xHKcMam4+@z8XQVH|q8iQ@BJ(A%AtmN5^<G7ddkL!96P!)n7h z;~3`zJ}HE|{^|k)FLhjZi<+P)E@693SjI`qu`td*!ZJp3+O~l-+ccdX!ZKEJ+`^JC zEwhBhCoSuRMU|EZgk^-Zye2ForR7Iq86_>PXzCYRuC(+NmeJBON?7uwWr48xrDdbA z@cdacdr@K0O0LW;$^N{IbYU2W?-+$FeT9We&}<p2Su!&Ohgu5f&`5|js`JbuIaI@$ zWdMyzX`{NzEdA1e(rmcfhi^NDPQy!uMkr)qoOB9{_H+x4=av{P{k2p`PQQK_PX3C1 zpVfI%?$-})^w7Pu^cjHQ@rVesu(0}26fZPcGQrtnwt&+ejg@q`*FbP+9?f6@=Le%D zJq?_(=uRXjJq?^{qow}<N*FfD>E90tqjv$Z9)MDj-WNK<!66IJAL7hGlaQAF{rX@= zG12JN4`FRIa?<-lhwcMOuk`-l%(ELUlt1s9E#UM<XQq2m{%kN?z@b@tokRIE8cp0_ z0p}j0rEePIoQ`~!oW2>zjhE50=$3w{3SM+e($b$QkebLXtp4<+a;LM5<n*P=@w(Xp z&JbMd>YM@KJYcqflayfOWP-EKY@s@4vJ6DynTe|osoXyU4TIiQL>3;yfk^vWBPWCE zMxEILj<=;jC!-HIx0)^BG!u1$)r5?6<l$nYB|RN^c*tnUNJpICGg<~@LWedU=TyVu z)8k>a+YouS-FMmO@5iy8ns)DL%dL!~q#Bm;o`3^(`V9}#i*shD;11pEfbe1*#TeE^ z=B0)8Pv(@$F*2-gg%{(P!kT0X>!n}1Ptd*M+TkEJ#xaF88CJWEL@9=?Z@pua?sb;% zVjNRg=QA%YU0;54UPs-_E4&!T6xI||SkJ$<^lja%P<SzpDXgicuzsFZcvAPeTzD~# zDXeMCi}H}t)uZFZ-|1d=2rtGlg>```tQK*vyrz5A2rtGlg>@nG5(T5Q9lhYvv9i2A z6<&;E3TwJ4tUKRJU#ollExZ`V6jp%@i_-Psnh&SwUY***gslMocxJ#*4`+}?*2A95 zhi=uq1`036F@-ggd1-l=H+1%X-D|S&VjNRgg{H8cU+~WFy4MQf#W<$0W-%|V9<JyW z*G2cbL3lBaDXiJ1uul8yqo;MRr-T>dn8KRVK)T)*UW{W3YpyA*E7k7|Vf`Y!7{?UW zJQ)^%a&^YIQ>v^RtviqnXBzyQ%WFPaWO=Q>V7*QE8Y;XP#}w8@%qxkhVUfnzNuzYH zxx$NaOzB!+3hUMWKlIkUt`%O4V+v~_^U~_Zf*pr;>RvAhFUB#2wa66KjUzufQ}?P9 zUW{W3Yq1OqK)HVJr@KbVJnTTp#l|?Mu$I88=ivc0Wuoro5nhaA3af~DY4xxyX7XRU z*G0mMaZF)dYznK#;72CwUe^mR#xaGplzC}+n0)7@Kk8mJ!i#ZCVJ$O-_3^FG$LL;l z!i#ZCVFhGZ0LpFOm+c=V^RRtKvhl??&GoPtR&yTeUT)#VIHs_cGcRKv>R$7O7vq@H zwZatE;njIx>t5FhFUB#2Rl>ZCd8m86AiNmI6xK>pSf|;3?XP=%E4&!T6xJ#k7Jzb1 z&vTFG$~<iMf7p8u_^7I_@Bd7CLYagbiVz`ctR#dIijqk($xJdSR1xt~LlFcFi4+Tg z1R-~f-D|n(#g5ppTvTj9lx9P0*s+5sVh8og`(68#nKK2r&vXCJ=Y2l^_rNcEo!?$- z?K1o9vrpT*t8n@(oc21r5H?VUSATJHeZVTuuu?j<v@TLs42jit$Le=~s<hG?XILp6 zTe&V)R_1y6n;p*a0js5kmC~`Lb&0a-t|z5^RQ*vyg_YJlhLzH>rM1MC)~Ao%dN5%1 znqj4MY-!aiE2Eiec~_o3*k`5ni(#d7Y-ugErM0i~Lu&(8J-ZRfrgUs?$}NKpybti* zxRWvh*UKe_mFUC(-UxzO%h;IVx*9WZ7Z4_!k#K;yz_1d1-YK0jW7d3@FP5zV#5&SN z)wV6eV%V?=h4~Y*^W0U1u5w>VQU0+0!!kWS7J<wefKZXIjjAl0P{g!{6N=o0l@t1n zs>~Un?lY?0Jhf{&@p`?kvVsDS;Y2MC8p(-nB{wUT6BnDAk%7LlLYJqoqSWvq>xxEl zp=>M<1+Jn(%Y(PFvd~@VGaSf*q>&sblYoPQf&$AyiLcUA;wx~O9$3mWq6e`FcyO0^ zD@+%CtK3E2a#xY*BD59@l(J=8$Yz=jEOeI@mzEcsl{kehQtHYk;GxJB$bV6Vn<}U> zYe3drjp#vaEDuGl!hi>NVOe2mvCnJNfUMXW$%C>9cqrn|v(Xd=78DhDiz~~`_QX=J zQzLp18_R>+W7_vG@Dx=RxXMb598}MUWQ~5nw!%t0r_k;5RF?UufCw$vjiO~$?5lK* zqCp$k_T^W(OWnoA73L3TtVtWmk7;W88ewIie??JcnYX0UZREZtV%gCTvYjx}<u<c1 zsIt&iTv%LY{({&KVoBRbxfoHT3<Hj=HrT(S(o@01fI>49b0XST1ZASamI-%>r`S_g zSsbvBnhD)7kcrV|N&1&px+>jOWoA35sf(D2(LtFQZOcSqQCYdKu%f`sL|ycn&<z8b z7#GMyadDx`TUu#4SsXDF<AO3V&X$Ra;!1aUVUc+_)GUsk3Ej}jM9_~qfFHE7(p6wK z=_o&_SOm<y6{GUZV&qkpRk?~PO3YTJRyU4Rl99^F<|NR>2UQf56nUyj%8kkpFOj=? zaTDCvkG5sTTUzLHaflmk)Vj)%GNW5rnUUR~%oKQB<(`sCv!UyYGDmY0oSAX%5tU}e z^z(Z7h05G!%|`rrl|j(C%;zniQ0^|T9C4QECZ~{dPkCvX95A*HTd7u{Tj4DXJ{<~Q zS>+z#vU(I@M!HMN-4&xOucbb3RZ)?L6IyPVS5w!@m$$r}Gly%GJCKgIVvNh@Et*gs zmIE_pgu5i5u9s<oI>StGjT#jthM&Rh3yY&~jA$c#sKscXYNu5r+{F_L0-bNa3M!$} zS5}bEg4(u<v^1qLs2yKrVVPM^{VNKq$_q<Ns`6zG?r=k;YgvwPSDA+WJRWypmCIY1 z&$8X&cA^<<W_7atEBUFt9$GMV)e#N#BT;1)Hx-uY03TzFBJwMyb0XWK9hB_Y3H<^? zoQguPyRx(j<AuZeEm#;SX{B$sx6aOa-jYI3g|F0OI+z^AgMM~5vX95W7{gap?sJzK z_BBz=3quNEo!;^)OH0d&d{srJgJ>DhPjG<@SQVI8<t_9TR1_DR9->u3XeAb#zxtr6 zijtzLqLMPpL$pj3hZG~*bkWaKT3k?8P*kE^1RwH&9A}3Z=a|L=3QEdZQPgXcAX?%% zA@+SOds=NlL7`EF(Td+U#5~tDAL!<!>hW^4s7ACfTKc&m4*Ho629#A6mAb2p>_=+? z{X)$9o8|)xeQr;w*X7gGuZfm^{}2b(NNZqGSry~#vI@gNv>MQ_H3C1#Kr;t<?#gmc zvAfbZ3TmQO!N8C#Sm)CL<%Qnjk^(vY<v5IT6y$}N4>B__u%NuOw8UFv9!AlsU{JsT z-Tj2Zk*0&(B6oq$TUJ(_KV^P+;)br(2grU=z_zTkoN-Y>dH&QWw&>by-2q#!&|DS8 zoRO-d*rIE*Ee_Zgab;3Q*E21ODXKQpl7Okt=P50ys4C2#9>o@2o9)PeZHe1eSW!__ zmOnp=ExMNNSXbfj(cTeOZ!?H%37^M9V_!IF%K3FOYa;a6mQBFR2)EDe8X53XR#8z_ zQB>v0UszK;yL!_6NM1}E%S%P&s1dHfS&qKDw4}JAsvv*P+}fH+kxq1`g*7JN^zI!w z$~_`*wjSvn=bn%kdPY`k&VYz?Zr_MB&+e>bl=*;u5%qX_XxGc>8#(#D{UfK}KPNl` zqxJLCnI7*b_sA+&p;gm4<#JrQN*FR_avdK?T3&6k^1;rC3Dmc1ly^+fkU3{mrPav} zEOmK(-eOmYF-Xm+o!d9k;8NMhPo{21uxE9X154emlB!alIp)SgzbGE`zS8ty^)drX zD+<b8F6)XC4|!2M=v|HJAuvkLE2t>&as?8UiO3^%avnTJW;fTWi#(sJ!0UCFnpa}v zBR5)QU=>^&+(xqQ@Dx$u-hv<}1ESRjR+ba)8U-q(yrQC@l#3AKN8wge#0pV1!5%2u zxJ6TE&M%%@bKa!d+UlBux@ps@Yh3f@RnM8KM~$qlnK@^=&WxNfx2Cp`!!$gqsCvri zi0sI4)>FMOf-bC~YvsmMJ$qhtO-XgFd*Qs<GpEd~9XWHck+!8%Kz8(<N^~d9nJPo~ zkV1v3RE-*OBo(e2BB)eR7qzabQ){Z{&vzAsW>>Njtih2K&BtNfkF1`4UiF;XXqHtq z)zfA!tezh&o*!av&7|77HM&CKq}fwkljqN!T~}LeWL(Rvo3mi%oT-_rmLmVYnd)ic zVKt&TAp;||X!d&Klo^v|&dJOUcOPsUHCngsdwA=p(Ykf+;jN=aM=P{yywM7+M@B7l zux*4w2V3WaXFJ$BYIM{p3$~6>Wx;7jsFPspsL{by7X7G|Lo&Gjj-aU*$SCg-boHiu zbh@^RIx4?LtsOx(Y9$2s7t*6dt%EQ{TYIu4AEv6;fYG)NuNu8#qj-%}uVJc3Reb3# zkE-}e@#u;l<nu_y5Au4XG6i`(D%HamU(N-GFSpV-yc6@Rad=0T*5RF5=a|EL3#c95 zUEq{-cz*#sV{DXDTFDbMPi0m9utE8Oi;)rTv1-g}Uczb<CV0=AG`(8RzgkM4fw>vM zTh73~xjFp@=Hw0tW-~H!va<&afa{wxsBfN%nwT>6(!tu5rT?6Eb{~C)XL+_4Jdus; z6QyPHa-MBVNkuO(nT^EV3`U0N<!h-0!7qD@o~%Ff9eO{tmpx580px2{`JsC9*mAM) zqLApxmY<p(QSYLo(2K?XlB3X*beA55o;<v62-C}tm_L7*UgUD<%ZcIG*rJv9ilgwy z8<yHtN1-R>z5Xclc*j+{@hJ4f->Re3yZtEj?mSApyN^<D^-=1riKG|wi2+5`_R+BJ zNAD)%#R_Q`8L3qhgI|9az3b7FmoJtcBYRA;0wU?n;34~W=$zS0scCYUMACZ>zGH7* zbOy5Vj%`G}d*Bl?nOPjjCeQFA`HLlgZ=thO4oEgRlq2a~2H!V}bqRrNmcO8htAuxe zFAW{pmn}avHSG8xS?#MZy~xMM*OBx>evhB=_YHcVoG2;k`B3Eudfiocd8uZvp(FdU zspBo^#X{lab(7!GOFT*Tcntz5y%2w*cbuUkda_0HmxJEvNAM><*V*VS3Dt{`zgy6` zH&ibqe^TDf=)4oE7s21p=r~T65*)s~Jq;aQGkSSXMsMH|{AJ)|G&*&mdJ*z>4Lbh_ z)r(NxXV7^iR4;<Rz3BWJsu$u<Uh3(1idj-UjQ0DUiryeY_i*jy%%k)-1--dP;jj59 z{oRP(T}SXI?QbJGUxn&LsK5AAnVJX47OlL}{`#OZEL1OozjM%;8LAi3zsPxJg`p$q z%BFsg2zpJC^nzY*65H)`SpE<_`7(;3QlBDsv1_z%l+Rl*xL5heF@+;W^|F(dzM=|O zxqD=<4CxNP2bY5?&5=f+6%HOhdVY1y{P81a)r}iBb9_<t{8_bg=Z&8_Y5Zcj9W{P( z-OSlj$E*7jr%jz%Gk%1AcX+&Y?ZQ*o)8<Y-m(`<(rfHMOET@Gmt$m|rh2=A+)Xbef zcUo;m)`$}`D(BVCJa6V=?qp>YGMnMd+12u<W&1QoOokR4bD`EIUTz}NcgyQ?T8DNP zp8(HYGCd-M=bm0fp4)UfAM9W5$wl(7UJHxhN4@D4!H>MXW%>#BFE3?9<ayP~<dYIq zxzuXjQqExeDQu>mjptRTNW8qj6p`n(B$H2bTJ;!PJws>XVvI^A{Z1XM_$1@CAf*&+ zS7UjjyJ>IfC)P|omDfFVpEmtDX6hmObE4?iMbWQ|qQ5wb{^EdsyHqQmaaJZn+Le0M z#Bdc{F8$>ZJtDZhskcEQ=<Dxy=n<)Ht#o68vME2c+GGe47ZalyJ($7jLxMP_dd#pG zU63wCwxooZm{S<QWFU+EU?GDx@f*D9>9o?M%M9LR$Shk*OoBFZ&IOZZ&z!0g#@|4E zV#IjeZ!AZ;<Rex)+h%Q+BTkc1jI^_JBF4vP#u?v=m7$_+DM|5hlezJ2)<mo1_;`7B z!XzY~*AvWLP2%NE2a{->5}%-6UoeO^t>P1T5_;N#g*wr;b$pV(KUoo0d`(DvjUI35 z*XRzMZQ_%aJ&$IMB&>YHTa=!Ug{PTH=Dw+6rfYgJ<Be=+X1tM&z<x+M%xswU3yd6? z_6v**BqzqlPML3IPm}$rA^Y6XHmhC5PYc<f9<o0_XkY5Zd=44#!fb598&4L4d8t?9 zVPP<hEbS&yJ5JSV;E!B725)A2ceZJrJb6)Vb;i6}v+9D?ls_RvZ^7J}sYlXFZQD9! zY6L~$r$yk+#LWDN-uV&qgs(kJMos&6sjXWtJny^+9`uxg^%fna-r^8F=|AkF3f-&x z6|hdpA?bI_eN&bknEjE+!JF<On6b-de6-N6ee`?L{F(fbJS9a@G-(++%4UWpue1OD zU(-HX`0soCzr#Y>lw7UE#U!h9PVo4J@tZkJvyFG)^<kP!5-TS}DusH^QBpe6043!k z4OLPV(o0H`PlXGVw9=ARBY73K1*uX=yOBmKiPN*pb4nUX^d<5k2YnsVQYB?0EmzW5 zq`xYu9!XEP1?g(V$vg=+C@Bl+79~|7-L9n6Bqq*P(hN(gN7|q`nS^DtlG2k+y?mqx z6*m^?E+tJwdRR#^;mO@fk_qbWQPM)B$COl$^th5_ij(z9x)N!%l5RkHMoFuXT9hP{ z(cP=0Cy>@CsRijiC7q&WXs2Xov#s-f7H9F3w2V2`lWORXGv>>qXGZ!9wDXywdXctR z%O5#LE#Bqz?`PRJkN@DItMd3MWnt#cRJ@OchW&4N{I4Cl{s2F%&}*StjLp|HHFKhm z#lL3wnrC@@O&4Wm_?j=ws!j0vM{9dyz5dP~e}XIyHrCTLDznPR+Fr6!`ou1-`fnW0 zl|H=4GQnQwvoCm>PpS88_#(~|J15Ci|A(V4wc+9nM_o$8#jO*Zjd7y6u9ernxpAx4 z>3-4Y&-M-Z0sqd%1`5qmTvaSFmZYyGyN|qk{cde#6-&ypLWt~@vy@XDYa<sVcpYw5 z!eWiqlec&`CrWIj#o+cXK{rNUNBLHijAgyVky_S^wN=HG#m*hxhQye?Rb=60Ow_7$ z&P!(zX=EXg13d#Vdlt(AQpO5%&K3C)yn7ENdYa~>di*P7W@L}7<QDi5wx8aLU$`#S z>wnu^jcm^@<99hk=r7NZW#5YBPqzH&%Ia;-<*ySJaB{s&jJ!7|h}bPeMi3!B_d0`! zoe&Yyo(e5(qJfYc%f;?d<X9F=!Kz6n_we}J`dzIXcE_<4wR1%}jJxskx>M^Hb#Yv9 z0&BJ<H7p#TP<M>$Nn(P_AXO(RC&T+kXEgj4Q|Bx4Zwtz@sqqztG{uI6t>c}`<zRC? zNna4jmmF)ZC+P~by-R%lwlvL`S#QkM#l^aFL$=f<HvAS>yJ+um%`QjLkd{m4vQ)Oi zBTMU%OP1GbxM)j8Tx}vjTx{J4SHq&#@pWBXPs*q`ELRIhyPl+3M~E2edXio)LPT#l zZWgkh90${$O)N^xRHUi(dt1{D5a=uH`dBk8OV(l=>+{Rei8RB<s%#l*slC6Pz41d_ z4+L@A@zk62&2icQOPYYxS8<I<(uc=s&mg_2q(RiUF3q*12)&2Qge^ae%phF9B#C2> zrT(O|7%N=>JqC-!)v-q8CFzH1D?R>-RA2K2sr8HUwOV(>qJEm})eZ4`vzKqJ?XdKq zbj7u;g<N{@MdZ4Spt_Xlyrms|L%2u&h@RJ<P~@MOUF2Wb&%ONfx_I~UL$xo}FT{Tj zPs2iwR@*tqL%NaKhY0D@o;gGkYL!V};CP--+`qBBq-O{#)s-drUo_X2+}kT~z@LCG zYn8yD_2|iIZI5z)TPtgBYT(fIGE|egOeLfo&PJJDpM0t;mItz^jyslcr`J206)=q~ zdLrjhj^#*s^vQ2!o({-gzd-)xVZu?6>Rji^YuxH=ltZpzVOFfOQ5szRLC1oW`Xwy> z*7&OIvdZ*~M`FzWOUjq67pr!-vDmfIlO9yR#($?+EYiqY^HzT=r`1SBlPtA+q*ZX1 zZc%9$r+S*pQdtC2)*8%!(%iW%&UICJyG35!vT%|4YZRNm#s$Su8%tnyaPt?~T$sgA z%X;4hdpu3EviBZm=G9!Iu}h@vJ|T}8<XGnj=eSafY06<f!#vEt$7d;E!CGq8tE6j@ z<cc9qdml-LYH`{y5`RNUa?;Xc*CFY#JFHll=jCms*Mp<FN=dQ=v<%SVIKszgCdpyW zVwAP41?n2(k|9Ng$G@lCf57W!mBaV^-Z)id&UNj5j5PSsmk%NvjXRu;%Wz`+Oetzz zS7Uj~QARzQYn*f9X7%;7xHPIH1sgdRCsALaYrG~A7wNRFYE4$F%$ExD$oh)11ZjpW zKt5rk&tI73ADzb%qlx;Ne}SB-Ns?g%4mEERi-k6P?Vy+X%~5v&F<F>+SaQ+Filogh zthUUbuwG6cEWw%7?2`2s6Y4+t*tIfA)^5bK?n_TYVOHXv`MT!__C15_pHuc*Gs5k2 zv2WZ#gG~r-u)Sbe(7s{ejM%!11Eo=G**aI;%i`=(8lyQ)bD70CQHtZ0`d7tiE<GgW z8M1AD|3EQLq8RjI;W}x$PEb}^vy~H28OPj(S)4nIll*mg#_E>Y&K12?E($$Vh}YjK zcrnX;j@p8TKOJ?o9=}uB>1$bfg4VJ;%h|J0ehCJHDSGwBldqL2)^e14bE6w~S4NW2 z`1-9GK}M2MN>QBDcdN&dNCk3qcadf(eNwr<GHKeC&UG7n&2jbK4ZGsXV>h@O7G}iM zwRQRPvlz0}rZyait8Mk?hQZrv-r4g9x%0A;sQ(q!*c%SyJ6ANo)t=jMAgQ*r;XrEb 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 From f6deb94ad517cd8a8260c39daf3a49648e50ca2c Mon Sep 17 00:00:00 2001 From: skuzzis <andreieurt@gmail.com> Date: Tue, 22 Apr 2025 20:36:26 +0300 Subject: [PATCH 2/3] update(src): New Files --- .editorconfig | 75 + .github/FUNDING.yml | 3 + .github/workflows/builder.yml | 273 + .github/workflows/cleanup.yml | 19 + .gitignore | 5 + .gitmodules | 28 + .vscode/c_cpp_properties.json | 49 + .vscode/settings.json | 99 + AMBuildScript | 318 + AMBuilder | 339 + CHANGELOG.md | 74 + LICENSE | 229 + PackageScript | 100 + README-RU.md | 89 + README-UA.md | 89 + README.md | 89 + configure.py | 46 + plugin_files/bin/scripting/0_core.js | 11 + plugin_files/bin/scripting/0_core.lua | 11 + plugin_files/bin/scripting/0_events.js | 76 + plugin_files/bin/scripting/0_events.lua | 65 + plugin_files/bin/scripting/0_sdk.js | 13 + plugin_files/bin/scripting/0_sdk.lua | 23 + plugin_files/bin/scripting/1_database.js | 21 + plugin_files/bin/scripting/1_database.lua | 21 + plugin_files/bin/scripting/1_entity.js | 14 + plugin_files/bin/scripting/1_entity.lua | 18 + plugin_files/bin/scripting/1_exports.js | 39 + plugin_files/bin/scripting/1_exports.lua | 53 + plugin_files/bin/scripting/1_hooks.js | 97 + plugin_files/bin/scripting/1_hooks.lua | 93 + plugin_files/bin/scripting/1_timers.js | 66 + plugin_files/bin/scripting/1_timers.lua | 68 + plugin_files/bin/scripting/1_utils.js | 178 + plugin_files/bin/scripting/1_utils.lua | 268 + plugin_files/bin/scripting/serpent.lua | 181 + plugin_files/configs/chat.example.json | 18 + plugin_files/configs/core.example.json | 78 + plugin_files/configs/databases.example.json | 18 + plugin_files/configs/plugins/.gitignore | 0 .../cs2/blocked_fields_by_guidelines.json | 32 + plugin_files/gamedata/cs2/core/offsets.json | 54 + plugin_files/gamedata/cs2/core/patches.json | 22 + .../gamedata/cs2/core/signatures.json | 132 + plugin_files/gamedata/cs2/gameevents.json | 273 + plugin_files/gamedata/cs2/sdk.json | 38412 ++++++++++++++++ plugin_files/gamedata/cs2/sdk_types.json | 2933 ++ plugin_files/logs/.gitignore | 0 plugin_files/logs/plugins/.gitignore | 0 plugin_files/plugins/.gitignore | 1 + plugin_files/translations/.gitignore | 0 .../translations/translation.core.json | 92 + protobufs/cs2/clientmessages.proto | 53 + protobufs/cs2/cs_gameevents.proto | 35 + protobufs/cs2/cs_usercmd.proto | 42 + protobufs/cs2/cstrike15_gcmessages.proto | 1505 + protobufs/cs2/cstrike15_usermessages.proto | 613 + protobufs/cs2/engine_gcmessages.proto | 14 + protobufs/cs2/gcsdk_gcmessages.proto | 325 + protobufs/cs2/netmessages.proto | 710 + protobufs/cs2/network_connection.proto | 130 + protobufs/cs2/networkbasetypes.proto | 241 + .../cs2/networksystem_protomessages.proto | 19 + protobufs/cs2/steammessages.proto | 45 + protobufs/cs2/te.proto | 262 + protobufs/cs2/usercmd.proto | 39 + protobufs/cs2/usermessages.proto | 812 + setup.ps1 | 14 + setup.sh | 18 + src/core/commands/chat.cpp | 34 + src/core/commands/cmds.cpp | 29 + src/core/commands/commands.h | 47 + src/core/commands/config.cpp | 34 + src/core/commands/core.cpp | 51 + src/core/commands/credits.cpp | 7 + src/core/commands/cvars.cpp | 31 + src/core/commands/exts.cpp | 80 + src/core/commands/help.cpp | 23 + src/core/commands/list.cpp | 18 + src/core/commands/plugins.cpp | 176 + src/core/commands/resmon.cpp | 243 + src/core/commands/status.cpp | 44 + src/core/commands/translations.cpp | 33 + src/core/commands/utils.cpp | 24 + src/core/commands/version.cpp | 12 + src/core/configuration/setup.cpp | 11 + src/core/configuration/setup.h | 6 + src/core/console/console.cpp | 32 + src/core/console/console.h | 6 + src/core/entrypoint.cpp | 412 + src/core/entrypoint.h | 62 + src/engine/convars/manager.cpp | 322 + src/engine/convars/manager.h | 54 + src/engine/convars/query.cpp | 107 + src/engine/convars/query.h | 20 + src/engine/gameevents/gameevents.cpp | 223 + src/engine/gameevents/gameevents.h | 33 + src/engine/precacher/game_system.cpp | 49 + src/engine/precacher/game_system.h | 46 + src/engine/precacher/precacher.cpp | 34 + src/engine/precacher/precacher.h | 26 + src/engine/vgui/screentext.cpp | 193 + src/engine/vgui/screentext.h | 41 + src/engine/vgui/vgui.cpp | 140 + src/engine/vgui/vgui.h | 38 + src/engine/voicemanager/manager.cpp | 114 + src/engine/voicemanager/manager.h | 27 + src/entities/listener.cpp | 50 + src/entities/system.cpp | 71 + src/entities/system.h | 47 + src/extensions/extension.cpp | 119 + src/extensions/extension.h | 36 + src/extensions/manager.cpp | 93 + src/extensions/manager.h | 30 + src/filesystem/files/files.cpp | 217 + src/filesystem/files/files.h | 31 + src/filesystem/logs/log.cpp | 39 + src/filesystem/logs/log.h | 24 + src/filesystem/logs/logger.cpp | 36 + src/filesystem/logs/logger.h | 23 + src/memory/encoders/json.cpp | 48 + src/memory/encoders/json.h | 14 + src/memory/gamedata/gamedata.cpp | 315 + src/memory/gamedata/gamedata.h | 42 + src/memory/hooks/functions.cpp | 164 + src/memory/hooks/functions.h | 50 + src/memory/hooks/manager.cpp | 113 + src/memory/hooks/manager.h | 25 + src/memory/hooks/vfunctions.cpp | 147 + src/memory/hooks/vfunctions.h | 53 + src/memory/virtual/virtual.h | 12 + src/network/database/DBDriver.h | 19 + src/network/database/DatabaseManager.cpp | 89 + src/network/database/DatabaseManager.h | 20 + src/network/database/IDatabase.h | 41 + src/network/usermessages/usermessage.cpp | 950 + src/network/usermessages/usermessage.h | 132 + src/network/usermessages/usermessages.cpp | 57 + src/network/usermessages/usermessages.h | 15 + src/plugins/manager.cpp | 220 + src/plugins/manager.h | 47 + src/plugins/object.cpp | 381 + src/plugins/object.h | 66 + src/scripting/core.cpp | 83 + src/scripting/core.h | 37 + src/scripting/engine/convars.cpp | 139 + src/scripting/engine/entities.cpp | 26 + src/scripting/engine/events.cpp | 202 + src/scripting/engine/gameevents.cpp | 137 + src/scripting/engine/precacher.cpp | 15 + src/scripting/engine/server.cpp | 75 + src/scripting/engine/vgui.cpp | 102 + src/scripting/entities/weapons.cpp | 392 + src/scripting/filesystem/files.cpp | 102 + src/scripting/filesystem/logger.cpp | 26 + src/scripting/memory/hooks.cpp | 519 + .../memory/keyvalues/centitykeyvalues.cpp | 254 + src/scripting/memory/memory.cpp | 377 + src/scripting/network/database.cpp | 145 + src/scripting/network/usermessage.cpp | 618 + src/scripting/player/manager.cpp | 34 + src/scripting/player/player.cpp | 476 + src/scripting/sdk/baseclasses.cpp | 576 + src/scripting/sdk/chandle.cpp | 62 + src/scripting/sdk/checktransmit.cpp | 86 + src/scripting/sdk/coretypes.cpp | 296 + src/scripting/sdk/schema.cpp | 345 + src/scripting/sdk/schema_access.cpp | 793 + src/scripting/sdk/types.cpp | 47 + src/scripting/server/commands.cpp | 77 + src/scripting/server/configuration.cpp | 140 + src/scripting/server/menus.cpp | 36 + src/scripting/server/translations.cpp | 9 + src/scripting/server/utils.cpp | 148 + src/scripting/stack.cpp | 209 + src/scripting/stack.h | 215 + src/sdk/access.cpp | 144 + src/sdk/access.h | 110 + src/sdk/components/CPlayerPawnComponent.h | 15 + src/sdk/components/CServerSideClient.h | 62 + src/sdk/components/CSingleRecipientFilter.h | 102 + src/sdk/components/CTakeDamageInfo.h | 128 + src/sdk/components/EmitSound_t.h | 73 + src/sdk/components/EntityCheckTransmit.h | 21 + src/sdk/game.cpp | 25 + src/sdk/game.h | 19 + src/sdk/schema.cpp | 168 + src/sdk/schema.h | 82 + src/server/chat/chat.cpp | 185 + src/server/chat/chat.h | 23 + src/server/commands/command.cpp | 50 + src/server/commands/command.h | 22 + src/server/commands/manager.cpp | 265 + src/server/commands/manager.h | 39 + src/server/configuration/configuration.cpp | 676 + src/server/configuration/configuration.h | 61 + src/server/menus/Menu.h | 29 + src/server/menus/MenuManager.cpp | 77 + src/server/menus/MenuManager.h | 27 + src/server/menus/MenuRenderer.cpp | 264 + src/server/menus/MenuRenderer.h | 48 + src/server/menus/kinds/CenterMenu.cpp | 149 + src/server/menus/kinds/CenterMenu.h | 36 + src/server/menus/kinds/ScreenMenu.cpp | 201 + src/server/menus/kinds/ScreenMenu.h | 36 + src/server/player/manager.cpp | 154 + src/server/player/manager.h | 36 + src/server/player/player.cpp | 513 + src/server/player/player.h | 96 + src/server/translations/translation.cpp | 17 + src/server/translations/translation.h | 17 + src/server/translations/translations.cpp | 122 + src/server/translations/translations.h | 20 + src/tools/crashreporter/callstack.cpp | 37 + src/tools/crashreporter/callstack.h | 21 + src/tools/crashreporter/crashreporter.cpp | 256 + src/tools/crashreporter/crashreporter.h | 7 + src/tools/resourcemonitor/monitor.cpp | 56 + src/tools/resourcemonitor/monitor.h | 30 + src/types/EventResult.h | 11 + src/types/GamePhase.h | 15 + src/types/LogType.h | 9 + src/types/PluginState.h | 10 + src/utils/common.h | 56 + src/utils/memory.h | 8 + src/utils/memory_linux.cpp | 49 + src/utils/memory_win.cpp | 43 + src/utils/platform/platform.h | 39 + src/utils/platform/platform_linux.cpp | 218 + src/utils/platform/platform_win.cpp | 10 + src/utils/utils.cpp | 303 + src/utils/utils.h | 59 + .../bzip2/linuxsteamrt64/include/bz_version.h | 1 + vendor/bzip2/linuxsteamrt64/include/bzlib.h | 287 + .../linuxsteamrt64/include/bzlib_private.h | 507 + vendor/bzip2/linuxsteamrt64/lib/libbz2.a | Bin 0 -> 370978 bytes vendor/bzip2/win64/include/bz_version.h | 1 + vendor/bzip2/win64/include/bzlib.h | 287 + vendor/bzip2/win64/include/bzlib_private.h | 507 + vendor/bzip2/win64/lib/bz2.lib | Bin 0 -> 123000 bytes .../linuxsteamrt64/include/dyncall/dyncall.h | 151 + .../include/dyncall/dyncall_alloc.h | 41 + .../include/dyncall/dyncall_callf.h | 56 + .../include/dyncall/dyncall_callvm.h | 89 + .../dyncall/dyncall_callvm_arm32_arm.h | 55 + .../dyncall/dyncall_callvm_arm32_arm_armhf.h | 59 + .../dyncall/dyncall_callvm_arm32_thumb.h | 55 + .../include/dyncall/dyncall_callvm_arm64.h | 46 + .../include/dyncall/dyncall_callvm_mips.h | 38 + .../dyncall/dyncall_callvm_mips_eabi.h | 73 + .../include/dyncall/dyncall_callvm_mips_n32.h | 77 + .../include/dyncall/dyncall_callvm_mips_n64.h | 79 + .../include/dyncall/dyncall_callvm_mips_o32.h | 74 + .../include/dyncall/dyncall_callvm_ppc32.h | 64 + .../include/dyncall/dyncall_callvm_ppc64.h | 64 + .../include/dyncall/dyncall_callvm_sparc.h | 43 + .../include/dyncall/dyncall_callvm_sparc64.h | 42 + .../include/dyncall/dyncall_callvm_x64.h | 108 + .../include/dyncall/dyncall_callvm_x86.h | 59 + .../include/dyncall/dyncall_config.h | 47 + .../include/dyncall/dyncall_macros.h | 301 + .../include/dyncall/dyncall_signature.h | 79 + .../include/dyncall/dyncall_struct.h | 70 + .../include/dyncall/dyncall_types.h | 74 + .../include/dyncall/dyncall_utils.h | 39 + .../include/dyncall/dyncall_value.h | 98 + .../include/dyncall/dyncall_vector.h | 58 + .../dyncall/linuxsteamrt64/lib/libdyncall_s.a | Bin 0 -> 39450 bytes .../dyncall/win64/include/dyncall/dyncall.h | 151 + .../win64/include/dyncall/dyncall_alloc.h | 41 + .../win64/include/dyncall/dyncall_callf.h | 56 + .../win64/include/dyncall/dyncall_callvm.h | 89 + .../dyncall/dyncall_callvm_arm32_arm.h | 55 + .../dyncall/dyncall_callvm_arm32_arm_armhf.h | 59 + .../dyncall/dyncall_callvm_arm32_thumb.h | 55 + .../include/dyncall/dyncall_callvm_arm64.h | 46 + .../include/dyncall/dyncall_callvm_mips.h | 38 + .../dyncall/dyncall_callvm_mips_eabi.h | 73 + .../include/dyncall/dyncall_callvm_mips_n32.h | 77 + .../include/dyncall/dyncall_callvm_mips_n64.h | 79 + .../include/dyncall/dyncall_callvm_mips_o32.h | 74 + .../include/dyncall/dyncall_callvm_ppc32.h | 64 + .../include/dyncall/dyncall_callvm_ppc64.h | 64 + .../include/dyncall/dyncall_callvm_sparc.h | 43 + .../include/dyncall/dyncall_callvm_sparc64.h | 42 + .../include/dyncall/dyncall_callvm_x64.h | 108 + .../include/dyncall/dyncall_callvm_x86.h | 59 + .../win64/include/dyncall/dyncall_config.h | 47 + .../win64/include/dyncall/dyncall_macros.h | 301 + .../win64/include/dyncall/dyncall_signature.h | 79 + .../win64/include/dyncall/dyncall_struct.h | 70 + .../win64/include/dyncall/dyncall_types.h | 74 + .../win64/include/dyncall/dyncall_utils.h | 39 + .../win64/include/dyncall/dyncall_value.h | 98 + .../win64/include/dyncall/dyncall_vector.h | 58 + vendor/dyncall/win64/lib/dyncall_s.lib | Bin 0 -> 35054 bytes .../include/dynohook/convention.h | 242 + .../dynohook/conventions/x64_systemV_call.h | 45 + .../dynohook/conventions/x64_windows_call.h | 40 + .../dynohook/conventions/x86_gcc_cdecl.h | 7 + .../dynohook/conventions/x86_gcc_thiscall.h | 8 + .../dynohook/conventions/x86_ms_cdecl.h | 43 + .../dynohook/conventions/x86_ms_fastcall.h | 32 + .../dynohook/conventions/x86_ms_stdcall.h | 34 + .../dynohook/conventions/x86_ms_thiscall.h | 33 + .../linuxsteamrt64/include/dynohook/core.h | 126 + .../include/dynohook/detours/detour.h | 150 + .../include/dynohook/detours/nat_detour.h | 15 + .../include/dynohook/detours/x64_detour.h | 56 + .../include/dynohook/detours/x86_detour.h | 18 + .../include/dynohook/disassembler.h | 60 + .../include/dynohook/dynohook_export.h | 42 + .../include/dynohook/fb_allocator.h | 87 + .../include/dynohook/function_traits.h | 100 + .../linuxsteamrt64/include/dynohook/helpers.h | 17 + .../linuxsteamrt64/include/dynohook/hook.h | 100 + .../linuxsteamrt64/include/dynohook/ihook.h | 108 + .../include/dynohook/imanager.h | 122 + .../include/dynohook/instruction.h | 283 + .../linuxsteamrt64/include/dynohook/log.h | 63 + .../linuxsteamrt64/include/dynohook/manager.h | 42 + .../include/dynohook/mem_accessor.h | 77 + .../include/dynohook/mem_protector.h | 37 + .../include/dynohook/nat_hook.h | 17 + .../linuxsteamrt64/include/dynohook/os.h | 47 + .../include/dynohook/platform.h | 237 + .../linuxsteamrt64/include/dynohook/prot.h | 33 + .../include/dynohook/range_allocator.h | 30 + .../include/dynohook/registers.h | 383 + .../include/dynohook/tests/effect_tracker.h | 32 + .../include/dynohook/tests/stack_canary.h | 16 + .../include/dynohook/virtuals/vhook.h | 31 + .../include/dynohook/virtuals/vtable.h | 48 + .../include/dynohook/x64_hook.h | 23 + .../include/dynohook/x86_hook.h | 26 + vendor/dynohook/linuxsteamrt64/lib/libZydis.a | Bin 0 -> 888286 bytes .../dynohook/linuxsteamrt64/lib/libasmjit.a | Bin 0 -> 920998 bytes vendor/dynohook/linuxsteamrt64/lib/libasmtk.a | Bin 0 -> 25106 bytes .../dynohook/linuxsteamrt64/lib/libdynohook.a | Bin 0 -> 5300900 bytes .../win64/include/dynohook/convention.h | 242 + .../dynohook/conventions/x64_systemV_call.h | 45 + .../dynohook/conventions/x64_windows_call.h | 40 + .../dynohook/conventions/x86_gcc_cdecl.h | 7 + .../dynohook/conventions/x86_gcc_thiscall.h | 8 + .../dynohook/conventions/x86_ms_cdecl.h | 43 + .../dynohook/conventions/x86_ms_fastcall.h | 32 + .../dynohook/conventions/x86_ms_stdcall.h | 34 + .../dynohook/conventions/x86_ms_thiscall.h | 33 + vendor/dynohook/win64/include/dynohook/core.h | 126 + .../win64/include/dynohook/detours/detour.h | 150 + .../include/dynohook/detours/nat_detour.h | 15 + .../include/dynohook/detours/x64_detour.h | 56 + .../include/dynohook/detours/x86_detour.h | 18 + .../win64/include/dynohook/disassembler.h | 60 + .../win64/include/dynohook/dynohook_export.h | 43 + .../win64/include/dynohook/fb_allocator.h | 87 + .../win64/include/dynohook/function_traits.h | 100 + .../dynohook/win64/include/dynohook/helpers.h | 17 + vendor/dynohook/win64/include/dynohook/hook.h | 100 + .../dynohook/win64/include/dynohook/ihook.h | 108 + .../win64/include/dynohook/imanager.h | 122 + .../win64/include/dynohook/instruction.h | 283 + vendor/dynohook/win64/include/dynohook/log.h | 63 + .../dynohook/win64/include/dynohook/manager.h | 42 + .../win64/include/dynohook/mem_accessor.h | 77 + .../win64/include/dynohook/mem_protector.h | 37 + .../win64/include/dynohook/nat_hook.h | 17 + vendor/dynohook/win64/include/dynohook/os.h | 47 + .../win64/include/dynohook/platform.h | 237 + vendor/dynohook/win64/include/dynohook/prot.h | 33 + .../win64/include/dynohook/range_allocator.h | 30 + .../win64/include/dynohook/registers.h | 383 + .../include/dynohook/tests/effect_tracker.h | 32 + .../include/dynohook/tests/stack_canary.h | 16 + .../win64/include/dynohook/virtuals/vhook.h | 31 + .../win64/include/dynohook/virtuals/vtable.h | 48 + .../win64/include/dynohook/x64_hook.h | 23 + .../win64/include/dynohook/x86_hook.h | 26 + vendor/dynohook/win64/lib/Zydis.lib | Bin 0 -> 1165120 bytes vendor/dynohook/win64/lib/asmjit.lib | Bin 0 -> 1166964 bytes vendor/dynohook/win64/lib/asmtk.lib | Bin 0 -> 31566 bytes vendor/dynohook/win64/lib/dynohook.lib | Bin 0 -> 2399204 bytes vendor/rapidjson/json.hpp | 16726 +++++++ vendor/texttable/TextTable.h | 222 + 384 files changed, 97484 insertions(+) create mode 100644 .editorconfig create mode 100644 .github/FUNDING.yml create mode 100644 .github/workflows/builder.yml create mode 100644 .github/workflows/cleanup.yml create mode 100644 .gitignore create mode 100644 .gitmodules create mode 100644 .vscode/c_cpp_properties.json create mode 100644 .vscode/settings.json create mode 100644 AMBuildScript create mode 100644 AMBuilder create mode 100644 CHANGELOG.md create mode 100644 LICENSE create mode 100644 PackageScript create mode 100644 README-RU.md create mode 100644 README-UA.md create mode 100644 README.md create mode 100644 configure.py create mode 100644 plugin_files/bin/scripting/0_core.js create mode 100644 plugin_files/bin/scripting/0_core.lua create mode 100644 plugin_files/bin/scripting/0_events.js create mode 100644 plugin_files/bin/scripting/0_events.lua create mode 100644 plugin_files/bin/scripting/0_sdk.js create mode 100644 plugin_files/bin/scripting/0_sdk.lua create mode 100644 plugin_files/bin/scripting/1_database.js create mode 100644 plugin_files/bin/scripting/1_database.lua create mode 100644 plugin_files/bin/scripting/1_entity.js create mode 100644 plugin_files/bin/scripting/1_entity.lua create mode 100644 plugin_files/bin/scripting/1_exports.js create mode 100644 plugin_files/bin/scripting/1_exports.lua create mode 100644 plugin_files/bin/scripting/1_hooks.js create mode 100644 plugin_files/bin/scripting/1_hooks.lua create mode 100644 plugin_files/bin/scripting/1_timers.js create mode 100644 plugin_files/bin/scripting/1_timers.lua create mode 100644 plugin_files/bin/scripting/1_utils.js create mode 100644 plugin_files/bin/scripting/1_utils.lua create mode 100644 plugin_files/bin/scripting/serpent.lua create mode 100644 plugin_files/configs/chat.example.json create mode 100644 plugin_files/configs/core.example.json create mode 100644 plugin_files/configs/databases.example.json create mode 100644 plugin_files/configs/plugins/.gitignore create mode 100644 plugin_files/gamedata/cs2/blocked_fields_by_guidelines.json create mode 100644 plugin_files/gamedata/cs2/core/offsets.json create mode 100644 plugin_files/gamedata/cs2/core/patches.json create mode 100644 plugin_files/gamedata/cs2/core/signatures.json create mode 100644 plugin_files/gamedata/cs2/gameevents.json create mode 100644 plugin_files/gamedata/cs2/sdk.json create mode 100644 plugin_files/gamedata/cs2/sdk_types.json create mode 100644 plugin_files/logs/.gitignore create mode 100644 plugin_files/logs/plugins/.gitignore create mode 100644 plugin_files/plugins/.gitignore create mode 100644 plugin_files/translations/.gitignore create mode 100644 plugin_files/translations/translation.core.json create mode 100644 protobufs/cs2/clientmessages.proto create mode 100644 protobufs/cs2/cs_gameevents.proto create mode 100644 protobufs/cs2/cs_usercmd.proto create mode 100644 protobufs/cs2/cstrike15_gcmessages.proto create mode 100644 protobufs/cs2/cstrike15_usermessages.proto create mode 100644 protobufs/cs2/engine_gcmessages.proto create mode 100644 protobufs/cs2/gcsdk_gcmessages.proto create mode 100644 protobufs/cs2/netmessages.proto create mode 100644 protobufs/cs2/network_connection.proto create mode 100644 protobufs/cs2/networkbasetypes.proto create mode 100644 protobufs/cs2/networksystem_protomessages.proto create mode 100644 protobufs/cs2/steammessages.proto create mode 100644 protobufs/cs2/te.proto create mode 100644 protobufs/cs2/usercmd.proto create mode 100644 protobufs/cs2/usermessages.proto create mode 100644 setup.ps1 create mode 100644 setup.sh create mode 100644 src/core/commands/chat.cpp create mode 100644 src/core/commands/cmds.cpp create mode 100644 src/core/commands/commands.h create mode 100644 src/core/commands/config.cpp create mode 100644 src/core/commands/core.cpp create mode 100644 src/core/commands/credits.cpp create mode 100644 src/core/commands/cvars.cpp create mode 100644 src/core/commands/exts.cpp create mode 100644 src/core/commands/help.cpp create mode 100644 src/core/commands/list.cpp create mode 100644 src/core/commands/plugins.cpp create mode 100644 src/core/commands/resmon.cpp create mode 100644 src/core/commands/status.cpp create mode 100644 src/core/commands/translations.cpp create mode 100644 src/core/commands/utils.cpp create mode 100644 src/core/commands/version.cpp create mode 100644 src/core/configuration/setup.cpp create mode 100644 src/core/configuration/setup.h create mode 100644 src/core/console/console.cpp create mode 100644 src/core/console/console.h create mode 100644 src/core/entrypoint.cpp create mode 100644 src/core/entrypoint.h create mode 100644 src/engine/convars/manager.cpp create mode 100644 src/engine/convars/manager.h create mode 100644 src/engine/convars/query.cpp create mode 100644 src/engine/convars/query.h create mode 100644 src/engine/gameevents/gameevents.cpp create mode 100644 src/engine/gameevents/gameevents.h create mode 100644 src/engine/precacher/game_system.cpp create mode 100644 src/engine/precacher/game_system.h create mode 100644 src/engine/precacher/precacher.cpp create mode 100644 src/engine/precacher/precacher.h create mode 100644 src/engine/vgui/screentext.cpp create mode 100644 src/engine/vgui/screentext.h create mode 100644 src/engine/vgui/vgui.cpp create mode 100644 src/engine/vgui/vgui.h create mode 100644 src/engine/voicemanager/manager.cpp create mode 100644 src/engine/voicemanager/manager.h create mode 100644 src/entities/listener.cpp create mode 100644 src/entities/system.cpp create mode 100644 src/entities/system.h create mode 100644 src/extensions/extension.cpp create mode 100644 src/extensions/extension.h create mode 100644 src/extensions/manager.cpp create mode 100644 src/extensions/manager.h create mode 100644 src/filesystem/files/files.cpp create mode 100644 src/filesystem/files/files.h create mode 100644 src/filesystem/logs/log.cpp create mode 100644 src/filesystem/logs/log.h create mode 100644 src/filesystem/logs/logger.cpp create mode 100644 src/filesystem/logs/logger.h create mode 100644 src/memory/encoders/json.cpp create mode 100644 src/memory/encoders/json.h create mode 100644 src/memory/gamedata/gamedata.cpp create mode 100644 src/memory/gamedata/gamedata.h create mode 100644 src/memory/hooks/functions.cpp create mode 100644 src/memory/hooks/functions.h create mode 100644 src/memory/hooks/manager.cpp create mode 100644 src/memory/hooks/manager.h create mode 100644 src/memory/hooks/vfunctions.cpp create mode 100644 src/memory/hooks/vfunctions.h create mode 100644 src/memory/virtual/virtual.h create mode 100644 src/network/database/DBDriver.h create mode 100644 src/network/database/DatabaseManager.cpp create mode 100644 src/network/database/DatabaseManager.h create mode 100644 src/network/database/IDatabase.h create mode 100644 src/network/usermessages/usermessage.cpp create mode 100644 src/network/usermessages/usermessage.h create mode 100644 src/network/usermessages/usermessages.cpp create mode 100644 src/network/usermessages/usermessages.h create mode 100644 src/plugins/manager.cpp create mode 100644 src/plugins/manager.h create mode 100644 src/plugins/object.cpp create mode 100644 src/plugins/object.h create mode 100644 src/scripting/core.cpp create mode 100644 src/scripting/core.h create mode 100644 src/scripting/engine/convars.cpp create mode 100644 src/scripting/engine/entities.cpp create mode 100644 src/scripting/engine/events.cpp create mode 100644 src/scripting/engine/gameevents.cpp create mode 100644 src/scripting/engine/precacher.cpp create mode 100644 src/scripting/engine/server.cpp create mode 100644 src/scripting/engine/vgui.cpp create mode 100644 src/scripting/entities/weapons.cpp create mode 100644 src/scripting/filesystem/files.cpp create mode 100644 src/scripting/filesystem/logger.cpp create mode 100644 src/scripting/memory/hooks.cpp create mode 100644 src/scripting/memory/keyvalues/centitykeyvalues.cpp create mode 100644 src/scripting/memory/memory.cpp create mode 100644 src/scripting/network/database.cpp create mode 100644 src/scripting/network/usermessage.cpp create mode 100644 src/scripting/player/manager.cpp create mode 100644 src/scripting/player/player.cpp create mode 100644 src/scripting/sdk/baseclasses.cpp create mode 100644 src/scripting/sdk/chandle.cpp create mode 100644 src/scripting/sdk/checktransmit.cpp create mode 100644 src/scripting/sdk/coretypes.cpp create mode 100644 src/scripting/sdk/schema.cpp create mode 100644 src/scripting/sdk/schema_access.cpp create mode 100644 src/scripting/sdk/types.cpp create mode 100644 src/scripting/server/commands.cpp create mode 100644 src/scripting/server/configuration.cpp create mode 100644 src/scripting/server/menus.cpp create mode 100644 src/scripting/server/translations.cpp create mode 100644 src/scripting/server/utils.cpp create mode 100644 src/scripting/stack.cpp create mode 100644 src/scripting/stack.h create mode 100644 src/sdk/access.cpp create mode 100644 src/sdk/access.h create mode 100644 src/sdk/components/CPlayerPawnComponent.h create mode 100644 src/sdk/components/CServerSideClient.h create mode 100644 src/sdk/components/CSingleRecipientFilter.h create mode 100644 src/sdk/components/CTakeDamageInfo.h create mode 100644 src/sdk/components/EmitSound_t.h create mode 100644 src/sdk/components/EntityCheckTransmit.h create mode 100644 src/sdk/game.cpp create mode 100644 src/sdk/game.h create mode 100644 src/sdk/schema.cpp create mode 100644 src/sdk/schema.h create mode 100644 src/server/chat/chat.cpp create mode 100644 src/server/chat/chat.h create mode 100644 src/server/commands/command.cpp create mode 100644 src/server/commands/command.h create mode 100644 src/server/commands/manager.cpp create mode 100644 src/server/commands/manager.h create mode 100644 src/server/configuration/configuration.cpp create mode 100644 src/server/configuration/configuration.h create mode 100644 src/server/menus/Menu.h create mode 100644 src/server/menus/MenuManager.cpp create mode 100644 src/server/menus/MenuManager.h create mode 100644 src/server/menus/MenuRenderer.cpp create mode 100644 src/server/menus/MenuRenderer.h create mode 100644 src/server/menus/kinds/CenterMenu.cpp create mode 100644 src/server/menus/kinds/CenterMenu.h create mode 100644 src/server/menus/kinds/ScreenMenu.cpp create mode 100644 src/server/menus/kinds/ScreenMenu.h create mode 100644 src/server/player/manager.cpp create mode 100644 src/server/player/manager.h create mode 100644 src/server/player/player.cpp create mode 100644 src/server/player/player.h create mode 100644 src/server/translations/translation.cpp create mode 100644 src/server/translations/translation.h create mode 100644 src/server/translations/translations.cpp create mode 100644 src/server/translations/translations.h create mode 100644 src/tools/crashreporter/callstack.cpp create mode 100644 src/tools/crashreporter/callstack.h create mode 100644 src/tools/crashreporter/crashreporter.cpp create mode 100644 src/tools/crashreporter/crashreporter.h create mode 100644 src/tools/resourcemonitor/monitor.cpp create mode 100644 src/tools/resourcemonitor/monitor.h create mode 100644 src/types/EventResult.h create mode 100644 src/types/GamePhase.h create mode 100644 src/types/LogType.h create mode 100644 src/types/PluginState.h create mode 100644 src/utils/common.h create mode 100644 src/utils/memory.h create mode 100644 src/utils/memory_linux.cpp create mode 100644 src/utils/memory_win.cpp create mode 100644 src/utils/platform/platform.h create mode 100644 src/utils/platform/platform_linux.cpp create mode 100644 src/utils/platform/platform_win.cpp create mode 100644 src/utils/utils.cpp create mode 100644 src/utils/utils.h create mode 100644 vendor/bzip2/linuxsteamrt64/include/bz_version.h create mode 100644 vendor/bzip2/linuxsteamrt64/include/bzlib.h create mode 100644 vendor/bzip2/linuxsteamrt64/include/bzlib_private.h create mode 100644 vendor/bzip2/linuxsteamrt64/lib/libbz2.a create mode 100644 vendor/bzip2/win64/include/bz_version.h create mode 100644 vendor/bzip2/win64/include/bzlib.h create mode 100644 vendor/bzip2/win64/include/bzlib_private.h create mode 100644 vendor/bzip2/win64/lib/bz2.lib create mode 100644 vendor/dyncall/linuxsteamrt64/include/dyncall/dyncall.h create mode 100644 vendor/dyncall/linuxsteamrt64/include/dyncall/dyncall_alloc.h create mode 100644 vendor/dyncall/linuxsteamrt64/include/dyncall/dyncall_callf.h create mode 100644 vendor/dyncall/linuxsteamrt64/include/dyncall/dyncall_callvm.h create mode 100644 vendor/dyncall/linuxsteamrt64/include/dyncall/dyncall_callvm_arm32_arm.h create mode 100644 vendor/dyncall/linuxsteamrt64/include/dyncall/dyncall_callvm_arm32_arm_armhf.h create mode 100644 vendor/dyncall/linuxsteamrt64/include/dyncall/dyncall_callvm_arm32_thumb.h create mode 100644 vendor/dyncall/linuxsteamrt64/include/dyncall/dyncall_callvm_arm64.h create mode 100644 vendor/dyncall/linuxsteamrt64/include/dyncall/dyncall_callvm_mips.h create mode 100644 vendor/dyncall/linuxsteamrt64/include/dyncall/dyncall_callvm_mips_eabi.h create mode 100644 vendor/dyncall/linuxsteamrt64/include/dyncall/dyncall_callvm_mips_n32.h create mode 100644 vendor/dyncall/linuxsteamrt64/include/dyncall/dyncall_callvm_mips_n64.h create mode 100644 vendor/dyncall/linuxsteamrt64/include/dyncall/dyncall_callvm_mips_o32.h create mode 100644 vendor/dyncall/linuxsteamrt64/include/dyncall/dyncall_callvm_ppc32.h create mode 100644 vendor/dyncall/linuxsteamrt64/include/dyncall/dyncall_callvm_ppc64.h create mode 100644 vendor/dyncall/linuxsteamrt64/include/dyncall/dyncall_callvm_sparc.h create mode 100644 vendor/dyncall/linuxsteamrt64/include/dyncall/dyncall_callvm_sparc64.h create mode 100644 vendor/dyncall/linuxsteamrt64/include/dyncall/dyncall_callvm_x64.h create mode 100644 vendor/dyncall/linuxsteamrt64/include/dyncall/dyncall_callvm_x86.h create mode 100644 vendor/dyncall/linuxsteamrt64/include/dyncall/dyncall_config.h create mode 100644 vendor/dyncall/linuxsteamrt64/include/dyncall/dyncall_macros.h create mode 100644 vendor/dyncall/linuxsteamrt64/include/dyncall/dyncall_signature.h create mode 100644 vendor/dyncall/linuxsteamrt64/include/dyncall/dyncall_struct.h create mode 100644 vendor/dyncall/linuxsteamrt64/include/dyncall/dyncall_types.h create mode 100644 vendor/dyncall/linuxsteamrt64/include/dyncall/dyncall_utils.h create mode 100644 vendor/dyncall/linuxsteamrt64/include/dyncall/dyncall_value.h create mode 100644 vendor/dyncall/linuxsteamrt64/include/dyncall/dyncall_vector.h create mode 100644 vendor/dyncall/linuxsteamrt64/lib/libdyncall_s.a create mode 100644 vendor/dyncall/win64/include/dyncall/dyncall.h create mode 100644 vendor/dyncall/win64/include/dyncall/dyncall_alloc.h create mode 100644 vendor/dyncall/win64/include/dyncall/dyncall_callf.h create mode 100644 vendor/dyncall/win64/include/dyncall/dyncall_callvm.h create mode 100644 vendor/dyncall/win64/include/dyncall/dyncall_callvm_arm32_arm.h create mode 100644 vendor/dyncall/win64/include/dyncall/dyncall_callvm_arm32_arm_armhf.h create mode 100644 vendor/dyncall/win64/include/dyncall/dyncall_callvm_arm32_thumb.h create mode 100644 vendor/dyncall/win64/include/dyncall/dyncall_callvm_arm64.h create mode 100644 vendor/dyncall/win64/include/dyncall/dyncall_callvm_mips.h create mode 100644 vendor/dyncall/win64/include/dyncall/dyncall_callvm_mips_eabi.h create mode 100644 vendor/dyncall/win64/include/dyncall/dyncall_callvm_mips_n32.h create mode 100644 vendor/dyncall/win64/include/dyncall/dyncall_callvm_mips_n64.h create mode 100644 vendor/dyncall/win64/include/dyncall/dyncall_callvm_mips_o32.h create mode 100644 vendor/dyncall/win64/include/dyncall/dyncall_callvm_ppc32.h create mode 100644 vendor/dyncall/win64/include/dyncall/dyncall_callvm_ppc64.h create mode 100644 vendor/dyncall/win64/include/dyncall/dyncall_callvm_sparc.h create mode 100644 vendor/dyncall/win64/include/dyncall/dyncall_callvm_sparc64.h create mode 100644 vendor/dyncall/win64/include/dyncall/dyncall_callvm_x64.h create mode 100644 vendor/dyncall/win64/include/dyncall/dyncall_callvm_x86.h create mode 100644 vendor/dyncall/win64/include/dyncall/dyncall_config.h create mode 100644 vendor/dyncall/win64/include/dyncall/dyncall_macros.h create mode 100644 vendor/dyncall/win64/include/dyncall/dyncall_signature.h create mode 100644 vendor/dyncall/win64/include/dyncall/dyncall_struct.h create mode 100644 vendor/dyncall/win64/include/dyncall/dyncall_types.h create mode 100644 vendor/dyncall/win64/include/dyncall/dyncall_utils.h create mode 100644 vendor/dyncall/win64/include/dyncall/dyncall_value.h create mode 100644 vendor/dyncall/win64/include/dyncall/dyncall_vector.h create mode 100644 vendor/dyncall/win64/lib/dyncall_s.lib create mode 100644 vendor/dynohook/linuxsteamrt64/include/dynohook/convention.h create mode 100644 vendor/dynohook/linuxsteamrt64/include/dynohook/conventions/x64_systemV_call.h create mode 100644 vendor/dynohook/linuxsteamrt64/include/dynohook/conventions/x64_windows_call.h create mode 100644 vendor/dynohook/linuxsteamrt64/include/dynohook/conventions/x86_gcc_cdecl.h create mode 100644 vendor/dynohook/linuxsteamrt64/include/dynohook/conventions/x86_gcc_thiscall.h create mode 100644 vendor/dynohook/linuxsteamrt64/include/dynohook/conventions/x86_ms_cdecl.h create mode 100644 vendor/dynohook/linuxsteamrt64/include/dynohook/conventions/x86_ms_fastcall.h create mode 100644 vendor/dynohook/linuxsteamrt64/include/dynohook/conventions/x86_ms_stdcall.h create mode 100644 vendor/dynohook/linuxsteamrt64/include/dynohook/conventions/x86_ms_thiscall.h create mode 100644 vendor/dynohook/linuxsteamrt64/include/dynohook/core.h create mode 100644 vendor/dynohook/linuxsteamrt64/include/dynohook/detours/detour.h create mode 100644 vendor/dynohook/linuxsteamrt64/include/dynohook/detours/nat_detour.h create mode 100644 vendor/dynohook/linuxsteamrt64/include/dynohook/detours/x64_detour.h create mode 100644 vendor/dynohook/linuxsteamrt64/include/dynohook/detours/x86_detour.h create mode 100644 vendor/dynohook/linuxsteamrt64/include/dynohook/disassembler.h create mode 100644 vendor/dynohook/linuxsteamrt64/include/dynohook/dynohook_export.h create mode 100644 vendor/dynohook/linuxsteamrt64/include/dynohook/fb_allocator.h create mode 100644 vendor/dynohook/linuxsteamrt64/include/dynohook/function_traits.h create mode 100644 vendor/dynohook/linuxsteamrt64/include/dynohook/helpers.h create mode 100644 vendor/dynohook/linuxsteamrt64/include/dynohook/hook.h create mode 100644 vendor/dynohook/linuxsteamrt64/include/dynohook/ihook.h create mode 100644 vendor/dynohook/linuxsteamrt64/include/dynohook/imanager.h create mode 100644 vendor/dynohook/linuxsteamrt64/include/dynohook/instruction.h create mode 100644 vendor/dynohook/linuxsteamrt64/include/dynohook/log.h create mode 100644 vendor/dynohook/linuxsteamrt64/include/dynohook/manager.h create mode 100644 vendor/dynohook/linuxsteamrt64/include/dynohook/mem_accessor.h create mode 100644 vendor/dynohook/linuxsteamrt64/include/dynohook/mem_protector.h create mode 100644 vendor/dynohook/linuxsteamrt64/include/dynohook/nat_hook.h create mode 100644 vendor/dynohook/linuxsteamrt64/include/dynohook/os.h create mode 100644 vendor/dynohook/linuxsteamrt64/include/dynohook/platform.h create mode 100644 vendor/dynohook/linuxsteamrt64/include/dynohook/prot.h create mode 100644 vendor/dynohook/linuxsteamrt64/include/dynohook/range_allocator.h create mode 100644 vendor/dynohook/linuxsteamrt64/include/dynohook/registers.h create mode 100644 vendor/dynohook/linuxsteamrt64/include/dynohook/tests/effect_tracker.h create mode 100644 vendor/dynohook/linuxsteamrt64/include/dynohook/tests/stack_canary.h create mode 100644 vendor/dynohook/linuxsteamrt64/include/dynohook/virtuals/vhook.h create mode 100644 vendor/dynohook/linuxsteamrt64/include/dynohook/virtuals/vtable.h create mode 100644 vendor/dynohook/linuxsteamrt64/include/dynohook/x64_hook.h create mode 100644 vendor/dynohook/linuxsteamrt64/include/dynohook/x86_hook.h create mode 100644 vendor/dynohook/linuxsteamrt64/lib/libZydis.a create mode 100644 vendor/dynohook/linuxsteamrt64/lib/libasmjit.a create mode 100644 vendor/dynohook/linuxsteamrt64/lib/libasmtk.a create mode 100644 vendor/dynohook/linuxsteamrt64/lib/libdynohook.a create mode 100644 vendor/dynohook/win64/include/dynohook/convention.h create mode 100644 vendor/dynohook/win64/include/dynohook/conventions/x64_systemV_call.h create mode 100644 vendor/dynohook/win64/include/dynohook/conventions/x64_windows_call.h create mode 100644 vendor/dynohook/win64/include/dynohook/conventions/x86_gcc_cdecl.h create mode 100644 vendor/dynohook/win64/include/dynohook/conventions/x86_gcc_thiscall.h create mode 100644 vendor/dynohook/win64/include/dynohook/conventions/x86_ms_cdecl.h create mode 100644 vendor/dynohook/win64/include/dynohook/conventions/x86_ms_fastcall.h create mode 100644 vendor/dynohook/win64/include/dynohook/conventions/x86_ms_stdcall.h create mode 100644 vendor/dynohook/win64/include/dynohook/conventions/x86_ms_thiscall.h create mode 100644 vendor/dynohook/win64/include/dynohook/core.h create mode 100644 vendor/dynohook/win64/include/dynohook/detours/detour.h create mode 100644 vendor/dynohook/win64/include/dynohook/detours/nat_detour.h create mode 100644 vendor/dynohook/win64/include/dynohook/detours/x64_detour.h create mode 100644 vendor/dynohook/win64/include/dynohook/detours/x86_detour.h create mode 100644 vendor/dynohook/win64/include/dynohook/disassembler.h create mode 100644 vendor/dynohook/win64/include/dynohook/dynohook_export.h create mode 100644 vendor/dynohook/win64/include/dynohook/fb_allocator.h create mode 100644 vendor/dynohook/win64/include/dynohook/function_traits.h create mode 100644 vendor/dynohook/win64/include/dynohook/helpers.h create mode 100644 vendor/dynohook/win64/include/dynohook/hook.h create mode 100644 vendor/dynohook/win64/include/dynohook/ihook.h create mode 100644 vendor/dynohook/win64/include/dynohook/imanager.h create mode 100644 vendor/dynohook/win64/include/dynohook/instruction.h create mode 100644 vendor/dynohook/win64/include/dynohook/log.h create mode 100644 vendor/dynohook/win64/include/dynohook/manager.h create mode 100644 vendor/dynohook/win64/include/dynohook/mem_accessor.h create mode 100644 vendor/dynohook/win64/include/dynohook/mem_protector.h create mode 100644 vendor/dynohook/win64/include/dynohook/nat_hook.h create mode 100644 vendor/dynohook/win64/include/dynohook/os.h create mode 100644 vendor/dynohook/win64/include/dynohook/platform.h create mode 100644 vendor/dynohook/win64/include/dynohook/prot.h create mode 100644 vendor/dynohook/win64/include/dynohook/range_allocator.h create mode 100644 vendor/dynohook/win64/include/dynohook/registers.h create mode 100644 vendor/dynohook/win64/include/dynohook/tests/effect_tracker.h create mode 100644 vendor/dynohook/win64/include/dynohook/tests/stack_canary.h create mode 100644 vendor/dynohook/win64/include/dynohook/virtuals/vhook.h create mode 100644 vendor/dynohook/win64/include/dynohook/virtuals/vtable.h create mode 100644 vendor/dynohook/win64/include/dynohook/x64_hook.h create mode 100644 vendor/dynohook/win64/include/dynohook/x86_hook.h create mode 100644 vendor/dynohook/win64/lib/Zydis.lib create mode 100644 vendor/dynohook/win64/lib/asmjit.lib create mode 100644 vendor/dynohook/win64/lib/asmtk.lib create mode 100644 vendor/dynohook/win64/lib/dynohook.lib create mode 100644 vendor/rapidjson/json.hpp create mode 100644 vendor/texttable/TextTable.h diff --git a/.editorconfig b/.editorconfig new file mode 100644 index 000000000..07149cbae --- /dev/null +++ b/.editorconfig @@ -0,0 +1,75 @@ +# Visual Studio generated .editorconfig file with C++ settings. +root = true + +[*.{c++,cc,cpp,cppm,cxx,h,h++,hh,hpp,hxx,inl,ipp,ixx,tlh,tli}] + +# Visual C++ Code Style settings + +cpp_generate_documentation_comments = xml + +# Visual C++ Formatting settings + +cpp_indent_braces = false +cpp_indent_multi_line_relative_to = innermost_parenthesis +cpp_indent_within_parentheses = indent +cpp_indent_preserve_within_parentheses = true +cpp_indent_case_contents = true +cpp_indent_case_labels = false +cpp_indent_case_contents_when_block = false +cpp_indent_lambda_braces_when_parameter = true +cpp_indent_goto_labels = one_left +cpp_indent_preprocessor = leftmost_column +cpp_indent_access_specifiers = false +cpp_indent_namespace_contents = true +cpp_indent_preserve_comments = false +cpp_new_line_before_open_brace_namespace = ignore +cpp_new_line_before_open_brace_type = ignore +cpp_new_line_before_open_brace_function = ignore +cpp_new_line_before_open_brace_block = ignore +cpp_new_line_before_open_brace_lambda = ignore +cpp_new_line_scope_braces_on_separate_lines = false +cpp_new_line_close_brace_same_line_empty_type = false +cpp_new_line_close_brace_same_line_empty_function = false +cpp_new_line_before_catch = true +cpp_new_line_before_else = true +cpp_new_line_before_while_in_do_while = false +cpp_space_before_function_open_parenthesis = remove +cpp_space_within_parameter_list_parentheses = false +cpp_space_between_empty_parameter_list_parentheses = false +cpp_space_after_keywords_in_control_flow_statements = true +cpp_space_within_control_flow_statement_parentheses = false +cpp_space_before_lambda_open_parenthesis = false +cpp_space_within_cast_parentheses = false +cpp_space_after_cast_close_parenthesis = false +cpp_space_within_expression_parentheses = false +cpp_space_before_block_open_brace = true +cpp_space_between_empty_braces = false +cpp_space_before_initializer_list_open_brace = false +cpp_space_within_initializer_list_braces = true +cpp_space_preserve_in_initializer_list = true +cpp_space_before_open_square_bracket = false +cpp_space_within_square_brackets = false +cpp_space_before_empty_square_brackets = false +cpp_space_between_empty_square_brackets = false +cpp_space_group_square_brackets = true +cpp_space_within_lambda_brackets = false +cpp_space_between_empty_lambda_brackets = false +cpp_space_before_comma = false +cpp_space_after_comma = true +cpp_space_remove_around_member_operators = true +cpp_space_before_inheritance_colon = true +cpp_space_before_constructor_colon = true +cpp_space_remove_before_semicolon = true +cpp_space_after_semicolon = true +cpp_space_remove_around_unary_operator = true +cpp_space_around_binary_operator = insert +cpp_space_around_assignment_operator = insert +cpp_space_pointer_reference_alignment = left +cpp_space_around_ternary_operator = insert +cpp_use_unreal_engine_macro_formatting = true +cpp_wrap_preserve_blocks = one_liners + +# Visual C++ Inlcude Cleanup settings + +cpp_include_cleanup_add_missing_error_tag_type = suggestion +cpp_include_cleanup_remove_unused_error_tag_type = dimmed diff --git a/.github/FUNDING.yml b/.github/FUNDING.yml new file mode 100644 index 000000000..9309163ca --- /dev/null +++ b/.github/FUNDING.yml @@ -0,0 +1,3 @@ +custom: https://www.tipeeestream.com/skuzzi/donation +buy_me_a_coffee: swiftlycs2 +github: swiftly-solution diff --git a/.github/workflows/builder.yml b/.github/workflows/builder.yml new file mode 100644 index 000000000..318189d9c --- /dev/null +++ b/.github/workflows/builder.yml @@ -0,0 +1,273 @@ +name: "Swiftly Compiler" + +on: + push: + branches: + - "**" + pull_request: + +jobs: + versioning: + permissions: + contents: write + runs-on: ubuntu-latest + container: + image: registry.gitlab.steamos.cloud/steamrt/sniper/sdk + outputs: + version: ${{ steps.version.outputs.version }} + steps: + - name: Packages + shell: bash + run: | + sudo apt update + sudo apt install -y curl jq + + - name: Generate version + uses: reecetech/version-increment@2024.4.4 + id: version + with: + release_branch: master + increment: minor + use_api: true + + extensions_build: + name: Extension Build + needs: versioning + runs-on: ${{ matrix.os }} + container: ${{ matrix.container }} + strategy: + fail-fast: false + matrix: + os: [ubuntu-latest, windows-latest] + extension: + [ + mysql-extension, + console-filter, + addons-extension, + http-extension, + ip-extension, + utils-extension, + sdktools-extension, + ] + include: + - os: ubuntu-latest + container: registry.gitlab.steamos.cloud/steamrt/sniper/sdk + steps: + - name: Checkout Extension + uses: actions/checkout@v4 + with: + repository: swiftly-solution/${{ matrix.extension }} + path: ${{ matrix.extension }} + submodules: recursive + + - name: Checkout AMBuild + uses: actions/checkout@v4 + with: + repository: alliedmodders/ambuild + path: ambuild + + - name: Install AMBuild + run: | + cd ambuild; python setup.py install; cd .. + + - name: Version + shell: bash + run: echo "VERSION=${{needs.versioning.outputs.version}}" >> $GITHUB_ENV + + - name: Build - Linux + if: matrix.os == 'ubuntu-latest' + working-directory: ${{ matrix.extension }} + shell: bash + run: | + sudo apt update + sudo apt install -y libreadline-dev libboost-all-dev + bash ./setup.sh + + - name: Build - Windows + if: matrix.os == 'windows-latest' + working-directory: ${{ matrix.extension }} + run: | + ./setup.ps1 + + - name: IP EXT - Linux + if: ${{ matrix.os == 'ubuntu-latest' && matrix.extension == 'ip-extension' }} + working-directory: ${{ matrix.extension }} + shell: bash + run: | + wget https://github.com/P3TERX/GeoLite.mmdb/raw/download/GeoLite2-City.mmdb -O build/package/addons/swiftly/data/GeoLite2-City.mmdb + wget https://github.com/P3TERX/GeoLite.mmdb/raw/download/GeoLite2-ASN.mmdb -O build/package/addons/swiftly/data/GeoLite2-ASN.mmdb + + - name: IP EXT - Windows + if: ${{ matrix.os == 'windows-latest' && matrix.extension == 'ip-extension' }} + working-directory: ${{ matrix.extension }} + run: | + Set-Location build/package/addons/swiftly + + Invoke-WebRequest https://github.com/P3TERX/GeoLite.mmdb/raw/download/GeoLite2-City.mmdb -OutFile data/GeoLite2-City.mmdb + Invoke-WebRequest https://github.com/P3TERX/GeoLite.mmdb/raw/download/GeoLite2-ASN.mmdb -OutFile data/GeoLite2-ASN.mmdb + + Set-Location ../../../.. + + - name: Upload Artifacts Linux + if: matrix.os == 'ubuntu-latest' + uses: actions/upload-artifact@v4 + with: + name: ${{matrix.extension}}.Extension.Linux + path: ${{ github.workspace }}/${{ matrix.extension }}/build/package + + - name: Upload Artifacts Windows + if: matrix.os == 'windows-latest' + uses: actions/upload-artifact@v4 + with: + name: ${{matrix.extension}}.Extension.Windows + path: ${{ github.workspace }}/${{ matrix.extension }}/build/package + + build: + name: Build + needs: versioning + runs-on: ${{ matrix.os }} + env: + MMSOURCE20: ${{ github.workspace }}/swiftly/alliedmodders/metamod + HL2SDKCS2: ${{ github.workspace }}/swiftly/alliedmodders/hl2sdk + container: ${{ matrix.container }} + strategy: + fail-fast: false + matrix: + os: [ubuntu-latest, windows-latest] + include: + - os: ubuntu-latest + container: registry.gitlab.steamos.cloud/steamrt/sniper/sdk + steps: + - name: Checkout + uses: actions/checkout@v4 + with: + path: swiftly + submodules: recursive + + - name: Checkout AMBuild + uses: actions/checkout@v4 + with: + repository: alliedmodders/ambuild + path: ambuild + + - name: Install AMBuild + run: | + cd ambuild; python setup.py install; cd .. + + - name: Setup Version + shell: bash + run: echo "SWIFTLY_VERSION=${{needs.versioning.outputs.version}}" >> $GITHUB_ENV + + - name: Build - Linux + if: matrix.os == 'ubuntu-latest' + working-directory: swiftly + shell: bash + run: | + sudo apt update + sudo apt install -y libreadline-dev libboost-all-dev unzip + bash ./setup.sh + + echo "[Builder] Setting up default plugins" + cp -r build/package build/package2 + cd build/package/addons/swiftly + wget https://github.com/swiftly-solution/admins/releases/latest/download/Swiftly.Plugin.Admins.zip + unzip Swiftly.Plugin.Admins.zip + wget https://github.com/swiftly-solution/admins_basecomms/releases/latest/download/Swiftly.Plugin.Admins.BaseComms.zip + unzip Swiftly.Plugin.Admins.BaseComms.zip + wget https://github.com/swiftly-solution/admins_basebans/releases/latest/download/Swiftly.Plugin.Admins.BaseBans.zip + unzip Swiftly.Plugin.Admins.BaseBans.zip + wget https://github.com/swiftly-solution/admins_commands/releases/latest/download/Swiftly.Plugin.Admins.BaseCommands.zip + unzip Swiftly.Plugin.Admins.BaseCommands.zip + wget https://github.com/swiftly-solution/map-chooser/releases/latest/download/Swiftly.Plugin.Map-Chooser.zip + unzip Swiftly.Plugin.Map-Chooser.zip + wget https://github.com/swiftly-solution/cookies/releases/latest/download/cookies.zip + unzip cookies.zip + + rm -rf Swiftly.Plugin.Admins.zip + rm -rf Swiftly.Plugin.Admins.BaseComms.zip + rm -rf Swiftly.Plugin.Admins.BaseBans.zip + rm -rf Swiftly.Plugin.Admins.BaseCommands.zip + rm -rf Swiftly.Plugin.Map-Chooser.zip + rm -rf cookies.zip + + cd ../../../.. + echo "[Builder] Finished setting up default plugins" + + - name: Build - Windows + if: matrix.os == 'windows-latest' + working-directory: swiftly + run: | + ./setup.ps1 + + Set-Location build/package/addons/swiftly + + Invoke-WebRequest https://github.com/swiftly-solution/admins/releases/latest/download/Swiftly.Plugin.Admins.zip -OutFile Swiftly.Plugin.Admins.zip + Expand-Archive Swiftly.Plugin.Admins.zip -DestinationPath . + Invoke-WebRequest https://github.com/swiftly-solution/admins_basecomms/releases/latest/download/Swiftly.Plugin.Admins.BaseComms.zip -OutFile Swiftly.Plugin.Admins.BaseComms.zip + Expand-Archive Swiftly.Plugin.Admins.BaseComms.zip -DestinationPath . + Invoke-WebRequest https://github.com/swiftly-solution/admins_basebans/releases/latest/download/Swiftly.Plugin.Admins.BaseBans.zip -OutFile Swiftly.Plugin.Admins.BaseBans.zip + Expand-Archive Swiftly.Plugin.Admins.BaseBans.zip -DestinationPath . + Invoke-WebRequest https://github.com/swiftly-solution/admins_commands/releases/latest/download/Swiftly.Plugin.Admins.BaseCommands.zip -OutFile Swiftly.Plugin.Admins.BaseCommands.zip + Expand-Archive Swiftly.Plugin.Admins.BaseCommands.zip -DestinationPath . + Invoke-WebRequest https://github.com/swiftly-solution/map-chooser/releases/latest/download/Swiftly.Plugin.Map-Chooser.zip -OutFile Swiftly.Plugin.Map-Chooser.zip + Expand-Archive Swiftly.Plugin.Map-Chooser.zip -DestinationPath . + Invoke-WebRequest https://github.com/swiftly-solution/cookies/releases/latest/download/cookies.zip -OutFile cookies.zip + Expand-Archive cookies.zip -DestinationPath . + + Remove-Item -Force Swiftly.Plugin.Admins.zip + Remove-Item -Force Swiftly.Plugin.Admins.BaseComms.zip + Remove-Item -Force Swiftly.Plugin.Admins.BaseBans.zip + Remove-Item -Force Swiftly.Plugin.Admins.BaseCommands.zip + Remove-Item -Force Swiftly.Plugin.Map-Chooser.zip + Remove-Item -Force cookies.zip + + Set-Location ../../../.. + + - name: Upload Artifacts Linux + if: matrix.os == 'ubuntu-latest' + uses: actions/upload-artifact@v4 + with: + name: Swiftly.Plugin.Linux + path: ${{ github.workspace }}/swiftly/build/package + + - name: Upload Artifacts Windows + if: matrix.os == 'windows-latest' + uses: actions/upload-artifact@v4 + with: + name: Swiftly.Plugin.Windows + path: ${{ github.workspace }}/swiftly/build/package + + release: + if: ${{ github.event_name == 'push' && github.ref == 'refs/heads/master' }} + permissions: + contents: write + needs: ["versioning", "build", "extensions_build"] + runs-on: ubuntu-latest + container: + image: registry.gitlab.steamos.cloud/steamrt/sniper/sdk + steps: + - uses: actions/download-artifact@v4 + id: download-artifacts + with: + path: build + + - name: Prepare ZIP Files + run: | + sudo apt install p7zip-full -y; + + find build -type d -name "*Extension.Linux" -exec cp -r {}/addons build/Swiftly.Plugin.Linux \; + find build -type d -name "*Extension.Windows" -exec cp -r {}/addons build/Swiftly.Plugin.Windows \; + + (cd build/Swiftly.Plugin.Linux; 7z a -tzip ../../../Swiftly.Plugin.Linux.zip *) + (cd build/Swiftly.Plugin.Windows; 7z a -tzip ../../../Swiftly.Plugin.Windows.zip *) + echo "PATH_ARTIFACTS=$(cd ..; pwd)" >> $GITHUB_ENV + + - name: Release + id: release + uses: softprops/action-gh-release@v2 + with: + tag_name: v${{ needs.versioning.outputs.version }} + make_latest: "true" + files: | + ${{env.PATH_ARTIFACTS}}/Swiftly.Plugin.Linux.zip + ${{env.PATH_ARTIFACTS}}/Swiftly.Plugin.Windows.zip diff --git a/.github/workflows/cleanup.yml b/.github/workflows/cleanup.yml new file mode 100644 index 000000000..f37320d6f --- /dev/null +++ b/.github/workflows/cleanup.yml @@ -0,0 +1,19 @@ +name: Clean Artifacts + +on: + schedule: + - cron: "0 0 * * *" + workflow_dispatch: + +jobs: + clean: + permissions: + actions: write + runs-on: ubuntu-latest + steps: + - name: Cleanup + uses: c-hive/gha-remove-artifacts@v1 + with: + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + age: "1 minute" + skip-recent: 20 diff --git a/.gitignore b/.gitignore new file mode 100644 index 000000000..f823c4538 --- /dev/null +++ b/.gitignore @@ -0,0 +1,5 @@ +build/ +prototemp/ +.xmake/ +custom_builder.sh +swiftly.so \ No newline at end of file diff --git a/.gitmodules b/.gitmodules new file mode 100644 index 000000000..dae1a6817 --- /dev/null +++ b/.gitmodules @@ -0,0 +1,28 @@ +[submodule "alliedmodders/metamod"] + path = alliedmodders/metamod + url = https://github.com/alliedmodders/metamod-source/ +[submodule "alliedmodders/hl2sdk-cs2"] + path = alliedmodders/hl2sdk-cs2 + url = https://github.com/alliedmodders/hl2sdk + branch = cs2 +[submodule "alliedmodders/hl2sdk-manifests"] + path = alliedmodders/hl2sdk-manifests + url = https://github.com/alliedmodders/hl2sdk-manifests/ +[submodule "vendor/dynlibutils"] + path = vendor/dynlibutils + url = https://github.com/komashchenko/DynLibUtils +[submodule "vendor/lua-rapidjson"] + path = vendor/lua-rapidjson + url = https://github.com/xpol/lua-rapidjson +[submodule "vendor/swiftly-ext"] + path = vendor/swiftly-ext + url = https://github.com/swiftly-solution/swiftly-ext +[submodule "vendor/asmjit"] + path = vendor/asmjit + url = https://github.com/asmjit/asmjit +[submodule "vendor/asmtk"] + path = vendor/asmtk + url = https://github.com/asmjit/asmtk +[submodule "vendor/embedder"] + path = vendor/embedder + url = http://github.com/swiftly-solution/embedder diff --git a/.vscode/c_cpp_properties.json b/.vscode/c_cpp_properties.json new file mode 100644 index 000000000..5418eb70b --- /dev/null +++ b/.vscode/c_cpp_properties.json @@ -0,0 +1,49 @@ +{ + "configurations": [ + { + "name": "Win32", + "includePath": [ + "${workspaceFolder}/build/swiftly/windows-x86_64/**", + "${workspaceFolder}/alliedmodders/hl2sdk-cs2/**", + "${workspaceFolder}/alliedmodders/metamod/**", + "${workspaceFolder}/alliedmodders/metamod/core/**", + "${workspaceFolder}/src/**", + "${workspaceFolder}/vendor/**", + "${workspaceFolder}/vendor/bzip2/win64/include/**", + "${workspaceFolder}/vendor/dynohook/win64/include/**", + "${workspaceFolder}/vendor/dyncall/win64/include/**", + "${workspaceFolder}/vendor/embedder/libs/lua/**", + "${workspaceFolder}/vendor/embedder/libs/js/**" + ], + "defines": [ + "META_IS_SOURCE2" + ], + "cStandard": "c17", + "cppStandard": "c++17", + "compilerPath": "C:\\Program Files\\Microsoft Visual Studio\\2022\\Community\\VC\\Tools\\MSVC\\14.43.34808\\bin\\Hostx64\\x64\\cl.exe" + }, + { + "name": "Linux", + "includePath": [ + "${workspaceFolder}/build/swiftly/linux-x86_64/**", + "${workspaceFolder}/alliedmodders/hl2sdk/**", + "${workspaceFolder}/alliedmodders/metamod/**", + "${workspaceFolder}/alliedmodders/metamod/core/**", + "${workspaceFolder}/src/**", + "${workspaceFolder}/vendor/**", + "${workspaceFolder}/vendor/bzip2/linuxsteamrt64/include/**", + "${workspaceFolder}/vendor/dynohook/linuxsteamrt64/include/**", + "${workspaceFolder}/vendor/dyncall/linuxsteamrt64/include/**", + "${workspaceFolder}/vendor/embedder/libs/lua/**", + "${workspaceFolder}/vendor/embedder/libs/js/**" + ], + "defines": [ + "META_IS_SOURCE2" + ], + "cStandard": "c17", + "cppStandard": "c++17", + "intelliSenseMode": "linux-gcc-x64" + } + ], + "version": 4 +} \ No newline at end of file diff --git a/.vscode/settings.json b/.vscode/settings.json new file mode 100644 index 000000000..64aaf4307 --- /dev/null +++ b/.vscode/settings.json @@ -0,0 +1,99 @@ +{ + "files.associations": { + "xstring": "cpp", + "chrono": "cpp", + "filesystem": "cpp", + "xtree": "cpp", + "algorithm": "cpp", + "any": "cpp", + "array": "cpp", + "atomic": "cpp", + "bit": "cpp", + "cctype": "cpp", + "charconv": "cpp", + "cinttypes": "cpp", + "clocale": "cpp", + "cmath": "cpp", + "codecvt": "cpp", + "compare": "cpp", + "concepts": "cpp", + "condition_variable": "cpp", + "cstdarg": "cpp", + "cstddef": "cpp", + "cstdint": "cpp", + "cstdio": "cpp", + "cstdlib": "cpp", + "cstring": "cpp", + "ctime": "cpp", + "cwchar": "cpp", + "deque": "cpp", + "exception": "cpp", + "format": "cpp", + "forward_list": "cpp", + "fstream": "cpp", + "functional": "cpp", + "initializer_list": "cpp", + "iomanip": "cpp", + "ios": "cpp", + "iosfwd": "cpp", + "iostream": "cpp", + "istream": "cpp", + "iterator": "cpp", + "limits": "cpp", + "list": "cpp", + "locale": "cpp", + "map": "cpp", + "memory": "cpp", + "mutex": "cpp", + "new": "cpp", + "numeric": "cpp", + "optional": "cpp", + "ostream": "cpp", + "queue": "cpp", + "random": "cpp", + "ranges": "cpp", + "ratio": "cpp", + "regex": "cpp", + "set": "cpp", + "span": "cpp", + "sstream": "cpp", + "stack": "cpp", + "stdexcept": "cpp", + "stop_token": "cpp", + "streambuf": "cpp", + "string": "cpp", + "system_error": "cpp", + "thread": "cpp", + "tuple": "cpp", + "type_traits": "cpp", + "typeinfo": "cpp", + "unordered_map": "cpp", + "unordered_set": "cpp", + "utility": "cpp", + "valarray": "cpp", + "vector": "cpp", + "xfacet": "cpp", + "xhash": "cpp", + "xiosbase": "cpp", + "xlocale": "cpp", + "xlocbuf": "cpp", + "xlocinfo": "cpp", + "xlocmes": "cpp", + "xlocmon": "cpp", + "xlocnum": "cpp", + "xloctime": "cpp", + "xmemory": "cpp", + "xtr1common": "cpp", + "xutility": "cpp", + "*.inc": "cpp", + "bitset": "cpp", + "cwctype": "cpp", + "memory_resource": "cpp", + "string_view": "cpp", + "numbers": "cpp", + "semaphore": "cpp", + "*.tcc": "cpp", + "future": "cpp", + "variant": "cpp" + } +} \ No newline at end of file diff --git a/AMBuildScript b/AMBuildScript new file mode 100644 index 000000000..7afff3332 --- /dev/null +++ b/AMBuildScript @@ -0,0 +1,318 @@ +# vim: set sts=2 ts=8 sw=2 tw=99 et ft=python: +import os, sys + +# Edit the functions below for the extra functionality, the return should be +# a list of path's to wanted locations +def additional_libs(context, binary, sdk): + return [ + # Path should be relative either to hl2sdk folder or to build folder + # 'path/to/lib/example.lib', + ] + +def additional_defines(context, binary, sdk): + return [ + # 'EXAMPLE_DEFINE=2' + ] + +def additional_includes(context, binary, sdk): + return [ + # Path should be absolute only! + # os.path.join(sdk['path'], 'game', 'server'), + # os.path.join(sdk['path'], 'public', 'entity2'), + # 'D:/absolute/path/to/include/folder/' + ] + +def ResolveEnvPath(env, folder): + if env in os.environ: + path = os.environ[env] + if os.path.isdir(path): + return path + else: + head = os.getcwd() + oldhead = None + while head != None and head != oldhead: + path = os.path.join(head, folder) + if os.path.isdir(path): + return path + oldhead = head + head, tail = os.path.split(head) + return None + +def ResolveMMSRoot(): + prenormalized_path = None + if builder.options.mms_path: + prenormalized_path = builder.options.mms_path + else: + prenormalized_path = ResolveEnvPath('MMSOURCE20', 'mmsource-2.0') + if not prenormalized_path: + prenormalized_path = ResolveEnvPath('MMSOURCE112', 'mmsource-1.12') + if not prenormalized_path: + prenormalized_path = ResolveEnvPath('MMSOURCE111', 'mmsource-1.11') + if not prenormalized_path: + prenormalized_path = ResolveEnvPath('MMSOURCE110', 'mmsource-1.10') + if not prenormalized_path: + prenormalized_path = ResolveEnvPath('MMSOURCE_DEV', 'metamod-source') + if not prenormalized_path: + prenormalized_path = ResolveEnvPath('MMSOURCE_DEV', 'mmsource-central') + if not prenormalized_path or not os.path.isdir(prenormalized_path): + raise Exception('Could not find a source copy of Metamod:Source') + + return os.path.abspath(os.path.normpath(prenormalized_path)) + +mms_root = ResolveMMSRoot() + +def ResolveHL2SDKManifestsRoot(): + prenormalized_path = builder.options.hl2sdk_manifests + if not prenormalized_path or not os.path.isdir(prenormalized_path): + raise Exception('Could not find a source copy of HL2SDK manifests') + + return os.path.abspath(os.path.normpath(prenormalized_path)) + +hl2sdk_manifests_root = ResolveHL2SDKManifestsRoot() + +SdkHelpers = builder.Eval(os.path.join(hl2sdk_manifests_root, 'SdkHelpers.ambuild'), { + 'Project': 'metamod' +}) + +class MMSPluginConfig(object): + def __init__(self): + self.sdk_manifests = [] + self.sdks = {} + self.sdk_targets = [] + self.binaries = [] + self.mms_root = mms_root + self.all_targets = [] + self.target_archs = set() + + if builder.options.plugin_name is not None: + self.plugin_name = builder.options.plugin_name + else: + self.plugin_name = 'sample_mm' + + if builder.options.plugin_alias is not None: + self.plugin_alias = builder.options.plugin_alias + else: + self.plugin_alias = 'sample' + + if builder.options.targets: + target_archs = builder.options.targets.split(',') + else: + target_archs = ['x86', 'x86_64'] + + for arch in target_archs: + try: + cxx = builder.DetectCxx(target_arch = arch) + self.target_archs.add(cxx.target.arch) + except Exception as e: + # Error if archs were manually overridden. + if builder.options.targets: + raise + print('Skipping target {}: {}'.format(arch, e)) + continue + self.all_targets.append(cxx) + + if not self.all_targets: + raise Exception('No suitable C/C++ compiler was found.') + + def findSdkPath(self, sdk_name): + dir_name = 'hl2sdk-{}'.format(sdk_name) + if builder.options.hl2sdk_root: + sdk_path = os.path.abspath(os.path.normpath(os.path.join(builder.options.hl2sdk_root, dir_name))) + if os.path.exists(sdk_path): + return sdk_path + return ResolveEnvPath('HL2SDK{}'.format(sdk_name.upper()), dir_name) + + def detectSDKs(self): + sdk_list = [s for s in builder.options.sdks.split(',') if s] + SdkHelpers.find_sdk_path = self.findSdkPath + SdkHelpers.findSdks(builder, self.all_targets, sdk_list) + + self.sdks = SdkHelpers.sdks + self.sdk_manifests = SdkHelpers.sdk_manifests + self.sdk_targets = SdkHelpers.sdk_targets + + if len(self.sdks) > 1: + raise Exception('Only one sdk at a time is supported, for multi-sdk approach use loader based solution.') + + def configure(self): + for cxx in self.all_targets: + if cxx.target.arch not in ['x86', 'x86_64']: + raise Exception('Unknown target architecture: {0}'.format(arch)) + + self.configure_cxx(cxx) + + def configure_cxx(self, cxx): + if cxx.behavior == 'gcc': + cxx.defines += [ + 'stricmp=strcasecmp', + '_stricmp=strcasecmp', + '_snprintf=snprintf', + '_vsnprintf=vsnprintf', + 'HAVE_STDINT_H', + 'GNUC', + ] + cxx.cflags += [ + '-pipe', + '-fno-strict-aliasing', + '-Wall', + '-Wno-sign-compare', + '-Wno-uninitialized', + '-Wno-unused', + '-Wno-switch', + '-msse', + '-fPIC', + ] + + cxx.cxxflags += ['-std=c++17'] + if (builder.options.asan != '1') and ((cxx.version >= 'gcc-4.0') or cxx.family == 'clang'): + cxx.cflags += ['-rdynamic', '-g'] + if (cxx.version >= 'gcc-4.0') or cxx.family == 'clang': + cxx.cflags += ['-fvisibility=hidden'] + cxx.cxxflags += ['-fvisibility-inlines-hidden'] + cxx.cxxflags += [ + '-fno-exceptions', + '-fno-threadsafe-statics', + '-Wno-non-virtual-dtor', + '-Wno-overloaded-virtual', + '-Wno-register', + ] + if (cxx.version >= 'gcc-4.7' or cxx.family == 'clang'): + cxx.cxxflags += ['-Wno-delete-non-virtual-dtor'] + if cxx.family == 'gcc': + cxx.cflags += ['-mfpmath=sse'] + if cxx.family == 'clang': + cxx.cxxflags += ['-Wno-implicit-exception-spec-mismatch'] + if cxx.version >= 'clang-3.9': + cxx.cxxflags += ['-Wno-expansion-to-defined'] + if cxx.version >= 'clang-3.6': + cxx.cxxflags += ['-Wno-inconsistent-missing-override'] + if cxx.version >= 'clang-3.4': + cxx.cxxflags += ['-Wno-deprecated-register'] + else: + cxx.cxxflags += ['-Wno-deprecated'] + + # Work around SDK warnings. + if cxx.version >= 'clang-10.0': + cxx.cflags += [ + '-Wno-implicit-int-float-conversion', + '-Wno-tautological-overlap-compare', + ] + + elif cxx.like('msvc'): + if builder.options.debug == '1': + cxx.cflags += ['/MTd'] + cxx.linkflags += ['/NODEFAULTLIB:libcmt'] + else: + cxx.cflags += ['/MT'] + cxx.defines += [ + '_CRT_SECURE_NO_DEPRECATE', + '_CRT_SECURE_NO_WARNINGS', + '_CRT_NONSTDC_NO_DEPRECATE', + ] + cxx.cflags += [ + '/W3', + '/Z7', + '/std:c++17', + ] + cxx.cxxflags += ['/TP'] + + cxx.linkflags += [ + '/SUBSYSTEM:WINDOWS', + 'kernel32.lib', + 'user32.lib', + 'gdi32.lib', + 'winspool.lib', + 'comdlg32.lib', + 'advapi32.lib', + 'shell32.lib', + 'ole32.lib', + 'oleaut32.lib', + 'uuid.lib', + 'odbc32.lib', + 'odbccp32.lib', + ] + + # Optimization + if builder.options.opt == '1': + cxx.defines += ['NDEBUG'] + if cxx.behavior == 'gcc': + cxx.cflags += ['-O3'] + elif cxx.behavior == 'msvc': + cxx.cflags += ['/Ox', '/Zo'] + cxx.linkflags += ['/OPT:ICF', '/OPT:REF'] + + # Debugging + if builder.options.debug == '1': + cxx.defines += ['DEBUG', '_DEBUG'] + if cxx.behavior == 'gcc': + cxx.cflags += ['-g3'] + elif cxx.behavior == 'msvc': + cxx.cflags += ['/Od', '/RTC1'] + + # Don't omit the frame pointer. + # This needs to be after our optimization flags which could otherwise disable it. + if cxx.behavior == 'gcc': + cxx.cflags += ['-fno-omit-frame-pointer'] + elif cxx.behavior == 'msvc': + cxx.cflags += ['/Oy-'] + + # Platform-specifics + if cxx.target.platform == 'linux': + cxx.defines += ['LINUX', '_LINUX', 'POSIX', '_FILE_OFFSET_BITS=64'] + if cxx.family == 'gcc': + cxx.linkflags += ['-static-libgcc'] + elif cxx.family == 'clang': + cxx.linkflags += ['-lgcc_eh'] + cxx.linkflags += ['-static-libstdc++'] + elif cxx.target.platform == 'windows': + cxx.defines += ['WIN32', '_WINDOWS'] + + # Finish up. + # Custom defines here + cxx.defines += [ ] + # Custom includes here + cxx.includes += [ ] + + def Library(self, cxx, name): + binary = cxx.Library(name) + return binary + + def HL2Library(self, context, compiler, name, sdk): + binary = self.Library(compiler, name) + mms_core_path = os.path.join(self.mms_root, 'core') + cxx = binary.compiler + + cxx.cxxincludes += [ + os.path.join(context.currentSourcePath), + os.path.join(mms_core_path), + os.path.join(mms_core_path, 'sourcehook'), + ] + + defines = [] + for other_sdk in self.sdk_manifests: + cxx.defines += ['SE_{}={}'.format(other_sdk['define'], other_sdk['code'])] + + if sdk['source2']: + cxx.defines += ['META_IS_SOURCE2'] + binary.sources += [ + os.path.join(sdk['path'], 'tier1', 'convar.cpp'), + ] + + SdkHelpers.configureCxx(context, binary, sdk) + + cxx.linkflags += additional_libs(context, binary, sdk) + cxx.defines += additional_defines(context, binary, sdk) + cxx.cxxincludes += additional_includes(context, binary, sdk) + + return binary + +MMSPlugin = MMSPluginConfig() +MMSPlugin.detectSDKs() +MMSPlugin.configure() + +BuildScripts = [ + 'AMBuilder', + 'PackageScript', +] + +builder.Build(BuildScripts, { 'MMSPlugin': MMSPlugin }) \ No newline at end of file diff --git a/AMBuilder b/AMBuilder new file mode 100644 index 000000000..bdcf01528 --- /dev/null +++ b/AMBuilder @@ -0,0 +1,339 @@ +# vim: set sts=2 ts=8 sw=2 tw=99 et ft=python: +import os, fnmatch, json + +MMSPlugin.plugin_name = 'swiftly' +MMSPlugin.plugin_alias = 'swiftly' + +for sdk_target in MMSPlugin.sdk_targets: + sdk = sdk_target.sdk + cxx = sdk_target.cxx + + binary = MMSPlugin.HL2Library(builder, cxx, MMSPlugin.plugin_name, sdk) + + for root, dirs, files in os.walk(os.path.join(builder.sourcePath, "vendor", "lua-rapidjson", "src")): + for _file in files: + if fnmatch.fnmatch(_file, '*.cpp'): + binary.sources.append(os.path.join(root, _file).replace("\\", "/")) + + for root, dirs, files in os.walk(os.path.join(builder.sourcePath, "vendor", "asmjit", "src", "asmjit")): + for _file in files: + if fnmatch.fnmatch(_file, '*.cpp'): + binary.sources.append(os.path.join(root, _file).replace("\\", "/")) + + for root, dirs, files in os.walk(os.path.join(builder.sourcePath, "vendor", "asmtk", "src", "asmtk")): + for _file in files: + if fnmatch.fnmatch(_file, '*.cpp'): + binary.sources.append(os.path.join(root, _file).replace("\\", "/")) + + for root, dirs, files in os.walk(os.path.join(builder.sourcePath, "vendor", "embedder", "src")): + for _file in files: + if fnmatch.fnmatch(_file, '*.cpp'): + binary.sources.append(os.path.join(root, _file).replace("\\", "/"))\ + + with open(os.path.join(builder.sourcePath, "vendor", "embedder", "libs", "links.json")) as f: + embedder_linking = json.load(f) + + libs = embedder_linking["libraries"][binary.compiler.target.platform] + incls = embedder_linking["includes"] + for lib in libs: + binary.compiler.postlink += [os.path.join(builder.sourcePath, "vendor", "embedder", "libs", lib)] + for incl in incls: + binary.compiler.cxxincludes += [os.path.join(builder.sourcePath, 'vendor', 'embedder', 'libs', incl)] + + binary.sources += [ + 'src/core/entrypoint.cpp', + "src/core/commands/chat.cpp", + "src/core/commands/cmds.cpp", + "src/core/commands/config.cpp", + "src/core/commands/core.cpp", + "src/core/commands/credits.cpp", + "src/core/commands/cvars.cpp", + "src/core/commands/exts.cpp", + "src/core/commands/help.cpp", + "src/core/commands/list.cpp", + "src/core/commands/plugins.cpp", + "src/core/commands/resmon.cpp", + "src/core/commands/status.cpp", + "src/core/commands/translations.cpp", + "src/core/commands/utils.cpp", + "src/core/commands/version.cpp", + 'src/core/configuration/setup.cpp', + 'src/core/console/console.cpp', + + 'src/engine/convars/manager.cpp', + 'src/engine/convars/query.cpp', + + 'src/engine/gameevents/gameevents.cpp', + + 'src/engine/precacher/game_system.cpp', + 'src/engine/precacher/precacher.cpp', + + 'src/engine/vgui/screentext.cpp', + 'src/engine/vgui/vgui.cpp', + + 'src/engine/voicemanager/manager.cpp', + + 'src/entities/system.cpp', + 'src/entities/listener.cpp', + + 'src/extensions/manager.cpp', + 'src/extensions/extension.cpp', + + 'src/filesystem/files/files.cpp', + 'src/filesystem/logs/logger.cpp', + 'src/filesystem/logs/log.cpp', + + 'src/memory/encoders/json.cpp', + 'src/memory/gamedata/gamedata.cpp', + 'src/memory/hooks/manager.cpp', + 'src/memory/hooks/functions.cpp', + 'src/memory/hooks/vfunctions.cpp', + + 'src/network/database/DatabaseManager.cpp', + 'src/network/usermessages/usermessage.cpp', + 'src/network/usermessages/usermessages.cpp', + + 'src/plugins/manager.cpp', + 'src/plugins/object.cpp', + + 'src/scripting/engine/convars.cpp', + 'src/scripting/engine/entities.cpp', + 'src/scripting/engine/events.cpp', + 'src/scripting/engine/gameevents.cpp', + 'src/scripting/engine/precacher.cpp', + 'src/scripting/engine/server.cpp', + 'src/scripting/engine/vgui.cpp', + + 'src/scripting/entities/weapons.cpp', + + 'src/scripting/memory/memory.cpp', + 'src/scripting/memory/hooks.cpp', + 'src/scripting/memory/keyvalues/centitykeyvalues.cpp', + + 'src/scripting/network/database.cpp', + 'src/scripting/network/usermessage.cpp', + + 'src/scripting/player/manager.cpp', + 'src/scripting/player/player.cpp', + + 'src/scripting/filesystem/files.cpp', + 'src/scripting/filesystem/logger.cpp', + + 'src/scripting/sdk/baseclasses.cpp', + 'src/scripting/sdk/chandle.cpp', + 'src/scripting/sdk/checktransmit.cpp', + 'src/scripting/sdk/coretypes.cpp', + 'src/scripting/sdk/schema_access.cpp', + 'src/scripting/sdk/schema.cpp', + 'src/scripting/sdk/types.cpp', + + 'src/scripting/server/commands.cpp', + 'src/scripting/server/configuration.cpp', + 'src/scripting/server/menus.cpp', + 'src/scripting/server/translations.cpp', + 'src/scripting/server/utils.cpp', + + 'src/scripting/core.cpp', + 'src/scripting/stack.cpp', + + 'src/sdk/access.cpp', + 'src/sdk/schema.cpp', + 'src/sdk/game.cpp', + + 'src/server/chat/chat.cpp', + + 'src/server/commands/command.cpp', + 'src/server/commands/manager.cpp', + + 'src/server/configuration/configuration.cpp', + + 'src/server/menus/kinds/CenterMenu.cpp', + 'src/server/menus/kinds/ScreenMenu.cpp', + 'src/server/menus/MenuManager.cpp', + 'src/server/menus/MenuRenderer.cpp', + + 'src/server/player/manager.cpp', + 'src/server/player/player.cpp', + + 'src/server/translations/translation.cpp', + 'src/server/translations/translations.cpp', + + 'src/tools/crashreporter/callstack.cpp', + 'src/tools/crashreporter/crashreporter.cpp', + 'src/tools/resourcemonitor/monitor.cpp', + + 'src/utils/utils.cpp', + 'src/utils/memory_win.cpp', + 'src/utils/memory_linux.cpp', + 'src/utils/platform/platform_win.cpp', + 'src/utils/platform/platform_linux.cpp', + + "vendor/dynlibutils/module.cpp", + + os.path.join(sdk['path'], 'tier1', 'keyvalues3.cpp'), + os.path.join(sdk['path'], 'entity2', 'entitysystem.cpp'), + os.path.join(sdk['path'], 'entity2', 'entityidentity.cpp'), + os.path.join(sdk['path'], 'entity2', 'entitykeyvalues.cpp'), + ] + + binary.compiler.defines += [ + "GITHUB_SHA=\"" + (os.getenv('GITHUB_SHA') == None and "LOCAL" or os.getenv('GITHUB_SHA')) + "\"", + "ASMJIT_STATIC" + ] + + if binary.compiler.target.platform == 'linux': + binary.compiler.postlink += [ + os.path.join(builder.sourcePath, 'vendor', 'bzip2', 'linuxsteamrt64', 'lib', 'libbz2.a'), + os.path.join(builder.sourcePath, 'vendor', 'dynohook', 'linuxsteamrt64', 'lib', 'libdynohook.a'), + os.path.join(builder.sourcePath, 'vendor', 'dynohook', 'linuxsteamrt64', 'lib', 'libZydis.a'), + os.path.join(builder.sourcePath, 'vendor', 'dyncall', 'linuxsteamrt64', 'lib', 'libdyncall_s.a'), + + "-lgnutls", + "-lz", + "-lpthread", + "-lssl", + "-lcrypto", + "-lm", + "-ldl", + "-lreadline", + "-lrt", + "-lidn2", + "-lpsl", + "-lbrotlidec", + "-lbacktrace", + "-lstdc++", + os.path.join(sdk['path'], 'lib', 'linux64', 'libsteam_api.so') + ] + binary.compiler.cxxflags += [ + "-Wno-invalid-offsetof", + "-Wno-return-local-addr", + "-Wno-overloaded-virtual", + "-Wno-unknown-pragmas", + "-Wno-non-virtual-dtor", + "-Wno-attributes", + "-Wno-array-bounds", + "-Wno-int-to-pointer-cast", + "-Wno-sign-compare", + "-Wno-write-strings", + "-Wno-class-memaccess", + "-fexceptions", + ] + binary.compiler.cflags += [ + "-Wno-return-local-addr", + "-Wno-unknown-pragmas", + "-Wno-attributes", + "-Wno-array-bounds", + "-Wno-int-to-pointer-cast", + "-Wno-sign-compare", + "-Wno-write-strings", + "-fexceptions", + ] + binary.compiler.defines += [ + "_LINUX", + "LINUX", + "POSIX", + "GNUC", + "COMPILER_GCC", + "PLATFORM_64BITS", + "META_IS_SOURCE2", + "_GLIBCXX_USE_CXX11_ABI=0", + ] + else: + binary.compiler.postlink += [ + os.path.join(builder.sourcePath, 'vendor', 'bzip2', 'win64', 'lib', 'bz2.lib'), + os.path.join(builder.sourcePath, 'vendor', 'dynohook', 'win64', 'lib', 'dynohook.lib'), + os.path.join(builder.sourcePath, 'vendor', 'dynohook', 'win64', 'lib', 'Zydis.lib'), + os.path.join(builder.sourcePath, 'vendor', 'dyncall', 'win64', 'lib', 'dyncall_s.lib'), + + "psapi.lib", + "winmm.lib", + "ws2_32.lib", + "wldap32.lib", + "advapi32.lib", + "kernel32.lib", + "comdlg32.lib", + "crypt32.lib", + "normaliz.lib", + "wsock32.lib", + "legacy_stdio_definitions.lib", + "legacy_stdio_wide_specifiers.lib", + "user32.lib", + "gdi32.lib", + "winspool.lib", + "shell32.lib", + "ole32.lib", + "oleaut32.lib", + "uuid.lib", + "odbc32.lib", + "odbccp32.lib", + "msvcrt.lib", + "dbghelp.lib", + os.path.join(sdk['path'], 'lib', 'public', 'win64', 'steam_api64.lib') + ] + binary.compiler.defines += [ + "COMPILER_MSVC", + "COMPILER_MSVC64", + "WIN32", + "_WIN32", + "WINDOWS", + "_WINDOWS", + "CRT_SECURE_NO_WARNINGS", + "_CRT_SECURE_NO_WARNINGS", + "CRT_SECURE_NO_DEPRECATE", + "_CRT_SECURE_NO_DEPRECATE", + "CRT_NONSTDC_NO_DEPRECATE", + "_CRT_NONSTDC_NO_DEPRECATE", + "_MBCS", + "META_IS_SOURCE2", + "X64BITS", + "PLATFORM_64BITS", + "NDEBUG", + "JSON_HAS_CPP_14", + "JSON_HAS_CPP_11" + ] + binary.compiler.cxxflags += [ + "/Zc:__cplusplus", + "/Ox", + "/Zo", + "/Oy-", + "/Z7", + "/TP", + "/MT", + "/W3", + "/Z7", + "/EHsc", + "/IGNORE:4101,4267,4244,4005,4003,4530", + ] + + binary.compiler.cxxincludes += [ + os.path.join(builder.sourcePath, 'vendor'), + os.path.join(builder.sourcePath, 'vendor', 'lua-rapidjson', 'rapidjson', 'include'), + os.path.join(builder.sourcePath, 'vendor', 'bzip2', ('win64' if binary.compiler.target.platform == 'windows' else 'linuxsteamrt64'), 'include'), + os.path.join(builder.sourcePath, 'vendor', 'dynohook', ('win64' if binary.compiler.target.platform == 'windows' else 'linuxsteamrt64'), 'include'), + os.path.join(builder.sourcePath, 'vendor', 'dynohook', ('win64' if binary.compiler.target.platform == 'windows' else 'linuxsteamrt64'), 'include', 'dynohook'), + os.path.join(builder.sourcePath, 'vendor', 'dyncall', ('win64' if binary.compiler.target.platform == 'windows' else 'linuxsteamrt64'), 'include'), + os.path.join(builder.sourcePath, 'vendor', 'asmjit', 'src'), + os.path.join(builder.sourcePath, 'vendor', 'asmtk', 'src'), + + os.path.join(builder.sourcePath, 'src'), + + os.path.join(sdk['path']), + ] + + protobufSources = [] + for root, dirs, files in os.walk(os.path.join(builder.sourcePath, "protobufs", sdk['name'])): + for _file in files: + if fnmatch.fnmatch(_file, '*.proto'): + protobufSources.append(os.path.join(root, _file).replace("\\", "/")) + + protoc_builder = builder.tools.Protoc(protoc = sdk_target.protoc, sources = protobufSources) + + protoc_builder.protoc.includes = [ + os.path.join(sdk['path'], 'thirdparty', 'protobuf-3.21.8', 'src'), + os.path.join(builder.sourcePath, 'protobufs', sdk['name']) + ] + + binary.custom = [protoc_builder] + + nodes = builder.Add(binary) + MMSPlugin.binaries += [nodes] \ No newline at end of file diff --git a/CHANGELOG.md b/CHANGELOG.md new file mode 100644 index 000000000..e5d639017 --- /dev/null +++ b/CHANGELOG.md @@ -0,0 +1,74 @@ +# Changelog - Swiftly Core + +Over here will be noted all the update change logs. + +## v1.6.0 - [Release](https://github.com/swiftly-solution/swiftly/releases/tag/v1.6.0) + +### Memory + +- [+] memory:Dereferance() + +### CCheckTransmitInfo + +- [+] cchecktransmitinfo:AddEntityIndex(entityIndex) +- [+] cchecktransmitinfo:RemoveEntityIndex(entityIndex) +- [+] cchecktransmitinfo:Clear() + +### CHandle + +- [+] chandle:IsValid() +- [+] chandle:GetEntryIndex() +- [+] chandle:GetSerialNumber() + +### Player + +- [•] player:Drop(reason, optional message) + +### VGUI + +- [+] vgui:SetColor(textID, color) + +### Convar + +- [+] convar:Create(name, description, type, flags, default_value, min_value, max_value) +- [+] convar:Delete(name) + +### Crash Reporter + +- [+] Windows Support + +### Extensions + +- [+] Hooks via DynoHook being centralized into Swiftly's Core +- [+] GetCurrentGame() -> cs2, unknown + +### Hooks + +- [+] AddVHook(library, vtable_name, offset, args_list, return_type) + +### Events + +- [+] OnEntityParentChanged(entity, newparent) + +### Game + +- [+] GetGameName() -> cs2, unknown + +### Addons System + +- [+] Multiple VPK Support + +### Fixes + +- [+] EmitSound volume + +### SDKTools + +- [+] ListenEntityTouchUse(class_name) +- [+] RemoveListenEntityTouchUse(class_name) + +### Lua + +- [+] Error Stack Trace + +![ImgAlt](https://cdn.skuzzi.ro/zJIsaG8viy2FVsXbtQxmGxCmTJ62iKOD.png) \ No newline at end of file diff --git a/LICENSE b/LICENSE new file mode 100644 index 000000000..060f30fea --- /dev/null +++ b/LICENSE @@ -0,0 +1,229 @@ +GNU GENERAL PUBLIC LICENSE +Version 3, 29 June 2007 +Copyright © 2007 Free Software Foundation, Inc. <http://fsf.org/> + +Everyone is permitted to copy and distribute verbatim copies of this license document, but changing it is not allowed. + +Preamble + +The GNU General Public License is a free, copyleft license for software and other kinds of works. + +The licenses for most software and other practical works are designed to take away your freedom to share and change the works. By contrast, the GNU General Public License is intended to guarantee your freedom to share and change all versions of a program--to make sure it remains free software for all its users. We, the Free Software Foundation, use the GNU General Public License for most of our software; it applies also to any other work released this way by its authors. You can apply it to your programs, too. + +When we speak of free software, we are referring to freedom, not price. Our General Public Licenses are designed to make sure that you have the freedom to distribute copies of free software (and charge for them if you wish), that you receive source code or can get it if you want it, that you can change the software or use pieces of it in new free programs, and that you know you can do these things. + +To protect your rights, we need to prevent others from denying you these rights or asking you to surrender the rights. Therefore, you have certain responsibilities if you distribute copies of the software, or if you modify it: responsibilities to respect the freedom of others. + +For example, if you distribute copies of such a program, whether gratis or for a fee, you must pass on to the recipients the same freedoms that you received. You must make sure that they, too, receive or can get the source code. And you must show them these terms so they know their rights. + +Developers that use the GNU GPL protect your rights with two steps: (1) assert copyright on the software, and (2) offer you this License giving you legal permission to copy, distribute and/or modify it. + +For the developers' and authors' protection, the GPL clearly explains that there is no warranty for this free software. For both users' and authors' sake, the GPL requires that modified versions be marked as changed, so that their problems will not be attributed erroneously to authors of previous versions. + +Some devices are designed to deny users access to install or run modified versions of the software inside them, although the manufacturer can do so. This is fundamentally incompatible with the aim of protecting users' freedom to change the software. The systematic pattern of such abuse occurs in the area of products for individuals to use, which is precisely where it is most unacceptable. Therefore, we have designed this version of the GPL to prohibit the practice for those products. If such problems arise substantially in other domains, we stand ready to extend this provision to those domains in future versions of the GPL, as needed to protect the freedom of users. + +Finally, every program is threatened constantly by software patents. States should not allow patents to restrict development and use of software on general-purpose computers, but in those that do, we wish to avoid the special danger that patents applied to a free program could make it effectively proprietary. To prevent this, the GPL assures that patents cannot be used to render the program non-free. + +The precise terms and conditions for copying, distribution and modification follow. + +TERMS AND CONDITIONS + +0. Definitions. + +“This License” refers to version 3 of the GNU General Public License. + +“Copyright” also means copyright-like laws that apply to other kinds of works, such as semiconductor masks. + +“The Program” refers to any copyrightable work licensed under this License. Each licensee is addressed as “you”. “Licensees” and “recipients” may be individuals or organizations. + +To “modify” a work means to copy from or adapt all or part of the work in a fashion requiring copyright permission, other than the making of an exact copy. The resulting work is called a “modified version” of the earlier work or a work “based on” the earlier work. + +A “covered work” means either the unmodified Program or a work based on the Program. + +To “propagate” a work means to do anything with it that, without permission, would make you directly or secondarily liable for infringement under applicable copyright law, except executing it on a computer or modifying a private copy. Propagation includes copying, distribution (with or without modification), making available to the public, and in some countries other activities as well. + +To “convey” a work means any kind of propagation that enables other parties to make or receive copies. Mere interaction with a user through a computer network, with no transfer of a copy, is not conveying. + +An interactive user interface displays “Appropriate Legal Notices” to the extent that it includes a convenient and prominently visible feature that (1) displays an appropriate copyright notice, and (2) tells the user that there is no warranty for the work (except to the extent that warranties are provided), that licensees may convey the work under this License, and how to view a copy of this License. If the interface presents a list of user commands or options, such as a menu, a prominent item in the list meets this criterion. + +1. Source Code. +The “source code” for a work means the preferred form of the work for making modifications to it. “Object code” means any non-source form of a work. + +A “Standard Interface” means an interface that either is an official standard defined by a recognized standards body, or, in the case of interfaces specified for a particular programming language, one that is widely used among developers working in that language. + +The “System Libraries” of an executable work include anything, other than the work as a whole, that (a) is included in the normal form of packaging a Major Component, but which is not part of that Major Component, and (b) serves only to enable use of the work with that Major Component, or to implement a Standard Interface for which an implementation is available to the public in source code form. A “Major Component”, in this context, means a major essential component (kernel, window system, and so on) of the specific operating system (if any) on which the executable work runs, or a compiler used to produce the work, or an object code interpreter used to run it. + +The “Corresponding Source” for a work in object code form means all the source code needed to generate, install, and (for an executable work) run the object code and to modify the work, including scripts to control those activities. However, it does not include the work's System Libraries, or general-purpose tools or generally available free programs which are used unmodified in performing those activities but which are not part of the work. For example, Corresponding Source includes interface definition files associated with source files for the work, and the source code for shared libraries and dynamically linked subprograms that the work is specifically designed to require, such as by intimate data communication or control flow between those subprograms and other parts of the work. + +The Corresponding Source need not include anything that users can regenerate automatically from other parts of the Corresponding Source. + +The Corresponding Source for a work in source code form is that same work. + +2. Basic Permissions. +All rights granted under this License are granted for the term of copyright on the Program, and are irrevocable provided the stated conditions are met. This License explicitly affirms your unlimited permission to run the unmodified Program. The output from running a covered work is covered by this License only if the output, given its content, constitutes a covered work. This License acknowledges your rights of fair use or other equivalent, as provided by copyright law. + +You may make, run and propagate covered works that you do not convey, without conditions so long as your license otherwise remains in force. You may convey covered works to others for the sole purpose of having them make modifications exclusively for you, or provide you with facilities for running those works, provided that you comply with the terms of this License in conveying all material for which you do not control copyright. Those thus making or running the covered works for you must do so exclusively on your behalf, under your direction and control, on terms that prohibit them from making any copies of your copyrighted material outside their relationship with you. + +Conveying under any other circumstances is permitted solely under the conditions stated below. Sublicensing is not allowed; section 10 makes it unnecessary. + +3. Protecting Users' Legal Rights From Anti-Circumvention Law. +No covered work shall be deemed part of an effective technological measure under any applicable law fulfilling obligations under article 11 of the WIPO copyright treaty adopted on 20 December 1996, or similar laws prohibiting or restricting circumvention of such measures. + +When you convey a covered work, you waive any legal power to forbid circumvention of technological measures to the extent such circumvention is effected by exercising rights under this License with respect to the covered work, and you disclaim any intention to limit operation or modification of the work as a means of enforcing, against the work's users, your or third parties' legal rights to forbid circumvention of technological measures. + +4. Conveying Verbatim Copies. +You may convey verbatim copies of the Program's source code as you receive it, in any medium, provided that you conspicuously and appropriately publish on each copy an appropriate copyright notice; keep intact all notices stating that this License and any non-permissive terms added in accord with section 7 apply to the code; keep intact all notices of the absence of any warranty; and give all recipients a copy of this License along with the Program. + +You may charge any price or no price for each copy that you convey, and you may offer support or warranty protection for a fee. + +5. Conveying Modified Source Versions. +You may convey a work based on the Program, or the modifications to produce it from the Program, in the form of source code under the terms of section 4, provided that you also meet all of these conditions: + +a) The work must carry prominent notices stating that you modified it, and giving a relevant date. + +b) The work must carry prominent notices stating that it is released under this License and any conditions added under section 7. This requirement modifies the requirement in section 4 to “keep intact all notices”. + +c) You must license the entire work, as a whole, under this License to anyone who comes into possession of a copy. This License will therefore apply, along with any applicable section 7 additional terms, to the whole of the work, and all its parts, regardless of how they are packaged. This License gives no permission to license the work in any other way, but it does not invalidate such permission if you have separately received it. + +d) If the work has interactive user interfaces, each must display Appropriate Legal Notices; however, if the Program has interactive interfaces that do not display Appropriate Legal Notices, your work need not make them do so. + +A compilation of a covered work with other separate and independent works, which are not by their nature extensions of the covered work, and which are not combined with it such as to form a larger program, in or on a volume of a storage or distribution medium, is called an “aggregate” if the compilation and its resulting copyright are not used to limit the access or legal rights of the compilation's users beyond what the individual works permit. Inclusion of a covered work in an aggregate does not cause this License to apply to the other parts of the aggregate. + +6. Conveying Non-Source Forms. +You may convey a covered work in object code form under the terms of sections 4 and 5, provided that you also convey the machine-readable Corresponding Source under the terms of this License, in one of these ways: + +a) Convey the object code in, or embodied in, a physical product (including a physical distribution medium), accompanied by the Corresponding Source fixed on a durable physical medium customarily used for software interchange. + +b) Convey the object code in, or embodied in, a physical product (including a physical distribution medium), accompanied by a written offer, valid for at least three years and valid for as long as you offer spare parts or customer support for that product model, to give anyone who possesses the object code either (1) a copy of the Corresponding Source for all the software in the product that is covered by this License, on a durable physical medium customarily used for software interchange, for a price no more than your reasonable cost of physically performing this conveying of source, or (2) access to copy the Corresponding Source from a network server at no charge. + +c) Convey individual copies of the object code with a copy of the written offer to provide the Corresponding Source. This alternative is allowed only occasionally and noncommercially, and only if you received the object code with such an offer, in accord with subsection 6b. + +d) Convey the object code by offering access from a designated place (gratis or for a charge), and offer equivalent access to the Corresponding Source in the same way through the same place at no further charge. You need not require recipients to copy the Corresponding Source along with the object code. If the place to copy the object code is a network server, the Corresponding Source may be on a different server (operated by you or a third party) that supports equivalent copying facilities, provided you maintain clear directions next to the object code saying where to find the Corresponding Source. Regardless of what server hosts the Corresponding Source, you remain obligated to ensure that it is available for as long as needed to satisfy these requirements. + +e) Convey the object code using peer-to-peer transmission, provided you inform other peers where the object code and Corresponding Source of the work are being offered to the general public at no charge under subsection 6d. + +A separable portion of the object code, whose source code is excluded from the Corresponding Source as a System Library, need not be included in conveying the object code work. + +A “User Product” is either (1) a “consumer product”, which means any tangible personal property which is normally used for personal, family, or household purposes, or (2) anything designed or sold for incorporation into a dwelling. In determining whether a product is a consumer product, doubtful cases shall be resolved in favor of coverage. For a particular product received by a particular user, “normally used” refers to a typical or common use of that class of product, regardless of the status of the particular user or of the way in which the particular user actually uses, or expects or is expected to use, the product. A product is a consumer product regardless of whether the product has substantial commercial, industrial or non-consumer uses, unless such uses represent the only significant mode of use of the product. + +“Installation Information” for a User Product means any methods, procedures, authorization keys, or other information required to install and execute modified versions of a covered work in that User Product from a modified version of its Corresponding Source. The information must suffice to ensure that the continued functioning of the modified object code is in no case prevented or interfered with solely because modification has been made. + +If you convey an object code work under this section in, or with, or specifically for use in, a User Product, and the conveying occurs as part of a transaction in which the right of possession and use of the User Product is transferred to the recipient in perpetuity or for a fixed term (regardless of how the transaction is characterized), the Corresponding Source conveyed under this section must be accompanied by the Installation Information. But this requirement does not apply if neither you nor any third party retains the ability to install modified object code on the User Product (for example, the work has been installed in ROM). + +The requirement to provide Installation Information does not include a requirement to continue to provide support service, warranty, or updates for a work that has been modified or installed by the recipient, or for the User Product in which it has been modified or installed. Access to a network may be denied when the modification itself materially and adversely affects the operation of the network or violates the rules and protocols for communication across the network. + +Corresponding Source conveyed, and Installation Information provided, in accord with this section must be in a format that is publicly documented (and with an implementation available to the public in source code form), and must require no special password or key for unpacking, reading or copying. + +7. Additional Terms. +“Additional permissions” are terms that supplement the terms of this License by making exceptions from one or more of its conditions. Additional permissions that are applicable to the entire Program shall be treated as though they were included in this License, to the extent that they are valid under applicable law. If additional permissions apply only to part of the Program, that part may be used separately under those permissions, but the entire Program remains governed by this License without regard to the additional permissions. + +When you convey a copy of a covered work, you may at your option remove any additional permissions from that copy, or from any part of it. (Additional permissions may be written to require their own removal in certain cases when you modify the work.) You may place additional permissions on material, added by you to a covered work, for which you have or can give appropriate copyright permission. + +Notwithstanding any other provision of this License, for material you add to a covered work, you may (if authorized by the copyright holders of that material) supplement the terms of this License with terms: + +a) Disclaiming warranty or limiting liability differently from the terms of sections 15 and 16 of this License; or + +b) Requiring preservation of specified reasonable legal notices or author attributions in that material or in the Appropriate Legal Notices displayed by works containing it; or + +c) Prohibiting misrepresentation of the origin of that material, or requiring that modified versions of such material be marked in reasonable ways as different from the original version; or + +d) Limiting the use for publicity purposes of names of licensors or authors of the material; or + +e) Declining to grant rights under trademark law for use of some trade names, trademarks, or service marks; or + +f) Requiring indemnification of licensors and authors of that material by anyone who conveys the material (or modified versions of it) with contractual assumptions of liability to the recipient, for any liability that these contractual assumptions directly impose on those licensors and authors. + +All other non-permissive additional terms are considered “further restrictions” within the meaning of section 10. If the Program as you received it, or any part of it, contains a notice stating that it is governed by this License along with a term that is a further restriction, you may remove that term. If a license document contains a further restriction but permits relicensing or conveying under this License, you may add to a covered work material governed by the terms of that license document, provided that the further restriction does not survive such relicensing or conveying. + +If you add terms to a covered work in accord with this section, you must place, in the relevant source files, a statement of the additional terms that apply to those files, or a notice indicating where to find the applicable terms. + +Additional terms, permissive or non-permissive, may be stated in the form of a separately written license, or stated as exceptions; the above requirements apply either way. + +8. Termination. +You may not propagate or modify a covered work except as expressly provided under this License. Any attempt otherwise to propagate or modify it is void, and will automatically terminate your rights under this License (including any patent licenses granted under the third paragraph of section 11). + +However, if you cease all violation of this License, then your license from a particular copyright holder is reinstated (a) provisionally, unless and until the copyright holder explicitly and finally terminates your license, and (b) permanently, if the copyright holder fails to notify you of the violation by some reasonable means prior to 60 days after the cessation. + +Moreover, your license from a particular copyright holder is reinstated permanently if the copyright holder notifies you of the violation by some reasonable means, this is the first time you have received notice of violation of this License (for any work) from that copyright holder, and you cure the violation prior to 30 days after your receipt of the notice. + +Termination of your rights under this section does not terminate the licenses of parties who have received copies or rights from you under this License. If your rights have been terminated and not permanently reinstated, you do not qualify to receive new licenses for the same material under section 10. + +9. Acceptance Not Required for Having Copies. +You are not required to accept this License in order to receive or run a copy of the Program. Ancillary propagation of a covered work occurring solely as a consequence of using peer-to-peer transmission to receive a copy likewise does not require acceptance. However, nothing other than this License grants you permission to propagate or modify any covered work. These actions infringe copyright if you do not accept this License. Therefore, by modifying or propagating a covered work, you indicate your acceptance of this License to do so. + +10. Automatic Licensing of Downstream Recipients. +Each time you convey a covered work, the recipient automatically receives a license from the original licensors, to run, modify and propagate that work, subject to this License. You are not responsible for enforcing compliance by third parties with this License. + +An “entity transaction” is a transaction transferring control of an organization, or substantially all assets of one, or subdividing an organization, or merging organizations. If propagation of a covered work results from an entity transaction, each party to that transaction who receives a copy of the work also receives whatever licenses to the work the party's predecessor in interest had or could give under the previous paragraph, plus a right to possession of the Corresponding Source of the work from the predecessor in interest, if the predecessor has it or can get it with reasonable efforts. + +You may not impose any further restrictions on the exercise of the rights granted or affirmed under this License. For example, you may not impose a license fee, royalty, or other charge for exercise of rights granted under this License, and you may not initiate litigation (including a cross-claim or counterclaim in a lawsuit) alleging that any patent claim is infringed by making, using, selling, offering for sale, or importing the Program or any portion of it. + +11. Patents. +A “contributor” is a copyright holder who authorizes use under this License of the Program or a work on which the Program is based. The work thus licensed is called the contributor's “contributor version”. + +A contributor's “essential patent claims” are all patent claims owned or controlled by the contributor, whether already acquired or hereafter acquired, that would be infringed by some manner, permitted by this License, of making, using, or selling its contributor version, but do not include claims that would be infringed only as a consequence of further modification of the contributor version. For purposes of this definition, “control” includes the right to grant patent sublicenses in a manner consistent with the requirements of this License. + +Each contributor grants you a non-exclusive, worldwide, royalty-free patent license under the contributor's essential patent claims, to make, use, sell, offer for sale, import and otherwise run, modify and propagate the contents of its contributor version. + +In the following three paragraphs, a “patent license” is any express agreement or commitment, however denominated, not to enforce a patent (such as an express permission to practice a patent or covenant not to sue for patent infringement). To “grant” such a patent license to a party means to make such an agreement or commitment not to enforce a patent against the party. + +If you convey a covered work, knowingly relying on a patent license, and the Corresponding Source of the work is not available for anyone to copy, free of charge and under the terms of this License, through a publicly available network server or other readily accessible means, then you must either (1) cause the Corresponding Source to be so available, or (2) arrange to deprive yourself of the benefit of the patent license for this particular work, or (3) arrange, in a manner consistent with the requirements of this License, to extend the patent license to downstream recipients. “Knowingly relying” means you have actual knowledge that, but for the patent license, your conveying the covered work in a country, or your recipient's use of the covered work in a country, would infringe one or more identifiable patents in that country that you have reason to believe are valid. + +If, pursuant to or in connection with a single transaction or arrangement, you convey, or propagate by procuring conveyance of, a covered work, and grant a patent license to some of the parties receiving the covered work authorizing them to use, propagate, modify or convey a specific copy of the covered work, then the patent license you grant is automatically extended to all recipients of the covered work and works based on it. + +A patent license is “discriminatory” if it does not include within the scope of its coverage, prohibits the exercise of, or is conditioned on the non-exercise of one or more of the rights that are specifically granted under this License. You may not convey a covered work if you are a party to an arrangement with a third party that is in the business of distributing software, under which you make payment to the third party based on the extent of your activity of conveying the work, and under which the third party grants, to any of the parties who would receive the covered work from you, a discriminatory patent license (a) in connection with copies of the covered work conveyed by you (or copies made from those copies), or (b) primarily for and in connection with specific products or compilations that contain the covered work, unless you entered into that arrangement, or that patent license was granted, prior to 28 March 2007. + +Nothing in this License shall be construed as excluding or limiting any implied license or other defenses to infringement that may otherwise be available to you under applicable patent law. + +12. No Surrender of Others' Freedom. +If conditions are imposed on you (whether by court order, agreement or otherwise) that contradict the conditions of this License, they do not excuse you from the conditions of this License. If you cannot convey a covered work so as to satisfy simultaneously your obligations under this License and any other pertinent obligations, then as a consequence you may not convey it at all. For example, if you agree to terms that obligate you to collect a royalty for further conveying from those to whom you convey the Program, the only way you could satisfy both those terms and this License would be to refrain entirely from conveying the Program. + +13. Use with the GNU Affero General Public License. +Notwithstanding any other provision of this License, you have permission to link or combine any covered work with a work licensed under version 3 of the GNU Affero General Public License into a single combined work, and to convey the resulting work. The terms of this License will continue to apply to the part which is the covered work, but the special requirements of the GNU Affero General Public License, section 13, concerning interaction through a network will apply to the combination as such. + +14. Revised Versions of this License. +The Free Software Foundation may publish revised and/or new versions of the GNU General Public License from time to time. Such new versions will be similar in spirit to the present version, but may differ in detail to address new problems or concerns. + +Each version is given a distinguishing version number. If the Program specifies that a certain numbered version of the GNU General Public License “or any later version” applies to it, you have the option of following the terms and conditions either of that numbered version or of any later version published by the Free Software Foundation. If the Program does not specify a version number of the GNU General Public License, you may choose any version ever published by the Free Software Foundation. + +If the Program specifies that a proxy can decide which future versions of the GNU General Public License can be used, that proxy's public statement of acceptance of a version permanently authorizes you to choose that version for the Program. + +Later license versions may give you additional or different permissions. However, no additional obligations are imposed on any author or copyright holder as a result of your choosing to follow a later version. + +15. Disclaimer of Warranty. +THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM “AS IS” WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION. + +16. Limitation of Liability. +IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MODIFIES AND/OR CONVEYS THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. + +17. Interpretation of Sections 15 and 16. +If the disclaimer of warranty and limitation of liability provided above cannot be given local legal effect according to their terms, reviewing courts shall apply local law that most closely approximates an absolute waiver of all civil liability in connection with the Program, unless a warranty or assumption of liability accompanies a copy of the Program in return for a fee. + +END OF TERMS AND CONDITIONS + +How to Apply These Terms to Your New Programs + +If you develop a new program, and you want it to be of the greatest possible use to the public, the best way to achieve this is to make it free software which everyone can redistribute and change under these terms. + +To do so, attach the following notices to the program. It is safest to attach them to the start of each source file to most effectively state the exclusion of warranty; and each file should have at least the “copyright” line and a pointer to where the full notice is found. + +Swiftly is a server modification plugin for Counter-Strike 2 which is using Metamod:Source and allows developer to mod Source2 games. +Copyright (C) 2025 Sava Andrei-Sebastian + +This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. + +This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. + +You should have received a copy of the GNU General Public License along with this program. If not, see <http://www.gnu.org/licenses/>. + +Also add information on how to contact you by electronic and paper mail. + +If the program does terminal interaction, make it output a short notice like this when it starts in an interactive mode: + +Swiftly Copyright (C) 2025 Sava Andrei-Sebastian +This program comes with ABSOLUTELY NO WARRANTY; for details, read the license at <https://github.com/swiftly-solution/swiftly>. +This is free software, and you are welcome to redistribute it under certain conditions. + +You should also get your employer (if you work as a programmer) or school, if any, to sign a “copyright disclaimer” for the program, if necessary. For more information on this, and how to apply and follow the GNU GPL, see <http://www.gnu.org/licenses/>. + +The GNU General Public License does not permit incorporating your program into proprietary programs. If your program is a subroutine library, you may consider it more useful to permit linking proprietary applications with the library. If this is what you want to do, use the GNU Lesser General Public License instead of this License. But first, please read <http://www.gnu.org/philosophy/why-not-lgpl.html>. \ No newline at end of file diff --git a/PackageScript b/PackageScript new file mode 100644 index 000000000..5321bd526 --- /dev/null +++ b/PackageScript @@ -0,0 +1,100 @@ +# vim: set ts=2 sw=2 tw=99 noet ft=python: +import os + +builder.SetBuildFolder('package') + +metamod_folder = builder.AddFolder(os.path.join('addons', 'metamod')) +bin_folder_path = os.path.join('addons', MMSPlugin.plugin_name, 'bin') +bin_folder = builder.AddFolder(bin_folder_path) + +for cxx in MMSPlugin.all_targets: + if cxx.target.arch == 'x86_64': + if cxx.target.platform == 'windows': + bin64_folder_path = os.path.join('addons', MMSPlugin.plugin_name, 'bin', 'win64') + bin64_folder = builder.AddFolder(bin64_folder_path) + elif cxx.target.platform == 'linux': + bin64_folder_path = os.path.join('addons', MMSPlugin.plugin_name, 'bin', 'linuxsteamrt64') + bin64_folder = builder.AddFolder(bin64_folder_path) + elif cxx.target.platform == 'mac': + bin64_folder_path = os.path.join('addons', MMSPlugin.plugin_name, 'bin', 'osx64') + bin64_folder = builder.AddFolder(bin64_folder_path) + +pdb_list = [] +for task in MMSPlugin.binaries: + # This hardly assumes there's only 1 targetted platform and would be overwritten + # with whatever comes last if multiple are used! + with open(os.path.join(builder.buildPath, MMSPlugin.plugin_name + '.vdf'), 'w') as fp: + fp.write('"Metamod Plugin"\n') + fp.write('{\n') + fp.write(f'\t"alias"\t"{MMSPlugin.plugin_alias}"\n') + if task.target.arch == 'x86_64': + fp.write(f'\t"file"\t"{os.path.join(bin64_folder_path, MMSPlugin.plugin_name)}"\n') + else: + fp.write(f'\t"file"\t"{os.path.join(bin_folder_path, MMSPlugin.plugin_name)}"\n') + fp.write('}\n') + + if task.target.arch == 'x86_64': + builder.AddCopy(task.binary, bin64_folder) + else: + builder.AddCopy(task.binary, bin_folder) + + if task.debug: + pdb_list.append(task.debug) + +builder.AddCopy(os.path.join(builder.buildPath, MMSPlugin.plugin_name + '.vdf'), metamod_folder) + +# Generate PDB info. +with open(os.path.join(builder.buildPath, 'pdblog.txt'), 'wt') as fp: + for line in pdb_list: + fp.write(line.path + '\n') + +bin_folder = builder.AddFolder(os.path.join('addons', MMSPlugin.plugin_name, 'bin')) +bin_scripting_folder = builder.AddFolder(os.path.join('addons', MMSPlugin.plugin_name, 'bin', 'scripting')) +builder.AddCopy(os.path.join(builder.sourcePath, 'plugin_files', 'bin', 'scripting', '0_core.lua'), bin_scripting_folder) +builder.AddCopy(os.path.join(builder.sourcePath, 'plugin_files', 'bin', 'scripting', '0_core.js'), bin_scripting_folder) +builder.AddCopy(os.path.join(builder.sourcePath, 'plugin_files', 'bin', 'scripting', '0_events.lua'), bin_scripting_folder) +builder.AddCopy(os.path.join(builder.sourcePath, 'plugin_files', 'bin', 'scripting', '0_events.js'), bin_scripting_folder) +builder.AddCopy(os.path.join(builder.sourcePath, 'plugin_files', 'bin', 'scripting', '0_sdk.lua'), bin_scripting_folder) +builder.AddCopy(os.path.join(builder.sourcePath, 'plugin_files', 'bin', 'scripting', '0_sdk.js'), bin_scripting_folder) +builder.AddCopy(os.path.join(builder.sourcePath, 'plugin_files', 'bin', 'scripting', '1_database.lua'), bin_scripting_folder) +builder.AddCopy(os.path.join(builder.sourcePath, 'plugin_files', 'bin', 'scripting', '1_database.js'), bin_scripting_folder) +builder.AddCopy(os.path.join(builder.sourcePath, 'plugin_files', 'bin', 'scripting', '1_entity.lua'), bin_scripting_folder) +builder.AddCopy(os.path.join(builder.sourcePath, 'plugin_files', 'bin', 'scripting', '1_entity.js'), bin_scripting_folder) +builder.AddCopy(os.path.join(builder.sourcePath, 'plugin_files', 'bin', 'scripting', '1_exports.lua'), bin_scripting_folder) +builder.AddCopy(os.path.join(builder.sourcePath, 'plugin_files', 'bin', 'scripting', '1_exports.js'), bin_scripting_folder) +builder.AddCopy(os.path.join(builder.sourcePath, 'plugin_files', 'bin', 'scripting', '1_hooks.lua'), bin_scripting_folder) +builder.AddCopy(os.path.join(builder.sourcePath, 'plugin_files', 'bin', 'scripting', '1_hooks.js'), bin_scripting_folder) +builder.AddCopy(os.path.join(builder.sourcePath, 'plugin_files', 'bin', 'scripting', 'serpent.lua'), bin_scripting_folder) +builder.AddCopy(os.path.join(builder.sourcePath, 'plugin_files', 'bin', 'scripting', '1_timers.lua'), bin_scripting_folder) +builder.AddCopy(os.path.join(builder.sourcePath, 'plugin_files', 'bin', 'scripting', '1_timers.js'), bin_scripting_folder) +builder.AddCopy(os.path.join(builder.sourcePath, 'plugin_files', 'bin', 'scripting', '1_utils.lua'), bin_scripting_folder) +builder.AddCopy(os.path.join(builder.sourcePath, 'plugin_files', 'bin', 'scripting', '1_utils.js'), bin_scripting_folder) + +configs_folder = builder.AddFolder(os.path.join('addons', MMSPlugin.plugin_name, 'configs')) +configs_plugins_folder = builder.AddFolder(os.path.join('addons', MMSPlugin.plugin_name, 'configs', 'plugins')) +builder.AddCopy(os.path.join(builder.sourcePath, 'plugin_files', 'configs', 'core.example.json'), configs_folder) +builder.AddCopy(os.path.join(builder.sourcePath, 'plugin_files', 'configs', 'databases.example.json'), configs_folder) +builder.AddCopy(os.path.join(builder.sourcePath, 'plugin_files', 'configs', 'plugins', '.gitignore'), configs_plugins_folder) +builder.AddCopy(os.path.join(builder.sourcePath, 'plugin_files', 'configs', 'chat.example.json'), configs_folder) + +gamedata_folder = builder.AddFolder(os.path.join('addons', MMSPlugin.plugin_name, 'gamedata', 'cs2')) +gamedata_core_folder = builder.AddFolder(os.path.join('addons', MMSPlugin.plugin_name, 'gamedata', 'cs2', 'core')) +builder.AddCopy(os.path.join(builder.sourcePath, 'plugin_files', 'gamedata', 'cs2', 'sdk.json'), gamedata_folder) +builder.AddCopy(os.path.join(builder.sourcePath, 'plugin_files', 'gamedata', 'cs2', 'sdk_types.json'), gamedata_folder) +builder.AddCopy(os.path.join(builder.sourcePath, 'plugin_files', 'gamedata', 'cs2', 'gameevents.json'), gamedata_folder) +builder.AddCopy(os.path.join(builder.sourcePath, 'plugin_files', 'gamedata', 'cs2', 'blocked_fields_by_guidelines.json'), gamedata_folder) +builder.AddCopy(os.path.join(builder.sourcePath, 'plugin_files', 'gamedata', 'cs2', 'core', 'signatures.json'), gamedata_core_folder) +builder.AddCopy(os.path.join(builder.sourcePath, 'plugin_files', 'gamedata', 'cs2', 'core', 'patches.json'), gamedata_core_folder) +builder.AddCopy(os.path.join(builder.sourcePath, 'plugin_files', 'gamedata', 'cs2', 'core', 'offsets.json'), gamedata_core_folder) + +logs_folder = builder.AddFolder(os.path.join('addons', MMSPlugin.plugin_name, 'logs')) +logs_plugins_folder = builder.AddFolder(os.path.join('addons', MMSPlugin.plugin_name, 'logs', 'plugins')) +builder.AddCopy(os.path.join(builder.sourcePath, 'plugin_files', 'logs', '.gitignore'), logs_folder) +builder.AddCopy(os.path.join(builder.sourcePath, 'plugin_files', 'logs', 'plugins', '.gitignore'), logs_plugins_folder) + +plugins_folder = builder.AddFolder(os.path.join('addons', MMSPlugin.plugin_name, 'plugins')) +builder.AddCopy(os.path.join(builder.sourcePath, 'plugin_files', 'plugins', '.gitignore'), plugins_folder) + +translations_folder = builder.AddFolder(os.path.join('addons', MMSPlugin.plugin_name, 'translations')) +builder.AddCopy(os.path.join(builder.sourcePath, 'plugin_files', 'translations', '.gitignore'), translations_folder) +builder.AddCopy(os.path.join(builder.sourcePath, 'plugin_files', 'translations', 'translation.core.json'), translations_folder) \ No newline at end of file diff --git a/README-RU.md b/README-RU.md new file mode 100644 index 000000000..20d10c8e6 --- /dev/null +++ b/README-RU.md @@ -0,0 +1,89 @@ +<br/> +<p align="center"> + <img src="https://sttci.b-cdn.net/status.swiftlycs2.net/2105/logo.png" alt="Swiftly Private Message Logo" width="600" height="131"> + <p align="center"> + Swiftly это плагин для модификации серверов Counter Strike 2 который основан на Metamod:Source 2.x + <br/> + <a href="https://github.com/swiftly-solution/swiftly/issues">Сообщить о ошибке</a> + <a href="https://swiftlycs2.net/discord">Discord Сервер</a> + </p> +</p> + +<div align="center"> + +README также доступен на [английском](https://github.com/swiftly-solution/swiftly/blob/master/README.md) ![en](https://raw.githubusercontent.com/stevenrskelton/flag-icon/master/png/16/country-4x3/gb.png) и [украинском](https://github.com/swiftly-solution/swiftly/blob/master/README-UA.md) ![ua](https://raw.githubusercontent.com/stevenrskelton/flag-icon/master/png/16/country-4x3/ua.png) + +![Downloads](https://img.shields.io/github/downloads/swiftly-solution/swiftly/total) ![Contributors](https://img.shields.io/github/contributors/swiftly-solution/swiftly?color=dark-green) ![Issues](https://img.shields.io/github/issues/swiftly-solution/swiftly) ![License](https://img.shields.io/github/license/swiftly-solution/swiftly) + +</div> + +--- + +### Требования к компиляции + +- [hl2sdk](https://github.com/alliedmodders/hl2sdk/tree/cs2) (Автоматически загружается при клонировании репозитория используя Recurse Submodules) +- [metamod-source](https://github.com/alliedmodders/metamod-source) (Автоматически загружается при клонировании репозитория используя Recurse Submodules) +- [python3](https://www.python.org/) +- [AMBuild](https://github.com/alliedmodders/ambuild) (УБЕДИТЕСЬ ЧТО КОМАНДА `ambuild` ДОСТУПНА ЧЕРЕЗ `PATH` В WINDOWS) + +--- + +### Загрузки + +- [Публичные релизы (рекомендовано)](https://github.com/swiftly-solution/swiftly/releases) +- [Билды (используйте на свой страх и риск)](https://github.com/swiftly-solution/swiftly/actions) + +--- + +### Плагины + +- [Discord (Рекомандовано)](https://swiftlycs2.net/discord) +- [Тема на GitHub](https://github.com/topics/swiftly-solution) + +--- + +### Для разработчиков + +- [Для начинающих](https://swiftlycs2.net/for-beginners) +- [Документация к плагинам](https://swiftlycs2.net/plugin-docs) +- [Документация к дополнениям](https://swiftlycs2.net/ext-docs) +- [SDK документация](https://swiftlycs2.net/sdk) + +--- + +### Команды для компиляции + +#### Клонировать репозиторий + +``` +git clone --recurse-submodules https://github.com/swiftly-solution/swiftly +``` + +#### Компиляция + +``` +./setup.ps1 - Windows +./setup.sh - Linux +``` + +--- + +### Лицензия + +Swiftly распространяется под лицензией MIT. Вы можете ознакомиться с лицензией в файле LICENSE. + +--- + +### Благодарность + +Система схем и базовые классы SDK предоставлены благодаря [CS2Fixes](https://github.com/Source2ZE/CS2Fixes). + +Остальные поля SDK предоставлены благодаря [Source2SDK](https://github.com/neverlosecc/source2sdk/tree/cs2/sdk). + +Спасибо GAMMACASE, Poggu и всем, кто постоянно работает над улучшением сообщества серверов Counter Strike 2. + +--- + +### Статистика + +![Alt](https://repobeats.axiom.co/api/embed/742f846684c4bb9f8314c0a43c2a6b314fc63b6b.svg "Repobeats analytics image") diff --git a/README-UA.md b/README-UA.md new file mode 100644 index 000000000..5813a2169 --- /dev/null +++ b/README-UA.md @@ -0,0 +1,89 @@ +<br/> +<p align="center"> + <img src="https://sttci.b-cdn.net/status.swiftlycs2.net/2105/logo.png" alt="Swiftly Private Message Logo" width="600" height="131"> + <p align="center"> + Swiftly це плагін для модифікації серверів Counter Strike 2 який заснован на Metamod:Source 2.x + <br/> + <a href="https://github.com/swiftly-solution/swiftly/issues">Повідомити про помилку</a> + <a href="https://swiftlycs2.net/discord">Discord Сервер</a> + </p> +</p> + +<div align="center"> + +README також доступний [англійською](https://github.com/swiftly-solution/swiftly/blob/master/README.md) ![en](https://raw.githubusercontent.com/stevenrskelton/flag-icon/master/png/16/country-4x3/gb.png) та [російською](https://github.com/swiftly-solution/swiftly/blob/master/README-RU.md) ![ru](https://raw.githubusercontent.com/stevenrskelton/flag-icon/master/png/16/country-4x3/ru.png) + +![Downloads](https://img.shields.io/github/downloads/swiftly-solution/swiftly/total) ![Contributors](https://img.shields.io/github/contributors/swiftly-solution/swiftly?color=dark-green) ![Issues](https://img.shields.io/github/issues/swiftly-solution/swiftly) ![License](https://img.shields.io/github/license/swiftly-solution/swiftly) + +</div> + +--- + +### Вимоги до компіляції + +- [hl2sdk](https://github.com/alliedmodders/hl2sdk/tree/cs2) (Автоматично завантажується під час клонування репозиторію з використанням Recurse Submodules) +- [metamod-source](https://github.com/alliedmodders/metamod-source) (Автоматично завантажується під час клонування репозиторію з використанням Recurse Submodules) +- [python3](https://www.python.org/) +- [AMBuild](https://github.com/alliedmodders/ambuild) (ПЕРЕКОНАЙТЕСЬ ЩО КОМАНДА `ambuild` ДОСТУПНА ЧЕРЕЗ `PATH` У WINDOWS) + +--- + +### Завантаження + +- [Публічні релізи (рекомендовано)](https://github.com/swiftly-solution/swiftly/releases) +- [Білди (використовуйте на свій страх і ризик)](https://github.com/swiftly-solution/swiftly/actions) + +--- + +### Плагіни + +- [Discord (рекомандовано)](https://swiftlycs2.net/discord) +- [Тема на GitHub](https://github.com/topics/swiftly-solution) + +--- + +### Для розробників + +- [Для початківців](https://swiftlycs2.net/for-beginners) +- [Документація до плагінів](https://swiftlycs2.net/plugin-docs) +- [Документація до доповнень](https://swiftlycs2.net/ext-docs) +- [SDK документація](https://swiftlycs2.net/sdk) + +--- + +### Команди для компіляції + +#### Клонувати репозиторій + +``` +git clone --recurse-submodules https://github.com/swiftly-solution/swiftly +``` + +#### Компіляція + +``` +./setup.ps1 - Windows +./setup.sh - Linux +``` + +--- + +### Ліцензія + +Swiftly поширюється за ліцензією MIT. Ви можете ознайомитись з ліцензією у файлі LICENSE. + +--- + +### Вдячність + +Система схем та базові класи SDK надані завдяки [CS2Fixes](https://github.com/Source2ZE/CS2Fixes). + +Інші поля SDK надані завдяки [Source2SDK](https://github.com/neverlosecc/source2sdk/tree/cs2/sdk). + +Дякуємо GAMMACASE, Poggu та всім, хто постійно працює над покращенням спільноти серверів Counter Strike 2. + +--- + +### Статистика + +![Alt](https://repobeats.axiom.co/api/embed/742f846684c4bb9f8314c0a43c2a6b314fc63b6b.svg "Repobeats analytics image") diff --git a/README.md b/README.md new file mode 100644 index 000000000..c6a54c783 --- /dev/null +++ b/README.md @@ -0,0 +1,89 @@ +<br/> +<p align="center"> + <img src="https://sttci.b-cdn.net/status.swiftlycs2.net/2105/logo.png" alt="Swiftly Private Message Logo" width="600" height="131"> + <p align="center"> + Swiftly is a server modification plugin for Counter Strike 2 servers which is based on Metamod:Source 2.x. + <br/> + <a href="https://github.com/swiftly-solution/swiftly/issues">Report Bug</a> + <a href="https://swiftlycs2.net/discord">Discord Server</a> + </p> +</p> + +<div align="center"> + +README is also available in [Ukrainian](https://github.com/swiftly-solution/swiftly/blob/master/README-UA.md) ![ua](https://raw.githubusercontent.com/stevenrskelton/flag-icon/master/png/16/country-4x3/ua.png) and [Russian](https://github.com/swiftly-solution/swiftly/blob/master/README-RU.md) ![ru](https://raw.githubusercontent.com/stevenrskelton/flag-icon/master/png/16/country-4x3/ru.png) + +![Downloads](https://img.shields.io/github/downloads/swiftly-solution/swiftly/total) ![Contributors](https://img.shields.io/github/contributors/swiftly-solution/swiftly?color=dark-green) ![Issues](https://img.shields.io/github/issues/swiftly-solution/swiftly) ![License](https://img.shields.io/github/license/swiftly-solution/swiftly) + +</div> + +--- + +### Build Requirements + +- [hl2sdk](https://github.com/alliedmodders/hl2sdk/tree/cs2) (Downloads automatically with the git cloning using Recurse Submodules) +- [metamod-source](https://github.com/alliedmodders/metamod-source) (Downloads automatically with the git cloning using Recurse Submodules) +- [python3](https://www.python.org/) +- [AMBuild](https://github.com/alliedmodders/ambuild) (Make sure `ambuild` command is available via `PATH` for Windows) + +--- + +### Downloads + +- [Public Releases (recomended)](https://github.com/swiftly-solution/swiftly/releases) +- [Builds (use at your own risk)](https://github.com/swiftly-solution/swiftly/actions) + +--- + +### Get Plugins + +- [Discord (recomended)](https://swiftlycs2.net/discord) +- [GitHub Topic](https://github.com/topics/swiftly-solution) + +--- + +### For Developers + +- [Beginners](https://swiftlycs2.net/for-beginners) +- [Plugin Docs](https://swiftlycs2.net/plugin-docs) +- [Extension Docs](https://swiftlycs2.net/ext-docs) +- [SDK Docs](https://swiftlycs2.net/sdk) + +--- + +### Building Commands + +#### Clone Repository + +``` +git clone --recurse-submodules https://github.com/swiftly-solution/swiftly +``` + +#### Build + +``` +./setup.ps1 - Windows +./setup.sh - Linux +``` + +--- + +### License + +Swiftly is licensed under the GNU GPL 3 License. You can view the license in the LICENSE file. + +--- + +### Credits + +The Schema System and the base SDK classes fields provided by [CS2Fixes](https://github.com/Source2ZE/CS2Fixes). + +The rest of SDK fields were provided by [Source2SDK](https://github.com/neverlosecc/source2sdk/tree/cs2/sdk). + +Thanks to GAMMACASE, Poggu, and all the people which are constantly working for the Counter Strike 2 Server Community to become better. + +--- + +### Statistics + +![Alt](https://repobeats.axiom.co/api/embed/742f846684c4bb9f8314c0a43c2a6b314fc63b6b.svg "Repobeats analytics image") diff --git a/configure.py b/configure.py new file mode 100644 index 000000000..aee9750cd --- /dev/null +++ b/configure.py @@ -0,0 +1,46 @@ +# vim: set sts=2 ts=8 sw=2 tw=99 et: +import sys +try: + from ambuild2 import run, util +except: + try: + import ambuild + sys.stderr.write('It looks like you have AMBuild 1 installed, but this project uses AMBuild 2.\n') + sys.stderr.write('Upgrade to the latest version of AMBuild to continue.\n') + except: + sys.stderr.write('AMBuild must be installed to build this project.\n') + sys.stderr.write('http://www.alliedmods.net/ambuild\n') + sys.exit(1) + +# Hack to show a decent upgrade message, which wasn't done until 2.2. +ambuild_version = getattr(run, 'CURRENT_API', '2.1') +if ambuild_version.startswith('2.1'): + sys.stderr.write("AMBuild 2.2 or higher is required; please update\n") + sys.exit(1) + +parser = run.BuildParser(sourcePath=sys.path[0], api='2.2') +parser.options.add_argument('-n', '--plugin-name', type=str, dest='plugin_name', default=None, + help='Plugin name') +parser.options.add_argument('-a', '--plugin-alias', type=str, dest='plugin_alias', default=None, + help='Plugin alias') +parser.options.add_argument('--hl2sdk-root', type=str, dest='hl2sdk_root', default=None, + help='Root search folder for HL2SDKs') +parser.options.add_argument('--hl2sdk-manifests', type=str, dest='hl2sdk_manifests', default='hl2sdk-manifests/', + help='HL2SDK manifests source tree folder') +parser.options.add_argument('--mms_path', type=str, dest='mms_path', default=None, + help='Metamod:Source source tree folder') +parser.options.add_argument('--enable-debug', action='store_const', const='1', dest='debug', + help='Enable debugging symbols') +parser.options.add_argument('--enable-optimize', action='store_const', const='1', dest='opt', + help='Enable optimization') +parser.options.add_argument('-s', '--sdks', default='all', dest='sdks', + help='Build against specified SDKs; valid args are "all", "present", or ' + 'comma-delimited list of engine names (default: "all")') +parser.options.add_argument('--targets', type=str, dest='targets', default=None, + help="Override the target architecture (use commas to separate multiple targets).") +# AddressSanitizer Instructions: +# Recompile Metamod with RTLD_DEEPBIND removed (may break some std functionality) +# Run server with LD_PRELOAD=/usr/lib/clang/11/lib/linux/libclang_rt.asan-x86_64.so (for SteamRT3) +parser.options.add_argument('--asan', action='store_const', const='1', dest='asan', + help='Build for AddressSanitizer') +parser.Configure() diff --git a/plugin_files/bin/scripting/0_core.js b/plugin_files/bin/scripting/0_core.js new file mode 100644 index 000000000..a392ad761 --- /dev/null +++ b/plugin_files/bin/scripting/0_core.js @@ -0,0 +1,11 @@ +globalThis.server = Server() +globalThis.logger = Logger() +globalThis.files = Files() +globalThis.precacher = Precacher() +globalThis.playermanager = PlayerManager() +globalThis.commands = Commands() +globalThis.config = Configuration() +globalThis.vgui = VGUI() +globalThis.convar = Convars() +globalThis.db = null +globalThis.menus = Menus() \ No newline at end of file diff --git a/plugin_files/bin/scripting/0_core.lua b/plugin_files/bin/scripting/0_core.lua new file mode 100644 index 000000000..309effec9 --- /dev/null +++ b/plugin_files/bin/scripting/0_core.lua @@ -0,0 +1,11 @@ +server = Server() +logger = Logger() +files = Files() +precacher = Precacher() +playermanager = PlayerManager() +commands = Commands() +config = Configuration() +vgui = VGUI() +convar = Convars() +db = nil +menus = Menus() \ No newline at end of file diff --git a/plugin_files/bin/scripting/0_events.js b/plugin_files/bin/scripting/0_events.js new file mode 100644 index 000000000..dcb6cc27e --- /dev/null +++ b/plugin_files/bin/scripting/0_events.js @@ -0,0 +1,76 @@ +const eventHandlers = {} + +const LoadEventFile = (global) => { + AddGlobalEvents((event, eventName, eventData) => { + if (!eventHandlers.hasOwnProperty(eventName)) return EventResult.Continue + if (eventHandlers[eventName].length <= 0) return EventResult.Continue + + eventData.unshift(event); + + const handlers = eventHandlers[eventName] + for (let i = 0; i < handlers.length; i++) { + if ((typeof handlers[i].handle) == "function") { + const result = (handlers[i].handle.apply(null, eventData) || EventResult.Continue); + if (result != EventResult.Continue) return result + } + } + + return EventResult.Continue + }) + + AddGlobalEventsJSON((event, eventName, eventData) => { + if (!eventHandlers.hasOwnProperty(eventName)) return EventResult.Continue + if (eventHandlers[eventName].length <= 0) return EventResult.Continue + + eventData = JSON.parse(eventData) + eventData.unshift(event); + + const handlers = eventHandlers[eventName] + for (let i = 0; i < handlers.length; i++) { + if ((typeof handlers[i].handle) == "function") { + const result = (handlers[i].handle.apply(null, eventData) || EventResult.Continue); + if (result != EventResult.Continue) return result + } + } + + return EventResult.Continue + }) + + let eventRegistryIndex = 50 + + global.AddEventHandler = (eventName, cb) => { + if (!eventHandlers.hasOwnProperty(eventName)) eventHandlers[eventName] = [] + + eventRegistryIndex = eventRegistryIndex + 1 + eventHandlers[eventName].push({ eventRegistryIndex, handle: cb }) + + RegisterEventHandlerPlugin(eventName) + + return { key: eventRegistryIndex, name: eventName } + } + + global.RemoveEventHandler = (eventData) => { + if (typeof (eventData) != "object" || !eventData.key || !eventData.name) { + console.log("Error: Invalid event data passed to RemoveEventHandler.") + return + } + if (!eventHandlers.hasOwnProperty(eventData.name)) eventHandlers[eventData.name] = [] + + for (let i = 0; i < eventHandlers[eventData.name]; i++) { + if (eventHandlers[eventData.name].eventRegistryIndex == eventData.key) { + eventHandlers[eventData.name].splice(i, 1) + break + } + } + + if (eventHandlers[eventData.name].length == 0) { + RemoveEventHandlerPlugin(eventData.name) + } + } + + global.TriggerEvent = (eventName, ...args) => { + return TriggerEventInternal(eventName, JSON.stringify(args)) + } +} + +LoadEventFile(globalThis) \ No newline at end of file diff --git a/plugin_files/bin/scripting/0_events.lua b/plugin_files/bin/scripting/0_events.lua new file mode 100644 index 000000000..ea692cca1 --- /dev/null +++ b/plugin_files/bin/scripting/0_events.lua @@ -0,0 +1,65 @@ +local eventHandlers = {} +local table_unpack = table.unpack + +local function CallEventCallbacks(event, eventName, ...) + for i = 1, #eventHandlers[eventName] do + local handle = eventHandlers[eventName][i].handle + if type(handle) == "function" then + local result = (handle(event, ...) or EventResult.Continue) + if result ~= EventResult.Continue then return result end + end + end + + return EventResult.Continue +end + +AddGlobalEvents(function(event, eventName, eventData) + if not eventHandlers[eventName] then return EventResult.Continue end + if #eventHandlers[eventName] <= 0 then return EventResult.Continue end + + return CallEventCallbacks(event, eventName, table_unpack(eventData)) +end) + +AddGlobalEventsJSON(function(event, eventName, eventData) + if not eventHandlers[eventName] then return EventResult.Continue end + if #eventHandlers[eventName] <= 0 then return EventResult.Continue end + + return CallEventCallbacks(event, eventName, table_unpack(json.decode(eventData))) +end) + +local eventRegistryIndex = 50 + +function AddEventHandler(eventName, cb) + if not eventHandlers[eventName] then eventHandlers[eventName] = {} end + + eventRegistryIndex = eventRegistryIndex + 1 + table.insert(eventHandlers[eventName], { eventRegistryIndex = eventRegistryIndex, handle = cb }) + + RegisterEventHandlerPlugin(eventName) + + return { key = eventRegistryIndex, name = eventName } +end + +function RemoveEventHandler(eventData) + if not eventData.key or not eventData.name then + print("Error: Invalid event data passed to RemoveEventHandler.") + return + end + if not eventHandlers[eventData.name] then eventHandlers[eventData.name] = {} end + + for i = 1, #eventHandlers[eventData.name] do + if eventHandlers[eventData.name].eventRegistryIndex == eventData.key then + table.remove(eventHandlers[eventData.name], i) + break + end + end + + if #eventHandlers[eventData.name] == 0 then + RemoveEventHandlerPlugin(eventData.name) + end +end + +function TriggerEvent(eventName, ...) + local eventResult, eventData, _ = table_unpack(TriggerEventInternal(eventName, json.encode({...}))) + return eventResult, eventData +end \ No newline at end of file diff --git a/plugin_files/bin/scripting/0_sdk.js b/plugin_files/bin/scripting/0_sdk.js new file mode 100644 index 000000000..326b36ba7 --- /dev/null +++ b/plugin_files/bin/scripting/0_sdk.js @@ -0,0 +1,13 @@ +globalThis.sdk = new Proxy({}, { + get: (obj, key, receiver) => { + if (IsTypeClass(key)) return GenerateTypeFactory(key); + else if (IsSDKClass(key)) return (ptr) => { + let f = GenerateSDKFactory(key, ptr) + return f; + } + else return undefined; + }, + set: (target, key, val, recv) => { + throw SyntaxError("You cannot set values to SDK."); + } +}) \ No newline at end of file diff --git a/plugin_files/bin/scripting/0_sdk.lua b/plugin_files/bin/scripting/0_sdk.lua new file mode 100644 index 000000000..d328677a6 --- /dev/null +++ b/plugin_files/bin/scripting/0_sdk.lua @@ -0,0 +1,23 @@ +_G = setmetatable(_G, { + __index = function(t, k) + if IsSDKClass(k) then + return function(ptr) + return GenerateSDKFactory(k, ptr) + end + elseif IsTypeClass(k) then + return GenerateTypeFactory(k) + end + end +}) + +sdk = setmetatable({}, { + __index = function(t, k) + if IsSDKClass(k) then + return function(ptr) + return GenerateSDKFactory(k, ptr) + end + elseif IsTypeClass(k) then + return GenerateTypeFactory(k) + end + end +}) \ No newline at end of file diff --git a/plugin_files/bin/scripting/1_database.js b/plugin_files/bin/scripting/1_database.js new file mode 100644 index 000000000..7bd5d357e --- /dev/null +++ b/plugin_files/bin/scripting/1_database.js @@ -0,0 +1,21 @@ +function LoadDatabase(global) { + global.databaseRequestsQueue = {} + + AddEventHandler("OnDatabaseActionPerformed", (event, databaseRequestID, result, err) => { + if(!global.databaseRequestsQueue[databaseRequestID]) return; + + let stackid = RegisterCallstack(GetCurrentPluginName(), "DatabaseCallback") + + try { + global.databaseRequestsQueue[databaseRequestID](err, JSON.parse(result)) + } catch(err) { + console.log("An error has been occured while trying to execute a query.\nError: " + err) + } + + delete databaseRequestsQueue[databaseRequestID]; + UnregisterCallstack(GetCurrentPluginName(), stackid) + return EventResult.Stop + }) +} + +LoadDatabase(globalThis) \ No newline at end of file diff --git a/plugin_files/bin/scripting/1_database.lua b/plugin_files/bin/scripting/1_database.lua new file mode 100644 index 000000000..85869bfd6 --- /dev/null +++ b/plugin_files/bin/scripting/1_database.lua @@ -0,0 +1,21 @@ +databaseRequestsQueue = {} +local json_decode = json.decode + +AddEventHandler("OnDatabaseActionPerformed", function(event, databaseRequestID, result, err) + if not databaseRequestsQueue[databaseRequestID] then return EventResult.Continue end + + local debuginfo = debug.getinfo(databaseRequestsQueue[databaseRequestID], "S") + local stackid = RegisterCallstack(GetCurrentPluginName(), + string.format("DatabaseCallback(path=%s,lines=%d..%d)", debuginfo.short_src, debuginfo.linedefined, + debuginfo.lastlinedefined)) + + local status, err = pcall(databaseRequestsQueue[databaseRequestID], err, json_decode(result) or {}) + if not status then + print("An error has been occured while trying to execute a query.\nError: " .. err) + end + + databaseRequestsQueue[databaseRequestID] = nil + UnregisterCallstack(GetCurrentPluginName(), stackid) + + return EventResult.Stop +end) diff --git a/plugin_files/bin/scripting/1_entity.js b/plugin_files/bin/scripting/1_entity.js new file mode 100644 index 000000000..2f3f05f7a --- /dev/null +++ b/plugin_files/bin/scripting/1_entity.js @@ -0,0 +1,14 @@ +const LoadEntities = (global) => { + global.AddHookEntityOutput = (classname, output) => { + if (typeof classname != "string") return console.log("AddHookEntityOutput: classname must be a string."); + if (typeof output != "string") return console.log("AddHookEntityOutput: output must be a string."); + + let hookId = hooks.AddEntityOutputHook(classname, output) + + if (hookId == "00000000-0000-0000-0000-000000000000") return + + return { hookId } + } +} + +LoadEntities(globalThis) \ No newline at end of file diff --git a/plugin_files/bin/scripting/1_entity.lua b/plugin_files/bin/scripting/1_entity.lua new file mode 100644 index 000000000..bf45f9ae4 --- /dev/null +++ b/plugin_files/bin/scripting/1_entity.lua @@ -0,0 +1,18 @@ +function AddHookEntityOutput(classname, output) + if type(classname) ~= "string" then + print("AddHookEntityOutput: classname must be a string.") + return + end + if type(output) ~= "string" then + print("AddHookEntityOutput: output must be a string.") + return + end + + local hookId = hooks:AddEntityOutputHook(classname, output) + + if hookId == "00000000-0000-0000-0000-000000000000" then + return + end + + return { hookId = hookId } +end \ No newline at end of file diff --git a/plugin_files/bin/scripting/1_exports.js b/plugin_files/bin/scripting/1_exports.js new file mode 100644 index 000000000..28282499c --- /dev/null +++ b/plugin_files/bin/scripting/1_exports.js @@ -0,0 +1,39 @@ +function LoadExports(global) { + let pluginProxyCache = {} + + global.exp = (exportName, callback) => { + AddEventHandler(`export:${GetCurrentPluginName()}:${exportName}`, (event, ...args) => { + event.SetReturn(callback.apply(global, args)) + return EventResult.Stop + }) + } + + global.exports = new Proxy({}, { + get: (tbl, pluginName) => { + if (!pluginProxyCache[pluginName]) { + pluginProxyCache[pluginName] = new Proxy({}, { + get: (tbl, funcName) => { + return (...args) => { + let [eventRt, eventData] = TriggerEvent(`export:${pluginName}:${funcName}`, ...args) + if (eventRt != EventResult.Stop) { + console.log(`Export '${funcName}' in '${pluginName}' doesn't exists.`) + } + return eventData.GetReturn() + } + }, + set: (tbl, key, val) => { + console.log("You can't create a new value on this object.") + return false + } + }) + } + return pluginProxyCache[pluginName] + }, + set: (tbl, key, val) => { + console.log("You can't create a new value on this object.") + return false + } + }) +} + +LoadExports(globalThis) \ No newline at end of file diff --git a/plugin_files/bin/scripting/1_exports.lua b/plugin_files/bin/scripting/1_exports.lua new file mode 100644 index 000000000..2816aaddc --- /dev/null +++ b/plugin_files/bin/scripting/1_exports.lua @@ -0,0 +1,53 @@ +local table_unpack = table.unpack + +function export(exportName, callback) + AddEventHandler("export:"..GetCurrentPluginName()..":"..exportName, function(event, ...) + local elems = {...} + for i=1,#elems do + if type(elems[i]) == "string" then + local res, data = serpent.load(elems[i], { safe = false }) + if res == true and type(data) == "function" then + elems[i] = data + end + end + end + + event:SetReturn(callback(table_unpack(elems))) + return EventResult.Stop + end) +end + +exports = {} + +setmetatable(exports, { + __index = function(tbl, pluginName) + local plugin = pluginName + + return setmetatable({}, { + __index = function(tbl, key) + return function(self, ...) + local elems = {...} + for i=1,#elems do + if type(elems[i]) == "function" then + elems[i] = serpent.dump(elems[i]) + end + end + + local eventRt, eventData = TriggerEvent("export:"..plugin..":"..key, table_unpack(elems)) + if eventRt ~= EventResult.Stop then + print("Export '"..key.."' in '"..plugin.."' doesn't exists.") + end + return eventData:GetReturn() + end + end, + + __newindex = function(tbl, key, val) + print("You can't create a new index on this table.") + end + }) + end, + + __newindex = function(tbl, key, val) + print("You can't create a new index on this table.") + end +}) \ No newline at end of file diff --git a/plugin_files/bin/scripting/1_hooks.js b/plugin_files/bin/scripting/1_hooks.js new file mode 100644 index 000000000..8cc86eb68 --- /dev/null +++ b/plugin_files/bin/scripting/1_hooks.js @@ -0,0 +1,97 @@ +function LoadHooks(global) { + global.AddHook = (mem, argsList, returnType) => { + if (typeof argsList !== "string") { + console.log("AddHook: argsList must be a string."); + return; + } + if (typeof returnType !== "string") { + console.log("AddHook: returnType must be a string."); + return; + } + + let hookId = hooks.Add(mem, argsList, returnType); + + if (hookId === "00000000-0000-0000-0000-000000000000") { + return; + } + + return { hookId }; + }; + + global.AddVHook = (library, vtable_name, offset, argsList, returnType) => { + if (typeof argsList !== "string") { + console.log("AddVHook: argsList must be a string."); + return; + } + if (typeof returnType !== "string") { + console.log("AddVHook: returnType must be a string."); + return; + } + + let hookId = hooks.AddVirtual(library, vtable_name, offset, argsList, returnType); + + if (hookId === "00000000-0000-0000-0000-000000000000") { + return; + } + + return { hookId }; + }; + + global.AddPreHookListener = (hookHandle, callback) => { + if (typeof hookHandle !== "object" || hookHandle === null) { + console.log("Error: Invalid hook data passed to AddPreHookListener."); + return; + } + + if (typeof hookHandle.hookId !== "string") { + console.log("Error: Invalid hook data passed to AddPreHookListener."); + return; + } + + return AddEventHandler(`hook:Pre:${hookHandle.hookId}`, callback); + }; + + global.AddPostHookListener = (hookHandle, callback) => { + if (typeof hookHandle !== "object" || hookHandle === null) { + console.log("Error: Invalid hook data passed to AddPostHookListener."); + return; + } + + if (typeof hookHandle.hookId !== "string") { + console.log("Error: Invalid hook data passed to AddPostHookListener."); + return; + } + + return AddEventHandler(`hook:Post:${hookHandle.hookId}`, callback); + }; + + global.RemoveHookListener = (hookListener) => { + if (typeof hookListener !== "object" || hookListener === null) { + console.log("Error: Invalid hook data passed to RemoveHookListener."); + return; + } + + if (!hookListener.key || !hookListener.name) { + console.log("Error: Invalid hook data passed to RemoveHookListener."); + return; + } + + RemoveEventHandler(hookListener); + }; + + global.CallHook = (hookHandle, ...args) => { + if (typeof hookHandle !== "object" || hookHandle === null) { + console.log("Error: Invalid hook data passed to CallHook."); + return; + } + + if (typeof hookHandle.hookId !== "string") { + console.log("Error: Invalid hook data passed to CallHook."); + return; + } + + return hooks.Call(hookHandle.hookId, args); + }; +} + +LoadHooks(globalThis) \ No newline at end of file diff --git a/plugin_files/bin/scripting/1_hooks.lua b/plugin_files/bin/scripting/1_hooks.lua new file mode 100644 index 000000000..76f795eca --- /dev/null +++ b/plugin_files/bin/scripting/1_hooks.lua @@ -0,0 +1,93 @@ +function AddHook(mem, args_list, return_type) + if type(args_list) ~= "string" then + print("AddHook: args_list must be a string.") + return + end + if type(return_type) ~= "string" then + print("AddHook: return_type must be a string.") + return + end + + local hookId = hooks:Add(mem, args_list, return_type) + + if hookId == "00000000-0000-0000-0000-000000000000" then + return + end + + return { hookId = hookId } +end + +function AddVHook(library, vtable_name, offset, args_list, return_type) + if type(args_list) ~= "string" then + print("AddVHook: args_list must be a string.") + return + end + if type(return_type) ~= "string" then + print("AddVHook: return_type must be a string.") + return + end + + local hookId = hooks:AddVirtual(library, vtable_name, offset, args_list, return_type) + + if hookId == "00000000-0000-0000-0000-000000000000" then + return + end + + return { hookId = hookId } +end + +function AddPreHookListener(hookHandle, callback) + if type(hookHandle) ~= "table" then + print("Error: Invalid hook data passed to AddPreHookListener.") + return + end + + if type(hookHandle.hookId) ~= "string" then + print("Error: Invalid hook data passed to AddPreHookListener.") + return + end + + return AddEventHandler("hook:Pre:"..hookHandle.hookId, callback) +end + +function AddPostHookListener(hookHandle, callback) + if type(hookHandle) ~= "table" then + print("Error: Invalid hook data passed to AddPostHookListener.") + return + end + + if type(hookHandle.hookId) ~= "string" then + print("Error: Invalid hook data passed to AddPostHookListener.") + return + end + + return AddEventHandler("hook:Post:"..hookHandle.hookId, callback) +end + +function RemoveHookListener(hookListener) + if type(hookListener) ~= "table" then + print("Error: Invalid hook data passed to RemoveHookListener.") + return + end + + if not hookListener.key or not hookListener.name then + print("Error: Invalid hook data passed to RemoveHookListener.") + return + end + + RemoveEventHandler(hookListener) +end + +function CallHook(hookHandle, ...) + if type(hookHandle) ~= "table" then + print("Error: Invalid hook data passed to AddPostHookListener.") + return + end + + if type(hookHandle.hookId) ~= "string" then + print("Error: Invalid hook data passed to AddPostHookListener.") + return + end + + return hooks:Call(hookHandle.hookId, {...}) +end \ No newline at end of file diff --git a/plugin_files/bin/scripting/1_timers.js b/plugin_files/bin/scripting/1_timers.js new file mode 100644 index 000000000..1373dd06e --- /dev/null +++ b/plugin_files/bin/scripting/1_timers.js @@ -0,0 +1,66 @@ +function LoadTimers(global) { + let timerIds = 50 + let timersList = {} + + global.SetTimeout = (delay, callback) => { + if (typeof delay != "number") return console.log("The delay needs to be a number.") + if (typeof callback != "function") return console.log("The callback needs to be a function.") + + AddTimeout(delay, callback) + } + + global.NextTick = (callback) => { + if (typeof callback != "function") return console.log("The callback needs to be a function.") + + global.SetTimeout(1, callback) + } + + global.StopTimer = (timerId) => { + if (typeof timerId !== "number") { + console.log("The Timer ID needs to be a number."); + return; + } + + if (!timersList[timerId]) { + console.log("Invalid Timer ID."); + return; + } + + delete timersList[timerId]; + } + + global.SetTimer = (delay, callback) => { + if (typeof delay != "number") return console.log("The delay needs to be a number.") + if (typeof callback != "function") return console.log("The callback needs to be a function.") + + timerIds++ + const timerId = timerIds + + timersList[timerId] = { + id: timerId, + callback, + timeoutFunc: () => { + if (timersList[timerId]) { + timersList[timerId].callback() + if (timersList[timerId]) { + SetTimeout(delay, timersList[timerId].timeoutFunc) + } + } + } + } + + SetTimeout(delay, timersList[timerId].timeoutFunc) + + return timerId + } + + global.setInterval = (callback, timeout) => { + return SetTimer(timeout, callback) + } + + global.setTimeout = (callback, timeout) => { + return SetTimeout(timeout, callback) + } +} + +LoadTimers(globalThis) \ No newline at end of file diff --git a/plugin_files/bin/scripting/1_timers.lua b/plugin_files/bin/scripting/1_timers.lua new file mode 100644 index 000000000..50edb07a9 --- /dev/null +++ b/plugin_files/bin/scripting/1_timers.lua @@ -0,0 +1,68 @@ +function SetTimeout(delay, callback) + if type(delay) ~= "number" then + return print("The delay needs to be a number.") + end + if type(callback) ~= "function" then + return print("The callback needs to be a function.") + end + + AddTimeout(delay, callback) +end + +local timerIds = 50 +local timersTable = {} + +function SetTimer(delay, callback) + if type(delay) ~= "number" then + return print("The delay needs to be a number.") + end + if type(callback) ~= "function" then + return print("The callback needs to be a function.") + end + + timerIds = timerIds + 1 + + local timerId = timerIds + + timersTable[timerId] = { + id = timerId, + callback = callback, + timeoutFunction = function() + if timersTable[timerId] then + local debuginfo = debug.getinfo(timersTable[timerId].callback, "S") + local stackid = RegisterCallstack(GetCurrentPluginName(), + string.format("TimeoutCallback(path=%s,lines=%d..%d)", debuginfo.short_src, debuginfo.linedefined, + debuginfo.lastlinedefined)) + timersTable[timerId].callback() + UnregisterCallstack(GetCurrentPluginName(), stackid) + if timersTable[timerId] then + SetTimeout(delay, timersTable[timerId].timeoutFunction) + end + end + end + } + + SetTimeout(delay, timersTable[timerId].timeoutFunction) + + return timerId +end + +function StopTimer(timerId) + if type(timerId) ~= "number" then + return print("The Timer ID needs to be a number.") + end + + if not timersTable[timerId] then + return print("Invalid Timer ID.") + end + + timersTable[timerId] = nil +end + +function NextTick(callback) + if type(callback) ~= "function" then + return print("The callback needs to be a function.") + end + + SetTimeout(1, callback) +end diff --git a/plugin_files/bin/scripting/1_utils.js b/plugin_files/bin/scripting/1_utils.js new file mode 100644 index 000000000..e90668944 --- /dev/null +++ b/plugin_files/bin/scripting/1_utils.js @@ -0,0 +1,178 @@ +function LoadUtils(global) { + const teamSelector = { + "@ct": Team.CT, + "@t": Team.T, + "@spec": Team.Spectator + } + + const lifeStateSelector = { + "@alive": sdk.LifeState_t.LIFE_ALIVE, + "@dying": sdk.LifeState_t.LIFE_DYING, + "@dead": sdk.LifeState_t.LIFE_DEAD + } + + const weaponlist = [ + "weapon_ak47", + "weapon_aug", + "weapon_awp", + "weapon_bizon", + "weapon_c4", + "weapon_cz75a", + "weapon_deagle", + "weapon_decoy", + "weapon_elite", + "weapon_famas", + "weapon_fiveseven", + "weapon_flashbang", + "weapon_g3sg1", + "weapon_galilar", + "weapon_glock", + "weapon_healthshot", + "weapon_hegrenade", + "weapon_incgrenade", + "weapon_knife", + "weapon_m249", + "weapon_m4a1", + "weapon_mac10", + "weapon_mag7", + "weapon_molotov", + "weapon_mp5sd", + "weapon_mp7", + "weapon_mp9", + "weapon_negev", + "weapon_nova", + "weapon_p2000", + "weapon_p250", + "weapon_p90", + "weapon_sawedoff", + "weapon_scar20", + "weapon_sg556", + "weapon_smokegrenade", + "weapon_ssg08", + "weapon_tec9", + "weapon_ump45", + "weapon_usp_silencer", + "weapon_xm1014" + ] + + const itemlist = [ + "item_assaultsuit", + "item_defuser", + "item_kevlar", + ] + + global.IsValidWeapon = (weapon) => { + return weaponlist.includes(weapon) + } + + global.IsValidItem = (item) => { + return itemlist.includes(item) + } + + global.ComputePrettyTime = (seconds) => { + if (seconds == 0) return FetchTranslation("core.forever") + else if (seconds < 60) return FetchTranslation("core.seconds").replace(new RegExp("{TIME}", "g"), String(seconds)) + else if (seconds < 3600) return FetchTranslation("core.minutes").replace(new RegExp("{TIME}", "g"), String(Math.floor(seconds / 60))) + else if (seconds < 86400) return FetchTranslation("core.hours").replace(new RegExp("{TIME}", "g"), String(Math.floor(seconds / 3600))) + else return FetchTranslation("core.days").replace(new RegExp("{TIME}", "g"), String(Math.floor(seconds / 86400))) + } + + global.uuid = () => { + const uuid = new Array(36); + for (let i = 0; i < 36; i++) { + uuid[i] = Math.floor(Math.random() * 16); + } + uuid[14] = 4; + uuid[19] = uuid[19] &= ~(1 << 2); + uuid[19] = uuid[19] |= (1 << 3); + uuid[8] = uuid[13] = uuid[18] = uuid[23] = '-'; + return uuid.map((x) => x.toString(16)).join(''); + } + + global.ReplyToCommand = (playerid, prefix, str) => { + if (playerid == -1) { + console.log(str) + } else { + const player = GetPlayer(playerid) + if (!player) return; + if (player.IsFakeClient()) return; + player.SendMsg(MessageType.Chat, `${prefix} ${str}`) + } + } + + global.FindPlayersByTarget = (target, matchbots) => { + if (matchbots == null || matchbots == undefined) matchbots = true; + + let matchedPlayers = [] + + for (let i = 0; i < playermanager.GetPlayerCap(); i++) { + const player = GetPlayer(i) + if (!player) continue; + + if (target == "@all") { + matchedPlayers.push(player) + continue; + } + + if (target.startsWith("#")) { + const pid = target.split("#").pop() + if (pid == undefined) continue; + + if (String(i) == String(pid)) { + matchedPlayers.push(player) + continue + } + } + + if (teamSelector[target]) { + const cbaseentity = sdk.CBaseEntity(player.CCSPlayerPawn()) + if (cbaseentity) { + if (cbaseentity.IsValid()) { + if (cbaseentity.TeamNum == teamSelector[target]) { + matchedPlayers.push(player) + continue + } + } + } + } + + if (lifeStateSelector[target]) { + const cbaseentity = sdk.CBaseEntity(player.CCSPlayerPawn()) + if (cbaseentity) { + if (cbaseentity.IsValid()) { + if (cbaseentity.LifeState == lifeStateSelector[target]) { + matchedPlayers.push(player) + continue + } + } + } + } + + if (String(player.GetSteamID()) == target || player.GetSteamID2() == target) { + matchedPlayers.push(player) + continue; + } + + const controller = player.CBasePlayerController() + if (controller) { + if (controller.IsValid()) { + if (controller.PlayerName.includes(target)) { + matchedPlayers.push(player) + continue; + } + } + } + + const [result, eventRet] = TriggerEvent("FindPlayerByTarget", i, target) + const returnValue = eventRet.GetReturn() + if (returnValue == true) { + matchedPlayers.push(player) + continue + } + } + + return matchedPlayers + } +} + +LoadUtils(globalThis) \ No newline at end of file diff --git a/plugin_files/bin/scripting/1_utils.lua b/plugin_files/bin/scripting/1_utils.lua new file mode 100644 index 000000000..571a0a386 --- /dev/null +++ b/plugin_files/bin/scripting/1_utils.lua @@ -0,0 +1,268 @@ +local teamSelector = { + ["@ct"] = Team.CT, + ["@t"] = Team.T, + ["@spec"] = Team.Spectator +} + +local lifeStateSelector = { + ["@alive"] = sdk.LifeState_t.LIFE_ALIVE, + ["@dying"] = sdk.LifeState_t.LIFE_DYING, + ["@dead"] = sdk.LifeState_t.LIFE_DEAD +} + +function FindPlayersByTarget(target, matchbots) + if matchbots == nil then matchbots = true end + local matchedPlayers = {} + target = tostring(target) + + for i=0,playermanager:GetPlayerCap()-1,1 do + local fetchedPlayer = GetPlayer(i) + if not fetchedPlayer then goto findplayersbytargetcontinue end + + if fetchedPlayer:IsFakeClient() and not matchbots then goto findplayersbytargetcontinue end + + if target == "@all" then + table.insert(matchedPlayers, fetchedPlayer) + goto findplayersbytargetcontinue + end + + --[[ userid ]] + if target:sub(1,1) == "#" then + local playerid = target:sub(2) + if playerid then + if i == tonumber(playerid) then + table.insert(matchedPlayers, fetchedPlayer) + goto findplayersbytargetcontinue + end + end + end + + --[[ team ]] + if teamSelector[target] then + local cbaseentity = CBaseEntity(fetchedPlayer:CCSPlayerPawn()) + if cbaseentity then + if cbaseentity:IsValid() then + if cbaseentity.TeamNum == teamSelector[target] then + table.insert(matchedPlayers, fetchedPlayer) + goto findplayersbytargetcontinue + end + end + end + end + + --[[ life state ]] + if lifeStateSelector[target] then + local cbaseentity = CBaseEntity(fetchedPlayer:CCSPlayerPawn()) + if cbaseentity then + if cbaseentity:IsValid() then + if cbaseentity.LifeState == lifeStateSelector[target] then + table.insert(matchedPlayers, fetchedPlayer) + goto findplayersbytargetcontinue + end + end + end + end + + --[[ steamid, steamid64, name ]] + if tostring(fetchedPlayer:GetSteamID()) == target or fetchedPlayer:GetSteamID2() == target then + table.insert(matchedPlayers, fetchedPlayer) + goto findplayersbytargetcontinue + end + + local cbaseplayercontroller = fetchedPlayer:CBasePlayerController() + if cbaseplayercontroller then + if cbaseplayercontroller:IsValid() then + if cbaseplayercontroller.PlayerName:find(target) then + table.insert(matchedPlayers, fetchedPlayer) + goto findplayersbytargetcontinue + end + end + end + + local result, eventRet = TriggerEvent("FindPlayerByTarget", i, target) + local returnValue = eventRet:GetReturn() + if returnValue == true then + table.insert(matchedPlayers, fetchedPlayer) + goto findplayersbytargetcontinue + end + + ::findplayersbytargetcontinue:: + end + + return matchedPlayers +end + +function ReplyToCommand(playerid, prefix, str) + if playerid == -1 then + print(str) + else + local player = GetPlayer(playerid) + if not player then return end + if player:IsFakeClient() then return end + player:SendMsg(MessageType.Chat, prefix.." "..str) + end +end + +local random = math.random +function uuid() + local template ='xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx' + return string.gsub(template, '[xy]', function (c) + local v = (c == 'x') and random(0, 0xf) or random(8, 0xb) + return string.format('%x', v) + end) +end + +function ComputePrettyTime(seconds) + if seconds == 0 then return FetchTranslation("core.forever") + elseif seconds < 60 then return FetchTranslation("core.seconds"):gsub("{TIME}", seconds) + elseif seconds < 3600 then return FetchTranslation("core.minutes"):gsub("{TIME}", math.floor(seconds / 60)) + elseif seconds < 86400 then return FetchTranslation("core.hours"):gsub("{TIME}", math.floor(seconds / 3600)) + else return FetchTranslation("core.days"):gsub("{TIME}", math.floor(seconds / 86400)) end +end + +string.split = function(str, split) + local splitted = {} + for split in string.gmatch(str or "", "[^"..split.."]+") do + table.insert(splitted, split) + end + return splitted +end + +--- @param str string +--- @return string +string.trim = function(str) + return (str:gsub("^%s*(.-)%s*$", "%1")) +end + + +--- @param value any The value to be matched against. Can be a number or a string. +--- @param cases table +--- @return any Returns +switch = function(value, cases) + local case = cases[value] + if case then + if type(case) == "function" then + return case() + else + return case + end + elseif cases.default then + if type(cases.default) == "function" then + return cases.default() + else + return cases.default + end + end +end + +--- @param tbl table The table to be mapped. +--- @param func function A function that takes a value and key as parameters and returns a new value. +--- @return table A new table with the transformed values. +table.map = function(tbl, func) + local result = {} + for key, value in next, tbl do + result[key] = func(value, key) + end + return result +end + +--- @param tbl table The table to be filtered. +--- @param predicate function A function that takes a value and key as parameters and returns a boolean. +--- @return table A new table containing only the elements for which the predicate returned true. +table.filter = function(tbl, predicate) + local result = {} + local index = 1 + for key, value in next, tbl do + if predicate(value, key) then + result[index] = value + index = index + 1 + end + end + return result +end + +--- @param tbl table The table to search. +--- @param value any the key to search for. +--- @return number|nil The key returned. +table.find = function(tbl, value) + for key, val in next, tbl do + if val == value then + return key + end + end + return nil +end + +--- @param tbl table The table to search. +--- @param value any The value to search for. +--- @return boolean True if the value exists in the table, false otherwise. +table.contains = function(tbl, value) + for _, val in next, tbl do + if val == value then + return true + end + end + return false +end + +local weaponlist = { + ["weapon_ak47"] = true, + ["weapon_aug"] = true, + ["weapon_awp"] = true, + ["weapon_bizon"] = true, + ["weapon_c4"] = true, + ["weapon_cz75a"] = true, + ["weapon_deagle"] = true, + ["weapon_decoy"] = true, + ["weapon_elite"] = true, + ["weapon_famas"] = true, + ["weapon_fiveseven"] = true, + ["weapon_flashbang"] = true, + ["weapon_g3sg1"] = true, + ["weapon_galilar"] = true, + ["weapon_glock"] = true, + ["weapon_healthshot"] = true, + ["weapon_hegrenade"] = true, + ["weapon_incgrenade"] = true, + ["weapon_knife"] = true, + ["weapon_m249"] = true, + ["weapon_m4a1"] = true, + ["weapon_mac10"] = true, + ["weapon_mag7"] = true, + ["weapon_molotov"] = true, + ["weapon_mp5sd"] = true, + ["weapon_mp7"] = true, + ["weapon_mp9"] = true, + ["weapon_negev"] = true, + ["weapon_nova"] = true, + ["weapon_p2000"] = true, + ["weapon_p250"] = true, + ["weapon_p90"] = true, + ["weapon_sawedoff"] = true, + ["weapon_scar20"] = true, + ["weapon_sg556"] = true, + ["weapon_smokegrenade"] = true, + ["weapon_ssg08"] = true, + ["weapon_tec9"] = true, + ["weapon_ump45"] = true, + ["weapon_usp_silencer"] = true, + ["weapon_xm1014"] = true +} + +-- In the future, we may need to add more items here. +-- For now, I've only added the ones that are working. +local itemlist = { + ["item_assaultsuit"] = true, -- Kevlar + Helmet + ["item_defuser"] = true, -- Defuse Kit + ["item_kevlar"] = true -- Kevlar +} + +-- Function to check if the weapon is valid +function IsValidWeapon(weapon) + return weaponlist[weapon] ~= nil +end + +-- Function to check if the item is valid +function IsValidItem(item) + return itemlist[item] ~= nil +end diff --git a/plugin_files/bin/scripting/serpent.lua b/plugin_files/bin/scripting/serpent.lua new file mode 100644 index 000000000..972314c6f --- /dev/null +++ b/plugin_files/bin/scripting/serpent.lua @@ -0,0 +1,181 @@ +--[[ +GitHub: https://github.com/pkulchenko/serpent/tree/139fc18263bc5ffecc1729147891f1eb383046bf + +Serpent source is released under the MIT License + +Copyright (c) 2012-2018 Paul Kulchenko (paul@kulchenko.com) + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in +all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +THE SOFTWARE. +]] + +local n, v = "serpent", "0.303" -- (C) 2012-18 Paul Kulchenko; MIT License +local c, d = "Paul Kulchenko", "Lua serializer and pretty printer" +local snum = {[tostring(1/0)]='1/0 --[[math.huge]]',[tostring(-1/0)]='-1/0 --[[-math.huge]]',[tostring(0/0)]='0/0'} +local badtype = {thread = true, userdata = true, cdata = true} +local getmetatable = debug and debug.getmetatable or getmetatable +local pairs = function(t) return next, t end -- avoid using __pairs in Lua 5.2+ +local keyword, globals, G = {}, {}, (_G or _ENV) +for _,k in ipairs({'and', 'break', 'do', 'else', 'elseif', 'end', 'false', + 'for', 'function', 'goto', 'if', 'in', 'local', 'nil', 'not', 'or', 'repeat', + 'return', 'then', 'true', 'until', 'while'}) do keyword[k] = true end +for k,v in pairs(G) do globals[v] = k end -- build func to name mapping +for _,g in ipairs({'coroutine', 'debug', 'io', 'math', 'string', 'table', 'os'}) do + for k,v in pairs(type(G[g]) == 'table' and G[g] or {}) do globals[v] = g..'.'..k end end + +local function s(t, opts) + local name, indent, fatal, maxnum = opts.name, opts.indent, opts.fatal, opts.maxnum + local sparse, custom, huge = opts.sparse, opts.custom, not opts.nohuge + local space, maxl = (opts.compact and '' or ' '), (opts.maxlevel or math.huge) + local maxlen, metatostring = tonumber(opts.maxlength), opts.metatostring + local iname, comm = '_'..(name or ''), opts.comment and (tonumber(opts.comment) or math.huge) + local numformat = opts.numformat or "%.17g" + local seen, sref, syms, symn = {}, {'local '..iname..'={}'}, {}, 0 + local function gensym(val) return '_'..(tostring(tostring(val)):gsub("[^%w]",""):gsub("(%d%w+)", + -- tostring(val) is needed because __tostring may return a non-string value + function(s) if not syms[s] then symn = symn+1; syms[s] = symn end return tostring(syms[s]) end)) end + local function safestr(s) return type(s) == "number" and (huge and snum[tostring(s)] or numformat:format(s)) + or type(s) ~= "string" and tostring(s) -- escape NEWLINE/010 and EOF/026 + or ("%q"):format(s):gsub("\010","n"):gsub("\026","\\026") end + -- handle radix changes in some locales + if opts.fixradix and (".1f"):format(1.2) ~= "1.2" then + local origsafestr = safestr + safestr = function(s) return type(s) == "number" + and (nohuge and snum[tostring(s)] or numformat:format(s):gsub(",",".")) or origsafestr(s) + end + end + local function comment(s,l) return comm and (l or 0) < comm and ' --[['..select(2, pcall(tostring, s))..']]' or '' end + local function globerr(s,l) return globals[s] and globals[s]..comment(s,l) or not fatal + and safestr(select(2, pcall(tostring, s))) or error("Can't serialize "..tostring(s)) end + local function safename(path, name) -- generates foo.bar, foo[3], or foo['b a r'] + local n = name == nil and '' or name + local plain = type(n) == "string" and n:match("^[%l%u_][%w_]*$") and not keyword[n] + local safe = plain and n or '['..safestr(n)..']' + return (path or '')..(plain and path and '.' or '')..safe, safe end + local alphanumsort = type(opts.sortkeys) == 'function' and opts.sortkeys or function(k, o, n) -- k=keys, o=originaltable, n=padding + local maxn, to = tonumber(n) or 12, {number = 'a', string = 'b'} + local function padnum(d) return ("%0"..tostring(maxn).."d"):format(tonumber(d)) end + table.sort(k, function(a,b) + -- sort numeric keys first: k[key] is not nil for numerical keys + return (k[a] ~= nil and 0 or to[type(a)] or 'z')..(tostring(a):gsub("%d+",padnum)) + < (k[b] ~= nil and 0 or to[type(b)] or 'z')..(tostring(b):gsub("%d+",padnum)) end) end + local function val2str(t, name, indent, insref, path, plainindex, level) + local ttype, level, mt = type(t), (level or 0), getmetatable(t) + local spath, sname = safename(path, name) + local tag = plainindex and + ((type(name) == "number") and '' or name..space..'='..space) or + (name ~= nil and sname..space..'='..space or '') + if seen[t] then -- already seen this element + sref[#sref+1] = spath..space..'='..space..seen[t] + return tag..'nil'..comment('ref', level) + end + -- protect from those cases where __tostring may fail + if type(mt) == 'table' and metatostring ~= false then + local to, tr = pcall(function() return mt.__tostring(t) end) + local so, sr = pcall(function() return mt.__serialize(t) end) + if (to or so) then -- knows how to serialize itself + seen[t] = insref or spath + t = so and sr or tr + ttype = type(t) + end -- new value falls through to be serialized + end + if ttype == "table" then + if level >= maxl then return tag..'{}'..comment('maxlvl', level) end + seen[t] = insref or spath + if next(t) == nil then return tag..'{}'..comment(t, level) end -- table empty + if maxlen and maxlen < 0 then return tag..'{}'..comment('maxlen', level) end + local maxn, o, out = math.min(#t, maxnum or #t), {}, {} + for key = 1, maxn do o[key] = key end + if not maxnum or #o < maxnum then + local n = #o -- n = n + 1; o[n] is much faster than o[#o+1] on large tables + for key in pairs(t) do + if o[key] ~= key then n = n + 1; o[n] = key end + end + end + if maxnum and #o > maxnum then o[maxnum+1] = nil end + if opts.sortkeys and #o > maxn then alphanumsort(o, t, opts.sortkeys) end + local sparse = sparse and #o > maxn -- disable sparsness if only numeric keys (shorter output) + for n, key in ipairs(o) do + local value, ktype, plainindex = t[key], type(key), n <= maxn and not sparse + if opts.valignore and opts.valignore[value] -- skip ignored values; do nothing + or opts.keyallow and not opts.keyallow[key] + or opts.keyignore and opts.keyignore[key] + or opts.valtypeignore and opts.valtypeignore[type(value)] -- skipping ignored value types + or sparse and value == nil then -- skipping nils; do nothing + elseif ktype == 'table' or ktype == 'function' or badtype[ktype] then + if not seen[key] and not globals[key] then + sref[#sref+1] = 'placeholder' + local sname = safename(iname, gensym(key)) -- iname is table for local variables + sref[#sref] = val2str(key,sname,indent,sname,iname,true) + end + sref[#sref+1] = 'placeholder' + local path = seen[t]..'['..tostring(seen[key] or globals[key] or gensym(key))..']' + sref[#sref] = path..space..'='..space..tostring(seen[value] or val2str(value,nil,indent,path)) + else + out[#out+1] = val2str(value,key,indent,nil,seen[t],plainindex,level+1) + if maxlen then + maxlen = maxlen - #out[#out] + if maxlen < 0 then break end + end + end + end + local prefix = string.rep(indent or '', level) + local head = indent and '{\n'..prefix..indent or '{' + local body = table.concat(out, ','..(indent and '\n'..prefix..indent or space)) + local tail = indent and "\n"..prefix..'}' or '}' + return (custom and custom(tag,head,body,tail,level) or tag..head..body..tail)..comment(t, level) + elseif badtype[ttype] then + seen[t] = insref or spath + return tag..globerr(t, level) + elseif ttype == 'function' then + seen[t] = insref or spath + if opts.nocode then return tag.."function() --[[..skipped..]] end"..comment(t, level) end + local ok, res = pcall(string.dump, t, true) + local func = ok and "((loadstring or load)("..safestr(res)..",'@serialized'))"..comment(t, level) + return tag..(func or globerr(t, level)) + else return tag..safestr(t) end -- handle all other types + end + local sepr = indent and "\n" or ";"..space + local body = val2str(t, name, indent) -- this call also populates sref + local tail = #sref>1 and table.concat(sref, sepr)..sepr or '' + local warn = opts.comment and #sref>1 and space.."--[[incomplete output with shared/self-references skipped]]" or '' + return not name and body..warn or "do local "..body..sepr..tail.."return "..name..sepr.."end" +end + +local function deserialize(data, opts) + local env = (opts and opts.safe == false) and G + or setmetatable({}, { + __index = function(t,k) return t end, + __call = function(t,...) error("cannot call functions") end + }) + local f, res = (loadstring or load)('return '..data, nil, nil, env) + if not f then f, res = (loadstring or load)(data, nil, nil, env) end + if not f then return f, res end + if setfenv then setfenv(f, env) end + return pcall(f) +end + +local function merge(a, b) if b then for k,v in pairs(b) do a[k] = v end end; return a; end + +serpent = { + serialize = s, + load = deserialize, + dump = function(a, opts) return s(a, merge({name = '_', compact = true, sparse = true}, opts)) end, + line = function(a, opts) return s(a, merge({sortkeys = true, comment = true}, opts)) end, + block = function(a, opts) return s(a, merge({indent = ' ', sortkeys = true, comment = true}, opts)) end +} \ No newline at end of file diff --git a/plugin_files/configs/chat.example.json b/plugin_files/configs/chat.example.json new file mode 100644 index 000000000..cf551fe51 --- /dev/null +++ b/plugin_files/configs/chat.example.json @@ -0,0 +1,18 @@ +{ + "Cstrike_Chat_T": "[T] {TAG}{NAME}: {MESSAGE}", + "Cstrike_Chat_T_Loc": "[T] {TAG}{NAME} {GREEN}@{LOCATION}: {MESSAGE}", + "Cstrike_Chat_T_Dead": "[T] {TAG}{NAME} {GREY}[DEAD]{DEFAULT}: {MESSAGE}", + "Cstrike_Chat_CT": "[CT] {TAG}{NAME}: {MESSAGE}", + "Cstrike_Chat_CT_Loc": "[CT] {TAG}{NAME} {GREEN}@{LOCATION}: {MESSAGE}", + "Cstrike_Chat_CT_Dead": "[CT] {TAG}{NAME} {GREY}[DEAD]{DEFAULT}: {MESSAGE}", + "Cstrike_Chat_All": "[ALL] {TAG}{NAME}: {MESSAGE}", + "Cstrike_Chat_AllDead": "[ALL] {TAG}{NAME}: {MESSAGE}", + "Cstrike_Chat_AllSpec": "[ALL] {TAG}{NAME} {DEFAULT}[SPEC]: {MESSAGE}", + "Cstrike_Chat_Spec": "{TAG}{NAME} {DEFAULT}[SPEC]: {MESSAGE}", + "#SFUI_TitlesTXT_Fire_in_the_hole": "{NAME}{GREEN}@{LOCATION}{red}➟ HE Grenade!", + "#SFUI_TitlesTXT_Molotov_in_the_hole": "{NAME}{GREEN}@{LOCATION}{red}➟ Molotov!", + "#SFUI_TitlesTXT_Flashbang_in_the_hole": "{NAME}{GREEN}@{LOCATION}{blue}➟ Flashbang!", + "#SFUI_TitlesTXT_Incendiary_in_the_hole": "{NAME}{GREEN}@{LOCATION}{red}➟ Incendiary!", + "#SFUI_TitlesTXT_Smoke_in_the_hole": "{NAME}{GREEN}@{LOCATION}{grey}➟ Smooke!", + "#SFUI_TitlesTXT_Decoy_in_the_hole": "{NAME}{GREEN}@{LOCATION}{default}➟ Decoy!" +} \ No newline at end of file diff --git a/plugin_files/configs/core.example.json b/plugin_files/configs/core.example.json new file mode 100644 index 000000000..d14d95019 --- /dev/null +++ b/plugin_files/configs/core.example.json @@ -0,0 +1,78 @@ +{ + "logging": { + "enabled": true, + "mode": "daily", + "save_core_messages": false + }, + "commandPrefixes": [ + "!" + ], + "commandSilentPrefixes": [ + "/" + ], + "console_filtering": true, + "language": "en", + "use_player_language": true, + "patches_to_perform": [], + "CS2ServerGuidelines": "https://blog.counter-strike.net/index.php/server_guidelines/", + "FollowCS2ServerGuidelines": true, + "menu": { + "navigation_prefix" : "➤", + "sound": { + "use": { + "name": "Vote.Cast.Yes", + "volume": 0.75 + }, + "scroll": { + "name": "UI.ContractType", + "volume": 0.75 + }, + "exit": { + "name": "Vote.Failed", + "volume": 0.75 + } + }, + "buttons": { + "use": "e", + "scroll": "shift", + "exit": { + "option": false, + "button": "tab" + } + }, + "kind": "screen", + "available_kinds": ["screen", "center"], + "available_inputmodes": ["chat", "button"], + "inputMode": "button", + "kind_settings": { + "center": { + "itemsPerPage": 7 + }, + "screen": { + "mode": "compatibility", + "modes": { + "compatibility": { + "x": 0.14, + "y": 0.68, + "fontSize": 35, + "font": "Sans Serif" + }, + "normal": { + "x": 0.00, + "y": 0.68, + "fontSize": 35, + "font": "Sans Serif" + } + }, + "drawBackground": true, + "itemsPerPage": 9 + } + } + }, + "vgui": { + "textBackground": { + "paddingX": 0.1, + "paddingY": 0.1 + } + } +} \ No newline at end of file diff --git a/plugin_files/configs/databases.example.json b/plugin_files/configs/databases.example.json new file mode 100644 index 000000000..29f6336fa --- /dev/null +++ b/plugin_files/configs/databases.example.json @@ -0,0 +1,18 @@ +{ + "default_connection": { + "kind": "mysql", + "hostname": "127.0.0.1", + "username": "root", + "password": "", + "database": "testdb", + "port": 3306 + }, + "swiftly_admins": { + "kind": "mysql", + "hostname": "127.0.0.1", + "username": "root", + "password": "", + "database": "testdb", + "port": 3306 + } +} \ No newline at end of file diff --git a/plugin_files/configs/plugins/.gitignore b/plugin_files/configs/plugins/.gitignore new file mode 100644 index 000000000..e69de29bb diff --git a/plugin_files/gamedata/cs2/blocked_fields_by_guidelines.json b/plugin_files/gamedata/cs2/blocked_fields_by_guidelines.json new file mode 100644 index 000000000..17fb6d741 --- /dev/null +++ b/plugin_files/gamedata/cs2/blocked_fields_by_guidelines.json @@ -0,0 +1,32 @@ +[ + "m_bIsValveDS", + "m_bIsQuestEligible", + "m_iEntityLevel", + "m_iItemIDHigh", + "m_iItemIDLow", + "m_iAccountID", + "m_iEntityQuality", + "m_bInitialized", + "m_szCustomName", + "m_iAttributeDefinitionIndex", + "m_iRawValue32", + "m_iRawInitialValue32", + "m_flValue", + "m_flInitialValue", + "m_bSetBonus", + "m_nRefundableCurrency", + "m_OriginalOwnerXuidLow", + "m_OriginalOwnerXuidHigh", + "m_nFallbackPaintKit", + "m_nFallbackSeed", + "m_flFallbackWear", + "m_nFallbackStatTrak", + "m_iCompetitiveWins", + "m_iCompetitiveRanking", + "m_iCompetitiveRankType", + "m_iCompetitiveRankingPredicted_Win", + "m_iCompetitiveRankingPredicted_Loss", + "m_iCompetitiveRankingPredicted_Tie", + "m_nActiveCoinRank", + "m_nMusicID" +] \ No newline at end of file diff --git a/plugin_files/gamedata/cs2/core/offsets.json b/plugin_files/gamedata/cs2/core/offsets.json new file mode 100644 index 000000000..4dbc25fdf --- /dev/null +++ b/plugin_files/gamedata/cs2/core/offsets.json @@ -0,0 +1,54 @@ +{ + "GameEntitySystem": { + "windows": 88, + "linux": 80 + }, + "CBasePlayerPawn_CommitSuicide": { + "windows": 380, + "linux": 380 + }, + "CCSPlayerController_ChangeTeam": { + "windows": 100, + "linux": 99 + }, + "CBaseEntity_Teleport": { + "windows": 157, + "linux": 156 + }, + "CCSPlayerController_Respawn": { + "windows": 257, + "linux": 259 + }, + "CollisionRulesChanged": { + "windows": 179, + "linux": 178 + }, + "CCSPlayer_WeaponServices_DropWeapon": { + "windows": 22, + "linux": 23 + }, + "CGameSceneNode_GetSkeletonInstance": { + "windows": 8, + "linux": 8 + }, + "CServerSideClient_OnConVarQuery": { + "windows": 39, + "linux": 41 + }, + "CCSPlayer_MovementServices_CheckMovingGround": { + "windows": 32, + "linux": 33 + }, + "GetHammerUniqueID": { + "windows": 109, + "linux": 108 + }, + "CEntityResourceManifest_AddResource": { + "windows": 2, + "linux": 0 + }, + "INetworkMessageProcessingPreFilter": { + "windows": 8, + "linux": -64 + } +} \ No newline at end of file diff --git a/plugin_files/gamedata/cs2/core/patches.json b/plugin_files/gamedata/cs2/core/patches.json new file mode 100644 index 000000000..023c2291e --- /dev/null +++ b/plugin_files/gamedata/cs2/core/patches.json @@ -0,0 +1,22 @@ +{ + "ServerMovementUnlock": { + "signature": "ServerMovementUnlock", + "windows": "EB", + "linux": "90 90 90 90 90 90" + }, + "BotNavIgnore1": { + "signature": "BotNavIgnore1", + "windows": "E9 2C 00 00 00 90", + "linux": "E9 15 00 00 00" + }, + "BotNavIgnore2": { + "signature": "BotNavIgnore2", + "windows": "", + "linux": "E9 15 00 00 00" + }, + "BotNavIgnore3": { + "signature": "BotNavIgnore3", + "windows": "", + "linux": "E9 15 00 00 00" + } +} \ No newline at end of file diff --git a/plugin_files/gamedata/cs2/core/signatures.json b/plugin_files/gamedata/cs2/core/signatures.json new file mode 100644 index 000000000..998c8676b --- /dev/null +++ b/plugin_files/gamedata/cs2/core/signatures.json @@ -0,0 +1,132 @@ +{ + "ServerMovementUnlock": { + "lib": "server", + "windows": "76 ? F2 0F 10 4F ? 41 0F 28 C1 0F 28 D1 F3 0F 59 C0", + "linux": "0F 87 ? ? ? ? 49 8B 7C 24 ? E8 ? ? ? ? 66 0F EF ED 66 0F D6 85" + }, + "CEntityInstance_AcceptInput": { + "lib": "server", + "windows": "48 89 5C 24 10 48 89 74 24 18 57 48 83 EC 40 49 8B F0", + "linux": "55 48 89 E5 41 57 49 89 FF 41 56 48 8D 7D C0" + }, + "CEntityIdentity_AcceptInput": { + "lib": "server", + "windows": "48 89 54 24 ? 48 89 4C 24 ? 55 53 56 57 41 55 41 56 41 57 48 8D 6C 24", + "linux": "55 48 89 E5 41 57 41 56 4C 8D BD D0 FE FF FF 49 89 D6 41 55 49 89 F5 41 54 49 89 CC" + }, + "CCSPlayerController_SwitchTeam": { + "lib": "server", + "windows": "40 56 57 48 81 EC ? ? ? ? 48 8B F9 8B F2 8B CA", + "linux": "55 48 89 E5 41 55 49 89 FD 89 F7" + }, + "UTIL_CreateEntityByName": { + "lib": "server", + "windows": "48 83 EC 48 C6 44 24 30 00", + "linux": "48 8D 05 ? ? ? ? 55 48 89 FA" + }, + "CBaseModelEntity_SetModel": { + "lib": "server", + "windows": "48 89 5C 24 ? 48 89 7C 24 ? 55 48 8B EC 48 83 EC 50 48 8B F9 4C 8B C2", + "linux": "55 48 89 F2 48 89 E5 41 54 49 89 FC 48 8D 7D E0 48 83 EC ? 48 8D 05 ? ? ? ? 48 8B 30 48 8B 06" + }, + "CBaseEntity_DispatchSpawn": { + "lib": "server", + "windows": "48 89 5C 24 10 57 48 83 EC 30 48 8B DA 48 8B F9 48 85 C9", + "linux": "48 85 FF 74 ? 55 48 89 E5 41 56" + }, + "UTIL_Remove": { + "lib": "server", + "windows": "48 85 C9 74 ? 48 8B D1 48 8B 0D ? ? ? ?", + "linux": "48 89 FE 48 85 FF 74 ? 48 8D 05 ? ? ? ? 48" + }, + "LegacyGameEventListener": { + "lib": "server", + "windows": "48 8B 15 ? ? ? ? 48 85 D2 74 ? 85 C9 74", + "linux": "48 8B 05 ? ? ? ? 48 85 C0 74 ? 85 FF" + }, + "CAttributeList_SetOrAddAttributeValueByName": { + "lib": "server", + "windows": "40 53 41 56 41 57 48 81 EC 90 00 00 00 0F 29 74 24 70", + "linux": "55 48 89 E5 41 57 41 56 49 89 FE 41 55 41 54 49 89 F4 53 48 83 EC 78" + }, + "CBaseModelEntity_SetBodygroup": { + "lib": "server", + "windows": "48 89 5C 24 08 48 89 74 24 10 57 48 83 EC 20 41 8B F8 48 8B F2 48 8B D9 E8 ? ? ? ?", + "linux": "55 48 89 E5 41 56 49 89 F6 41 55 41 89 D5 41 54 49 89 FC 48 83 EC 08" + }, + "GiveNamedItem": { + "lib": "server", + "windows": "48 89 5C 24 ? 48 89 74 24 ? 55 57 41 55 41 56 41 57 48 8D 6C 24 E0", + "linux": "55 48 89 E5 41 57 41 56 4D 89 C6 41 55 49 89 D5 41 54 49 89 F4" + }, + "CTakeDamageInfo_Constructor": { + "lib": "server", + "windows": "40 53 48 83 EC 60 48 C7 41 38 FF FF FF FF", + "linux": "55 48 89 E5 48 83 EC 10 4C 8D 15 ? ? ? ?" + }, + "FireOutputInternal": { + "lib": "server", + "windows": "4C 89 4C 24 20 53 55 57 41 54 41 56 48 81 EC", + "linux": "55 48 89 E5 41 57 41 56 41 55 41 54 49 89 D4 53 48 89 F3 48 83 EC 58" + }, + "CBasePlayerController_SetPawn": { + "lib": "server", + "windows": "48 89 74 24 18 55 41 54 41 55 41 56 41 57 48 8D 6C 24 D1", + "linux": "55 48 89 E5 41 57 41 56 41 55 49 89 FD 41 54 45 89 C4" + }, + "CCSPlayerPawnBase_PostThink": { + "lib": "server", + "windows": "48 ? ? 55 53 56 57 41 ? 48 ? ? ? 48 ? ? ? ? ? ? 4C 89 68", + "linux": "55 48 89 E5 41 56 41 55 41 54 53 48 89 FB 48 83 EC 40 E8" + }, + "CBaseEntity_EmitSoundFilter": { + "lib": "server", + "windows": "48 89 5C 24 08 48 89 6C 24 10 48 89 74 24 18 48 89 7C 24 20 41 56 48 83 EC 30 48 8B EA", + "linux": "55 48 89 E5 41 56 49 89 D6 41 55 41 89 F5 41 54 48 8D 35 ? ? ? ?" + }, + "CBaseEntity_EmitSoundParams": { + "lib": "server", + "windows": "48 8B C4 48 89 58 10 48 89 70 18 55 57 41 56 48 8D A8 08 FF FF FF", + "linux": "48 B8 ? ? ? ? ? ? ? ? 55 48 89 E5 41 55 41 54 49 89 FC 53 48 89 F3" + }, + "CGameRules_TerminateRound": { + "lib": "server", + "windows": "48 8B C4 4C 89 48 ? 48 89 48 ? 55 41 55", + "linux": "55 48 89 E5 41 57 41 56 41 55 41 54 49 89 FC 53 48 81 EC 88 00 00 00 48 8D 05 ? ? ? ?" + }, + "CBaseEntity_TakeDamage": { + "lib": "server", + "windows": "48 89 74 24 ? 57 48 81 EC ? ? ? ? 48 8B 41 ? 48 8B FA", + "linux": "55 48 89 E5 41 57 41 56 41 55 41 54 49 89 FC 53 48 83 EC ? 4C 8D 3D ? ? ? ? 49 8B 3F" + }, + "BotNavIgnore1": { + "lib": "server", + "windows": "0F 84 ? ? ? ? 80 B8 ? ? ? ? 00 0F 84 ? ? ? ? 80 3D ? ? ? ? 00 74 15", + "linux": "48 85 C0 74 ? 80 B8 ? ? ? ? 00 74 ? 48 8D 05 ? ? ? ? 80 38 00 75 ? 44 8B 85 ? ? ? ? 31 F6 BF 03 00 00 00" + }, + "BotNavIgnore2": { + "lib": "server", + "windows": "0F 84 ? ? ? ? 80 B8 ? ? ? ? 00 0F 84 ? ? ? ? 80 3D ? ? ? ? 00 74 15", + "linux": "48 85 C0 74 ? 80 B8 ? ? ? ? 00 74 ? 48 8D 05 ? ? ? ? 80 38 00 75 ? 44 8B 85 ? ? ? ? 31 F6 BF 02 00 00 00" + }, + "BotNavIgnore3": { + "lib": "server", + "windows": "0F 84 ? ? ? ? 80 B8 ? ? ? ? 00 0F 84 ? ? ? ? 80 3D ? ? ? ? 00 74 15", + "linux": "48 85 C0 74 ? 80 B8 ? ? ? ? 00 74 ? 48 8D 05 ? ? ? ? 80 38 00 75 ? 41 B8 04 00 00 00" + }, + "IGameSystem_InitAllSystems_pFirst": { + "lib": "server", + "windows": "48 8B 3D ? ? ? ? 48 85 FF 0F 84 ? ? ? ? BE", + "linux": "4C 8B 35 ? ? ? ? 4D 85 F6 75 ? E9" + }, + "CCSPlayer_MovementServices_ProcessUserCmd": { + "lib": "server", + "windows": "48 89 5C 24 ? 48 89 74 24 ? 57 48 83 EC ? 48 8B FA 48 8B F1 E8 ? ? ? ? 48 8B D8", + "linux": "55 48 89 E5 41 55 49 89 F5 41 54 49 89 FC E8 ? ? ? ? 48 85 C0 74 30" + }, + "CSoundOpGameSystem_SetSoundEventParam": { + "lib": "server", + "windows": "48 89 5C 24 08 48 89 6C 24 10 56 57 41 56 48 83 EC 40 48 8B B4 24 80 00 00 00", + "linux": "55 48 89 E5 41 57 41 56 49 89 F6 48 89 D6 41 55 41 89 CD" + } +} \ No newline at end of file diff --git a/plugin_files/gamedata/cs2/gameevents.json b/plugin_files/gamedata/cs2/gameevents.json new file mode 100644 index 000000000..98b865af9 --- /dev/null +++ b/plugin_files/gamedata/cs2/gameevents.json @@ -0,0 +1,273 @@ +{ + "gameui_hidden": "OnGameuiHidden", + "player_team": "OnPlayerTeam", + "player_chat": "OnPlayerChat", + "player_score": "OnPlayerScore", + "player_shoot": "OnPlayerShoot", + "game_init": "OnGameInit", + "game_newmap": "OnGameNewmap", + "game_start": "OnGameStart", + "game_end": "OnGameEnd", + "round_announce_match_point": "OnRoundAnnounceMatchPoint", + "round_announce_final": "OnRoundAnnounceFinal", + "round_announce_last_round_half": "OnRoundAnnounceLastRoundHalf", + "round_announce_match_start": "OnRoundAnnounceMatchStart", + "round_announce_warmup": "OnRoundAnnounceWarmup", + "warmup_end": "OnWarmupEnd", + "round_end": "OnRoundEnd", + "round_end_upload_stats": "OnRoundEndUploadStats", + "round_officially_ended": "OnRoundOfficiallyEnded", + "round_time_warning": "OnRoundTimeWarning", + "ugc_map_info_received": "OnUgcMapInfoReceived", + "ugc_map_unsubscribed": "OnUgcMapUnsubscribed", + "ugc_map_download_error": "OnUgcMapDownloadError", + "ugc_file_download_finished": "OnUgcFileDownloadFinished", + "ugc_file_download_start": "OnUgcFileDownloadStart", + "begin_new_match": "OnBeginNewMatch", + "dm_bonus_weapon_start": "OnDmBonusWeaponStart", + "survival_announce_phase": "OnSurvivalAnnouncePhase", + "break_prop": "OnBreakProp", + "player_decal": "OnPlayerDecal", + "entity_visible": "OnEntityVisible", + "instructor_server_hint_create": "OnInstructorServerHintCreate", + "instructor_server_hint_stop": "OnInstructorServerHintStop", + "read_game_titledata": "OnReadGameTitledata", + "write_game_titledata": "OnWriteGameTitledata", + "reset_game_titledata": "OnResetGameTitledata", + "weaponhud_selection": "OnWeaponhudSelection", + "vote_ended": "OnVoteEnded", + "vote_started": "OnVoteStarted", + "vote_changed": "OnVoteChanged", + "vote_cast": "OnVoteCast", + "vote_options": "OnVoteOptions", + "endmatch_mapvote_selecting_map": "OnEndmatchMapvoteSelectingMap", + "endmatch_cmm_start_reveal_items": "OnEndmatchCmmStartRevealItems", + "inventory_updated": "OnInventoryUpdated", + "client_loadout_changed": "OnClientLoadoutChanged", + "add_player_sonar_icon": "OnAddPlayerSonarIcon", + "door_open": "OnDoorOpen", + "door_closed": "OnDoorClosed", + "door_break": "OnDoorBreak", + "add_bullet_hit_marker": "OnAddBulletHitMarker", + "player_death": "OnPlayerDeath", + "other_death": "OnOtherDeath", + "player_hurt": "OnPlayerHurt", + "bullet_damage": "OnBulletDamage", + "item_purchase": "OnItemPurchase", + "bomb_beginplant": "OnBombBeginplant", + "bomb_abortplant": "OnBombAbortplant", + "bomb_planted": "OnBombPlanted", + "bomb_defused": "OnBombDefused", + "bomb_exploded": "OnBombExploded", + "bomb_dropped": "OnBombDropped", + "bomb_pickup": "OnBombPickup", + "defuser_dropped": "OnDefuserDropped", + "defuser_pickup": "OnDefuserPickup", + "announce_phase_end": "OnAnnouncePhaseEnd", + "cs_intermission": "OnCsIntermission", + "bomb_begindefuse": "OnBombBegindefuse", + "bomb_abortdefuse": "OnBombAbortdefuse", + "hostage_follows": "OnHostageFollows", + "hostage_hurt": "OnHostageHurt", + "hostage_killed": "OnHostageKilled", + "hostage_rescued": "OnHostageRescued", + "hostage_stops_following": "OnHostageStopsFollowing", + "hostage_rescued_all": "OnHostageRescuedAll", + "hostage_call_for_help": "OnHostageCallForHelp", + "vip_escaped": "OnVipEscaped", + "vip_killed": "OnVipKilled", + "player_radio": "OnPlayerRadio", + "bomb_beep": "OnBombBeep", + "weapon_fire": "OnWeaponFire", + "weapon_fire_on_empty": "OnWeaponFireOnEmpty", + "grenade_thrown": "OnGrenadeThrown", + "weapon_reload": "OnWeaponReload", + "weapon_zoom": "OnWeaponZoom", + "silencer_detach": "OnSilencerDetach", + "inspect_weapon": "OnInspectWeapon", + "weapon_zoom_rifle": "OnWeaponZoomRifle", + "player_spawned": "OnPlayerSpawned", + "item_pickup": "OnItemPickup", + "item_pickup_slerp": "OnItemPickupSlerp", + "item_pickup_failed": "OnItemPickupFailed", + "item_remove": "OnItemRemove", + "ammo_pickup": "OnAmmoPickup", + "item_equip": "OnItemEquip", + "enter_buyzone": "OnEnterBuyzone", + "exit_buyzone": "OnExitBuyzone", + "buytime_ended": "OnBuytimeEnded", + "enter_bombzone": "OnEnterBombzone", + "exit_bombzone": "OnExitBombzone", + "enter_rescue_zone": "OnEnterRescueZone", + "exit_rescue_zone": "OnExitRescueZone", + "silencer_off": "OnSilencerOff", + "silencer_on": "OnSilencerOn", + "buymenu_open": "OnBuymenuOpen", + "buymenu_close": "OnBuymenuClose", + "round_prestart": "OnRoundPrestart", + "round_poststart": "OnRoundPoststart", + "grenade_bounce": "OnGrenadeBounce", + "hegrenade_detonate": "OnHegrenadeDetonate", + "flashbang_detonate": "OnFlashbangDetonate", + "smokegrenade_detonate": "OnSmokegrenadeDetonate", + "smokegrenade_expired": "OnSmokegrenadeExpired", + "molotov_detonate": "OnMolotovDetonate", + "decoy_detonate": "OnDecoyDetonate", + "decoy_started": "OnDecoyStarted", + "tagrenade_detonate": "OnTagrenadeDetonate", + "inferno_startburn": "OnInfernoStartburn", + "inferno_expire": "OnInfernoExpire", + "inferno_extinguish": "OnInfernoExtinguish", + "decoy_firing": "OnDecoyFiring", + "bullet_impact": "OnBulletImpact", + "player_footstep": "OnPlayerFootstep", + "player_jump": "OnPlayerJump", + "player_blind": "OnPlayerBlind", + "player_falldamage": "OnPlayerFalldamage", + "door_moving": "OnDoorMoving", + "mb_input_lock_success": "OnMbInputLockSuccess", + "mb_input_lock_cancel": "OnMbInputLockCancel", + "nav_blocked": "OnNavBlocked", + "nav_generate": "OnNavGenerate", + "achievement_info_loaded": "OnAchievementInfoLoaded", + "spec_mode_updated": "OnSpecModeUpdated", + "hltv_changed_mode": "OnHltvChangedMode", + "cs_game_disconnected": "OnCsGameDisconnected", + "cs_round_final_beep": "OnCsRoundFinalBeep", + "cs_round_start_beep": "OnCsRoundStartBeep", + "cs_win_panel_round": "OnCsWinPanelRound", + "cs_win_panel_match": "OnCsWinPanelMatch", + "cs_match_end_restart": "OnCsMatchEndRestart", + "cs_pre_restart": "OnCsPreRestart", + "show_deathpanel": "OnShowDeathpanel", + "hide_deathpanel": "OnHideDeathpanel", + "player_avenged_teammate": "OnPlayerAvengedTeammate", + "achievement_earned_local": "OnAchievementEarnedLocal", + "repost_xbox_achievements": "OnRepostXboxAchievements", + "match_end_conditions": "OnMatchEndConditions", + "round_mvp": "OnRoundMvp", + "show_survival_respawn_status": "OnShowSurvivalRespawnStatus", + "gg_killed_enemy": "OnGgKilledEnemy", + "switch_team": "OnSwitchTeam", + "write_profile_data": "OnWriteProfileData", + "trial_time_expired": "OnTrialTimeExpired", + "update_matchmaking_stats": "OnUpdateMatchmakingStats", + "player_reset_vote": "OnPlayerResetVote", + "enable_restart_voting": "OnEnableRestartVoting", + "sfuievent": "OnSfuievent", + "start_vote": "OnStartVote", + "player_given_c4": "OnPlayerGivenC4", + "bot_takeover": "OnBotTakeover", + "jointeam_failed": "OnJointeamFailed", + "teamchange_pending": "OnTeamchangePending", + "material_default_complete": "OnMaterialDefaultComplete", + "cs_prev_next_spectator": "OnCsPrevNextSpectator", + "nextlevel_changed": "OnNextlevelChanged", + "seasoncoin_levelup": "OnSeasoncoinLevelup", + "tournament_reward": "OnTournamentReward", + "start_halftime": "OnStartHalftime", + "ammo_refill": "OnAmmoRefill", + "parachute_pickup": "OnParachutePickup", + "parachute_deploy": "OnParachuteDeploy", + "dronegun_attack": "OnDronegunAttack", + "drone_dispatched": "OnDroneDispatched", + "loot_crate_visible": "OnLootCrateVisible", + "loot_crate_opened": "OnLootCrateOpened", + "open_crate_instr": "OnOpenCrateInstr", + "smoke_beacon_paradrop": "OnSmokeBeaconParadrop", + "survival_paradrop_spawn": "OnSurvivalParadropSpawn", + "survival_paradrop_break": "OnSurvivalParadropBreak", + "drone_cargo_detached": "OnDroneCargoDetached", + "drone_above_roof": "OnDroneAboveRoof", + "choppers_incoming_warning": "OnChoppersIncomingWarning", + "firstbombs_incoming_warning": "OnFirstbombsIncomingWarning", + "dz_item_interaction": "OnDzItemInteraction", + "survival_teammate_respawn": "OnSurvivalTeammateRespawn", + "survival_no_respawns_warning": "OnSurvivalNoRespawnsWarning", + "survival_no_respawns_final": "OnSurvivalNoRespawnsFinal", + "player_ping": "OnPlayerPing", + "player_ping_stop": "OnPlayerPingStop", + "player_sound": "OnPlayerSound", + "guardian_wave_restart": "OnGuardianWaveRestart", + "team_intro_start": "OnTeamIntroStart", + "team_intro_end": "OnTeamIntroEnd", + "bullet_flight_resolution": "OnBulletFlightResolution", + "game_phase_changed": "OnGamePhaseChanged", + "clientside_reload_custom_econ": "OnClientsideReloadCustomEcon", + "server_spawn": "OnServerSpawn", + "server_pre_shutdown": "OnServerPreShutdown", + "server_shutdown": "OnServerShutdown", + "server_message": "OnServerMessage", + "server_cvar": "OnServerCvar", + "player_activate": "OnPlayerActivate", + "player_connect_full": "OnPlayerConnectFull", + "player_full_update": "OnPlayerFullUpdate", + "player_connect": "OnPlayerConnect", + "player_disconnect": "OnPlayerDisconnect", + "player_info": "OnPlayerInfo", + "player_spawn": "OnPlayerSpawn", + "local_player_team": "OnLocalPlayerTeam", + "local_player_controller_team": "OnLocalPlayerControllerTeam", + "player_changename": "OnPlayerChangename", + "local_player_pawn_changed": "OnLocalPlayerPawnChanged", + "teamplay_broadcast_audio": "OnTeamplayBroadcastAudio", + "finale_start": "OnFinaleStart", + "player_stats_updated": "OnPlayerStatsUpdated", + "user_data_downloaded": "OnUserDataDownloaded", + "ragdoll_dissolved": "OnRagdollDissolved", + "team_info": "OnTeamInfo", + "team_score": "OnTeamScore", + "hltv_cameraman": "OnHltvCameraman", + "hltv_chase": "OnHltvChase", + "hltv_rank_camera": "OnHltvRankCamera", + "hltv_rank_entity": "OnHltvRankEntity", + "hltv_fixed": "OnHltvFixed", + "hltv_message": "OnHltvMessage", + "hltv_status": "OnHltvStatus", + "hltv_title": "OnHltvTitle", + "hltv_chat": "OnHltvChat", + "hltv_versioninfo": "OnHltvVersioninfo", + "hltv_replay": "OnHltvReplay", + "hltv_replay_status": "OnHltvReplayStatus", + "demo_stop": "OnDemoStop", + "map_shutdown": "OnMapShutdown", + "map_transition": "OnMapTransition", + "hostname_changed": "OnHostnameChanged", + "difficulty_changed": "OnDifficultyChanged", + "game_message": "OnGameMessage", + "round_start": "OnRoundStart", + "round_start_pre_entity": "OnRoundStartPreEntity", + "round_start_post_nav": "OnRoundStartPostNav", + "round_freeze_end": "OnRoundFreezeEnd", + "teamplay_round_start": "OnTeamplayRoundStart", + "player_hintmessage": "OnPlayerHintmessage", + "break_breakable": "OnBreakBreakable", + "broken_breakable": "OnBrokenBreakable", + "entity_killed": "OnEntityKilled", + "door_close": "OnDoorClose", + "vote_failed": "OnVoteFailed", + "vote_passed": "OnVotePassed", + "vote_cast_yes": "OnVoteCastYes", + "vote_cast_no": "OnVoteCastNo", + "achievement_event": "OnAchievementEvent", + "achievement_earned": "OnAchievementEarned", + "achievement_write_failed": "OnAchievementWriteFailed", + "bonus_updated": "OnBonusUpdated", + "spec_target_updated": "OnSpecTargetUpdated", + "gameinstructor_draw": "OnGameinstructorDraw", + "gameinstructor_nodraw": "OnGameinstructorNodraw", + "flare_ignite_npc": "OnFlareIgniteNpc", + "helicopter_grenade_punt_miss": "OnHelicopterGrenadePuntMiss", + "physgun_pickup": "OnPhysgunPickup", + "cart_updated": "OnCartUpdated", + "store_pricesheet_updated": "OnStorePricesheetUpdated", + "item_schema_initialized": "OnItemSchemaInitialized", + "drop_rate_modified": "OnDropRateModified", + "event_ticket_modified": "OnEventTicketModified", + "gc_connected": "OnGcConnected", + "instructor_start_lesson": "OnInstructorStartLesson", + "instructor_close_lesson": "OnInstructorCloseLesson", + "set_instructor_group_enabled": "OnSetInstructorGroupEnabled", + "clientside_lesson_closed": "OnClientsideLessonClosed", + "dynamic_shadow_light_changed": "OnDynamicShadowLightChanged" +} \ No newline at end of file diff --git a/plugin_files/gamedata/cs2/sdk.json b/plugin_files/gamedata/cs2/sdk.json new file mode 100644 index 000000000..5e8f2d4e1 --- /dev/null +++ b/plugin_files/gamedata/cs2/sdk.json @@ -0,0 +1,38412 @@ +{ + "AnimationDecodeDebugDumpElement_t": { + "EntityIndex": { + "field": "m_nEntityIndex", + "type": 2 + }, + "ModelName": { + "field": "m_modelName", + "type": 14 + }, + "PoseParams": { + "field": "m_poseParams", + "type": 50 + }, + "DecodeOps": { + "field": "m_decodeOps", + "type": 50 + }, + "InternalOps": { + "field": "m_internalOps", + "type": 50 + }, + "DecodedAnims": { + "field": "m_decodedAnims", + "type": 50 + } + }, + "AnimationDecodeDebugDump_t": { + "ProcessingType": { + "field": "m_processingType", + "type": 6 + } + }, + "AnimationSnapshotBase_t": { + "RealTime": { + "field": "m_flRealTime", + "type": 8 + }, + "BonesInWorldSpace": { + "field": "m_bBonesInWorldSpace", + "type": 10 + }, + "BoneSetupMask": { + "field": "m_boneSetupMask", + "type": 57 + }, + "FlexControllers": { + "field": "m_flexControllers", + "type": 59 + }, + "SnapshotType": { + "field": "m_SnapshotType", + "type": 6 + }, + "HasDecodeDump": { + "field": "m_bHasDecodeDump", + "type": 10 + }, + "DecodeDump": { + "field": "m_DecodeDump", + "classname": "AnimationDecodeDebugDumpElement_t", + "type": 16 + } + }, + "AnimationSnapshot_t": { + "EntIndex": { + "field": "m_nEntIndex", + "type": 2 + }, + "ModelName": { + "field": "m_modelName", + "type": 14 + }, + "Parent": { + "field": "AnimationSnapshotBase_t", + "type": 11 + } + }, + "CAnimActivity": { + "Activity": { + "field": "m_nActivity", + "type": 2 + }, + "Flags": { + "field": "m_nFlags", + "type": 2 + }, + "Weight": { + "field": "m_nWeight", + "type": 2 + } + }, + "CAnimBone": { + "Parent": { + "field": "m_parent", + "type": 2 + }, + "Pos": { + "field": "m_pos", + "type": 21 + }, + "Scale": { + "field": "m_scale", + "type": 8 + }, + "Flags": { + "field": "m_flags", + "type": 2 + } + }, + "CAnimBoneDifference": { + "PosError": { + "field": "m_posError", + "type": 21 + }, + "HasRotation": { + "field": "m_bHasRotation", + "type": 10 + }, + "HasMovement": { + "field": "m_bHasMovement", + "type": 10 + } + }, + "CAnimData": { + "MaxUniqueFrameIndex": { + "field": "m_nMaxUniqueFrameIndex", + "type": 2 + } + }, + "CAnimDataChannelDesc": { + "Flags": { + "field": "m_nFlags", + "type": 2 + }, + "Type": { + "field": "m_nType", + "type": 2 + }, + "ElementIndexArray": { + "field": "m_nElementIndexArray", + "type": 53 + }, + "ElementMaskArray": { + "field": "m_nElementMaskArray", + "type": 57 + } + }, + "CAnimDecoder": { + "Version": { + "field": "m_nVersion", + "type": 2 + }, + "Type": { + "field": "m_nType", + "type": 2 + } + }, + "CAnimDesc": { + "Flags": { + "field": "m_flags", + "classname": "CAnimDesc_Flag", + "type": 16 + }, + "Fps": { + "field": "fps", + "type": 8 + }, + "Data": { + "field": "m_Data", + "classname": "CAnimEncodedFrames", + "type": 16 + }, + "Framestalltime": { + "field": "framestalltime", + "type": 8 + }, + "RootMin": { + "field": "m_vecRootMin", + "type": 21 + }, + "RootMax": { + "field": "m_vecRootMax", + "type": 21 + }, + "BoneWorldMin": { + "field": "m_vecBoneWorldMin", + "type": 63 + }, + "BoneWorldMax": { + "field": "m_vecBoneWorldMax", + "type": 63 + }, + "SequenceParams": { + "field": "m_sequenceParams", + "classname": "CAnimSequenceParams", + "type": 16 + } + }, + "CAnimDesc_Flag": { + "Looping": { + "field": "m_bLooping", + "type": 10 + }, + "AllZeros": { + "field": "m_bAllZeros", + "type": 10 + }, + "Hidden": { + "field": "m_bHidden", + "type": 10 + }, + "Delta": { + "field": "m_bDelta", + "type": 10 + }, + "LegacyWorldspace": { + "field": "m_bLegacyWorldspace", + "type": 10 + }, + "ModelDoc": { + "field": "m_bModelDoc", + "type": 10 + }, + "ImplicitSeqIgnoreDelta": { + "field": "m_bImplicitSeqIgnoreDelta", + "type": 10 + }, + "AnimGraphAdditive": { + "field": "m_bAnimGraphAdditive", + "type": 10 + } + }, + "CAnimEncodeDifference": { + "HasRotationBitArray": { + "field": "m_bHasRotationBitArray", + "type": 55 + }, + "HasMovementBitArray": { + "field": "m_bHasMovementBitArray", + "type": 55 + }, + "HasMorphBitArray": { + "field": "m_bHasMorphBitArray", + "type": 55 + }, + "HasUserBitArray": { + "field": "m_bHasUserBitArray", + "type": 55 + } + }, + "CAnimEncodedFrames": { + "Frames": { + "field": "m_nFrames", + "type": 2 + }, + "FramesPerBlock": { + "field": "m_nFramesPerBlock", + "type": 2 + }, + "UsageDifferences": { + "field": "m_usageDifferences", + "classname": "CAnimEncodeDifference", + "type": 16 + } + }, + "CAnimEnum": { + "Value": { + "field": "m_value", + "type": 4 + } + }, + "CAnimEventDefinition": { + "Frame": { + "field": "m_nFrame", + "type": 2 + }, + "EndFrame": { + "field": "m_nEndFrame", + "type": 2 + }, + "Cycle": { + "field": "m_flCycle", + "type": 8 + }, + "Duration": { + "field": "m_flDuration", + "type": 8 + } + }, + "CAnimFrameBlockAnim": { + "StartFrame": { + "field": "m_nStartFrame", + "type": 2 + }, + "EndFrame": { + "field": "m_nEndFrame", + "type": 2 + }, + "SegmentIndexArray": { + "field": "m_segmentIndexArray", + "type": 53 + } + }, + "CAnimFrameSegment": { + "UniqueFrameIndex": { + "field": "m_nUniqueFrameIndex", + "type": 2 + }, + "LocalElementMasks": { + "field": "m_nLocalElementMasks", + "type": 6 + }, + "LocalChannel": { + "field": "m_nLocalChannel", + "type": 2 + } + }, + "CAnimKeyData": { + "ChannelElements": { + "field": "m_nChannelElements", + "type": 2 + } + }, + "CAnimLocalHierarchy": { + "StartFrame": { + "field": "m_nStartFrame", + "type": 2 + }, + "PeakFrame": { + "field": "m_nPeakFrame", + "type": 2 + }, + "TailFrame": { + "field": "m_nTailFrame", + "type": 2 + }, + "EndFrame": { + "field": "m_nEndFrame", + "type": 2 + } + }, + "CAnimMorphDifference": {}, + "CAnimMovement": { + "0": { + "field": "v0", + "type": 8 + }, + "1": { + "field": "v1", + "type": 8 + }, + "Endframe": { + "field": "endframe", + "type": 2 + }, + "Motionflags": { + "field": "motionflags", + "type": 2 + }, + "Angle": { + "field": "angle", + "type": 8 + }, + "Vector": { + "field": "vector", + "type": 21 + }, + "Position": { + "field": "position", + "type": 21 + } + }, + "CAnimSequenceParams": { + "FadeInTime": { + "field": "m_flFadeInTime", + "type": 8 + }, + "FadeOutTime": { + "field": "m_flFadeOutTime", + "type": 8 + } + }, + "CAnimUser": { + "Type": { + "field": "m_nType", + "type": 2 + } + }, + "CAnimUserDifference": { + "Type": { + "field": "m_nType", + "type": 2 + } + }, + "CAnimationGroup": { + "Flags": { + "field": "m_nFlags", + "type": 6 + }, + "DecodeKey": { + "field": "m_decodeKey", + "classname": "CAnimKeyData", + "type": 16 + } + }, + "CMoodVData": { + "MoodType": { + "field": "m_nMoodType", + "type": 6 + } + }, + "CSeqAutoLayer": { + "LocalReference": { + "field": "m_nLocalReference", + "type": 1 + }, + "LocalPose": { + "field": "m_nLocalPose", + "type": 1 + }, + "Flags": { + "field": "m_flags", + "classname": "CSeqAutoLayerFlag", + "type": 16 + }, + "Start": { + "field": "m_start", + "type": 8 + }, + "Peak": { + "field": "m_peak", + "type": 8 + }, + "Tail": { + "field": "m_tail", + "type": 8 + }, + "End": { + "field": "m_end", + "type": 8 + } + }, + "CSeqAutoLayerFlag": { + "Post": { + "field": "m_bPost", + "type": 10 + }, + "Spline": { + "field": "m_bSpline", + "type": 10 + }, + "XFade": { + "field": "m_bXFade", + "type": 10 + }, + "NoBlend": { + "field": "m_bNoBlend", + "type": 10 + }, + "Local": { + "field": "m_bLocal", + "type": 10 + }, + "Pose": { + "field": "m_bPose", + "type": 10 + }, + "FetchFrame": { + "field": "m_bFetchFrame", + "type": 10 + }, + "Subtract": { + "field": "m_bSubtract", + "type": 10 + } + }, + "CSeqBoneMaskList": { + "LocalBoneArray": { + "field": "m_nLocalBoneArray", + "type": 52 + }, + "BoneWeightArray": { + "field": "m_flBoneWeightArray", + "type": 59 + }, + "DefaultMorphCtrlWeight": { + "field": "m_flDefaultMorphCtrlWeight", + "type": 8 + } + }, + "CSeqCmdLayer": { + "Cmd": { + "field": "m_cmd", + "type": 1 + }, + "LocalReference": { + "field": "m_nLocalReference", + "type": 1 + }, + "LocalBonemask": { + "field": "m_nLocalBonemask", + "type": 1 + }, + "DstResult": { + "field": "m_nDstResult", + "type": 1 + }, + "SrcResult": { + "field": "m_nSrcResult", + "type": 1 + }, + "Spline": { + "field": "m_bSpline", + "type": 10 + }, + "Var1": { + "field": "m_flVar1", + "type": 8 + }, + "Var2": { + "field": "m_flVar2", + "type": 8 + }, + "LineNumber": { + "field": "m_nLineNumber", + "type": 1 + } + }, + "CSeqCmdSeqDesc": { + "Flags": { + "field": "m_flags", + "classname": "CSeqSeqDescFlag", + "type": 16 + }, + "Transition": { + "field": "m_transition", + "classname": "CSeqTransition", + "type": 16 + }, + "FrameRangeSequence": { + "field": "m_nFrameRangeSequence", + "type": 1 + }, + "FrameCount": { + "field": "m_nFrameCount", + "type": 1 + }, + "FPS": { + "field": "m_flFPS", + "type": 8 + }, + "SubCycles": { + "field": "m_nSubCycles", + "type": 1 + }, + "NumLocalResults": { + "field": "m_numLocalResults", + "type": 1 + } + }, + "CSeqIKLock": { + "PosWeight": { + "field": "m_flPosWeight", + "type": 8 + }, + "AngleWeight": { + "field": "m_flAngleWeight", + "type": 8 + }, + "LocalBone": { + "field": "m_nLocalBone", + "type": 1 + }, + "BonesOrientedAlongPositiveX": { + "field": "m_bBonesOrientedAlongPositiveX", + "type": 10 + } + }, + "CSeqMultiFetch": { + "Flags": { + "field": "m_flags", + "classname": "CSeqMultiFetchFlag", + "type": 16 + }, + "LocalReferenceArray": { + "field": "m_localReferenceArray", + "type": 52 + }, + "GroupSize": { + "field": "m_nGroupSize", + "type": 31, + "size": 2 + }, + "LocalPose": { + "field": "m_nLocalPose", + "type": 31, + "size": 2 + }, + "PoseKeyArray0": { + "field": "m_poseKeyArray0", + "type": 59 + }, + "PoseKeyArray1": { + "field": "m_poseKeyArray1", + "type": 59 + }, + "LocalCyclePoseParameter": { + "field": "m_nLocalCyclePoseParameter", + "type": 2 + }, + "CalculatePoseParameters": { + "field": "m_bCalculatePoseParameters", + "type": 10 + }, + "FixedBlendWeight": { + "field": "m_bFixedBlendWeight", + "type": 10 + }, + "FixedBlendWeightVals": { + "field": "m_flFixedBlendWeightVals", + "type": 37, + "size": 2 + } + }, + "CSeqMultiFetchFlag": { + "Realtime": { + "field": "m_bRealtime", + "type": 10 + }, + "Cylepose": { + "field": "m_bCylepose", + "type": 10 + }, + "0D": { + "field": "m_b0D", + "type": 10 + }, + "1D": { + "field": "m_b1D", + "type": 10 + }, + "2D": { + "field": "m_b2D", + "type": 10 + }, + "2D_TRI": { + "field": "m_b2D_TRI", + "type": 10 + } + }, + "CSeqPoseParamDesc": { + "Start": { + "field": "m_flStart", + "type": 8 + }, + "End": { + "field": "m_flEnd", + "type": 8 + }, + "Loop": { + "field": "m_flLoop", + "type": 8 + }, + "Looping": { + "field": "m_bLooping", + "type": 10 + } + }, + "CSeqPoseSetting": { + "Value": { + "field": "m_flValue", + "type": 8 + }, + "X": { + "field": "m_bX", + "type": 10 + }, + "Y": { + "field": "m_bY", + "type": 10 + }, + "Z": { + "field": "m_bZ", + "type": 10 + }, + "Type": { + "field": "m_eType", + "type": 2 + } + }, + "CSeqS1SeqDesc": { + "Flags": { + "field": "m_flags", + "classname": "CSeqSeqDescFlag", + "type": 16 + }, + "Fetch": { + "field": "m_fetch", + "classname": "CSeqMultiFetch", + "type": 16 + }, + "LocalWeightlist": { + "field": "m_nLocalWeightlist", + "type": 2 + }, + "Transition": { + "field": "m_transition", + "classname": "CSeqTransition", + "type": 16 + } + }, + "CSeqScaleSet": { + "RootOffset": { + "field": "m_bRootOffset", + "type": 10 + }, + "RootOffset1": { + "field": "m_vRootOffset", + "type": 21 + }, + "LocalBoneArray": { + "field": "m_nLocalBoneArray", + "type": 52 + }, + "BoneScaleArray": { + "field": "m_flBoneScaleArray", + "type": 59 + } + }, + "CSeqSeqDescFlag": { + "Looping": { + "field": "m_bLooping", + "type": 10 + }, + "Snap": { + "field": "m_bSnap", + "type": 10 + }, + "Autoplay": { + "field": "m_bAutoplay", + "type": 10 + }, + "Post": { + "field": "m_bPost", + "type": 10 + }, + "Hidden": { + "field": "m_bHidden", + "type": 10 + }, + "Multi": { + "field": "m_bMulti", + "type": 10 + }, + "LegacyDelta": { + "field": "m_bLegacyDelta", + "type": 10 + }, + "LegacyWorldspace": { + "field": "m_bLegacyWorldspace", + "type": 10 + }, + "LegacyCyclepose": { + "field": "m_bLegacyCyclepose", + "type": 10 + }, + "LegacyRealtime": { + "field": "m_bLegacyRealtime", + "type": 10 + }, + "ModelDoc": { + "field": "m_bModelDoc", + "type": 10 + } + }, + "CSeqSynthAnimDesc": { + "Flags": { + "field": "m_flags", + "classname": "CSeqSeqDescFlag", + "type": 16 + }, + "Transition": { + "field": "m_transition", + "classname": "CSeqTransition", + "type": 16 + }, + "LocalBaseReference": { + "field": "m_nLocalBaseReference", + "type": 1 + }, + "LocalBoneMask": { + "field": "m_nLocalBoneMask", + "type": 1 + } + }, + "CSeqTransition": { + "FadeInTime": { + "field": "m_flFadeInTime", + "type": 8 + }, + "FadeOutTime": { + "field": "m_flFadeOutTime", + "type": 8 + } + }, + "CSequenceGroupData": { + "Flags": { + "field": "m_nFlags", + "type": 6 + } + }, + "MoodAnimation_t": { + "Name": { + "field": "m_sName", + "type": 14 + }, + "Weight": { + "field": "m_flWeight", + "type": 8 + } + }, + "AimCameraOpFixedSettings_t": { + "ChainIndex": { + "field": "m_nChainIndex", + "type": 2 + }, + "CameraJointIndex": { + "field": "m_nCameraJointIndex", + "type": 2 + }, + "PelvisJointIndex": { + "field": "m_nPelvisJointIndex", + "type": 2 + }, + "ClavicleLeftJointIndex": { + "field": "m_nClavicleLeftJointIndex", + "type": 2 + }, + "ClavicleRightJointIndex": { + "field": "m_nClavicleRightJointIndex", + "type": 2 + }, + "DepenetrationJointIndex": { + "field": "m_nDepenetrationJointIndex", + "type": 2 + }, + "PropJoints": { + "field": "m_propJoints", + "type": 53 + } + }, + "AimMatrixOpFixedSettings_t": { + "Attachment": { + "field": "m_attachment", + "classname": "CAnimAttachment", + "type": 16 + }, + "Damping": { + "field": "m_damping", + "classname": "CAnimInputDamping", + "type": 16 + }, + "PoseCacheHandles": { + "field": "m_poseCacheHandles", + "type": 45, + "size": 10 + }, + "BlendMode": { + "field": "m_eBlendMode", + "type": 6 + }, + "MaxYawAngle": { + "field": "m_flMaxYawAngle", + "type": 8 + }, + "MaxPitchAngle": { + "field": "m_flMaxPitchAngle", + "type": 8 + }, + "SequenceMaxFrame": { + "field": "m_nSequenceMaxFrame", + "type": 2 + }, + "BoneMaskIndex": { + "field": "m_nBoneMaskIndex", + "type": 2 + }, + "TargetIsPosition": { + "field": "m_bTargetIsPosition", + "type": 10 + }, + "UseBiasAndClamp": { + "field": "m_bUseBiasAndClamp", + "type": 10 + }, + "BiasAndClampYawOffset": { + "field": "m_flBiasAndClampYawOffset", + "type": 8 + }, + "BiasAndClampPitchOffset": { + "field": "m_flBiasAndClampPitchOffset", + "type": 8 + }, + "BiasAndClampBlendCurve": { + "field": "m_biasAndClampBlendCurve", + "classname": "CBlendCurve", + "type": 16 + } + }, + "BlendItem_t": { + "Child": { + "field": "m_pChild", + "classname": "CAnimUpdateNodeRef", + "type": 16 + }, + "Sequence": { + "field": "m_hSequence", + "type": 2 + }, + "Pos": { + "field": "m_vPos", + "type": 22 + }, + "Duration": { + "field": "m_flDuration", + "type": 8 + }, + "UseCustomDuration": { + "field": "m_bUseCustomDuration", + "type": 10 + } + }, + "BoneDemoCaptureSettings_t": { + "BoneName": { + "field": "m_boneName", + "type": 14 + }, + "ErrorSplineRotationMax": { + "field": "m_flErrorSplineRotationMax", + "type": 8 + }, + "ErrorSplineTranslationMax": { + "field": "m_flErrorSplineTranslationMax", + "type": 8 + }, + "ErrorSplineScaleMax": { + "field": "m_flErrorSplineScaleMax", + "type": 8 + }, + "ErrorQuantizationRotationMax": { + "field": "m_flErrorQuantizationRotationMax", + "type": 8 + }, + "ErrorQuantizationTranslationMax": { + "field": "m_flErrorQuantizationTranslationMax", + "type": 8 + }, + "ErrorQuantizationScaleMax": { + "field": "m_flErrorQuantizationScaleMax", + "type": 8 + } + }, + "CActionComponentUpdater": { + "Parent": { + "field": "CAnimComponentUpdater", + "type": 11 + } + }, + "CAddUpdateNode": { + "FootMotionTiming": { + "field": "m_footMotionTiming", + "type": 6 + }, + "ApplyToFootMotion": { + "field": "m_bApplyToFootMotion", + "type": 10 + }, + "ApplyChannelsSeparately": { + "field": "m_bApplyChannelsSeparately", + "type": 10 + }, + "UseModelSpace": { + "field": "m_bUseModelSpace", + "type": 10 + }, + "ApplyScale": { + "field": "m_bApplyScale", + "type": 10 + }, + "Parent": { + "field": "CBinaryUpdateNode", + "type": 11 + } + }, + "CAimCameraUpdateNode": { + "ParameterPosition": { + "field": "m_hParameterPosition", + "classname": "CAnimParamHandle", + "type": 16 + }, + "ParameterOrientation": { + "field": "m_hParameterOrientation", + "classname": "CAnimParamHandle", + "type": 16 + }, + "ParameterSpineRotationWeight": { + "field": "m_hParameterSpineRotationWeight", + "classname": "CAnimParamHandle", + "type": 16 + }, + "ParameterPelvisOffset": { + "field": "m_hParameterPelvisOffset", + "classname": "CAnimParamHandle", + "type": 16 + }, + "ParameterUseIK": { + "field": "m_hParameterUseIK", + "classname": "CAnimParamHandle", + "type": 16 + }, + "ParameterCameraOnly": { + "field": "m_hParameterCameraOnly", + "classname": "CAnimParamHandle", + "type": 16 + }, + "ParameterWeaponDepenetrationDistance": { + "field": "m_hParameterWeaponDepenetrationDistance", + "classname": "CAnimParamHandle", + "type": 16 + }, + "ParameterWeaponDepenetrationDelta": { + "field": "m_hParameterWeaponDepenetrationDelta", + "classname": "CAnimParamHandle", + "type": 16 + }, + "ParameterCameraClearanceDistance": { + "field": "m_hParameterCameraClearanceDistance", + "classname": "CAnimParamHandle", + "type": 16 + }, + "OpFixedSettings": { + "field": "m_opFixedSettings", + "classname": "AimCameraOpFixedSettings_t", + "type": 16 + }, + "Parent": { + "field": "CUnaryUpdateNode", + "type": 11 + } + }, + "CAimMatrixUpdateNode": { + "OpFixedSettings": { + "field": "m_opFixedSettings", + "classname": "AimMatrixOpFixedSettings_t", + "type": 16 + }, + "Target": { + "field": "m_target", + "type": 6 + }, + "ParamIndex": { + "field": "m_paramIndex", + "classname": "CAnimParamHandle", + "type": 16 + }, + "Sequence": { + "field": "m_hSequence", + "type": 2 + }, + "ResetChild": { + "field": "m_bResetChild", + "type": 10 + }, + "LockWhenWaning": { + "field": "m_bLockWhenWaning", + "type": 10 + }, + "Parent": { + "field": "CUnaryUpdateNode", + "type": 11 + } + }, + "CAnimActionUpdater": {}, + "CAnimComponentUpdater": { + "Name": { + "field": "m_name", + "type": 14 + }, + "Id": { + "field": "m_id", + "classname": "AnimComponentID", + "type": 16 + }, + "NetworkMode": { + "field": "m_networkMode", + "type": 6 + }, + "StartEnabled": { + "field": "m_bStartEnabled", + "type": 10 + } + }, + "CAnimDemoCaptureSettings": { + "ErrorRangeSplineRotation": { + "field": "m_vecErrorRangeSplineRotation", + "type": 22 + }, + "ErrorRangeSplineTranslation": { + "field": "m_vecErrorRangeSplineTranslation", + "type": 22 + }, + "ErrorRangeSplineScale": { + "field": "m_vecErrorRangeSplineScale", + "type": 22 + }, + "IkRotation_MaxSplineError": { + "field": "m_flIkRotation_MaxSplineError", + "type": 8 + }, + "IkTranslation_MaxSplineError": { + "field": "m_flIkTranslation_MaxSplineError", + "type": 8 + }, + "ErrorRangeQuantizationRotation": { + "field": "m_vecErrorRangeQuantizationRotation", + "type": 22 + }, + "ErrorRangeQuantizationTranslation": { + "field": "m_vecErrorRangeQuantizationTranslation", + "type": 22 + }, + "ErrorRangeQuantizationScale": { + "field": "m_vecErrorRangeQuantizationScale", + "type": 22 + }, + "IkRotation_MaxQuantizationError": { + "field": "m_flIkRotation_MaxQuantizationError", + "type": 8 + }, + "IkTranslation_MaxQuantizationError": { + "field": "m_flIkTranslation_MaxQuantizationError", + "type": 8 + }, + "BaseSequence": { + "field": "m_baseSequence", + "type": 14 + }, + "BaseSequenceFrame": { + "field": "m_nBaseSequenceFrame", + "type": 2 + }, + "BoneSelectionMode": { + "field": "m_boneSelectionMode", + "type": 6 + } + }, + "CAnimGraphDebugReplay": { + "AnimGraphFileName": { + "field": "m_animGraphFileName", + "type": 14 + }, + "StartIndex": { + "field": "m_startIndex", + "type": 2 + }, + "WriteIndex": { + "field": "m_writeIndex", + "type": 2 + }, + "FrameCount": { + "field": "m_frameCount", + "type": 2 + } + }, + "CAnimGraphModelBinding": { + "ModelName": { + "field": "m_modelName", + "type": 14 + } + }, + "CAnimGraphNetworkSettings": { + "NetworkingEnabled": { + "field": "m_bNetworkingEnabled", + "type": 10 + }, + "Parent": { + "field": "CAnimGraphSettingsGroup", + "type": 11 + } + }, + "CAnimGraphSettingsGroup": {}, + "CAnimGraphSettingsManager": {}, + "CAnimInputDamping": { + "SpeedFunction": { + "field": "m_speedFunction", + "type": 6 + }, + "SpeedScale": { + "field": "m_fSpeedScale", + "type": 8 + } + }, + "CAnimMotorUpdaterBase": { + "Name": { + "field": "m_name", + "type": 14 + }, + "Default": { + "field": "m_bDefault", + "type": 10 + } + }, + "CAnimNodePath": { + "Path": { + "field": "m_path", + "type": 45, + "size": 11 + }, + "Count": { + "field": "m_nCount", + "type": 2 + } + }, + "CAnimParamHandle": { + "Type": { + "field": "m_type", + "type": 4 + }, + "Index": { + "field": "m_index", + "type": 4 + } + }, + "CAnimParamHandleMap": {}, + "CAnimParameterBase": { + "Comment": { + "field": "m_sComment", + "type": 14 + }, + "Group": { + "field": "m_group", + "type": 14 + }, + "Id": { + "field": "m_id", + "classname": "AnimParamID", + "type": 16 + }, + "ComponentName": { + "field": "m_componentName", + "type": 14 + }, + "NetworkingRequested": { + "field": "m_bNetworkingRequested", + "type": 10 + }, + "IsReferenced": { + "field": "m_bIsReferenced", + "type": 10 + } + }, + "CAnimParameterManagerUpdater": {}, + "CAnimReplayFrame": { + "TimeStamp": { + "field": "m_timeStamp", + "type": 8 + } + }, + "CAnimScriptComponentUpdater": { + "Script": { + "field": "m_hScript", + "classname": "AnimScriptHandle", + "type": 16 + }, + "Parent": { + "field": "CAnimComponentUpdater", + "type": 11 + } + }, + "CAnimScriptManager": {}, + "CAnimStateMachineUpdater": { + "StartStateIndex": { + "field": "m_startStateIndex", + "type": 2 + } + }, + "CAnimTagBase": { + "Comment": { + "field": "m_sComment", + "type": 14 + }, + "TagID": { + "field": "m_tagID", + "classname": "AnimTagID", + "type": 16 + }, + "IsReferenced": { + "field": "m_bIsReferenced", + "type": 10 + } + }, + "CAnimTagManagerUpdater": {}, + "CAnimUpdateNodeBase": { + "NodePath": { + "field": "m_nodePath", + "classname": "CAnimNodePath", + "type": 16 + }, + "NetworkMode": { + "field": "m_networkMode", + "type": 6 + }, + "Name": { + "field": "m_name", + "type": 14 + } + }, + "CAnimUpdateNodeRef": { + "NodeIndex": { + "field": "m_nodeIndex", + "type": 2 + } + }, + "CAnimUpdateSharedData": { + "Settings": { + "field": "m_settings", + "classname": "CAnimGraphSettingsManager", + "type": 16 + }, + "RootNodePath": { + "field": "m_rootNodePath", + "classname": "CAnimNodePath", + "type": 16 + } + }, + "CAnimationGraphVisualizerAxis": { + "AxisSize": { + "field": "m_flAxisSize", + "type": 8 + }, + "Parent": { + "field": "CAnimationGraphVisualizerPrimitiveBase", + "type": 11 + } + }, + "CAnimationGraphVisualizerLine": { + "WsPositionStart": { + "field": "m_vWsPositionStart", + "type": 21 + }, + "WsPositionEnd": { + "field": "m_vWsPositionEnd", + "type": 21 + }, + "Color": { + "field": "m_Color", + "type": 19 + }, + "Parent": { + "field": "CAnimationGraphVisualizerPrimitiveBase", + "type": 11 + } + }, + "CAnimationGraphVisualizerPie": { + "WsCenter": { + "field": "m_vWsCenter", + "type": 21 + }, + "WsStart": { + "field": "m_vWsStart", + "type": 21 + }, + "WsEnd": { + "field": "m_vWsEnd", + "type": 21 + }, + "Color": { + "field": "m_Color", + "type": 19 + }, + "Parent": { + "field": "CAnimationGraphVisualizerPrimitiveBase", + "type": 11 + } + }, + "CAnimationGraphVisualizerPrimitiveBase": { + "Type": { + "field": "m_Type", + "type": 6 + }, + "OwningAnimNodePaths": { + "field": "m_OwningAnimNodePaths", + "type": 45, + "size": 11 + }, + "OwningAnimNodePathCount": { + "field": "m_nOwningAnimNodePathCount", + "type": 2 + } + }, + "CAnimationGraphVisualizerSphere": { + "WsPosition": { + "field": "m_vWsPosition", + "type": 21 + }, + "Radius": { + "field": "m_flRadius", + "type": 8 + }, + "Color": { + "field": "m_Color", + "type": 19 + }, + "Parent": { + "field": "CAnimationGraphVisualizerPrimitiveBase", + "type": 11 + } + }, + "CAnimationGraphVisualizerText": { + "WsPosition": { + "field": "m_vWsPosition", + "type": 21 + }, + "Color": { + "field": "m_Color", + "type": 19 + }, + "Text": { + "field": "m_Text", + "type": 14 + }, + "Parent": { + "field": "CAnimationGraphVisualizerPrimitiveBase", + "type": 11 + } + }, + "CAudioAnimTag": { + "ClipName": { + "field": "m_clipName", + "type": 14 + }, + "AttachmentName": { + "field": "m_attachmentName", + "type": 14 + }, + "Volume": { + "field": "m_flVolume", + "type": 8 + }, + "StopWhenTagEnds": { + "field": "m_bStopWhenTagEnds", + "type": 10 + }, + "StopWhenGraphEnds": { + "field": "m_bStopWhenGraphEnds", + "type": 10 + }, + "PlayOnServer": { + "field": "m_bPlayOnServer", + "type": 10 + }, + "PlayOnClient": { + "field": "m_bPlayOnClient", + "type": 10 + }, + "Parent": { + "field": "CAnimTagBase", + "type": 11 + } + }, + "CBinaryUpdateNode": { + "Child1": { + "field": "m_pChild1", + "classname": "CAnimUpdateNodeRef", + "type": 16 + }, + "Child2": { + "field": "m_pChild2", + "classname": "CAnimUpdateNodeRef", + "type": 16 + }, + "TimingBehavior": { + "field": "m_timingBehavior", + "type": 6 + }, + "TimingBlend": { + "field": "m_flTimingBlend", + "type": 8 + }, + "ResetChild1": { + "field": "m_bResetChild1", + "type": 10 + }, + "ResetChild2": { + "field": "m_bResetChild2", + "type": 10 + }, + "Parent": { + "field": "CAnimUpdateNodeBase", + "type": 11 + } + }, + "CBindPoseUpdateNode": { + "Parent": { + "field": "CLeafUpdateNode", + "type": 11 + } + }, + "CBlend2DUpdateNode": { + "ParamSpans": { + "field": "m_paramSpans", + "classname": "CParamSpanUpdater", + "type": 16 + }, + "NodeItemIndices": { + "field": "m_nodeItemIndices", + "type": 53 + }, + "Damping": { + "field": "m_damping", + "classname": "CAnimInputDamping", + "type": 16 + }, + "BlendSourceX": { + "field": "m_blendSourceX", + "type": 6 + }, + "ParamX": { + "field": "m_paramX", + "classname": "CAnimParamHandle", + "type": 16 + }, + "BlendSourceY": { + "field": "m_blendSourceY", + "type": 6 + }, + "ParamY": { + "field": "m_paramY", + "classname": "CAnimParamHandle", + "type": 16 + }, + "BlendMode": { + "field": "m_eBlendMode", + "type": 6 + }, + "PlaybackSpeed": { + "field": "m_playbackSpeed", + "type": 8 + }, + "Loop": { + "field": "m_bLoop", + "type": 10 + }, + "LockBlendOnReset": { + "field": "m_bLockBlendOnReset", + "type": 10 + }, + "LockWhenWaning": { + "field": "m_bLockWhenWaning", + "type": 10 + }, + "AnimEventsAndTagsOnMostWeightedOnly": { + "field": "m_bAnimEventsAndTagsOnMostWeightedOnly", + "type": 10 + }, + "Parent": { + "field": "CAnimUpdateNodeBase", + "type": 11 + } + }, + "CBlendCurve": { + "ControlPoint1": { + "field": "m_flControlPoint1", + "type": 8 + }, + "ControlPoint2": { + "field": "m_flControlPoint2", + "type": 8 + } + }, + "CBlendUpdateNode": { + "SortedOrder": { + "field": "m_sortedOrder", + "type": 55 + }, + "TargetValues": { + "field": "m_targetValues", + "type": 59 + }, + "BlendValueSource": { + "field": "m_blendValueSource", + "type": 6 + }, + "ParamIndex": { + "field": "m_paramIndex", + "classname": "CAnimParamHandle", + "type": 16 + }, + "Damping": { + "field": "m_damping", + "classname": "CAnimInputDamping", + "type": 16 + }, + "BlendKeyType": { + "field": "m_blendKeyType", + "type": 6 + }, + "LockBlendOnReset": { + "field": "m_bLockBlendOnReset", + "type": 10 + }, + "SyncCycles": { + "field": "m_bSyncCycles", + "type": 10 + }, + "Loop": { + "field": "m_bLoop", + "type": 10 + }, + "LockWhenWaning": { + "field": "m_bLockWhenWaning", + "type": 10 + }, + "Parent": { + "field": "CAnimUpdateNodeBase", + "type": 11 + } + }, + "CBlockSelectionMetricEvaluator": { + "Parent": { + "field": "CMotionMetricEvaluator", + "type": 11 + } + }, + "CBodyGroupAnimTag": { + "Priority": { + "field": "m_nPriority", + "type": 2 + }, + "Parent": { + "field": "CAnimTagBase", + "type": 11 + } + }, + "CBodyGroupSetting": { + "BodyGroupName": { + "field": "m_BodyGroupName", + "type": 14 + }, + "BodyGroupOption": { + "field": "m_nBodyGroupOption", + "type": 2 + } + }, + "CBoneMaskUpdateNode": { + "WeightListIndex": { + "field": "m_nWeightListIndex", + "type": 2 + }, + "RootMotionBlend": { + "field": "m_flRootMotionBlend", + "type": 8 + }, + "BlendSpace": { + "field": "m_blendSpace", + "type": 6 + }, + "FootMotionTiming": { + "field": "m_footMotionTiming", + "type": 6 + }, + "UseBlendScale": { + "field": "m_bUseBlendScale", + "type": 10 + }, + "BlendValueSource": { + "field": "m_blendValueSource", + "type": 6 + }, + "BlendParameter": { + "field": "m_hBlendParameter", + "classname": "CAnimParamHandle", + "type": 16 + }, + "Parent": { + "field": "CBinaryUpdateNode", + "type": 11 + } + }, + "CBonePositionMetricEvaluator": { + "BoneIndex": { + "field": "m_nBoneIndex", + "type": 2 + }, + "Parent": { + "field": "CMotionMetricEvaluator", + "type": 11 + } + }, + "CBoneVelocityMetricEvaluator": { + "BoneIndex": { + "field": "m_nBoneIndex", + "type": 2 + }, + "Parent": { + "field": "CMotionMetricEvaluator", + "type": 11 + } + }, + "CBoolAnimParameter": { + "DefaultValue": { + "field": "m_bDefaultValue", + "type": 10 + }, + "Parent": { + "field": "CConcreteAnimParameter", + "type": 11 + } + }, + "CCPPScriptComponentUpdater": { + "Parent": { + "field": "CAnimComponentUpdater", + "type": 11 + } + }, + "CCachedPose": { + "MorphWeights": { + "field": "m_morphWeights", + "type": 59 + }, + "Sequence": { + "field": "m_hSequence", + "type": 2 + }, + "Cycle": { + "field": "m_flCycle", + "type": 8 + } + }, + "CChoiceUpdateNode": { + "Weights": { + "field": "m_weights", + "type": 59 + }, + "BlendTimes": { + "field": "m_blendTimes", + "type": 59 + }, + "ChoiceMethod": { + "field": "m_choiceMethod", + "type": 6 + }, + "ChoiceChangeMethod": { + "field": "m_choiceChangeMethod", + "type": 6 + }, + "BlendMethod": { + "field": "m_blendMethod", + "type": 6 + }, + "BlendTime": { + "field": "m_blendTime", + "type": 8 + }, + "CrossFade": { + "field": "m_bCrossFade", + "type": 10 + }, + "ResetChosen": { + "field": "m_bResetChosen", + "type": 10 + }, + "DontResetSameSelection": { + "field": "m_bDontResetSameSelection", + "type": 10 + }, + "Parent": { + "field": "CAnimUpdateNodeBase", + "type": 11 + } + }, + "CChoreoUpdateNode": { + "Parent": { + "field": "CUnaryUpdateNode", + "type": 11 + } + }, + "CClothSettingsAnimTag": { + "Stiffness": { + "field": "m_flStiffness", + "type": 8 + }, + "EaseIn": { + "field": "m_flEaseIn", + "type": 8 + }, + "EaseOut": { + "field": "m_flEaseOut", + "type": 8 + }, + "VertexSet": { + "field": "m_nVertexSet", + "type": 14 + }, + "Parent": { + "field": "CAnimTagBase", + "type": 11 + } + }, + "CConcreteAnimParameter": { + "PreviewButton": { + "field": "m_previewButton", + "type": 6 + }, + "NetworkSetting": { + "field": "m_eNetworkSetting", + "type": 6 + }, + "UseMostRecentValue": { + "field": "m_bUseMostRecentValue", + "type": 10 + }, + "AutoReset": { + "field": "m_bAutoReset", + "type": 10 + }, + "GameWritable": { + "field": "m_bGameWritable", + "type": 10 + }, + "GraphWritable": { + "field": "m_bGraphWritable", + "type": 10 + }, + "Parent": { + "field": "CAnimParameterBase", + "type": 11 + } + }, + "CCurrentRotationVelocityMetricEvaluator": { + "Parent": { + "field": "CMotionMetricEvaluator", + "type": 11 + } + }, + "CCurrentVelocityMetricEvaluator": { + "Parent": { + "field": "CMotionMetricEvaluator", + "type": 11 + } + }, + "CCycleControlClipUpdateNode": { + "Sequence": { + "field": "m_hSequence", + "type": 2 + }, + "Duration": { + "field": "m_duration", + "type": 8 + }, + "ValueSource": { + "field": "m_valueSource", + "type": 6 + }, + "ParamIndex": { + "field": "m_paramIndex", + "classname": "CAnimParamHandle", + "type": 16 + }, + "Parent": { + "field": "CLeafUpdateNode", + "type": 11 + } + }, + "CCycleControlUpdateNode": { + "ValueSource": { + "field": "m_valueSource", + "type": 6 + }, + "ParamIndex": { + "field": "m_paramIndex", + "classname": "CAnimParamHandle", + "type": 16 + }, + "Parent": { + "field": "CUnaryUpdateNode", + "type": 11 + } + }, + "CDampedPathAnimMotorUpdater": { + "AnticipationTime": { + "field": "m_flAnticipationTime", + "type": 8 + }, + "MinSpeedScale": { + "field": "m_flMinSpeedScale", + "type": 8 + }, + "AnticipationPosParam": { + "field": "m_hAnticipationPosParam", + "classname": "CAnimParamHandle", + "type": 16 + }, + "AnticipationHeadingParam": { + "field": "m_hAnticipationHeadingParam", + "classname": "CAnimParamHandle", + "type": 16 + }, + "SpringConstant": { + "field": "m_flSpringConstant", + "type": 8 + }, + "MinSpringTension": { + "field": "m_flMinSpringTension", + "type": 8 + }, + "MaxSpringTension": { + "field": "m_flMaxSpringTension", + "type": 8 + }, + "Parent": { + "field": "CPathAnimMotorUpdaterBase", + "type": 11 + } + }, + "CDampedValueComponentUpdater": { + "Parent": { + "field": "CAnimComponentUpdater", + "type": 11 + } + }, + "CDampedValueUpdateItem": { + "Damping": { + "field": "m_damping", + "classname": "CAnimInputDamping", + "type": 16 + }, + "ParamIn": { + "field": "m_hParamIn", + "classname": "CAnimParamHandle", + "type": 16 + }, + "ParamOut": { + "field": "m_hParamOut", + "classname": "CAnimParamHandle", + "type": 16 + } + }, + "CDemoSettingsComponentUpdater": { + "Settings": { + "field": "m_settings", + "classname": "CAnimDemoCaptureSettings", + "type": 16 + }, + "Parent": { + "field": "CAnimComponentUpdater", + "type": 11 + } + }, + "CDirectPlaybackTagData": { + "SequenceName": { + "field": "m_sequenceName", + "type": 14 + } + }, + "CDirectPlaybackUpdateNode": { + "FinishEarly": { + "field": "m_bFinishEarly", + "type": 10 + }, + "ResetOnFinish": { + "field": "m_bResetOnFinish", + "type": 10 + }, + "Parent": { + "field": "CUnaryUpdateNode", + "type": 11 + } + }, + "CDirectionalBlendUpdateNode": { + "Sequences": { + "field": "m_hSequences", + "type": 31, + "size": 8 + }, + "Damping": { + "field": "m_damping", + "classname": "CAnimInputDamping", + "type": 16 + }, + "BlendValueSource": { + "field": "m_blendValueSource", + "type": 6 + }, + "ParamIndex": { + "field": "m_paramIndex", + "classname": "CAnimParamHandle", + "type": 16 + }, + "PlaybackSpeed": { + "field": "m_playbackSpeed", + "type": 8 + }, + "Duration": { + "field": "m_duration", + "type": 8 + }, + "Loop": { + "field": "m_bLoop", + "type": 10 + }, + "LockBlendOnReset": { + "field": "m_bLockBlendOnReset", + "type": 10 + }, + "Parent": { + "field": "CLeafUpdateNode", + "type": 11 + } + }, + "CDistanceRemainingMetricEvaluator": { + "MaxDistance": { + "field": "m_flMaxDistance", + "type": 8 + }, + "MinDistance": { + "field": "m_flMinDistance", + "type": 8 + }, + "StartGoalFilterDistance": { + "field": "m_flStartGoalFilterDistance", + "type": 8 + }, + "MaxGoalOvershootScale": { + "field": "m_flMaxGoalOvershootScale", + "type": 8 + }, + "FilterFixedMinDistance": { + "field": "m_bFilterFixedMinDistance", + "type": 10 + }, + "FilterGoalDistance": { + "field": "m_bFilterGoalDistance", + "type": 10 + }, + "FilterGoalOvershoot": { + "field": "m_bFilterGoalOvershoot", + "type": 10 + }, + "Parent": { + "field": "CMotionMetricEvaluator", + "type": 11 + } + }, + "CEditableMotionGraph": { + "Parent": { + "field": "CMotionGraph", + "type": 11 + } + }, + "CEmitTagActionUpdater": { + "TagIndex": { + "field": "m_nTagIndex", + "type": 2 + }, + "IsZeroDuration": { + "field": "m_bIsZeroDuration", + "type": 10 + }, + "Parent": { + "field": "CAnimActionUpdater", + "type": 11 + } + }, + "CEnumAnimParameter": { + "DefaultValue": { + "field": "m_defaultValue", + "type": 4 + }, + "EnumOptions": { + "field": "m_enumOptions", + "type": 50 + }, + "EnumReferenced": { + "field": "m_vecEnumReferenced", + "type": 58 + }, + "Parent": { + "field": "CConcreteAnimParameter", + "type": 11 + } + }, + "CExpressionActionUpdater": { + "Param": { + "field": "m_hParam", + "classname": "CAnimParamHandle", + "type": 16 + }, + "ParamType": { + "field": "m_eParamType", + "type": 4 + }, + "Script": { + "field": "m_hScript", + "classname": "AnimScriptHandle", + "type": 16 + }, + "Parent": { + "field": "CAnimActionUpdater", + "type": 11 + } + }, + "CFloatAnimParameter": { + "DefaultValue": { + "field": "m_fDefaultValue", + "type": 8 + }, + "MinValue": { + "field": "m_fMinValue", + "type": 8 + }, + "MaxValue": { + "field": "m_fMaxValue", + "type": 8 + }, + "Interpolate": { + "field": "m_bInterpolate", + "type": 10 + }, + "Parent": { + "field": "CConcreteAnimParameter", + "type": 11 + } + }, + "CFollowAttachmentUpdateNode": { + "OpFixedData": { + "field": "m_opFixedData", + "classname": "FollowAttachmentSettings_t", + "type": 16 + }, + "Parent": { + "field": "CUnaryUpdateNode", + "type": 11 + } + }, + "CFollowPathUpdateNode": { + "BlendOutTime": { + "field": "m_flBlendOutTime", + "type": 8 + }, + "BlockNonPathMovement": { + "field": "m_bBlockNonPathMovement", + "type": 10 + }, + "StopFeetAtGoal": { + "field": "m_bStopFeetAtGoal", + "type": 10 + }, + "ScaleSpeed": { + "field": "m_bScaleSpeed", + "type": 10 + }, + "Scale": { + "field": "m_flScale", + "type": 8 + }, + "MinAngle": { + "field": "m_flMinAngle", + "type": 8 + }, + "MaxAngle": { + "field": "m_flMaxAngle", + "type": 8 + }, + "SpeedScaleBlending": { + "field": "m_flSpeedScaleBlending", + "type": 8 + }, + "TurnDamping": { + "field": "m_turnDamping", + "classname": "CAnimInputDamping", + "type": 16 + }, + "FacingTarget": { + "field": "m_facingTarget", + "type": 6 + }, + "Param": { + "field": "m_hParam", + "classname": "CAnimParamHandle", + "type": 16 + }, + "TurnToFaceOffset": { + "field": "m_flTurnToFaceOffset", + "type": 8 + }, + "TurnToFace": { + "field": "m_bTurnToFace", + "type": 10 + }, + "Parent": { + "field": "CUnaryUpdateNode", + "type": 11 + } + }, + "CFollowTargetUpdateNode": { + "OpFixedData": { + "field": "m_opFixedData", + "classname": "FollowTargetOpFixedSettings_t", + "type": 16 + }, + "ParameterPosition": { + "field": "m_hParameterPosition", + "classname": "CAnimParamHandle", + "type": 16 + }, + "ParameterOrientation": { + "field": "m_hParameterOrientation", + "classname": "CAnimParamHandle", + "type": 16 + }, + "Parent": { + "field": "CUnaryUpdateNode", + "type": 11 + } + }, + "CFootAdjustmentUpdateNode": { + "Clips": { + "field": "m_clips", + "type": 53 + }, + "BasePoseCacheHandle": { + "field": "m_hBasePoseCacheHandle", + "classname": "CPoseHandle", + "type": 16 + }, + "FacingTarget": { + "field": "m_facingTarget", + "classname": "CAnimParamHandle", + "type": 16 + }, + "TurnTimeMin": { + "field": "m_flTurnTimeMin", + "type": 8 + }, + "TurnTimeMax": { + "field": "m_flTurnTimeMax", + "type": 8 + }, + "StepHeightMax": { + "field": "m_flStepHeightMax", + "type": 8 + }, + "StepHeightMaxAngle": { + "field": "m_flStepHeightMaxAngle", + "type": 8 + }, + "ResetChild": { + "field": "m_bResetChild", + "type": 10 + }, + "AnimationDriven": { + "field": "m_bAnimationDriven", + "type": 10 + }, + "Parent": { + "field": "CUnaryUpdateNode", + "type": 11 + } + }, + "CFootCycleMetricEvaluator": { + "FootIndices": { + "field": "m_footIndices", + "type": 53 + }, + "Parent": { + "field": "CMotionMetricEvaluator", + "type": 11 + } + }, + "CFootFallAnimTag": { + "Foot": { + "field": "m_foot", + "type": 6 + }, + "Parent": { + "field": "CAnimTagBase", + "type": 11 + } + }, + "CFootLockUpdateNode": { + "OpFixedSettings": { + "field": "m_opFixedSettings", + "classname": "FootLockPoseOpFixedSettings", + "type": 16 + }, + "HipShiftDamping": { + "field": "m_hipShiftDamping", + "classname": "CAnimInputDamping", + "type": 16 + }, + "RootHeightDamping": { + "field": "m_rootHeightDamping", + "classname": "CAnimInputDamping", + "type": 16 + }, + "StrideCurveScale": { + "field": "m_flStrideCurveScale", + "type": 8 + }, + "StrideCurveLimitScale": { + "field": "m_flStrideCurveLimitScale", + "type": 8 + }, + "StepHeightIncreaseScale": { + "field": "m_flStepHeightIncreaseScale", + "type": 8 + }, + "StepHeightDecreaseScale": { + "field": "m_flStepHeightDecreaseScale", + "type": 8 + }, + "HipShiftScale": { + "field": "m_flHipShiftScale", + "type": 8 + }, + "BlendTime": { + "field": "m_flBlendTime", + "type": 8 + }, + "MaxRootHeightOffset": { + "field": "m_flMaxRootHeightOffset", + "type": 8 + }, + "MinRootHeightOffset": { + "field": "m_flMinRootHeightOffset", + "type": 8 + }, + "TiltPlanePitchSpringStrength": { + "field": "m_flTiltPlanePitchSpringStrength", + "type": 8 + }, + "TiltPlaneRollSpringStrength": { + "field": "m_flTiltPlaneRollSpringStrength", + "type": 8 + }, + "ApplyFootRotationLimits": { + "field": "m_bApplyFootRotationLimits", + "type": 10 + }, + "ApplyHipShift": { + "field": "m_bApplyHipShift", + "type": 10 + }, + "ModulateStepHeight": { + "field": "m_bModulateStepHeight", + "type": 10 + }, + "ResetChild": { + "field": "m_bResetChild", + "type": 10 + }, + "EnableVerticalCurvedPaths": { + "field": "m_bEnableVerticalCurvedPaths", + "type": 10 + }, + "EnableRootHeightDamping": { + "field": "m_bEnableRootHeightDamping", + "type": 10 + }, + "Parent": { + "field": "CUnaryUpdateNode", + "type": 11 + } + }, + "CFootPinningUpdateNode": { + "PoseOpFixedData": { + "field": "m_poseOpFixedData", + "classname": "FootPinningPoseOpFixedData_t", + "type": 16 + }, + "TimingSource": { + "field": "m_eTimingSource", + "type": 6 + }, + "ResetChild": { + "field": "m_bResetChild", + "type": 10 + }, + "Parent": { + "field": "CUnaryUpdateNode", + "type": 11 + } + }, + "CFootPositionMetricEvaluator": { + "FootIndices": { + "field": "m_footIndices", + "type": 53 + }, + "IgnoreSlope": { + "field": "m_bIgnoreSlope", + "type": 10 + }, + "Parent": { + "field": "CMotionMetricEvaluator", + "type": 11 + } + }, + "CFootStepTriggerUpdateNode": { + "Tolerance": { + "field": "m_flTolerance", + "type": 8 + }, + "Parent": { + "field": "CUnaryUpdateNode", + "type": 11 + } + }, + "CFootstepLandedAnimTag": { + "FootstepType": { + "field": "m_FootstepType", + "type": 6 + }, + "OverrideSoundName": { + "field": "m_OverrideSoundName", + "type": 14 + }, + "DebugAnimSourceString": { + "field": "m_DebugAnimSourceString", + "type": 14 + }, + "BoneName": { + "field": "m_BoneName", + "type": 14 + }, + "Parent": { + "field": "CAnimTagBase", + "type": 11 + } + }, + "CFutureFacingMetricEvaluator": { + "Distance": { + "field": "m_flDistance", + "type": 8 + }, + "Time": { + "field": "m_flTime", + "type": 8 + }, + "Parent": { + "field": "CMotionMetricEvaluator", + "type": 11 + } + }, + "CFutureVelocityMetricEvaluator": { + "Distance": { + "field": "m_flDistance", + "type": 8 + }, + "StoppingDistance": { + "field": "m_flStoppingDistance", + "type": 8 + }, + "TargetSpeed": { + "field": "m_flTargetSpeed", + "type": 8 + }, + "Mode": { + "field": "m_eMode", + "type": 4 + }, + "Parent": { + "field": "CMotionMetricEvaluator", + "type": 11 + } + }, + "CHandshakeAnimTagBase": { + "IsDisableTag": { + "field": "m_bIsDisableTag", + "type": 10 + }, + "Parent": { + "field": "CAnimTagBase", + "type": 11 + } + }, + "CHitReactUpdateNode": { + "OpFixedSettings": { + "field": "m_opFixedSettings", + "classname": "HitReactFixedSettings_t", + "type": 16 + }, + "TriggerParam": { + "field": "m_triggerParam", + "classname": "CAnimParamHandle", + "type": 16 + }, + "HitBoneParam": { + "field": "m_hitBoneParam", + "classname": "CAnimParamHandle", + "type": 16 + }, + "HitOffsetParam": { + "field": "m_hitOffsetParam", + "classname": "CAnimParamHandle", + "type": 16 + }, + "HitDirectionParam": { + "field": "m_hitDirectionParam", + "classname": "CAnimParamHandle", + "type": 16 + }, + "HitStrengthParam": { + "field": "m_hitStrengthParam", + "classname": "CAnimParamHandle", + "type": 16 + }, + "MinDelayBetweenHits": { + "field": "m_flMinDelayBetweenHits", + "type": 8 + }, + "ResetChild": { + "field": "m_bResetChild", + "type": 10 + }, + "Parent": { + "field": "CUnaryUpdateNode", + "type": 11 + } + }, + "CInputStreamUpdateNode": { + "Parent": { + "field": "CLeafUpdateNode", + "type": 11 + } + }, + "CIntAnimParameter": { + "DefaultValue": { + "field": "m_defaultValue", + "type": 2 + }, + "MinValue": { + "field": "m_minValue", + "type": 2 + }, + "MaxValue": { + "field": "m_maxValue", + "type": 2 + }, + "Parent": { + "field": "CConcreteAnimParameter", + "type": 11 + } + }, + "CJiggleBoneUpdateNode": { + "OpFixedData": { + "field": "m_opFixedData", + "classname": "JiggleBoneSettingsList_t", + "type": 16 + }, + "Parent": { + "field": "CUnaryUpdateNode", + "type": 11 + } + }, + "CJumpHelperUpdateNode": { + "TargetParam": { + "field": "m_hTargetParam", + "classname": "CAnimParamHandle", + "type": 16 + }, + "OriginalJumpMovement": { + "field": "m_flOriginalJumpMovement", + "type": 21 + }, + "OriginalJumpDuration": { + "field": "m_flOriginalJumpDuration", + "type": 8 + }, + "JumpStartCycle": { + "field": "m_flJumpStartCycle", + "type": 8 + }, + "JumpEndCycle": { + "field": "m_flJumpEndCycle", + "type": 8 + }, + "CorrectionMethod": { + "field": "m_eCorrectionMethod", + "type": 6 + }, + "TranslationAxis": { + "field": "m_bTranslationAxis", + "type": 39, + "size": 3 + }, + "ScaleSpeed": { + "field": "m_bScaleSpeed", + "type": 10 + }, + "Parent": { + "field": "CSequenceUpdateNode", + "type": 11 + } + }, + "CLODComponentUpdater": { + "ServerLOD": { + "field": "m_nServerLOD", + "type": 2 + }, + "Parent": { + "field": "CAnimComponentUpdater", + "type": 11 + } + }, + "CLeafUpdateNode": { + "Parent": { + "field": "CAnimUpdateNodeBase", + "type": 11 + } + }, + "CLeanMatrixUpdateNode": { + "FrameCorners": { + "field": "m_frameCorners", + "type": 31, + "size": 3 + }, + "Poses": { + "field": "m_poses", + "type": 45, + "size": 9 + }, + "Damping": { + "field": "m_damping", + "classname": "CAnimInputDamping", + "type": 16 + }, + "BlendSource": { + "field": "m_blendSource", + "type": 6 + }, + "ParamIndex": { + "field": "m_paramIndex", + "classname": "CAnimParamHandle", + "type": 16 + }, + "VerticalAxis": { + "field": "m_verticalAxis", + "type": 21 + }, + "HorizontalAxis": { + "field": "m_horizontalAxis", + "type": 21 + }, + "Sequence": { + "field": "m_hSequence", + "type": 2 + }, + "MaxValue": { + "field": "m_flMaxValue", + "type": 8 + }, + "SequenceMaxFrame": { + "field": "m_nSequenceMaxFrame", + "type": 2 + }, + "Parent": { + "field": "CLeafUpdateNode", + "type": 11 + } + }, + "CLookAtUpdateNode": { + "OpFixedSettings": { + "field": "m_opFixedSettings", + "classname": "LookAtOpFixedSettings_t", + "type": 16 + }, + "Target": { + "field": "m_target", + "type": 6 + }, + "ParamIndex": { + "field": "m_paramIndex", + "classname": "CAnimParamHandle", + "type": 16 + }, + "WeightParamIndex": { + "field": "m_weightParamIndex", + "classname": "CAnimParamHandle", + "type": 16 + }, + "ResetChild": { + "field": "m_bResetChild", + "type": 10 + }, + "LockWhenWaning": { + "field": "m_bLockWhenWaning", + "type": 10 + }, + "Parent": { + "field": "CUnaryUpdateNode", + "type": 11 + } + }, + "CLookComponentUpdater": { + "LookHeading": { + "field": "m_hLookHeading", + "classname": "CAnimParamHandle", + "type": 16 + }, + "LookHeadingVelocity": { + "field": "m_hLookHeadingVelocity", + "classname": "CAnimParamHandle", + "type": 16 + }, + "LookPitch": { + "field": "m_hLookPitch", + "classname": "CAnimParamHandle", + "type": 16 + }, + "LookDistance": { + "field": "m_hLookDistance", + "classname": "CAnimParamHandle", + "type": 16 + }, + "LookDirection": { + "field": "m_hLookDirection", + "classname": "CAnimParamHandle", + "type": 16 + }, + "LookTarget": { + "field": "m_hLookTarget", + "classname": "CAnimParamHandle", + "type": 16 + }, + "LookTargetWorldSpace": { + "field": "m_hLookTargetWorldSpace", + "classname": "CAnimParamHandle", + "type": 16 + }, + "NetworkLookTarget": { + "field": "m_bNetworkLookTarget", + "type": 10 + }, + "Parent": { + "field": "CAnimComponentUpdater", + "type": 11 + } + }, + "CMaterialAttributeAnimTag": { + "AttributeName": { + "field": "m_AttributeName", + "type": 14 + }, + "AttributeType": { + "field": "m_AttributeType", + "type": 6 + }, + "Value": { + "field": "m_flValue", + "type": 8 + }, + "Color": { + "field": "m_Color", + "type": 19 + }, + "Parent": { + "field": "CAnimTagBase", + "type": 11 + } + }, + "CMotionDataSet": { + "DimensionCount": { + "field": "m_nDimensionCount", + "type": 2 + } + }, + "CMotionGraph": { + "ParamSpans": { + "field": "m_paramSpans", + "classname": "CParamSpanUpdater", + "type": 16 + }, + "ParameterCount": { + "field": "m_nParameterCount", + "type": 2 + }, + "ConfigStartIndex": { + "field": "m_nConfigStartIndex", + "type": 2 + }, + "ConfigCount": { + "field": "m_nConfigCount", + "type": 2 + }, + "Loop": { + "field": "m_bLoop", + "type": 10 + } + }, + "CMotionGraphConfig": { + "ParamValues": { + "field": "m_paramValues", + "type": 37, + "size": 4 + }, + "Duration": { + "field": "m_flDuration", + "type": 8 + }, + "MotionIndex": { + "field": "m_nMotionIndex", + "classname": "MotionIndex", + "type": 16 + }, + "SampleStart": { + "field": "m_nSampleStart", + "type": 2 + }, + "SampleCount": { + "field": "m_nSampleCount", + "type": 2 + } + }, + "CMotionGraphGroup": { + "SearchDB": { + "field": "m_searchDB", + "classname": "CMotionSearchDB", + "type": 16 + }, + "SampleToConfig": { + "field": "m_sampleToConfig", + "type": 53 + }, + "IsActiveScript": { + "field": "m_hIsActiveScript", + "classname": "AnimScriptHandle", + "type": 16 + } + }, + "CMotionGraphUpdateNode": { + "Parent": { + "field": "CLeafUpdateNode", + "type": 11 + } + }, + "CMotionMatchingUpdateNode": { + "DataSet": { + "field": "m_dataSet", + "classname": "CMotionDataSet", + "type": 16 + }, + "Weights": { + "field": "m_weights", + "type": 59 + }, + "SearchEveryTick": { + "field": "m_bSearchEveryTick", + "type": 10 + }, + "SearchInterval": { + "field": "m_flSearchInterval", + "type": 8 + }, + "SearchWhenClipEnds": { + "field": "m_bSearchWhenClipEnds", + "type": 10 + }, + "SearchWhenGoalChanges": { + "field": "m_bSearchWhenGoalChanges", + "type": 10 + }, + "BlendCurve": { + "field": "m_blendCurve", + "classname": "CBlendCurve", + "type": 16 + }, + "SampleRate": { + "field": "m_flSampleRate", + "type": 8 + }, + "BlendTime": { + "field": "m_flBlendTime", + "type": 8 + }, + "LockClipWhenWaning": { + "field": "m_bLockClipWhenWaning", + "type": 10 + }, + "SelectionThreshold": { + "field": "m_flSelectionThreshold", + "type": 8 + }, + "ReselectionTimeWindow": { + "field": "m_flReselectionTimeWindow", + "type": 8 + }, + "EnableRotationCorrection": { + "field": "m_bEnableRotationCorrection", + "type": 10 + }, + "GoalAssist": { + "field": "m_bGoalAssist", + "type": 10 + }, + "GoalAssistDistance": { + "field": "m_flGoalAssistDistance", + "type": 8 + }, + "GoalAssistTolerance": { + "field": "m_flGoalAssistTolerance", + "type": 8 + }, + "DistanceScale_Damping": { + "field": "m_distanceScale_Damping", + "classname": "CAnimInputDamping", + "type": 16 + }, + "DistanceScale_OuterRadius": { + "field": "m_flDistanceScale_OuterRadius", + "type": 8 + }, + "DistanceScale_InnerRadius": { + "field": "m_flDistanceScale_InnerRadius", + "type": 8 + }, + "DistanceScale_MaxScale": { + "field": "m_flDistanceScale_MaxScale", + "type": 8 + }, + "DistanceScale_MinScale": { + "field": "m_flDistanceScale_MinScale", + "type": 8 + }, + "EnableDistanceScaling": { + "field": "m_bEnableDistanceScaling", + "type": 10 + }, + "Parent": { + "field": "CLeafUpdateNode", + "type": 11 + } + }, + "CMotionMetricEvaluator": { + "Means": { + "field": "m_means", + "type": 59 + }, + "StandardDeviations": { + "field": "m_standardDeviations", + "type": 59 + }, + "Weight": { + "field": "m_flWeight", + "type": 8 + }, + "DimensionStartIndex": { + "field": "m_nDimensionStartIndex", + "type": 2 + } + }, + "CMotionNode": { + "Name": { + "field": "m_name", + "type": 14 + }, + "Id": { + "field": "m_id", + "classname": "AnimNodeID", + "type": 16 + } + }, + "CMotionNodeBlend1D": { + "ParamIndex": { + "field": "m_nParamIndex", + "type": 2 + }, + "Parent": { + "field": "CMotionNode", + "type": 11 + } + }, + "CMotionNodeSequence": { + "Sequence": { + "field": "m_hSequence", + "type": 2 + }, + "PlaybackSpeed": { + "field": "m_flPlaybackSpeed", + "type": 8 + }, + "Parent": { + "field": "CMotionNode", + "type": 11 + } + }, + "CMotionSearchDB": { + "RootNode": { + "field": "m_rootNode", + "classname": "CMotionSearchNode", + "type": 16 + }, + "ResidualQuantizer": { + "field": "m_residualQuantizer", + "classname": "CProductQuantizer", + "type": 16 + } + }, + "CMotionSearchNode": { + "Quantizer": { + "field": "m_quantizer", + "classname": "CVectorQuantizer", + "type": 16 + }, + "SelectableSamples": { + "field": "m_selectableSamples", + "type": 53 + } + }, + "CMovementComponentUpdater": { + "FacingDamping": { + "field": "m_facingDamping", + "classname": "CAnimInputDamping", + "type": 16 + }, + "DefaultMotorIndex": { + "field": "m_nDefaultMotorIndex", + "type": 2 + }, + "DefaultRunSpeed": { + "field": "m_flDefaultRunSpeed", + "type": 8 + }, + "MoveVarsDisabled": { + "field": "m_bMoveVarsDisabled", + "type": 10 + }, + "NetworkPath": { + "field": "m_bNetworkPath", + "type": 10 + }, + "NetworkFacing": { + "field": "m_bNetworkFacing", + "type": 10 + }, + "ParamHandles": { + "field": "m_paramHandles", + "type": 45, + "size": 30 + }, + "Parent": { + "field": "CAnimComponentUpdater", + "type": 11 + } + }, + "CMovementHandshakeAnimTag": { + "Parent": { + "field": "CHandshakeAnimTagBase", + "type": 11 + } + }, + "CMoverUpdateNode": { + "Damping": { + "field": "m_damping", + "classname": "CAnimInputDamping", + "type": 16 + }, + "FacingTarget": { + "field": "m_facingTarget", + "type": 6 + }, + "MoveVecParam": { + "field": "m_hMoveVecParam", + "classname": "CAnimParamHandle", + "type": 16 + }, + "MoveHeadingParam": { + "field": "m_hMoveHeadingParam", + "classname": "CAnimParamHandle", + "type": 16 + }, + "TurnToFaceParam": { + "field": "m_hTurnToFaceParam", + "classname": "CAnimParamHandle", + "type": 16 + }, + "TurnToFaceOffset": { + "field": "m_flTurnToFaceOffset", + "type": 8 + }, + "TurnToFaceLimit": { + "field": "m_flTurnToFaceLimit", + "type": 8 + }, + "Additive": { + "field": "m_bAdditive", + "type": 10 + }, + "ApplyMovement": { + "field": "m_bApplyMovement", + "type": 10 + }, + "OrientMovement": { + "field": "m_bOrientMovement", + "type": 10 + }, + "ApplyRotation": { + "field": "m_bApplyRotation", + "type": 10 + }, + "LimitOnly": { + "field": "m_bLimitOnly", + "type": 10 + }, + "Parent": { + "field": "CUnaryUpdateNode", + "type": 11 + } + }, + "COrientationWarpUpdateNode": { + "FacingPositionParameter": { + "field": "m_hFacingPositionParameter", + "classname": "CAnimParamHandle", + "type": 16 + }, + "TurnDamping": { + "field": "m_turnDamping", + "classname": "CAnimInputDamping", + "type": 16 + }, + "Parent": { + "field": "CUnaryUpdateNode", + "type": 11 + } + }, + "CPairedSequenceComponentUpdater": { + "Parent": { + "field": "CAnimComponentUpdater", + "type": 11 + } + }, + "CPairedSequenceUpdateNode": { + "Parent": { + "field": "CSequenceUpdateNodeBase", + "type": 11 + } + }, + "CParamSpanUpdater": {}, + "CParticleAnimTag": { + "ParticleSystemName": { + "field": "m_particleSystemName", + "type": 14 + }, + "ConfigName": { + "field": "m_configName", + "type": 14 + }, + "DetachFromOwner": { + "field": "m_bDetachFromOwner", + "type": 10 + }, + "StopWhenTagEnds": { + "field": "m_bStopWhenTagEnds", + "type": 10 + }, + "TagEndStopIsInstant": { + "field": "m_bTagEndStopIsInstant", + "type": 10 + }, + "AttachmentName": { + "field": "m_attachmentName", + "type": 14 + }, + "AttachmentType": { + "field": "m_attachmentType", + "type": 6 + }, + "AttachmentCP1Name": { + "field": "m_attachmentCP1Name", + "type": 14 + }, + "AttachmentCP1Type": { + "field": "m_attachmentCP1Type", + "type": 6 + }, + "Parent": { + "field": "CAnimTagBase", + "type": 11 + } + }, + "CPathAnimMotorUpdater": { + "Parent": { + "field": "CPathAnimMotorUpdaterBase", + "type": 11 + } + }, + "CPathAnimMotorUpdaterBase": { + "LockToPath": { + "field": "m_bLockToPath", + "type": 10 + }, + "Parent": { + "field": "CAnimMotorUpdaterBase", + "type": 11 + } + }, + "CPathHelperUpdateNode": { + "StoppingRadius": { + "field": "m_flStoppingRadius", + "type": 8 + }, + "StoppingSpeedScale": { + "field": "m_flStoppingSpeedScale", + "type": 8 + }, + "Parent": { + "field": "CUnaryUpdateNode", + "type": 11 + } + }, + "CPathMetricEvaluator": { + "PathTimeSamples": { + "field": "m_pathTimeSamples", + "type": 59 + }, + "Distance": { + "field": "m_flDistance", + "type": 8 + }, + "ExtrapolateMovement": { + "field": "m_bExtrapolateMovement", + "type": 10 + }, + "MinExtrapolationSpeed": { + "field": "m_flMinExtrapolationSpeed", + "type": 8 + }, + "Parent": { + "field": "CMotionMetricEvaluator", + "type": 11 + } + }, + "CPlayerInputAnimMotorUpdater": { + "SampleTimes": { + "field": "m_sampleTimes", + "type": 59 + }, + "SpringConstant": { + "field": "m_flSpringConstant", + "type": 8 + }, + "AnticipationDistance": { + "field": "m_flAnticipationDistance", + "type": 8 + }, + "AnticipationPosParam": { + "field": "m_hAnticipationPosParam", + "classname": "CAnimParamHandle", + "type": 16 + }, + "AnticipationHeadingParam": { + "field": "m_hAnticipationHeadingParam", + "classname": "CAnimParamHandle", + "type": 16 + }, + "UseAcceleration": { + "field": "m_bUseAcceleration", + "type": 10 + }, + "Parent": { + "field": "CAnimMotorUpdaterBase", + "type": 11 + } + }, + "CPoseHandle": { + "Index": { + "field": "m_nIndex", + "type": 5 + }, + "Type": { + "field": "m_eType", + "type": 4 + } + }, + "CProductQuantizer": { + "Dimensions": { + "field": "m_nDimensions", + "type": 2 + } + }, + "CRagdollAnimTag": { + "PoseControl": { + "field": "m_nPoseControl", + "type": 6 + }, + "Frequency": { + "field": "m_flFrequency", + "type": 8 + }, + "DampingRatio": { + "field": "m_flDampingRatio", + "type": 8 + }, + "DecayDuration": { + "field": "m_flDecayDuration", + "type": 8 + }, + "DecayBias": { + "field": "m_flDecayBias", + "type": 8 + }, + "Destroy": { + "field": "m_bDestroy", + "type": 10 + }, + "Parent": { + "field": "CAnimTagBase", + "type": 11 + } + }, + "CRagdollComponentUpdater": { + "BoneIndices": { + "field": "m_boneIndices", + "type": 53 + }, + "BoneNames": { + "field": "m_boneNames", + "type": 50 + }, + "SpringFrequencyMin": { + "field": "m_flSpringFrequencyMin", + "type": 8 + }, + "SpringFrequencyMax": { + "field": "m_flSpringFrequencyMax", + "type": 8 + }, + "MaxStretch": { + "field": "m_flMaxStretch", + "type": 8 + }, + "SolidCollisionAtZeroWeight": { + "field": "m_bSolidCollisionAtZeroWeight", + "type": 10 + }, + "Parent": { + "field": "CAnimComponentUpdater", + "type": 11 + } + }, + "CRagdollUpdateNode": { + "WeightListIndex": { + "field": "m_nWeightListIndex", + "type": 2 + }, + "PoseControlMethod": { + "field": "m_poseControlMethod", + "type": 6 + }, + "Parent": { + "field": "CUnaryUpdateNode", + "type": 11 + } + }, + "CRootUpdateNode": { + "Parent": { + "field": "CUnaryUpdateNode", + "type": 11 + } + }, + "CSelectorUpdateNode": { + "Tags": { + "field": "m_tags", + "type": 51 + }, + "BlendCurve": { + "field": "m_blendCurve", + "classname": "CBlendCurve", + "type": 16 + }, + "Parameter": { + "field": "m_hParameter", + "classname": "CAnimParamHandle", + "type": 16 + }, + "TagIndex": { + "field": "m_nTagIndex", + "type": 2 + }, + "TagBehavior": { + "field": "m_eTagBehavior", + "type": 6 + }, + "ResetOnChange": { + "field": "m_bResetOnChange", + "type": 10 + }, + "LockWhenWaning": { + "field": "m_bLockWhenWaning", + "type": 10 + }, + "SyncCyclesOnChange": { + "field": "m_bSyncCyclesOnChange", + "type": 10 + }, + "Parent": { + "field": "CAnimUpdateNodeBase", + "type": 11 + } + }, + "CSequenceFinishedAnimTag": { + "SequenceName": { + "field": "m_sequenceName", + "type": 14 + }, + "Parent": { + "field": "CAnimTagBase", + "type": 11 + } + }, + "CSequenceTagSpans": {}, + "CSequenceUpdateNode": { + "Sequence": { + "field": "m_hSequence", + "type": 2 + }, + "Duration": { + "field": "m_duration", + "type": 8 + }, + "ParamSpans": { + "field": "m_paramSpans", + "classname": "CParamSpanUpdater", + "type": 16 + }, + "Parent": { + "field": "CSequenceUpdateNodeBase", + "type": 11 + } + }, + "CSequenceUpdateNodeBase": { + "PlaybackSpeed": { + "field": "m_playbackSpeed", + "type": 8 + }, + "Loop": { + "field": "m_bLoop", + "type": 10 + }, + "Parent": { + "field": "CLeafUpdateNode", + "type": 11 + } + }, + "CSetParameterActionUpdater": { + "Param": { + "field": "m_hParam", + "classname": "CAnimParamHandle", + "type": 16 + }, + "Parent": { + "field": "CAnimActionUpdater", + "type": 11 + } + }, + "CSingleFrameUpdateNode": { + "PoseCacheHandle": { + "field": "m_hPoseCacheHandle", + "classname": "CPoseHandle", + "type": 16 + }, + "Sequence": { + "field": "m_hSequence", + "type": 2 + }, + "Cycle": { + "field": "m_flCycle", + "type": 8 + }, + "Parent": { + "field": "CLeafUpdateNode", + "type": 11 + } + }, + "CSlopeComponentUpdater": { + "TraceDistance": { + "field": "m_flTraceDistance", + "type": 8 + }, + "SlopeAngle": { + "field": "m_hSlopeAngle", + "classname": "CAnimParamHandle", + "type": 16 + }, + "SlopeAngleFront": { + "field": "m_hSlopeAngleFront", + "classname": "CAnimParamHandle", + "type": 16 + }, + "SlopeAngleSide": { + "field": "m_hSlopeAngleSide", + "classname": "CAnimParamHandle", + "type": 16 + }, + "SlopeHeading": { + "field": "m_hSlopeHeading", + "classname": "CAnimParamHandle", + "type": 16 + }, + "SlopeNormal": { + "field": "m_hSlopeNormal", + "classname": "CAnimParamHandle", + "type": 16 + }, + "SlopeNormal_WorldSpace": { + "field": "m_hSlopeNormal_WorldSpace", + "classname": "CAnimParamHandle", + "type": 16 + }, + "Parent": { + "field": "CAnimComponentUpdater", + "type": 11 + } + }, + "CSlowDownOnSlopesUpdateNode": { + "SlowDownStrength": { + "field": "m_flSlowDownStrength", + "type": 8 + }, + "Parent": { + "field": "CUnaryUpdateNode", + "type": 11 + } + }, + "CSolveIKChainUpdateNode": { + "OpFixedData": { + "field": "m_opFixedData", + "classname": "SolveIKChainPoseOpFixedSettings_t", + "type": 16 + }, + "Parent": { + "field": "CUnaryUpdateNode", + "type": 11 + } + }, + "CSolveIKTargetHandle_t": { + "PositionHandle": { + "field": "m_positionHandle", + "classname": "CAnimParamHandle", + "type": 16 + }, + "OrientationHandle": { + "field": "m_orientationHandle", + "classname": "CAnimParamHandle", + "type": 16 + } + }, + "CSpeedScaleUpdateNode": { + "ParamIndex": { + "field": "m_paramIndex", + "classname": "CAnimParamHandle", + "type": 16 + }, + "Parent": { + "field": "CUnaryUpdateNode", + "type": 11 + } + }, + "CStanceOverrideUpdateNode": { + "StanceSourceNode": { + "field": "m_pStanceSourceNode", + "classname": "CAnimUpdateNodeRef", + "type": 16 + }, + "Parameter": { + "field": "m_hParameter", + "classname": "CAnimParamHandle", + "type": 16 + }, + "Mode": { + "field": "m_eMode", + "type": 6 + }, + "Parent": { + "field": "CUnaryUpdateNode", + "type": 11 + } + }, + "CStanceScaleUpdateNode": { + "Param": { + "field": "m_hParam", + "classname": "CAnimParamHandle", + "type": 16 + }, + "Parent": { + "field": "CUnaryUpdateNode", + "type": 11 + } + }, + "CStateActionUpdater": { + "Behavior": { + "field": "m_eBehavior", + "type": 6 + } + }, + "CStateMachineComponentUpdater": { + "StateMachine": { + "field": "m_stateMachine", + "classname": "CAnimStateMachineUpdater", + "type": 16 + }, + "Parent": { + "field": "CAnimComponentUpdater", + "type": 11 + } + }, + "CStateMachineUpdateNode": { + "StateMachine": { + "field": "m_stateMachine", + "classname": "CAnimStateMachineUpdater", + "type": 16 + }, + "BlockWaningTags": { + "field": "m_bBlockWaningTags", + "type": 10 + }, + "LockStateWhenWaning": { + "field": "m_bLockStateWhenWaning", + "type": 10 + }, + "Parent": { + "field": "CAnimUpdateNodeBase", + "type": 11 + } + }, + "CStateNodeStateData": { + "Child": { + "field": "m_pChild", + "classname": "CAnimUpdateNodeRef", + "type": 16 + } + }, + "CStateNodeTransitionData": { + "Curve": { + "field": "m_curve", + "classname": "CBlendCurve", + "type": 16 + } + }, + "CStateUpdateData": { + "Name": { + "field": "m_name", + "type": 14 + }, + "Script": { + "field": "m_hScript", + "classname": "AnimScriptHandle", + "type": 16 + }, + "TransitionIndices": { + "field": "m_transitionIndices", + "type": 53 + }, + "StateID": { + "field": "m_stateID", + "classname": "AnimStateID", + "type": 16 + } + }, + "CStaticPoseCache": { + "BoneCount": { + "field": "m_nBoneCount", + "type": 2 + }, + "MorphCount": { + "field": "m_nMorphCount", + "type": 2 + } + }, + "CStaticPoseCacheBuilder": { + "Parent": { + "field": "CStaticPoseCache", + "type": 11 + } + }, + "CStepsRemainingMetricEvaluator": { + "FootIndices": { + "field": "m_footIndices", + "type": 53 + }, + "MinStepsRemaining": { + "field": "m_flMinStepsRemaining", + "type": 8 + }, + "Parent": { + "field": "CMotionMetricEvaluator", + "type": 11 + } + }, + "CStopAtGoalUpdateNode": { + "OuterRadius": { + "field": "m_flOuterRadius", + "type": 8 + }, + "InnerRadius": { + "field": "m_flInnerRadius", + "type": 8 + }, + "MaxScale": { + "field": "m_flMaxScale", + "type": 8 + }, + "MinScale": { + "field": "m_flMinScale", + "type": 8 + }, + "Damping": { + "field": "m_damping", + "classname": "CAnimInputDamping", + "type": 16 + }, + "Parent": { + "field": "CUnaryUpdateNode", + "type": 11 + } + }, + "CStringAnimTag": { + "Parent": { + "field": "CAnimTagBase", + "type": 11 + } + }, + "CSubtractUpdateNode": { + "FootMotionTiming": { + "field": "m_footMotionTiming", + "type": 6 + }, + "ApplyToFootMotion": { + "field": "m_bApplyToFootMotion", + "type": 10 + }, + "ApplyChannelsSeparately": { + "field": "m_bApplyChannelsSeparately", + "type": 10 + }, + "UseModelSpace": { + "field": "m_bUseModelSpace", + "type": 10 + }, + "Parent": { + "field": "CBinaryUpdateNode", + "type": 11 + } + }, + "CSymbolAnimParameter": { + "Parent": { + "field": "CConcreteAnimParameter", + "type": 11 + } + }, + "CTargetSelectorUpdateNode": { + "PositionParameter": { + "field": "m_hPositionParameter", + "classname": "CAnimParamHandle", + "type": 16 + }, + "FacePositionParameter": { + "field": "m_hFacePositionParameter", + "classname": "CAnimParamHandle", + "type": 16 + }, + "Parent": { + "field": "CAnimUpdateNodeBase", + "type": 11 + } + }, + "CTargetWarpUpdateNode": { + "PositionParameter": { + "field": "m_hPositionParameter", + "classname": "CAnimParamHandle", + "type": 16 + }, + "FacePositionParameter": { + "field": "m_hFacePositionParameter", + "classname": "CAnimParamHandle", + "type": 16 + }, + "Parent": { + "field": "CUnaryUpdateNode", + "type": 11 + } + }, + "CTaskHandshakeAnimTag": { + "Parent": { + "field": "CHandshakeAnimTagBase", + "type": 11 + } + }, + "CTaskStatusAnimTag": { + "Parent": { + "field": "CAnimTagBase", + "type": 11 + } + }, + "CTimeRemainingMetricEvaluator": { + "MatchByTimeRemaining": { + "field": "m_bMatchByTimeRemaining", + "type": 10 + }, + "MaxTimeRemaining": { + "field": "m_flMaxTimeRemaining", + "type": 8 + }, + "FilterByTimeRemaining": { + "field": "m_bFilterByTimeRemaining", + "type": 10 + }, + "MinTimeRemaining": { + "field": "m_flMinTimeRemaining", + "type": 8 + }, + "Parent": { + "field": "CMotionMetricEvaluator", + "type": 11 + } + }, + "CToggleComponentActionUpdater": { + "ComponentID": { + "field": "m_componentID", + "classname": "AnimComponentID", + "type": 16 + }, + "SetEnabled": { + "field": "m_bSetEnabled", + "type": 10 + }, + "Parent": { + "field": "CAnimActionUpdater", + "type": 11 + } + }, + "CTransitionUpdateData": { + "SrcStateIndex": { + "field": "m_srcStateIndex", + "type": 4 + }, + "DestStateIndex": { + "field": "m_destStateIndex", + "type": 4 + } + }, + "CTurnHelperUpdateNode": { + "FacingTarget": { + "field": "m_facingTarget", + "type": 6 + }, + "TurnStartTimeOffset": { + "field": "m_turnStartTimeOffset", + "type": 8 + }, + "TurnDuration": { + "field": "m_turnDuration", + "type": 8 + }, + "MatchChildDuration": { + "field": "m_bMatchChildDuration", + "type": 10 + }, + "ManualTurnOffset": { + "field": "m_manualTurnOffset", + "type": 8 + }, + "UseManualTurnOffset": { + "field": "m_bUseManualTurnOffset", + "type": 10 + }, + "Parent": { + "field": "CUnaryUpdateNode", + "type": 11 + } + }, + "CTwoBoneIKUpdateNode": { + "OpFixedData": { + "field": "m_opFixedData", + "classname": "TwoBoneIKSettings_t", + "type": 16 + }, + "Parent": { + "field": "CUnaryUpdateNode", + "type": 11 + } + }, + "CUnaryUpdateNode": { + "ChildNode": { + "field": "m_pChildNode", + "classname": "CAnimUpdateNodeRef", + "type": 16 + }, + "Parent": { + "field": "CAnimUpdateNodeBase", + "type": 11 + } + }, + "CVectorAnimParameter": { + "DefaultValue": { + "field": "m_defaultValue", + "type": 21 + }, + "Interpolate": { + "field": "m_bInterpolate", + "type": 10 + }, + "Parent": { + "field": "CConcreteAnimParameter", + "type": 11 + } + }, + "CVectorQuantizer": { + "CentroidVectors": { + "field": "m_centroidVectors", + "type": 59 + }, + "Centroids": { + "field": "m_nCentroids", + "type": 2 + }, + "Dimensions": { + "field": "m_nDimensions", + "type": 2 + } + }, + "CVirtualAnimParameter": { + "ExpressionString": { + "field": "m_expressionString", + "type": 14 + }, + "ParamType": { + "field": "m_eParamType", + "type": 4 + }, + "Parent": { + "field": "CAnimParameterBase", + "type": 11 + } + }, + "CWayPointHelperUpdateNode": { + "StartCycle": { + "field": "m_flStartCycle", + "type": 8 + }, + "EndCycle": { + "field": "m_flEndCycle", + "type": 8 + }, + "OnlyGoals": { + "field": "m_bOnlyGoals", + "type": 10 + }, + "PreventOvershoot": { + "field": "m_bPreventOvershoot", + "type": 10 + }, + "PreventUndershoot": { + "field": "m_bPreventUndershoot", + "type": 10 + }, + "Parent": { + "field": "CUnaryUpdateNode", + "type": 11 + } + }, + "CZeroPoseUpdateNode": { + "Parent": { + "field": "CLeafUpdateNode", + "type": 11 + } + }, + "ChainToSolveData_t": { + "ChainIndex": { + "field": "m_nChainIndex", + "type": 2 + }, + "SolverSettings": { + "field": "m_SolverSettings", + "classname": "IKSolverSettings_t", + "type": 16 + }, + "TargetSettings": { + "field": "m_TargetSettings", + "classname": "IKTargetSettings_t", + "type": 16 + }, + "DebugSetting": { + "field": "m_DebugSetting", + "type": 6 + }, + "DebugNormalizedValue": { + "field": "m_flDebugNormalizedValue", + "type": 8 + }, + "DebugOffset": { + "field": "m_vDebugOffset", + "type": 21 + } + }, + "ConfigIndex": { + "Group": { + "field": "m_nGroup", + "type": 5 + }, + "Config": { + "field": "m_nConfig", + "type": 5 + } + }, + "FollowAttachmentSettings_t": { + "Attachment": { + "field": "m_attachment", + "classname": "CAnimAttachment", + "type": 16 + }, + "BoneIndex": { + "field": "m_boneIndex", + "type": 2 + }, + "MatchTranslation": { + "field": "m_bMatchTranslation", + "type": 10 + }, + "MatchRotation": { + "field": "m_bMatchRotation", + "type": 10 + } + }, + "FollowTargetOpFixedSettings_t": { + "BoneIndex": { + "field": "m_boneIndex", + "type": 2 + }, + "BoneTarget": { + "field": "m_bBoneTarget", + "type": 10 + }, + "BoneTargetIndex": { + "field": "m_boneTargetIndex", + "type": 2 + }, + "WorldCoodinateTarget": { + "field": "m_bWorldCoodinateTarget", + "type": 10 + }, + "MatchTargetOrientation": { + "field": "m_bMatchTargetOrientation", + "type": 10 + } + }, + "FootFixedData_t": { + "ToeOffset": { + "field": "m_vToeOffset", + "type": 21 + }, + "HeelOffset": { + "field": "m_vHeelOffset", + "type": 21 + }, + "TargetBoneIndex": { + "field": "m_nTargetBoneIndex", + "type": 2 + }, + "AnkleBoneIndex": { + "field": "m_nAnkleBoneIndex", + "type": 2 + }, + "IKAnchorBoneIndex": { + "field": "m_nIKAnchorBoneIndex", + "type": 2 + }, + "IkChainIndex": { + "field": "m_ikChainIndex", + "type": 2 + }, + "MaxIKLength": { + "field": "m_flMaxIKLength", + "type": 8 + }, + "FootIndex": { + "field": "m_nFootIndex", + "type": 2 + }, + "TagIndex": { + "field": "m_nTagIndex", + "type": 2 + }, + "MaxRotationLeft": { + "field": "m_flMaxRotationLeft", + "type": 8 + }, + "MaxRotationRight": { + "field": "m_flMaxRotationRight", + "type": 8 + } + }, + "FootFixedSettings": { + "TraceSettings": { + "field": "m_traceSettings", + "classname": "TraceSettings_t", + "type": 16 + }, + "FootBaseBindPosePositionMS": { + "field": "m_vFootBaseBindPosePositionMS", + "type": 21 + }, + "FootBaseLength": { + "field": "m_flFootBaseLength", + "type": 8 + }, + "MaxRotationLeft": { + "field": "m_flMaxRotationLeft", + "type": 8 + }, + "MaxRotationRight": { + "field": "m_flMaxRotationRight", + "type": 8 + }, + "FootstepLandedTagIndex": { + "field": "m_footstepLandedTagIndex", + "type": 2 + }, + "EnableTracing": { + "field": "m_bEnableTracing", + "type": 10 + }, + "TraceAngleBlend": { + "field": "m_flTraceAngleBlend", + "type": 8 + }, + "DisableTagIndex": { + "field": "m_nDisableTagIndex", + "type": 2 + }, + "FootIndex": { + "field": "m_nFootIndex", + "type": 2 + } + }, + "FootLockPoseOpFixedSettings": { + "HipDampingSettings": { + "field": "m_hipDampingSettings", + "classname": "CAnimInputDamping", + "type": 16 + }, + "HipBoneIndex": { + "field": "m_nHipBoneIndex", + "type": 2 + }, + "IkSolverType": { + "field": "m_ikSolverType", + "type": 6 + }, + "ApplyTilt": { + "field": "m_bApplyTilt", + "type": 10 + }, + "ApplyHipDrop": { + "field": "m_bApplyHipDrop", + "type": 10 + }, + "AlwaysUseFallbackHinge": { + "field": "m_bAlwaysUseFallbackHinge", + "type": 10 + }, + "ApplyFootRotationLimits": { + "field": "m_bApplyFootRotationLimits", + "type": 10 + }, + "ApplyLegTwistLimits": { + "field": "m_bApplyLegTwistLimits", + "type": 10 + }, + "MaxFootHeight": { + "field": "m_flMaxFootHeight", + "type": 8 + }, + "ExtensionScale": { + "field": "m_flExtensionScale", + "type": 8 + }, + "MaxLegTwist": { + "field": "m_flMaxLegTwist", + "type": 8 + }, + "EnableLockBreaking": { + "field": "m_bEnableLockBreaking", + "type": 10 + }, + "LockBreakTolerance": { + "field": "m_flLockBreakTolerance", + "type": 8 + }, + "LockBlendTime": { + "field": "m_flLockBlendTime", + "type": 8 + }, + "EnableStretching": { + "field": "m_bEnableStretching", + "type": 10 + }, + "MaxStretchAmount": { + "field": "m_flMaxStretchAmount", + "type": 8 + }, + "StretchExtensionScale": { + "field": "m_flStretchExtensionScale", + "type": 8 + } + }, + "FootPinningPoseOpFixedData_t": { + "BlendTime": { + "field": "m_flBlendTime", + "type": 8 + }, + "LockBreakDistance": { + "field": "m_flLockBreakDistance", + "type": 8 + }, + "MaxLegTwist": { + "field": "m_flMaxLegTwist", + "type": 8 + }, + "HipBoneIndex": { + "field": "m_nHipBoneIndex", + "type": 2 + }, + "ApplyLegTwistLimits": { + "field": "m_bApplyLegTwistLimits", + "type": 10 + }, + "ApplyFootRotationLimits": { + "field": "m_bApplyFootRotationLimits", + "type": 10 + } + }, + "FootStepTrigger": { + "Tags": { + "field": "m_tags", + "type": 53 + }, + "FootIndex": { + "field": "m_nFootIndex", + "type": 2 + }, + "TriggerPhase": { + "field": "m_triggerPhase", + "type": 6 + } + }, + "HitReactFixedSettings_t": { + "WeightListIndex": { + "field": "m_nWeightListIndex", + "type": 2 + }, + "EffectedBoneCount": { + "field": "m_nEffectedBoneCount", + "type": 2 + }, + "MaxImpactForce": { + "field": "m_flMaxImpactForce", + "type": 8 + }, + "MinImpactForce": { + "field": "m_flMinImpactForce", + "type": 8 + }, + "WhipImpactScale": { + "field": "m_flWhipImpactScale", + "type": 8 + }, + "CounterRotationScale": { + "field": "m_flCounterRotationScale", + "type": 8 + }, + "DistanceFadeScale": { + "field": "m_flDistanceFadeScale", + "type": 8 + }, + "PropagationScale": { + "field": "m_flPropagationScale", + "type": 8 + }, + "WhipDelay": { + "field": "m_flWhipDelay", + "type": 8 + }, + "SpringStrength": { + "field": "m_flSpringStrength", + "type": 8 + }, + "WhipSpringStrength": { + "field": "m_flWhipSpringStrength", + "type": 8 + }, + "MaxAngleRadians": { + "field": "m_flMaxAngleRadians", + "type": 8 + }, + "HipBoneIndex": { + "field": "m_nHipBoneIndex", + "type": 2 + }, + "HipBoneTranslationScale": { + "field": "m_flHipBoneTranslationScale", + "type": 8 + }, + "HipDipSpringStrength": { + "field": "m_flHipDipSpringStrength", + "type": 8 + }, + "HipDipImpactScale": { + "field": "m_flHipDipImpactScale", + "type": 8 + }, + "HipDipDelay": { + "field": "m_flHipDipDelay", + "type": 8 + } + }, + "IKBoneNameAndIndex_t": { + "Name": { + "field": "m_Name", + "type": 14 + } + }, + "IKDemoCaptureSettings_t": { + "ParentBoneName": { + "field": "m_parentBoneName", + "type": 14 + }, + "Mode": { + "field": "m_eMode", + "type": 6 + }, + "IkChainName": { + "field": "m_ikChainName", + "type": 14 + }, + "OneBoneStart": { + "field": "m_oneBoneStart", + "type": 14 + }, + "OneBoneEnd": { + "field": "m_oneBoneEnd", + "type": 14 + } + }, + "IKSolverSettings_t": { + "SolverType": { + "field": "m_SolverType", + "type": 6 + }, + "NumIterations": { + "field": "m_nNumIterations", + "type": 2 + }, + "EndEffectorRotationFixUpMode": { + "field": "m_EndEffectorRotationFixUpMode", + "type": 6 + } + }, + "IKTargetSettings_t": { + "TargetSource": { + "field": "m_TargetSource", + "type": 6 + }, + "Bone": { + "field": "m_Bone", + "classname": "IKBoneNameAndIndex_t", + "type": 16 + }, + "AnimgraphParameterNamePosition": { + "field": "m_AnimgraphParameterNamePosition", + "classname": "AnimParamID", + "type": 16 + }, + "AnimgraphParameterNameOrientation": { + "field": "m_AnimgraphParameterNameOrientation", + "classname": "AnimParamID", + "type": 16 + }, + "TargetCoordSystem": { + "field": "m_TargetCoordSystem", + "type": 6 + } + }, + "JiggleBoneSettingsList_t": {}, + "JiggleBoneSettings_t": { + "BoneIndex": { + "field": "m_nBoneIndex", + "type": 2 + }, + "SpringStrength": { + "field": "m_flSpringStrength", + "type": 8 + }, + "MaxTimeStep": { + "field": "m_flMaxTimeStep", + "type": 8 + }, + "Damping": { + "field": "m_flDamping", + "type": 8 + }, + "BoundsMaxLS": { + "field": "m_vBoundsMaxLS", + "type": 21 + }, + "BoundsMinLS": { + "field": "m_vBoundsMinLS", + "type": 21 + }, + "SimSpace": { + "field": "m_eSimSpace", + "type": 6 + } + }, + "LookAtBone_t": { + "Index": { + "field": "m_index", + "type": 2 + }, + "Weight": { + "field": "m_weight", + "type": 8 + } + }, + "LookAtOpFixedSettings_t": { + "Attachment": { + "field": "m_attachment", + "classname": "CAnimAttachment", + "type": 16 + }, + "Damping": { + "field": "m_damping", + "classname": "CAnimInputDamping", + "type": 16 + }, + "YawLimit": { + "field": "m_flYawLimit", + "type": 8 + }, + "PitchLimit": { + "field": "m_flPitchLimit", + "type": 8 + }, + "HysteresisInnerAngle": { + "field": "m_flHysteresisInnerAngle", + "type": 8 + }, + "HysteresisOuterAngle": { + "field": "m_flHysteresisOuterAngle", + "type": 8 + }, + "RotateYawForward": { + "field": "m_bRotateYawForward", + "type": 10 + }, + "MaintainUpDirection": { + "field": "m_bMaintainUpDirection", + "type": 10 + }, + "TargetIsPosition": { + "field": "m_bTargetIsPosition", + "type": 10 + }, + "UseHysteresis": { + "field": "m_bUseHysteresis", + "type": 10 + } + }, + "MotionBlendItem": { + "KeyValue": { + "field": "m_flKeyValue", + "type": 8 + } + }, + "MotionDBIndex": { + "Index": { + "field": "m_nIndex", + "type": 6 + } + }, + "MotionIndex": { + "Group": { + "field": "m_nGroup", + "type": 5 + }, + "Motion": { + "field": "m_nMotion", + "type": 5 + } + }, + "ParamSpanSample_t": { + "Cycle": { + "field": "m_flCycle", + "type": 8 + } + }, + "ParamSpan_t": { + "Param": { + "field": "m_hParam", + "classname": "CAnimParamHandle", + "type": 16 + }, + "ParamType": { + "field": "m_eParamType", + "type": 4 + }, + "StartCycle": { + "field": "m_flStartCycle", + "type": 8 + }, + "EndCycle": { + "field": "m_flEndCycle", + "type": 8 + } + }, + "SampleCode": { + "SubCode": { + "field": "m_subCode", + "type": 33, + "size": 8 + } + }, + "ScriptInfo_t": { + "Code": { + "field": "m_code", + "type": 14 + }, + "ProxyReadParams": { + "field": "m_proxyReadParams", + "type": 53 + }, + "ProxyWriteParams": { + "field": "m_proxyWriteParams", + "type": 53 + }, + "ScriptType": { + "field": "m_eScriptType", + "type": 5 + } + }, + "SolveIKChainPoseOpFixedSettings_t": {}, + "StanceInfo_t": { + "Position": { + "field": "m_vPosition", + "type": 21 + }, + "Direction": { + "field": "m_flDirection", + "type": 8 + } + }, + "TagSpan_t": { + "TagIndex": { + "field": "m_tagIndex", + "type": 2 + }, + "StartCycle": { + "field": "m_startCycle", + "type": 8 + }, + "EndCycle": { + "field": "m_endCycle", + "type": 8 + } + }, + "TraceSettings_t": { + "TraceHeight": { + "field": "m_flTraceHeight", + "type": 8 + }, + "TraceRadius": { + "field": "m_flTraceRadius", + "type": 8 + } + }, + "TwoBoneIKSettings_t": { + "EndEffectorType": { + "field": "m_endEffectorType", + "type": 6 + }, + "EndEffectorAttachment": { + "field": "m_endEffectorAttachment", + "classname": "CAnimAttachment", + "type": 16 + }, + "TargetType": { + "field": "m_targetType", + "type": 6 + }, + "TargetAttachment": { + "field": "m_targetAttachment", + "classname": "CAnimAttachment", + "type": 16 + }, + "TargetBoneIndex": { + "field": "m_targetBoneIndex", + "type": 2 + }, + "PositionParam": { + "field": "m_hPositionParam", + "classname": "CAnimParamHandle", + "type": 16 + }, + "RotationParam": { + "field": "m_hRotationParam", + "classname": "CAnimParamHandle", + "type": 16 + }, + "AlwaysUseFallbackHinge": { + "field": "m_bAlwaysUseFallbackHinge", + "type": 10 + }, + "LsFallbackHingeAxis": { + "field": "m_vLsFallbackHingeAxis", + "type": 21 + }, + "FixedBoneIndex": { + "field": "m_nFixedBoneIndex", + "type": 2 + }, + "MiddleBoneIndex": { + "field": "m_nMiddleBoneIndex", + "type": 2 + }, + "EndBoneIndex": { + "field": "m_nEndBoneIndex", + "type": 2 + }, + "MatchTargetOrientation": { + "field": "m_bMatchTargetOrientation", + "type": 10 + }, + "ConstrainTwist": { + "field": "m_bConstrainTwist", + "type": 10 + }, + "MaxTwist": { + "field": "m_flMaxTwist", + "type": 8 + } + }, + "WeightList": { + "Name": { + "field": "m_name", + "type": 14 + }, + "Weights": { + "field": "m_weights", + "type": 59 + } + }, + "CNmAdditiveBlendTask": { + "Parent": { + "field": "CNmBlendTaskBase", + "type": 11 + } + }, + "CNmBitFlags": { + "Flags": { + "field": "m_flags", + "type": 6 + } + }, + "CNmBlendTask": { + "Parent": { + "field": "CNmBlendTaskBase", + "type": 11 + } + }, + "CNmBlendTaskBase": { + "Parent": { + "field": "CNmTask", + "type": 11 + } + }, + "CNmBoneMask": { + "WeightInfo": { + "field": "m_weightInfo", + "type": 4 + }, + "Weights": { + "field": "m_weights", + "type": 59 + } + }, + "CNmCachedPoseReadTask": { + "Parent": { + "field": "CNmTask", + "type": 11 + } + }, + "CNmCachedPoseWriteTask": { + "Parent": { + "field": "CNmTask", + "type": 11 + } + }, + "CNmClip": { + "NumFrames": { + "field": "m_nNumFrames", + "type": 6 + }, + "Duration": { + "field": "m_flDuration", + "type": 8 + }, + "CompressedPoseOffsets": { + "field": "m_compressedPoseOffsets", + "type": 57 + }, + "SyncTrack": { + "field": "m_syncTrack", + "classname": "CNmSyncTrack", + "type": 16 + }, + "RootMotion": { + "field": "m_rootMotion", + "classname": "CNmRootMotionData", + "type": 16 + }, + "IsAdditive": { + "field": "m_bIsAdditive", + "type": 10 + } + }, + "CNmEvent": { + "StartTimeSeconds": { + "field": "m_flStartTimeSeconds", + "type": 8 + }, + "DurationSeconds": { + "field": "m_flDurationSeconds", + "type": 8 + } + }, + "CNmFootEvent": { + "Phase": { + "field": "m_phase", + "type": 4 + }, + "Parent": { + "field": "CNmEvent", + "type": 11 + } + }, + "CNmFrameSnapEvent": { + "FrameSnapMode": { + "field": "m_frameSnapMode", + "type": 6 + }, + "Parent": { + "field": "CNmEvent", + "type": 11 + } + }, + "CNmGraphDefinition": { + "PersistentNodeIndices": { + "field": "m_persistentNodeIndices", + "type": 52 + }, + "RootNodeIdx": { + "field": "m_nRootNodeIdx", + "type": 1 + }, + "VirtualParameterNodeIndices": { + "field": "m_virtualParameterNodeIndices", + "type": 52 + }, + "NodePaths": { + "field": "m_nodePaths", + "type": 50 + } + }, + "CNmGraphVariation": {}, + "CNmIDEvent": { + "Parent": { + "field": "CNmEvent", + "type": 11 + } + }, + "CNmIKRig": {}, + "CNmLegacyEvent": { + "AnimEventClassName": { + "field": "m_animEventClassName", + "type": 14 + }, + "Parent": { + "field": "CNmEvent", + "type": 11 + } + }, + "CNmModelSpaceBlendTask": { + "Parent": { + "field": "CNmBlendTaskBase", + "type": 11 + } + }, + "CNmOrientationWarpEvent": { + "Parent": { + "field": "CNmEvent", + "type": 11 + } + }, + "CNmOverlayBlendTask": { + "Parent": { + "field": "CNmBlendTaskBase", + "type": 11 + } + }, + "CNmReferencePoseTask": { + "Parent": { + "field": "CNmTask", + "type": 11 + } + }, + "CNmRootMotionData": { + "NumFrames": { + "field": "m_nNumFrames", + "type": 2 + }, + "AverageLinearVelocity": { + "field": "m_flAverageLinearVelocity", + "type": 8 + }, + "AverageAngularVelocityRadians": { + "field": "m_flAverageAngularVelocityRadians", + "type": 8 + } + }, + "CNmRootMotionEvent": { + "BlendTimeSeconds": { + "field": "m_flBlendTimeSeconds", + "type": 8 + }, + "Parent": { + "field": "CNmEvent", + "type": 11 + } + }, + "CNmSampleTask": { + "Parent": { + "field": "CNmTask", + "type": 11 + } + }, + "CNmSkeleton": { + "ParentIndices": { + "field": "m_parentIndices", + "type": 53 + }, + "NumBonesToSampleAtLowLOD": { + "field": "m_numBonesToSampleAtLowLOD", + "type": 2 + } + }, + "CNmSyncTrack": { + "StartEventOffset": { + "field": "m_nStartEventOffset", + "type": 2 + } + }, + "CNmTarget": { + "IsBoneTarget": { + "field": "m_bIsBoneTarget", + "type": 10 + }, + "IsUsingBoneSpaceOffsets": { + "field": "m_bIsUsingBoneSpaceOffsets", + "type": 10 + }, + "HasOffsets": { + "field": "m_bHasOffsets", + "type": 10 + }, + "IsSet": { + "field": "m_bIsSet", + "type": 10 + } + }, + "CNmTargetWarpEvent": { + "Rule": { + "field": "m_rule", + "type": 4 + }, + "Algorithm": { + "field": "m_algorithm", + "type": 4 + }, + "Parent": { + "field": "CNmEvent", + "type": 11 + } + }, + "CNmTask": {}, + "CNmTransitionEvent": { + "Rule": { + "field": "m_rule", + "type": 4 + }, + "Parent": { + "field": "CNmEvent", + "type": 11 + } + }, + "CNmZeroPoseTask": { + "Parent": { + "field": "CNmTask", + "type": 11 + } + }, + "NmCompressionSettings_t": { + "IsRotationStatic": { + "field": "m_bIsRotationStatic", + "type": 10 + }, + "IsTranslationStatic": { + "field": "m_bIsTranslationStatic", + "type": 10 + }, + "IsScaleStatic": { + "field": "m_bIsScaleStatic", + "type": 10 + } + }, + "NmPercent_t": { + "Value": { + "field": "m_flValue", + "type": 8 + } + }, + "NmSyncTrackTimeRange_t": { + "StartTime": { + "field": "m_startTime", + "classname": "NmSyncTrackTime_t", + "type": 16 + }, + "EndTime": { + "field": "m_endTime", + "classname": "NmSyncTrackTime_t", + "type": 16 + } + }, + "NmSyncTrackTime_t": { + "EventIdx": { + "field": "m_nEventIdx", + "type": 2 + }, + "PercentageThrough": { + "field": "m_percentageThrough", + "classname": "NmPercent_t", + "type": 16 + } + }, + "ActiveModelConfig_t": { + "Handle": { + "field": "m_Handle", + "classname": "ModelConfigHandle_t", + "type": 16 + }, + "Name": { + "field": "m_Name", + "type": 13 + }, + "AssociatedEntityNames": { + "field": "m_AssociatedEntityNames", + "type": 48 + } + }, + "AmmoIndex_t": { + "Value": { + "field": "m_Value", + "type": 0 + } + }, + "AmmoTypeInfo_t": { + "MaxCarry": { + "field": "m_nMaxCarry", + "type": 2 + }, + "SplashSize": { + "field": "m_nSplashSize", + "classname": "CRangeInt", + "type": 16 + }, + "Flags": { + "field": "m_nFlags", + "type": 6 + }, + "Mass": { + "field": "m_flMass", + "type": 8 + }, + "Speed": { + "field": "m_flSpeed", + "classname": "CRangeFloat", + "type": 16 + } + }, + "CAnimEventListener": { + "Parent": { + "field": "CAnimEventListenerBase", + "type": 11 + } + }, + "CAnimEventListenerBase": {}, + "CAnimEventQueueListener": { + "Parent": { + "field": "CAnimEventListenerBase", + "type": 11 + } + }, + "CAnimGraphControllerBase": {}, + "CAnimGraphNetworkedVariables": { + "PredNetBoolVariables": { + "field": "m_PredNetBoolVariables", + "type": 57 + }, + "PredNetByteVariables": { + "field": "m_PredNetByteVariables", + "type": 55 + }, + "PredNetUInt16Variables": { + "field": "m_PredNetUInt16Variables", + "type": 56 + }, + "PredNetIntVariables": { + "field": "m_PredNetIntVariables", + "type": 53 + }, + "PredNetUInt32Variables": { + "field": "m_PredNetUInt32Variables", + "type": 57 + }, + "PredNetUInt64Variables": { + "field": "m_PredNetUInt64Variables", + "type": 58 + }, + "PredNetFloatVariables": { + "field": "m_PredNetFloatVariables", + "type": 59 + }, + "PredNetVectorVariables": { + "field": "m_PredNetVectorVariables", + "type": 63 + }, + "OwnerOnlyPredNetBoolVariables": { + "field": "m_OwnerOnlyPredNetBoolVariables", + "type": 57 + }, + "OwnerOnlyPredNetByteVariables": { + "field": "m_OwnerOnlyPredNetByteVariables", + "type": 55 + }, + "OwnerOnlyPredNetUInt16Variables": { + "field": "m_OwnerOnlyPredNetUInt16Variables", + "type": 56 + }, + "OwnerOnlyPredNetIntVariables": { + "field": "m_OwnerOnlyPredNetIntVariables", + "type": 53 + }, + "OwnerOnlyPredNetUInt32Variables": { + "field": "m_OwnerOnlyPredNetUInt32Variables", + "type": 57 + }, + "OwnerOnlyPredNetUInt64Variables": { + "field": "m_OwnerOnlyPredNetUInt64Variables", + "type": 58 + }, + "OwnerOnlyPredNetFloatVariables": { + "field": "m_OwnerOnlyPredNetFloatVariables", + "type": 59 + }, + "OwnerOnlyPredNetVectorVariables": { + "field": "m_OwnerOnlyPredNetVectorVariables", + "type": 63 + }, + "BoolVariablesCount": { + "field": "m_nBoolVariablesCount", + "type": 2 + }, + "OwnerOnlyBoolVariablesCount": { + "field": "m_nOwnerOnlyBoolVariablesCount", + "type": 2 + }, + "RandomSeedOffset": { + "field": "m_nRandomSeedOffset", + "type": 2 + }, + "LastTeleportTime": { + "field": "m_flLastTeleportTime", + "type": 8 + } + }, + "CAttributeList": { + "Manager": { + "field": "m_pManager", + "classname": "CAttributeManager", + "type": 24 + } + }, + "CAttributeManager": { + "ReapplyProvisionParity": { + "field": "m_iReapplyProvisionParity", + "type": 2 + }, + "Outer": { + "field": "m_hOuter", + "type": 17, + "classname": "CBaseEntity" + }, + "PreventLoopback": { + "field": "m_bPreventLoopback", + "type": 10 + }, + "ProviderType": { + "field": "m_ProviderType", + "type": 6 + } + }, + "CBaseAnimGraph": { + "InitiallyPopulateInterpHistory": { + "field": "m_bInitiallyPopulateInterpHistory", + "type": 10 + }, + "ChoreoServices": { + "field": "m_pChoreoServices", + "classname": "IChoreoServices", + "type": 24 + }, + "AnimGraphUpdateEnabled": { + "field": "m_bAnimGraphUpdateEnabled", + "type": 10 + }, + "MaxSlopeDistance": { + "field": "m_flMaxSlopeDistance", + "type": 8 + }, + "LastSlopeCheckPos": { + "field": "m_vLastSlopeCheckPos", + "type": 21 + }, + "AnimationUpdateScheduled": { + "field": "m_bAnimationUpdateScheduled", + "type": 10 + }, + "Force": { + "field": "m_vecForce", + "type": 21 + }, + "ForceBone": { + "field": "m_nForceBone", + "type": 2 + }, + "RagdollPose": { + "field": "m_RagdollPose", + "classname": "PhysicsRagdollPose_t", + "type": 16 + }, + "RagdollClientSide": { + "field": "m_bRagdollClientSide", + "type": 10 + }, + "LastDestructiblePartDestroyedAnimgraphSetTick": { + "field": "m_nLastDestructiblePartDestroyedAnimgraphSetTick", + "type": 2 + }, + "Parent": { + "field": "CBaseModelEntity", + "type": 11 + } + }, + "CBaseAnimGraphController": { + "AnimGraphNetworkedVars": { + "field": "m_animGraphNetworkedVars", + "classname": "CAnimGraphNetworkedVariables", + "type": 16 + }, + "SequenceFinished": { + "field": "m_bSequenceFinished", + "type": 10 + }, + "SoundSyncTime": { + "field": "m_flSoundSyncTime", + "type": 8 + }, + "ActiveIKChainMask": { + "field": "m_nActiveIKChainMask", + "type": 6 + }, + "Sequence": { + "field": "m_hSequence", + "type": 2 + }, + "SeqStartTime": { + "field": "m_flSeqStartTime", + "type": 8 + }, + "SeqFixedCycle": { + "field": "m_flSeqFixedCycle", + "type": 8 + }, + "AnimLoopMode": { + "field": "m_nAnimLoopMode", + "type": 6 + }, + "PlaybackRate": { + "field": "m_flPlaybackRate", + "type": 8 + }, + "NotifyState": { + "field": "m_nNotifyState", + "type": 4 + }, + "NetworkedAnimationInputsChanged": { + "field": "m_bNetworkedAnimationInputsChanged", + "type": 10 + }, + "NetworkedSequenceChanged": { + "field": "m_bNetworkedSequenceChanged", + "type": 10 + }, + "LastUpdateSkipped": { + "field": "m_bLastUpdateSkipped", + "type": 10 + }, + "PrevAnimUpdateTime": { + "field": "m_flPrevAnimUpdateTime", + "type": 8 + }, + "Parent": { + "field": "CSkeletonAnimationController", + "type": 11 + } + }, + "CBasePlayerController": { + "InButtonsWhichAreToggles": { + "field": "m_nInButtonsWhichAreToggles", + "type": 7 + }, + "TickBase": { + "field": "m_nTickBase", + "type": 6 + }, + "Pawn": { + "field": "m_hPawn", + "type": 17, + "classname": "CBasePlayerPawn" + }, + "KnownTeamMismatch": { + "field": "m_bKnownTeamMismatch", + "type": 10 + }, + "SplitScreenSlot": { + "field": "m_nSplitScreenSlot", + "type": 2 + }, + "SplitOwner": { + "field": "m_hSplitOwner", + "type": 17, + "classname": "CBasePlayerController" + }, + "IsHLTV": { + "field": "m_bIsHLTV", + "type": 10 + }, + "Connected": { + "field": "m_iConnected", + "type": 6 + }, + "PlayerName": { + "field": "m_iszPlayerName", + "type": 15, + "size": 128 + }, + "NetworkIDString": { + "field": "m_szNetworkIDString", + "type": 14 + }, + "LerpTime": { + "field": "m_fLerpTime", + "type": 8 + }, + "LagCompensation": { + "field": "m_bLagCompensation", + "type": 10 + }, + "Predict": { + "field": "m_bPredict", + "type": 10 + }, + "IsLowViolence": { + "field": "m_bIsLowViolence", + "type": 10 + }, + "GamePaused": { + "field": "m_bGamePaused", + "type": 10 + }, + "IgnoreGlobalChat": { + "field": "m_iIgnoreGlobalChat", + "type": 6 + }, + "LastPlayerTalkTime": { + "field": "m_flLastPlayerTalkTime", + "type": 8 + }, + "LastEntitySteadyState": { + "field": "m_flLastEntitySteadyState", + "type": 8 + }, + "AvailableEntitySteadyState": { + "field": "m_nAvailableEntitySteadyState", + "type": 2 + }, + "HasAnySteadyStateEnts": { + "field": "m_bHasAnySteadyStateEnts", + "type": 10 + }, + "SteamID": { + "field": "m_steamID", + "type": 7 + }, + "DesiredFOV": { + "field": "m_iDesiredFOV", + "type": 6 + }, + "Parent": { + "field": "CBaseEntity", + "type": 11 + } + }, + "CBasePlayerControllerAPI": {}, + "CBasePlayerVData": { + "HeadDamageMultiplier": { + "field": "m_flHeadDamageMultiplier", + "classname": "CSkillFloat", + "type": 16 + }, + "ChestDamageMultiplier": { + "field": "m_flChestDamageMultiplier", + "classname": "CSkillFloat", + "type": 16 + }, + "StomachDamageMultiplier": { + "field": "m_flStomachDamageMultiplier", + "classname": "CSkillFloat", + "type": 16 + }, + "ArmDamageMultiplier": { + "field": "m_flArmDamageMultiplier", + "classname": "CSkillFloat", + "type": 16 + }, + "LegDamageMultiplier": { + "field": "m_flLegDamageMultiplier", + "classname": "CSkillFloat", + "type": 16 + }, + "HoldBreathTime": { + "field": "m_flHoldBreathTime", + "type": 8 + }, + "DrowningDamageInterval": { + "field": "m_flDrowningDamageInterval", + "type": 8 + }, + "DrowningDamageInitial": { + "field": "m_nDrowningDamageInitial", + "type": 2 + }, + "DrowningDamageMax": { + "field": "m_nDrowningDamageMax", + "type": 2 + }, + "WaterSpeed": { + "field": "m_nWaterSpeed", + "type": 2 + }, + "UseRange": { + "field": "m_flUseRange", + "type": 8 + }, + "UseAngleTolerance": { + "field": "m_flUseAngleTolerance", + "type": 8 + }, + "CrouchTime": { + "field": "m_flCrouchTime", + "type": 8 + }, + "Parent": { + "field": "CEntitySubclassVDataBase", + "type": 11 + } + }, + "CBasePlayerWeaponVData": { + "BuiltRightHanded": { + "field": "m_bBuiltRightHanded", + "type": 10 + }, + "AllowFlipping": { + "field": "m_bAllowFlipping", + "type": 10 + }, + "LinkedCooldowns": { + "field": "m_bLinkedCooldowns", + "type": 10 + }, + "Flags": { + "field": "m_iFlags", + "type": 4 + }, + "PrimaryAmmoType": { + "field": "m_nPrimaryAmmoType", + "type": 6 + }, + "SecondaryAmmoType": { + "field": "m_nSecondaryAmmoType", + "type": 6 + }, + "MaxClip1": { + "field": "m_iMaxClip1", + "type": 2 + }, + "MaxClip2": { + "field": "m_iMaxClip2", + "type": 2 + }, + "DefaultClip1": { + "field": "m_iDefaultClip1", + "type": 2 + }, + "DefaultClip2": { + "field": "m_iDefaultClip2", + "type": 2 + }, + "ReserveAmmoAsClips": { + "field": "m_bReserveAmmoAsClips", + "type": 10 + }, + "Weight": { + "field": "m_iWeight", + "type": 2 + }, + "AutoSwitchTo": { + "field": "m_bAutoSwitchTo", + "type": 10 + }, + "AutoSwitchFrom": { + "field": "m_bAutoSwitchFrom", + "type": 10 + }, + "RumbleEffect": { + "field": "m_iRumbleEffect", + "type": 6 + }, + "Slot": { + "field": "m_iSlot", + "type": 2 + }, + "Position": { + "field": "m_iPosition", + "type": 2 + }, + "Parent": { + "field": "CEntitySubclassVDataBase", + "type": 11 + } + }, + "CBaseProp": { + "ModelOverrodeBlockLOS": { + "field": "m_bModelOverrodeBlockLOS", + "type": 10 + }, + "ShapeType": { + "field": "m_iShapeType", + "type": 2 + }, + "ConformToCollisionBounds": { + "field": "m_bConformToCollisionBounds", + "type": 10 + }, + "Parent": { + "field": "CBaseAnimGraph", + "type": 11 + } + }, + "CBodyComponent": { + "SceneNode": { + "field": "m_pSceneNode", + "classname": "CGameSceneNode", + "type": 24 + }, + "__pChainEntity": { + "field": "__m_pChainEntity", + "classname": "CNetworkVarChainer", + "type": 16 + }, + "Parent": { + "field": "CEntityComponent", + "type": 11 + } + }, + "CBodyComponentBaseAnimGraph": { + "AnimationController": { + "field": "m_animationController", + "classname": "CBaseAnimGraphController", + "type": 16 + }, + "Parent": { + "field": "CBodyComponentSkeletonInstance", + "type": 11 + } + }, + "CBodyComponentBaseModelEntity": { + "Parent": { + "field": "CBodyComponentSkeletonInstance", + "type": 11 + } + }, + "CBodyComponentPoint": { + "SceneNode": { + "field": "m_sceneNode", + "classname": "CGameSceneNode", + "type": 16 + }, + "Parent": { + "field": "CBodyComponent", + "type": 11 + } + }, + "CBodyComponentSkeletonInstance": { + "SkeletonInstance": { + "field": "m_skeletonInstance", + "classname": "CSkeletonInstance", + "type": 16 + }, + "Parent": { + "field": "CBodyComponent", + "type": 11 + } + }, + "CBombTarget": { + "OnBombExplode": { + "field": "m_OnBombExplode", + "classname": "CEntityIOOutput", + "type": 16 + }, + "OnBombPlanted": { + "field": "m_OnBombPlanted", + "classname": "CEntityIOOutput", + "type": 16 + }, + "OnBombDefused": { + "field": "m_OnBombDefused", + "classname": "CEntityIOOutput", + "type": 16 + }, + "IsBombSiteB": { + "field": "m_bIsBombSiteB", + "type": 10 + }, + "IsHeistBombTarget": { + "field": "m_bIsHeistBombTarget", + "type": 10 + }, + "BombPlantedHere": { + "field": "m_bBombPlantedHere", + "type": 10 + }, + "MountTarget": { + "field": "m_szMountTarget", + "type": 13 + }, + "InstructorHint": { + "field": "m_hInstructorHint", + "type": 17, + "classname": "CBaseEntity" + }, + "BombSiteDesignation": { + "field": "m_nBombSiteDesignation", + "type": 2 + }, + "Parent": { + "field": "CBaseTrigger", + "type": 11 + } + }, + "CBreachCharge": { + "Parent": { + "field": "CCSWeaponBase", + "type": 11 + } + }, + "CBreachChargeProjectile": { + "Parent": { + "field": "CBaseGrenade", + "type": 11 + } + }, + "CBreakableStageHelper": { + "CurrentStage": { + "field": "m_nCurrentStage", + "type": 2 + }, + "StageCount": { + "field": "m_nStageCount", + "type": 2 + } + }, + "CBumpMine": { + "Parent": { + "field": "CCSWeaponBase", + "type": 11 + } + }, + "CBumpMineProjectile": { + "Parent": { + "field": "CBaseGrenade", + "type": 11 + } + }, + "CBuoyancyHelper": { + "FluidType": { + "field": "m_nFluidType", + "type": 12 + }, + "FluidDensity": { + "field": "m_flFluidDensity", + "type": 8 + }, + "FractionOfWheelSubmergedForWheelFriction": { + "field": "m_vecFractionOfWheelSubmergedForWheelFriction", + "type": 59 + }, + "WheelFrictionScales": { + "field": "m_vecWheelFrictionScales", + "type": 59 + }, + "FractionOfWheelSubmergedForWheelDrag": { + "field": "m_vecFractionOfWheelSubmergedForWheelDrag", + "type": 59 + }, + "WheelDrag": { + "field": "m_vecWheelDrag", + "type": 59 + } + }, + "CCSClientPointScriptEntity": { + "Parent": { + "field": "CCSPointScriptEntity", + "type": 11 + } + }, + "CCSGOPlayerAnimGraphState": {}, + "CCSGOViewModel_GraphController": { + "Parent": { + "field": "CAnimGraphControllerBase", + "type": 11 + } + }, + "CCSGO_WingmanIntroCharacterPosition": { + "Parent": { + "field": "CCSGO_TeamIntroCharacterPosition", + "type": 11 + } + }, + "CCSGO_WingmanIntroCounterTerroristPosition": { + "Parent": { + "field": "CCSGO_WingmanIntroCharacterPosition", + "type": 11 + } + }, + "CCSGO_WingmanIntroTerroristPosition": { + "Parent": { + "field": "CCSGO_WingmanIntroCharacterPosition", + "type": 11 + } + }, + "CCSGameModeRules": { + "__pChainEntity": { + "field": "__m_pChainEntity", + "classname": "CNetworkVarChainer", + "type": 16 + } + }, + "CCSGameModeRules_ArmsRace": { + "WeaponSequence": { + "field": "m_WeaponSequence", + "type": 50 + }, + "Parent": { + "field": "CCSGameModeRules", + "type": 11 + } + }, + "CCSGameModeRules_Deathmatch": { + "DMBonusStartTime": { + "field": "m_flDMBonusStartTime", + "type": 8 + }, + "DMBonusTimeLength": { + "field": "m_flDMBonusTimeLength", + "type": 8 + }, + "DMBonusWeapon": { + "field": "m_sDMBonusWeapon", + "type": 14 + }, + "Parent": { + "field": "CCSGameModeRules", + "type": 11 + } + }, + "CCSGameModeRules_Noop": { + "Parent": { + "field": "CCSGameModeRules", + "type": 11 + } + }, + "CCSObserver_CameraServices": { + "Parent": { + "field": "CCSPlayerBase_CameraServices", + "type": 11 + } + }, + "CCSObserver_MovementServices": { + "Parent": { + "field": "CPlayer_MovementServices", + "type": 11 + } + }, + "CCSObserver_ObserverServices": { + "Parent": { + "field": "CPlayer_ObserverServices", + "type": 11 + } + }, + "CCSObserver_UseServices": { + "Parent": { + "field": "CPlayer_UseServices", + "type": 11 + } + }, + "CCSObserver_ViewModelServices": { + "Parent": { + "field": "CPlayer_ViewModelServices", + "type": 11 + } + }, + "CCSPlayerBase_CameraServices": { + "FOV": { + "field": "m_iFOV", + "type": 6 + }, + "FOVStart": { + "field": "m_iFOVStart", + "type": 6 + }, + "FOVTime": { + "field": "m_flFOVTime", + "type": 8 + }, + "FOVRate": { + "field": "m_flFOVRate", + "type": 8 + }, + "ZoomOwner": { + "field": "m_hZoomOwner", + "type": 17, + "classname": "CBaseEntity" + }, + "LastFogTrigger": { + "field": "m_hLastFogTrigger", + "type": 17, + "classname": "CBaseEntity" + }, + "Parent": { + "field": "CPlayer_CameraServices", + "type": 11 + } + }, + "CCSPlayerController": { + "InGameMoneyServices": { + "field": "m_pInGameMoneyServices", + "classname": "CCSPlayerController_InGameMoneyServices", + "type": 24 + }, + "InventoryServices": { + "field": "m_pInventoryServices", + "classname": "CCSPlayerController_InventoryServices", + "type": 24 + }, + "ActionTrackingServices": { + "field": "m_pActionTrackingServices", + "classname": "CCSPlayerController_ActionTrackingServices", + "type": 24 + }, + "DamageServices": { + "field": "m_pDamageServices", + "classname": "CCSPlayerController_DamageServices", + "type": 24 + }, + "Ping": { + "field": "m_iPing", + "type": 6 + }, + "HasCommunicationAbuseMute": { + "field": "m_bHasCommunicationAbuseMute", + "type": 10 + }, + "CrosshairCodes": { + "field": "m_szCrosshairCodes", + "type": 13 + }, + "PendingTeamNum": { + "field": "m_iPendingTeamNum", + "type": 4 + }, + "ForceTeamTime": { + "field": "m_flForceTeamTime", + "type": 8 + }, + "CompTeammateColor": { + "field": "m_iCompTeammateColor", + "type": 2 + }, + "EverPlayedOnTeam": { + "field": "m_bEverPlayedOnTeam", + "type": 10 + }, + "AttemptedToGetColor": { + "field": "m_bAttemptedToGetColor", + "type": 10 + }, + "TeammatePreferredColor": { + "field": "m_iTeammatePreferredColor", + "type": 2 + }, + "TeamChanged": { + "field": "m_bTeamChanged", + "type": 10 + }, + "InSwitchTeam": { + "field": "m_bInSwitchTeam", + "type": 10 + }, + "HasSeenJoinGame": { + "field": "m_bHasSeenJoinGame", + "type": 10 + }, + "JustBecameSpectator": { + "field": "m_bJustBecameSpectator", + "type": 10 + }, + "SwitchTeamsOnNextRoundReset": { + "field": "m_bSwitchTeamsOnNextRoundReset", + "type": 10 + }, + "RemoveAllItemsOnNextRoundReset": { + "field": "m_bRemoveAllItemsOnNextRoundReset", + "type": 10 + }, + "LastJoinTeamTime": { + "field": "m_flLastJoinTeamTime", + "type": 8 + }, + "Clan": { + "field": "m_szClan", + "type": 13 + }, + "ClanName": { + "field": "m_szClanName", + "type": 15, + "size": 32 + }, + "CoachingTeam": { + "field": "m_iCoachingTeam", + "type": 2 + }, + "PlayerDominated": { + "field": "m_nPlayerDominated", + "type": 7 + }, + "PlayerDominatingMe": { + "field": "m_nPlayerDominatingMe", + "type": 7 + }, + "CompetitiveRanking": { + "field": "m_iCompetitiveRanking", + "type": 2 + }, + "CompetitiveWins": { + "field": "m_iCompetitiveWins", + "type": 2 + }, + "CompetitiveRankType": { + "field": "m_iCompetitiveRankType", + "type": 0 + }, + "CompetitiveRankingPredicted_Win": { + "field": "m_iCompetitiveRankingPredicted_Win", + "type": 2 + }, + "CompetitiveRankingPredicted_Loss": { + "field": "m_iCompetitiveRankingPredicted_Loss", + "type": 2 + }, + "CompetitiveRankingPredicted_Tie": { + "field": "m_iCompetitiveRankingPredicted_Tie", + "type": 2 + }, + "EndMatchNextMapVote": { + "field": "m_nEndMatchNextMapVote", + "type": 2 + }, + "ActiveQuestId": { + "field": "m_unActiveQuestId", + "type": 5 + }, + "PlayerTvControlFlags": { + "field": "m_unPlayerTvControlFlags", + "type": 6 + }, + "DraftIndex": { + "field": "m_iDraftIndex", + "type": 2 + }, + "MsQueuedModeDisconnectionTimestamp": { + "field": "m_msQueuedModeDisconnectionTimestamp", + "type": 6 + }, + "UiAbandonRecordedReason": { + "field": "m_uiAbandonRecordedReason", + "type": 6 + }, + "CannotBeKicked": { + "field": "m_bCannotBeKicked", + "type": 10 + }, + "EverFullyConnected": { + "field": "m_bEverFullyConnected", + "type": 10 + }, + "AbandonAllowsSurrender": { + "field": "m_bAbandonAllowsSurrender", + "type": 10 + }, + "AbandonOffersInstantSurrender": { + "field": "m_bAbandonOffersInstantSurrender", + "type": 10 + }, + "Disconnection1MinWarningPrinted": { + "field": "m_bDisconnection1MinWarningPrinted", + "type": 10 + }, + "ScoreReported": { + "field": "m_bScoreReported", + "type": 10 + }, + "DisconnectionTick": { + "field": "m_nDisconnectionTick", + "type": 2 + }, + "ControllingBot": { + "field": "m_bControllingBot", + "type": 10 + }, + "HasControlledBotThisRound": { + "field": "m_bHasControlledBotThisRound", + "type": 10 + }, + "HasBeenControlledByPlayerThisRound": { + "field": "m_bHasBeenControlledByPlayerThisRound", + "type": 10 + }, + "BotsControlledThisRound": { + "field": "m_nBotsControlledThisRound", + "type": 2 + }, + "CanControlObservedBot": { + "field": "m_bCanControlObservedBot", + "type": 10 + }, + "PlayerPawn": { + "field": "m_hPlayerPawn", + "type": 17, + "classname": "CCSPlayerPawn" + }, + "ObserverPawn": { + "field": "m_hObserverPawn", + "type": 17, + "classname": "CCSObserverPawn" + }, + "DesiredObserverMode": { + "field": "m_DesiredObserverMode", + "type": 2 + }, + "DesiredObserverTarget": { + "field": "m_hDesiredObserverTarget", + "type": 17, + "classname": "CEntityInstance" + }, + "PawnIsAlive": { + "field": "m_bPawnIsAlive", + "type": 10 + }, + "PawnHealth": { + "field": "m_iPawnHealth", + "type": 6 + }, + "PawnArmor": { + "field": "m_iPawnArmor", + "type": 2 + }, + "PawnHasDefuser": { + "field": "m_bPawnHasDefuser", + "type": 10 + }, + "PawnHasHelmet": { + "field": "m_bPawnHasHelmet", + "type": 10 + }, + "PawnCharacterDefIndex": { + "field": "m_nPawnCharacterDefIndex", + "type": 5 + }, + "PawnLifetimeStart": { + "field": "m_iPawnLifetimeStart", + "type": 2 + }, + "PawnLifetimeEnd": { + "field": "m_iPawnLifetimeEnd", + "type": 2 + }, + "PawnBotDifficulty": { + "field": "m_iPawnBotDifficulty", + "type": 2 + }, + "OriginalControllerOfCurrentPawn": { + "field": "m_hOriginalControllerOfCurrentPawn", + "type": 17, + "classname": "CCSPlayerController" + }, + "Score": { + "field": "m_iScore", + "type": 2 + }, + "RoundScore": { + "field": "m_iRoundScore", + "type": 2 + }, + "RoundsWon": { + "field": "m_iRoundsWon", + "type": 2 + }, + "RecentKillQueue": { + "field": "m_recentKillQueue", + "type": 33, + "size": 8 + }, + "FirstKill": { + "field": "m_nFirstKill", + "type": 4 + }, + "KillCount": { + "field": "m_nKillCount", + "type": 4 + }, + "MvpNoMusic": { + "field": "m_bMvpNoMusic", + "type": 10 + }, + "MvpReason": { + "field": "m_eMvpReason", + "type": 2 + }, + "MusicKitID": { + "field": "m_iMusicKitID", + "type": 2 + }, + "MusicKitMVPs": { + "field": "m_iMusicKitMVPs", + "type": 2 + }, + "MVPs": { + "field": "m_iMVPs", + "type": 2 + }, + "UpdateCounter": { + "field": "m_nUpdateCounter", + "type": 2 + }, + "SmoothedPing": { + "field": "m_flSmoothedPing", + "type": 8 + }, + "LastHeldVoteTimer": { + "field": "m_lastHeldVoteTimer", + "classname": "IntervalTimer", + "type": 16 + }, + "ShowHints": { + "field": "m_bShowHints", + "type": 10 + }, + "NextTimeCheck": { + "field": "m_iNextTimeCheck", + "type": 2 + }, + "JustDidTeamKill": { + "field": "m_bJustDidTeamKill", + "type": 10 + }, + "PunishForTeamKill": { + "field": "m_bPunishForTeamKill", + "type": 10 + }, + "GaveTeamDamageWarning": { + "field": "m_bGaveTeamDamageWarning", + "type": 10 + }, + "GaveTeamDamageWarningThisRound": { + "field": "m_bGaveTeamDamageWarningThisRound", + "type": 10 + }, + "DblLastReceivedPacketPlatFloatTime": { + "field": "m_dblLastReceivedPacketPlatFloatTime", + "type": 9 + }, + "LastTeamDamageWarningTime": { + "field": "m_LastTeamDamageWarningTime", + "type": 8 + }, + "LastTimePlayerWasDisconnectedForPawnsRemove": { + "field": "m_LastTimePlayerWasDisconnectedForPawnsRemove", + "type": 8 + }, + "SuspiciousHitCount": { + "field": "m_nSuspiciousHitCount", + "type": 6 + }, + "NonSuspiciousHitStreak": { + "field": "m_nNonSuspiciousHitStreak", + "type": 6 + }, + "FireBulletsSeedSynchronized": { + "field": "m_bFireBulletsSeedSynchronized", + "type": 10 + }, + "Parent": { + "field": "CBasePlayerController", + "type": 11 + } + }, + "CCSPlayerController_ActionTrackingServices": { + "MatchStats": { + "field": "m_matchStats", + "classname": "CSMatchStats_t", + "type": 16 + }, + "NumRoundKills": { + "field": "m_iNumRoundKills", + "type": 2 + }, + "NumRoundKillsHeadshots": { + "field": "m_iNumRoundKillsHeadshots", + "type": 2 + }, + "TotalRoundDamageDealt": { + "field": "m_unTotalRoundDamageDealt", + "type": 6 + }, + "Parent": { + "field": "CPlayerControllerComponent", + "type": 11 + } + }, + "CCSPlayerController_DamageServices": { + "SendUpdate": { + "field": "m_nSendUpdate", + "type": 2 + }, + "Parent": { + "field": "CPlayerControllerComponent", + "type": 11 + } + }, + "CCSPlayerController_InGameMoneyServices": { + "ReceivesMoneyNextRound": { + "field": "m_bReceivesMoneyNextRound", + "type": 10 + }, + "MoneyEarnedForNextRound": { + "field": "m_iMoneyEarnedForNextRound", + "type": 2 + }, + "Account": { + "field": "m_iAccount", + "type": 2 + }, + "StartAccount": { + "field": "m_iStartAccount", + "type": 2 + }, + "TotalCashSpent": { + "field": "m_iTotalCashSpent", + "type": 2 + }, + "CashSpentThisRound": { + "field": "m_iCashSpentThisRound", + "type": 2 + }, + "Parent": { + "field": "CPlayerControllerComponent", + "type": 11 + } + }, + "CCSPlayerController_InventoryServices": { + "MusicID": { + "field": "m_unMusicID", + "type": 5 + }, + "Rank": { + "field": "m_rank", + "type": 35, + "size": 6 + }, + "PersonaDataPublicLevel": { + "field": "m_nPersonaDataPublicLevel", + "type": 2 + }, + "PersonaDataPublicCommendsLeader": { + "field": "m_nPersonaDataPublicCommendsLeader", + "type": 2 + }, + "PersonaDataPublicCommendsTeacher": { + "field": "m_nPersonaDataPublicCommendsTeacher", + "type": 2 + }, + "PersonaDataPublicCommendsFriendly": { + "field": "m_nPersonaDataPublicCommendsFriendly", + "type": 2 + }, + "PersonaDataXpTrailLevel": { + "field": "m_nPersonaDataXpTrailLevel", + "type": 2 + }, + "EquippedPlayerSprayIDs": { + "field": "m_unEquippedPlayerSprayIDs", + "type": 35, + "size": 1 + }, + "Parent": { + "field": "CPlayerControllerComponent", + "type": 11 + } + }, + "CCSPlayer_ActionTrackingServices": { + "LastWeaponBeforeC4AutoSwitch": { + "field": "m_hLastWeaponBeforeC4AutoSwitch", + "type": 17, + "classname": "CBasePlayerWeapon" + }, + "IsRescuing": { + "field": "m_bIsRescuing", + "type": 10 + }, + "WeaponPurchasesThisMatch": { + "field": "m_weaponPurchasesThisMatch", + "classname": "WeaponPurchaseTracker_t", + "type": 16 + }, + "WeaponPurchasesThisRound": { + "field": "m_weaponPurchasesThisRound", + "classname": "WeaponPurchaseTracker_t", + "type": 16 + }, + "Parent": { + "field": "CPlayerPawnComponent", + "type": 11 + } + }, + "CCSPlayer_BulletServices": { + "TotalHitsOnServer": { + "field": "m_totalHitsOnServer", + "type": 2 + }, + "Parent": { + "field": "CPlayerPawnComponent", + "type": 11 + } + }, + "CCSPlayer_BuyServices": { + "Parent": { + "field": "CPlayerPawnComponent", + "type": 11 + } + }, + "CCSPlayer_CameraServices": { + "Parent": { + "field": "CCSPlayerBase_CameraServices", + "type": 11 + } + }, + "CCSPlayer_DamageReactServices": { + "Parent": { + "field": "CPlayerPawnComponent", + "type": 11 + } + }, + "CCSPlayer_GlowServices": { + "Parent": { + "field": "CPlayerPawnComponent", + "type": 11 + } + }, + "CCSPlayer_HostageServices": { + "CarriedHostage": { + "field": "m_hCarriedHostage", + "type": 17, + "classname": "CBaseEntity" + }, + "CarriedHostageProp": { + "field": "m_hCarriedHostageProp", + "type": 17, + "classname": "CBaseEntity" + }, + "Parent": { + "field": "CPlayerPawnComponent", + "type": 11 + } + }, + "CCSPlayer_ItemServices": { + "HasDefuser": { + "field": "m_bHasDefuser", + "type": 10 + }, + "HasHelmet": { + "field": "m_bHasHelmet", + "type": 10 + }, + "HasHeavyArmor": { + "field": "m_bHasHeavyArmor", + "type": 10 + }, + "Parent": { + "field": "CPlayer_ItemServices", + "type": 11 + } + }, + "CCSPlayer_MovementServices": { + "LadderNormal": { + "field": "m_vecLadderNormal", + "type": 21 + }, + "LadderSurfacePropIndex": { + "field": "m_nLadderSurfacePropIndex", + "type": 2 + }, + "DuckAmount": { + "field": "m_flDuckAmount", + "type": 8 + }, + "DuckSpeed": { + "field": "m_flDuckSpeed", + "type": 8 + }, + "DuckOverride": { + "field": "m_bDuckOverride", + "type": 10 + }, + "DesiresDuck": { + "field": "m_bDesiresDuck", + "type": 10 + }, + "DuckOffset": { + "field": "m_flDuckOffset", + "type": 8 + }, + "DuckTimeMsecs": { + "field": "m_nDuckTimeMsecs", + "type": 6 + }, + "DuckJumpTimeMsecs": { + "field": "m_nDuckJumpTimeMsecs", + "type": 6 + }, + "JumpTimeMsecs": { + "field": "m_nJumpTimeMsecs", + "type": 6 + }, + "LastDuckTime": { + "field": "m_flLastDuckTime", + "type": 8 + }, + "LastPositionAtFullCrouchSpeed": { + "field": "m_vecLastPositionAtFullCrouchSpeed", + "type": 22 + }, + "DuckUntilOnGround": { + "field": "m_duckUntilOnGround", + "type": 10 + }, + "HasWalkMovedSinceLastJump": { + "field": "m_bHasWalkMovedSinceLastJump", + "type": 10 + }, + "InStuckTest": { + "field": "m_bInStuckTest", + "type": 10 + }, + "StuckCheckTime": { + "field": "m_flStuckCheckTime", + "type": 37, + "size": 2 + }, + "TraceCount": { + "field": "m_nTraceCount", + "type": 2 + }, + "StuckLast": { + "field": "m_StuckLast", + "type": 2 + }, + "SpeedCropped": { + "field": "m_bSpeedCropped", + "type": 10 + }, + "GroundMoveEfficiency": { + "field": "m_flGroundMoveEfficiency", + "type": 8 + }, + "OldWaterLevel": { + "field": "m_nOldWaterLevel", + "type": 2 + }, + "WaterEntryTime": { + "field": "m_flWaterEntryTime", + "type": 8 + }, + "Forward": { + "field": "m_vecForward", + "type": 21 + }, + "Left": { + "field": "m_vecLeft", + "type": 21 + }, + "Up": { + "field": "m_vecUp", + "type": 21 + }, + "GameCodeHasMovedPlayerAfterCommand": { + "field": "m_nGameCodeHasMovedPlayerAfterCommand", + "type": 2 + }, + "MadeFootstepNoise": { + "field": "m_bMadeFootstepNoise", + "type": 10 + }, + "Footsteps": { + "field": "m_iFootsteps", + "type": 2 + }, + "OldJumpPressed": { + "field": "m_bOldJumpPressed", + "type": 10 + }, + "JumpPressedTime": { + "field": "m_flJumpPressedTime", + "type": 8 + }, + "StashGrenadeParameterWhen": { + "field": "m_fStashGrenadeParameterWhen", + "type": 8 + }, + "ButtonDownMaskPrev": { + "field": "m_nButtonDownMaskPrev", + "type": 7 + }, + "OffsetTickCompleteTime": { + "field": "m_flOffsetTickCompleteTime", + "type": 8 + }, + "OffsetTickStashedSpeed": { + "field": "m_flOffsetTickStashedSpeed", + "type": 8 + }, + "Stamina": { + "field": "m_flStamina", + "type": 8 + }, + "HeightAtJumpStart": { + "field": "m_flHeightAtJumpStart", + "type": 8 + }, + "MaxJumpHeightThisJump": { + "field": "m_flMaxJumpHeightThisJump", + "type": 8 + }, + "MaxJumpHeightLastJump": { + "field": "m_flMaxJumpHeightLastJump", + "type": 8 + }, + "StaminaAtJumpStart": { + "field": "m_flStaminaAtJumpStart", + "type": 8 + }, + "AccumulatedJumpError": { + "field": "m_flAccumulatedJumpError", + "type": 8 + }, + "Parent": { + "field": "CPlayer_MovementServices_Humanoid", + "type": 11 + } + }, + "CCSPlayer_PingServices": { + "PlayerPingTokens": { + "field": "m_flPlayerPingTokens", + "type": 37, + "size": 5 + }, + "PlayerPing": { + "field": "m_hPlayerPing", + "type": 17, + "classname": "CBaseEntity" + }, + "Parent": { + "field": "CPlayerPawnComponent", + "type": 11 + } + }, + "CCSPlayer_UseServices": { + "LastKnownUseEntity": { + "field": "m_hLastKnownUseEntity", + "type": 17, + "classname": "CBaseEntity" + }, + "LastUseTimeStamp": { + "field": "m_flLastUseTimeStamp", + "type": 8 + }, + "TimeLastUsedWindow": { + "field": "m_flTimeLastUsedWindow", + "type": 8 + }, + "Parent": { + "field": "CPlayer_UseServices", + "type": 11 + } + }, + "CCSPlayer_ViewModelServices": { + "ViewModel": { + "field": "m_hViewModel", + "type": 46, + "size": 3 + }, + "Parent": { + "field": "CPlayer_ViewModelServices", + "type": 11 + } + }, + "CCSPlayer_WaterServices": { + "NextDrownDamageTime": { + "field": "m_NextDrownDamageTime", + "type": 8 + }, + "DrownDmgRate": { + "field": "m_nDrownDmgRate", + "type": 2 + }, + "AirFinishedTime": { + "field": "m_AirFinishedTime", + "type": 8 + }, + "WaterJumpTime": { + "field": "m_flWaterJumpTime", + "type": 8 + }, + "WaterJumpVel": { + "field": "m_vecWaterJumpVel", + "type": 21 + }, + "SwimSoundTime": { + "field": "m_flSwimSoundTime", + "type": 8 + }, + "Parent": { + "field": "CPlayer_WaterServices", + "type": 11 + } + }, + "CCSPlayer_WeaponServices": { + "NextAttack": { + "field": "m_flNextAttack", + "type": 8 + }, + "IsLookingAtWeapon": { + "field": "m_bIsLookingAtWeapon", + "type": 10 + }, + "IsHoldingLookAtWeapon": { + "field": "m_bIsHoldingLookAtWeapon", + "type": 10 + }, + "SavedWeapon": { + "field": "m_hSavedWeapon", + "type": 17, + "classname": "CBasePlayerWeapon" + }, + "TimeToMelee": { + "field": "m_nTimeToMelee", + "type": 2 + }, + "TimeToSecondary": { + "field": "m_nTimeToSecondary", + "type": 2 + }, + "TimeToPrimary": { + "field": "m_nTimeToPrimary", + "type": 2 + }, + "TimeToSniperRifle": { + "field": "m_nTimeToSniperRifle", + "type": 2 + }, + "IsBeingGivenItem": { + "field": "m_bIsBeingGivenItem", + "type": 10 + }, + "IsPickingUpItemWithUse": { + "field": "m_bIsPickingUpItemWithUse", + "type": 10 + }, + "PickedUpWeapon": { + "field": "m_bPickedUpWeapon", + "type": 10 + }, + "DisableAutoDeploy": { + "field": "m_bDisableAutoDeploy", + "type": 10 + }, + "IsPickingUpGroundWeapon": { + "field": "m_bIsPickingUpGroundWeapon", + "type": 10 + }, + "OldShootPositionHistoryCount": { + "field": "m_nOldShootPositionHistoryCount", + "type": 6 + }, + "OldInputHistoryCount": { + "field": "m_nOldInputHistoryCount", + "type": 6 + }, + "Parent": { + "field": "CPlayer_WeaponServices", + "type": 11 + } + }, + "CCSPointScript": { + "Parent": { + "field": "CBasePulseGraphInstance", + "type": 11 + } + }, + "CCSPointScriptEntity": { + "Parent": { + "field": "CBaseEntity", + "type": 11 + } + }, + "CCSPointScriptExtensions_CCSWeaponBaseVData": {}, + "CCSPointScriptExtensions_entity": {}, + "CCSPointScriptExtensions_observer": {}, + "CCSPointScriptExtensions_player": {}, + "CCSPointScriptExtensions_player_controller": {}, + "CCSPointScriptExtensions_weapon_cs_base": {}, + "CCSWeaponBaseVData": { + "WeaponType": { + "field": "m_WeaponType", + "type": 6 + }, + "WeaponCategory": { + "field": "m_WeaponCategory", + "type": 6 + }, + "GearSlot": { + "field": "m_GearSlot", + "type": 6 + }, + "GearSlotPosition": { + "field": "m_GearSlotPosition", + "type": 2 + }, + "DefaultLoadoutSlot": { + "field": "m_DefaultLoadoutSlot", + "type": 6 + }, + "WrongTeamMsg": { + "field": "m_sWrongTeamMsg", + "type": 14 + }, + "Price": { + "field": "m_nPrice", + "type": 2 + }, + "KillAward": { + "field": "m_nKillAward", + "type": 2 + }, + "PrimaryReserveAmmoMax": { + "field": "m_nPrimaryReserveAmmoMax", + "type": 2 + }, + "SecondaryReserveAmmoMax": { + "field": "m_nSecondaryReserveAmmoMax", + "type": 2 + }, + "MeleeWeapon": { + "field": "m_bMeleeWeapon", + "type": 10 + }, + "HasBurstMode": { + "field": "m_bHasBurstMode", + "type": 10 + }, + "IsRevolver": { + "field": "m_bIsRevolver", + "type": 10 + }, + "CannotShootUnderwater": { + "field": "m_bCannotShootUnderwater", + "type": 10 + }, + "AnimExtension": { + "field": "m_szAnimExtension", + "type": 14 + }, + "SilencerType": { + "field": "m_eSilencerType", + "type": 6 + }, + "CrosshairMinDistance": { + "field": "m_nCrosshairMinDistance", + "type": 2 + }, + "CrosshairDeltaDistance": { + "field": "m_nCrosshairDeltaDistance", + "type": 2 + }, + "IsFullAuto": { + "field": "m_bIsFullAuto", + "type": 10 + }, + "NumBullets": { + "field": "m_nNumBullets", + "type": 2 + }, + "CycleTime": { + "field": "m_flCycleTime", + "classname": "CFiringModeFloat", + "type": 16 + }, + "MaxSpeed": { + "field": "m_flMaxSpeed", + "classname": "CFiringModeFloat", + "type": 16 + }, + "Spread": { + "field": "m_flSpread", + "classname": "CFiringModeFloat", + "type": 16 + }, + "InaccuracyCrouch": { + "field": "m_flInaccuracyCrouch", + "classname": "CFiringModeFloat", + "type": 16 + }, + "InaccuracyStand": { + "field": "m_flInaccuracyStand", + "classname": "CFiringModeFloat", + "type": 16 + }, + "InaccuracyJump": { + "field": "m_flInaccuracyJump", + "classname": "CFiringModeFloat", + "type": 16 + }, + "InaccuracyLand": { + "field": "m_flInaccuracyLand", + "classname": "CFiringModeFloat", + "type": 16 + }, + "InaccuracyLadder": { + "field": "m_flInaccuracyLadder", + "classname": "CFiringModeFloat", + "type": 16 + }, + "InaccuracyFire": { + "field": "m_flInaccuracyFire", + "classname": "CFiringModeFloat", + "type": 16 + }, + "InaccuracyMove": { + "field": "m_flInaccuracyMove", + "classname": "CFiringModeFloat", + "type": 16 + }, + "RecoilAngle": { + "field": "m_flRecoilAngle", + "classname": "CFiringModeFloat", + "type": 16 + }, + "RecoilAngleVariance": { + "field": "m_flRecoilAngleVariance", + "classname": "CFiringModeFloat", + "type": 16 + }, + "RecoilMagnitude": { + "field": "m_flRecoilMagnitude", + "classname": "CFiringModeFloat", + "type": 16 + }, + "RecoilMagnitudeVariance": { + "field": "m_flRecoilMagnitudeVariance", + "classname": "CFiringModeFloat", + "type": 16 + }, + "TracerFrequency": { + "field": "m_nTracerFrequency", + "classname": "CFiringModeInt", + "type": 16 + }, + "InaccuracyJumpInitial": { + "field": "m_flInaccuracyJumpInitial", + "type": 8 + }, + "InaccuracyJumpApex": { + "field": "m_flInaccuracyJumpApex", + "type": 8 + }, + "InaccuracyReload": { + "field": "m_flInaccuracyReload", + "type": 8 + }, + "RecoilSeed": { + "field": "m_nRecoilSeed", + "type": 2 + }, + "SpreadSeed": { + "field": "m_nSpreadSeed", + "type": 2 + }, + "TimeToIdleAfterFire": { + "field": "m_flTimeToIdleAfterFire", + "type": 8 + }, + "IdleInterval": { + "field": "m_flIdleInterval", + "type": 8 + }, + "AttackMovespeedFactor": { + "field": "m_flAttackMovespeedFactor", + "type": 8 + }, + "HeatPerShot": { + "field": "m_flHeatPerShot", + "type": 8 + }, + "InaccuracyPitchShift": { + "field": "m_flInaccuracyPitchShift", + "type": 8 + }, + "InaccuracyAltSoundThreshold": { + "field": "m_flInaccuracyAltSoundThreshold", + "type": 8 + }, + "BotAudibleRange": { + "field": "m_flBotAudibleRange", + "type": 8 + }, + "UseRadioSubtitle": { + "field": "m_szUseRadioSubtitle", + "type": 14 + }, + "UnzoomsAfterShot": { + "field": "m_bUnzoomsAfterShot", + "type": 10 + }, + "HideViewModelWhenZoomed": { + "field": "m_bHideViewModelWhenZoomed", + "type": 10 + }, + "ZoomLevels": { + "field": "m_nZoomLevels", + "type": 2 + }, + "ZoomFOV1": { + "field": "m_nZoomFOV1", + "type": 2 + }, + "ZoomFOV2": { + "field": "m_nZoomFOV2", + "type": 2 + }, + "ZoomTime0": { + "field": "m_flZoomTime0", + "type": 8 + }, + "ZoomTime1": { + "field": "m_flZoomTime1", + "type": 8 + }, + "ZoomTime2": { + "field": "m_flZoomTime2", + "type": 8 + }, + "IronSightPullUpSpeed": { + "field": "m_flIronSightPullUpSpeed", + "type": 8 + }, + "IronSightPutDownSpeed": { + "field": "m_flIronSightPutDownSpeed", + "type": 8 + }, + "IronSightFOV": { + "field": "m_flIronSightFOV", + "type": 8 + }, + "IronSightPivotForward": { + "field": "m_flIronSightPivotForward", + "type": 8 + }, + "IronSightLooseness": { + "field": "m_flIronSightLooseness", + "type": 8 + }, + "PivotAngle": { + "field": "m_angPivotAngle", + "type": 20 + }, + "IronSightEyePos": { + "field": "m_vecIronSightEyePos", + "type": 21 + }, + "Damage": { + "field": "m_nDamage", + "type": 2 + }, + "HeadshotMultiplier": { + "field": "m_flHeadshotMultiplier", + "type": 8 + }, + "ArmorRatio": { + "field": "m_flArmorRatio", + "type": 8 + }, + "Penetration": { + "field": "m_flPenetration", + "type": 8 + }, + "Range": { + "field": "m_flRange", + "type": 8 + }, + "RangeModifier": { + "field": "m_flRangeModifier", + "type": 8 + }, + "FlinchVelocityModifierLarge": { + "field": "m_flFlinchVelocityModifierLarge", + "type": 8 + }, + "FlinchVelocityModifierSmall": { + "field": "m_flFlinchVelocityModifierSmall", + "type": 8 + }, + "RecoveryTimeCrouch": { + "field": "m_flRecoveryTimeCrouch", + "type": 8 + }, + "RecoveryTimeStand": { + "field": "m_flRecoveryTimeStand", + "type": 8 + }, + "RecoveryTimeCrouchFinal": { + "field": "m_flRecoveryTimeCrouchFinal", + "type": 8 + }, + "RecoveryTimeStandFinal": { + "field": "m_flRecoveryTimeStandFinal", + "type": 8 + }, + "RecoveryTransitionStartBullet": { + "field": "m_nRecoveryTransitionStartBullet", + "type": 2 + }, + "RecoveryTransitionEndBullet": { + "field": "m_nRecoveryTransitionEndBullet", + "type": 2 + }, + "ThrowVelocity": { + "field": "m_flThrowVelocity", + "type": 8 + }, + "SmokeColor": { + "field": "m_vSmokeColor", + "type": 21 + }, + "Parent": { + "field": "CBasePlayerWeaponVData", + "type": 11 + } + }, + "CCitadelSoundOpvarSetOBB": { + "StackName": { + "field": "m_iszStackName", + "type": 13 + }, + "OperatorName": { + "field": "m_iszOperatorName", + "type": 13 + }, + "OpvarName": { + "field": "m_iszOpvarName", + "type": 13 + }, + "DistanceInnerMins": { + "field": "m_vDistanceInnerMins", + "type": 21 + }, + "DistanceInnerMaxs": { + "field": "m_vDistanceInnerMaxs", + "type": 21 + }, + "DistanceOuterMins": { + "field": "m_vDistanceOuterMins", + "type": 21 + }, + "DistanceOuterMaxs": { + "field": "m_vDistanceOuterMaxs", + "type": 21 + }, + "AABBDirection": { + "field": "m_nAABBDirection", + "type": 2 + }, + "Parent": { + "field": "CBaseEntity", + "type": 11 + } + }, + "CClientAlphaProperty": { + "RenderFX": { + "field": "m_nRenderFX", + "type": 4 + }, + "RenderMode": { + "field": "m_nRenderMode", + "type": 4 + }, + "Alpha": { + "field": "m_nAlpha", + "type": 4 + }, + "DesyncOffset": { + "field": "m_nDesyncOffset", + "type": 5 + }, + "Reserved2": { + "field": "m_nReserved2", + "type": 5 + }, + "DistFadeStart": { + "field": "m_nDistFadeStart", + "type": 5 + }, + "DistFadeEnd": { + "field": "m_nDistFadeEnd", + "type": 5 + }, + "FadeScale": { + "field": "m_flFadeScale", + "type": 8 + }, + "RenderFxStartTime": { + "field": "m_flRenderFxStartTime", + "type": 8 + }, + "RenderFxDuration": { + "field": "m_flRenderFxDuration", + "type": 8 + }, + "Parent": { + "field": "IClientAlphaProperty", + "type": 11 + } + }, + "CClientGapTypeQueryRegistration": {}, + "CCollisionProperty": { + "CollisionAttribute": { + "field": "m_collisionAttribute", + "classname": "VPhysicsCollisionAttribute_t", + "type": 16 + }, + "Mins": { + "field": "m_vecMins", + "type": 21 + }, + "Maxs": { + "field": "m_vecMaxs", + "type": 21 + }, + "SolidFlags": { + "field": "m_usSolidFlags", + "type": 4 + }, + "SolidType": { + "field": "m_nSolidType", + "type": 4 + }, + "TriggerBloat": { + "field": "m_triggerBloat", + "type": 4 + }, + "SurroundType": { + "field": "m_nSurroundType", + "type": 4 + }, + "CollisionGroup": { + "field": "m_CollisionGroup", + "type": 4 + }, + "EnablePhysics": { + "field": "m_nEnablePhysics", + "type": 4 + }, + "BoundingRadius": { + "field": "m_flBoundingRadius", + "type": 8 + }, + "SpecifiedSurroundingMins": { + "field": "m_vecSpecifiedSurroundingMins", + "type": 21 + }, + "SpecifiedSurroundingMaxs": { + "field": "m_vecSpecifiedSurroundingMaxs", + "type": 21 + }, + "SurroundingMaxs": { + "field": "m_vecSurroundingMaxs", + "type": 21 + }, + "SurroundingMins": { + "field": "m_vecSurroundingMins", + "type": 21 + }, + "CapsuleCenter1": { + "field": "m_vCapsuleCenter1", + "type": 21 + }, + "CapsuleCenter2": { + "field": "m_vCapsuleCenter2", + "type": 21 + }, + "CapsuleRadius": { + "field": "m_flCapsuleRadius", + "type": 8 + } + }, + "CCompositeMaterialEditorDoc": { + "Version": { + "field": "m_nVersion", + "type": 2 + } + }, + "CCopyRecipientFilter": { + "Flags": { + "field": "m_Flags", + "type": 2 + }, + "Recipients": { + "field": "m_Recipients", + "type": 53 + } + }, + "CDamageRecord": { + "PlayerDamager": { + "field": "m_PlayerDamager", + "type": 17, + "classname": "CCSPlayerPawn" + }, + "PlayerRecipient": { + "field": "m_PlayerRecipient", + "type": 17, + "classname": "CCSPlayerPawn" + }, + "PlayerControllerDamager": { + "field": "m_hPlayerControllerDamager", + "type": 17, + "classname": "CCSPlayerController" + }, + "PlayerControllerRecipient": { + "field": "m_hPlayerControllerRecipient", + "type": 17, + "classname": "CCSPlayerController" + }, + "PlayerDamagerName": { + "field": "m_szPlayerDamagerName", + "type": 14 + }, + "PlayerRecipientName": { + "field": "m_szPlayerRecipientName", + "type": 14 + }, + "DamagerXuid": { + "field": "m_DamagerXuid", + "type": 7 + }, + "RecipientXuid": { + "field": "m_RecipientXuid", + "type": 7 + }, + "BulletsDamage": { + "field": "m_iBulletsDamage", + "type": 2 + }, + "Damage": { + "field": "m_iDamage", + "type": 2 + }, + "ActualHealthRemoved": { + "field": "m_iActualHealthRemoved", + "type": 2 + }, + "NumHits": { + "field": "m_iNumHits", + "type": 2 + }, + "LastBulletUpdate": { + "field": "m_iLastBulletUpdate", + "type": 2 + }, + "IsOtherEnemy": { + "field": "m_bIsOtherEnemy", + "type": 10 + }, + "KillType": { + "field": "m_killType", + "type": 4 + } + }, + "CDecalInfo": { + "AnimationScale": { + "field": "m_flAnimationScale", + "type": 8 + }, + "AnimationLifeSpan": { + "field": "m_flAnimationLifeSpan", + "type": 8 + }, + "PlaceTime": { + "field": "m_flPlaceTime", + "type": 8 + }, + "FadeStartTime": { + "field": "m_flFadeStartTime", + "type": 8 + }, + "FadeDuration": { + "field": "m_flFadeDuration", + "type": 8 + }, + "VBSlot": { + "field": "m_nVBSlot", + "type": 2 + }, + "BoneIndex": { + "field": "m_nBoneIndex", + "type": 2 + }, + "Position": { + "field": "m_vPosition", + "type": 21 + }, + "BoundingRadiusSqr": { + "field": "m_flBoundingRadiusSqr", + "type": 8 + }, + "Next": { + "field": "m_pNext", + "classname": "CDecalInfo", + "type": 24 + }, + "Prev": { + "field": "m_pPrev", + "classname": "CDecalInfo", + "type": 24 + }, + "DecalMaterialIndex": { + "field": "m_nDecalMaterialIndex", + "type": 2 + } + }, + "CDestructiblePartRuntimeData": { + "HealthRemaining": { + "field": "m_nHealthRemaining", + "type": 2 + } + }, + "CDestructiblePartRuntimeDataVector": {}, + "CDestructiblePartsSystemData": {}, + "CDestructiblePartsSystemData_HitGroupInfoAndPartData": { + "Name": { + "field": "m_sName", + "type": 14 + }, + "DisableHitGroupWhenDestroyed": { + "field": "m_bDisableHitGroupWhenDestroyed", + "type": 10 + } + }, + "CDestructiblePartsSystemData_PartData": { + "Name": { + "field": "m_sName", + "type": 14 + }, + "BodyGroupValue": { + "field": "m_nBodyGroupValue", + "type": 2 + }, + "Health": { + "field": "m_nHealth", + "classname": "CSkillInt", + "type": 16 + }, + "DamagePassthroughType": { + "field": "m_nDamagePassthroughType", + "type": 6 + }, + "KillNPCOnDestruction": { + "field": "m_bKillNPCOnDestruction", + "type": 10 + } + }, + "CEconItemAttribute": { + "AttributeDefinitionIndex": { + "field": "m_iAttributeDefinitionIndex", + "type": 5 + }, + "Value": { + "field": "m_flValue", + "type": 8 + }, + "InitialValue": { + "field": "m_flInitialValue", + "type": 8 + }, + "RefundableCurrency": { + "field": "m_nRefundableCurrency", + "type": 2 + }, + "SetBonus": { + "field": "m_bSetBonus", + "type": 10 + } + }, + "CEffectData": { + "Origin": { + "field": "m_vOrigin", + "type": 21 + }, + "Start": { + "field": "m_vStart", + "type": 21 + }, + "Normal": { + "field": "m_vNormal", + "type": 21 + }, + "Angles": { + "field": "m_vAngles", + "type": 20 + }, + "Entity": { + "field": "m_hEntity", + "type": 17, + "classname": "CEntityInstance" + }, + "OtherEntity": { + "field": "m_hOtherEntity", + "type": 17, + "classname": "CEntityInstance" + }, + "Scale": { + "field": "m_flScale", + "type": 8 + }, + "Magnitude": { + "field": "m_flMagnitude", + "type": 8 + }, + "Radius": { + "field": "m_flRadius", + "type": 8 + }, + "SurfaceProp": { + "field": "m_nSurfaceProp", + "type": 12 + }, + "DamageType": { + "field": "m_nDamageType", + "type": 6 + }, + "Penetrate": { + "field": "m_nPenetrate", + "type": 4 + }, + "Material": { + "field": "m_nMaterial", + "type": 5 + }, + "HitBox": { + "field": "m_nHitBox", + "type": 5 + }, + "Color": { + "field": "m_nColor", + "type": 4 + }, + "Flags": { + "field": "m_fFlags", + "type": 4 + }, + "AttachmentName": { + "field": "m_nAttachmentName", + "type": 12 + }, + "EffectName": { + "field": "m_iEffectName", + "type": 5 + }, + "ExplosionType": { + "field": "m_nExplosionType", + "type": 4 + } + }, + "CEntitySubclassVDataBase": {}, + "CEnvSoundscape": { + "OnPlay": { + "field": "m_OnPlay", + "classname": "CEntityIOOutput", + "type": 16 + }, + "Radius": { + "field": "m_flRadius", + "type": 8 + }, + "SoundEventName": { + "field": "m_soundEventName", + "type": 13 + }, + "OverrideWithEvent": { + "field": "m_bOverrideWithEvent", + "type": 10 + }, + "SoundscapeIndex": { + "field": "m_soundscapeIndex", + "type": 2 + }, + "SoundscapeEntityListId": { + "field": "m_soundscapeEntityListId", + "type": 2 + }, + "PositionNames": { + "field": "m_positionNames", + "type": 26, + "size": 8 + }, + "ProxySoundscape": { + "field": "m_hProxySoundscape", + "type": 17, + "classname": "CEnvSoundscape" + }, + "Disabled": { + "field": "m_bDisabled", + "type": 10 + }, + "SoundscapeName": { + "field": "m_soundscapeName", + "type": 13 + }, + "SoundEventHash": { + "field": "m_soundEventHash", + "type": 6 + }, + "Parent": { + "field": "CBaseEntity", + "type": 11 + } + }, + "CEnvSoundscapeAlias_snd_soundscape": { + "Parent": { + "field": "CEnvSoundscape", + "type": 11 + } + }, + "CEnvSoundscapeProxy": { + "MainSoundscapeName": { + "field": "m_MainSoundscapeName", + "type": 13 + }, + "Parent": { + "field": "CEnvSoundscape", + "type": 11 + } + }, + "CEnvSoundscapeProxyAlias_snd_soundscape_proxy": { + "Parent": { + "field": "CEnvSoundscapeProxy", + "type": 11 + } + }, + "CEnvSoundscapeTriggerable": { + "Parent": { + "field": "CEnvSoundscape", + "type": 11 + } + }, + "CEnvSoundscapeTriggerableAlias_snd_soundscape_triggerable": { + "Parent": { + "field": "CEnvSoundscapeTriggerable", + "type": 11 + } + }, + "CFireOverlay": { + "BaseColors": { + "field": "m_vBaseColors", + "type": 42, + "size": 4 + }, + "Scale": { + "field": "m_flScale", + "type": 8 + }, + "GUID": { + "field": "m_nGUID", + "type": 2 + }, + "Parent": { + "field": "CGlowOverlay", + "type": 11 + } + }, + "CFiringModeFloat": { + "Values": { + "field": "m_flValues", + "type": 37, + "size": 2 + } + }, + "CFiringModeInt": { + "Values": { + "field": "m_nValues", + "type": 31, + "size": 2 + } + }, + "CFlashlightEffect": { + "IsOn": { + "field": "m_bIsOn", + "type": 10 + }, + "MuzzleFlashEnabled": { + "field": "m_bMuzzleFlashEnabled", + "type": 10 + }, + "MuzzleFlashBrightness": { + "field": "m_flMuzzleFlashBrightness", + "type": 8 + }, + "MuzzleFlashOrigin": { + "field": "m_vecMuzzleFlashOrigin", + "type": 21 + }, + "Fov": { + "field": "m_flFov", + "type": 8 + }, + "FarZ": { + "field": "m_flFarZ", + "type": 8 + }, + "LinearAtten": { + "field": "m_flLinearAtten", + "type": 8 + }, + "CastsShadows": { + "field": "m_bCastsShadows", + "type": 10 + }, + "CurrentPullBackDist": { + "field": "m_flCurrentPullBackDist", + "type": 8 + }, + "TextureName": { + "field": "m_textureName", + "type": 15, + "size": 64 + } + }, + "CFootstepTableHandle": {}, + "CFuncWater": { + "BuoyancyHelper": { + "field": "m_BuoyancyHelper", + "classname": "CBuoyancyHelper", + "type": 16 + }, + "Parent": { + "field": "CBaseModelEntity", + "type": 11 + } + }, + "CGameSceneNode": { + "Owner": { + "field": "m_pOwner", + "classname": "CEntityInstance", + "type": 24 + }, + "Parent": { + "field": "m_pParent", + "classname": "CGameSceneNode", + "type": 24 + }, + "Child": { + "field": "m_pChild", + "classname": "CGameSceneNode", + "type": 24 + }, + "NextSibling": { + "field": "m_pNextSibling", + "classname": "CGameSceneNode", + "type": 24 + }, + "Origin": { + "field": "m_vecOrigin", + "classname": "CNetworkOriginCellCoordQuantizedVector", + "type": 16 + }, + "Rotation": { + "field": "m_angRotation", + "type": 20 + }, + "Scale": { + "field": "m_flScale", + "type": 8 + }, + "AbsOrigin": { + "field": "m_vecAbsOrigin", + "type": 21 + }, + "AbsRotation": { + "field": "m_angAbsRotation", + "type": 20 + }, + "AbsScale": { + "field": "m_flAbsScale", + "type": 8 + }, + "ParentAttachmentOrBone": { + "field": "m_nParentAttachmentOrBone", + "type": 1 + }, + "DebugAbsOriginChanges": { + "field": "m_bDebugAbsOriginChanges", + "type": 10 + }, + "Dormant": { + "field": "m_bDormant", + "type": 10 + }, + "ForceParentToBeNetworked": { + "field": "m_bForceParentToBeNetworked", + "type": 10 + }, + "HierarchicalDepth": { + "field": "m_nHierarchicalDepth", + "type": 4 + }, + "HierarchyType": { + "field": "m_nHierarchyType", + "type": 4 + }, + "DoNotSetAnimTimeInInvalidatePhysicsCount": { + "field": "m_nDoNotSetAnimTimeInInvalidatePhysicsCount", + "type": 4 + }, + "Name": { + "field": "m_name", + "type": 12 + }, + "HierarchyAttachName": { + "field": "m_hierarchyAttachName", + "type": 12 + }, + "ZOffset": { + "field": "m_flZOffset", + "type": 8 + }, + "ClientLocalScale": { + "field": "m_flClientLocalScale", + "type": 8 + }, + "RenderOrigin": { + "field": "m_vRenderOrigin", + "type": 21 + } + }, + "CGlobalLightBase": { + "SpotLight": { + "field": "m_bSpotLight", + "type": 10 + }, + "SpotLightOrigin": { + "field": "m_SpotLightOrigin", + "type": 21 + }, + "SpotLightAngles": { + "field": "m_SpotLightAngles", + "type": 20 + }, + "ShadowDirection": { + "field": "m_ShadowDirection", + "type": 21 + }, + "AmbientDirection": { + "field": "m_AmbientDirection", + "type": 21 + }, + "SpecularDirection": { + "field": "m_SpecularDirection", + "type": 21 + }, + "InspectorSpecularDirection": { + "field": "m_InspectorSpecularDirection", + "type": 21 + }, + "SpecularPower": { + "field": "m_flSpecularPower", + "type": 8 + }, + "SpecularIndependence": { + "field": "m_flSpecularIndependence", + "type": 8 + }, + "SpecularColor": { + "field": "m_SpecularColor", + "type": 19 + }, + "StartDisabled": { + "field": "m_bStartDisabled", + "type": 10 + }, + "Enabled": { + "field": "m_bEnabled", + "type": 10 + }, + "LightColor": { + "field": "m_LightColor", + "type": 19 + }, + "AmbientColor1": { + "field": "m_AmbientColor1", + "type": 19 + }, + "AmbientColor2": { + "field": "m_AmbientColor2", + "type": 19 + }, + "AmbientColor3": { + "field": "m_AmbientColor3", + "type": 19 + }, + "SunDistance": { + "field": "m_flSunDistance", + "type": 8 + }, + "FOV": { + "field": "m_flFOV", + "type": 8 + }, + "NearZ": { + "field": "m_flNearZ", + "type": 8 + }, + "FarZ": { + "field": "m_flFarZ", + "type": 8 + }, + "EnableShadows": { + "field": "m_bEnableShadows", + "type": 10 + }, + "OldEnableShadows": { + "field": "m_bOldEnableShadows", + "type": 10 + }, + "BackgroundClearNotRequired": { + "field": "m_bBackgroundClearNotRequired", + "type": 10 + }, + "CloudScale": { + "field": "m_flCloudScale", + "type": 8 + }, + "Cloud1Speed": { + "field": "m_flCloud1Speed", + "type": 8 + }, + "Cloud1Direction": { + "field": "m_flCloud1Direction", + "type": 8 + }, + "Cloud2Speed": { + "field": "m_flCloud2Speed", + "type": 8 + }, + "Cloud2Direction": { + "field": "m_flCloud2Direction", + "type": 8 + }, + "AmbientScale1": { + "field": "m_flAmbientScale1", + "type": 8 + }, + "AmbientScale2": { + "field": "m_flAmbientScale2", + "type": 8 + }, + "GroundScale": { + "field": "m_flGroundScale", + "type": 8 + }, + "LightScale": { + "field": "m_flLightScale", + "type": 8 + }, + "FoWDarkness": { + "field": "m_flFoWDarkness", + "type": 8 + }, + "EnableSeparateSkyboxFog": { + "field": "m_bEnableSeparateSkyboxFog", + "type": 10 + }, + "FowColor": { + "field": "m_vFowColor", + "type": 21 + }, + "ViewOrigin": { + "field": "m_ViewOrigin", + "type": 21 + }, + "ViewAngles": { + "field": "m_ViewAngles", + "type": 20 + }, + "ViewFoV": { + "field": "m_flViewFoV", + "type": 8 + }, + "WorldPoints": { + "field": "m_WorldPoints", + "type": 42, + "size": 8 + }, + "FogOffsetLayer0": { + "field": "m_vFogOffsetLayer0", + "type": 22 + }, + "FogOffsetLayer1": { + "field": "m_vFogOffsetLayer1", + "type": 22 + }, + "EnvWind": { + "field": "m_hEnvWind", + "type": 17, + "classname": "CBaseEntity" + }, + "EnvSky": { + "field": "m_hEnvSky", + "type": 17, + "classname": "CBaseEntity" + } + }, + "CGlowOverlay": { + "Pos": { + "field": "m_vPos", + "type": 21 + }, + "Directional": { + "field": "m_bDirectional", + "type": 10 + }, + "Direction": { + "field": "m_vDirection", + "type": 21 + }, + "InSky": { + "field": "m_bInSky", + "type": 10 + }, + "SkyObstructionScale": { + "field": "m_skyObstructionScale", + "type": 8 + }, + "Sprites": { + "field": "m_Sprites", + "type": 45, + "size": 4 + }, + "Sprites1": { + "field": "m_nSprites", + "type": 2 + }, + "ProxyRadius": { + "field": "m_flProxyRadius", + "type": 8 + }, + "HDRColorScale": { + "field": "m_flHDRColorScale", + "type": 8 + }, + "GlowObstructionScale": { + "field": "m_flGlowObstructionScale", + "type": 8 + }, + "CacheGlowObstruction": { + "field": "m_bCacheGlowObstruction", + "type": 10 + }, + "CacheSkyObstruction": { + "field": "m_bCacheSkyObstruction", + "type": 10 + }, + "Activated": { + "field": "m_bActivated", + "type": 1 + }, + "ListIndex": { + "field": "m_ListIndex", + "type": 5 + }, + "QueryHandle": { + "field": "m_queryHandle", + "type": 2 + } + }, + "CGlowProperty": { + "GlowColor": { + "field": "m_fGlowColor", + "type": 21 + }, + "GlowType": { + "field": "m_iGlowType", + "type": 2 + }, + "GlowTeam": { + "field": "m_iGlowTeam", + "type": 2 + }, + "GlowRange": { + "field": "m_nGlowRange", + "type": 2 + }, + "GlowRangeMin": { + "field": "m_nGlowRangeMin", + "type": 2 + }, + "GlowColorOverride": { + "field": "m_glowColorOverride", + "type": 19 + }, + "Flashing": { + "field": "m_bFlashing", + "type": 10 + }, + "GlowTime": { + "field": "m_flGlowTime", + "type": 8 + }, + "GlowStartTime": { + "field": "m_flGlowStartTime", + "type": 8 + }, + "EligibleForScreenHighlight": { + "field": "m_bEligibleForScreenHighlight", + "type": 10 + }, + "Glowing": { + "field": "m_bGlowing", + "type": 10 + } + }, + "CGlowSprite": { + "Color": { + "field": "m_vColor", + "type": 21 + }, + "HorzSize": { + "field": "m_flHorzSize", + "type": 8 + }, + "VertSize": { + "field": "m_flVertSize", + "type": 8 + } + }, + "CGrenadeTracer": { + "TracerDuration": { + "field": "m_flTracerDuration", + "type": 8 + }, + "Type": { + "field": "m_nType", + "type": 6 + }, + "Parent": { + "field": "C_BaseModelEntity", + "type": 11 + } + }, + "CHitboxComponent": { + "DisabledHitGroups": { + "field": "m_bvDisabledHitGroups", + "type": 35, + "size": 1 + }, + "Parent": { + "field": "CEntityComponent", + "type": 11 + } + }, + "CHostageRescueZone": { + "Parent": { + "field": "CHostageRescueZoneShim", + "type": 11 + } + }, + "CHostageRescueZoneShim": { + "Parent": { + "field": "CBaseTrigger", + "type": 11 + } + }, + "CInButtonState": { + "ButtonStates": { + "field": "m_pButtonStates", + "type": 36, + "size": 3 + } + }, + "CInfoDynamicShadowHint": { + "Disabled": { + "field": "m_bDisabled", + "type": 10 + }, + "Range": { + "field": "m_flRange", + "type": 8 + }, + "Importance": { + "field": "m_nImportance", + "type": 2 + }, + "LightChoice": { + "field": "m_nLightChoice", + "type": 2 + }, + "Light": { + "field": "m_hLight", + "type": 17, + "classname": "CBaseEntity" + }, + "Parent": { + "field": "CPointEntity", + "type": 11 + } + }, + "CInfoDynamicShadowHintBox": { + "BoxMins": { + "field": "m_vBoxMins", + "type": 21 + }, + "BoxMaxs": { + "field": "m_vBoxMaxs", + "type": 21 + }, + "Parent": { + "field": "CInfoDynamicShadowHint", + "type": 11 + } + }, + "CInfoOffscreenPanoramaTexture": { + "Disabled": { + "field": "m_bDisabled", + "type": 10 + }, + "ResolutionX": { + "field": "m_nResolutionX", + "type": 2 + }, + "ResolutionY": { + "field": "m_nResolutionY", + "type": 2 + }, + "LayoutFileName": { + "field": "m_szLayoutFileName", + "type": 13 + }, + "RenderAttrName": { + "field": "m_RenderAttrName", + "type": 13 + }, + "TargetChangeCount": { + "field": "m_nTargetChangeCount", + "type": 2 + }, + "CSSClasses": { + "field": "m_vecCSSClasses", + "type": 48 + }, + "TargetsName": { + "field": "m_szTargetsName", + "type": 13 + }, + "Parent": { + "field": "CPointEntity", + "type": 11 + } + }, + "CInfoParticleTarget": { + "Parent": { + "field": "CPointEntity", + "type": 11 + } + }, + "CInfoTarget": { + "Parent": { + "field": "CPointEntity", + "type": 11 + } + }, + "CInfoWorldLayer": { + "OutputOnEntitiesSpawned": { + "field": "m_pOutputOnEntitiesSpawned", + "classname": "CEntityIOOutput", + "type": 16 + }, + "WorldName": { + "field": "m_worldName", + "type": 13 + }, + "LayerName": { + "field": "m_layerName", + "type": 13 + }, + "WorldLayerVisible": { + "field": "m_bWorldLayerVisible", + "type": 10 + }, + "EntitiesSpawned": { + "field": "m_bEntitiesSpawned", + "type": 10 + }, + "CreateAsChildSpawnGroup": { + "field": "m_bCreateAsChildSpawnGroup", + "type": 10 + }, + "LayerSpawnGroup": { + "field": "m_hLayerSpawnGroup", + "type": 6 + }, + "Parent": { + "field": "CBaseEntity", + "type": 11 + } + }, + "CInterpolatedValue": { + "StartTime": { + "field": "m_flStartTime", + "type": 8 + }, + "EndTime": { + "field": "m_flEndTime", + "type": 8 + }, + "StartValue": { + "field": "m_flStartValue", + "type": 8 + }, + "EndValue": { + "field": "m_flEndValue", + "type": 8 + }, + "InterpType": { + "field": "m_nInterpType", + "type": 2 + } + }, + "CLightComponent": { + "__pChainEntity": { + "field": "__m_pChainEntity", + "classname": "CNetworkVarChainer", + "type": 16 + }, + "Color": { + "field": "m_Color", + "type": 19 + }, + "SecondaryColor": { + "field": "m_SecondaryColor", + "type": 19 + }, + "Brightness": { + "field": "m_flBrightness", + "type": 8 + }, + "BrightnessScale": { + "field": "m_flBrightnessScale", + "type": 8 + }, + "BrightnessMult": { + "field": "m_flBrightnessMult", + "type": 8 + }, + "Range": { + "field": "m_flRange", + "type": 8 + }, + "Falloff": { + "field": "m_flFalloff", + "type": 8 + }, + "Attenuation0": { + "field": "m_flAttenuation0", + "type": 8 + }, + "Attenuation1": { + "field": "m_flAttenuation1", + "type": 8 + }, + "Attenuation2": { + "field": "m_flAttenuation2", + "type": 8 + }, + "Theta": { + "field": "m_flTheta", + "type": 8 + }, + "Phi": { + "field": "m_flPhi", + "type": 8 + }, + "Cascades": { + "field": "m_nCascades", + "type": 2 + }, + "CastShadows": { + "field": "m_nCastShadows", + "type": 2 + }, + "ShadowWidth": { + "field": "m_nShadowWidth", + "type": 2 + }, + "ShadowHeight": { + "field": "m_nShadowHeight", + "type": 2 + }, + "RenderDiffuse": { + "field": "m_bRenderDiffuse", + "type": 10 + }, + "RenderSpecular": { + "field": "m_nRenderSpecular", + "type": 2 + }, + "RenderTransmissive": { + "field": "m_bRenderTransmissive", + "type": 10 + }, + "OrthoLightWidth": { + "field": "m_flOrthoLightWidth", + "type": 8 + }, + "OrthoLightHeight": { + "field": "m_flOrthoLightHeight", + "type": 8 + }, + "Style": { + "field": "m_nStyle", + "type": 2 + }, + "Pattern": { + "field": "m_Pattern", + "type": 14 + }, + "CascadeRenderStaticObjects": { + "field": "m_nCascadeRenderStaticObjects", + "type": 2 + }, + "ShadowCascadeCrossFade": { + "field": "m_flShadowCascadeCrossFade", + "type": 8 + }, + "ShadowCascadeDistanceFade": { + "field": "m_flShadowCascadeDistanceFade", + "type": 8 + }, + "ShadowCascadeDistance0": { + "field": "m_flShadowCascadeDistance0", + "type": 8 + }, + "ShadowCascadeDistance1": { + "field": "m_flShadowCascadeDistance1", + "type": 8 + }, + "ShadowCascadeDistance2": { + "field": "m_flShadowCascadeDistance2", + "type": 8 + }, + "ShadowCascadeDistance3": { + "field": "m_flShadowCascadeDistance3", + "type": 8 + }, + "ShadowCascadeResolution0": { + "field": "m_nShadowCascadeResolution0", + "type": 2 + }, + "ShadowCascadeResolution1": { + "field": "m_nShadowCascadeResolution1", + "type": 2 + }, + "ShadowCascadeResolution2": { + "field": "m_nShadowCascadeResolution2", + "type": 2 + }, + "ShadowCascadeResolution3": { + "field": "m_nShadowCascadeResolution3", + "type": 2 + }, + "UsesBakedShadowing": { + "field": "m_bUsesBakedShadowing", + "type": 10 + }, + "ShadowPriority": { + "field": "m_nShadowPriority", + "type": 2 + }, + "BakedShadowIndex": { + "field": "m_nBakedShadowIndex", + "type": 2 + }, + "RenderToCubemaps": { + "field": "m_bRenderToCubemaps", + "type": 10 + }, + "DirectLight": { + "field": "m_nDirectLight", + "type": 2 + }, + "IndirectLight": { + "field": "m_nIndirectLight", + "type": 2 + }, + "FadeMinDist": { + "field": "m_flFadeMinDist", + "type": 8 + }, + "FadeMaxDist": { + "field": "m_flFadeMaxDist", + "type": 8 + }, + "ShadowFadeMinDist": { + "field": "m_flShadowFadeMinDist", + "type": 8 + }, + "ShadowFadeMaxDist": { + "field": "m_flShadowFadeMaxDist", + "type": 8 + }, + "Enabled": { + "field": "m_bEnabled", + "type": 10 + }, + "Flicker": { + "field": "m_bFlicker", + "type": 10 + }, + "PrecomputedFieldsValid": { + "field": "m_bPrecomputedFieldsValid", + "type": 10 + }, + "PrecomputedBoundsMins": { + "field": "m_vPrecomputedBoundsMins", + "type": 21 + }, + "PrecomputedBoundsMaxs": { + "field": "m_vPrecomputedBoundsMaxs", + "type": 21 + }, + "PrecomputedOBBOrigin": { + "field": "m_vPrecomputedOBBOrigin", + "type": 21 + }, + "PrecomputedOBBAngles": { + "field": "m_vPrecomputedOBBAngles", + "type": 20 + }, + "PrecomputedOBBExtent": { + "field": "m_vPrecomputedOBBExtent", + "type": 21 + }, + "PrecomputedMaxRange": { + "field": "m_flPrecomputedMaxRange", + "type": 8 + }, + "FogLightingMode": { + "field": "m_nFogLightingMode", + "type": 2 + }, + "FogContributionStength": { + "field": "m_flFogContributionStength", + "type": 8 + }, + "NearClipPlane": { + "field": "m_flNearClipPlane", + "type": 8 + }, + "SkyColor": { + "field": "m_SkyColor", + "type": 19 + }, + "SkyIntensity": { + "field": "m_flSkyIntensity", + "type": 8 + }, + "SkyAmbientBounce": { + "field": "m_SkyAmbientBounce", + "type": 19 + }, + "UseSecondaryColor": { + "field": "m_bUseSecondaryColor", + "type": 10 + }, + "MixedShadows": { + "field": "m_bMixedShadows", + "type": 10 + }, + "LightStyleStartTime": { + "field": "m_flLightStyleStartTime", + "type": 8 + }, + "CapsuleLength": { + "field": "m_flCapsuleLength", + "type": 8 + }, + "MinRoughness": { + "field": "m_flMinRoughness", + "type": 8 + }, + "PvsModifyEntity": { + "field": "m_bPvsModifyEntity", + "type": 10 + }, + "Parent": { + "field": "CEntityComponent", + "type": 11 + } + }, + "CLogicRelay": { + "OnTrigger": { + "field": "m_OnTrigger", + "classname": "CEntityIOOutput", + "type": 16 + }, + "OnSpawn": { + "field": "m_OnSpawn", + "classname": "CEntityIOOutput", + "type": 16 + }, + "Disabled": { + "field": "m_bDisabled", + "type": 10 + }, + "WaitForRefire": { + "field": "m_bWaitForRefire", + "type": 10 + }, + "TriggerOnce": { + "field": "m_bTriggerOnce", + "type": 10 + }, + "FastRetrigger": { + "field": "m_bFastRetrigger", + "type": 10 + }, + "PassthoughCaller": { + "field": "m_bPassthoughCaller", + "type": 10 + }, + "Parent": { + "field": "CLogicalEntity", + "type": 11 + } + }, + "CLogicalEntity": { + "Parent": { + "field": "CServerOnlyEntity", + "type": 11 + } + }, + "CMapInfo": { + "BuyingStatus": { + "field": "m_iBuyingStatus", + "type": 2 + }, + "BombRadius": { + "field": "m_flBombRadius", + "type": 8 + }, + "PetPopulation": { + "field": "m_iPetPopulation", + "type": 2 + }, + "UseNormalSpawnsForDM": { + "field": "m_bUseNormalSpawnsForDM", + "type": 10 + }, + "DisableAutoGeneratedDMSpawns": { + "field": "m_bDisableAutoGeneratedDMSpawns", + "type": 10 + }, + "BotMaxVisionDistance": { + "field": "m_flBotMaxVisionDistance", + "type": 8 + }, + "HostageCount": { + "field": "m_iHostageCount", + "type": 2 + }, + "FadePlayerVisibilityFarZ": { + "field": "m_bFadePlayerVisibilityFarZ", + "type": 10 + }, + "RainTraceToSkyEnabled": { + "field": "m_bRainTraceToSkyEnabled", + "type": 10 + }, + "Parent": { + "field": "CPointEntity", + "type": 11 + } + }, + "CModelState": { + "ModelName": { + "field": "m_ModelName", + "type": 13 + }, + "ClientClothCreationSuppressed": { + "field": "m_bClientClothCreationSuppressed", + "type": 10 + }, + "MeshGroupMask": { + "field": "m_MeshGroupMask", + "type": 7 + }, + "IdealMotionType": { + "field": "m_nIdealMotionType", + "type": 0 + }, + "ForceLOD": { + "field": "m_nForceLOD", + "type": 0 + }, + "ClothUpdateFlags": { + "field": "m_nClothUpdateFlags", + "type": 0 + } + }, + "CNavLinkAnimgraphVar": { + "AlignmentDegrees": { + "field": "m_unAlignmentDegrees", + "type": 6 + } + }, + "CNavLinkMovementVData": { + "IsInterpolated": { + "field": "m_bIsInterpolated", + "type": 10 + }, + "RecommendedDistance": { + "field": "m_unRecommendedDistance", + "type": 6 + } + }, + "CNetworkOriginCellCoordQuantizedVector": { + "CellX": { + "field": "m_cellX", + "type": 5 + }, + "CellY": { + "field": "m_cellY", + "type": 5 + }, + "CellZ": { + "field": "m_cellZ", + "type": 5 + }, + "OutsideWorld": { + "field": "m_nOutsideWorld", + "type": 5 + }, + "X": { + "field": "m_vecX", + "type": 8 + }, + "Y": { + "field": "m_vecY", + "type": 8 + }, + "Z": { + "field": "m_vecZ", + "type": 8 + } + }, + "CNetworkOriginQuantizedVector": { + "X": { + "field": "m_vecX", + "type": 8 + }, + "Y": { + "field": "m_vecY", + "type": 8 + }, + "Z": { + "field": "m_vecZ", + "type": 8 + } + }, + "CNetworkTransmitComponent": { + "TransmitStateOwnedCounter": { + "field": "m_nTransmitStateOwnedCounter", + "type": 4 + } + }, + "CNetworkVelocityVector": { + "X": { + "field": "m_vecX", + "type": 8 + }, + "Y": { + "field": "m_vecY", + "type": 8 + }, + "Z": { + "field": "m_vecZ", + "type": 8 + } + }, + "CNetworkViewOffsetVector": { + "X": { + "field": "m_vecX", + "type": 8 + }, + "Y": { + "field": "m_vecY", + "type": 8 + }, + "Z": { + "field": "m_vecZ", + "type": 8 + } + }, + "CNetworkedSequenceOperation": { + "Sequence": { + "field": "m_hSequence", + "type": 2 + }, + "PrevCycle": { + "field": "m_flPrevCycle", + "type": 8 + }, + "Cycle": { + "field": "m_flCycle", + "type": 8 + }, + "Weight": { + "field": "m_flWeight", + "type": 8 + }, + "SequenceChangeNetworked": { + "field": "m_bSequenceChangeNetworked", + "type": 10 + }, + "Discontinuity": { + "field": "m_bDiscontinuity", + "type": 10 + }, + "PrevCycleFromDiscontinuity": { + "field": "m_flPrevCycleFromDiscontinuity", + "type": 8 + }, + "PrevCycleForAnimEventDetection": { + "field": "m_flPrevCycleForAnimEventDetection", + "type": 8 + } + }, + "CPathSimple": { + "PathString": { + "field": "m_pathString", + "type": 14 + }, + "Parent": { + "field": "CBaseEntity", + "type": 11 + } + }, + "CPathSimpleAPI": {}, + "CPlayerControllerComponent": { + "__pChainEntity": { + "field": "__m_pChainEntity", + "classname": "CNetworkVarChainer", + "type": 16 + } + }, + "CPlayerPawnComponent": { + "__pChainEntity": { + "field": "__m_pChainEntity", + "classname": "CNetworkVarChainer", + "type": 16 + } + }, + "CPlayerSprayDecalRenderHelper": {}, + "CPlayer_AutoaimServices": { + "Parent": { + "field": "CPlayerPawnComponent", + "type": 11 + } + }, + "CPlayer_CameraServices": { + "CsViewPunchAngle": { + "field": "m_vecCsViewPunchAngle", + "type": 20 + }, + "CsViewPunchAngleTick": { + "field": "m_nCsViewPunchAngleTick", + "type": 2 + }, + "CsViewPunchAngleTickRatio": { + "field": "m_flCsViewPunchAngleTickRatio", + "type": 8 + }, + "PlayerFog": { + "field": "m_PlayerFog", + "classname": "fogplayerparams_t", + "type": 16 + }, + "ColorCorrectionCtrl": { + "field": "m_hColorCorrectionCtrl", + "type": 17, + "classname": "CColorCorrection" + }, + "ViewEntity": { + "field": "m_hViewEntity", + "type": 17, + "classname": "CBaseEntity" + }, + "TonemapController": { + "field": "m_hTonemapController", + "type": 17, + "classname": "CTonemapController2" + }, + "Audio": { + "field": "m_audio", + "classname": "audioparams_t", + "type": 16 + }, + "OldPlayerZ": { + "field": "m_flOldPlayerZ", + "type": 8 + }, + "OldPlayerViewOffsetZ": { + "field": "m_flOldPlayerViewOffsetZ", + "type": 8 + }, + "Parent": { + "field": "CPlayerPawnComponent", + "type": 11 + } + }, + "CPlayer_FlashlightServices": { + "Parent": { + "field": "CPlayerPawnComponent", + "type": 11 + } + }, + "CPlayer_ItemServices": { + "Parent": { + "field": "CPlayerPawnComponent", + "type": 11 + } + }, + "CPlayer_MovementServices": { + "Impulse": { + "field": "m_nImpulse", + "type": 2 + }, + "Buttons": { + "field": "m_nButtons", + "classname": "CInButtonState", + "type": 16 + }, + "QueuedButtonDownMask": { + "field": "m_nQueuedButtonDownMask", + "type": 7 + }, + "QueuedButtonChangeMask": { + "field": "m_nQueuedButtonChangeMask", + "type": 7 + }, + "ButtonDoublePressed": { + "field": "m_nButtonDoublePressed", + "type": 7 + }, + "ButtonPressedCmdNumber": { + "field": "m_pButtonPressedCmdNumber", + "type": 35, + "size": 64 + }, + "LastCommandNumberProcessed": { + "field": "m_nLastCommandNumberProcessed", + "type": 6 + }, + "ToggleButtonDownMask": { + "field": "m_nToggleButtonDownMask", + "type": 7 + }, + "Maxspeed": { + "field": "m_flMaxspeed", + "type": 8 + }, + "ForceSubtickMoveWhen": { + "field": "m_arrForceSubtickMoveWhen", + "type": 37, + "size": 4 + }, + "ForwardMove": { + "field": "m_flForwardMove", + "type": 8 + }, + "LeftMove": { + "field": "m_flLeftMove", + "type": 8 + }, + "UpMove": { + "field": "m_flUpMove", + "type": 8 + }, + "LastMovementImpulses": { + "field": "m_vecLastMovementImpulses", + "type": 21 + }, + "OldViewAngles": { + "field": "m_vecOldViewAngles", + "type": 20 + }, + "Parent": { + "field": "CPlayerPawnComponent", + "type": 11 + } + }, + "CPlayer_MovementServices_Humanoid": { + "StepSoundTime": { + "field": "m_flStepSoundTime", + "type": 8 + }, + "FallVelocity": { + "field": "m_flFallVelocity", + "type": 8 + }, + "InCrouch": { + "field": "m_bInCrouch", + "type": 10 + }, + "CrouchState": { + "field": "m_nCrouchState", + "type": 6 + }, + "CrouchTransitionStartTime": { + "field": "m_flCrouchTransitionStartTime", + "type": 8 + }, + "Ducked": { + "field": "m_bDucked", + "type": 10 + }, + "Ducking": { + "field": "m_bDucking", + "type": 10 + }, + "InDuckJump": { + "field": "m_bInDuckJump", + "type": 10 + }, + "GroundNormal": { + "field": "m_groundNormal", + "type": 21 + }, + "SurfaceFriction": { + "field": "m_flSurfaceFriction", + "type": 8 + }, + "SurfaceProps": { + "field": "m_surfaceProps", + "type": 12 + }, + "Stepside": { + "field": "m_nStepside", + "type": 2 + }, + "TargetVolume": { + "field": "m_iTargetVolume", + "type": 2 + }, + "SmoothedVelocity": { + "field": "m_vecSmoothedVelocity", + "type": 21 + }, + "Parent": { + "field": "CPlayer_MovementServices", + "type": 11 + } + }, + "CPlayer_ObserverServices": { + "ObserverMode": { + "field": "m_iObserverMode", + "type": 4 + }, + "ObserverTarget": { + "field": "m_hObserverTarget", + "type": 17, + "classname": "CBaseEntity" + }, + "ObserverLastMode": { + "field": "m_iObserverLastMode", + "type": 6 + }, + "ForcedObserverMode": { + "field": "m_bForcedObserverMode", + "type": 10 + }, + "Parent": { + "field": "CPlayerPawnComponent", + "type": 11 + } + }, + "CPlayer_UseServices": { + "Parent": { + "field": "CPlayerPawnComponent", + "type": 11 + } + }, + "CPlayer_ViewModelServices": { + "Parent": { + "field": "CPlayerPawnComponent", + "type": 11 + } + }, + "CPlayer_WaterServices": { + "Parent": { + "field": "CPlayerPawnComponent", + "type": 11 + } + }, + "CPlayer_WeaponServices": { + "ActiveWeapon": { + "field": "m_hActiveWeapon", + "type": 17, + "classname": "CBasePlayerWeapon" + }, + "LastWeapon": { + "field": "m_hLastWeapon", + "type": 17, + "classname": "CBasePlayerWeapon" + }, + "Ammo": { + "field": "m_iAmmo", + "type": 34, + "size": 32 + }, + "PreventWeaponPickup": { + "field": "m_bPreventWeaponPickup", + "type": 10 + }, + "Parent": { + "field": "CPlayerPawnComponent", + "type": 11 + } + }, + "CPointChildModifier": { + "OrphanInsteadOfDeletingChildrenOnRemove": { + "field": "m_bOrphanInsteadOfDeletingChildrenOnRemove", + "type": 10 + }, + "Parent": { + "field": "CPointEntity", + "type": 11 + } + }, + "CPointOffScreenIndicatorUi": { + "BeenEnabled": { + "field": "m_bBeenEnabled", + "type": 10 + }, + "Hide": { + "field": "m_bHide", + "type": 10 + }, + "SeenTargetTime": { + "field": "m_flSeenTargetTime", + "type": 8 + }, + "Parent": { + "field": "C_PointClientUIWorldPanel", + "type": 11 + } + }, + "CPointTemplate": { + "WorldName": { + "field": "m_iszWorldName", + "type": 13 + }, + "Source2EntityLumpName": { + "field": "m_iszSource2EntityLumpName", + "type": 13 + }, + "EntityFilterName": { + "field": "m_iszEntityFilterName", + "type": 13 + }, + "TimeoutInterval": { + "field": "m_flTimeoutInterval", + "type": 8 + }, + "AsynchronouslySpawnEntities": { + "field": "m_bAsynchronouslySpawnEntities", + "type": 10 + }, + "OutputOnSpawned": { + "field": "m_pOutputOnSpawned", + "classname": "CEntityIOOutput", + "type": 16 + }, + "ClientOnlyEntityBehavior": { + "field": "m_clientOnlyEntityBehavior", + "type": 6 + }, + "OwnerSpawnGroupType": { + "field": "m_ownerSpawnGroupType", + "type": 6 + }, + "CreatedSpawnGroupHandles": { + "field": "m_createdSpawnGroupHandles", + "type": 57 + }, + "Parent": { + "field": "CLogicalEntity", + "type": 11 + } + }, + "CPointTemplateAPI": {}, + "CPrecipitationVData": { + "InnerDistance": { + "field": "m_flInnerDistance", + "type": 8 + }, + "AttachType": { + "field": "m_nAttachType", + "type": 6 + }, + "BatchSameVolumeType": { + "field": "m_bBatchSameVolumeType", + "type": 10 + }, + "RTEnvCP": { + "field": "m_nRTEnvCP", + "type": 2 + }, + "RTEnvCPComponent": { + "field": "m_nRTEnvCPComponent", + "type": 2 + }, + "Modifier": { + "field": "m_szModifier", + "type": 14 + }, + "Parent": { + "field": "CEntitySubclassVDataBase", + "type": 11 + } + }, + "CProjectedTextureBase": { + "TargetEntity": { + "field": "m_hTargetEntity", + "type": 17, + "classname": "CBaseEntity" + }, + "State": { + "field": "m_bState", + "type": 10 + }, + "AlwaysUpdate": { + "field": "m_bAlwaysUpdate", + "type": 10 + }, + "LightFOV": { + "field": "m_flLightFOV", + "type": 8 + }, + "EnableShadows": { + "field": "m_bEnableShadows", + "type": 10 + }, + "SimpleProjection": { + "field": "m_bSimpleProjection", + "type": 10 + }, + "LightOnlyTarget": { + "field": "m_bLightOnlyTarget", + "type": 10 + }, + "LightWorld": { + "field": "m_bLightWorld", + "type": 10 + }, + "CameraSpace": { + "field": "m_bCameraSpace", + "type": 10 + }, + "BrightnessScale": { + "field": "m_flBrightnessScale", + "type": 8 + }, + "LightColor": { + "field": "m_LightColor", + "type": 19 + }, + "Intensity": { + "field": "m_flIntensity", + "type": 8 + }, + "LinearAttenuation": { + "field": "m_flLinearAttenuation", + "type": 8 + }, + "QuadraticAttenuation": { + "field": "m_flQuadraticAttenuation", + "type": 8 + }, + "Volumetric": { + "field": "m_bVolumetric", + "type": 10 + }, + "VolumetricIntensity": { + "field": "m_flVolumetricIntensity", + "type": 8 + }, + "NoiseStrength": { + "field": "m_flNoiseStrength", + "type": 8 + }, + "FlashlightTime": { + "field": "m_flFlashlightTime", + "type": 8 + }, + "NumPlanes": { + "field": "m_nNumPlanes", + "type": 6 + }, + "PlaneOffset": { + "field": "m_flPlaneOffset", + "type": 8 + }, + "ColorTransitionTime": { + "field": "m_flColorTransitionTime", + "type": 8 + }, + "Ambient": { + "field": "m_flAmbient", + "type": 8 + }, + "SpotlightTextureName": { + "field": "m_SpotlightTextureName", + "type": 15, + "size": 512 + }, + "SpotlightTextureFrame": { + "field": "m_nSpotlightTextureFrame", + "type": 2 + }, + "ShadowQuality": { + "field": "m_nShadowQuality", + "type": 6 + }, + "NearZ": { + "field": "m_flNearZ", + "type": 8 + }, + "FarZ": { + "field": "m_flFarZ", + "type": 8 + }, + "ProjectionSize": { + "field": "m_flProjectionSize", + "type": 8 + }, + "Rotation": { + "field": "m_flRotation", + "type": 8 + }, + "FlipHorizontal": { + "field": "m_bFlipHorizontal", + "type": 10 + } + }, + "CPropDataComponent": { + "DmgModBullet": { + "field": "m_flDmgModBullet", + "type": 8 + }, + "DmgModClub": { + "field": "m_flDmgModClub", + "type": 8 + }, + "DmgModExplosive": { + "field": "m_flDmgModExplosive", + "type": 8 + }, + "DmgModFire": { + "field": "m_flDmgModFire", + "type": 8 + }, + "PhysicsDamageTableName": { + "field": "m_iszPhysicsDamageTableName", + "type": 13 + }, + "BasePropData": { + "field": "m_iszBasePropData", + "type": 13 + }, + "Interactions": { + "field": "m_nInteractions", + "type": 2 + }, + "SpawnMotionDisabled": { + "field": "m_bSpawnMotionDisabled", + "type": 10 + }, + "DisableTakePhysicsDamageSpawnFlag": { + "field": "m_nDisableTakePhysicsDamageSpawnFlag", + "type": 2 + }, + "MotionDisabledSpawnFlag": { + "field": "m_nMotionDisabledSpawnFlag", + "type": 2 + }, + "Parent": { + "field": "CEntityComponent", + "type": 11 + } + }, + "CRagdollManager": { + "CurrentMaxRagdollCount": { + "field": "m_iCurrentMaxRagdollCount", + "type": 0 + }, + "MaxRagdollCount": { + "field": "m_iMaxRagdollCount", + "type": 2 + }, + "SaveImportant": { + "field": "m_bSaveImportant", + "type": 10 + }, + "CanTakeDamage": { + "field": "m_bCanTakeDamage", + "type": 10 + }, + "Parent": { + "field": "CBaseEntity", + "type": 11 + } + }, + "CRandSimTimer": { + "MinInterval": { + "field": "m_minInterval", + "type": 8 + }, + "MaxInterval": { + "field": "m_maxInterval", + "type": 8 + }, + "Parent": { + "field": "CSimpleSimTimer", + "type": 11 + } + }, + "CRandStopwatch": { + "MinInterval": { + "field": "m_minInterval", + "type": 8 + }, + "MaxInterval": { + "field": "m_maxInterval", + "type": 8 + }, + "Parent": { + "field": "CStopwatchBase", + "type": 11 + } + }, + "CRemapFloat": { + "Value": { + "field": "m_pValue", + "type": 37, + "size": 4 + } + }, + "CRenderComponent": { + "__pChainEntity": { + "field": "__m_pChainEntity", + "classname": "CNetworkVarChainer", + "type": 16 + }, + "IsRenderingWithViewModels": { + "field": "m_bIsRenderingWithViewModels", + "type": 10 + }, + "SplitscreenFlags": { + "field": "m_nSplitscreenFlags", + "type": 6 + }, + "EnableRendering": { + "field": "m_bEnableRendering", + "type": 10 + }, + "InterpolationReadyToDraw": { + "field": "m_bInterpolationReadyToDraw", + "type": 10 + }, + "Parent": { + "field": "CEntityComponent", + "type": 11 + } + }, + "CResponseCriteriaSet": { + "NumPrefixedContexts": { + "field": "m_nNumPrefixedContexts", + "type": 2 + }, + "OverrideOnAppend": { + "field": "m_bOverrideOnAppend", + "type": 10 + } + }, + "CRopeOverlapHit": { + "Entity": { + "field": "m_hEntity", + "type": 17, + "classname": "CBaseEntity" + }, + "OverlappingLinks": { + "field": "m_vecOverlappingLinks", + "type": 53 + } + }, + "CSMatchStats_t": { + "Enemy5Ks": { + "field": "m_iEnemy5Ks", + "type": 2 + }, + "Enemy4Ks": { + "field": "m_iEnemy4Ks", + "type": 2 + }, + "Enemy3Ks": { + "field": "m_iEnemy3Ks", + "type": 2 + }, + "EnemyKnifeKills": { + "field": "m_iEnemyKnifeKills", + "type": 2 + }, + "EnemyTaserKills": { + "field": "m_iEnemyTaserKills", + "type": 2 + }, + "Enemy2Ks": { + "field": "m_iEnemy2Ks", + "type": 2 + }, + "Utility_Count": { + "field": "m_iUtility_Count", + "type": 2 + }, + "Utility_Successes": { + "field": "m_iUtility_Successes", + "type": 2 + }, + "Utility_Enemies": { + "field": "m_iUtility_Enemies", + "type": 2 + }, + "Flash_Count": { + "field": "m_iFlash_Count", + "type": 2 + }, + "Flash_Successes": { + "field": "m_iFlash_Successes", + "type": 2 + }, + "HealthPointsRemovedTotal": { + "field": "m_nHealthPointsRemovedTotal", + "type": 2 + }, + "HealthPointsDealtTotal": { + "field": "m_nHealthPointsDealtTotal", + "type": 2 + }, + "ShotsFiredTotal": { + "field": "m_nShotsFiredTotal", + "type": 2 + }, + "ShotsOnTargetTotal": { + "field": "m_nShotsOnTargetTotal", + "type": 2 + }, + "1v1Count": { + "field": "m_i1v1Count", + "type": 2 + }, + "1v1Wins": { + "field": "m_i1v1Wins", + "type": 2 + }, + "1v2Count": { + "field": "m_i1v2Count", + "type": 2 + }, + "1v2Wins": { + "field": "m_i1v2Wins", + "type": 2 + }, + "EntryCount": { + "field": "m_iEntryCount", + "type": 2 + }, + "EntryWins": { + "field": "m_iEntryWins", + "type": 2 + }, + "Parent": { + "field": "CSPerRoundStats_t", + "type": 11 + } + }, + "CSPerRoundStats_t": { + "Kills": { + "field": "m_iKills", + "type": 2 + }, + "Deaths": { + "field": "m_iDeaths", + "type": 2 + }, + "Assists": { + "field": "m_iAssists", + "type": 2 + }, + "Damage": { + "field": "m_iDamage", + "type": 2 + }, + "EquipmentValue": { + "field": "m_iEquipmentValue", + "type": 2 + }, + "MoneySaved": { + "field": "m_iMoneySaved", + "type": 2 + }, + "KillReward": { + "field": "m_iKillReward", + "type": 2 + }, + "LiveTime": { + "field": "m_iLiveTime", + "type": 2 + }, + "HeadShotKills": { + "field": "m_iHeadShotKills", + "type": 2 + }, + "Objective": { + "field": "m_iObjective", + "type": 2 + }, + "CashEarned": { + "field": "m_iCashEarned", + "type": 2 + }, + "UtilityDamage": { + "field": "m_iUtilityDamage", + "type": 2 + }, + "EnemiesFlashed": { + "field": "m_iEnemiesFlashed", + "type": 2 + } + }, + "CSceneEventInfo": { + "Layer": { + "field": "m_iLayer", + "type": 2 + }, + "Priority": { + "field": "m_iPriority", + "type": 2 + }, + "Sequence": { + "field": "m_hSequence", + "type": 2 + }, + "Weight": { + "field": "m_flWeight", + "type": 8 + }, + "HasArrived": { + "field": "m_bHasArrived", + "type": 10 + }, + "Type": { + "field": "m_nType", + "type": 2 + }, + "Next": { + "field": "m_flNext", + "type": 8 + }, + "IsGesture": { + "field": "m_bIsGesture", + "type": 10 + }, + "ShouldRemove": { + "field": "m_bShouldRemove", + "type": 10 + }, + "Target": { + "field": "m_hTarget", + "type": 17, + "classname": "CBaseEntity" + }, + "SceneEventId": { + "field": "m_nSceneEventId", + "classname": "SceneEventId_t", + "type": 16 + }, + "ClientSide": { + "field": "m_bClientSide", + "type": 10 + }, + "Started": { + "field": "m_bStarted", + "type": 10 + } + }, + "CScriptUniformRandomStream": { + "InitialSeed": { + "field": "m_nInitialSeed", + "type": 2 + } + }, + "CServerOnlyModelEntity": { + "Parent": { + "field": "CBaseModelEntity", + "type": 11 + } + }, + "CSharedGapTypeQueryRegistration": {}, + "CSimTimer": { + "Interval": { + "field": "m_interval", + "type": 8 + }, + "Parent": { + "field": "CSimpleSimTimer", + "type": 11 + } + }, + "CSimpleSimTimer": { + "Next": { + "field": "m_next", + "type": 8 + }, + "WorldGroupId": { + "field": "m_nWorldGroupId", + "type": 12 + } + }, + "CSimpleStopwatch": { + "Parent": { + "field": "CStopwatchBase", + "type": 11 + } + }, + "CSkeletonAnimationController": { + "SkeletonInstance": { + "field": "m_pSkeletonInstance", + "classname": "CSkeletonInstance", + "type": 24 + }, + "Parent": { + "field": "ISkeletonAnimationController", + "type": 11 + } + }, + "CSkeletonInstance": { + "ModelState": { + "field": "m_modelState", + "classname": "CModelState", + "type": 16 + }, + "IsAnimationEnabled": { + "field": "m_bIsAnimationEnabled", + "type": 10 + }, + "UseParentRenderBounds": { + "field": "m_bUseParentRenderBounds", + "type": 10 + }, + "DisableSolidCollisionsForHierarchy": { + "field": "m_bDisableSolidCollisionsForHierarchy", + "type": 10 + }, + "MaterialGroup": { + "field": "m_materialGroup", + "type": 12 + }, + "HitboxSet": { + "field": "m_nHitboxSet", + "type": 4 + }, + "Parent": { + "field": "CGameSceneNode", + "type": 11 + } + }, + "CSkillDamage": { + "Damage": { + "field": "m_flDamage", + "classname": "CSkillFloat", + "type": 16 + }, + "NPCDamageScalarVsNPC": { + "field": "m_flNPCDamageScalarVsNPC", + "type": 8 + }, + "PhysicsForceDamage": { + "field": "m_flPhysicsForceDamage", + "type": 8 + } + }, + "CSkillFloat": { + "Value": { + "field": "m_pValue", + "type": 37, + "size": 4 + } + }, + "CSkillInt": { + "Value": { + "field": "m_pValue", + "type": 31, + "size": 4 + } + }, + "CSkyboxReference": { + "WorldGroupId": { + "field": "m_worldGroupId", + "type": 12 + }, + "SkyCamera": { + "field": "m_hSkyCamera", + "type": 17, + "classname": "CSkyCamera" + }, + "Parent": { + "field": "CBaseEntity", + "type": 11 + } + }, + "CSoundEnvelope": { + "Current": { + "field": "m_current", + "type": 8 + }, + "Target": { + "field": "m_target", + "type": 8 + }, + "Rate": { + "field": "m_rate", + "type": 8 + }, + "Forceupdate": { + "field": "m_forceupdate", + "type": 10 + } + }, + "CSoundPatch": { + "Pitch": { + "field": "m_pitch", + "classname": "CSoundEnvelope", + "type": 16 + }, + "Volume": { + "field": "m_volume", + "classname": "CSoundEnvelope", + "type": 16 + }, + "ShutdownTime": { + "field": "m_shutdownTime", + "type": 8 + }, + "LastTime": { + "field": "m_flLastTime", + "type": 8 + }, + "SoundScriptName": { + "field": "m_iszSoundScriptName", + "type": 13 + }, + "Ent": { + "field": "m_hEnt", + "type": 17, + "classname": "CBaseEntity" + }, + "SoundEntityIndex": { + "field": "m_soundEntityIndex", + "type": 2 + }, + "SoundOrigin": { + "field": "m_soundOrigin", + "type": 21 + }, + "IsPlaying": { + "field": "m_isPlaying", + "type": 2 + }, + "Filter": { + "field": "m_Filter", + "classname": "CCopyRecipientFilter", + "type": 16 + }, + "CloseCaptionDuration": { + "field": "m_flCloseCaptionDuration", + "type": 8 + }, + "UpdatedSoundOrigin": { + "field": "m_bUpdatedSoundOrigin", + "type": 10 + }, + "ClassName": { + "field": "m_iszClassName", + "type": 13 + } + }, + "CSpriteOriented": { + "Parent": { + "field": "CSprite", + "type": 11 + } + }, + "CStopwatch": { + "Interval": { + "field": "m_interval", + "type": 8 + }, + "Parent": { + "field": "CStopwatchBase", + "type": 11 + } + }, + "CStopwatchBase": { + "IsRunning": { + "field": "m_fIsRunning", + "type": 10 + }, + "Parent": { + "field": "CSimpleSimTimer", + "type": 11 + } + }, + "CTablet": { + "Parent": { + "field": "CCSWeaponBase", + "type": 11 + } + }, + "CTakeDamageInfo": { + "DamageForce": { + "field": "m_vecDamageForce", + "type": 21 + }, + "DamagePosition": { + "field": "m_vecDamagePosition", + "type": 21 + }, + "ReportedPosition": { + "field": "m_vecReportedPosition", + "type": 21 + }, + "DamageDirection": { + "field": "m_vecDamageDirection", + "type": 21 + }, + "Inflictor": { + "field": "m_hInflictor", + "type": 17, + "classname": "CBaseEntity" + }, + "Attacker": { + "field": "m_hAttacker", + "type": 17, + "classname": "CBaseEntity" + }, + "Ability": { + "field": "m_hAbility", + "type": 17, + "classname": "CBaseEntity" + }, + "Damage": { + "field": "m_flDamage", + "type": 8 + }, + "TotalledDamage": { + "field": "m_flTotalledDamage", + "type": 8 + }, + "TotalledDamageAbsorbed": { + "field": "m_flTotalledDamageAbsorbed", + "type": 8 + }, + "BitsDamageType": { + "field": "m_bitsDamageType", + "type": 6 + }, + "DamageCustom": { + "field": "m_iDamageCustom", + "type": 2 + }, + "AmmoType": { + "field": "m_iAmmoType", + "type": 6 + }, + "OriginalDamage": { + "field": "m_flOriginalDamage", + "type": 8 + }, + "ShouldBleed": { + "field": "m_bShouldBleed", + "type": 10 + }, + "ShouldSpark": { + "field": "m_bShouldSpark", + "type": 10 + }, + "DamageAbsorbed": { + "field": "m_flDamageAbsorbed", + "type": 8 + }, + "DamageFlags": { + "field": "m_nDamageFlags", + "type": 7 + }, + "NumObjectsPenetrated": { + "field": "m_nNumObjectsPenetrated", + "type": 2 + }, + "FriendlyFireDamageReductionRatio": { + "field": "m_flFriendlyFireDamageReductionRatio", + "type": 8 + }, + "InTakeDamageFlow": { + "field": "m_bInTakeDamageFlow", + "type": 10 + } + }, + "CTakeDamageInfoAPI": {}, + "CTakeDamageResult": { + "OriginatingInfo": { + "field": "m_pOriginatingInfo", + "classname": "CTakeDamageInfo", + "type": 24 + }, + "HealthLost": { + "field": "m_nHealthLost", + "type": 2 + }, + "DamageTaken": { + "field": "m_nDamageTaken", + "type": 2 + }, + "TotalledHealthLost": { + "field": "m_nTotalledHealthLost", + "type": 2 + }, + "TotalledDamageTaken": { + "field": "m_nTotalledDamageTaken", + "type": 2 + }, + "TotalledDamageAbsorbed": { + "field": "m_flTotalledDamageAbsorbed", + "type": 8 + } + }, + "CTakeDamageSummaryScopeGuard": {}, + "CTimeline": { + "Values": { + "field": "m_flValues", + "type": 37, + "size": 64 + }, + "ValueCounts": { + "field": "m_nValueCounts", + "type": 31, + "size": 64 + }, + "BucketCount": { + "field": "m_nBucketCount", + "type": 2 + }, + "Interval": { + "field": "m_flInterval", + "type": 8 + }, + "FinalValue": { + "field": "m_flFinalValue", + "type": 8 + }, + "CompressionType": { + "field": "m_nCompressionType", + "type": 6 + }, + "Stopped": { + "field": "m_bStopped", + "type": 10 + }, + "Parent": { + "field": "IntervalTimer", + "type": 11 + } + }, + "CTripWireFire": { + "Parent": { + "field": "CBaseCSGrenade", + "type": 11 + } + }, + "CTripWireFireProjectile": { + "Parent": { + "field": "CBaseGrenade", + "type": 11 + } + }, + "CWaterSplasher": { + "Parent": { + "field": "C_BaseModelEntity", + "type": 11 + } + }, + "CWeaponZoneRepulsor": { + "Parent": { + "field": "CCSWeaponBaseGun", + "type": 11 + } + }, + "CWorldCompositionChunkReferenceElement_t": { + "StrMapToLoad": { + "field": "m_strMapToLoad", + "type": 14 + }, + "StrLandmarkName": { + "field": "m_strLandmarkName", + "type": 14 + } + }, + "CommandToolCommand_t": { + "Enabled": { + "field": "m_bEnabled", + "type": 10 + }, + "Opened": { + "field": "m_bOpened", + "type": 10 + }, + "InternalId": { + "field": "m_InternalId", + "type": 6 + }, + "ShortName": { + "field": "m_ShortName", + "type": 14 + }, + "ExecMode": { + "field": "m_ExecMode", + "type": 6 + }, + "SpawnGroup": { + "field": "m_SpawnGroup", + "type": 14 + }, + "PeriodicExecDelay": { + "field": "m_PeriodicExecDelay", + "type": 8 + }, + "SpecType": { + "field": "m_SpecType", + "type": 6 + }, + "EntitySpec": { + "field": "m_EntitySpec", + "type": 14 + }, + "Commands": { + "field": "m_Commands", + "type": 14 + }, + "SetDebugBits": { + "field": "m_SetDebugBits", + "type": 7 + }, + "ClearDebugBits": { + "field": "m_ClearDebugBits", + "type": 7 + } + }, + "CompMatMutatorCondition_t": { + "MutatorCondition": { + "field": "m_nMutatorCondition", + "type": 6 + }, + "StrMutatorConditionContainerName": { + "field": "m_strMutatorConditionContainerName", + "type": 14 + }, + "StrMutatorConditionContainerVarName": { + "field": "m_strMutatorConditionContainerVarName", + "type": 14 + }, + "StrMutatorConditionContainerVarValue": { + "field": "m_strMutatorConditionContainerVarValue", + "type": 14 + }, + "PassWhenTrue": { + "field": "m_bPassWhenTrue", + "type": 10 + } + }, + "CompMatPropertyMutator_t": { + "Enabled": { + "field": "m_bEnabled", + "type": 10 + }, + "MutatorCommandType": { + "field": "m_nMutatorCommandType", + "type": 6 + }, + "StrInitWith_Container": { + "field": "m_strInitWith_Container", + "type": 14 + }, + "StrCopyProperty_InputContainerSrc": { + "field": "m_strCopyProperty_InputContainerSrc", + "type": 14 + }, + "StrCopyProperty_InputContainerProperty": { + "field": "m_strCopyProperty_InputContainerProperty", + "type": 14 + }, + "StrCopyProperty_TargetProperty": { + "field": "m_strCopyProperty_TargetProperty", + "type": 14 + }, + "StrRandomRollInputVars_SeedInputVar": { + "field": "m_strRandomRollInputVars_SeedInputVar", + "type": 14 + }, + "RandomRollInputVars_InputVarsToRoll": { + "field": "m_vecRandomRollInputVars_InputVarsToRoll", + "type": 50 + }, + "StrCopyMatchingKeys_InputContainerSrc": { + "field": "m_strCopyMatchingKeys_InputContainerSrc", + "type": 14 + }, + "StrCopyKeysWithSuffix_InputContainerSrc": { + "field": "m_strCopyKeysWithSuffix_InputContainerSrc", + "type": 14 + }, + "StrCopyKeysWithSuffix_FindSuffix": { + "field": "m_strCopyKeysWithSuffix_FindSuffix", + "type": 14 + }, + "StrCopyKeysWithSuffix_ReplaceSuffix": { + "field": "m_strCopyKeysWithSuffix_ReplaceSuffix", + "type": 14 + }, + "SetValue_Value": { + "field": "m_nSetValue_Value", + "classname": "CompositeMaterialInputLooseVariable_t", + "type": 16 + }, + "StrGenerateTexture_TargetParam": { + "field": "m_strGenerateTexture_TargetParam", + "type": 14 + }, + "StrGenerateTexture_InitialContainer": { + "field": "m_strGenerateTexture_InitialContainer", + "type": 14 + }, + "Resolution": { + "field": "m_nResolution", + "type": 2 + }, + "IsScratchTarget": { + "field": "m_bIsScratchTarget", + "type": 10 + }, + "SplatDebugInfo": { + "field": "m_bSplatDebugInfo", + "type": 10 + }, + "CaptureInRenderDoc": { + "field": "m_bCaptureInRenderDoc", + "type": 10 + }, + "StrPopInputQueue_Container": { + "field": "m_strPopInputQueue_Container", + "type": 14 + }, + "StrDrawText_InputContainerSrc": { + "field": "m_strDrawText_InputContainerSrc", + "type": 14 + }, + "StrDrawText_InputContainerProperty": { + "field": "m_strDrawText_InputContainerProperty", + "type": 14 + }, + "DrawText_Position": { + "field": "m_vecDrawText_Position", + "type": 22 + }, + "ColDrawText_Color": { + "field": "m_colDrawText_Color", + "type": 19 + }, + "StrDrawText_Font": { + "field": "m_strDrawText_Font", + "type": 14 + } + }, + "CompositeMaterialAssemblyProcedure_t": {}, + "CompositeMaterialEditorPoint_t": { + "SequenceIndex": { + "field": "m_nSequenceIndex", + "type": 2 + }, + "Cycle": { + "field": "m_flCycle", + "type": 8 + }, + "EnableChildModel": { + "field": "m_bEnableChildModel", + "type": 10 + } + }, + "CompositeMaterialInputContainer_t": { + "Enabled": { + "field": "m_bEnabled", + "type": 10 + }, + "CompositeMaterialInputContainerSourceType": { + "field": "m_nCompositeMaterialInputContainerSourceType", + "type": 6 + }, + "StrAttrName": { + "field": "m_strAttrName", + "type": 14 + }, + "StrAlias": { + "field": "m_strAlias", + "type": 14 + }, + "StrAttrNameForVar": { + "field": "m_strAttrNameForVar", + "type": 14 + }, + "ExposeExternally": { + "field": "m_bExposeExternally", + "type": 10 + } + }, + "CompositeMaterialInputLooseVariable_t": { + "StrName": { + "field": "m_strName", + "type": 14 + }, + "ExposeExternally": { + "field": "m_bExposeExternally", + "type": 10 + }, + "StrExposedFriendlyName": { + "field": "m_strExposedFriendlyName", + "type": 14 + }, + "StrExposedFriendlyGroupName": { + "field": "m_strExposedFriendlyGroupName", + "type": 14 + }, + "ExposedVariableIsFixedRange": { + "field": "m_bExposedVariableIsFixedRange", + "type": 10 + }, + "StrExposedVisibleWhenTrue": { + "field": "m_strExposedVisibleWhenTrue", + "type": 14 + }, + "StrExposedHiddenWhenTrue": { + "field": "m_strExposedHiddenWhenTrue", + "type": 14 + }, + "StrExposedValueList": { + "field": "m_strExposedValueList", + "type": 14 + }, + "VariableType": { + "field": "m_nVariableType", + "type": 6 + }, + "ValueBoolean": { + "field": "m_bValueBoolean", + "type": 10 + }, + "ValueIntX": { + "field": "m_nValueIntX", + "type": 2 + }, + "ValueIntY": { + "field": "m_nValueIntY", + "type": 2 + }, + "ValueIntZ": { + "field": "m_nValueIntZ", + "type": 2 + }, + "ValueIntW": { + "field": "m_nValueIntW", + "type": 2 + }, + "HasFloatBounds": { + "field": "m_bHasFloatBounds", + "type": 10 + }, + "ValueFloatX": { + "field": "m_flValueFloatX", + "type": 8 + }, + "ValueFloatX_Min": { + "field": "m_flValueFloatX_Min", + "type": 8 + }, + "ValueFloatX_Max": { + "field": "m_flValueFloatX_Max", + "type": 8 + }, + "ValueFloatY": { + "field": "m_flValueFloatY", + "type": 8 + }, + "ValueFloatY_Min": { + "field": "m_flValueFloatY_Min", + "type": 8 + }, + "ValueFloatY_Max": { + "field": "m_flValueFloatY_Max", + "type": 8 + }, + "ValueFloatZ": { + "field": "m_flValueFloatZ", + "type": 8 + }, + "ValueFloatZ_Min": { + "field": "m_flValueFloatZ_Min", + "type": 8 + }, + "ValueFloatZ_Max": { + "field": "m_flValueFloatZ_Max", + "type": 8 + }, + "ValueFloatW": { + "field": "m_flValueFloatW", + "type": 8 + }, + "ValueFloatW_Min": { + "field": "m_flValueFloatW_Min", + "type": 8 + }, + "ValueFloatW_Max": { + "field": "m_flValueFloatW_Max", + "type": 8 + }, + "CValueColor4": { + "field": "m_cValueColor4", + "type": 19 + }, + "ValueSystemVar": { + "field": "m_nValueSystemVar", + "type": 6 + }, + "StrTextureContentAssetPath": { + "field": "m_strTextureContentAssetPath", + "type": 14 + }, + "StrTextureCompilationVtexTemplate": { + "field": "m_strTextureCompilationVtexTemplate", + "type": 14 + }, + "TextureType": { + "field": "m_nTextureType", + "type": 6 + }, + "StrString": { + "field": "m_strString", + "type": 14 + }, + "StrPanoramaPanelPath": { + "field": "m_strPanoramaPanelPath", + "type": 14 + }, + "PanoramaRenderRes": { + "field": "m_nPanoramaRenderRes", + "type": 2 + } + }, + "CompositeMaterialMatchFilter_t": { + "CompositeMaterialMatchFilterType": { + "field": "m_nCompositeMaterialMatchFilterType", + "type": 6 + }, + "StrMatchFilter": { + "field": "m_strMatchFilter", + "type": 14 + }, + "StrMatchValue": { + "field": "m_strMatchValue", + "type": 14 + }, + "PassWhenTrue": { + "field": "m_bPassWhenTrue", + "type": 10 + } + }, + "CompositeMaterial_t": {}, + "CountdownTimer": { + "Duration": { + "field": "m_duration", + "type": 8 + }, + "Timestamp": { + "field": "m_timestamp", + "type": 8 + }, + "Timescale": { + "field": "m_timescale", + "type": 8 + }, + "WorldGroupId": { + "field": "m_nWorldGroupId", + "type": 12 + } + }, + "EngineCountdownTimer": { + "Duration": { + "field": "m_duration", + "type": 8 + }, + "Timestamp": { + "field": "m_timestamp", + "type": 8 + }, + "Timescale": { + "field": "m_timescale", + "type": 8 + } + }, + "EngineLoopState_t": { + "PlatWindowWidth": { + "field": "m_nPlatWindowWidth", + "type": 2 + }, + "PlatWindowHeight": { + "field": "m_nPlatWindowHeight", + "type": 2 + }, + "RenderWidth": { + "field": "m_nRenderWidth", + "type": 2 + }, + "RenderHeight": { + "field": "m_nRenderHeight", + "type": 2 + } + }, + "EntityRenderAttribute_t": { + "ID": { + "field": "m_ID", + "type": 12 + }, + "Values": { + "field": "m_Values", + "type": 23 + } + }, + "EntitySpottedState_t": { + "Spotted": { + "field": "m_bSpotted", + "type": 10 + }, + "SpottedByMask": { + "field": "m_bSpottedByMask", + "type": 35, + "size": 2 + } + }, + "EventAdvanceTick_t": { + "CurrentTick": { + "field": "m_nCurrentTick", + "type": 2 + }, + "CurrentTickThisFrame": { + "field": "m_nCurrentTickThisFrame", + "type": 2 + }, + "TotalTicksThisFrame": { + "field": "m_nTotalTicksThisFrame", + "type": 2 + }, + "TotalTicks": { + "field": "m_nTotalTicks", + "type": 2 + }, + "Parent": { + "field": "EventSimulate_t", + "type": 11 + } + }, + "EventAppShutdown_t": { + "Dummy0": { + "field": "m_nDummy0", + "type": 2 + } + }, + "EventClientAdvanceNonRenderedFrame_t": {}, + "EventClientAdvanceTick_t": { + "Parent": { + "field": "EventAdvanceTick_t", + "type": 11 + } + }, + "EventClientFrameSimulate_t": { + "LoopState": { + "field": "m_LoopState", + "classname": "EngineLoopState_t", + "type": 16 + }, + "RealTime": { + "field": "m_flRealTime", + "type": 8 + }, + "FrameTime": { + "field": "m_flFrameTime", + "type": 8 + }, + "ScheduleSendTickPacket": { + "field": "m_bScheduleSendTickPacket", + "type": 10 + } + }, + "EventClientOutput_t": { + "LoopState": { + "field": "m_LoopState", + "classname": "EngineLoopState_t", + "type": 16 + }, + "RenderTime": { + "field": "m_flRenderTime", + "type": 8 + }, + "RealTime": { + "field": "m_flRealTime", + "type": 8 + }, + "RenderFrameTimeUnbounded": { + "field": "m_flRenderFrameTimeUnbounded", + "type": 8 + }, + "RenderOnly": { + "field": "m_bRenderOnly", + "type": 10 + } + }, + "EventClientPauseSimulate_t": { + "Parent": { + "field": "EventSimulate_t", + "type": 11 + } + }, + "EventClientPollInput_t": { + "LoopState": { + "field": "m_LoopState", + "classname": "EngineLoopState_t", + "type": 16 + }, + "RealTime": { + "field": "m_flRealTime", + "type": 8 + } + }, + "EventClientPollNetworking_t": { + "TickCount": { + "field": "m_nTickCount", + "type": 2 + } + }, + "EventClientPostAdvanceTick_t": { + "Parent": { + "field": "EventPostAdvanceTick_t", + "type": 11 + } + }, + "EventClientPostOutput_t": { + "LoopState": { + "field": "m_LoopState", + "classname": "EngineLoopState_t", + "type": 16 + }, + "RenderTime": { + "field": "m_flRenderTime", + "type": 9 + }, + "RenderFrameTime": { + "field": "m_flRenderFrameTime", + "type": 8 + }, + "RenderFrameTimeUnbounded": { + "field": "m_flRenderFrameTimeUnbounded", + "type": 8 + }, + "RenderOnly": { + "field": "m_bRenderOnly", + "type": 10 + } + }, + "EventClientPostSimulate_t": { + "Parent": { + "field": "EventSimulate_t", + "type": 11 + } + }, + "EventClientPreOutput_t": { + "LoopState": { + "field": "m_LoopState", + "classname": "EngineLoopState_t", + "type": 16 + }, + "RenderTime": { + "field": "m_flRenderTime", + "type": 9 + }, + "RenderFrameTime": { + "field": "m_flRenderFrameTime", + "type": 9 + }, + "RenderFrameTimeUnbounded": { + "field": "m_flRenderFrameTimeUnbounded", + "type": 9 + }, + "RealTime": { + "field": "m_flRealTime", + "type": 8 + }, + "RenderOnly": { + "field": "m_bRenderOnly", + "type": 10 + } + }, + "EventClientPreSimulate_t": { + "Parent": { + "field": "EventSimulate_t", + "type": 11 + } + }, + "EventClientProcessGameInput_t": { + "LoopState": { + "field": "m_LoopState", + "classname": "EngineLoopState_t", + "type": 16 + }, + "RealTime": { + "field": "m_flRealTime", + "type": 8 + }, + "FrameTime": { + "field": "m_flFrameTime", + "type": 8 + } + }, + "EventClientProcessInput_t": { + "LoopState": { + "field": "m_LoopState", + "classname": "EngineLoopState_t", + "type": 16 + }, + "RealTime": { + "field": "m_flRealTime", + "type": 8 + }, + "TickInterval": { + "field": "m_flTickInterval", + "type": 8 + }, + "TickStartTime": { + "field": "m_flTickStartTime", + "type": 9 + } + }, + "EventClientProcessNetworking_t": { + "TickCount": { + "field": "m_nTickCount", + "type": 2 + } + }, + "EventClientSceneSystemThreadStateChange_t": { + "ThreadsActive": { + "field": "m_bThreadsActive", + "type": 10 + } + }, + "EventClientSimulate_t": { + "Parent": { + "field": "EventSimulate_t", + "type": 11 + } + }, + "EventFrameBoundary_t": { + "FrameTime": { + "field": "m_flFrameTime", + "type": 8 + } + }, + "EventModInitialized_t": {}, + "EventPostAdvanceTick_t": { + "CurrentTick": { + "field": "m_nCurrentTick", + "type": 2 + }, + "CurrentTickThisFrame": { + "field": "m_nCurrentTickThisFrame", + "type": 2 + }, + "TotalTicksThisFrame": { + "field": "m_nTotalTicksThisFrame", + "type": 2 + }, + "TotalTicks": { + "field": "m_nTotalTicks", + "type": 2 + }, + "Parent": { + "field": "EventSimulate_t", + "type": 11 + } + }, + "EventPostDataUpdate_t": { + "Count": { + "field": "m_nCount", + "type": 2 + } + }, + "EventPreDataUpdate_t": { + "Count": { + "field": "m_nCount", + "type": 2 + } + }, + "EventProfileStorageAvailable_t": { + "SplitScreenSlot": { + "field": "m_nSplitScreenSlot", + "type": 2 + } + }, + "EventServerAdvanceTick_t": { + "Parent": { + "field": "EventAdvanceTick_t", + "type": 11 + } + }, + "EventServerBeginAsyncPostTickWork_t": { + "Parent": { + "field": "EventPostAdvanceTick_t", + "type": 11 + } + }, + "EventServerEndAsyncPostTickWork_t": {}, + "EventServerPollNetworking_t": { + "Parent": { + "field": "EventSimulate_t", + "type": 11 + } + }, + "EventServerPostAdvanceTick_t": { + "Parent": { + "field": "EventPostAdvanceTick_t", + "type": 11 + } + }, + "EventServerPostSimulate_t": { + "Parent": { + "field": "EventSimulate_t", + "type": 11 + } + }, + "EventServerProcessNetworking_t": { + "Parent": { + "field": "EventSimulate_t", + "type": 11 + } + }, + "EventServerSimulate_t": { + "Parent": { + "field": "EventSimulate_t", + "type": 11 + } + }, + "EventSetTime_t": { + "LoopState": { + "field": "m_LoopState", + "classname": "EngineLoopState_t", + "type": 16 + }, + "ClientOutputFrames": { + "field": "m_nClientOutputFrames", + "type": 2 + }, + "RealTime": { + "field": "m_flRealTime", + "type": 9 + }, + "RenderTime": { + "field": "m_flRenderTime", + "type": 9 + }, + "RenderFrameTime": { + "field": "m_flRenderFrameTime", + "type": 9 + }, + "RenderFrameTimeUnbounded": { + "field": "m_flRenderFrameTimeUnbounded", + "type": 9 + }, + "RenderFrameTimeUnscaled": { + "field": "m_flRenderFrameTimeUnscaled", + "type": 9 + }, + "TickRemainder": { + "field": "m_flTickRemainder", + "type": 9 + } + }, + "EventSimpleLoopFrameUpdate_t": { + "LoopState": { + "field": "m_LoopState", + "classname": "EngineLoopState_t", + "type": 16 + }, + "RealTime": { + "field": "m_flRealTime", + "type": 8 + }, + "FrameTime": { + "field": "m_flFrameTime", + "type": 8 + } + }, + "EventSimulate_t": { + "LoopState": { + "field": "m_LoopState", + "classname": "EngineLoopState_t", + "type": 16 + }, + "FirstTick": { + "field": "m_bFirstTick", + "type": 10 + }, + "LastTick": { + "field": "m_bLastTick", + "type": 10 + } + }, + "EventSplitScreenStateChanged_t": {}, + "GameAmmoTypeInfo_t": { + "BuySize": { + "field": "m_nBuySize", + "type": 2 + }, + "Cost": { + "field": "m_nCost", + "type": 2 + }, + "Parent": { + "field": "AmmoTypeInfo_t", + "type": 11 + } + }, + "GeneratedTextureHandle_t": { + "StrBitmapName": { + "field": "m_strBitmapName", + "type": 14 + } + }, + "HullFlags_t": { + "Hull_Human": { + "field": "m_bHull_Human", + "type": 10 + }, + "Hull_SmallCentered": { + "field": "m_bHull_SmallCentered", + "type": 10 + }, + "Hull_WideHuman": { + "field": "m_bHull_WideHuman", + "type": 10 + }, + "Hull_Tiny": { + "field": "m_bHull_Tiny", + "type": 10 + }, + "Hull_Medium": { + "field": "m_bHull_Medium", + "type": 10 + }, + "Hull_TinyCentered": { + "field": "m_bHull_TinyCentered", + "type": 10 + }, + "Hull_Large": { + "field": "m_bHull_Large", + "type": 10 + }, + "Hull_LargeCentered": { + "field": "m_bHull_LargeCentered", + "type": 10 + }, + "Hull_MediumTall": { + "field": "m_bHull_MediumTall", + "type": 10 + }, + "Hull_Small": { + "field": "m_bHull_Small", + "type": 10 + } + }, + "IChoreoServices": {}, + "IClientAlphaProperty": {}, + "IEconItemInterface": {}, + "IGapHost_GameEntity": {}, + "IHasAttributes": {}, + "IRagdoll": {}, + "ISkeletonAnimationController": {}, + "IntervalTimer": { + "Timestamp": { + "field": "m_timestamp", + "type": 8 + }, + "WorldGroupId": { + "field": "m_nWorldGroupId", + "type": 12 + } + }, + "ModelConfigHandle_t": { + "Value": { + "field": "m_Value", + "type": 6 + } + }, + "ParticleIndex_t": { + "Value": { + "field": "m_Value", + "type": 2 + } + }, + "PhysicsRagdollPose_t": { + "Owner": { + "field": "m_hOwner", + "type": 17, + "classname": "CBaseEntity" + } + }, + "PointCameraSettings_t": { + "NearBlurryDistance": { + "field": "m_flNearBlurryDistance", + "type": 8 + }, + "NearCrispDistance": { + "field": "m_flNearCrispDistance", + "type": 8 + }, + "FarCrispDistance": { + "field": "m_flFarCrispDistance", + "type": 8 + }, + "FarBlurryDistance": { + "field": "m_flFarBlurryDistance", + "type": 8 + } + }, + "PredictedDamageTag_t": { + "TagTick": { + "field": "nTagTick", + "type": 2 + }, + "FlinchModSmall": { + "field": "flFlinchModSmall", + "type": 8 + }, + "FlinchModLarge": { + "field": "flFlinchModLarge", + "type": 8 + }, + "FriendlyFireDamageReductionRatio": { + "field": "flFriendlyFireDamageReductionRatio", + "type": 8 + } + }, + "QuestProgress": {}, + "RagdollCreationParams_t": { + "Force": { + "field": "m_vForce", + "type": 21 + }, + "ForceBone": { + "field": "m_nForceBone", + "type": 2 + }, + "ForceCurrentWorldTransform": { + "field": "m_bForceCurrentWorldTransform", + "type": 10 + }, + "HealthToGrant": { + "field": "m_nHealthToGrant", + "type": 2 + } + }, + "ResponseFollowup": { + "Followup_concept": { + "field": "followup_concept", + "type": 15 + }, + "Followup_contexts": { + "field": "followup_contexts", + "type": 15 + }, + "Followup_delay": { + "field": "followup_delay", + "type": 8 + }, + "Followup_target": { + "field": "followup_target", + "type": 15 + }, + "Followup_entityiotarget": { + "field": "followup_entityiotarget", + "type": 15 + }, + "Followup_entityioinput": { + "field": "followup_entityioinput", + "type": 15 + }, + "Followup_entityiodelay": { + "field": "followup_entityiodelay", + "type": 8 + }, + "Fired": { + "field": "bFired", + "type": 10 + } + }, + "ResponseParams": { + "Odds": { + "field": "odds", + "type": 1 + }, + "Flags": { + "field": "flags", + "type": 1 + }, + "Followup": { + "field": "m_pFollowup", + "classname": "ResponseFollowup", + "type": 24 + } + }, + "SceneEventId_t": { + "Value": { + "field": "m_Value", + "type": 6 + } + }, + "SellbackPurchaseEntry_t": { + "DefIdx": { + "field": "m_unDefIdx", + "type": 5 + }, + "Cost": { + "field": "m_nCost", + "type": 2 + }, + "PrevArmor": { + "field": "m_nPrevArmor", + "type": 2 + }, + "PrevHelmet": { + "field": "m_bPrevHelmet", + "type": 10 + }, + "Item": { + "field": "m_hItem", + "type": 17, + "classname": "CEntityInstance" + } + }, + "SequenceHistory_t": { + "Sequence": { + "field": "m_hSequence", + "type": 2 + }, + "SeqStartTime": { + "field": "m_flSeqStartTime", + "type": 8 + }, + "SeqFixedCycle": { + "field": "m_flSeqFixedCycle", + "type": 8 + }, + "SeqLoopMode": { + "field": "m_nSeqLoopMode", + "type": 6 + }, + "PlaybackRate": { + "field": "m_flPlaybackRate", + "type": 8 + }, + "CyclesPerSecond": { + "field": "m_flCyclesPerSecond", + "type": 8 + } + }, + "ServerAuthoritativeWeaponSlot_t": { + "Class": { + "field": "unClass", + "type": 5 + }, + "Slot": { + "field": "unSlot", + "type": 5 + }, + "ItemDefIdx": { + "field": "unItemDefIdx", + "type": 5 + } + }, + "SummaryTakeDamageInfo_t": { + "SummarisedCount": { + "field": "nSummarisedCount", + "type": 2 + }, + "Info": { + "field": "info", + "classname": "CTakeDamageInfo", + "type": 16 + }, + "Result": { + "field": "result", + "classname": "CTakeDamageResult", + "type": 16 + }, + "Target": { + "field": "hTarget", + "type": 17, + "classname": "CBaseEntity" + } + }, + "TimedEvent": { + "TimeBetweenEvents": { + "field": "m_TimeBetweenEvents", + "type": 8 + }, + "NextEvent": { + "field": "m_fNextEvent", + "type": 8 + } + }, + "VPhysicsCollisionAttribute_t": { + "InteractsAs": { + "field": "m_nInteractsAs", + "type": 7 + }, + "InteractsWith": { + "field": "m_nInteractsWith", + "type": 7 + }, + "InteractsExclude": { + "field": "m_nInteractsExclude", + "type": 7 + }, + "EntityId": { + "field": "m_nEntityId", + "type": 6 + }, + "OwnerId": { + "field": "m_nOwnerId", + "type": 6 + }, + "HierarchyId": { + "field": "m_nHierarchyId", + "type": 5 + }, + "CollisionGroup": { + "field": "m_nCollisionGroup", + "type": 4 + }, + "CollisionFunctionMask": { + "field": "m_nCollisionFunctionMask", + "type": 4 + } + }, + "ViewAngleServerChange_t": { + "Type": { + "field": "nType", + "type": 4 + }, + "Angle": { + "field": "qAngle", + "type": 20 + }, + "Index": { + "field": "nIndex", + "type": 6 + } + }, + "WaterWheelDrag_t": { + "FractionOfWheelSubmerged": { + "field": "m_flFractionOfWheelSubmerged", + "type": 8 + }, + "WheelDrag": { + "field": "m_flWheelDrag", + "type": 8 + } + }, + "WaterWheelFrictionScale_t": { + "FractionOfWheelSubmerged": { + "field": "m_flFractionOfWheelSubmerged", + "type": 8 + }, + "FrictionScale": { + "field": "m_flFrictionScale", + "type": 8 + } + }, + "WeaponPurchaseCount_t": { + "ItemDefIndex": { + "field": "m_nItemDefIndex", + "type": 5 + }, + "Count": { + "field": "m_nCount", + "type": 5 + } + }, + "WeaponPurchaseTracker_t": {}, + "WrappedPhysicsJoint_t": {}, + "audioparams_t": { + "LocalSound": { + "field": "localSound", + "type": 42, + "size": 8 + }, + "SoundscapeIndex": { + "field": "soundscapeIndex", + "type": 2 + }, + "LocalBits": { + "field": "localBits", + "type": 4 + }, + "SoundscapeEntityListIndex": { + "field": "soundscapeEntityListIndex", + "type": 2 + }, + "SoundEventHash": { + "field": "soundEventHash", + "type": 6 + } + }, + "fogparams_t": { + "DirPrimary": { + "field": "dirPrimary", + "type": 21 + }, + "ColorPrimary": { + "field": "colorPrimary", + "type": 19 + }, + "ColorSecondary": { + "field": "colorSecondary", + "type": 19 + }, + "ColorPrimaryLerpTo": { + "field": "colorPrimaryLerpTo", + "type": 19 + }, + "ColorSecondaryLerpTo": { + "field": "colorSecondaryLerpTo", + "type": 19 + }, + "Start": { + "field": "start", + "type": 8 + }, + "End": { + "field": "end", + "type": 8 + }, + "Farz": { + "field": "farz", + "type": 8 + }, + "Maxdensity": { + "field": "maxdensity", + "type": 8 + }, + "Exponent": { + "field": "exponent", + "type": 8 + }, + "HDRColorScale": { + "field": "HDRColorScale", + "type": 8 + }, + "SkyboxFogFactor": { + "field": "skyboxFogFactor", + "type": 8 + }, + "SkyboxFogFactorLerpTo": { + "field": "skyboxFogFactorLerpTo", + "type": 8 + }, + "StartLerpTo": { + "field": "startLerpTo", + "type": 8 + }, + "EndLerpTo": { + "field": "endLerpTo", + "type": 8 + }, + "MaxdensityLerpTo": { + "field": "maxdensityLerpTo", + "type": 8 + }, + "Lerptime": { + "field": "lerptime", + "type": 8 + }, + "Duration": { + "field": "duration", + "type": 8 + }, + "Blendtobackground": { + "field": "blendtobackground", + "type": 8 + }, + "Scattering": { + "field": "scattering", + "type": 8 + }, + "Locallightscale": { + "field": "locallightscale", + "type": 8 + }, + "Enable": { + "field": "enable", + "type": 10 + }, + "Blend": { + "field": "blend", + "type": 10 + }, + "NoReflectionFog": { + "field": "m_bNoReflectionFog", + "type": 10 + }, + "Padding": { + "field": "m_bPadding", + "type": 10 + } + }, + "hudtextparms_t": { + "Color1": { + "field": "color1", + "type": 19 + }, + "Color2": { + "field": "color2", + "type": 19 + }, + "Effect": { + "field": "effect", + "type": 4 + }, + "Channel": { + "field": "channel", + "type": 4 + }, + "X": { + "field": "x", + "type": 8 + }, + "Y": { + "field": "y", + "type": 8 + } + }, + "ragdoll_t": { + "BoneIndex": { + "field": "boneIndex", + "type": 53 + }, + "AllowStretch": { + "field": "allowStretch", + "type": 10 + }, + "Unused": { + "field": "unused", + "type": 10 + } + }, + "ragdollelement_t": { + "OriginParentSpace": { + "field": "originParentSpace", + "type": 21 + }, + "ParentIndex": { + "field": "parentIndex", + "type": 2 + }, + "Radius": { + "field": "m_flRadius", + "type": 8 + } + }, + "shard_model_desc_t": { + "ModelID": { + "field": "m_nModelID", + "type": 2 + }, + "Solid": { + "field": "m_solid", + "type": 4 + }, + "PanelSize": { + "field": "m_vecPanelSize", + "type": 22 + }, + "StressPositionA": { + "field": "m_vecStressPositionA", + "type": 22 + }, + "StressPositionB": { + "field": "m_vecStressPositionB", + "type": 22 + }, + "PanelVertices": { + "field": "m_vecPanelVertices", + "type": 64 + }, + "InitialPanelVertices": { + "field": "m_vInitialPanelVertices", + "type": 65 + }, + "GlassHalfThickness": { + "field": "m_flGlassHalfThickness", + "type": 8 + }, + "HasParent": { + "field": "m_bHasParent", + "type": 10 + }, + "ParentFrozen": { + "field": "m_bParentFrozen", + "type": 10 + }, + "SurfacePropStringToken": { + "field": "m_SurfacePropStringToken", + "type": 12 + } + }, + "sky3dparams_t": { + "Scale": { + "field": "scale", + "type": 1 + }, + "Origin": { + "field": "origin", + "type": 21 + }, + "Clip3DSkyBoxNearToWorldFar": { + "field": "bClip3DSkyBoxNearToWorldFar", + "type": 10 + }, + "Clip3DSkyBoxNearToWorldFarOffset": { + "field": "flClip3DSkyBoxNearToWorldFarOffset", + "type": 8 + }, + "Fog": { + "field": "fog", + "classname": "fogparams_t", + "type": 16 + }, + "WorldGroupID": { + "field": "m_nWorldGroupID", + "type": 12 + } + }, + "sndopvarlatchdata_t": { + "Stack": { + "field": "m_iszStack", + "type": 13 + }, + "Operator": { + "field": "m_iszOperator", + "type": 13 + }, + "Opvar": { + "field": "m_iszOpvar", + "type": 13 + }, + "Val": { + "field": "m_flVal", + "type": 8 + }, + "Pos": { + "field": "m_vPos", + "type": 21 + } + }, + "thinkfunc_t": { + "Context": { + "field": "m_nContext", + "type": 12 + }, + "NextThinkTick": { + "field": "m_nNextThinkTick", + "type": 2 + }, + "LastThinkTick": { + "field": "m_nLastThinkTick", + "type": 2 + } + }, + "CEmptyEntityInstance": {}, + "CEntityComponent": {}, + "CEntityComponentHelper": { + "Flags": { + "field": "m_flags", + "type": 6 + }, + "Info": { + "field": "m_pInfo", + "classname": "EntComponentInfo_t", + "type": 24 + }, + "Priority": { + "field": "m_nPriority", + "type": 2 + }, + "Next": { + "field": "m_pNext", + "classname": "CEntityComponentHelper", + "type": 24 + } + }, + "CEntityIOOutput": {}, + "CEntityIdentity": { + "NameStringableIndex": { + "field": "m_nameStringableIndex", + "type": 2 + }, + "Name": { + "field": "m_name", + "type": 13 + }, + "DesignerName": { + "field": "m_designerName", + "type": 13 + }, + "Flags": { + "field": "m_flags", + "type": 6 + }, + "WorldGroupId": { + "field": "m_worldGroupId", + "type": 12 + }, + "DataObjectTypes": { + "field": "m_fDataObjectTypes", + "type": 6 + }, + "PathIndex": { + "field": "m_PathIndex", + "classname": "ChangeAccessorFieldPathIndex_t", + "type": 16 + }, + "Prev": { + "field": "m_pPrev", + "classname": "CEntityIdentity", + "type": 24 + }, + "Next": { + "field": "m_pNext", + "classname": "CEntityIdentity", + "type": 24 + }, + "PrevByClass": { + "field": "m_pPrevByClass", + "classname": "CEntityIdentity", + "type": 24 + }, + "NextByClass": { + "field": "m_pNextByClass", + "classname": "CEntityIdentity", + "type": 24 + } + }, + "CEntityInstance": { + "PrivateVScripts": { + "field": "m_iszPrivateVScripts", + "type": 13 + }, + "Entity": { + "field": "m_pEntity", + "classname": "CEntityIdentity", + "type": 24 + }, + "CScriptComponent": { + "field": "m_CScriptComponent", + "classname": "CScriptComponent", + "type": 24 + }, + "VisibleinPVS": { + "field": "m_bVisibleinPVS", + "type": 10 + } + }, + "CNetworkVarChainer": { + "PathIndex": { + "field": "m_PathIndex", + "classname": "ChangeAccessorFieldPathIndex_t", + "type": 16 + } + }, + "CScriptComponent": { + "ScriptClassName": { + "field": "m_scriptClassName", + "type": 13 + }, + "Parent": { + "field": "CEntityComponent", + "type": 11 + } + }, + "CVariantDefaultAllocator": {}, + "EntComponentInfo_t": { + "Name": { + "field": "m_pName", + "type": 15 + }, + "CPPClassname": { + "field": "m_pCPPClassname", + "type": 15 + }, + "NetworkDataReferencedDescription": { + "field": "m_pNetworkDataReferencedDescription", + "type": 15 + }, + "NetworkDataReferencedPtrPropDescription": { + "field": "m_pNetworkDataReferencedPtrPropDescription", + "type": 15 + }, + "RuntimeIndex": { + "field": "m_nRuntimeIndex", + "type": 2 + }, + "Flags": { + "field": "m_nFlags", + "type": 6 + }, + "BaseClassComponentHelper": { + "field": "m_pBaseClassComponentHelper", + "classname": "CEntityComponentHelper", + "type": 24 + } + }, + "EntInput_t": {}, + "EntOutput_t": {}, + "CAnimScriptBase": { + "IsValid": { + "field": "m_bIsValid", + "type": 10 + } + }, + "MaterialParamBuffer_t": { + "Parent": { + "field": "MaterialParam_t", + "type": 11 + } + }, + "MaterialParamFloat_t": { + "Value": { + "field": "m_flValue", + "type": 8 + }, + "Parent": { + "field": "MaterialParam_t", + "type": 11 + } + }, + "MaterialParamInt_t": { + "Value": { + "field": "m_nValue", + "type": 2 + }, + "Parent": { + "field": "MaterialParam_t", + "type": 11 + } + }, + "MaterialParamString_t": { + "Value": { + "field": "m_value", + "type": 14 + }, + "Parent": { + "field": "MaterialParam_t", + "type": 11 + } + }, + "MaterialParamTexture_t": { + "Parent": { + "field": "MaterialParam_t", + "type": 11 + } + }, + "MaterialParamVector_t": { + "Value": { + "field": "m_value", + "type": 23 + }, + "Parent": { + "field": "MaterialParam_t", + "type": 11 + } + }, + "MaterialParam_t": { + "Name": { + "field": "m_name", + "type": 14 + } + }, + "MaterialResourceData_t": { + "MaterialName": { + "field": "m_materialName", + "type": 14 + }, + "ShaderName": { + "field": "m_shaderName", + "type": 14 + }, + "RenderAttributesUsed": { + "field": "m_renderAttributesUsed", + "type": 50 + } + }, + "PostProcessingBloomParameters_t": { + "BlendMode": { + "field": "m_blendMode", + "type": 6 + }, + "BloomStrength": { + "field": "m_flBloomStrength", + "type": 8 + }, + "ScreenBloomStrength": { + "field": "m_flScreenBloomStrength", + "type": 8 + }, + "BlurBloomStrength": { + "field": "m_flBlurBloomStrength", + "type": 8 + }, + "BloomThreshold": { + "field": "m_flBloomThreshold", + "type": 8 + }, + "BloomThresholdWidth": { + "field": "m_flBloomThresholdWidth", + "type": 8 + }, + "SkyboxBloomStrength": { + "field": "m_flSkyboxBloomStrength", + "type": 8 + }, + "BloomStartValue": { + "field": "m_flBloomStartValue", + "type": 8 + }, + "BlurWeight": { + "field": "m_flBlurWeight", + "type": 37, + "size": 5 + }, + "BlurTint": { + "field": "m_vBlurTint", + "type": 42, + "size": 5 + } + }, + "PostProcessingLocalContrastParameters_t": { + "LocalContrastStrength": { + "field": "m_flLocalContrastStrength", + "type": 8 + }, + "LocalContrastEdgeStrength": { + "field": "m_flLocalContrastEdgeStrength", + "type": 8 + }, + "LocalContrastVignetteStart": { + "field": "m_flLocalContrastVignetteStart", + "type": 8 + }, + "LocalContrastVignetteEnd": { + "field": "m_flLocalContrastVignetteEnd", + "type": 8 + }, + "LocalContrastVignetteBlur": { + "field": "m_flLocalContrastVignetteBlur", + "type": 8 + } + }, + "PostProcessingResource_t": { + "HasTonemapParams": { + "field": "m_bHasTonemapParams", + "type": 10 + }, + "ToneMapParams": { + "field": "m_toneMapParams", + "classname": "PostProcessingTonemapParameters_t", + "type": 16 + }, + "HasBloomParams": { + "field": "m_bHasBloomParams", + "type": 10 + }, + "BloomParams": { + "field": "m_bloomParams", + "classname": "PostProcessingBloomParameters_t", + "type": 16 + }, + "HasVignetteParams": { + "field": "m_bHasVignetteParams", + "type": 10 + }, + "VignetteParams": { + "field": "m_vignetteParams", + "classname": "PostProcessingVignetteParameters_t", + "type": 16 + }, + "HasLocalContrastParams": { + "field": "m_bHasLocalContrastParams", + "type": 10 + }, + "LocalConstrastParams": { + "field": "m_localConstrastParams", + "classname": "PostProcessingLocalContrastParameters_t", + "type": 16 + }, + "ColorCorrectionVolumeDim": { + "field": "m_nColorCorrectionVolumeDim", + "type": 2 + }, + "HasColorCorrection": { + "field": "m_bHasColorCorrection", + "type": 10 + } + }, + "PostProcessingTonemapParameters_t": { + "ExposureBias": { + "field": "m_flExposureBias", + "type": 8 + }, + "ShoulderStrength": { + "field": "m_flShoulderStrength", + "type": 8 + }, + "LinearStrength": { + "field": "m_flLinearStrength", + "type": 8 + }, + "LinearAngle": { + "field": "m_flLinearAngle", + "type": 8 + }, + "ToeStrength": { + "field": "m_flToeStrength", + "type": 8 + }, + "ToeNum": { + "field": "m_flToeNum", + "type": 8 + }, + "ToeDenom": { + "field": "m_flToeDenom", + "type": 8 + }, + "WhitePoint": { + "field": "m_flWhitePoint", + "type": 8 + }, + "LuminanceSource": { + "field": "m_flLuminanceSource", + "type": 8 + }, + "ExposureBiasShadows": { + "field": "m_flExposureBiasShadows", + "type": 8 + }, + "ExposureBiasHighlights": { + "field": "m_flExposureBiasHighlights", + "type": 8 + }, + "MinShadowLum": { + "field": "m_flMinShadowLum", + "type": 8 + }, + "MaxShadowLum": { + "field": "m_flMaxShadowLum", + "type": 8 + }, + "MinHighlightLum": { + "field": "m_flMinHighlightLum", + "type": 8 + }, + "MaxHighlightLum": { + "field": "m_flMaxHighlightLum", + "type": 8 + } + }, + "PostProcessingVignetteParameters_t": { + "VignetteStrength": { + "field": "m_flVignetteStrength", + "type": 8 + }, + "Center": { + "field": "m_vCenter", + "type": 22 + }, + "Radius": { + "field": "m_flRadius", + "type": 8 + }, + "Roundness": { + "field": "m_flRoundness", + "type": 8 + }, + "Feather": { + "field": "m_flFeather", + "type": 8 + }, + "ColorTint": { + "field": "m_vColorTint", + "type": 21 + } + }, + "AABB_t": { + "MinBounds": { + "field": "m_vMinBounds", + "type": 21 + }, + "MaxBounds": { + "field": "m_vMaxBounds", + "type": 21 + } + }, + "CFuseProgram": { + "ProgramBuffer": { + "field": "m_programBuffer", + "type": 55 + }, + "MaxTempVarsUsed": { + "field": "m_nMaxTempVarsUsed", + "type": 2 + } + }, + "CFuseSymbolTable": {}, + "ConstantInfo_t": { + "Name": { + "field": "m_name", + "type": 14 + }, + "NameToken": { + "field": "m_nameToken", + "type": 12 + }, + "Value": { + "field": "m_flValue", + "type": 8 + } + }, + "FunctionInfo_t": { + "Name": { + "field": "m_name", + "type": 14 + }, + "NameToken": { + "field": "m_nameToken", + "type": 12 + }, + "ParamCount": { + "field": "m_nParamCount", + "type": 2 + }, + "Index": { + "field": "m_nIndex", + "classname": "FuseFunctionIndex_t", + "type": 16 + }, + "IsPure": { + "field": "m_bIsPure", + "type": 10 + } + }, + "FuseFunctionIndex_t": { + "Value": { + "field": "m_Value", + "type": 5 + } + }, + "FuseVariableIndex_t": { + "Value": { + "field": "m_Value", + "type": 5 + } + }, + "VariableInfo_t": { + "Name": { + "field": "m_name", + "type": 14 + }, + "NameToken": { + "field": "m_nameToken", + "type": 12 + }, + "Index": { + "field": "m_nIndex", + "classname": "FuseVariableIndex_t", + "type": 16 + }, + "NumComponents": { + "field": "m_nNumComponents", + "type": 4 + }, + "VarType": { + "field": "m_eVarType", + "type": 4 + }, + "Access": { + "field": "m_eAccess", + "type": 4 + } + }, + "AnimComponentID": { + "Id": { + "field": "m_id", + "type": 6 + } + }, + "AnimNodeID": { + "Id": { + "field": "m_id", + "type": 6 + } + }, + "AnimNodeOutputID": { + "Id": { + "field": "m_id", + "type": 6 + } + }, + "AnimParamID": { + "Id": { + "field": "m_id", + "type": 6 + } + }, + "AnimScriptHandle": { + "Id": { + "field": "m_id", + "type": 6 + } + }, + "AnimStateID": { + "Id": { + "field": "m_id", + "type": 6 + } + }, + "AnimTagID": { + "Id": { + "field": "m_id", + "type": 6 + } + }, + "CAimConstraint": { + "UpType": { + "field": "m_nUpType", + "type": 6 + }, + "Parent": { + "field": "CBaseConstraint", + "type": 11 + } + }, + "CAnimAttachment": { + "InfluenceOffsets": { + "field": "m_influenceOffsets", + "type": 42, + "size": 3 + }, + "InfluenceIndices": { + "field": "m_influenceIndices", + "type": 31, + "size": 3 + }, + "InfluenceWeights": { + "field": "m_influenceWeights", + "type": 37, + "size": 3 + }, + "NumInfluences": { + "field": "m_numInfluences", + "type": 4 + } + }, + "CAnimCycle": { + "Parent": { + "field": "CCycleBase", + "type": 11 + } + }, + "CAnimFoot": { + "Name": { + "field": "m_name", + "type": 14 + }, + "BallOffset": { + "field": "m_vBallOffset", + "type": 21 + }, + "HeelOffset": { + "field": "m_vHeelOffset", + "type": 21 + }, + "AnkleBoneIndex": { + "field": "m_ankleBoneIndex", + "type": 2 + }, + "ToeBoneIndex": { + "field": "m_toeBoneIndex", + "type": 2 + } + }, + "CAnimSkeleton": { + "BoneNames": { + "field": "m_boneNames", + "type": 50 + }, + "Parents": { + "field": "m_parents", + "type": 53 + }, + "MorphNames": { + "field": "m_morphNames", + "type": 50 + }, + "LodBoneCounts": { + "field": "m_lodBoneCounts", + "type": 53 + } + }, + "CAttachment": { + "Name": { + "field": "m_name", + "type": 14 + }, + "InfluenceNames": { + "field": "m_influenceNames", + "type": 28, + "size": 3 + }, + "InfluenceOffsets": { + "field": "m_vInfluenceOffsets", + "type": 42, + "size": 3 + }, + "InfluenceWeights": { + "field": "m_influenceWeights", + "type": 37, + "size": 3 + }, + "InfluenceRootTransform": { + "field": "m_bInfluenceRootTransform", + "type": 39, + "size": 3 + }, + "Influences": { + "field": "m_nInfluences", + "type": 4 + }, + "IgnoreRotation": { + "field": "m_bIgnoreRotation", + "type": 10 + } + }, + "CBaseConstraint": { + "Name": { + "field": "m_name", + "type": 14 + }, + "UpVector": { + "field": "m_vUpVector", + "type": 21 + }, + "Parent": { + "field": "CBoneConstraintBase", + "type": 11 + } + }, + "CBoneConstraintBase": {}, + "CBoneConstraintDotToMorph": { + "BoneName": { + "field": "m_sBoneName", + "type": 14 + }, + "TargetBoneName": { + "field": "m_sTargetBoneName", + "type": 14 + }, + "MorphChannelName": { + "field": "m_sMorphChannelName", + "type": 14 + }, + "Remap": { + "field": "m_flRemap", + "type": 37, + "size": 4 + }, + "Parent": { + "field": "CBoneConstraintBase", + "type": 11 + } + }, + "CBoneConstraintPoseSpaceBone": { + "Parent": { + "field": "CBaseConstraint", + "type": 11 + } + }, + "CBoneConstraintPoseSpaceMorph": { + "BoneName": { + "field": "m_sBoneName", + "type": 14 + }, + "AttachmentName": { + "field": "m_sAttachmentName", + "type": 14 + }, + "OutputMorph": { + "field": "m_outputMorph", + "type": 50 + }, + "Clamp": { + "field": "m_bClamp", + "type": 10 + }, + "Parent": { + "field": "CBoneConstraintBase", + "type": 11 + } + }, + "CConstraintSlave": { + "BasePosition": { + "field": "m_vBasePosition", + "type": 21 + }, + "BoneHash": { + "field": "m_nBoneHash", + "type": 6 + }, + "Weight": { + "field": "m_flWeight", + "type": 8 + }, + "Name": { + "field": "m_sName", + "type": 14 + } + }, + "CConstraintTarget": { + "Offset": { + "field": "m_vOffset", + "type": 21 + }, + "BoneHash": { + "field": "m_nBoneHash", + "type": 6 + }, + "Name": { + "field": "m_sName", + "type": 14 + }, + "Weight": { + "field": "m_flWeight", + "type": 8 + }, + "IsAttachment": { + "field": "m_bIsAttachment", + "type": 10 + } + }, + "CCycleBase": { + "Cycle": { + "field": "m_flCycle", + "type": 8 + } + }, + "CDrawCullingData": { + "ConeApex": { + "field": "m_vConeApex", + "type": 21 + }, + "ConeAxis": { + "field": "m_ConeAxis", + "type": 29, + "size": 3 + }, + "ConeCutoff": { + "field": "m_ConeCutoff", + "type": 0 + } + }, + "CFlexController": { + "Name": { + "field": "m_szName", + "type": 14 + }, + "Type": { + "field": "m_szType", + "type": 14 + }, + "Min": { + "field": "min", + "type": 8 + }, + "Max": { + "field": "max", + "type": 8 + } + }, + "CFlexDesc": { + "Facs": { + "field": "m_szFacs", + "type": 14 + } + }, + "CFlexOp": { + "OpCode": { + "field": "m_OpCode", + "type": 6 + }, + "Data": { + "field": "m_Data", + "type": 2 + } + }, + "CFlexRule": { + "Flex": { + "field": "m_nFlex", + "type": 2 + } + }, + "CFootCycle": { + "Parent": { + "field": "CCycleBase", + "type": 11 + } + }, + "CFootCycleDefinition": { + "StancePositionMS": { + "field": "m_vStancePositionMS", + "type": 21 + }, + "MidpointPositionMS": { + "field": "m_vMidpointPositionMS", + "type": 21 + }, + "StanceDirectionMS": { + "field": "m_flStanceDirectionMS", + "type": 8 + }, + "ToStrideStartPos": { + "field": "m_vToStrideStartPos", + "type": 21 + }, + "StanceCycle": { + "field": "m_stanceCycle", + "classname": "CAnimCycle", + "type": 16 + }, + "FootLiftCycle": { + "field": "m_footLiftCycle", + "classname": "CFootCycle", + "type": 16 + }, + "FootOffCycle": { + "field": "m_footOffCycle", + "classname": "CFootCycle", + "type": 16 + }, + "FootStrikeCycle": { + "field": "m_footStrikeCycle", + "classname": "CFootCycle", + "type": 16 + }, + "FootLandCycle": { + "field": "m_footLandCycle", + "classname": "CFootCycle", + "type": 16 + } + }, + "CFootDefinition": { + "Name": { + "field": "m_name", + "type": 14 + }, + "AnkleBoneName": { + "field": "m_ankleBoneName", + "type": 14 + }, + "ToeBoneName": { + "field": "m_toeBoneName", + "type": 14 + }, + "BallOffset": { + "field": "m_vBallOffset", + "type": 21 + }, + "HeelOffset": { + "field": "m_vHeelOffset", + "type": 21 + }, + "FootLength": { + "field": "m_flFootLength", + "type": 8 + }, + "BindPoseDirectionMS": { + "field": "m_flBindPoseDirectionMS", + "type": 8 + }, + "TraceHeight": { + "field": "m_flTraceHeight", + "type": 8 + }, + "TraceRadius": { + "field": "m_flTraceRadius", + "type": 8 + } + }, + "CFootMotion": { + "Name": { + "field": "m_name", + "type": 14 + }, + "Additive": { + "field": "m_bAdditive", + "type": 10 + } + }, + "CFootStride": { + "Definition": { + "field": "m_definition", + "classname": "CFootCycleDefinition", + "type": 16 + }, + "Trajectories": { + "field": "m_trajectories", + "classname": "CFootTrajectories", + "type": 16 + } + }, + "CFootTrajectories": {}, + "CFootTrajectory": { + "Offset": { + "field": "m_vOffset", + "type": 21 + }, + "RotationOffset": { + "field": "m_flRotationOffset", + "type": 8 + }, + "Progression": { + "field": "m_flProgression", + "type": 8 + } + }, + "CHitBox": { + "Name": { + "field": "m_name", + "type": 14 + }, + "SurfaceProperty": { + "field": "m_sSurfaceProperty", + "type": 14 + }, + "BoneName": { + "field": "m_sBoneName", + "type": 14 + }, + "MinBounds": { + "field": "m_vMinBounds", + "type": 21 + }, + "MaxBounds": { + "field": "m_vMaxBounds", + "type": 21 + }, + "ShapeRadius": { + "field": "m_flShapeRadius", + "type": 8 + }, + "BoneNameHash": { + "field": "m_nBoneNameHash", + "type": 6 + }, + "GroupId": { + "field": "m_nGroupId", + "type": 2 + }, + "ShapeType": { + "field": "m_nShapeType", + "type": 4 + }, + "TranslationOnly": { + "field": "m_bTranslationOnly", + "type": 10 + }, + "CRC": { + "field": "m_CRC", + "type": 6 + }, + "CRenderColor": { + "field": "m_cRenderColor", + "type": 19 + }, + "HitBoxIndex": { + "field": "m_nHitBoxIndex", + "type": 5 + } + }, + "CHitBoxSet": { + "Name": { + "field": "m_name", + "type": 14 + }, + "NameHash": { + "field": "m_nNameHash", + "type": 6 + }, + "SourceFilename": { + "field": "m_SourceFilename", + "type": 14 + } + }, + "CHitBoxSetList": {}, + "CMaterialDrawDescriptor": { + "UvDensity": { + "field": "m_flUvDensity", + "type": 8 + }, + "TintColor": { + "field": "m_vTintColor", + "type": 21 + }, + "Alpha": { + "field": "m_flAlpha", + "type": 8 + }, + "NumMeshlets": { + "field": "m_nNumMeshlets", + "type": 5 + }, + "FirstMeshlet": { + "field": "m_nFirstMeshlet", + "type": 6 + }, + "PrimitiveType": { + "field": "m_nPrimitiveType", + "type": 6 + }, + "BaseVertex": { + "field": "m_nBaseVertex", + "type": 2 + }, + "VertexCount": { + "field": "m_nVertexCount", + "type": 2 + }, + "StartIndex": { + "field": "m_nStartIndex", + "type": 2 + }, + "IndexCount": { + "field": "m_nIndexCount", + "type": 2 + }, + "IndexBuffer": { + "field": "m_indexBuffer", + "classname": "CRenderBufferBinding", + "type": 16 + } + }, + "CMeshletDescriptor": { + "CullingData": { + "field": "m_CullingData", + "classname": "CDrawCullingData", + "type": 16 + } + }, + "CModelConfig": { + "ConfigName": { + "field": "m_ConfigName", + "type": 14 + }, + "TopLevel": { + "field": "m_bTopLevel", + "type": 10 + } + }, + "CModelConfigElement": { + "ElementName": { + "field": "m_ElementName", + "type": 14 + } + }, + "CModelConfigElement_AttachedModel": { + "InstanceName": { + "field": "m_InstanceName", + "type": 14 + }, + "EntityClass": { + "field": "m_EntityClass", + "type": 14 + }, + "Offset": { + "field": "m_vOffset", + "type": 21 + }, + "AngOffset": { + "field": "m_aAngOffset", + "type": 20 + }, + "AttachmentName": { + "field": "m_AttachmentName", + "type": 14 + }, + "LocalAttachmentOffsetName": { + "field": "m_LocalAttachmentOffsetName", + "type": 14 + }, + "AttachmentType": { + "field": "m_AttachmentType", + "type": 6 + }, + "BoneMergeFlex": { + "field": "m_bBoneMergeFlex", + "type": 10 + }, + "UserSpecifiedColor": { + "field": "m_bUserSpecifiedColor", + "type": 10 + }, + "UserSpecifiedMaterialGroup": { + "field": "m_bUserSpecifiedMaterialGroup", + "type": 10 + }, + "AcceptParentMaterialDrivenDecals": { + "field": "m_bAcceptParentMaterialDrivenDecals", + "type": 10 + }, + "BodygroupOnOtherModels": { + "field": "m_BodygroupOnOtherModels", + "type": 14 + }, + "MaterialGroupOnOtherModels": { + "field": "m_MaterialGroupOnOtherModels", + "type": 14 + }, + "Parent": { + "field": "CModelConfigElement", + "type": 11 + } + }, + "CModelConfigElement_Command": { + "Command": { + "field": "m_Command", + "type": 14 + }, + "Parent": { + "field": "CModelConfigElement", + "type": 11 + } + }, + "CModelConfigElement_RandomColor": { + "Parent": { + "field": "CModelConfigElement", + "type": 11 + } + }, + "CModelConfigElement_RandomPick": { + "Choices": { + "field": "m_Choices", + "type": 50 + }, + "ChoiceWeights": { + "field": "m_ChoiceWeights", + "type": 59 + }, + "Parent": { + "field": "CModelConfigElement", + "type": 11 + } + }, + "CModelConfigElement_SetBodygroup": { + "GroupName": { + "field": "m_GroupName", + "type": 14 + }, + "Choice": { + "field": "m_nChoice", + "type": 2 + }, + "Parent": { + "field": "CModelConfigElement", + "type": 11 + } + }, + "CModelConfigElement_SetBodygroupOnAttachedModels": { + "GroupName": { + "field": "m_GroupName", + "type": 14 + }, + "Choice": { + "field": "m_nChoice", + "type": 2 + }, + "Parent": { + "field": "CModelConfigElement", + "type": 11 + } + }, + "CModelConfigElement_SetMaterialGroup": { + "MaterialGroupName": { + "field": "m_MaterialGroupName", + "type": 14 + }, + "Parent": { + "field": "CModelConfigElement", + "type": 11 + } + }, + "CModelConfigElement_SetMaterialGroupOnAttachedModels": { + "MaterialGroupName": { + "field": "m_MaterialGroupName", + "type": 14 + }, + "Parent": { + "field": "CModelConfigElement", + "type": 11 + } + }, + "CModelConfigElement_SetRenderColor": { + "Color": { + "field": "m_Color", + "type": 19 + }, + "Parent": { + "field": "CModelConfigElement", + "type": 11 + } + }, + "CModelConfigElement_UserPick": { + "Choices": { + "field": "m_Choices", + "type": 50 + }, + "Parent": { + "field": "CModelConfigElement", + "type": 11 + } + }, + "CModelConfigList": { + "HideMaterialGroupInTools": { + "field": "m_bHideMaterialGroupInTools", + "type": 10 + }, + "HideRenderColorInTools": { + "field": "m_bHideRenderColorInTools", + "type": 10 + } + }, + "CMorphBundleData": { + "ULeftSrc": { + "field": "m_flULeftSrc", + "type": 8 + }, + "VTopSrc": { + "field": "m_flVTopSrc", + "type": 8 + }, + "Offsets": { + "field": "m_offsets", + "type": 59 + }, + "Ranges": { + "field": "m_ranges", + "type": 59 + } + }, + "CMorphConstraint": { + "TargetMorph": { + "field": "m_sTargetMorph", + "type": 14 + }, + "SlaveChannel": { + "field": "m_nSlaveChannel", + "type": 2 + }, + "Min": { + "field": "m_flMin", + "type": 8 + }, + "Max": { + "field": "m_flMax", + "type": 8 + }, + "Parent": { + "field": "CBaseConstraint", + "type": 11 + } + }, + "CMorphData": { + "Name": { + "field": "m_name", + "type": 14 + } + }, + "CMorphRectData": { + "XLeftDst": { + "field": "m_nXLeftDst", + "type": 1 + }, + "YTopDst": { + "field": "m_nYTopDst", + "type": 1 + }, + "UWidthSrc": { + "field": "m_flUWidthSrc", + "type": 8 + }, + "VHeightSrc": { + "field": "m_flVHeightSrc", + "type": 8 + } + }, + "CMorphSetData": { + "Width": { + "field": "m_nWidth", + "type": 2 + }, + "Height": { + "field": "m_nHeight", + "type": 2 + }, + "BundleTypes": { + "field": "m_bundleTypes", + "type": 57 + } + }, + "COrientConstraint": { + "Parent": { + "field": "CBaseConstraint", + "type": 11 + } + }, + "CParentConstraint": { + "Parent": { + "field": "CBaseConstraint", + "type": 11 + } + }, + "CPhysSurfaceProperties": { + "Name": { + "field": "m_name", + "type": 14 + }, + "NameHash": { + "field": "m_nameHash", + "type": 6 + }, + "BaseNameHash": { + "field": "m_baseNameHash", + "type": 6 + }, + "Hidden": { + "field": "m_bHidden", + "type": 10 + }, + "Description": { + "field": "m_description", + "type": 14 + }, + "Physics": { + "field": "m_physics", + "classname": "CPhysSurfacePropertiesPhysics", + "type": 16 + }, + "AudioSounds": { + "field": "m_audioSounds", + "classname": "CPhysSurfacePropertiesSoundNames", + "type": 16 + }, + "AudioParams": { + "field": "m_audioParams", + "classname": "CPhysSurfacePropertiesAudio", + "type": 16 + } + }, + "CPhysSurfacePropertiesAudio": { + "Reflectivity": { + "field": "m_reflectivity", + "type": 8 + }, + "HardnessFactor": { + "field": "m_hardnessFactor", + "type": 8 + }, + "RoughnessFactor": { + "field": "m_roughnessFactor", + "type": 8 + }, + "RoughThreshold": { + "field": "m_roughThreshold", + "type": 8 + }, + "HardThreshold": { + "field": "m_hardThreshold", + "type": 8 + }, + "HardVelocityThreshold": { + "field": "m_hardVelocityThreshold", + "type": 8 + }, + "StaticImpactVolume": { + "field": "m_flStaticImpactVolume", + "type": 8 + }, + "OcclusionFactor": { + "field": "m_flOcclusionFactor", + "type": 8 + } + }, + "CPhysSurfacePropertiesPhysics": { + "Friction": { + "field": "m_friction", + "type": 8 + }, + "Elasticity": { + "field": "m_elasticity", + "type": 8 + }, + "Density": { + "field": "m_density", + "type": 8 + }, + "Thickness": { + "field": "m_thickness", + "type": 8 + }, + "SoftContactFrequency": { + "field": "m_softContactFrequency", + "type": 8 + }, + "SoftContactDampingRatio": { + "field": "m_softContactDampingRatio", + "type": 8 + }, + "WheelDrag": { + "field": "m_wheelDrag", + "type": 8 + }, + "HeatConductivity": { + "field": "m_heatConductivity", + "type": 8 + }, + "Flashpoint": { + "field": "m_flashpoint", + "type": 8 + } + }, + "CPhysSurfacePropertiesSoundNames": { + "ImpactSoft": { + "field": "m_impactSoft", + "type": 14 + }, + "ImpactHard": { + "field": "m_impactHard", + "type": 14 + }, + "ScrapeSmooth": { + "field": "m_scrapeSmooth", + "type": 14 + }, + "ScrapeRough": { + "field": "m_scrapeRough", + "type": 14 + }, + "BulletImpact": { + "field": "m_bulletImpact", + "type": 14 + }, + "Rolling": { + "field": "m_rolling", + "type": 14 + }, + "Break": { + "field": "m_break", + "type": 14 + }, + "Strain": { + "field": "m_strain", + "type": 14 + }, + "MeleeImpact": { + "field": "m_meleeImpact", + "type": 14 + }, + "PushOff": { + "field": "m_pushOff", + "type": 14 + }, + "SkidStop": { + "field": "m_skidStop", + "type": 14 + } + }, + "CPointConstraint": { + "Parent": { + "field": "CBaseConstraint", + "type": 11 + } + }, + "CRenderBufferBinding": { + "Buffer": { + "field": "m_hBuffer", + "type": 7 + }, + "BindOffsetBytes": { + "field": "m_nBindOffsetBytes", + "type": 6 + } + }, + "CRenderGroom": { + "HairPositionOffsets": { + "field": "m_hairPositionOffsets", + "type": 57 + }, + "SegmentsPerHairStrand": { + "field": "m_nSegmentsPerHairStrand", + "type": 2 + }, + "GuideHairCount": { + "field": "m_nGuideHairCount", + "type": 2 + }, + "HairCount": { + "field": "m_nHairCount", + "type": 2 + }, + "GroomGroupID": { + "field": "m_nGroomGroupID", + "type": 2 + }, + "AttachBoneIdx": { + "field": "m_nAttachBoneIdx", + "type": 2 + }, + "AttachMeshIdx": { + "field": "m_nAttachMeshIdx", + "type": 2 + }, + "AttachMeshDrawCallIdx": { + "field": "m_nAttachMeshDrawCallIdx", + "type": 2 + }, + "EnableSimulation": { + "field": "m_bEnableSimulation", + "type": 10 + } + }, + "CRenderMesh": { + "Skeleton": { + "field": "m_skeleton", + "classname": "CRenderSkeleton", + "type": 16 + }, + "MeshDeformParams": { + "field": "m_meshDeformParams", + "classname": "DynamicMeshDeformParams_t", + "type": 16 + }, + "GroomData": { + "field": "m_pGroomData", + "classname": "CRenderGroom", + "type": 24 + } + }, + "CRenderSkeleton": { + "BoneParents": { + "field": "m_boneParents", + "type": 53 + }, + "BoneWeightCount": { + "field": "m_nBoneWeightCount", + "type": 2 + } + }, + "CSceneObjectData": { + "MinBounds": { + "field": "m_vMinBounds", + "type": 21 + }, + "MaxBounds": { + "field": "m_vMaxBounds", + "type": 21 + }, + "TintColor": { + "field": "m_vTintColor", + "type": 23 + } + }, + "CTiltTwistConstraint": { + "TargetAxis": { + "field": "m_nTargetAxis", + "type": 2 + }, + "SlaveAxis": { + "field": "m_nSlaveAxis", + "type": 2 + }, + "Parent": { + "field": "CBaseConstraint", + "type": 11 + } + }, + "CTwistConstraint": { + "Inverse": { + "field": "m_bInverse", + "type": 10 + }, + "Parent": { + "field": "CBaseConstraint", + "type": 11 + } + }, + "CVPhysXSurfacePropertiesList": {}, + "DynamicMeshDeformParams_t": { + "TensionCompressScale": { + "field": "m_flTensionCompressScale", + "type": 8 + }, + "TensionStretchScale": { + "field": "m_flTensionStretchScale", + "type": 8 + }, + "RecomputeSmoothNormalsAfterAnimation": { + "field": "m_bRecomputeSmoothNormalsAfterAnimation", + "type": 10 + }, + "ComputeDynamicMeshTensionAfterAnimation": { + "field": "m_bComputeDynamicMeshTensionAfterAnimation", + "type": 10 + }, + "SmoothNormalsAcrossUvSeams": { + "field": "m_bSmoothNormalsAcrossUvSeams", + "type": 10 + } + }, + "MaterialGroup_t": { + "Name": { + "field": "m_name", + "type": 14 + } + }, + "ModelBoneFlexDriverControl_t": { + "BoneComponent": { + "field": "m_nBoneComponent", + "type": 6 + }, + "FlexController": { + "field": "m_flexController", + "type": 14 + }, + "FlexControllerToken": { + "field": "m_flexControllerToken", + "type": 6 + }, + "Min": { + "field": "m_flMin", + "type": 8 + }, + "Max": { + "field": "m_flMax", + "type": 8 + } + }, + "ModelBoneFlexDriver_t": { + "BoneName": { + "field": "m_boneName", + "type": 14 + }, + "BoneNameToken": { + "field": "m_boneNameToken", + "type": 6 + } + }, + "ModelSkeletonData_t": { + "BoneName": { + "field": "m_boneName", + "type": 50 + }, + "Parent": { + "field": "m_nParent", + "type": 52 + }, + "BoneSphere": { + "field": "m_boneSphere", + "type": 59 + }, + "Flag": { + "field": "m_nFlag", + "type": 57 + }, + "BonePosParent": { + "field": "m_bonePosParent", + "type": 63 + }, + "BoneScaleParent": { + "field": "m_boneScaleParent", + "type": 59 + } + }, + "PermModelDataAnimatedMaterialAttribute_t": { + "AttributeName": { + "field": "m_AttributeName", + "type": 14 + }, + "NumChannels": { + "field": "m_nNumChannels", + "type": 2 + } + }, + "PermModelData_t": { + "Name": { + "field": "m_name", + "type": 14 + }, + "ModelInfo": { + "field": "m_modelInfo", + "classname": "PermModelInfo_t", + "type": 16 + }, + "RefMeshGroupMasks": { + "field": "m_refMeshGroupMasks", + "type": 58 + }, + "RefPhysGroupMasks": { + "field": "m_refPhysGroupMasks", + "type": 58 + }, + "RefLODGroupMasks": { + "field": "m_refLODGroupMasks", + "type": 55 + }, + "LodGroupSwitchDistances": { + "field": "m_lodGroupSwitchDistances", + "type": 59 + }, + "MeshGroups": { + "field": "m_meshGroups", + "type": 50 + }, + "DefaultMeshGroupMask": { + "field": "m_nDefaultMeshGroupMask", + "type": 7 + }, + "ModelSkeleton": { + "field": "m_modelSkeleton", + "classname": "ModelSkeletonData_t", + "type": 16 + }, + "RemappingTable": { + "field": "m_remappingTable", + "type": 52 + }, + "RemappingTableStarts": { + "field": "m_remappingTableStarts", + "type": 56 + }, + "ModelConfigList": { + "field": "m_pModelConfigList", + "classname": "CModelConfigList", + "type": 24 + }, + "BodyGroupsHiddenInTools": { + "field": "m_BodyGroupsHiddenInTools", + "type": 50 + } + }, + "PermModelExtPart_t": { + "Name": { + "field": "m_Name", + "type": 14 + }, + "Parent": { + "field": "m_nParent", + "type": 2 + } + }, + "PermModelInfo_t": { + "Flags": { + "field": "m_nFlags", + "type": 6 + }, + "HullMin": { + "field": "m_vHullMin", + "type": 21 + }, + "HullMax": { + "field": "m_vHullMax", + "type": 21 + }, + "ViewMin": { + "field": "m_vViewMin", + "type": 21 + }, + "ViewMax": { + "field": "m_vViewMax", + "type": 21 + }, + "Mass": { + "field": "m_flMass", + "type": 8 + }, + "EyePosition": { + "field": "m_vEyePosition", + "type": 21 + }, + "MaxEyeDeflection": { + "field": "m_flMaxEyeDeflection", + "type": 8 + }, + "SurfaceProperty": { + "field": "m_sSurfaceProperty", + "type": 14 + }, + "KeyValueText": { + "field": "m_keyValueText", + "type": 14 + } + }, + "PhysSoftbodyDesc_t": { + "ParticleBoneHash": { + "field": "m_ParticleBoneHash", + "type": 57 + }, + "ParticleBoneName": { + "field": "m_ParticleBoneName", + "type": 50 + } + }, + "RenderHairStrandInfo_t": { + "GuideHairIndices_nSurfaceTriIndex": { + "field": "m_nGuideHairIndices_nSurfaceTriIndex", + "type": 35, + "size": 2 + }, + "GuideBary_vBaseBary": { + "field": "m_vGuideBary_vBaseBary", + "type": 34, + "size": 4 + }, + "RootOffset_flLengthScale": { + "field": "m_vRootOffset_flLengthScale", + "type": 34, + "size": 4 + }, + "PackedBaseUv": { + "field": "m_nPackedBaseUv", + "type": 34, + "size": 2 + }, + "PackedSurfaceNormalOs": { + "field": "m_nPackedSurfaceNormalOs", + "type": 6 + }, + "PackedSurfaceTangentOs": { + "field": "m_nPackedSurfaceTangentOs", + "type": 6 + } + }, + "RenderSkeletonBone_t": { + "BoneName": { + "field": "m_boneName", + "type": 14 + }, + "ParentName": { + "field": "m_parentName", + "type": 14 + }, + "Bbox": { + "field": "m_bbox", + "classname": "SkeletonBoneBounds_t", + "type": 16 + }, + "SphereRadius": { + "field": "m_flSphereRadius", + "type": 8 + } + }, + "SkeletonAnimCapture_t": { + "EntIndex": { + "field": "m_nEntIndex", + "type": 2 + }, + "EntParent": { + "field": "m_nEntParent", + "type": 2 + }, + "ImportedCollision": { + "field": "m_ImportedCollision", + "type": 53 + }, + "ModelName": { + "field": "m_ModelName", + "type": 14 + }, + "CaptureName": { + "field": "m_CaptureName", + "type": 14 + }, + "FlexControllers": { + "field": "m_nFlexControllers", + "type": 2 + }, + "Predicted": { + "field": "m_bPredicted", + "type": 10 + } + }, + "SkeletonBoneBounds_t": { + "Center": { + "field": "m_vecCenter", + "type": 21 + }, + "Size": { + "field": "m_vecSize", + "type": 21 + } + }, + "SkeletonDemoDb_t": { + "RecordingTime": { + "field": "m_flRecordingTime", + "type": 8 + } + }, + "VPhysXAggregateData_t": { + "Flags": { + "field": "m_nFlags", + "type": 5 + }, + "RefCounter": { + "field": "m_nRefCounter", + "type": 5 + }, + "BonesHash": { + "field": "m_bonesHash", + "type": 57 + }, + "BoneNames": { + "field": "m_boneNames", + "type": 50 + }, + "IndexNames": { + "field": "m_indexNames", + "type": 56 + }, + "IndexHash": { + "field": "m_indexHash", + "type": 56 + }, + "FeModel": { + "field": "m_pFeModel", + "classname": "PhysFeModelDesc_t", + "type": 24 + }, + "BoneParents": { + "field": "m_boneParents", + "type": 56 + }, + "SurfacePropertyHashes": { + "field": "m_surfacePropertyHashes", + "type": 57 + }, + "DebugPartNames": { + "field": "m_debugPartNames", + "type": 50 + }, + "EmbeddedKeyvalues": { + "field": "m_embeddedKeyvalues", + "type": 14 + } + }, + "VPhysXBodyPart_t": { + "Flags": { + "field": "m_nFlags", + "type": 6 + }, + "Mass": { + "field": "m_flMass", + "type": 8 + }, + "RnShape": { + "field": "m_rnShape", + "classname": "VPhysics2ShapeDef_t", + "type": 16 + }, + "CollisionAttributeIndex": { + "field": "m_nCollisionAttributeIndex", + "type": 5 + }, + "Reserved": { + "field": "m_nReserved", + "type": 5 + }, + "InertiaScale": { + "field": "m_flInertiaScale", + "type": 8 + }, + "LinearDamping": { + "field": "m_flLinearDamping", + "type": 8 + }, + "AngularDamping": { + "field": "m_flAngularDamping", + "type": 8 + }, + "OverrideMassCenter": { + "field": "m_bOverrideMassCenter", + "type": 10 + }, + "MassCenterOverride": { + "field": "m_vMassCenterOverride", + "type": 21 + } + }, + "VPhysXCollisionAttributes_t": { + "CollisionGroup": { + "field": "m_CollisionGroup", + "type": 6 + }, + "InteractAs": { + "field": "m_InteractAs", + "type": 57 + }, + "InteractWith": { + "field": "m_InteractWith", + "type": 57 + }, + "InteractExclude": { + "field": "m_InteractExclude", + "type": 57 + }, + "CollisionGroupString": { + "field": "m_CollisionGroupString", + "type": 14 + }, + "InteractAsStrings": { + "field": "m_InteractAsStrings", + "type": 50 + }, + "InteractWithStrings": { + "field": "m_InteractWithStrings", + "type": 50 + }, + "InteractExcludeStrings": { + "field": "m_InteractExcludeStrings", + "type": 50 + } + }, + "VPhysXConstraint2_t": { + "Flags": { + "field": "m_nFlags", + "type": 6 + }, + "Parent": { + "field": "m_nParent", + "type": 5 + }, + "Child": { + "field": "m_nChild", + "type": 5 + }, + "Params": { + "field": "m_params", + "classname": "VPhysXConstraintParams_t", + "type": 16 + } + }, + "VPhysXConstraintParams_t": { + "Type": { + "field": "m_nType", + "type": 0 + }, + "TranslateMotion": { + "field": "m_nTranslateMotion", + "type": 0 + }, + "RotateMotion": { + "field": "m_nRotateMotion", + "type": 0 + }, + "Flags": { + "field": "m_nFlags", + "type": 0 + }, + "Anchor": { + "field": "m_anchor", + "type": 42, + "size": 2 + }, + "MaxForce": { + "field": "m_maxForce", + "type": 8 + }, + "MaxTorque": { + "field": "m_maxTorque", + "type": 8 + }, + "LinearLimitValue": { + "field": "m_linearLimitValue", + "type": 8 + }, + "LinearLimitRestitution": { + "field": "m_linearLimitRestitution", + "type": 8 + }, + "LinearLimitSpring": { + "field": "m_linearLimitSpring", + "type": 8 + }, + "LinearLimitDamping": { + "field": "m_linearLimitDamping", + "type": 8 + }, + "TwistLowLimitValue": { + "field": "m_twistLowLimitValue", + "type": 8 + }, + "TwistLowLimitRestitution": { + "field": "m_twistLowLimitRestitution", + "type": 8 + }, + "TwistLowLimitSpring": { + "field": "m_twistLowLimitSpring", + "type": 8 + }, + "TwistLowLimitDamping": { + "field": "m_twistLowLimitDamping", + "type": 8 + }, + "TwistHighLimitValue": { + "field": "m_twistHighLimitValue", + "type": 8 + }, + "TwistHighLimitRestitution": { + "field": "m_twistHighLimitRestitution", + "type": 8 + }, + "TwistHighLimitSpring": { + "field": "m_twistHighLimitSpring", + "type": 8 + }, + "TwistHighLimitDamping": { + "field": "m_twistHighLimitDamping", + "type": 8 + }, + "Swing1LimitValue": { + "field": "m_swing1LimitValue", + "type": 8 + }, + "Swing1LimitRestitution": { + "field": "m_swing1LimitRestitution", + "type": 8 + }, + "Swing1LimitSpring": { + "field": "m_swing1LimitSpring", + "type": 8 + }, + "Swing1LimitDamping": { + "field": "m_swing1LimitDamping", + "type": 8 + }, + "Swing2LimitValue": { + "field": "m_swing2LimitValue", + "type": 8 + }, + "Swing2LimitRestitution": { + "field": "m_swing2LimitRestitution", + "type": 8 + }, + "Swing2LimitSpring": { + "field": "m_swing2LimitSpring", + "type": 8 + }, + "Swing2LimitDamping": { + "field": "m_swing2LimitDamping", + "type": 8 + }, + "GoalPosition": { + "field": "m_goalPosition", + "type": 21 + }, + "GoalAngularVelocity": { + "field": "m_goalAngularVelocity", + "type": 21 + }, + "DriveSpringX": { + "field": "m_driveSpringX", + "type": 8 + }, + "DriveSpringY": { + "field": "m_driveSpringY", + "type": 8 + }, + "DriveSpringZ": { + "field": "m_driveSpringZ", + "type": 8 + }, + "DriveDampingX": { + "field": "m_driveDampingX", + "type": 8 + }, + "DriveDampingY": { + "field": "m_driveDampingY", + "type": 8 + }, + "DriveDampingZ": { + "field": "m_driveDampingZ", + "type": 8 + }, + "DriveSpringTwist": { + "field": "m_driveSpringTwist", + "type": 8 + }, + "DriveSpringSwing": { + "field": "m_driveSpringSwing", + "type": 8 + }, + "DriveSpringSlerp": { + "field": "m_driveSpringSlerp", + "type": 8 + }, + "DriveDampingTwist": { + "field": "m_driveDampingTwist", + "type": 8 + }, + "DriveDampingSwing": { + "field": "m_driveDampingSwing", + "type": 8 + }, + "DriveDampingSlerp": { + "field": "m_driveDampingSlerp", + "type": 8 + }, + "SolverIterationCount": { + "field": "m_solverIterationCount", + "type": 2 + }, + "ProjectionLinearTolerance": { + "field": "m_projectionLinearTolerance", + "type": 8 + }, + "ProjectionAngularTolerance": { + "field": "m_projectionAngularTolerance", + "type": 8 + } + }, + "VPhysXJoint_t": { + "Type": { + "field": "m_nType", + "type": 5 + }, + "Body1": { + "field": "m_nBody1", + "type": 5 + }, + "Body2": { + "field": "m_nBody2", + "type": 5 + }, + "Flags": { + "field": "m_nFlags", + "type": 5 + }, + "EnableCollision": { + "field": "m_bEnableCollision", + "type": 10 + }, + "EnableLinearLimit": { + "field": "m_bEnableLinearLimit", + "type": 10 + }, + "LinearLimit": { + "field": "m_LinearLimit", + "classname": "VPhysXRange_t", + "type": 16 + }, + "EnableLinearMotor": { + "field": "m_bEnableLinearMotor", + "type": 10 + }, + "LinearTargetVelocity": { + "field": "m_vLinearTargetVelocity", + "type": 21 + }, + "MaxForce": { + "field": "m_flMaxForce", + "type": 8 + }, + "EnableSwingLimit": { + "field": "m_bEnableSwingLimit", + "type": 10 + }, + "SwingLimit": { + "field": "m_SwingLimit", + "classname": "VPhysXRange_t", + "type": 16 + }, + "EnableTwistLimit": { + "field": "m_bEnableTwistLimit", + "type": 10 + }, + "TwistLimit": { + "field": "m_TwistLimit", + "classname": "VPhysXRange_t", + "type": 16 + }, + "EnableAngularMotor": { + "field": "m_bEnableAngularMotor", + "type": 10 + }, + "AngularTargetVelocity": { + "field": "m_vAngularTargetVelocity", + "type": 21 + }, + "MaxTorque": { + "field": "m_flMaxTorque", + "type": 8 + }, + "LinearFrequency": { + "field": "m_flLinearFrequency", + "type": 8 + }, + "LinearDampingRatio": { + "field": "m_flLinearDampingRatio", + "type": 8 + }, + "AngularFrequency": { + "field": "m_flAngularFrequency", + "type": 8 + }, + "AngularDampingRatio": { + "field": "m_flAngularDampingRatio", + "type": 8 + }, + "Friction": { + "field": "m_flFriction", + "type": 8 + }, + "Elasticity": { + "field": "m_flElasticity", + "type": 8 + }, + "ElasticDamping": { + "field": "m_flElasticDamping", + "type": 8 + }, + "Plasticity": { + "field": "m_flPlasticity", + "type": 8 + } + }, + "VPhysXRange_t": { + "Min": { + "field": "m_flMin", + "type": 8 + }, + "Max": { + "field": "m_flMax", + "type": 8 + } + }, + "VPhysics2ShapeDef_t": { + "CollisionAttributeIndices": { + "field": "m_CollisionAttributeIndices", + "type": 56 + } + }, + "CNavHullPresetVData": { + "NavHulls": { + "field": "m_vecNavHulls", + "type": 50 + } + }, + "CNavHullVData": { + "AgentEnabled": { + "field": "m_bAgentEnabled", + "type": 10 + }, + "AgentRadius": { + "field": "m_agentRadius", + "type": 8 + }, + "AgentHeight": { + "field": "m_agentHeight", + "type": 8 + }, + "AgentShortHeightEnabled": { + "field": "m_agentShortHeightEnabled", + "type": 10 + }, + "AgentShortHeight": { + "field": "m_agentShortHeight", + "type": 8 + }, + "AgentMaxClimb": { + "field": "m_agentMaxClimb", + "type": 8 + }, + "AgentMaxSlope": { + "field": "m_agentMaxSlope", + "type": 2 + }, + "AgentMaxJumpDownDist": { + "field": "m_agentMaxJumpDownDist", + "type": 8 + }, + "AgentMaxJumpHorizDistBase": { + "field": "m_agentMaxJumpHorizDistBase", + "type": 8 + }, + "AgentMaxJumpUpDist": { + "field": "m_agentMaxJumpUpDist", + "type": 8 + }, + "AgentBorderErosion": { + "field": "m_agentBorderErosion", + "type": 2 + }, + "FlowMapGenerationEnabled": { + "field": "m_flowMapGenerationEnabled", + "type": 10 + }, + "FlowMapNodeMaxRadius": { + "field": "m_flowMapNodeMaxRadius", + "type": 8 + } + }, + "CNavVolume": {}, + "CNavVolumeAll": { + "Parent": { + "field": "CNavVolumeVector", + "type": 11 + } + }, + "CNavVolumeSphere": { + "Center": { + "field": "m_vCenter", + "type": 21 + }, + "Radius": { + "field": "m_flRadius", + "type": 8 + }, + "Parent": { + "field": "CNavVolume", + "type": 11 + } + }, + "CNavVolumeSphericalShell": { + "RadiusInner": { + "field": "m_flRadiusInner", + "type": 8 + }, + "Parent": { + "field": "CNavVolumeSphere", + "type": 11 + } + }, + "CNavVolumeVector": { + "HasBeenPreFiltered": { + "field": "m_bHasBeenPreFiltered", + "type": 10 + }, + "Parent": { + "field": "CNavVolume", + "type": 11 + } + }, + "Extent": { + "Lo": { + "field": "lo", + "type": 21 + }, + "Hi": { + "field": "hi", + "type": 21 + } + }, + "NavGravity_t": { + "Gravity": { + "field": "m_vGravity", + "type": 21 + }, + "Default": { + "field": "m_bDefault", + "type": 10 + } + }, + "ChangeAccessorFieldPathIndex_t": { + "Value": { + "field": "m_Value", + "type": 2 + } + }, + "CBaseRendererSource2": { + "RadiusScale": { + "field": "m_flRadiusScale", + "classname": "CParticleCollectionRendererFloatInput", + "type": 16 + }, + "AlphaScale": { + "field": "m_flAlphaScale", + "classname": "CParticleCollectionRendererFloatInput", + "type": 16 + }, + "RollScale": { + "field": "m_flRollScale", + "classname": "CParticleCollectionRendererFloatInput", + "type": 16 + }, + "Alpha2Field": { + "field": "m_nAlpha2Field", + "classname": "ParticleAttributeIndex_t", + "type": 16 + }, + "ColorScale": { + "field": "m_vecColorScale", + "classname": "CParticleCollectionRendererVecInput", + "type": 16 + }, + "ColorBlendType": { + "field": "m_nColorBlendType", + "type": 6 + }, + "ShaderType": { + "field": "m_nShaderType", + "type": 6 + }, + "StrShaderOverride": { + "field": "m_strShaderOverride", + "type": 14 + }, + "CenterXOffset": { + "field": "m_flCenterXOffset", + "classname": "CParticleCollectionRendererFloatInput", + "type": 16 + }, + "CenterYOffset": { + "field": "m_flCenterYOffset", + "classname": "CParticleCollectionRendererFloatInput", + "type": 16 + }, + "BumpStrength": { + "field": "m_flBumpStrength", + "type": 8 + }, + "CropTextureOverride": { + "field": "m_nCropTextureOverride", + "type": 6 + }, + "AnimationRate": { + "field": "m_flAnimationRate", + "type": 8 + }, + "AnimationType": { + "field": "m_nAnimationType", + "type": 6 + }, + "AnimateInFPS": { + "field": "m_bAnimateInFPS", + "type": 10 + }, + "MotionVectorScaleU": { + "field": "m_flMotionVectorScaleU", + "classname": "CParticleCollectionRendererFloatInput", + "type": 16 + }, + "MotionVectorScaleV": { + "field": "m_flMotionVectorScaleV", + "classname": "CParticleCollectionRendererFloatInput", + "type": 16 + }, + "SelfIllumAmount": { + "field": "m_flSelfIllumAmount", + "classname": "CParticleCollectionRendererFloatInput", + "type": 16 + }, + "DiffuseAmount": { + "field": "m_flDiffuseAmount", + "classname": "CParticleCollectionRendererFloatInput", + "type": 16 + }, + "DiffuseClamp": { + "field": "m_flDiffuseClamp", + "classname": "CParticleCollectionRendererFloatInput", + "type": 16 + }, + "LightingControlPoint": { + "field": "m_nLightingControlPoint", + "type": 2 + }, + "SelfIllumPerParticle": { + "field": "m_nSelfIllumPerParticle", + "classname": "ParticleAttributeIndex_t", + "type": 16 + }, + "OutputBlendMode": { + "field": "m_nOutputBlendMode", + "type": 6 + }, + "GammaCorrectVertexColors": { + "field": "m_bGammaCorrectVertexColors", + "type": 10 + }, + "SaturateColorPreAlphaBlend": { + "field": "m_bSaturateColorPreAlphaBlend", + "type": 10 + }, + "AddSelfAmount": { + "field": "m_flAddSelfAmount", + "classname": "CParticleCollectionRendererFloatInput", + "type": 16 + }, + "Desaturation": { + "field": "m_flDesaturation", + "classname": "CParticleCollectionRendererFloatInput", + "type": 16 + }, + "OverbrightFactor": { + "field": "m_flOverbrightFactor", + "classname": "CParticleCollectionRendererFloatInput", + "type": 16 + }, + "HSVShiftControlPoint": { + "field": "m_nHSVShiftControlPoint", + "type": 2 + }, + "FogType": { + "field": "m_nFogType", + "type": 6 + }, + "FogAmount": { + "field": "m_flFogAmount", + "classname": "CParticleCollectionRendererFloatInput", + "type": 16 + }, + "TintByFOW": { + "field": "m_bTintByFOW", + "type": 10 + }, + "TintByGlobalLight": { + "field": "m_bTintByGlobalLight", + "type": 10 + }, + "PerParticleAlphaReference": { + "field": "m_nPerParticleAlphaReference", + "type": 6 + }, + "PerParticleAlphaRefWindow": { + "field": "m_nPerParticleAlphaRefWindow", + "type": 6 + }, + "AlphaReferenceType": { + "field": "m_nAlphaReferenceType", + "type": 6 + }, + "AlphaReferenceSoftness": { + "field": "m_flAlphaReferenceSoftness", + "classname": "CParticleCollectionRendererFloatInput", + "type": 16 + }, + "SourceAlphaValueToMapToZero": { + "field": "m_flSourceAlphaValueToMapToZero", + "classname": "CParticleCollectionRendererFloatInput", + "type": 16 + }, + "SourceAlphaValueToMapToOne": { + "field": "m_flSourceAlphaValueToMapToOne", + "classname": "CParticleCollectionRendererFloatInput", + "type": 16 + }, + "Refract": { + "field": "m_bRefract", + "type": 10 + }, + "RefractSolid": { + "field": "m_bRefractSolid", + "type": 10 + }, + "RefractAmount": { + "field": "m_flRefractAmount", + "classname": "CParticleCollectionRendererFloatInput", + "type": 16 + }, + "RefractBlurRadius": { + "field": "m_nRefractBlurRadius", + "type": 2 + }, + "RefractBlurType": { + "field": "m_nRefractBlurType", + "type": 6 + }, + "OnlyRenderInEffectsBloomPass": { + "field": "m_bOnlyRenderInEffectsBloomPass", + "type": 10 + }, + "OnlyRenderInEffectsWaterPass": { + "field": "m_bOnlyRenderInEffectsWaterPass", + "type": 10 + }, + "UseMixedResolutionRendering": { + "field": "m_bUseMixedResolutionRendering", + "type": 10 + }, + "OnlyRenderInEffecsGameOverlay": { + "field": "m_bOnlyRenderInEffecsGameOverlay", + "type": 10 + }, + "StencilTestID": { + "field": "m_stencilTestID", + "type": 15, + "size": 128 + }, + "StencilTestExclude": { + "field": "m_bStencilTestExclude", + "type": 10 + }, + "StencilWriteID": { + "field": "m_stencilWriteID", + "type": 15, + "size": 128 + }, + "WriteStencilOnDepthPass": { + "field": "m_bWriteStencilOnDepthPass", + "type": 10 + }, + "WriteStencilOnDepthFail": { + "field": "m_bWriteStencilOnDepthFail", + "type": 10 + }, + "ReverseZBuffering": { + "field": "m_bReverseZBuffering", + "type": 10 + }, + "DisableZBuffering": { + "field": "m_bDisableZBuffering", + "type": 10 + }, + "FeatheringMode": { + "field": "m_nFeatheringMode", + "type": 6 + }, + "FeatheringMinDist": { + "field": "m_flFeatheringMinDist", + "classname": "CParticleCollectionRendererFloatInput", + "type": 16 + }, + "FeatheringMaxDist": { + "field": "m_flFeatheringMaxDist", + "classname": "CParticleCollectionRendererFloatInput", + "type": 16 + }, + "FeatheringFilter": { + "field": "m_flFeatheringFilter", + "classname": "CParticleCollectionRendererFloatInput", + "type": 16 + }, + "DepthBias": { + "field": "m_flDepthBias", + "classname": "CParticleCollectionRendererFloatInput", + "type": 16 + }, + "SortMethod": { + "field": "m_nSortMethod", + "type": 6 + }, + "BlendFramesSeq0": { + "field": "m_bBlendFramesSeq0", + "type": 10 + }, + "MaxLuminanceBlendingSequence0": { + "field": "m_bMaxLuminanceBlendingSequence0", + "type": 10 + }, + "Parent": { + "field": "CParticleFunctionRenderer", + "type": 11 + } + }, + "CBaseTrailRenderer": { + "OrientationType": { + "field": "m_nOrientationType", + "type": 6 + }, + "OrientationControlPoint": { + "field": "m_nOrientationControlPoint", + "type": 2 + }, + "MinSize": { + "field": "m_flMinSize", + "type": 8 + }, + "MaxSize": { + "field": "m_flMaxSize", + "type": 8 + }, + "StartFadeSize": { + "field": "m_flStartFadeSize", + "classname": "CParticleCollectionRendererFloatInput", + "type": 16 + }, + "EndFadeSize": { + "field": "m_flEndFadeSize", + "classname": "CParticleCollectionRendererFloatInput", + "type": 16 + }, + "ClampV": { + "field": "m_bClampV", + "type": 10 + }, + "Parent": { + "field": "CBaseRendererSource2", + "type": 11 + } + }, + "CGeneralRandomRotation": { + "FieldOutput": { + "field": "m_nFieldOutput", + "classname": "ParticleAttributeIndex_t", + "type": 16 + }, + "Degrees": { + "field": "m_flDegrees", + "type": 8 + }, + "DegreesMin": { + "field": "m_flDegreesMin", + "type": 8 + }, + "DegreesMax": { + "field": "m_flDegreesMax", + "type": 8 + }, + "RotationRandExponent": { + "field": "m_flRotationRandExponent", + "type": 8 + }, + "RandomlyFlipDirection": { + "field": "m_bRandomlyFlipDirection", + "type": 10 + }, + "Parent": { + "field": "CParticleFunctionInitializer", + "type": 11 + } + }, + "CGeneralSpin": { + "SpinRateDegrees": { + "field": "m_nSpinRateDegrees", + "type": 2 + }, + "SpinRateMinDegrees": { + "field": "m_nSpinRateMinDegrees", + "type": 2 + }, + "SpinRateStopTime": { + "field": "m_fSpinRateStopTime", + "type": 8 + }, + "Parent": { + "field": "CParticleFunctionOperator", + "type": 11 + } + }, + "CParticleFunction": { + "OpStrength": { + "field": "m_flOpStrength", + "classname": "CParticleCollectionFloatInput", + "type": 16 + }, + "OpEndCapState": { + "field": "m_nOpEndCapState", + "type": 6 + }, + "OpStartFadeInTime": { + "field": "m_flOpStartFadeInTime", + "type": 8 + }, + "OpEndFadeInTime": { + "field": "m_flOpEndFadeInTime", + "type": 8 + }, + "OpStartFadeOutTime": { + "field": "m_flOpStartFadeOutTime", + "type": 8 + }, + "OpEndFadeOutTime": { + "field": "m_flOpEndFadeOutTime", + "type": 8 + }, + "OpFadeOscillatePeriod": { + "field": "m_flOpFadeOscillatePeriod", + "type": 8 + }, + "NormalizeToStopTime": { + "field": "m_bNormalizeToStopTime", + "type": 10 + }, + "OpTimeOffsetMin": { + "field": "m_flOpTimeOffsetMin", + "type": 8 + }, + "OpTimeOffsetMax": { + "field": "m_flOpTimeOffsetMax", + "type": 8 + }, + "OpTimeOffsetSeed": { + "field": "m_nOpTimeOffsetSeed", + "type": 2 + }, + "OpTimeScaleSeed": { + "field": "m_nOpTimeScaleSeed", + "type": 2 + }, + "OpTimeScaleMin": { + "field": "m_flOpTimeScaleMin", + "type": 8 + }, + "OpTimeScaleMax": { + "field": "m_flOpTimeScaleMax", + "type": 8 + }, + "DisableOperator": { + "field": "m_bDisableOperator", + "type": 10 + }, + "Notes": { + "field": "m_Notes", + "type": 14 + } + }, + "CParticleFunctionConstraint": { + "Parent": { + "field": "CParticleFunction", + "type": 11 + } + }, + "CParticleFunctionEmitter": { + "EmitterIndex": { + "field": "m_nEmitterIndex", + "type": 2 + }, + "Parent": { + "field": "CParticleFunction", + "type": 11 + } + }, + "CParticleFunctionForce": { + "Parent": { + "field": "CParticleFunction", + "type": 11 + } + }, + "CParticleFunctionInitializer": { + "AssociatedEmitterIndex": { + "field": "m_nAssociatedEmitterIndex", + "type": 2 + }, + "Parent": { + "field": "CParticleFunction", + "type": 11 + } + }, + "CParticleFunctionOperator": { + "Parent": { + "field": "CParticleFunction", + "type": 11 + } + }, + "CParticleFunctionPreEmission": { + "RunOnce": { + "field": "m_bRunOnce", + "type": 10 + }, + "Parent": { + "field": "CParticleFunctionOperator", + "type": 11 + } + }, + "CParticleFunctionRenderer": { + "VisibilityInputs": { + "field": "VisibilityInputs", + "classname": "CParticleVisibilityInputs", + "type": 16 + }, + "CannotBeRefracted": { + "field": "m_bCannotBeRefracted", + "type": 10 + }, + "SkipRenderingOnMobile": { + "field": "m_bSkipRenderingOnMobile", + "type": 10 + }, + "Parent": { + "field": "CParticleFunction", + "type": 11 + } + }, + "CParticleMassCalculationParameters": { + "MassMode": { + "field": "m_nMassMode", + "type": 6 + }, + "Radius": { + "field": "m_flRadius", + "classname": "CPerParticleFloatInput", + "type": 16 + }, + "NominalRadius": { + "field": "m_flNominalRadius", + "classname": "CPerParticleFloatInput", + "type": 16 + }, + "Scale": { + "field": "m_flScale", + "classname": "CPerParticleFloatInput", + "type": 16 + } + }, + "CParticleSystemDefinition": { + "BehaviorVersion": { + "field": "m_nBehaviorVersion", + "type": 2 + }, + "FirstMultipleOverride_BackwardCompat": { + "field": "m_nFirstMultipleOverride_BackwardCompat", + "type": 2 + }, + "InitialParticles": { + "field": "m_nInitialParticles", + "type": 2 + }, + "MaxParticles": { + "field": "m_nMaxParticles", + "type": 2 + }, + "GroupID": { + "field": "m_nGroupID", + "type": 2 + }, + "BoundingBoxMin": { + "field": "m_BoundingBoxMin", + "type": 21 + }, + "BoundingBoxMax": { + "field": "m_BoundingBoxMax", + "type": 21 + }, + "DepthSortBias": { + "field": "m_flDepthSortBias", + "type": 8 + }, + "SortOverridePositionCP": { + "field": "m_nSortOverridePositionCP", + "type": 2 + }, + "InfiniteBounds": { + "field": "m_bInfiniteBounds", + "type": 10 + }, + "EnableNamedValues": { + "field": "m_bEnableNamedValues", + "type": 10 + }, + "NamedValueDomain": { + "field": "m_NamedValueDomain", + "type": 14 + }, + "ConstantColor": { + "field": "m_ConstantColor", + "type": 19 + }, + "ConstantNormal": { + "field": "m_ConstantNormal", + "type": 21 + }, + "ConstantRadius": { + "field": "m_flConstantRadius", + "type": 8 + }, + "ConstantRotation": { + "field": "m_flConstantRotation", + "type": 8 + }, + "ConstantRotationSpeed": { + "field": "m_flConstantRotationSpeed", + "type": 8 + }, + "ConstantLifespan": { + "field": "m_flConstantLifespan", + "type": 8 + }, + "ConstantSequenceNumber": { + "field": "m_nConstantSequenceNumber", + "type": 2 + }, + "ConstantSequenceNumber1": { + "field": "m_nConstantSequenceNumber1", + "type": 2 + }, + "SnapshotControlPoint": { + "field": "m_nSnapshotControlPoint", + "type": 2 + }, + "CullRadius": { + "field": "m_flCullRadius", + "type": 8 + }, + "CullFillCost": { + "field": "m_flCullFillCost", + "type": 8 + }, + "CullControlPoint": { + "field": "m_nCullControlPoint", + "type": 2 + }, + "FallbackMaxCount": { + "field": "m_nFallbackMaxCount", + "type": 2 + }, + "PreSimulationTime": { + "field": "m_flPreSimulationTime", + "type": 8 + }, + "StopSimulationAfterTime": { + "field": "m_flStopSimulationAfterTime", + "type": 8 + }, + "MaximumTimeStep": { + "field": "m_flMaximumTimeStep", + "type": 8 + }, + "MaximumSimTime": { + "field": "m_flMaximumSimTime", + "type": 8 + }, + "MinimumSimTime": { + "field": "m_flMinimumSimTime", + "type": 8 + }, + "MinimumTimeStep": { + "field": "m_flMinimumTimeStep", + "type": 8 + }, + "MinimumFrames": { + "field": "m_nMinimumFrames", + "type": 2 + }, + "MinCPULevel": { + "field": "m_nMinCPULevel", + "type": 2 + }, + "MinGPULevel": { + "field": "m_nMinGPULevel", + "type": 2 + }, + "NoDrawTimeToGoToSleep": { + "field": "m_flNoDrawTimeToGoToSleep", + "type": 8 + }, + "MaxDrawDistance": { + "field": "m_flMaxDrawDistance", + "type": 8 + }, + "StartFadeDistance": { + "field": "m_flStartFadeDistance", + "type": 8 + }, + "MaxCreationDistance": { + "field": "m_flMaxCreationDistance", + "type": 8 + }, + "AggregationMinAvailableParticles": { + "field": "m_nAggregationMinAvailableParticles", + "type": 2 + }, + "AggregateRadius": { + "field": "m_flAggregateRadius", + "type": 8 + }, + "ShouldBatch": { + "field": "m_bShouldBatch", + "type": 10 + }, + "ShouldHitboxesFallbackToRenderBounds": { + "field": "m_bShouldHitboxesFallbackToRenderBounds", + "type": 10 + }, + "ShouldHitboxesFallbackToSnapshot": { + "field": "m_bShouldHitboxesFallbackToSnapshot", + "type": 10 + }, + "ShouldHitboxesFallbackToCollisionHulls": { + "field": "m_bShouldHitboxesFallbackToCollisionHulls", + "type": 10 + }, + "ViewModelEffect": { + "field": "m_nViewModelEffect", + "type": 6 + }, + "ScreenSpaceEffect": { + "field": "m_bScreenSpaceEffect", + "type": 10 + }, + "TargetLayerID": { + "field": "m_pszTargetLayerID", + "type": 13 + }, + "SkipRenderControlPoint": { + "field": "m_nSkipRenderControlPoint", + "type": 2 + }, + "AllowRenderControlPoint": { + "field": "m_nAllowRenderControlPoint", + "type": 2 + }, + "ShouldSort": { + "field": "m_bShouldSort", + "type": 10 + } + }, + "CParticleVisibilityInputs": { + "CameraBias": { + "field": "m_flCameraBias", + "type": 8 + }, + "CPin": { + "field": "m_nCPin", + "type": 2 + }, + "ProxyRadius": { + "field": "m_flProxyRadius", + "type": 8 + }, + "InputMin": { + "field": "m_flInputMin", + "type": 8 + }, + "InputMax": { + "field": "m_flInputMax", + "type": 8 + }, + "InputPixelVisFade": { + "field": "m_flInputPixelVisFade", + "type": 8 + }, + "NoPixelVisibilityFallback": { + "field": "m_flNoPixelVisibilityFallback", + "type": 8 + }, + "DistanceInputMin": { + "field": "m_flDistanceInputMin", + "type": 8 + }, + "DistanceInputMax": { + "field": "m_flDistanceInputMax", + "type": 8 + }, + "DotInputMin": { + "field": "m_flDotInputMin", + "type": 8 + }, + "DotInputMax": { + "field": "m_flDotInputMax", + "type": 8 + }, + "DotCPAngles": { + "field": "m_bDotCPAngles", + "type": 10 + }, + "DotCameraAngles": { + "field": "m_bDotCameraAngles", + "type": 10 + }, + "AlphaScaleMin": { + "field": "m_flAlphaScaleMin", + "type": 8 + }, + "AlphaScaleMax": { + "field": "m_flAlphaScaleMax", + "type": 8 + }, + "RadiusScaleMin": { + "field": "m_flRadiusScaleMin", + "type": 8 + }, + "RadiusScaleMax": { + "field": "m_flRadiusScaleMax", + "type": 8 + }, + "RadiusScaleFOVBase": { + "field": "m_flRadiusScaleFOVBase", + "type": 8 + }, + "RightEye": { + "field": "m_bRightEye", + "type": 10 + } + }, + "CPathParameters": { + "StartControlPointNumber": { + "field": "m_nStartControlPointNumber", + "type": 2 + }, + "EndControlPointNumber": { + "field": "m_nEndControlPointNumber", + "type": 2 + }, + "BulgeControl": { + "field": "m_nBulgeControl", + "type": 2 + }, + "Bulge": { + "field": "m_flBulge", + "type": 8 + }, + "MidPoint": { + "field": "m_flMidPoint", + "type": 8 + }, + "StartPointOffset": { + "field": "m_vStartPointOffset", + "type": 21 + }, + "MidPointOffset": { + "field": "m_vMidPointOffset", + "type": 21 + }, + "EndOffset": { + "field": "m_vEndOffset", + "type": 21 + } + }, + "CRandomNumberGeneratorParameters": { + "DistributeEvenly": { + "field": "m_bDistributeEvenly", + "type": 10 + }, + "Seed": { + "field": "m_nSeed", + "type": 2 + } + }, + "CReplicationParameters": { + "ReplicationMode": { + "field": "m_nReplicationMode", + "type": 6 + }, + "ScaleChildParticleRadii": { + "field": "m_bScaleChildParticleRadii", + "type": 10 + }, + "MinRandomRadiusScale": { + "field": "m_flMinRandomRadiusScale", + "classname": "CParticleCollectionFloatInput", + "type": 16 + }, + "MaxRandomRadiusScale": { + "field": "m_flMaxRandomRadiusScale", + "classname": "CParticleCollectionFloatInput", + "type": 16 + }, + "ModellingScale": { + "field": "m_flModellingScale", + "classname": "CParticleCollectionFloatInput", + "type": 16 + } + }, + "CSpinUpdateBase": { + "Parent": { + "field": "CParticleFunctionOperator", + "type": 11 + } + }, + "CollisionGroupContext_t": { + "CollisionGroupNumber": { + "field": "m_nCollisionGroupNumber", + "type": 2 + } + }, + "ControlPointReference_t": { + "ControlPointNameString": { + "field": "m_controlPointNameString", + "type": 2 + }, + "OffsetFromControlPoint": { + "field": "m_vOffsetFromControlPoint", + "type": 21 + }, + "OffsetInLocalSpace": { + "field": "m_bOffsetInLocalSpace", + "type": 10 + } + }, + "IParticleCollection": {}, + "MaterialVariable_t": { + "StrVariable": { + "field": "m_strVariable", + "type": 14 + }, + "VariableField": { + "field": "m_nVariableField", + "classname": "ParticleAttributeIndex_t", + "type": 16 + }, + "Scale": { + "field": "m_flScale", + "type": 8 + } + }, + "ModelReference_t": { + "RelativeProbabilityOfSpawn": { + "field": "m_flRelativeProbabilityOfSpawn", + "type": 8 + } + }, + "ParticleAttributeIndex_t": { + "Value": { + "field": "m_Value", + "type": 2 + } + }, + "ParticleChildrenInfo_t": { + "Delay": { + "field": "m_flDelay", + "type": 8 + }, + "EndCap": { + "field": "m_bEndCap", + "type": 10 + }, + "DisableChild": { + "field": "m_bDisableChild", + "type": 10 + }, + "DetailLevel": { + "field": "m_nDetailLevel", + "type": 6 + } + }, + "ParticleControlPointConfiguration_t": { + "Name": { + "field": "m_name", + "type": 14 + }, + "PreviewState": { + "field": "m_previewState", + "classname": "ParticlePreviewState_t", + "type": 16 + } + }, + "ParticleControlPointDriver_t": { + "ControlPoint": { + "field": "m_iControlPoint", + "type": 2 + }, + "AttachType": { + "field": "m_iAttachType", + "type": 6 + }, + "AttachmentName": { + "field": "m_attachmentName", + "type": 14 + }, + "Offset": { + "field": "m_vecOffset", + "type": 21 + }, + "Offset1": { + "field": "m_angOffset", + "type": 20 + }, + "EntityName": { + "field": "m_entityName", + "type": 14 + } + }, + "ParticlePreviewBodyGroup_t": { + "BodyGroupName": { + "field": "m_bodyGroupName", + "type": 14 + }, + "Value": { + "field": "m_nValue", + "type": 2 + } + }, + "ParticlePreviewState_t": { + "PreviewModel": { + "field": "m_previewModel", + "type": 14 + }, + "ModSpecificData": { + "field": "m_nModSpecificData", + "type": 6 + }, + "GroundType": { + "field": "m_groundType", + "type": 6 + }, + "SequenceName": { + "field": "m_sequenceName", + "type": 14 + }, + "FireParticleOnSequenceFrame": { + "field": "m_nFireParticleOnSequenceFrame", + "type": 2 + }, + "HitboxSetName": { + "field": "m_hitboxSetName", + "type": 14 + }, + "MaterialGroupName": { + "field": "m_materialGroupName", + "type": 14 + }, + "PlaybackSpeed": { + "field": "m_flPlaybackSpeed", + "type": 8 + }, + "ParticleSimulationRate": { + "field": "m_flParticleSimulationRate", + "type": 8 + }, + "ShouldDrawHitboxes": { + "field": "m_bShouldDrawHitboxes", + "type": 10 + }, + "ShouldDrawAttachments": { + "field": "m_bShouldDrawAttachments", + "type": 10 + }, + "ShouldDrawAttachmentNames": { + "field": "m_bShouldDrawAttachmentNames", + "type": 10 + }, + "ShouldDrawControlPointAxes": { + "field": "m_bShouldDrawControlPointAxes", + "type": 10 + }, + "AnimationNonLooping": { + "field": "m_bAnimationNonLooping", + "type": 10 + }, + "PreviewGravity": { + "field": "m_vecPreviewGravity", + "type": 21 + } + }, + "PointDefinitionWithTimeValues_t": { + "TimeDuration": { + "field": "m_flTimeDuration", + "type": 8 + }, + "Parent": { + "field": "PointDefinition_t", + "type": 11 + } + }, + "PointDefinition_t": { + "ControlPoint": { + "field": "m_nControlPoint", + "type": 2 + }, + "LocalCoords": { + "field": "m_bLocalCoords", + "type": 10 + }, + "Offset": { + "field": "m_vOffset", + "type": 21 + } + }, + "RenderProjectedMaterial_t": {}, + "SequenceWeightedList_t": { + "Sequence": { + "field": "m_nSequence", + "type": 2 + }, + "RelativeWeight": { + "field": "m_flRelativeWeight", + "type": 8 + } + }, + "TextureControls_t": { + "FinalTextureScaleU": { + "field": "m_flFinalTextureScaleU", + "classname": "CParticleCollectionRendererFloatInput", + "type": 16 + }, + "FinalTextureScaleV": { + "field": "m_flFinalTextureScaleV", + "classname": "CParticleCollectionRendererFloatInput", + "type": 16 + }, + "FinalTextureOffsetU": { + "field": "m_flFinalTextureOffsetU", + "classname": "CParticleCollectionRendererFloatInput", + "type": 16 + }, + "FinalTextureOffsetV": { + "field": "m_flFinalTextureOffsetV", + "classname": "CParticleCollectionRendererFloatInput", + "type": 16 + }, + "FinalTextureUVRotation": { + "field": "m_flFinalTextureUVRotation", + "classname": "CParticleCollectionRendererFloatInput", + "type": 16 + }, + "ZoomScale": { + "field": "m_flZoomScale", + "classname": "CParticleCollectionRendererFloatInput", + "type": 16 + }, + "Distortion": { + "field": "m_flDistortion", + "classname": "CParticleCollectionRendererFloatInput", + "type": 16 + }, + "RandomizeOffsets": { + "field": "m_bRandomizeOffsets", + "type": 10 + }, + "ClampUVs": { + "field": "m_bClampUVs", + "type": 10 + }, + "PerParticleBlend": { + "field": "m_nPerParticleBlend", + "type": 6 + }, + "PerParticleScale": { + "field": "m_nPerParticleScale", + "type": 6 + }, + "PerParticleOffsetU": { + "field": "m_nPerParticleOffsetU", + "type": 6 + }, + "PerParticleOffsetV": { + "field": "m_nPerParticleOffsetV", + "type": 6 + }, + "PerParticleRotation": { + "field": "m_nPerParticleRotation", + "type": 6 + }, + "PerParticleZoom": { + "field": "m_nPerParticleZoom", + "type": 6 + }, + "PerParticleDistortion": { + "field": "m_nPerParticleDistortion", + "type": 6 + } + }, + "TextureGroup_t": { + "Enabled": { + "field": "m_bEnabled", + "type": 10 + }, + "ReplaceTextureWithGradient": { + "field": "m_bReplaceTextureWithGradient", + "type": 10 + }, + "TextureType": { + "field": "m_nTextureType", + "type": 6 + }, + "TextureChannels": { + "field": "m_nTextureChannels", + "type": 6 + }, + "TextureBlendMode": { + "field": "m_nTextureBlendMode", + "type": 6 + }, + "TextureBlend": { + "field": "m_flTextureBlend", + "classname": "CParticleCollectionRendererFloatInput", + "type": 16 + }, + "TextureControls": { + "field": "m_TextureControls", + "classname": "TextureControls_t", + "type": 16 + } + }, + "VecInputMaterialVariable_t": { + "StrVariable": { + "field": "m_strVariable", + "type": 14 + } + }, + "CNewParticleEffect": { + "Next": { + "field": "m_pNext", + "classname": "CNewParticleEffect", + "type": 24 + }, + "Prev": { + "field": "m_pPrev", + "classname": "CNewParticleEffect", + "type": 24 + }, + "Particles": { + "field": "m_pParticles", + "classname": "IParticleCollection", + "type": 24 + }, + "DebugName": { + "field": "m_pDebugName", + "type": 15 + }, + "SortOrigin": { + "field": "m_vSortOrigin", + "type": 21 + }, + "Scale": { + "field": "m_flScale", + "type": 8 + }, + "Owner": { + "field": "m_hOwner", + "classname": "PARTICLE_EHANDLE__", + "type": 24 + }, + "OwningParticleProperty": { + "field": "m_pOwningParticleProperty", + "classname": "CParticleProperty", + "type": 24 + }, + "FreezeTransitionStart": { + "field": "m_flFreezeTransitionStart", + "type": 8 + }, + "FreezeTransitionDuration": { + "field": "m_flFreezeTransitionDuration", + "type": 8 + }, + "FreezeTransitionOverride": { + "field": "m_flFreezeTransitionOverride", + "type": 8 + }, + "FreezeTransitionActive": { + "field": "m_bFreezeTransitionActive", + "type": 10 + }, + "FreezeTargetState": { + "field": "m_bFreezeTargetState", + "type": 10 + }, + "CanFreeze": { + "field": "m_bCanFreeze", + "type": 10 + }, + "LastMin": { + "field": "m_LastMin", + "type": 21 + }, + "LastMax": { + "field": "m_LastMax", + "type": 21 + }, + "SplitScreenUser": { + "field": "m_nSplitScreenUser", + "type": 2 + }, + "AggregationCenter": { + "field": "m_vecAggregationCenter", + "type": 21 + }, + "RefCount": { + "field": "m_RefCount", + "type": 2 + }, + "Parent": { + "field": "IParticleEffect", + "type": 11 + } + }, + "CParticleCollectionBindingInstance": { + "Parent": { + "field": "CBasePulseGraphInstance", + "type": 11 + } + }, + "CParticleCollectionFloatInput": { + "Parent": { + "field": "CParticleFloatInput", + "type": 11 + } + }, + "CParticleCollectionRendererFloatInput": { + "Parent": { + "field": "CParticleCollectionFloatInput", + "type": 11 + } + }, + "CParticleCollectionRendererVecInput": {}, + "CParticleFloatInput": { + "Type": { + "field": "m_nType", + "type": 6 + }, + "MapType": { + "field": "m_nMapType", + "type": 6 + }, + "LiteralValue": { + "field": "m_flLiteralValue", + "type": 8 + }, + "ControlPoint": { + "field": "m_nControlPoint", + "type": 2 + }, + "ScalarAttribute": { + "field": "m_nScalarAttribute", + "classname": "ParticleAttributeIndex_t", + "type": 16 + }, + "VectorAttribute": { + "field": "m_nVectorAttribute", + "classname": "ParticleAttributeIndex_t", + "type": 16 + }, + "VectorComponent": { + "field": "m_nVectorComponent", + "type": 2 + }, + "RandomMin": { + "field": "m_flRandomMin", + "type": 8 + }, + "RandomMax": { + "field": "m_flRandomMax", + "type": 8 + }, + "HasRandomSignFlip": { + "field": "m_bHasRandomSignFlip", + "type": 10 + }, + "RandomSeed": { + "field": "m_nRandomSeed", + "type": 2 + }, + "RandomMode": { + "field": "m_nRandomMode", + "type": 6 + }, + "LOD0": { + "field": "m_flLOD0", + "type": 8 + }, + "LOD1": { + "field": "m_flLOD1", + "type": 8 + }, + "LOD2": { + "field": "m_flLOD2", + "type": 8 + }, + "LOD3": { + "field": "m_flLOD3", + "type": 8 + }, + "NoiseInputVectorAttribute": { + "field": "m_nNoiseInputVectorAttribute", + "classname": "ParticleAttributeIndex_t", + "type": 16 + }, + "NoiseOutputMin": { + "field": "m_flNoiseOutputMin", + "type": 8 + }, + "NoiseOutputMax": { + "field": "m_flNoiseOutputMax", + "type": 8 + }, + "NoiseScale": { + "field": "m_flNoiseScale", + "type": 8 + }, + "NoiseOffsetRate": { + "field": "m_vecNoiseOffsetRate", + "type": 21 + }, + "NoiseOffset": { + "field": "m_flNoiseOffset", + "type": 8 + }, + "NoiseOctaves": { + "field": "m_nNoiseOctaves", + "type": 2 + }, + "NoiseTurbulence": { + "field": "m_nNoiseTurbulence", + "type": 6 + }, + "NoiseType": { + "field": "m_nNoiseType", + "type": 6 + }, + "NoiseModifier": { + "field": "m_nNoiseModifier", + "type": 6 + }, + "NoiseTurbulenceScale": { + "field": "m_flNoiseTurbulenceScale", + "type": 8 + }, + "NoiseTurbulenceMix": { + "field": "m_flNoiseTurbulenceMix", + "type": 8 + }, + "NoiseImgPreviewScale": { + "field": "m_flNoiseImgPreviewScale", + "type": 8 + }, + "NoiseImgPreviewLive": { + "field": "m_bNoiseImgPreviewLive", + "type": 10 + }, + "NoCameraFallback": { + "field": "m_flNoCameraFallback", + "type": 8 + }, + "UseBoundsCenter": { + "field": "m_bUseBoundsCenter", + "type": 10 + }, + "InputMode": { + "field": "m_nInputMode", + "type": 6 + }, + "MultFactor": { + "field": "m_flMultFactor", + "type": 8 + }, + "Input0": { + "field": "m_flInput0", + "type": 8 + }, + "Input1": { + "field": "m_flInput1", + "type": 8 + }, + "Output0": { + "field": "m_flOutput0", + "type": 8 + }, + "Output1": { + "field": "m_flOutput1", + "type": 8 + }, + "NotchedRangeMin": { + "field": "m_flNotchedRangeMin", + "type": 8 + }, + "NotchedRangeMax": { + "field": "m_flNotchedRangeMax", + "type": 8 + }, + "NotchedOutputOutside": { + "field": "m_flNotchedOutputOutside", + "type": 8 + }, + "NotchedOutputInside": { + "field": "m_flNotchedOutputInside", + "type": 8 + }, + "RoundType": { + "field": "m_nRoundType", + "type": 6 + }, + "BiasType": { + "field": "m_nBiasType", + "type": 6 + }, + "BiasParameter": { + "field": "m_flBiasParameter", + "type": 8 + }, + "Parent": { + "field": "CParticleInput", + "type": 11 + } + }, + "CParticleInput": {}, + "CParticleModelInput": { + "Type": { + "field": "m_nType", + "type": 6 + }, + "ControlPoint": { + "field": "m_nControlPoint", + "type": 2 + }, + "Parent": { + "field": "CParticleInput", + "type": 11 + } + }, + "CParticleProperty": {}, + "CParticleRemapFloatInput": { + "Parent": { + "field": "CParticleFloatInput", + "type": 11 + } + }, + "CParticleTransformInput": { + "Type": { + "field": "m_nType", + "type": 6 + }, + "FollowNamedValue": { + "field": "m_bFollowNamedValue", + "type": 10 + }, + "SupportsDisabled": { + "field": "m_bSupportsDisabled", + "type": 10 + }, + "UseOrientation": { + "field": "m_bUseOrientation", + "type": 10 + }, + "ControlPoint": { + "field": "m_nControlPoint", + "type": 2 + }, + "ControlPointRangeMax": { + "field": "m_nControlPointRangeMax", + "type": 2 + }, + "EndCPGrowthTime": { + "field": "m_flEndCPGrowthTime", + "type": 8 + }, + "Parent": { + "field": "CParticleInput", + "type": 11 + } + }, + "CParticleVecInput": { + "Type": { + "field": "m_nType", + "type": 6 + }, + "LiteralValue": { + "field": "m_vLiteralValue", + "type": 21 + }, + "LiteralColor": { + "field": "m_LiteralColor", + "type": 19 + }, + "FollowNamedValue": { + "field": "m_bFollowNamedValue", + "type": 10 + }, + "VectorAttribute": { + "field": "m_nVectorAttribute", + "classname": "ParticleAttributeIndex_t", + "type": 16 + }, + "VectorAttributeScale": { + "field": "m_vVectorAttributeScale", + "type": 21 + }, + "ControlPoint": { + "field": "m_nControlPoint", + "type": 2 + }, + "DeltaControlPoint": { + "field": "m_nDeltaControlPoint", + "type": 2 + }, + "CPValueScale": { + "field": "m_vCPValueScale", + "type": 21 + }, + "CPRelativePosition": { + "field": "m_vCPRelativePosition", + "type": 21 + }, + "CPRelativeDir": { + "field": "m_vCPRelativeDir", + "type": 21 + }, + "FloatComponentX": { + "field": "m_FloatComponentX", + "classname": "CParticleFloatInput", + "type": 16 + }, + "FloatComponentY": { + "field": "m_FloatComponentY", + "classname": "CParticleFloatInput", + "type": 16 + }, + "FloatComponentZ": { + "field": "m_FloatComponentZ", + "classname": "CParticleFloatInput", + "type": 16 + }, + "FloatInterp": { + "field": "m_FloatInterp", + "classname": "CParticleFloatInput", + "type": 16 + }, + "InterpInput0": { + "field": "m_flInterpInput0", + "type": 8 + }, + "InterpInput1": { + "field": "m_flInterpInput1", + "type": 8 + }, + "InterpOutput0": { + "field": "m_vInterpOutput0", + "type": 21 + }, + "InterpOutput1": { + "field": "m_vInterpOutput1", + "type": 21 + }, + "RandomMin": { + "field": "m_vRandomMin", + "type": 21 + }, + "RandomMax": { + "field": "m_vRandomMax", + "type": 21 + }, + "Parent": { + "field": "CParticleInput", + "type": 11 + } + }, + "CPerParticleFloatInput": { + "Parent": { + "field": "CParticleFloatInput", + "type": 11 + } + }, + "CPerParticleVecInput": { + "Parent": { + "field": "CParticleVecInput", + "type": 11 + } + }, + "IParticleEffect": {}, + "PARTICLE_EHANDLE__": { + "Unused": { + "field": "unused", + "type": 2 + } + }, + "PARTICLE_WORLD_HANDLE__": { + "Unused": { + "field": "unused", + "type": 2 + } + }, + "ParticleNamedValueConfiguration_t": { + "ConfigName": { + "field": "m_ConfigName", + "type": 14 + }, + "AttachType": { + "field": "m_iAttachType", + "type": 6 + }, + "BoundEntityPath": { + "field": "m_BoundEntityPath", + "type": 14 + }, + "StrEntityScope": { + "field": "m_strEntityScope", + "type": 14 + }, + "StrAttachmentName": { + "field": "m_strAttachmentName", + "type": 14 + } + }, + "ParticleNamedValueSource_t": { + "Name": { + "field": "m_Name", + "type": 14 + }, + "IsPublic": { + "field": "m_IsPublic", + "type": 10 + }, + "DefaultConfig": { + "field": "m_DefaultConfig", + "classname": "ParticleNamedValueConfiguration_t", + "type": 16 + } + }, + "CFeIndexedJiggleBone": { + "Node": { + "field": "m_nNode", + "type": 6 + }, + "JiggleParent": { + "field": "m_nJiggleParent", + "type": 6 + }, + "JiggleBone": { + "field": "m_jiggleBone", + "classname": "CFeJiggleBone", + "type": 16 + } + }, + "CFeJiggleBone": { + "Flags": { + "field": "m_nFlags", + "type": 6 + }, + "Length": { + "field": "m_flLength", + "type": 8 + }, + "TipMass": { + "field": "m_flTipMass", + "type": 8 + }, + "YawStiffness": { + "field": "m_flYawStiffness", + "type": 8 + }, + "YawDamping": { + "field": "m_flYawDamping", + "type": 8 + }, + "PitchStiffness": { + "field": "m_flPitchStiffness", + "type": 8 + }, + "PitchDamping": { + "field": "m_flPitchDamping", + "type": 8 + }, + "AlongStiffness": { + "field": "m_flAlongStiffness", + "type": 8 + }, + "AlongDamping": { + "field": "m_flAlongDamping", + "type": 8 + }, + "AngleLimit": { + "field": "m_flAngleLimit", + "type": 8 + }, + "MinYaw": { + "field": "m_flMinYaw", + "type": 8 + }, + "MaxYaw": { + "field": "m_flMaxYaw", + "type": 8 + }, + "YawFriction": { + "field": "m_flYawFriction", + "type": 8 + }, + "YawBounce": { + "field": "m_flYawBounce", + "type": 8 + }, + "MinPitch": { + "field": "m_flMinPitch", + "type": 8 + }, + "MaxPitch": { + "field": "m_flMaxPitch", + "type": 8 + }, + "PitchFriction": { + "field": "m_flPitchFriction", + "type": 8 + }, + "PitchBounce": { + "field": "m_flPitchBounce", + "type": 8 + }, + "BaseMass": { + "field": "m_flBaseMass", + "type": 8 + }, + "BaseStiffness": { + "field": "m_flBaseStiffness", + "type": 8 + }, + "BaseDamping": { + "field": "m_flBaseDamping", + "type": 8 + }, + "BaseMinLeft": { + "field": "m_flBaseMinLeft", + "type": 8 + }, + "BaseMaxLeft": { + "field": "m_flBaseMaxLeft", + "type": 8 + }, + "BaseLeftFriction": { + "field": "m_flBaseLeftFriction", + "type": 8 + }, + "BaseMinUp": { + "field": "m_flBaseMinUp", + "type": 8 + }, + "BaseMaxUp": { + "field": "m_flBaseMaxUp", + "type": 8 + }, + "BaseUpFriction": { + "field": "m_flBaseUpFriction", + "type": 8 + }, + "BaseMinForward": { + "field": "m_flBaseMinForward", + "type": 8 + }, + "BaseMaxForward": { + "field": "m_flBaseMaxForward", + "type": 8 + }, + "BaseForwardFriction": { + "field": "m_flBaseForwardFriction", + "type": 8 + }, + "Radius0": { + "field": "m_flRadius0", + "type": 8 + }, + "Radius1": { + "field": "m_flRadius1", + "type": 8 + }, + "Point0": { + "field": "m_vPoint0", + "type": 21 + }, + "Point1": { + "field": "m_vPoint1", + "type": 21 + }, + "CollisionMask": { + "field": "m_nCollisionMask", + "type": 5 + } + }, + "CFeMorphLayer": { + "Name": { + "field": "m_Name", + "type": 14 + }, + "NameHash": { + "field": "m_nNameHash", + "type": 6 + }, + "Nodes": { + "field": "m_Nodes", + "type": 56 + }, + "InitPos": { + "field": "m_InitPos", + "type": 63 + }, + "Gravity": { + "field": "m_Gravity", + "type": 59 + }, + "GoalStrength": { + "field": "m_GoalStrength", + "type": 59 + }, + "GoalDamping": { + "field": "m_GoalDamping", + "type": 59 + } + }, + "CFeNamedJiggleBone": { + "StrParentBone": { + "field": "m_strParentBone", + "type": 14 + }, + "JiggleParent": { + "field": "m_nJiggleParent", + "type": 6 + }, + "JiggleBone": { + "field": "m_jiggleBone", + "classname": "CFeJiggleBone", + "type": 16 + } + }, + "CFeVertexMapBuildArray": {}, + "CRegionSVM": { + "Nodes": { + "field": "m_Nodes", + "type": 57 + } + }, + "CastSphereSATParams_t": { + "RayStart": { + "field": "m_vRayStart", + "type": 21 + }, + "RayDelta": { + "field": "m_vRayDelta", + "type": 21 + }, + "Radius": { + "field": "m_flRadius", + "type": 8 + }, + "MaxFraction": { + "field": "m_flMaxFraction", + "type": 8 + }, + "Scale": { + "field": "m_flScale", + "type": 8 + }, + "Hull": { + "field": "m_pHull", + "classname": "RnHull_t", + "type": 24 + } + }, + "CovMatrix3": { + "Diag": { + "field": "m_vDiag", + "type": 21 + }, + "XY": { + "field": "m_flXY", + "type": 8 + }, + "XZ": { + "field": "m_flXZ", + "type": 8 + }, + "YZ": { + "field": "m_flYZ", + "type": 8 + } + }, + "Dop26_t": { + "Support": { + "field": "m_flSupport", + "type": 37, + "size": 26 + } + }, + "FeAnimStrayRadius_t": { + "Node": { + "field": "nNode", + "type": 34, + "size": 2 + }, + "MaxDist": { + "field": "flMaxDist", + "type": 8 + }, + "RelaxationFactor": { + "field": "flRelaxationFactor", + "type": 8 + } + }, + "FeAntiTunnelProbeBuild_t": { + "Weight": { + "field": "flWeight", + "type": 8 + }, + "ActivationDistance": { + "field": "flActivationDistance", + "type": 8 + }, + "Bias": { + "field": "flBias", + "type": 8 + }, + "Curvature": { + "field": "flCurvature", + "type": 8 + }, + "Flags": { + "field": "nFlags", + "type": 6 + }, + "ProbeNode": { + "field": "nProbeNode", + "type": 5 + }, + "TargetNodes": { + "field": "targetNodes", + "type": 56 + } + }, + "FeAntiTunnelProbe_t": { + "Weight": { + "field": "flWeight", + "type": 8 + }, + "Flags": { + "field": "nFlags", + "type": 6 + }, + "ProbeNode": { + "field": "nProbeNode", + "type": 5 + }, + "Count": { + "field": "nCount", + "type": 5 + }, + "Begin": { + "field": "nBegin", + "type": 6 + }, + "ActivationDistance": { + "field": "flActivationDistance", + "type": 8 + }, + "CurvatureRadius": { + "field": "flCurvatureRadius", + "type": 8 + }, + "Bias": { + "field": "flBias", + "type": 8 + } + }, + "FeAxialEdgeBend_t": { + "Te": { + "field": "te", + "type": 8 + }, + "Tv": { + "field": "tv", + "type": 8 + }, + "Dist": { + "field": "flDist", + "type": 8 + }, + "Weight": { + "field": "flWeight", + "type": 37, + "size": 4 + }, + "Node": { + "field": "nNode", + "type": 34, + "size": 6 + } + }, + "FeBandBendLimit_t": { + "DistMin": { + "field": "flDistMin", + "type": 8 + }, + "DistMax": { + "field": "flDistMax", + "type": 8 + }, + "Node": { + "field": "nNode", + "type": 34, + "size": 6 + } + }, + "FeBoxRigid_t": { + "Node": { + "field": "nNode", + "type": 5 + }, + "CollisionMask": { + "field": "nCollisionMask", + "type": 5 + }, + "Size": { + "field": "vSize", + "type": 21 + }, + "VertexMapIndex": { + "field": "nVertexMapIndex", + "type": 5 + }, + "Flags": { + "field": "nFlags", + "type": 5 + } + }, + "FeBuildBoxRigid_t": { + "Priority": { + "field": "m_nPriority", + "type": 2 + }, + "VertexMapHash": { + "field": "m_nVertexMapHash", + "type": 6 + }, + "Parent": { + "field": "FeBoxRigid_t", + "type": 11 + } + }, + "FeBuildSDFRigid_t": { + "Priority": { + "field": "m_nPriority", + "type": 2 + }, + "VertexMapHash": { + "field": "m_nVertexMapHash", + "type": 6 + }, + "Parent": { + "field": "FeSDFRigid_t", + "type": 11 + } + }, + "FeBuildSphereRigid_t": { + "Priority": { + "field": "m_nPriority", + "type": 2 + }, + "VertexMapHash": { + "field": "m_nVertexMapHash", + "type": 6 + }, + "Parent": { + "field": "FeSphereRigid_t", + "type": 11 + } + }, + "FeBuildTaperedCapsuleRigid_t": { + "Priority": { + "field": "m_nPriority", + "type": 2 + }, + "VertexMapHash": { + "field": "m_nVertexMapHash", + "type": 6 + }, + "Parent": { + "field": "FeTaperedCapsuleRigid_t", + "type": 11 + } + }, + "FeCollisionPlane_t": { + "CtrlParent": { + "field": "nCtrlParent", + "type": 5 + }, + "ChildNode": { + "field": "nChildNode", + "type": 5 + }, + "Plane": { + "field": "m_Plane", + "classname": "RnPlane_t", + "type": 16 + }, + "Strength": { + "field": "flStrength", + "type": 8 + } + }, + "FeCtrlOffset_t": { + "Offset": { + "field": "vOffset", + "type": 21 + }, + "CtrlParent": { + "field": "nCtrlParent", + "type": 5 + }, + "CtrlChild": { + "field": "nCtrlChild", + "type": 5 + } + }, + "FeCtrlOsOffset_t": { + "CtrlParent": { + "field": "nCtrlParent", + "type": 5 + }, + "CtrlChild": { + "field": "nCtrlChild", + "type": 5 + } + }, + "FeCtrlSoftOffset_t": { + "CtrlParent": { + "field": "nCtrlParent", + "type": 5 + }, + "CtrlChild": { + "field": "nCtrlChild", + "type": 5 + }, + "Offset": { + "field": "vOffset", + "type": 21 + }, + "Alpha": { + "field": "flAlpha", + "type": 8 + } + }, + "FeEdgeDesc_t": { + "Edge": { + "field": "nEdge", + "type": 34, + "size": 2 + }, + "Side": { + "field": "nSide", + "type": 34, + "size": 2 + }, + "VirtElem": { + "field": "nVirtElem", + "type": 34, + "size": 2 + } + }, + "FeEffectDesc_t": { + "Name": { + "field": "sName", + "type": 14 + }, + "NameHash": { + "field": "nNameHash", + "type": 6 + }, + "Type": { + "field": "nType", + "type": 2 + } + }, + "FeFitInfluence_t": { + "VertexNode": { + "field": "nVertexNode", + "type": 6 + }, + "Weight": { + "field": "flWeight", + "type": 8 + }, + "MatrixNode": { + "field": "nMatrixNode", + "type": 6 + } + }, + "FeFitMatrix_t": { + "Center": { + "field": "vCenter", + "type": 21 + }, + "End": { + "field": "nEnd", + "type": 5 + }, + "Node": { + "field": "nNode", + "type": 5 + }, + "BeginDynamic": { + "field": "nBeginDynamic", + "type": 5 + } + }, + "FeFitWeight_t": { + "Weight": { + "field": "flWeight", + "type": 8 + }, + "Node": { + "field": "nNode", + "type": 5 + }, + "Dummy": { + "field": "nDummy", + "type": 5 + } + }, + "FeFollowNode_t": { + "ParentNode": { + "field": "nParentNode", + "type": 5 + }, + "ChildNode": { + "field": "nChildNode", + "type": 5 + }, + "Weight": { + "field": "flWeight", + "type": 8 + } + }, + "FeHingeLimitBuild_t": { + "Node": { + "field": "nNode", + "type": 34, + "size": 6 + }, + "Flags": { + "field": "nFlags", + "type": 6 + }, + "LimitCW": { + "field": "flLimitCW", + "type": 8 + }, + "LimitCCW": { + "field": "flLimitCCW", + "type": 8 + } + }, + "FeHingeLimit_t": { + "Node": { + "field": "nNode", + "type": 34, + "size": 6 + }, + "Flags": { + "field": "nFlags", + "type": 6 + }, + "Weight4": { + "field": "flWeight4", + "type": 8 + }, + "Weight5": { + "field": "flWeight5", + "type": 8 + }, + "AngleCenter": { + "field": "flAngleCenter", + "type": 8 + }, + "AngleExtents": { + "field": "flAngleExtents", + "type": 8 + } + }, + "FeKelagerBend2_t": { + "Weight": { + "field": "flWeight", + "type": 37, + "size": 3 + }, + "Height0": { + "field": "flHeight0", + "type": 8 + }, + "Node": { + "field": "nNode", + "type": 34, + "size": 3 + }, + "Reserved": { + "field": "nReserved", + "type": 5 + } + }, + "FeMorphLayerDepr_t": { + "Name": { + "field": "m_Name", + "type": 14 + }, + "NameHash": { + "field": "m_nNameHash", + "type": 6 + }, + "Nodes": { + "field": "m_Nodes", + "type": 56 + }, + "InitPos": { + "field": "m_InitPos", + "type": 63 + }, + "Gravity": { + "field": "m_Gravity", + "type": 59 + }, + "GoalStrength": { + "field": "m_GoalStrength", + "type": 59 + }, + "GoalDamping": { + "field": "m_GoalDamping", + "type": 59 + }, + "Flags": { + "field": "m_nFlags", + "type": 6 + } + }, + "FeNodeBase_t": { + "Node": { + "field": "nNode", + "type": 5 + }, + "Dummy": { + "field": "nDummy", + "type": 34, + "size": 3 + }, + "NodeX0": { + "field": "nNodeX0", + "type": 5 + }, + "NodeX1": { + "field": "nNodeX1", + "type": 5 + }, + "NodeY0": { + "field": "nNodeY0", + "type": 5 + }, + "NodeY1": { + "field": "nNodeY1", + "type": 5 + } + }, + "FeNodeIntegrator_t": { + "PointDamping": { + "field": "flPointDamping", + "type": 8 + }, + "AnimationForceAttraction": { + "field": "flAnimationForceAttraction", + "type": 8 + }, + "AnimationVertexAttraction": { + "field": "flAnimationVertexAttraction", + "type": 8 + }, + "Gravity": { + "field": "flGravity", + "type": 8 + } + }, + "FeNodeReverseOffset_t": { + "Offset": { + "field": "vOffset", + "type": 21 + }, + "BoneCtrl": { + "field": "nBoneCtrl", + "type": 5 + }, + "TargetNode": { + "field": "nTargetNode", + "type": 5 + } + }, + "FeNodeWindBase_t": { + "NodeX0": { + "field": "nNodeX0", + "type": 5 + }, + "NodeX1": { + "field": "nNodeX1", + "type": 5 + }, + "NodeY0": { + "field": "nNodeY0", + "type": 5 + }, + "NodeY1": { + "field": "nNodeY1", + "type": 5 + } + }, + "FeProxyVertexMap_t": { + "Name": { + "field": "m_Name", + "type": 14 + }, + "Weight": { + "field": "m_flWeight", + "type": 8 + } + }, + "FeQuad_t": { + "Node": { + "field": "nNode", + "type": 34, + "size": 4 + }, + "Slack": { + "field": "flSlack", + "type": 8 + }, + "Shape": { + "field": "vShape", + "type": 44, + "size": 4 + } + }, + "FeRigidColliderIndices_t": { + "TaperedCapsuleRigidIndex": { + "field": "m_nTaperedCapsuleRigidIndex", + "type": 5 + }, + "SphereRigidIndex": { + "field": "m_nSphereRigidIndex", + "type": 5 + }, + "BoxRigidIndex": { + "field": "m_nBoxRigidIndex", + "type": 5 + }, + "SDFRigidIndex": { + "field": "m_nSDFRigidIndex", + "type": 5 + }, + "CollisionPlaneIndex": { + "field": "m_nCollisionPlaneIndex", + "type": 5 + } + }, + "FeRodConstraint_t": { + "Node": { + "field": "nNode", + "type": 34, + "size": 2 + }, + "MaxDist": { + "field": "flMaxDist", + "type": 8 + }, + "MinDist": { + "field": "flMinDist", + "type": 8 + }, + "Weight0": { + "field": "flWeight0", + "type": 8 + }, + "RelaxationFactor": { + "field": "flRelaxationFactor", + "type": 8 + } + }, + "FeSDFRigid_t": { + "LocalMin": { + "field": "vLocalMin", + "type": 21 + }, + "LocalMax": { + "field": "vLocalMax", + "type": 21 + }, + "Bounciness": { + "field": "flBounciness", + "type": 8 + }, + "Node": { + "field": "nNode", + "type": 5 + }, + "CollisionMask": { + "field": "nCollisionMask", + "type": 5 + }, + "VertexMapIndex": { + "field": "nVertexMapIndex", + "type": 5 + }, + "Flags": { + "field": "nFlags", + "type": 5 + }, + "Distances": { + "field": "m_Distances", + "type": 59 + }, + "Width": { + "field": "m_nWidth", + "type": 2 + }, + "Height": { + "field": "m_nHeight", + "type": 2 + }, + "Depth": { + "field": "m_nDepth", + "type": 2 + } + }, + "FeSimdAnimStrayRadius_t": { + "Node": { + "field": "nNode", + "type": 34, + "size": 2 + }, + "MaxDist": { + "field": "flMaxDist", + "type": 8 + }, + "RelaxationFactor": { + "field": "flRelaxationFactor", + "type": 8 + } + }, + "FeSimdNodeBase_t": { + "Node": { + "field": "nNode", + "type": 34, + "size": 4 + }, + "NodeX0": { + "field": "nNodeX0", + "type": 34, + "size": 4 + }, + "NodeX1": { + "field": "nNodeX1", + "type": 34, + "size": 4 + }, + "NodeY0": { + "field": "nNodeY0", + "type": 34, + "size": 4 + }, + "NodeY1": { + "field": "nNodeY1", + "type": 34, + "size": 4 + }, + "Dummy": { + "field": "nDummy", + "type": 34, + "size": 4 + } + }, + "FeSimdQuad_t": { + "Node": { + "field": "nNode", + "type": 34, + "size": 4 + }, + "4Slack": { + "field": "f4Slack", + "type": 8 + }, + "4Weights": { + "field": "f4Weights", + "type": 37, + "size": 4 + } + }, + "FeSimdRodConstraintAnim_t": { + "Node": { + "field": "nNode", + "type": 34, + "size": 2 + }, + "4Weight0": { + "field": "f4Weight0", + "type": 8 + }, + "4RelaxationFactor": { + "field": "f4RelaxationFactor", + "type": 8 + } + }, + "FeSimdRodConstraint_t": { + "Node": { + "field": "nNode", + "type": 34, + "size": 2 + }, + "4MaxDist": { + "field": "f4MaxDist", + "type": 8 + }, + "4MinDist": { + "field": "f4MinDist", + "type": 8 + }, + "4Weight0": { + "field": "f4Weight0", + "type": 8 + }, + "4RelaxationFactor": { + "field": "f4RelaxationFactor", + "type": 8 + } + }, + "FeSimdSpringIntegrator_t": { + "Node": { + "field": "nNode", + "type": 34, + "size": 2 + }, + "SpringRestLength": { + "field": "flSpringRestLength", + "type": 8 + }, + "SpringConstant": { + "field": "flSpringConstant", + "type": 8 + }, + "SpringDamping": { + "field": "flSpringDamping", + "type": 8 + }, + "NodeWeight0": { + "field": "flNodeWeight0", + "type": 8 + } + }, + "FeSimdTri_t": { + "Node": { + "field": "nNode", + "type": 35, + "size": 3 + }, + "W1": { + "field": "w1", + "type": 8 + }, + "W2": { + "field": "w2", + "type": 8 + }, + "1x": { + "field": "v1x", + "type": 8 + } + }, + "FeSoftParent_t": { + "Parent": { + "field": "nParent", + "type": 2 + }, + "Alpha": { + "field": "flAlpha", + "type": 8 + } + }, + "FeSourceEdge_t": { + "Node": { + "field": "nNode", + "type": 34, + "size": 2 + } + }, + "FeSphereRigid_t": { + "Sphere": { + "field": "vSphere", + "type": 8 + }, + "Node": { + "field": "nNode", + "type": 5 + }, + "CollisionMask": { + "field": "nCollisionMask", + "type": 5 + }, + "VertexMapIndex": { + "field": "nVertexMapIndex", + "type": 5 + }, + "Flags": { + "field": "nFlags", + "type": 5 + } + }, + "FeSpringIntegrator_t": { + "Node": { + "field": "nNode", + "type": 34, + "size": 2 + }, + "SpringRestLength": { + "field": "flSpringRestLength", + "type": 8 + }, + "SpringConstant": { + "field": "flSpringConstant", + "type": 8 + }, + "SpringDamping": { + "field": "flSpringDamping", + "type": 8 + }, + "NodeWeight0": { + "field": "flNodeWeight0", + "type": 8 + } + }, + "FeStiffHingeBuild_t": { + "MaxAngle": { + "field": "flMaxAngle", + "type": 8 + }, + "Strength": { + "field": "flStrength", + "type": 8 + }, + "MotionBias": { + "field": "flMotionBias", + "type": 37, + "size": 3 + }, + "Node": { + "field": "nNode", + "type": 34, + "size": 3 + } + }, + "FeTaperedCapsuleRigid_t": { + "Sphere": { + "field": "vSphere", + "type": 37, + "size": 2 + }, + "Node": { + "field": "nNode", + "type": 5 + }, + "CollisionMask": { + "field": "nCollisionMask", + "type": 5 + }, + "VertexMapIndex": { + "field": "nVertexMapIndex", + "type": 5 + }, + "Flags": { + "field": "nFlags", + "type": 5 + } + }, + "FeTaperedCapsuleStretch_t": { + "Node": { + "field": "nNode", + "type": 34, + "size": 2 + }, + "CollisionMask": { + "field": "nCollisionMask", + "type": 5 + }, + "Dummy": { + "field": "nDummy", + "type": 5 + }, + "Radius": { + "field": "flRadius", + "type": 37, + "size": 2 + } + }, + "FeTreeChildren_t": { + "Child": { + "field": "nChild", + "type": 34, + "size": 2 + } + }, + "FeTri_t": { + "2": { + "field": "v2", + "type": 22 + }, + "Node": { + "field": "nNode", + "type": 34, + "size": 3 + }, + "W1": { + "field": "w1", + "type": 8 + }, + "W2": { + "field": "w2", + "type": 8 + }, + "1x": { + "field": "v1x", + "type": 8 + } + }, + "FeTwistConstraint_t": { + "NodeOrient": { + "field": "nNodeOrient", + "type": 5 + }, + "NodeEnd": { + "field": "nNodeEnd", + "type": 5 + }, + "TwistRelax": { + "field": "flTwistRelax", + "type": 8 + }, + "SwingRelax": { + "field": "flSwingRelax", + "type": 8 + } + }, + "FeVertexMapBuild_t": { + "VertexMapName": { + "field": "m_VertexMapName", + "type": 14 + }, + "NameHash": { + "field": "m_nNameHash", + "type": 6 + }, + "Color": { + "field": "m_Color", + "type": 19 + }, + "VolumetricSolveStrength": { + "field": "m_flVolumetricSolveStrength", + "type": 8 + }, + "ScaleSourceNode": { + "field": "m_nScaleSourceNode", + "type": 2 + }, + "Weights": { + "field": "m_Weights", + "type": 59 + } + }, + "FeVertexMapDesc_t": { + "Name": { + "field": "sName", + "type": 14 + }, + "NameHash": { + "field": "nNameHash", + "type": 6 + }, + "Color": { + "field": "nColor", + "type": 6 + }, + "Flags": { + "field": "nFlags", + "type": 6 + }, + "VertexBase": { + "field": "nVertexBase", + "type": 5 + }, + "VertexCount": { + "field": "nVertexCount", + "type": 5 + }, + "MapOffset": { + "field": "nMapOffset", + "type": 6 + }, + "NodeListOffset": { + "field": "nNodeListOffset", + "type": 6 + }, + "CenterOfMass": { + "field": "vCenterOfMass", + "type": 21 + }, + "VolumetricSolveStrength": { + "field": "flVolumetricSolveStrength", + "type": 8 + }, + "ScaleSourceNode": { + "field": "nScaleSourceNode", + "type": 1 + }, + "NodeListCount": { + "field": "nNodeListCount", + "type": 5 + } + }, + "FeWeightedNode_t": { + "Node": { + "field": "nNode", + "type": 5 + }, + "Weight": { + "field": "nWeight", + "type": 5 + } + }, + "FeWorldCollisionParams_t": { + "WorldFriction": { + "field": "flWorldFriction", + "type": 8 + }, + "GroundFriction": { + "field": "flGroundFriction", + "type": 8 + }, + "ListBegin": { + "field": "nListBegin", + "type": 5 + }, + "ListEnd": { + "field": "nListEnd", + "type": 5 + } + }, + "FourCovMatrices3": { + "XY": { + "field": "m_flXY", + "type": 8 + }, + "XZ": { + "field": "m_flXZ", + "type": 8 + }, + "YZ": { + "field": "m_flYZ", + "type": 8 + } + }, + "OldFeEdge_t": { + "K": { + "field": "m_flK", + "type": 37, + "size": 3 + }, + "InvA": { + "field": "invA", + "type": 8 + }, + "T": { + "field": "t", + "type": 8 + }, + "ThetaRelaxed": { + "field": "flThetaRelaxed", + "type": 8 + }, + "ThetaFactor": { + "field": "flThetaFactor", + "type": 8 + }, + "C01": { + "field": "c01", + "type": 8 + }, + "C02": { + "field": "c02", + "type": 8 + }, + "C03": { + "field": "c03", + "type": 8 + }, + "C04": { + "field": "c04", + "type": 8 + }, + "AxialModelDist": { + "field": "flAxialModelDist", + "type": 8 + }, + "AxialModelWeights": { + "field": "flAxialModelWeights", + "type": 37, + "size": 4 + }, + "Node": { + "field": "m_nNode", + "type": 34, + "size": 4 + } + }, + "PhysFeModelDesc_t": { + "CtrlHash": { + "field": "m_CtrlHash", + "type": 57 + }, + "CtrlName": { + "field": "m_CtrlName", + "type": 50 + }, + "StaticNodeFlags": { + "field": "m_nStaticNodeFlags", + "type": 6 + }, + "DynamicNodeFlags": { + "field": "m_nDynamicNodeFlags", + "type": 6 + }, + "LocalForce": { + "field": "m_flLocalForce", + "type": 8 + }, + "LocalRotation": { + "field": "m_flLocalRotation", + "type": 8 + }, + "NodeCount": { + "field": "m_nNodeCount", + "type": 5 + }, + "StaticNodes": { + "field": "m_nStaticNodes", + "type": 5 + }, + "RotLockStaticNodes": { + "field": "m_nRotLockStaticNodes", + "type": 5 + }, + "FirstPositionDrivenNode": { + "field": "m_nFirstPositionDrivenNode", + "type": 5 + }, + "SimdTriCount1": { + "field": "m_nSimdTriCount1", + "type": 5 + }, + "SimdTriCount2": { + "field": "m_nSimdTriCount2", + "type": 5 + }, + "SimdQuadCount1": { + "field": "m_nSimdQuadCount1", + "type": 5 + }, + "SimdQuadCount2": { + "field": "m_nSimdQuadCount2", + "type": 5 + }, + "QuadCount1": { + "field": "m_nQuadCount1", + "type": 5 + }, + "QuadCount2": { + "field": "m_nQuadCount2", + "type": 5 + }, + "TreeDepth": { + "field": "m_nTreeDepth", + "type": 5 + }, + "NodeBaseJiggleboneDependsCount": { + "field": "m_nNodeBaseJiggleboneDependsCount", + "type": 5 + }, + "RopeCount": { + "field": "m_nRopeCount", + "type": 5 + }, + "Ropes": { + "field": "m_Ropes", + "type": 56 + }, + "AntiTunnelTargetNodes": { + "field": "m_AntiTunnelTargetNodes", + "type": 56 + }, + "NodeInvMasses": { + "field": "m_NodeInvMasses", + "type": 59 + }, + "LegacyStretchForce": { + "field": "m_LegacyStretchForce", + "type": 59 + }, + "NodeCollisionRadii": { + "field": "m_NodeCollisionRadii", + "type": 59 + }, + "DynNodeFriction": { + "field": "m_DynNodeFriction", + "type": 59 + }, + "LocalRotation1": { + "field": "m_LocalRotation", + "type": 59 + }, + "LocalForce1": { + "field": "m_LocalForce", + "type": 59 + }, + "WorldCollisionNodes": { + "field": "m_WorldCollisionNodes", + "type": 56 + }, + "TreeParents": { + "field": "m_TreeParents", + "type": 56 + }, + "TreeCollisionMasks": { + "field": "m_TreeCollisionMasks", + "type": 56 + }, + "FreeNodes": { + "field": "m_FreeNodes", + "type": 56 + }, + "SourceElems": { + "field": "m_SourceElems", + "type": 56 + }, + "GoalDampedSpringIntegrators": { + "field": "m_GoalDampedSpringIntegrators", + "type": 57 + }, + "TriCount1": { + "field": "m_nTriCount1", + "type": 5 + }, + "TriCount2": { + "field": "m_nTriCount2", + "type": 5 + }, + "ReservedUint8": { + "field": "m_nReservedUint8", + "type": 4 + }, + "ExtraPressureIterations": { + "field": "m_nExtraPressureIterations", + "type": 4 + }, + "ExtraGoalIterations": { + "field": "m_nExtraGoalIterations", + "type": 4 + }, + "ExtraIterations": { + "field": "m_nExtraIterations", + "type": 4 + }, + "DynNodeVertexSet": { + "field": "m_DynNodeVertexSet", + "type": 55 + }, + "VertexSetNames": { + "field": "m_VertexSetNames", + "type": 57 + }, + "MorphSetData": { + "field": "m_MorphSetData", + "type": 55 + }, + "VertexMapValues": { + "field": "m_VertexMapValues", + "type": 55 + }, + "LockToGoal": { + "field": "m_LockToGoal", + "type": 56 + }, + "SkelParents": { + "field": "m_SkelParents", + "type": 52 + }, + "InternalPressure": { + "field": "m_flInternalPressure", + "type": 8 + }, + "DefaultTimeDilation": { + "field": "m_flDefaultTimeDilation", + "type": 8 + }, + "Windage": { + "field": "m_flWindage", + "type": 8 + }, + "WindDrag": { + "field": "m_flWindDrag", + "type": 8 + }, + "DefaultSurfaceStretch": { + "field": "m_flDefaultSurfaceStretch", + "type": 8 + }, + "DefaultThreadStretch": { + "field": "m_flDefaultThreadStretch", + "type": 8 + }, + "DefaultGravityScale": { + "field": "m_flDefaultGravityScale", + "type": 8 + }, + "DefaultVelAirDrag": { + "field": "m_flDefaultVelAirDrag", + "type": 8 + }, + "DefaultExpAirDrag": { + "field": "m_flDefaultExpAirDrag", + "type": 8 + }, + "DefaultVelQuadAirDrag": { + "field": "m_flDefaultVelQuadAirDrag", + "type": 8 + }, + "DefaultExpQuadAirDrag": { + "field": "m_flDefaultExpQuadAirDrag", + "type": 8 + }, + "RodVelocitySmoothRate": { + "field": "m_flRodVelocitySmoothRate", + "type": 8 + }, + "QuadVelocitySmoothRate": { + "field": "m_flQuadVelocitySmoothRate", + "type": 8 + }, + "AddWorldCollisionRadius": { + "field": "m_flAddWorldCollisionRadius", + "type": 8 + }, + "DefaultVolumetricSolveAmount": { + "field": "m_flDefaultVolumetricSolveAmount", + "type": 8 + }, + "MotionSmoothCDT": { + "field": "m_flMotionSmoothCDT", + "type": 8 + }, + "LocalDrag1": { + "field": "m_flLocalDrag1", + "type": 8 + }, + "RodVelocitySmoothIterations": { + "field": "m_nRodVelocitySmoothIterations", + "type": 5 + }, + "QuadVelocitySmoothIterations": { + "field": "m_nQuadVelocitySmoothIterations", + "type": 5 + } + }, + "RnBlendVertex_t": { + "Weight0": { + "field": "m_nWeight0", + "type": 5 + }, + "Index0": { + "field": "m_nIndex0", + "type": 5 + }, + "Weight1": { + "field": "m_nWeight1", + "type": 5 + }, + "Index1": { + "field": "m_nIndex1", + "type": 5 + }, + "Weight2": { + "field": "m_nWeight2", + "type": 5 + }, + "Index2": { + "field": "m_nIndex2", + "type": 5 + }, + "Flags": { + "field": "m_nFlags", + "type": 5 + }, + "TargetIndex": { + "field": "m_nTargetIndex", + "type": 5 + } + }, + "RnBodyDesc_t": { + "DebugName": { + "field": "m_sDebugName", + "type": 14 + }, + "Position": { + "field": "m_vPosition", + "type": 21 + }, + "LinearVelocity": { + "field": "m_vLinearVelocity", + "type": 21 + }, + "AngularVelocity": { + "field": "m_vAngularVelocity", + "type": 21 + }, + "LocalMassCenter": { + "field": "m_vLocalMassCenter", + "type": 21 + }, + "LocalInertiaInv": { + "field": "m_LocalInertiaInv", + "type": 42, + "size": 3 + }, + "MassInv": { + "field": "m_flMassInv", + "type": 8 + }, + "GameMass": { + "field": "m_flGameMass", + "type": 8 + }, + "InertiaScaleInv": { + "field": "m_flInertiaScaleInv", + "type": 8 + }, + "LinearDamping": { + "field": "m_flLinearDamping", + "type": 8 + }, + "AngularDamping": { + "field": "m_flAngularDamping", + "type": 8 + }, + "LinearDrag": { + "field": "m_flLinearDrag", + "type": 8 + }, + "AngularDrag": { + "field": "m_flAngularDrag", + "type": 8 + }, + "LinearBuoyancyDrag": { + "field": "m_flLinearBuoyancyDrag", + "type": 8 + }, + "AngularBuoyancyDrag": { + "field": "m_flAngularBuoyancyDrag", + "type": 8 + }, + "LastAwakeForceAccum": { + "field": "m_vLastAwakeForceAccum", + "type": 21 + }, + "LastAwakeTorqueAccum": { + "field": "m_vLastAwakeTorqueAccum", + "type": 21 + }, + "BuoyancyFactor": { + "field": "m_flBuoyancyFactor", + "type": 8 + }, + "GravityScale": { + "field": "m_flGravityScale", + "type": 8 + }, + "TimeScale": { + "field": "m_flTimeScale", + "type": 8 + }, + "BodyType": { + "field": "m_nBodyType", + "type": 2 + }, + "GameIndex": { + "field": "m_nGameIndex", + "type": 6 + }, + "GameFlags": { + "field": "m_nGameFlags", + "type": 6 + }, + "MinVelocityIterations": { + "field": "m_nMinVelocityIterations", + "type": 0 + }, + "MinPositionIterations": { + "field": "m_nMinPositionIterations", + "type": 0 + }, + "MassPriority": { + "field": "m_nMassPriority", + "type": 0 + }, + "Enabled": { + "field": "m_bEnabled", + "type": 10 + }, + "Sleeping": { + "field": "m_bSleeping", + "type": 10 + }, + "IsContinuousEnabled": { + "field": "m_bIsContinuousEnabled", + "type": 10 + }, + "DragEnabled": { + "field": "m_bDragEnabled", + "type": 10 + }, + "BuoyancyDragEnabled": { + "field": "m_bBuoyancyDragEnabled", + "type": 10 + }, + "GravityDisabled": { + "field": "m_bGravityDisabled", + "type": 10 + }, + "SpeculativeEnabled": { + "field": "m_bSpeculativeEnabled", + "type": 10 + }, + "HasShadowController": { + "field": "m_bHasShadowController", + "type": 10 + } + }, + "RnCapsuleDesc_t": { + "Capsule": { + "field": "m_Capsule", + "classname": "RnCapsule_t", + "type": 16 + }, + "Parent": { + "field": "RnShapeDesc_t", + "type": 11 + } + }, + "RnCapsule_t": { + "Center": { + "field": "m_vCenter", + "type": 42, + "size": 2 + }, + "Radius": { + "field": "m_flRadius", + "type": 8 + } + }, + "RnFace_t": { + "Edge": { + "field": "m_nEdge", + "type": 4 + } + }, + "RnHalfEdge_t": { + "Next": { + "field": "m_nNext", + "type": 4 + }, + "Twin": { + "field": "m_nTwin", + "type": 4 + }, + "Origin": { + "field": "m_nOrigin", + "type": 4 + }, + "Face": { + "field": "m_nFace", + "type": 4 + } + }, + "RnHullDesc_t": { + "Hull": { + "field": "m_Hull", + "classname": "RnHull_t", + "type": 16 + }, + "Parent": { + "field": "RnShapeDesc_t", + "type": 11 + } + }, + "RnHull_t": { + "Centroid": { + "field": "m_vCentroid", + "type": 21 + }, + "MaxAngularRadius": { + "field": "m_flMaxAngularRadius", + "type": 8 + }, + "Bounds": { + "field": "m_Bounds", + "classname": "AABB_t", + "type": 16 + }, + "OrthographicAreas": { + "field": "m_vOrthographicAreas", + "type": 21 + }, + "Volume": { + "field": "m_flVolume", + "type": 8 + }, + "SurfaceArea": { + "field": "m_flSurfaceArea", + "type": 8 + }, + "VertexPositions": { + "field": "m_VertexPositions", + "type": 63 + }, + "Flags": { + "field": "m_nFlags", + "type": 6 + }, + "RegionSVM": { + "field": "m_pRegionSVM", + "classname": "CRegionSVM", + "type": 24 + } + }, + "RnMeshDesc_t": { + "Mesh": { + "field": "m_Mesh", + "classname": "RnMesh_t", + "type": 16 + }, + "Parent": { + "field": "RnShapeDesc_t", + "type": 11 + } + }, + "RnMesh_t": { + "Min": { + "field": "m_vMin", + "type": 21 + }, + "Max": { + "field": "m_vMax", + "type": 21 + }, + "Materials": { + "field": "m_Materials", + "type": 55 + }, + "OrthographicAreas": { + "field": "m_vOrthographicAreas", + "type": 21 + }, + "Flags": { + "field": "m_nFlags", + "type": 6 + }, + "DebugFlags": { + "field": "m_nDebugFlags", + "type": 6 + } + }, + "RnNode_t": { + "Min": { + "field": "m_vMin", + "type": 21 + }, + "Children": { + "field": "m_nChildren", + "type": 6 + }, + "Max": { + "field": "m_vMax", + "type": 21 + }, + "TriangleOffset": { + "field": "m_nTriangleOffset", + "type": 6 + } + }, + "RnPlane_t": { + "Normal": { + "field": "m_vNormal", + "type": 21 + }, + "Offset": { + "field": "m_flOffset", + "type": 8 + } + }, + "RnShapeDesc_t": { + "CollisionAttributeIndex": { + "field": "m_nCollisionAttributeIndex", + "type": 6 + }, + "SurfacePropertyIndex": { + "field": "m_nSurfacePropertyIndex", + "type": 6 + }, + "UserFriendlyName": { + "field": "m_UserFriendlyName", + "type": 14 + }, + "UserFriendlyNameSealed": { + "field": "m_bUserFriendlyNameSealed", + "type": 10 + }, + "UserFriendlyNameLong": { + "field": "m_bUserFriendlyNameLong", + "type": 10 + }, + "ToolMaterialHash": { + "field": "m_nToolMaterialHash", + "type": 6 + } + }, + "RnSoftbodyCapsule_t": { + "Center": { + "field": "m_vCenter", + "type": 42, + "size": 2 + }, + "Radius": { + "field": "m_flRadius", + "type": 8 + }, + "Particle": { + "field": "m_nParticle", + "type": 34, + "size": 2 + } + }, + "RnSoftbodyParticle_t": { + "MassInv": { + "field": "m_flMassInv", + "type": 8 + } + }, + "RnSoftbodySpring_t": { + "Particle": { + "field": "m_nParticle", + "type": 34, + "size": 2 + }, + "Length": { + "field": "m_flLength", + "type": 8 + } + }, + "RnSphereDesc_t": { + "Parent": { + "field": "RnShapeDesc_t", + "type": 11 + } + }, + "RnTriangle_t": { + "Index": { + "field": "m_nIndex", + "type": 31, + "size": 3 + } + }, + "RnVertex_t": { + "Edge": { + "field": "m_nEdge", + "type": 4 + } + }, + "RnWing_t": { + "Index": { + "field": "m_nIndex", + "type": 31, + "size": 3 + } + }, + "VertexPositionColor_t": { + "Position": { + "field": "m_vPosition", + "type": 21 + } + }, + "VertexPositionNormal_t": { + "Position": { + "field": "m_vPosition", + "type": 21 + }, + "Normal": { + "field": "m_vNormal", + "type": 21 + } + }, + "CTestDomainDerived_Cursor": { + "CursorValueA": { + "field": "m_nCursorValueA", + "type": 2 + }, + "CursorValueB": { + "field": "m_nCursorValueB", + "type": 2 + }, + "Parent": { + "field": "CPulseExecCursor", + "type": 11 + } + }, + "FakeEntityDerivedA_tAPI": {}, + "FakeEntityDerivedB_tAPI": {}, + "FakeEntity_tAPI": {}, + "IGapHost_Cursor": { + "Parent": { + "field": "IGapHost_ExecLog", + "type": 11 + } + }, + "IGapHost_ExecLog": {}, + "IGapHost_YieldingCursor": { + "Parent": { + "field": "IGapHost_Cursor", + "type": 11 + } + }, + "SignatureOutflow_Continue": { + "Parent": { + "field": "CPulse_OutflowConnection", + "type": 11 + } + }, + "SignatureOutflow_Resume": { + "Parent": { + "field": "CPulse_ResumePoint", + "type": 11 + } + }, + "RenderInputLayoutField_t": { + "SemanticName": { + "field": "m_pSemanticName", + "type": 33, + "size": 32 + }, + "SemanticIndex": { + "field": "m_nSemanticIndex", + "type": 2 + }, + "Format": { + "field": "m_Format", + "type": 6 + }, + "Offset": { + "field": "m_nOffset", + "type": 2 + }, + "Slot": { + "field": "m_nSlot", + "type": 2 + }, + "SlotType": { + "field": "m_nSlotType", + "type": 6 + }, + "InstanceStepRate": { + "field": "m_nInstanceStepRate", + "type": 2 + } + }, + "VsInputSignatureElement_t": { + "Name": { + "field": "m_pName", + "type": 15, + "size": 64 + }, + "Semantic": { + "field": "m_pSemantic", + "type": 15, + "size": 64 + }, + "D3DSemanticName": { + "field": "m_pD3DSemanticName", + "type": 15, + "size": 64 + }, + "D3DSemanticIndex": { + "field": "m_nD3DSemanticIndex", + "type": 2 + } + }, + "VsInputSignature_t": {}, + "CExampleSchemaVData_Monomorphic": { + "Example1": { + "field": "m_nExample1", + "type": 2 + }, + "Example2": { + "field": "m_nExample2", + "type": 2 + } + }, + "CExampleSchemaVData_PolymorphicBase": { + "Base": { + "field": "m_nBase", + "type": 2 + } + }, + "CExampleSchemaVData_PolymorphicDerivedA": { + "DerivedA": { + "field": "m_nDerivedA", + "type": 2 + }, + "Parent": { + "field": "CExampleSchemaVData_PolymorphicBase", + "type": 11 + } + }, + "CExampleSchemaVData_PolymorphicDerivedB": { + "DerivedB": { + "field": "m_nDerivedB", + "type": 2 + }, + "Parent": { + "field": "CExampleSchemaVData_PolymorphicBase", + "type": 11 + } + }, + "ResourceId_t": { + "Value": { + "field": "m_Value", + "type": 7 + } + }, + "ManifestTestResource_t": { + "Name": { + "field": "m_name", + "type": 14 + } + }, + "TestResource_t": { + "Name": { + "field": "m_name", + "type": 14 + } + }, + "CSSDSEndFrameViewInfo": { + "ViewId": { + "field": "m_nViewId", + "type": 7 + }, + "ViewName": { + "field": "m_ViewName", + "type": 14 + } + }, + "CSSDSMsg_EndFrame": {}, + "CSSDSMsg_LayerBase": { + "ViewId": { + "field": "m_viewId", + "classname": "SceneViewId_t", + "type": 16 + }, + "ViewName": { + "field": "m_ViewName", + "type": 14 + }, + "LayerIndex": { + "field": "m_nLayerIndex", + "type": 2 + }, + "LayerId": { + "field": "m_nLayerId", + "type": 7 + }, + "LayerName": { + "field": "m_LayerName", + "type": 14 + }, + "DisplayText": { + "field": "m_displayText", + "type": 14 + } + }, + "CSSDSMsg_PostLayer": { + "Parent": { + "field": "CSSDSMsg_LayerBase", + "type": 11 + } + }, + "CSSDSMsg_PreLayer": { + "Parent": { + "field": "CSSDSMsg_LayerBase", + "type": 11 + } + }, + "CSSDSMsg_ViewRender": { + "ViewId": { + "field": "m_viewId", + "classname": "SceneViewId_t", + "type": 16 + }, + "ViewName": { + "field": "m_ViewName", + "type": 14 + } + }, + "CSSDSMsg_ViewTarget": { + "Name": { + "field": "m_Name", + "type": 14 + }, + "TextureId": { + "field": "m_TextureId", + "type": 7 + }, + "Width": { + "field": "m_nWidth", + "type": 2 + }, + "Height": { + "field": "m_nHeight", + "type": 2 + }, + "RequestedWidth": { + "field": "m_nRequestedWidth", + "type": 2 + }, + "RequestedHeight": { + "field": "m_nRequestedHeight", + "type": 2 + }, + "NumMipLevels": { + "field": "m_nNumMipLevels", + "type": 2 + }, + "Depth": { + "field": "m_nDepth", + "type": 2 + }, + "MultisampleNumSamples": { + "field": "m_nMultisampleNumSamples", + "type": 2 + }, + "Format": { + "field": "m_nFormat", + "type": 2 + } + }, + "CSSDSMsg_ViewTargetList": { + "ViewId": { + "field": "m_viewId", + "classname": "SceneViewId_t", + "type": 16 + }, + "ViewName": { + "field": "m_ViewName", + "type": 14 + } + }, + "SceneViewId_t": { + "ViewId": { + "field": "m_nViewId", + "type": 7 + }, + "FrameCount": { + "field": "m_nFrameCount", + "type": 7 + } + }, + "AutoRoomDoorwayPairs_t": { + "P1": { + "field": "vP1", + "type": 21 + }, + "P2": { + "field": "vP2", + "type": 21 + } + }, + "CAISound": { + "SoundType": { + "field": "m_iSoundType", + "type": 5 + }, + "SoundFlags": { + "field": "m_iSoundFlags", + "type": 5 + }, + "Volume": { + "field": "m_iVolume", + "type": 2 + }, + "SoundIndex": { + "field": "m_iSoundIndex", + "type": 2 + }, + "Duration": { + "field": "m_flDuration", + "type": 8 + }, + "ProxyEntityName": { + "field": "m_iszProxyEntityName", + "type": 13 + }, + "Parent": { + "field": "CPointEntity", + "type": 11 + } + }, + "CAI_ChangeHintGroup": { + "SearchType": { + "field": "m_iSearchType", + "type": 2 + }, + "StrSearchName": { + "field": "m_strSearchName", + "type": 13 + }, + "StrNewHintGroup": { + "field": "m_strNewHintGroup", + "type": 13 + }, + "Radius": { + "field": "m_flRadius", + "type": 8 + }, + "Parent": { + "field": "CBaseEntity", + "type": 11 + } + }, + "CAI_Expresser": { + "StopTalkTime": { + "field": "m_flStopTalkTime", + "type": 8 + }, + "StopTalkTimeWithoutDelay": { + "field": "m_flStopTalkTimeWithoutDelay", + "type": 8 + }, + "BlockedTalkTime": { + "field": "m_flBlockedTalkTime", + "type": 8 + }, + "VoicePitch": { + "field": "m_voicePitch", + "type": 2 + }, + "LastTimeAcceptedSpeak": { + "field": "m_flLastTimeAcceptedSpeak", + "type": 8 + }, + "AllowSpeakingInterrupts": { + "field": "m_bAllowSpeakingInterrupts", + "type": 10 + }, + "ConsiderSceneInvolvementAsSpeech": { + "field": "m_bConsiderSceneInvolvementAsSpeech", + "type": 10 + }, + "SceneEntityDisabled": { + "field": "m_bSceneEntityDisabled", + "type": 10 + }, + "LastSpokenPriority": { + "field": "m_nLastSpokenPriority", + "type": 2 + }, + "Outer": { + "field": "m_pOuter", + "classname": "CBaseFlex", + "type": 24 + } + }, + "CAI_ExpresserWithFollowup": { + "PostponedFollowup": { + "field": "m_pPostponedFollowup", + "classname": "ResponseFollowup", + "type": 24 + }, + "Parent": { + "field": "CAI_Expresser", + "type": 11 + } + }, + "CAK47": { + "Parent": { + "field": "CCSWeaponBaseGun", + "type": 11 + } + }, + "CAmbientGeneric": { + "Radius": { + "field": "m_radius", + "type": 8 + }, + "MaxRadius": { + "field": "m_flMaxRadius", + "type": 8 + }, + "SoundLevel": { + "field": "m_iSoundLevel", + "type": 6 + }, + "Dpv": { + "field": "m_dpv", + "classname": "dynpitchvol_t", + "type": 16 + }, + "Active": { + "field": "m_fActive", + "type": 10 + }, + "Looping": { + "field": "m_fLooping", + "type": 10 + }, + "Sound": { + "field": "m_iszSound", + "type": 13 + }, + "SourceEntName": { + "field": "m_sSourceEntName", + "type": 13 + }, + "SoundSource": { + "field": "m_hSoundSource", + "type": 17, + "classname": "CBaseEntity" + }, + "SoundSourceEntIndex": { + "field": "m_nSoundSourceEntIndex", + "type": 2 + }, + "Parent": { + "field": "CPointEntity", + "type": 11 + } + }, + "CAttributeContainer": { + "Item": { + "field": "m_Item", + "classname": "CEconItemView", + "type": 16 + }, + "Parent": { + "field": "CAttributeManager", + "type": 11 + } + }, + "CBarnLight": { + "Enabled": { + "field": "m_bEnabled", + "type": 10 + }, + "ColorMode": { + "field": "m_nColorMode", + "type": 2 + }, + "Color": { + "field": "m_Color", + "type": 19 + }, + "ColorTemperature": { + "field": "m_flColorTemperature", + "type": 8 + }, + "Brightness": { + "field": "m_flBrightness", + "type": 8 + }, + "BrightnessScale": { + "field": "m_flBrightnessScale", + "type": 8 + }, + "DirectLight": { + "field": "m_nDirectLight", + "type": 2 + }, + "BakedShadowIndex": { + "field": "m_nBakedShadowIndex", + "type": 2 + }, + "LuminaireShape": { + "field": "m_nLuminaireShape", + "type": 2 + }, + "LuminaireSize": { + "field": "m_flLuminaireSize", + "type": 8 + }, + "LuminaireAnisotropy": { + "field": "m_flLuminaireAnisotropy", + "type": 8 + }, + "LightStyleString": { + "field": "m_LightStyleString", + "type": 14 + }, + "LightStyleStartTime": { + "field": "m_flLightStyleStartTime", + "type": 8 + }, + "QueuedLightStyleStrings": { + "field": "m_QueuedLightStyleStrings", + "type": 50 + }, + "LightStyleEvents": { + "field": "m_LightStyleEvents", + "type": 50 + }, + "StyleEvent": { + "field": "m_StyleEvent", + "type": 45, + "size": 4 + }, + "Shape": { + "field": "m_flShape", + "type": 8 + }, + "SoftX": { + "field": "m_flSoftX", + "type": 8 + }, + "SoftY": { + "field": "m_flSoftY", + "type": 8 + }, + "Skirt": { + "field": "m_flSkirt", + "type": 8 + }, + "SkirtNear": { + "field": "m_flSkirtNear", + "type": 8 + }, + "SizeParams": { + "field": "m_vSizeParams", + "type": 21 + }, + "Range": { + "field": "m_flRange", + "type": 8 + }, + "Shear": { + "field": "m_vShear", + "type": 21 + }, + "BakeSpecularToCubemaps": { + "field": "m_nBakeSpecularToCubemaps", + "type": 2 + }, + "BakeSpecularToCubemapsSize": { + "field": "m_vBakeSpecularToCubemapsSize", + "type": 21 + }, + "CastShadows": { + "field": "m_nCastShadows", + "type": 2 + }, + "ShadowMapSize": { + "field": "m_nShadowMapSize", + "type": 2 + }, + "ShadowPriority": { + "field": "m_nShadowPriority", + "type": 2 + }, + "ContactShadow": { + "field": "m_bContactShadow", + "type": 10 + }, + "BounceLight": { + "field": "m_nBounceLight", + "type": 2 + }, + "BounceScale": { + "field": "m_flBounceScale", + "type": 8 + }, + "MinRoughness": { + "field": "m_flMinRoughness", + "type": 8 + }, + "AlternateColor": { + "field": "m_vAlternateColor", + "type": 21 + }, + "AlternateColorBrightness": { + "field": "m_fAlternateColorBrightness", + "type": 8 + }, + "Fog": { + "field": "m_nFog", + "type": 2 + }, + "FogStrength": { + "field": "m_flFogStrength", + "type": 8 + }, + "FogShadows": { + "field": "m_nFogShadows", + "type": 2 + }, + "FogScale": { + "field": "m_flFogScale", + "type": 8 + }, + "FogMixedShadows": { + "field": "m_bFogMixedShadows", + "type": 10 + }, + "FadeSizeStart": { + "field": "m_flFadeSizeStart", + "type": 8 + }, + "FadeSizeEnd": { + "field": "m_flFadeSizeEnd", + "type": 8 + }, + "ShadowFadeSizeStart": { + "field": "m_flShadowFadeSizeStart", + "type": 8 + }, + "ShadowFadeSizeEnd": { + "field": "m_flShadowFadeSizeEnd", + "type": 8 + }, + "PrecomputedFieldsValid": { + "field": "m_bPrecomputedFieldsValid", + "type": 10 + }, + "PrecomputedBoundsMins": { + "field": "m_vPrecomputedBoundsMins", + "type": 21 + }, + "PrecomputedBoundsMaxs": { + "field": "m_vPrecomputedBoundsMaxs", + "type": 21 + }, + "PrecomputedOBBOrigin": { + "field": "m_vPrecomputedOBBOrigin", + "type": 21 + }, + "PrecomputedOBBAngles": { + "field": "m_vPrecomputedOBBAngles", + "type": 20 + }, + "PrecomputedOBBExtent": { + "field": "m_vPrecomputedOBBExtent", + "type": 21 + }, + "PrecomputedSubFrusta": { + "field": "m_nPrecomputedSubFrusta", + "type": 2 + }, + "PrecomputedOBBOrigin0": { + "field": "m_vPrecomputedOBBOrigin0", + "type": 21 + }, + "PrecomputedOBBAngles0": { + "field": "m_vPrecomputedOBBAngles0", + "type": 20 + }, + "PrecomputedOBBExtent0": { + "field": "m_vPrecomputedOBBExtent0", + "type": 21 + }, + "PrecomputedOBBOrigin1": { + "field": "m_vPrecomputedOBBOrigin1", + "type": 21 + }, + "PrecomputedOBBAngles1": { + "field": "m_vPrecomputedOBBAngles1", + "type": 20 + }, + "PrecomputedOBBExtent1": { + "field": "m_vPrecomputedOBBExtent1", + "type": 21 + }, + "PrecomputedOBBOrigin2": { + "field": "m_vPrecomputedOBBOrigin2", + "type": 21 + }, + "PrecomputedOBBAngles2": { + "field": "m_vPrecomputedOBBAngles2", + "type": 20 + }, + "PrecomputedOBBExtent2": { + "field": "m_vPrecomputedOBBExtent2", + "type": 21 + }, + "PrecomputedOBBOrigin3": { + "field": "m_vPrecomputedOBBOrigin3", + "type": 21 + }, + "PrecomputedOBBAngles3": { + "field": "m_vPrecomputedOBBAngles3", + "type": 20 + }, + "PrecomputedOBBExtent3": { + "field": "m_vPrecomputedOBBExtent3", + "type": 21 + }, + "PrecomputedOBBOrigin4": { + "field": "m_vPrecomputedOBBOrigin4", + "type": 21 + }, + "PrecomputedOBBAngles4": { + "field": "m_vPrecomputedOBBAngles4", + "type": 20 + }, + "PrecomputedOBBExtent4": { + "field": "m_vPrecomputedOBBExtent4", + "type": 21 + }, + "PrecomputedOBBOrigin5": { + "field": "m_vPrecomputedOBBOrigin5", + "type": 21 + }, + "PrecomputedOBBAngles5": { + "field": "m_vPrecomputedOBBAngles5", + "type": 20 + }, + "PrecomputedOBBExtent5": { + "field": "m_vPrecomputedOBBExtent5", + "type": 21 + }, + "PvsModifyEntity": { + "field": "m_bPvsModifyEntity", + "type": 10 + }, + "VisClusters": { + "field": "m_VisClusters", + "type": 56 + }, + "Parent": { + "field": "CBaseModelEntity", + "type": 11 + } + }, + "CBaseButton": { + "MoveEntitySpace": { + "field": "m_angMoveEntitySpace", + "type": 20 + }, + "StayPushed": { + "field": "m_fStayPushed", + "type": 10 + }, + "Rotating": { + "field": "m_fRotating", + "type": 10 + }, + "Ls": { + "field": "m_ls", + "classname": "locksound_t", + "type": 16 + }, + "UseSound": { + "field": "m_sUseSound", + "type": 13 + }, + "LockedSound": { + "field": "m_sLockedSound", + "type": 13 + }, + "UnlockedSound": { + "field": "m_sUnlockedSound", + "type": 13 + }, + "OverrideAnticipationName": { + "field": "m_sOverrideAnticipationName", + "type": 13 + }, + "Locked": { + "field": "m_bLocked", + "type": 10 + }, + "Disabled": { + "field": "m_bDisabled", + "type": 10 + }, + "UseLockedTime": { + "field": "m_flUseLockedTime", + "type": 8 + }, + "SolidBsp": { + "field": "m_bSolidBsp", + "type": 10 + }, + "OnDamaged": { + "field": "m_OnDamaged", + "classname": "CEntityIOOutput", + "type": 16 + }, + "OnPressed": { + "field": "m_OnPressed", + "classname": "CEntityIOOutput", + "type": 16 + }, + "OnUseLocked": { + "field": "m_OnUseLocked", + "classname": "CEntityIOOutput", + "type": 16 + }, + "OnIn": { + "field": "m_OnIn", + "classname": "CEntityIOOutput", + "type": 16 + }, + "OnOut": { + "field": "m_OnOut", + "classname": "CEntityIOOutput", + "type": 16 + }, + "State": { + "field": "m_nState", + "type": 2 + }, + "Constraint": { + "field": "m_hConstraint", + "type": 17, + "classname": "CEntityInstance" + }, + "ConstraintParent": { + "field": "m_hConstraintParent", + "type": 17, + "classname": "CEntityInstance" + }, + "ForceNpcExclude": { + "field": "m_bForceNpcExclude", + "type": 10 + }, + "GlowEntity": { + "field": "m_sGlowEntity", + "type": 13 + }, + "GlowEntity1": { + "field": "m_glowEntity", + "type": 17, + "classname": "CBaseModelEntity" + }, + "Usable": { + "field": "m_usable", + "type": 10 + }, + "DisplayText": { + "field": "m_szDisplayText", + "type": 13 + }, + "Parent": { + "field": "CBaseToggle", + "type": 11 + } + }, + "CBaseCSGrenade": { + "Redraw": { + "field": "m_bRedraw", + "type": 10 + }, + "IsHeldByPlayer": { + "field": "m_bIsHeldByPlayer", + "type": 10 + }, + "PinPulled": { + "field": "m_bPinPulled", + "type": 10 + }, + "JumpThrow": { + "field": "m_bJumpThrow", + "type": 10 + }, + "ThrowAnimating": { + "field": "m_bThrowAnimating", + "type": 10 + }, + "ThrowTime": { + "field": "m_fThrowTime", + "type": 8 + }, + "ThrowStrength": { + "field": "m_flThrowStrength", + "type": 8 + }, + "ThrowStrengthApproach": { + "field": "m_flThrowStrengthApproach", + "type": 8 + }, + "DropTime": { + "field": "m_fDropTime", + "type": 8 + }, + "PinPullTime": { + "field": "m_fPinPullTime", + "type": 8 + }, + "JustPulledPin": { + "field": "m_bJustPulledPin", + "type": 10 + }, + "NextHoldTick": { + "field": "m_nNextHoldTick", + "type": 2 + }, + "NextHoldFrac": { + "field": "m_flNextHoldFrac", + "type": 8 + }, + "SwitchToWeaponAfterThrow": { + "field": "m_hSwitchToWeaponAfterThrow", + "type": 17, + "classname": "CCSWeaponBase" + }, + "Parent": { + "field": "CCSWeaponBase", + "type": 11 + } + }, + "CBaseCSGrenadeProjectile": { + "InitialPosition": { + "field": "m_vInitialPosition", + "type": 21 + }, + "InitialVelocity": { + "field": "m_vInitialVelocity", + "type": 21 + }, + "Bounces": { + "field": "m_nBounces", + "type": 2 + }, + "ExplodeEffectTickBegin": { + "field": "m_nExplodeEffectTickBegin", + "type": 2 + }, + "ExplodeEffectOrigin": { + "field": "m_vecExplodeEffectOrigin", + "type": 21 + }, + "SpawnTime": { + "field": "m_flSpawnTime", + "type": 8 + }, + "OGSExtraFlags": { + "field": "m_unOGSExtraFlags", + "type": 4 + }, + "DetonationRecorded": { + "field": "m_bDetonationRecorded", + "type": 10 + }, + "ItemIndex": { + "field": "m_nItemIndex", + "type": 5 + }, + "OriginalSpawnLocation": { + "field": "m_vecOriginalSpawnLocation", + "type": 21 + }, + "LastBounceSoundTime": { + "field": "m_flLastBounceSoundTime", + "type": 8 + }, + "GrenadeSpin": { + "field": "m_vecGrenadeSpin", + "type": 21 + }, + "LastHitSurfaceNormal": { + "field": "m_vecLastHitSurfaceNormal", + "type": 21 + }, + "TicksAtZeroVelocity": { + "field": "m_nTicksAtZeroVelocity", + "type": 2 + }, + "HasEverHitEnemy": { + "field": "m_bHasEverHitEnemy", + "type": 10 + }, + "Parent": { + "field": "CBaseGrenade", + "type": 11 + } + }, + "CBaseClientUIEntity": { + "Enabled": { + "field": "m_bEnabled", + "type": 10 + }, + "DialogXMLName": { + "field": "m_DialogXMLName", + "type": 13 + }, + "PanelClassName": { + "field": "m_PanelClassName", + "type": 13 + }, + "PanelID": { + "field": "m_PanelID", + "type": 13 + }, + "CustomOutput0": { + "field": "m_CustomOutput0", + "classname": "CEntityIOOutput", + "type": 16 + }, + "CustomOutput1": { + "field": "m_CustomOutput1", + "classname": "CEntityIOOutput", + "type": 16 + }, + "CustomOutput2": { + "field": "m_CustomOutput2", + "classname": "CEntityIOOutput", + "type": 16 + }, + "CustomOutput3": { + "field": "m_CustomOutput3", + "classname": "CEntityIOOutput", + "type": 16 + }, + "CustomOutput4": { + "field": "m_CustomOutput4", + "classname": "CEntityIOOutput", + "type": 16 + }, + "CustomOutput5": { + "field": "m_CustomOutput5", + "classname": "CEntityIOOutput", + "type": 16 + }, + "CustomOutput6": { + "field": "m_CustomOutput6", + "classname": "CEntityIOOutput", + "type": 16 + }, + "CustomOutput7": { + "field": "m_CustomOutput7", + "classname": "CEntityIOOutput", + "type": 16 + }, + "CustomOutput8": { + "field": "m_CustomOutput8", + "classname": "CEntityIOOutput", + "type": 16 + }, + "CustomOutput9": { + "field": "m_CustomOutput9", + "classname": "CEntityIOOutput", + "type": 16 + }, + "Parent": { + "field": "CBaseModelEntity", + "type": 11 + } + }, + "CBaseCombatCharacter": { + "ForceServerRagdoll": { + "field": "m_bForceServerRagdoll", + "type": 10 + }, + "ImpactEnergyScale": { + "field": "m_impactEnergyScale", + "type": 8 + }, + "ApplyStressDamage": { + "field": "m_bApplyStressDamage", + "type": 10 + }, + "DamageCount": { + "field": "m_iDamageCount", + "type": 2 + }, + "StrRelationships": { + "field": "m_strRelationships", + "type": 13 + }, + "Hull": { + "field": "m_eHull", + "type": 6 + }, + "NavHullIdx": { + "field": "m_nNavHullIdx", + "type": 6 + }, + "Parent": { + "field": "CBaseFlex", + "type": 11 + } + }, + "CBaseDMStart": { + "Master": { + "field": "m_Master", + "type": 13 + }, + "Parent": { + "field": "CPointEntity", + "type": 11 + } + }, + "CBaseDoor": { + "MoveEntitySpace": { + "field": "m_angMoveEntitySpace", + "type": 20 + }, + "MoveDirParentSpace": { + "field": "m_vecMoveDirParentSpace", + "type": 21 + }, + "Ls": { + "field": "m_ls", + "classname": "locksound_t", + "type": 16 + }, + "ForceClosed": { + "field": "m_bForceClosed", + "type": 10 + }, + "DoorGroup": { + "field": "m_bDoorGroup", + "type": 10 + }, + "Locked": { + "field": "m_bLocked", + "type": 10 + }, + "IgnoreDebris": { + "field": "m_bIgnoreDebris", + "type": 10 + }, + "SpawnPosition": { + "field": "m_eSpawnPosition", + "type": 6 + }, + "BlockDamage": { + "field": "m_flBlockDamage", + "type": 8 + }, + "NoiseMoving": { + "field": "m_NoiseMoving", + "type": 13 + }, + "NoiseArrived": { + "field": "m_NoiseArrived", + "type": 13 + }, + "NoiseMovingClosed": { + "field": "m_NoiseMovingClosed", + "type": 13 + }, + "NoiseArrivedClosed": { + "field": "m_NoiseArrivedClosed", + "type": 13 + }, + "ChainTarget": { + "field": "m_ChainTarget", + "type": 13 + }, + "OnBlockedClosing": { + "field": "m_OnBlockedClosing", + "classname": "CEntityIOOutput", + "type": 16 + }, + "OnBlockedOpening": { + "field": "m_OnBlockedOpening", + "classname": "CEntityIOOutput", + "type": 16 + }, + "OnUnblockedClosing": { + "field": "m_OnUnblockedClosing", + "classname": "CEntityIOOutput", + "type": 16 + }, + "OnUnblockedOpening": { + "field": "m_OnUnblockedOpening", + "classname": "CEntityIOOutput", + "type": 16 + }, + "OnFullyClosed": { + "field": "m_OnFullyClosed", + "classname": "CEntityIOOutput", + "type": 16 + }, + "OnFullyOpen": { + "field": "m_OnFullyOpen", + "classname": "CEntityIOOutput", + "type": 16 + }, + "OnClose": { + "field": "m_OnClose", + "classname": "CEntityIOOutput", + "type": 16 + }, + "OnOpen": { + "field": "m_OnOpen", + "classname": "CEntityIOOutput", + "type": 16 + }, + "OnLockedUse": { + "field": "m_OnLockedUse", + "classname": "CEntityIOOutput", + "type": 16 + }, + "LoopMoveSound": { + "field": "m_bLoopMoveSound", + "type": 10 + }, + "CreateNavObstacle": { + "field": "m_bCreateNavObstacle", + "type": 10 + }, + "IsChaining": { + "field": "m_isChaining", + "type": 10 + }, + "IsUsable": { + "field": "m_bIsUsable", + "type": 10 + }, + "Parent": { + "field": "CBaseToggle", + "type": 11 + } + }, + "CBaseEntity": { + "CBodyComponent": { + "field": "m_CBodyComponent", + "classname": "CBodyComponent", + "type": 24 + }, + "NetworkTransmitComponent": { + "field": "m_NetworkTransmitComponent", + "classname": "CNetworkTransmitComponent", + "type": 16 + }, + "CurrentThinkContext": { + "field": "m_iCurrentThinkContext", + "type": 2 + }, + "LastThinkTick": { + "field": "m_nLastThinkTick", + "type": 2 + }, + "DisabledContextThinks": { + "field": "m_bDisabledContextThinks", + "type": 10 + }, + "LastNetworkChange": { + "field": "m_lastNetworkChange", + "type": 8 + }, + "ResponseContext": { + "field": "m_iszResponseContext", + "type": 13 + }, + "Health": { + "field": "m_iHealth", + "type": 2 + }, + "MaxHealth": { + "field": "m_iMaxHealth", + "type": 2 + }, + "LifeState": { + "field": "m_lifeState", + "type": 4 + }, + "DamageAccumulator": { + "field": "m_flDamageAccumulator", + "type": 8 + }, + "TakesDamage": { + "field": "m_bTakesDamage", + "type": 10 + }, + "TakeDamageFlags": { + "field": "m_nTakeDamageFlags", + "type": 7 + }, + "PlatformType": { + "field": "m_nPlatformType", + "type": 4 + }, + "MoveCollide": { + "field": "m_MoveCollide", + "type": 4 + }, + "MoveType": { + "field": "m_MoveType", + "type": 4 + }, + "ActualMoveType": { + "field": "m_nActualMoveType", + "type": 4 + }, + "WaterTouch": { + "field": "m_nWaterTouch", + "type": 4 + }, + "SlimeTouch": { + "field": "m_nSlimeTouch", + "type": 4 + }, + "RestoreInHierarchy": { + "field": "m_bRestoreInHierarchy", + "type": 10 + }, + "Target": { + "field": "m_target", + "type": 13 + }, + "DamageFilter": { + "field": "m_hDamageFilter", + "type": 17, + "classname": "CBaseFilter" + }, + "DamageFilterName": { + "field": "m_iszDamageFilterName", + "type": 13 + }, + "MoveDoneTime": { + "field": "m_flMoveDoneTime", + "type": 8 + }, + "SubclassID": { + "field": "m_nSubclassID", + "type": 12 + }, + "AnimTime": { + "field": "m_flAnimTime", + "type": 8 + }, + "SimulationTime": { + "field": "m_flSimulationTime", + "type": 8 + }, + "CreateTime": { + "field": "m_flCreateTime", + "type": 8 + }, + "ClientSideRagdoll": { + "field": "m_bClientSideRagdoll", + "type": 10 + }, + "InterpolationFrame": { + "field": "m_ubInterpolationFrame", + "type": 4 + }, + "PrevVPhysicsUpdatePos": { + "field": "m_vPrevVPhysicsUpdatePos", + "type": 21 + }, + "TeamNum": { + "field": "m_iTeamNum", + "type": 4 + }, + "Globalname": { + "field": "m_iGlobalname", + "type": 13 + }, + "SentToClients": { + "field": "m_iSentToClients", + "type": 2 + }, + "Speed": { + "field": "m_flSpeed", + "type": 8 + }, + "UniqueHammerID": { + "field": "m_sUniqueHammerID", + "type": 14 + }, + "Spawnflags": { + "field": "m_spawnflags", + "type": 6 + }, + "NextThinkTick": { + "field": "m_nNextThinkTick", + "type": 2 + }, + "SimulationTick": { + "field": "m_nSimulationTick", + "type": 2 + }, + "OnKilled": { + "field": "m_OnKilled", + "classname": "CEntityIOOutput", + "type": 16 + }, + "Flags": { + "field": "m_fFlags", + "type": 6 + }, + "AbsVelocity": { + "field": "m_vecAbsVelocity", + "type": 21 + }, + "Velocity": { + "field": "m_vecVelocity", + "classname": "CNetworkVelocityVector", + "type": 16 + }, + "BaseVelocity": { + "field": "m_vecBaseVelocity", + "type": 21 + }, + "PushEnumCount": { + "field": "m_nPushEnumCount", + "type": 2 + }, + "Collision": { + "field": "m_pCollision", + "classname": "CCollisionProperty", + "type": 24 + }, + "EffectEntity": { + "field": "m_hEffectEntity", + "type": 17, + "classname": "CBaseEntity" + }, + "OwnerEntity": { + "field": "m_hOwnerEntity", + "type": 17, + "classname": "CBaseEntity" + }, + "Effects": { + "field": "m_fEffects", + "type": 6 + }, + "GroundEntity": { + "field": "m_hGroundEntity", + "type": 17, + "classname": "CBaseEntity" + }, + "GroundBodyIndex": { + "field": "m_nGroundBodyIndex", + "type": 2 + }, + "Friction": { + "field": "m_flFriction", + "type": 8 + }, + "Elasticity": { + "field": "m_flElasticity", + "type": 8 + }, + "GravityScale": { + "field": "m_flGravityScale", + "type": 8 + }, + "TimeScale": { + "field": "m_flTimeScale", + "type": 8 + }, + "WaterLevel": { + "field": "m_flWaterLevel", + "type": 8 + }, + "AnimatedEveryTick": { + "field": "m_bAnimatedEveryTick", + "type": 10 + }, + "DisableLowViolence": { + "field": "m_bDisableLowViolence", + "type": 10 + }, + "WaterType": { + "field": "m_nWaterType", + "type": 4 + }, + "EFlags": { + "field": "m_iEFlags", + "type": 2 + }, + "OnUser1": { + "field": "m_OnUser1", + "classname": "CEntityIOOutput", + "type": 16 + }, + "OnUser2": { + "field": "m_OnUser2", + "classname": "CEntityIOOutput", + "type": 16 + }, + "OnUser3": { + "field": "m_OnUser3", + "classname": "CEntityIOOutput", + "type": 16 + }, + "OnUser4": { + "field": "m_OnUser4", + "classname": "CEntityIOOutput", + "type": 16 + }, + "InitialTeamNum": { + "field": "m_iInitialTeamNum", + "type": 2 + }, + "NavIgnoreUntilTime": { + "field": "m_flNavIgnoreUntilTime", + "type": 8 + }, + "AngVelocity": { + "field": "m_vecAngVelocity", + "type": 20 + }, + "NetworkQuantizeOriginAndAngles": { + "field": "m_bNetworkQuantizeOriginAndAngles", + "type": 10 + }, + "LagCompensate": { + "field": "m_bLagCompensate", + "type": 10 + }, + "OverriddenFriction": { + "field": "m_flOverriddenFriction", + "type": 8 + }, + "Blocker": { + "field": "m_pBlocker", + "type": 17, + "classname": "CBaseEntity" + }, + "LocalTime": { + "field": "m_flLocalTime", + "type": 8 + }, + "VPhysicsUpdateLocalTime": { + "field": "m_flVPhysicsUpdateLocalTime", + "type": 8 + }, + "BloodType": { + "field": "m_nBloodType", + "type": 6 + }, + "Parent": { + "field": "CEntityInstance", + "type": 11 + } + }, + "CBaseEntityAPI": {}, + "CBaseFilter": { + "Negated": { + "field": "m_bNegated", + "type": 10 + }, + "OnPass": { + "field": "m_OnPass", + "classname": "CEntityIOOutput", + "type": 16 + }, + "OnFail": { + "field": "m_OnFail", + "classname": "CEntityIOOutput", + "type": 16 + }, + "Parent": { + "field": "CLogicalEntity", + "type": 11 + } + }, + "CBaseFire": { + "Scale": { + "field": "m_flScale", + "type": 8 + }, + "StartScale": { + "field": "m_flStartScale", + "type": 8 + }, + "ScaleTime": { + "field": "m_flScaleTime", + "type": 8 + }, + "Flags": { + "field": "m_nFlags", + "type": 6 + }, + "Parent": { + "field": "CBaseEntity", + "type": 11 + } + }, + "CBaseFlex": { + "FlexWeight": { + "field": "m_flexWeight", + "type": 59 + }, + "LookTargetPosition": { + "field": "m_vLookTargetPosition", + "type": 21 + }, + "Blinktoggle": { + "field": "m_blinktoggle", + "type": 10 + }, + "AllowResponsesEndTime": { + "field": "m_flAllowResponsesEndTime", + "type": 8 + }, + "LastFlexAnimationTime": { + "field": "m_flLastFlexAnimationTime", + "type": 8 + }, + "NextSceneEventId": { + "field": "m_nNextSceneEventId", + "classname": "SceneEventId_t", + "type": 16 + }, + "UpdateLayerPriorities": { + "field": "m_bUpdateLayerPriorities", + "type": 10 + }, + "Parent": { + "field": "CBaseAnimGraph", + "type": 11 + } + }, + "CBaseFlexAlias_funCBaseFlex": { + "Parent": { + "field": "CBaseFlex", + "type": 11 + } + }, + "CBaseGrenade": { + "OnPlayerPickup": { + "field": "m_OnPlayerPickup", + "classname": "CEntityIOOutput", + "type": 16 + }, + "OnExplode": { + "field": "m_OnExplode", + "classname": "CEntityIOOutput", + "type": 16 + }, + "HasWarnedAI": { + "field": "m_bHasWarnedAI", + "type": 10 + }, + "IsSmokeGrenade": { + "field": "m_bIsSmokeGrenade", + "type": 10 + }, + "IsLive": { + "field": "m_bIsLive", + "type": 10 + }, + "DmgRadius": { + "field": "m_DmgRadius", + "type": 8 + }, + "DetonateTime": { + "field": "m_flDetonateTime", + "type": 8 + }, + "WarnAITime": { + "field": "m_flWarnAITime", + "type": 8 + }, + "Damage": { + "field": "m_flDamage", + "type": 8 + }, + "BounceSound": { + "field": "m_iszBounceSound", + "type": 13 + }, + "ExplosionSound": { + "field": "m_ExplosionSound", + "type": 14 + }, + "Thrower": { + "field": "m_hThrower", + "type": 17, + "classname": "CCSPlayerPawn" + }, + "NextAttack": { + "field": "m_flNextAttack", + "type": 8 + }, + "OriginalThrower": { + "field": "m_hOriginalThrower", + "type": 17, + "classname": "CCSPlayerPawn" + }, + "Parent": { + "field": "CBaseFlex", + "type": 11 + } + }, + "CBaseIssue": { + "TypeString": { + "field": "m_szTypeString", + "type": 15, + "size": 64 + }, + "DetailsString": { + "field": "m_szDetailsString", + "type": 15, + "size": 4096 + }, + "NumYesVotes": { + "field": "m_iNumYesVotes", + "type": 2 + }, + "NumNoVotes": { + "field": "m_iNumNoVotes", + "type": 2 + }, + "NumPotentialVotes": { + "field": "m_iNumPotentialVotes", + "type": 2 + } + }, + "CBaseModelEntity": { + "CRenderComponent": { + "field": "m_CRenderComponent", + "classname": "CRenderComponent", + "type": 24 + }, + "CHitboxComponent": { + "field": "m_CHitboxComponent", + "classname": "CHitboxComponent", + "type": 16 + }, + "DestructiblePartInitialStateDestructed0": { + "field": "m_nDestructiblePartInitialStateDestructed0", + "type": 6 + }, + "DestructiblePartInitialStateDestructed1": { + "field": "m_nDestructiblePartInitialStateDestructed1", + "type": 6 + }, + "DestructiblePartInitialStateDestructed2": { + "field": "m_nDestructiblePartInitialStateDestructed2", + "type": 6 + }, + "DestructiblePartInitialStateDestructed3": { + "field": "m_nDestructiblePartInitialStateDestructed3", + "type": 6 + }, + "DestructiblePartInitialStateDestructed4": { + "field": "m_nDestructiblePartInitialStateDestructed4", + "type": 6 + }, + "LastHitDestructiblePartIndex": { + "field": "m_nLastHitDestructiblePartIndex", + "type": 2 + }, + "LastHitGroup": { + "field": "m_LastHitGroup", + "type": 6 + }, + "DissolveStartTime": { + "field": "m_flDissolveStartTime", + "type": 8 + }, + "OnIgnite": { + "field": "m_OnIgnite", + "classname": "CEntityIOOutput", + "type": 16 + }, + "RenderMode": { + "field": "m_nRenderMode", + "type": 4 + }, + "RenderFX": { + "field": "m_nRenderFX", + "type": 4 + }, + "AllowFadeInView": { + "field": "m_bAllowFadeInView", + "type": 10 + }, + "Render": { + "field": "m_clrRender", + "type": 19 + }, + "RenderToCubemaps": { + "field": "m_bRenderToCubemaps", + "type": 10 + }, + "NoInterpolate": { + "field": "m_bNoInterpolate", + "type": 10 + }, + "Collision": { + "field": "m_Collision", + "classname": "CCollisionProperty", + "type": 16 + }, + "Glow": { + "field": "m_Glow", + "classname": "CGlowProperty", + "type": 16 + }, + "GlowBackfaceMult": { + "field": "m_flGlowBackfaceMult", + "type": 8 + }, + "FadeMinDist": { + "field": "m_fadeMinDist", + "type": 8 + }, + "FadeMaxDist": { + "field": "m_fadeMaxDist", + "type": 8 + }, + "FadeScale": { + "field": "m_flFadeScale", + "type": 8 + }, + "ShadowStrength": { + "field": "m_flShadowStrength", + "type": 8 + }, + "ObjectCulling": { + "field": "m_nObjectCulling", + "type": 4 + }, + "AddDecal": { + "field": "m_nAddDecal", + "type": 2 + }, + "DecalPosition": { + "field": "m_vDecalPosition", + "type": 21 + }, + "DecalForwardAxis": { + "field": "m_vDecalForwardAxis", + "type": 21 + }, + "DecalHealBloodRate": { + "field": "m_flDecalHealBloodRate", + "type": 8 + }, + "DecalHealHeightRate": { + "field": "m_flDecalHealHeightRate", + "type": 8 + }, + "ViewOffset": { + "field": "m_vecViewOffset", + "classname": "CNetworkViewOffsetVector", + "type": 16 + }, + "Parent": { + "field": "CBaseEntity", + "type": 11 + } + }, + "CBaseMoveBehavior": { + "PositionInterpolator": { + "field": "m_iPositionInterpolator", + "type": 2 + }, + "RotationInterpolator": { + "field": "m_iRotationInterpolator", + "type": 2 + }, + "AnimStartTime": { + "field": "m_flAnimStartTime", + "type": 8 + }, + "AnimEndTime": { + "field": "m_flAnimEndTime", + "type": 8 + }, + "AverageSpeedAcrossFrame": { + "field": "m_flAverageSpeedAcrossFrame", + "type": 8 + }, + "CurrentKeyFrame": { + "field": "m_pCurrentKeyFrame", + "classname": "CPathKeyFrame", + "type": 24 + }, + "TargetKeyFrame": { + "field": "m_pTargetKeyFrame", + "classname": "CPathKeyFrame", + "type": 24 + }, + "PreKeyFrame": { + "field": "m_pPreKeyFrame", + "classname": "CPathKeyFrame", + "type": 24 + }, + "PostKeyFrame": { + "field": "m_pPostKeyFrame", + "classname": "CPathKeyFrame", + "type": 24 + }, + "TimeIntoFrame": { + "field": "m_flTimeIntoFrame", + "type": 8 + }, + "Direction": { + "field": "m_iDirection", + "type": 2 + }, + "Parent": { + "field": "CPathKeyFrame", + "type": 11 + } + }, + "CBasePlatTrain": { + "NoiseMoving": { + "field": "m_NoiseMoving", + "type": 13 + }, + "NoiseArrived": { + "field": "m_NoiseArrived", + "type": 13 + }, + "Volume": { + "field": "m_volume", + "type": 8 + }, + "TWidth": { + "field": "m_flTWidth", + "type": 8 + }, + "TLength": { + "field": "m_flTLength", + "type": 8 + }, + "Parent": { + "field": "CBaseToggle", + "type": 11 + } + }, + "CBasePlayerPawn": { + "WeaponServices": { + "field": "m_pWeaponServices", + "classname": "CPlayer_WeaponServices", + "type": 24 + }, + "ItemServices": { + "field": "m_pItemServices", + "classname": "CPlayer_ItemServices", + "type": 24 + }, + "AutoaimServices": { + "field": "m_pAutoaimServices", + "classname": "CPlayer_AutoaimServices", + "type": 24 + }, + "ObserverServices": { + "field": "m_pObserverServices", + "classname": "CPlayer_ObserverServices", + "type": 24 + }, + "WaterServices": { + "field": "m_pWaterServices", + "classname": "CPlayer_WaterServices", + "type": 24 + }, + "UseServices": { + "field": "m_pUseServices", + "classname": "CPlayer_UseServices", + "type": 24 + }, + "FlashlightServices": { + "field": "m_pFlashlightServices", + "classname": "CPlayer_FlashlightServices", + "type": 24 + }, + "CameraServices": { + "field": "m_pCameraServices", + "classname": "CPlayer_CameraServices", + "type": 24 + }, + "MovementServices": { + "field": "m_pMovementServices", + "classname": "CPlayer_MovementServices", + "type": 24 + }, + "HighestGeneratedServerViewAngleChangeIndex": { + "field": "m_nHighestGeneratedServerViewAngleChangeIndex", + "type": 6 + }, + "_angle": { + "field": "v_angle", + "type": 20 + }, + "_anglePrevious": { + "field": "v_anglePrevious", + "type": 20 + }, + "HideHUD": { + "field": "m_iHideHUD", + "type": 6 + }, + "Skybox3d": { + "field": "m_skybox3d", + "classname": "sky3dparams_t", + "type": 16 + }, + "TimeLastHurt": { + "field": "m_fTimeLastHurt", + "type": 8 + }, + "DeathTime": { + "field": "m_flDeathTime", + "type": 8 + }, + "NextSuicideTime": { + "field": "m_fNextSuicideTime", + "type": 8 + }, + "InitHUD": { + "field": "m_fInitHUD", + "type": 10 + }, + "Expresser": { + "field": "m_pExpresser", + "classname": "CAI_Expresser", + "type": 24 + }, + "Controller": { + "field": "m_hController", + "type": 17, + "classname": "CBasePlayerController" + }, + "HltvReplayDelay": { + "field": "m_fHltvReplayDelay", + "type": 8 + }, + "HltvReplayEnd": { + "field": "m_fHltvReplayEnd", + "type": 8 + }, + "HltvReplayEntity": { + "field": "m_iHltvReplayEntity", + "type": 2 + }, + "Parent": { + "field": "CBaseCombatCharacter", + "type": 11 + } + }, + "CBasePlayerWeapon": { + "NextPrimaryAttackTick": { + "field": "m_nNextPrimaryAttackTick", + "type": 2 + }, + "NextPrimaryAttackTickRatio": { + "field": "m_flNextPrimaryAttackTickRatio", + "type": 8 + }, + "NextSecondaryAttackTick": { + "field": "m_nNextSecondaryAttackTick", + "type": 2 + }, + "NextSecondaryAttackTickRatio": { + "field": "m_flNextSecondaryAttackTickRatio", + "type": 8 + }, + "Clip1": { + "field": "m_iClip1", + "type": 2 + }, + "Clip2": { + "field": "m_iClip2", + "type": 2 + }, + "ReserveAmmo": { + "field": "m_pReserveAmmo", + "type": 31, + "size": 2 + }, + "OnPlayerUse": { + "field": "m_OnPlayerUse", + "classname": "CEntityIOOutput", + "type": 16 + }, + "Parent": { + "field": "CEconEntity", + "type": 11 + } + }, + "CBasePropDoor": { + "AutoReturnDelay": { + "field": "m_flAutoReturnDelay", + "type": 8 + }, + "HardwareType": { + "field": "m_nHardwareType", + "type": 2 + }, + "NeedsHardware": { + "field": "m_bNeedsHardware", + "type": 10 + }, + "DoorState": { + "field": "m_eDoorState", + "type": 6 + }, + "Locked": { + "field": "m_bLocked", + "type": 10 + }, + "ClosedPosition": { + "field": "m_closedPosition", + "type": 21 + }, + "ClosedAngles": { + "field": "m_closedAngles", + "type": 20 + }, + "Blocker": { + "field": "m_hBlocker", + "type": 17, + "classname": "CBaseEntity" + }, + "FirstBlocked": { + "field": "m_bFirstBlocked", + "type": 10 + }, + "Ls": { + "field": "m_ls", + "classname": "locksound_t", + "type": 16 + }, + "ForceClosed": { + "field": "m_bForceClosed", + "type": 10 + }, + "LatchWorldPosition": { + "field": "m_vecLatchWorldPosition", + "type": 21 + }, + "Activator": { + "field": "m_hActivator", + "type": 17, + "classname": "CBaseEntity" + }, + "SoundMoving": { + "field": "m_SoundMoving", + "type": 13 + }, + "SoundOpen": { + "field": "m_SoundOpen", + "type": 13 + }, + "SoundClose": { + "field": "m_SoundClose", + "type": 13 + }, + "SoundLock": { + "field": "m_SoundLock", + "type": 13 + }, + "SoundUnlock": { + "field": "m_SoundUnlock", + "type": 13 + }, + "SoundLatch": { + "field": "m_SoundLatch", + "type": 13 + }, + "SoundPound": { + "field": "m_SoundPound", + "type": 13 + }, + "SoundJiggle": { + "field": "m_SoundJiggle", + "type": 13 + }, + "SoundLockedAnim": { + "field": "m_SoundLockedAnim", + "type": 13 + }, + "NumCloseAttempts": { + "field": "m_numCloseAttempts", + "type": 2 + }, + "PhysicsMaterial": { + "field": "m_nPhysicsMaterial", + "type": 12 + }, + "SlaveName": { + "field": "m_SlaveName", + "type": 13 + }, + "Master": { + "field": "m_hMaster", + "type": 17, + "classname": "CBasePropDoor" + }, + "OnBlockedClosing": { + "field": "m_OnBlockedClosing", + "classname": "CEntityIOOutput", + "type": 16 + }, + "OnBlockedOpening": { + "field": "m_OnBlockedOpening", + "classname": "CEntityIOOutput", + "type": 16 + }, + "OnUnblockedClosing": { + "field": "m_OnUnblockedClosing", + "classname": "CEntityIOOutput", + "type": 16 + }, + "OnUnblockedOpening": { + "field": "m_OnUnblockedOpening", + "classname": "CEntityIOOutput", + "type": 16 + }, + "OnFullyClosed": { + "field": "m_OnFullyClosed", + "classname": "CEntityIOOutput", + "type": 16 + }, + "OnFullyOpen": { + "field": "m_OnFullyOpen", + "classname": "CEntityIOOutput", + "type": 16 + }, + "OnClose": { + "field": "m_OnClose", + "classname": "CEntityIOOutput", + "type": 16 + }, + "OnOpen": { + "field": "m_OnOpen", + "classname": "CEntityIOOutput", + "type": 16 + }, + "OnLockedUse": { + "field": "m_OnLockedUse", + "classname": "CEntityIOOutput", + "type": 16 + }, + "OnAjarOpen": { + "field": "m_OnAjarOpen", + "classname": "CEntityIOOutput", + "type": 16 + }, + "Parent": { + "field": "CDynamicProp", + "type": 11 + } + }, + "CBaseToggle": { + "Toggle_state": { + "field": "m_toggle_state", + "type": 6 + }, + "MoveDistance": { + "field": "m_flMoveDistance", + "type": 8 + }, + "Wait": { + "field": "m_flWait", + "type": 8 + }, + "Lip": { + "field": "m_flLip", + "type": 8 + }, + "AlwaysFireBlockedOutputs": { + "field": "m_bAlwaysFireBlockedOutputs", + "type": 10 + }, + "Position1": { + "field": "m_vecPosition1", + "type": 21 + }, + "Position2": { + "field": "m_vecPosition2", + "type": 21 + }, + "MoveAng": { + "field": "m_vecMoveAng", + "type": 20 + }, + "Angle1": { + "field": "m_vecAngle1", + "type": 20 + }, + "Angle2": { + "field": "m_vecAngle2", + "type": 20 + }, + "Height": { + "field": "m_flHeight", + "type": 8 + }, + "Activator": { + "field": "m_hActivator", + "type": 17, + "classname": "CBaseEntity" + }, + "FinalDest": { + "field": "m_vecFinalDest", + "type": 21 + }, + "FinalAngle": { + "field": "m_vecFinalAngle", + "type": 20 + }, + "MovementType": { + "field": "m_movementType", + "type": 2 + }, + "Master": { + "field": "m_sMaster", + "type": 13 + }, + "Parent": { + "field": "CBaseModelEntity", + "type": 11 + } + }, + "CBaseTrigger": { + "Disabled": { + "field": "m_bDisabled", + "type": 10 + }, + "FilterName": { + "field": "m_iFilterName", + "type": 13 + }, + "Filter": { + "field": "m_hFilter", + "type": 17, + "classname": "CBaseFilter" + }, + "OnStartTouch": { + "field": "m_OnStartTouch", + "classname": "CEntityIOOutput", + "type": 16 + }, + "OnStartTouchAll": { + "field": "m_OnStartTouchAll", + "classname": "CEntityIOOutput", + "type": 16 + }, + "OnEndTouch": { + "field": "m_OnEndTouch", + "classname": "CEntityIOOutput", + "type": 16 + }, + "OnEndTouchAll": { + "field": "m_OnEndTouchAll", + "classname": "CEntityIOOutput", + "type": 16 + }, + "OnTouching": { + "field": "m_OnTouching", + "classname": "CEntityIOOutput", + "type": 16 + }, + "OnTouchingEachEntity": { + "field": "m_OnTouchingEachEntity", + "classname": "CEntityIOOutput", + "type": 16 + }, + "OnNotTouching": { + "field": "m_OnNotTouching", + "classname": "CEntityIOOutput", + "type": 16 + }, + "ClientSidePredicted": { + "field": "m_bClientSidePredicted", + "type": 10 + }, + "Parent": { + "field": "CBaseToggle", + "type": 11 + } + }, + "CBaseViewModel": { + "LastFacing": { + "field": "m_vecLastFacing", + "type": 21 + }, + "ViewModelIndex": { + "field": "m_nViewModelIndex", + "type": 6 + }, + "AnimationParity": { + "field": "m_nAnimationParity", + "type": 6 + }, + "AnimationStartTime": { + "field": "m_flAnimationStartTime", + "type": 8 + }, + "Weapon": { + "field": "m_hWeapon", + "type": 17, + "classname": "CBasePlayerWeapon" + }, + "VMName": { + "field": "m_sVMName", + "type": 13 + }, + "AnimationPrefix": { + "field": "m_sAnimationPrefix", + "type": 13 + }, + "OldLayerSequence": { + "field": "m_hOldLayerSequence", + "type": 2 + }, + "OldLayer": { + "field": "m_oldLayer", + "type": 2 + }, + "OldLayerStartTime": { + "field": "m_oldLayerStartTime", + "type": 8 + }, + "ControlPanel": { + "field": "m_hControlPanel", + "type": 17, + "classname": "CBaseEntity" + }, + "Parent": { + "field": "CBaseAnimGraph", + "type": 11 + } + }, + "CBeam": { + "FrameRate": { + "field": "m_flFrameRate", + "type": 8 + }, + "HDRColorScale": { + "field": "m_flHDRColorScale", + "type": 8 + }, + "FireTime": { + "field": "m_flFireTime", + "type": 8 + }, + "Damage": { + "field": "m_flDamage", + "type": 8 + }, + "NumBeamEnts": { + "field": "m_nNumBeamEnts", + "type": 4 + }, + "BeamType": { + "field": "m_nBeamType", + "type": 6 + }, + "BeamFlags": { + "field": "m_nBeamFlags", + "type": 6 + }, + "AttachEntity": { + "field": "m_hAttachEntity", + "type": 46, + "size": 10 + }, + "Width": { + "field": "m_fWidth", + "type": 8 + }, + "EndWidth": { + "field": "m_fEndWidth", + "type": 8 + }, + "FadeLength": { + "field": "m_fFadeLength", + "type": 8 + }, + "HaloScale": { + "field": "m_fHaloScale", + "type": 8 + }, + "Amplitude": { + "field": "m_fAmplitude", + "type": 8 + }, + "StartFrame": { + "field": "m_fStartFrame", + "type": 8 + }, + "Speed": { + "field": "m_fSpeed", + "type": 8 + }, + "Frame": { + "field": "m_flFrame", + "type": 8 + }, + "ClipStyle": { + "field": "m_nClipStyle", + "type": 6 + }, + "TurnedOff": { + "field": "m_bTurnedOff", + "type": 10 + }, + "EndPos": { + "field": "m_vecEndPos", + "type": 21 + }, + "EndEntity": { + "field": "m_hEndEntity", + "type": 17, + "classname": "CBaseEntity" + }, + "DissolveType": { + "field": "m_nDissolveType", + "type": 2 + }, + "Parent": { + "field": "CBaseModelEntity", + "type": 11 + } + }, + "CBlood": { + "SprayAngles": { + "field": "m_vecSprayAngles", + "type": 20 + }, + "SprayDir": { + "field": "m_vecSprayDir", + "type": 21 + }, + "Amount": { + "field": "m_flAmount", + "type": 8 + }, + "Color": { + "field": "m_Color", + "type": 6 + }, + "Parent": { + "field": "CPointEntity", + "type": 11 + } + }, + "CBot": { + "Controller": { + "field": "m_pController", + "classname": "CCSPlayerController", + "type": 24 + }, + "Player": { + "field": "m_pPlayer", + "classname": "CCSPlayerPawn", + "type": 24 + }, + "HasSpawned": { + "field": "m_bHasSpawned", + "type": 10 + }, + "Id": { + "field": "m_id", + "type": 6 + }, + "IsRunning": { + "field": "m_isRunning", + "type": 10 + }, + "IsCrouching": { + "field": "m_isCrouching", + "type": 10 + }, + "ForwardSpeed": { + "field": "m_forwardSpeed", + "type": 8 + }, + "LeftSpeed": { + "field": "m_leftSpeed", + "type": 8 + }, + "VerticalSpeed": { + "field": "m_verticalSpeed", + "type": 8 + }, + "ButtonFlags": { + "field": "m_buttonFlags", + "type": 7 + }, + "JumpTimestamp": { + "field": "m_jumpTimestamp", + "type": 8 + }, + "ViewForward": { + "field": "m_viewForward", + "type": 21 + }, + "PostureStackIndex": { + "field": "m_postureStackIndex", + "type": 2 + } + }, + "CBreakable": { + "CPropDataComponent": { + "field": "m_CPropDataComponent", + "classname": "CPropDataComponent", + "type": 16 + }, + "Material": { + "field": "m_Material", + "type": 6 + }, + "Breaker": { + "field": "m_hBreaker", + "type": 17, + "classname": "CBaseEntity" + }, + "Explosion": { + "field": "m_Explosion", + "type": 6 + }, + "SpawnObject": { + "field": "m_iszSpawnObject", + "type": 13 + }, + "PressureDelay": { + "field": "m_flPressureDelay", + "type": 8 + }, + "MinHealthDmg": { + "field": "m_iMinHealthDmg", + "type": 2 + }, + "PropData": { + "field": "m_iszPropData", + "type": 13 + }, + "ImpactEnergyScale": { + "field": "m_impactEnergyScale", + "type": 8 + }, + "OverrideBlockLOS": { + "field": "m_nOverrideBlockLOS", + "type": 6 + }, + "OnBreak": { + "field": "m_OnBreak", + "classname": "CEntityIOOutput", + "type": 16 + }, + "PerformanceMode": { + "field": "m_PerformanceMode", + "type": 6 + }, + "PhysicsAttacker": { + "field": "m_hPhysicsAttacker", + "type": 17, + "classname": "CBasePlayerPawn" + }, + "LastPhysicsInfluenceTime": { + "field": "m_flLastPhysicsInfluenceTime", + "type": 8 + }, + "Parent": { + "field": "CBaseModelEntity", + "type": 11 + } + }, + "CBreakableProp": { + "CPropDataComponent": { + "field": "m_CPropDataComponent", + "classname": "CPropDataComponent", + "type": 16 + }, + "OnBreak": { + "field": "m_OnBreak", + "classname": "CEntityIOOutput", + "type": 16 + }, + "OnTakeDamage": { + "field": "m_OnTakeDamage", + "classname": "CEntityIOOutput", + "type": 16 + }, + "ImpactEnergyScale": { + "field": "m_impactEnergyScale", + "type": 8 + }, + "MinHealthDmg": { + "field": "m_iMinHealthDmg", + "type": 2 + }, + "PreferredCarryAngles": { + "field": "m_preferredCarryAngles", + "type": 20 + }, + "PressureDelay": { + "field": "m_flPressureDelay", + "type": 8 + }, + "DefBurstScale": { + "field": "m_flDefBurstScale", + "type": 8 + }, + "DefBurstOffset": { + "field": "m_vDefBurstOffset", + "type": 21 + }, + "Breaker": { + "field": "m_hBreaker", + "type": 17, + "classname": "CBaseEntity" + }, + "PerformanceMode": { + "field": "m_PerformanceMode", + "type": 6 + }, + "PreventDamageBeforeTime": { + "field": "m_flPreventDamageBeforeTime", + "type": 8 + }, + "BreakableContentsType": { + "field": "m_BreakableContentsType", + "type": 6 + }, + "StrBreakableContentsPropGroupOverride": { + "field": "m_strBreakableContentsPropGroupOverride", + "type": 14 + }, + "StrBreakableContentsParticleOverride": { + "field": "m_strBreakableContentsParticleOverride", + "type": 14 + }, + "HasBreakPiecesOrCommands": { + "field": "m_bHasBreakPiecesOrCommands", + "type": 10 + }, + "ExplodeDamage": { + "field": "m_explodeDamage", + "type": 8 + }, + "ExplodeRadius": { + "field": "m_explodeRadius", + "type": 8 + }, + "ExplosionDelay": { + "field": "m_explosionDelay", + "type": 8 + }, + "ExplosionBuildupSound": { + "field": "m_explosionBuildupSound", + "type": 13 + }, + "ExplosionCustomEffect": { + "field": "m_explosionCustomEffect", + "type": 13 + }, + "ExplosionCustomSound": { + "field": "m_explosionCustomSound", + "type": 13 + }, + "ExplosionModifier": { + "field": "m_explosionModifier", + "type": 13 + }, + "PhysicsAttacker": { + "field": "m_hPhysicsAttacker", + "type": 17, + "classname": "CBasePlayerPawn" + }, + "LastPhysicsInfluenceTime": { + "field": "m_flLastPhysicsInfluenceTime", + "type": 8 + }, + "OriginalBlockLOS": { + "field": "m_bOriginalBlockLOS", + "type": 10 + }, + "DefaultFadeScale": { + "field": "m_flDefaultFadeScale", + "type": 8 + }, + "LastAttacker": { + "field": "m_hLastAttacker", + "type": 17, + "classname": "CBaseEntity" + }, + "FlareEnt": { + "field": "m_hFlareEnt", + "type": 17, + "classname": "CBaseEntity" + }, + "UsePuntSound": { + "field": "m_bUsePuntSound", + "type": 10 + }, + "PuntSound": { + "field": "m_iszPuntSound", + "type": 13 + }, + "NoGhostCollision": { + "field": "m_noGhostCollision", + "type": 10 + }, + "Parent": { + "field": "CBaseProp", + "type": 11 + } + }, + "CBtActionAim": { + "SensorInputKey": { + "field": "m_szSensorInputKey", + "type": 14 + }, + "AimReadyKey": { + "field": "m_szAimReadyKey", + "type": 14 + }, + "ZoomCooldownTimestamp": { + "field": "m_flZoomCooldownTimestamp", + "type": 8 + }, + "DoneAiming": { + "field": "m_bDoneAiming", + "type": 10 + }, + "LerpStartTime": { + "field": "m_flLerpStartTime", + "type": 8 + }, + "NextLookTargetLerpTime": { + "field": "m_flNextLookTargetLerpTime", + "type": 8 + }, + "PenaltyReductionRatio": { + "field": "m_flPenaltyReductionRatio", + "type": 8 + }, + "NextLookTarget": { + "field": "m_NextLookTarget", + "type": 20 + }, + "AimTimer": { + "field": "m_AimTimer", + "classname": "CountdownTimer", + "type": 16 + }, + "SniperHoldTimer": { + "field": "m_SniperHoldTimer", + "classname": "CountdownTimer", + "type": 16 + }, + "FocusIntervalTimer": { + "field": "m_FocusIntervalTimer", + "classname": "CountdownTimer", + "type": 16 + }, + "Acquired": { + "field": "m_bAcquired", + "type": 10 + }, + "Parent": { + "field": "CBtNode", + "type": 11 + } + }, + "CBtActionCombatPositioning": { + "SensorInputKey": { + "field": "m_szSensorInputKey", + "type": 14 + }, + "IsAttackingKey": { + "field": "m_szIsAttackingKey", + "type": 14 + }, + "ActionTimer": { + "field": "m_ActionTimer", + "classname": "CountdownTimer", + "type": 16 + }, + "Crouching": { + "field": "m_bCrouching", + "type": 10 + }, + "Parent": { + "field": "CBtNode", + "type": 11 + } + }, + "CBtActionMoveTo": { + "DestinationInputKey": { + "field": "m_szDestinationInputKey", + "type": 14 + }, + "HidingSpotInputKey": { + "field": "m_szHidingSpotInputKey", + "type": 14 + }, + "ThreatInputKey": { + "field": "m_szThreatInputKey", + "type": 14 + }, + "Destination": { + "field": "m_vecDestination", + "type": 21 + }, + "AutoLookAdjust": { + "field": "m_bAutoLookAdjust", + "type": 10 + }, + "ComputePath": { + "field": "m_bComputePath", + "type": 10 + }, + "DamagingAreasPenaltyCost": { + "field": "m_flDamagingAreasPenaltyCost", + "type": 8 + }, + "CheckApproximateCornersTimer": { + "field": "m_CheckApproximateCornersTimer", + "classname": "CountdownTimer", + "type": 16 + }, + "CheckHighPriorityItem": { + "field": "m_CheckHighPriorityItem", + "classname": "CountdownTimer", + "type": 16 + }, + "RepathTimer": { + "field": "m_RepathTimer", + "classname": "CountdownTimer", + "type": 16 + }, + "ArrivalEpsilon": { + "field": "m_flArrivalEpsilon", + "type": 8 + }, + "AdditionalArrivalEpsilon2D": { + "field": "m_flAdditionalArrivalEpsilon2D", + "type": 8 + }, + "HidingSpotCheckDistanceThreshold": { + "field": "m_flHidingSpotCheckDistanceThreshold", + "type": 8 + }, + "NearestAreaDistanceThreshold": { + "field": "m_flNearestAreaDistanceThreshold", + "type": 8 + }, + "Parent": { + "field": "CBtNode", + "type": 11 + } + }, + "CBtActionParachutePositioning": { + "ActionTimer": { + "field": "m_ActionTimer", + "classname": "CountdownTimer", + "type": 16 + }, + "Parent": { + "field": "CBtNode", + "type": 11 + } + }, + "CBtNode": {}, + "CBtNodeComposite": { + "Parent": { + "field": "CBtNode", + "type": 11 + } + }, + "CBtNodeCondition": { + "Negated": { + "field": "m_bNegated", + "type": 10 + }, + "Parent": { + "field": "CBtNodeDecorator", + "type": 11 + } + }, + "CBtNodeConditionInactive": { + "RoundStartThresholdSeconds": { + "field": "m_flRoundStartThresholdSeconds", + "type": 8 + }, + "SensorInactivityThresholdSeconds": { + "field": "m_flSensorInactivityThresholdSeconds", + "type": 8 + }, + "SensorInactivityTimer": { + "field": "m_SensorInactivityTimer", + "classname": "CountdownTimer", + "type": 16 + }, + "Parent": { + "field": "CBtNodeCondition", + "type": 11 + } + }, + "CBtNodeDecorator": { + "Parent": { + "field": "CBtNode", + "type": 11 + } + }, + "CBubbling": { + "Density": { + "field": "m_density", + "type": 2 + }, + "Frequency": { + "field": "m_frequency", + "type": 2 + }, + "State": { + "field": "m_state", + "type": 2 + }, + "Parent": { + "field": "CBaseModelEntity", + "type": 11 + } + }, + "CBuyZone": { + "LegacyTeamNum": { + "field": "m_LegacyTeamNum", + "type": 2 + }, + "Parent": { + "field": "CBaseTrigger", + "type": 11 + } + }, + "CC4": { + "LastValidPlayerHeldPosition": { + "field": "m_vecLastValidPlayerHeldPosition", + "type": 21 + }, + "LastValidDroppedPosition": { + "field": "m_vecLastValidDroppedPosition", + "type": 21 + }, + "DoValidDroppedPositionCheck": { + "field": "m_bDoValidDroppedPositionCheck", + "type": 10 + }, + "StartedArming": { + "field": "m_bStartedArming", + "type": 10 + }, + "ArmedTime": { + "field": "m_fArmedTime", + "type": 8 + }, + "BombPlacedAnimation": { + "field": "m_bBombPlacedAnimation", + "type": 10 + }, + "IsPlantingViaUse": { + "field": "m_bIsPlantingViaUse", + "type": 10 + }, + "EntitySpottedState": { + "field": "m_entitySpottedState", + "classname": "EntitySpottedState_t", + "type": 16 + }, + "SpotRules": { + "field": "m_nSpotRules", + "type": 2 + }, + "PlayedArmingBeeps": { + "field": "m_bPlayedArmingBeeps", + "type": 39, + "size": 7 + }, + "BombPlanted": { + "field": "m_bBombPlanted", + "type": 10 + }, + "Parent": { + "field": "CCSWeaponBase", + "type": 11 + } + }, + "CCSBot": { + "EyePosition": { + "field": "m_eyePosition", + "type": 21 + }, + "Name": { + "field": "m_name", + "type": 15, + "size": 64 + }, + "CombatRange": { + "field": "m_combatRange", + "type": 8 + }, + "IsRogue": { + "field": "m_isRogue", + "type": 10 + }, + "RogueTimer": { + "field": "m_rogueTimer", + "classname": "CountdownTimer", + "type": 16 + }, + "DiedLastRound": { + "field": "m_diedLastRound", + "type": 10 + }, + "SafeTime": { + "field": "m_safeTime", + "type": 8 + }, + "WasSafe": { + "field": "m_wasSafe", + "type": 10 + }, + "BlindFire": { + "field": "m_blindFire", + "type": 10 + }, + "SurpriseTimer": { + "field": "m_surpriseTimer", + "classname": "CountdownTimer", + "type": 16 + }, + "AllowActive": { + "field": "m_bAllowActive", + "type": 10 + }, + "IsFollowing": { + "field": "m_isFollowing", + "type": 10 + }, + "Leader": { + "field": "m_leader", + "type": 17, + "classname": "CCSPlayerPawn" + }, + "FollowTimestamp": { + "field": "m_followTimestamp", + "type": 8 + }, + "AllowAutoFollowTime": { + "field": "m_allowAutoFollowTime", + "type": 8 + }, + "HurryTimer": { + "field": "m_hurryTimer", + "classname": "CountdownTimer", + "type": 16 + }, + "AlertTimer": { + "field": "m_alertTimer", + "classname": "CountdownTimer", + "type": 16 + }, + "SneakTimer": { + "field": "m_sneakTimer", + "classname": "CountdownTimer", + "type": 16 + }, + "PanicTimer": { + "field": "m_panicTimer", + "classname": "CountdownTimer", + "type": 16 + }, + "StateTimestamp": { + "field": "m_stateTimestamp", + "type": 8 + }, + "IsAttacking": { + "field": "m_isAttacking", + "type": 10 + }, + "IsOpeningDoor": { + "field": "m_isOpeningDoor", + "type": 10 + }, + "TaskEntity": { + "field": "m_taskEntity", + "type": 17, + "classname": "CBaseEntity" + }, + "GoalPosition": { + "field": "m_goalPosition", + "type": 21 + }, + "GoalEntity": { + "field": "m_goalEntity", + "type": 17, + "classname": "CBaseEntity" + }, + "Avoid": { + "field": "m_avoid", + "type": 17, + "classname": "CBaseEntity" + }, + "AvoidTimestamp": { + "field": "m_avoidTimestamp", + "type": 8 + }, + "IsStopping": { + "field": "m_isStopping", + "type": 10 + }, + "HasVisitedEnemySpawn": { + "field": "m_hasVisitedEnemySpawn", + "type": 10 + }, + "StillTimer": { + "field": "m_stillTimer", + "classname": "IntervalTimer", + "type": 16 + }, + "EyeAnglesUnderPathFinderControl": { + "field": "m_bEyeAnglesUnderPathFinderControl", + "type": 10 + }, + "PathIndex": { + "field": "m_pathIndex", + "type": 2 + }, + "AreaEnteredTimestamp": { + "field": "m_areaEnteredTimestamp", + "type": 8 + }, + "RepathTimer": { + "field": "m_repathTimer", + "classname": "CountdownTimer", + "type": 16 + }, + "AvoidFriendTimer": { + "field": "m_avoidFriendTimer", + "classname": "CountdownTimer", + "type": 16 + }, + "IsFriendInTheWay": { + "field": "m_isFriendInTheWay", + "type": 10 + }, + "PoliteTimer": { + "field": "m_politeTimer", + "classname": "CountdownTimer", + "type": 16 + }, + "IsWaitingBehindFriend": { + "field": "m_isWaitingBehindFriend", + "type": 10 + }, + "PathLadderEnd": { + "field": "m_pathLadderEnd", + "type": 8 + }, + "MustRunTimer": { + "field": "m_mustRunTimer", + "classname": "CountdownTimer", + "type": 16 + }, + "WaitTimer": { + "field": "m_waitTimer", + "classname": "CountdownTimer", + "type": 16 + }, + "UpdateTravelDistanceTimer": { + "field": "m_updateTravelDistanceTimer", + "classname": "CountdownTimer", + "type": 16 + }, + "PlayerTravelDistance": { + "field": "m_playerTravelDistance", + "type": 37, + "size": 64 + }, + "TravelDistancePhase": { + "field": "m_travelDistancePhase", + "type": 4 + }, + "HostageEscortCount": { + "field": "m_hostageEscortCount", + "type": 4 + }, + "HostageEscortCountTimestamp": { + "field": "m_hostageEscortCountTimestamp", + "type": 8 + }, + "DesiredTeam": { + "field": "m_desiredTeam", + "type": 2 + }, + "HasJoined": { + "field": "m_hasJoined", + "type": 10 + }, + "IsWaitingForHostage": { + "field": "m_isWaitingForHostage", + "type": 10 + }, + "InhibitWaitingForHostageTimer": { + "field": "m_inhibitWaitingForHostageTimer", + "classname": "CountdownTimer", + "type": 16 + }, + "WaitForHostageTimer": { + "field": "m_waitForHostageTimer", + "classname": "CountdownTimer", + "type": 16 + }, + "NoisePosition": { + "field": "m_noisePosition", + "type": 21 + }, + "NoiseTravelDistance": { + "field": "m_noiseTravelDistance", + "type": 8 + }, + "NoiseTimestamp": { + "field": "m_noiseTimestamp", + "type": 8 + }, + "NoiseSource": { + "field": "m_noiseSource", + "classname": "CCSPlayerPawn", + "type": 24 + }, + "NoiseBendTimer": { + "field": "m_noiseBendTimer", + "classname": "CountdownTimer", + "type": 16 + }, + "BentNoisePosition": { + "field": "m_bentNoisePosition", + "type": 21 + }, + "BendNoisePositionValid": { + "field": "m_bendNoisePositionValid", + "type": 10 + }, + "LookAroundStateTimestamp": { + "field": "m_lookAroundStateTimestamp", + "type": 8 + }, + "LookAheadAngle": { + "field": "m_lookAheadAngle", + "type": 8 + }, + "ForwardAngle": { + "field": "m_forwardAngle", + "type": 8 + }, + "InhibitLookAroundTimestamp": { + "field": "m_inhibitLookAroundTimestamp", + "type": 8 + }, + "LookAtSpot": { + "field": "m_lookAtSpot", + "type": 21 + }, + "LookAtSpotDuration": { + "field": "m_lookAtSpotDuration", + "type": 8 + }, + "LookAtSpotTimestamp": { + "field": "m_lookAtSpotTimestamp", + "type": 8 + }, + "LookAtSpotAngleTolerance": { + "field": "m_lookAtSpotAngleTolerance", + "type": 8 + }, + "LookAtSpotClearIfClose": { + "field": "m_lookAtSpotClearIfClose", + "type": 10 + }, + "LookAtSpotAttack": { + "field": "m_lookAtSpotAttack", + "type": 10 + }, + "LookAtDesc": { + "field": "m_lookAtDesc", + "type": 15 + }, + "PeripheralTimestamp": { + "field": "m_peripheralTimestamp", + "type": 8 + }, + "ApproachPointCount": { + "field": "m_approachPointCount", + "type": 4 + }, + "ApproachPointViewPosition": { + "field": "m_approachPointViewPosition", + "type": 21 + }, + "ViewSteadyTimer": { + "field": "m_viewSteadyTimer", + "classname": "IntervalTimer", + "type": 16 + }, + "TossGrenadeTimer": { + "field": "m_tossGrenadeTimer", + "classname": "CountdownTimer", + "type": 16 + }, + "IsAvoidingGrenade": { + "field": "m_isAvoidingGrenade", + "classname": "CountdownTimer", + "type": 16 + }, + "SpotCheckTimestamp": { + "field": "m_spotCheckTimestamp", + "type": 8 + }, + "CheckedHidingSpotCount": { + "field": "m_checkedHidingSpotCount", + "type": 2 + }, + "LookPitch": { + "field": "m_lookPitch", + "type": 8 + }, + "LookPitchVel": { + "field": "m_lookPitchVel", + "type": 8 + }, + "LookYaw": { + "field": "m_lookYaw", + "type": 8 + }, + "LookYawVel": { + "field": "m_lookYawVel", + "type": 8 + }, + "TargetSpot": { + "field": "m_targetSpot", + "type": 21 + }, + "TargetSpotVelocity": { + "field": "m_targetSpotVelocity", + "type": 21 + }, + "TargetSpotPredicted": { + "field": "m_targetSpotPredicted", + "type": 21 + }, + "AimError": { + "field": "m_aimError", + "type": 20 + }, + "AimGoal": { + "field": "m_aimGoal", + "type": 20 + }, + "TargetSpotTime": { + "field": "m_targetSpotTime", + "type": 8 + }, + "AimFocus": { + "field": "m_aimFocus", + "type": 8 + }, + "AimFocusInterval": { + "field": "m_aimFocusInterval", + "type": 8 + }, + "AimFocusNextUpdate": { + "field": "m_aimFocusNextUpdate", + "type": 8 + }, + "IgnoreEnemiesTimer": { + "field": "m_ignoreEnemiesTimer", + "classname": "CountdownTimer", + "type": 16 + }, + "Enemy": { + "field": "m_enemy", + "type": 17, + "classname": "CCSPlayerPawn" + }, + "IsEnemyVisible": { + "field": "m_isEnemyVisible", + "type": 10 + }, + "VisibleEnemyParts": { + "field": "m_visibleEnemyParts", + "type": 4 + }, + "LastEnemyPosition": { + "field": "m_lastEnemyPosition", + "type": 21 + }, + "LastSawEnemyTimestamp": { + "field": "m_lastSawEnemyTimestamp", + "type": 8 + }, + "FirstSawEnemyTimestamp": { + "field": "m_firstSawEnemyTimestamp", + "type": 8 + }, + "CurrentEnemyAcquireTimestamp": { + "field": "m_currentEnemyAcquireTimestamp", + "type": 8 + }, + "EnemyDeathTimestamp": { + "field": "m_enemyDeathTimestamp", + "type": 8 + }, + "FriendDeathTimestamp": { + "field": "m_friendDeathTimestamp", + "type": 8 + }, + "IsLastEnemyDead": { + "field": "m_isLastEnemyDead", + "type": 10 + }, + "NearbyEnemyCount": { + "field": "m_nearbyEnemyCount", + "type": 2 + }, + "Bomber": { + "field": "m_bomber", + "type": 17, + "classname": "CCSPlayerPawn" + }, + "NearbyFriendCount": { + "field": "m_nearbyFriendCount", + "type": 2 + }, + "ClosestVisibleFriend": { + "field": "m_closestVisibleFriend", + "type": 17, + "classname": "CCSPlayerPawn" + }, + "ClosestVisibleHumanFriend": { + "field": "m_closestVisibleHumanFriend", + "type": 17, + "classname": "CCSPlayerPawn" + }, + "AttentionInterval": { + "field": "m_attentionInterval", + "classname": "IntervalTimer", + "type": 16 + }, + "Attacker": { + "field": "m_attacker", + "type": 17, + "classname": "CCSPlayerPawn" + }, + "AttackedTimestamp": { + "field": "m_attackedTimestamp", + "type": 8 + }, + "BurnedByFlamesTimer": { + "field": "m_burnedByFlamesTimer", + "classname": "IntervalTimer", + "type": 16 + }, + "LastVictimID": { + "field": "m_lastVictimID", + "type": 2 + }, + "IsAimingAtEnemy": { + "field": "m_isAimingAtEnemy", + "type": 10 + }, + "IsRapidFiring": { + "field": "m_isRapidFiring", + "type": 10 + }, + "EquipTimer": { + "field": "m_equipTimer", + "classname": "IntervalTimer", + "type": 16 + }, + "ZoomTimer": { + "field": "m_zoomTimer", + "classname": "CountdownTimer", + "type": 16 + }, + "FireWeaponTimestamp": { + "field": "m_fireWeaponTimestamp", + "type": 8 + }, + "LookForWeaponsOnGroundTimer": { + "field": "m_lookForWeaponsOnGroundTimer", + "classname": "CountdownTimer", + "type": 16 + }, + "IsSleeping": { + "field": "m_bIsSleeping", + "type": 10 + }, + "IsEnemySniperVisible": { + "field": "m_isEnemySniperVisible", + "type": 10 + }, + "SawEnemySniperTimer": { + "field": "m_sawEnemySniperTimer", + "classname": "CountdownTimer", + "type": 16 + }, + "EnemyQueueIndex": { + "field": "m_enemyQueueIndex", + "type": 4 + }, + "EnemyQueueCount": { + "field": "m_enemyQueueCount", + "type": 4 + }, + "EnemyQueueAttendIndex": { + "field": "m_enemyQueueAttendIndex", + "type": 4 + }, + "IsStuck": { + "field": "m_isStuck", + "type": 10 + }, + "StuckTimestamp": { + "field": "m_stuckTimestamp", + "type": 8 + }, + "StuckSpot": { + "field": "m_stuckSpot", + "type": 21 + }, + "WiggleTimer": { + "field": "m_wiggleTimer", + "classname": "CountdownTimer", + "type": 16 + }, + "StuckJumpTimer": { + "field": "m_stuckJumpTimer", + "classname": "CountdownTimer", + "type": 16 + }, + "NextCleanupCheckTimestamp": { + "field": "m_nextCleanupCheckTimestamp", + "type": 8 + }, + "AvgVel": { + "field": "m_avgVel", + "type": 37, + "size": 10 + }, + "AvgVelIndex": { + "field": "m_avgVelIndex", + "type": 2 + }, + "AvgVelCount": { + "field": "m_avgVelCount", + "type": 2 + }, + "LastOrigin": { + "field": "m_lastOrigin", + "type": 21 + }, + "LastRadioRecievedTimestamp": { + "field": "m_lastRadioRecievedTimestamp", + "type": 8 + }, + "LastRadioSentTimestamp": { + "field": "m_lastRadioSentTimestamp", + "type": 8 + }, + "RadioSubject": { + "field": "m_radioSubject", + "type": 17, + "classname": "CCSPlayerPawn" + }, + "RadioPosition": { + "field": "m_radioPosition", + "type": 21 + }, + "VoiceEndTimestamp": { + "field": "m_voiceEndTimestamp", + "type": 8 + }, + "LastValidReactionQueueFrame": { + "field": "m_lastValidReactionQueueFrame", + "type": 2 + }, + "Parent": { + "field": "CBot", + "type": 11 + } + }, + "CCSGOViewModel": { + "ShouldIgnoreOffsetAndAccuracy": { + "field": "m_bShouldIgnoreOffsetAndAccuracy", + "type": 10 + }, + "Parent": { + "field": "CPredictedViewModel", + "type": 11 + } + }, + "CCSGO_TeamIntroCharacterPosition": { + "Parent": { + "field": "CCSGO_TeamPreviewCharacterPosition", + "type": 11 + } + }, + "CCSGO_TeamIntroCounterTerroristPosition": { + "Parent": { + "field": "CCSGO_TeamIntroCharacterPosition", + "type": 11 + } + }, + "CCSGO_TeamIntroTerroristPosition": { + "Parent": { + "field": "CCSGO_TeamIntroCharacterPosition", + "type": 11 + } + }, + "CCSGO_TeamPreviewCharacterPosition": { + "Variant": { + "field": "m_nVariant", + "type": 2 + }, + "Random": { + "field": "m_nRandom", + "type": 2 + }, + "Ordinal": { + "field": "m_nOrdinal", + "type": 2 + }, + "WeaponName": { + "field": "m_sWeaponName", + "type": 14 + }, + "Xuid": { + "field": "m_xuid", + "type": 7 + }, + "AgentItem": { + "field": "m_agentItem", + "classname": "CEconItemView", + "type": 16 + }, + "GlovesItem": { + "field": "m_glovesItem", + "classname": "CEconItemView", + "type": 16 + }, + "WeaponItem": { + "field": "m_weaponItem", + "classname": "CEconItemView", + "type": 16 + }, + "Parent": { + "field": "CBaseEntity", + "type": 11 + } + }, + "CCSGO_TeamSelectCharacterPosition": { + "Parent": { + "field": "CCSGO_TeamPreviewCharacterPosition", + "type": 11 + } + }, + "CCSGO_TeamSelectCounterTerroristPosition": { + "Parent": { + "field": "CCSGO_TeamSelectCharacterPosition", + "type": 11 + } + }, + "CCSGO_TeamSelectTerroristPosition": { + "Parent": { + "field": "CCSGO_TeamSelectCharacterPosition", + "type": 11 + } + }, + "CCSGameRules": { + "FreezePeriod": { + "field": "m_bFreezePeriod", + "type": 10 + }, + "WarmupPeriod": { + "field": "m_bWarmupPeriod", + "type": 10 + }, + "WarmupPeriodEnd": { + "field": "m_fWarmupPeriodEnd", + "type": 8 + }, + "WarmupPeriodStart": { + "field": "m_fWarmupPeriodStart", + "type": 8 + }, + "ServerPaused": { + "field": "m_bServerPaused", + "type": 10 + }, + "TerroristTimeOutActive": { + "field": "m_bTerroristTimeOutActive", + "type": 10 + }, + "CTTimeOutActive": { + "field": "m_bCTTimeOutActive", + "type": 10 + }, + "TerroristTimeOutRemaining": { + "field": "m_flTerroristTimeOutRemaining", + "type": 8 + }, + "CTTimeOutRemaining": { + "field": "m_flCTTimeOutRemaining", + "type": 8 + }, + "TerroristTimeOuts": { + "field": "m_nTerroristTimeOuts", + "type": 2 + }, + "CTTimeOuts": { + "field": "m_nCTTimeOuts", + "type": 2 + }, + "TechnicalTimeOut": { + "field": "m_bTechnicalTimeOut", + "type": 10 + }, + "MatchWaitingForResume": { + "field": "m_bMatchWaitingForResume", + "type": 10 + }, + "RoundTime": { + "field": "m_iRoundTime", + "type": 2 + }, + "MatchStartTime": { + "field": "m_fMatchStartTime", + "type": 8 + }, + "RoundStartTime": { + "field": "m_fRoundStartTime", + "type": 8 + }, + "RestartRoundTime": { + "field": "m_flRestartRoundTime", + "type": 8 + }, + "GameRestart": { + "field": "m_bGameRestart", + "type": 10 + }, + "GameStartTime": { + "field": "m_flGameStartTime", + "type": 8 + }, + "TimeUntilNextPhaseStarts": { + "field": "m_timeUntilNextPhaseStarts", + "type": 8 + }, + "GamePhase": { + "field": "m_gamePhase", + "type": 2 + }, + "TotalRoundsPlayed": { + "field": "m_totalRoundsPlayed", + "type": 2 + }, + "RoundsPlayedThisPhase": { + "field": "m_nRoundsPlayedThisPhase", + "type": 2 + }, + "OvertimePlaying": { + "field": "m_nOvertimePlaying", + "type": 2 + }, + "HostagesRemaining": { + "field": "m_iHostagesRemaining", + "type": 2 + }, + "AnyHostageReached": { + "field": "m_bAnyHostageReached", + "type": 10 + }, + "MapHasBombTarget": { + "field": "m_bMapHasBombTarget", + "type": 10 + }, + "MapHasRescueZone": { + "field": "m_bMapHasRescueZone", + "type": 10 + }, + "MapHasBuyZone": { + "field": "m_bMapHasBuyZone", + "type": 10 + }, + "IsQueuedMatchmaking": { + "field": "m_bIsQueuedMatchmaking", + "type": 10 + }, + "QueuedMatchmakingMode": { + "field": "m_nQueuedMatchmakingMode", + "type": 2 + }, + "IsValveDS": { + "field": "m_bIsValveDS", + "type": 10 + }, + "LogoMap": { + "field": "m_bLogoMap", + "type": 10 + }, + "PlayAllStepSoundsOnServer": { + "field": "m_bPlayAllStepSoundsOnServer", + "type": 10 + }, + "SpectatorSlotCount": { + "field": "m_iSpectatorSlotCount", + "type": 2 + }, + "MatchDevice": { + "field": "m_MatchDevice", + "type": 2 + }, + "HasMatchStarted": { + "field": "m_bHasMatchStarted", + "type": 10 + }, + "NextMapInMapgroup": { + "field": "m_nNextMapInMapgroup", + "type": 2 + }, + "TournamentEventName": { + "field": "m_szTournamentEventName", + "type": 15, + "size": 512 + }, + "TournamentEventStage": { + "field": "m_szTournamentEventStage", + "type": 15, + "size": 512 + }, + "MatchStatTxt": { + "field": "m_szMatchStatTxt", + "type": 15, + "size": 512 + }, + "TournamentPredictionsTxt": { + "field": "m_szTournamentPredictionsTxt", + "type": 15, + "size": 512 + }, + "TournamentPredictionsPct": { + "field": "m_nTournamentPredictionsPct", + "type": 2 + }, + "CMMItemDropRevealStartTime": { + "field": "m_flCMMItemDropRevealStartTime", + "type": 8 + }, + "CMMItemDropRevealEndTime": { + "field": "m_flCMMItemDropRevealEndTime", + "type": 8 + }, + "IsDroppingItems": { + "field": "m_bIsDroppingItems", + "type": 10 + }, + "IsQuestEligible": { + "field": "m_bIsQuestEligible", + "type": 10 + }, + "IsHltvActive": { + "field": "m_bIsHltvActive", + "type": 10 + }, + "ProhibitedItemIndices": { + "field": "m_arrProhibitedItemIndices", + "type": 34, + "size": 100 + }, + "TournamentActiveCasterAccounts": { + "field": "m_arrTournamentActiveCasterAccounts", + "type": 35, + "size": 4 + }, + "NumBestOfMaps": { + "field": "m_numBestOfMaps", + "type": 2 + }, + "HalloweenMaskListSeed": { + "field": "m_nHalloweenMaskListSeed", + "type": 2 + }, + "BombDropped": { + "field": "m_bBombDropped", + "type": 10 + }, + "BombPlanted": { + "field": "m_bBombPlanted", + "type": 10 + }, + "RoundWinStatus": { + "field": "m_iRoundWinStatus", + "type": 2 + }, + "RoundWinReason": { + "field": "m_eRoundWinReason", + "type": 2 + }, + "TCantBuy": { + "field": "m_bTCantBuy", + "type": 10 + }, + "CTCantBuy": { + "field": "m_bCTCantBuy", + "type": 10 + }, + "MatchStats_RoundResults": { + "field": "m_iMatchStats_RoundResults", + "type": 31, + "size": 30 + }, + "MatchStats_PlayersAlive_CT": { + "field": "m_iMatchStats_PlayersAlive_CT", + "type": 31, + "size": 30 + }, + "MatchStats_PlayersAlive_T": { + "field": "m_iMatchStats_PlayersAlive_T", + "type": 31, + "size": 30 + }, + "TeamRespawnWaveTimes": { + "field": "m_TeamRespawnWaveTimes", + "type": 37, + "size": 32 + }, + "NextRespawnWave": { + "field": "m_flNextRespawnWave", + "type": 37, + "size": 32 + }, + "ServerQuestID": { + "field": "m_nServerQuestID", + "type": 2 + }, + "MinimapMins": { + "field": "m_vMinimapMins", + "type": 21 + }, + "MinimapMaxs": { + "field": "m_vMinimapMaxs", + "type": 21 + }, + "MinimapVerticalSectionHeights": { + "field": "m_MinimapVerticalSectionHeights", + "type": 37, + "size": 8 + }, + "SpawnedTerrorHuntHeavy": { + "field": "m_bSpawnedTerrorHuntHeavy", + "type": 10 + }, + "EndMatchMapGroupVoteTypes": { + "field": "m_nEndMatchMapGroupVoteTypes", + "type": 31, + "size": 10 + }, + "EndMatchMapGroupVoteOptions": { + "field": "m_nEndMatchMapGroupVoteOptions", + "type": 31, + "size": 10 + }, + "EndMatchMapVoteWinner": { + "field": "m_nEndMatchMapVoteWinner", + "type": 2 + }, + "NumConsecutiveCTLoses": { + "field": "m_iNumConsecutiveCTLoses", + "type": 2 + }, + "NumConsecutiveTerroristLoses": { + "field": "m_iNumConsecutiveTerroristLoses", + "type": 2 + }, + "HasHostageBeenTouched": { + "field": "m_bHasHostageBeenTouched", + "type": 10 + }, + "IntermissionStartTime": { + "field": "m_flIntermissionStartTime", + "type": 8 + }, + "IntermissionEndTime": { + "field": "m_flIntermissionEndTime", + "type": 8 + }, + "LevelInitialized": { + "field": "m_bLevelInitialized", + "type": 10 + }, + "TotalRoundsPlayed1": { + "field": "m_iTotalRoundsPlayed", + "type": 2 + }, + "UnBalancedRounds": { + "field": "m_iUnBalancedRounds", + "type": 2 + }, + "EndMatchOnRoundReset": { + "field": "m_endMatchOnRoundReset", + "type": 10 + }, + "EndMatchOnThink": { + "field": "m_endMatchOnThink", + "type": 10 + }, + "FreezeTime": { + "field": "m_iFreezeTime", + "type": 2 + }, + "NumTerrorist": { + "field": "m_iNumTerrorist", + "type": 2 + }, + "NumCT": { + "field": "m_iNumCT", + "type": 2 + }, + "NumSpawnableTerrorist": { + "field": "m_iNumSpawnableTerrorist", + "type": 2 + }, + "NumSpawnableCT": { + "field": "m_iNumSpawnableCT", + "type": 2 + }, + "SelectedHostageSpawnIndices": { + "field": "m_arrSelectedHostageSpawnIndices", + "type": 53 + }, + "SpawnPointsRandomSeed": { + "field": "m_nSpawnPointsRandomSeed", + "type": 2 + }, + "FirstConnected": { + "field": "m_bFirstConnected", + "type": 10 + }, + "CompleteReset": { + "field": "m_bCompleteReset", + "type": 10 + }, + "PickNewTeamsOnReset": { + "field": "m_bPickNewTeamsOnReset", + "type": 10 + }, + "ScrambleTeamsOnRestart": { + "field": "m_bScrambleTeamsOnRestart", + "type": 10 + }, + "SwapTeamsOnRestart": { + "field": "m_bSwapTeamsOnRestart", + "type": 10 + }, + "EndMatchTiedVotes": { + "field": "m_nEndMatchTiedVotes", + "type": 53 + }, + "NeedToAskPlayersForContinueVote": { + "field": "m_bNeedToAskPlayersForContinueVote", + "type": 10 + }, + "NumQueuedMatchmakingAccounts": { + "field": "m_numQueuedMatchmakingAccounts", + "type": 6 + }, + "AvgPlayerRank": { + "field": "m_fAvgPlayerRank", + "type": 8 + }, + "QueuedMatchmakingReservationString": { + "field": "m_pQueuedMatchmakingReservationString", + "type": 15 + }, + "NumTotalTournamentDrops": { + "field": "m_numTotalTournamentDrops", + "type": 6 + }, + "NumSpectatorsCountMax": { + "field": "m_numSpectatorsCountMax", + "type": 6 + }, + "NumSpectatorsCountMaxTV": { + "field": "m_numSpectatorsCountMaxTV", + "type": 6 + }, + "NumSpectatorsCountMaxLnk": { + "field": "m_numSpectatorsCountMaxLnk", + "type": 6 + }, + "ForceTeamChangeSilent": { + "field": "m_bForceTeamChangeSilent", + "type": 10 + }, + "LoadingRoundBackupData": { + "field": "m_bLoadingRoundBackupData", + "type": 10 + }, + "MatchInfoShowType": { + "field": "m_nMatchInfoShowType", + "type": 2 + }, + "MatchInfoDecidedTime": { + "field": "m_flMatchInfoDecidedTime", + "type": 8 + }, + "MTeamDMLastWinningTeamNumber": { + "field": "mTeamDMLastWinningTeamNumber", + "type": 2 + }, + "MTeamDMLastThinkTime": { + "field": "mTeamDMLastThinkTime", + "type": 8 + }, + "TeamDMLastAnnouncementTime": { + "field": "m_flTeamDMLastAnnouncementTime", + "type": 8 + }, + "AccountTerrorist": { + "field": "m_iAccountTerrorist", + "type": 2 + }, + "AccountCT": { + "field": "m_iAccountCT", + "type": 2 + }, + "SpawnPointCount_Terrorist": { + "field": "m_iSpawnPointCount_Terrorist", + "type": 2 + }, + "SpawnPointCount_CT": { + "field": "m_iSpawnPointCount_CT", + "type": 2 + }, + "MaxNumTerrorists": { + "field": "m_iMaxNumTerrorists", + "type": 2 + }, + "MaxNumCTs": { + "field": "m_iMaxNumCTs", + "type": 2 + }, + "LoserBonusMostRecentTeam": { + "field": "m_iLoserBonusMostRecentTeam", + "type": 2 + }, + "TmNextPeriodicThink": { + "field": "m_tmNextPeriodicThink", + "type": 8 + }, + "VoiceWonMatchBragFired": { + "field": "m_bVoiceWonMatchBragFired", + "type": 10 + }, + "WarmupNextChatNoticeTime": { + "field": "m_fWarmupNextChatNoticeTime", + "type": 8 + }, + "HostagesRescued": { + "field": "m_iHostagesRescued", + "type": 2 + }, + "HostagesTouched": { + "field": "m_iHostagesTouched", + "type": 2 + }, + "NextHostageAnnouncement": { + "field": "m_flNextHostageAnnouncement", + "type": 8 + }, + "NoTerroristsKilled": { + "field": "m_bNoTerroristsKilled", + "type": 10 + }, + "NoCTsKilled": { + "field": "m_bNoCTsKilled", + "type": 10 + }, + "NoEnemiesKilled": { + "field": "m_bNoEnemiesKilled", + "type": 10 + }, + "CanDonateWeapons": { + "field": "m_bCanDonateWeapons", + "type": 10 + }, + "FirstKillTime": { + "field": "m_firstKillTime", + "type": 8 + }, + "FirstBloodTime": { + "field": "m_firstBloodTime", + "type": 8 + }, + "HostageWasInjured": { + "field": "m_hostageWasInjured", + "type": 10 + }, + "HostageWasKilled": { + "field": "m_hostageWasKilled", + "type": 10 + }, + "VoteCalled": { + "field": "m_bVoteCalled", + "type": 10 + }, + "ServerVoteOnReset": { + "field": "m_bServerVoteOnReset", + "type": 10 + }, + "VoteCheckThrottle": { + "field": "m_flVoteCheckThrottle", + "type": 8 + }, + "BuyTimeEnded": { + "field": "m_bBuyTimeEnded", + "type": 10 + }, + "LastFreezeEndBeep": { + "field": "m_nLastFreezeEndBeep", + "type": 2 + }, + "TargetBombed": { + "field": "m_bTargetBombed", + "type": 10 + }, + "BombDefused": { + "field": "m_bBombDefused", + "type": 10 + }, + "MapHasBombZone": { + "field": "m_bMapHasBombZone", + "type": 10 + }, + "MainCTSpawnPos": { + "field": "m_vecMainCTSpawnPos", + "type": 21 + }, + "RespawningAllRespawnablePlayers": { + "field": "m_bRespawningAllRespawnablePlayers", + "type": 10 + }, + "NextCTSpawnPoint": { + "field": "m_iNextCTSpawnPoint", + "type": 2 + }, + "CTSpawnPointUsedTime": { + "field": "m_flCTSpawnPointUsedTime", + "type": 8 + }, + "NextTerroristSpawnPoint": { + "field": "m_iNextTerroristSpawnPoint", + "type": 2 + }, + "TerroristSpawnPointUsedTime": { + "field": "m_flTerroristSpawnPointUsedTime", + "type": 8 + }, + "IsUnreservedGameServer": { + "field": "m_bIsUnreservedGameServer", + "type": 10 + }, + "AutobalanceDisplayTime": { + "field": "m_fAutobalanceDisplayTime", + "type": 8 + }, + "AllowWeaponSwitch": { + "field": "m_bAllowWeaponSwitch", + "type": 10 + }, + "RoundTimeWarningTriggered": { + "field": "m_bRoundTimeWarningTriggered", + "type": 10 + }, + "PhaseChangeAnnouncementTime": { + "field": "m_phaseChangeAnnouncementTime", + "type": 8 + }, + "NextUpdateTeamClanNamesTime": { + "field": "m_fNextUpdateTeamClanNamesTime", + "type": 8 + }, + "LastThinkTime": { + "field": "m_flLastThinkTime", + "type": 8 + }, + "AccumulatedRoundOffDamage": { + "field": "m_fAccumulatedRoundOffDamage", + "type": 8 + }, + "ShorthandedBonusLastEvalRound": { + "field": "m_nShorthandedBonusLastEvalRound", + "type": 2 + }, + "MatchAbortedEarlyReason": { + "field": "m_nMatchAbortedEarlyReason", + "type": 2 + }, + "HasTriggeredRoundStartMusic": { + "field": "m_bHasTriggeredRoundStartMusic", + "type": 10 + }, + "SwitchingTeamsAtRoundReset": { + "field": "m_bSwitchingTeamsAtRoundReset", + "type": 10 + }, + "GameModeRules": { + "field": "m_pGameModeRules", + "classname": "CCSGameModeRules", + "type": 24 + }, + "PlayerResource": { + "field": "m_hPlayerResource", + "type": 17, + "classname": "CBaseEntity" + }, + "RetakeRules": { + "field": "m_RetakeRules", + "classname": "CRetakeGameRules", + "type": 16 + }, + "TeamLastKillUsedUniqueWeaponMatch": { + "field": "m_bTeamLastKillUsedUniqueWeaponMatch", + "type": 39, + "size": 4 + }, + "MatchEndCount": { + "field": "m_nMatchEndCount", + "type": 4 + }, + "TTeamIntroVariant": { + "field": "m_nTTeamIntroVariant", + "type": 2 + }, + "CTTeamIntroVariant": { + "field": "m_nCTTeamIntroVariant", + "type": 2 + }, + "TeamIntroPeriod": { + "field": "m_bTeamIntroPeriod", + "type": 10 + }, + "TeamIntroPeriodEnd": { + "field": "m_fTeamIntroPeriodEnd", + "type": 8 + }, + "PlayedTeamIntroVO": { + "field": "m_bPlayedTeamIntroVO", + "type": 10 + }, + "RoundEndWinnerTeam": { + "field": "m_iRoundEndWinnerTeam", + "type": 2 + }, + "RoundEndReason": { + "field": "m_eRoundEndReason", + "type": 2 + }, + "RoundEndShowTimerDefend": { + "field": "m_bRoundEndShowTimerDefend", + "type": 10 + }, + "RoundEndTimerTime": { + "field": "m_iRoundEndTimerTime", + "type": 2 + }, + "RoundEndFunFactToken": { + "field": "m_sRoundEndFunFactToken", + "type": 14 + }, + "RoundEndFunFactPlayerSlot": { + "field": "m_iRoundEndFunFactPlayerSlot", + "type": 2 + }, + "RoundEndFunFactData1": { + "field": "m_iRoundEndFunFactData1", + "type": 2 + }, + "RoundEndFunFactData2": { + "field": "m_iRoundEndFunFactData2", + "type": 2 + }, + "RoundEndFunFactData3": { + "field": "m_iRoundEndFunFactData3", + "type": 2 + }, + "RoundEndMessage": { + "field": "m_sRoundEndMessage", + "type": 14 + }, + "RoundEndPlayerCount": { + "field": "m_iRoundEndPlayerCount", + "type": 2 + }, + "RoundEndNoMusic": { + "field": "m_bRoundEndNoMusic", + "type": 10 + }, + "RoundEndLegacy": { + "field": "m_iRoundEndLegacy", + "type": 2 + }, + "RoundEndCount": { + "field": "m_nRoundEndCount", + "type": 4 + }, + "RoundStartRoundNumber": { + "field": "m_iRoundStartRoundNumber", + "type": 2 + }, + "RoundStartCount": { + "field": "m_nRoundStartCount", + "type": 4 + }, + "LastPerfSampleTime": { + "field": "m_flLastPerfSampleTime", + "type": 9 + }, + "Parent": { + "field": "CTeamplayRules", + "type": 11 + } + }, + "CCSGameRulesProxy": { + "GameRules": { + "field": "m_pGameRules", + "classname": "CCSGameRules", + "type": 24 + }, + "Parent": { + "field": "CGameRulesProxy", + "type": 11 + } + }, + "CCSMinimapBoundary": { + "Parent": { + "field": "CBaseEntity", + "type": 11 + } + }, + "CCSObserverPawn": { + "Parent": { + "field": "CCSPlayerPawnBase", + "type": 11 + } + }, + "CCSPlace": { + "Name": { + "field": "m_name", + "type": 13 + }, + "Parent": { + "field": "CServerOnlyModelEntity", + "type": 11 + } + }, + "CCSPlayerPawn": { + "BulletServices": { + "field": "m_pBulletServices", + "classname": "CCSPlayer_BulletServices", + "type": 24 + }, + "HostageServices": { + "field": "m_pHostageServices", + "classname": "CCSPlayer_HostageServices", + "type": 24 + }, + "BuyServices": { + "field": "m_pBuyServices", + "classname": "CCSPlayer_BuyServices", + "type": 24 + }, + "ActionTrackingServices": { + "field": "m_pActionTrackingServices", + "classname": "CCSPlayer_ActionTrackingServices", + "type": 24 + }, + "RadioServices": { + "field": "m_pRadioServices", + "classname": "CCSPlayer_RadioServices", + "type": 24 + }, + "DamageReactServices": { + "field": "m_pDamageReactServices", + "classname": "CCSPlayer_DamageReactServices", + "type": 24 + }, + "CharacterDefIndex": { + "field": "m_nCharacterDefIndex", + "type": 5 + }, + "HasFemaleVoice": { + "field": "m_bHasFemaleVoice", + "type": 10 + }, + "StrVOPrefix": { + "field": "m_strVOPrefix", + "type": 14 + }, + "LastPlaceName": { + "field": "m_szLastPlaceName", + "type": 15, + "size": 18 + }, + "InHostageResetZone": { + "field": "m_bInHostageResetZone", + "type": 10 + }, + "InBuyZone": { + "field": "m_bInBuyZone", + "type": 10 + }, + "WasInBuyZone": { + "field": "m_bWasInBuyZone", + "type": 10 + }, + "InHostageRescueZone": { + "field": "m_bInHostageRescueZone", + "type": 10 + }, + "InBombZone": { + "field": "m_bInBombZone", + "type": 10 + }, + "WasInHostageRescueZone": { + "field": "m_bWasInHostageRescueZone", + "type": 10 + }, + "RetakesOffering": { + "field": "m_iRetakesOffering", + "type": 2 + }, + "RetakesOfferingCard": { + "field": "m_iRetakesOfferingCard", + "type": 2 + }, + "RetakesHasDefuseKit": { + "field": "m_bRetakesHasDefuseKit", + "type": 10 + }, + "RetakesMVPLastRound": { + "field": "m_bRetakesMVPLastRound", + "type": 10 + }, + "RetakesMVPBoostItem": { + "field": "m_iRetakesMVPBoostItem", + "type": 2 + }, + "RetakesMVPBoostExtraUtility": { + "field": "m_RetakesMVPBoostExtraUtility", + "type": 6 + }, + "HealthShotBoostExpirationTime": { + "field": "m_flHealthShotBoostExpirationTime", + "type": 8 + }, + "LandingTimeSeconds": { + "field": "m_flLandingTimeSeconds", + "type": 8 + }, + "AimPunchAngle": { + "field": "m_aimPunchAngle", + "type": 20 + }, + "AimPunchAngleVel": { + "field": "m_aimPunchAngleVel", + "type": 20 + }, + "AimPunchTickBase": { + "field": "m_aimPunchTickBase", + "type": 2 + }, + "AimPunchTickFraction": { + "field": "m_aimPunchTickFraction", + "type": 8 + }, + "AimPunchCache": { + "field": "m_aimPunchCache", + "type": 62 + }, + "IsBuyMenuOpen": { + "field": "m_bIsBuyMenuOpen", + "type": 10 + }, + "LastHeadBoneTransformIsValid": { + "field": "m_bLastHeadBoneTransformIsValid", + "type": 10 + }, + "LastLandTime": { + "field": "m_lastLandTime", + "type": 8 + }, + "OnGroundLastTick": { + "field": "m_bOnGroundLastTick", + "type": 10 + }, + "PlayerLocked": { + "field": "m_iPlayerLocked", + "type": 2 + }, + "TimeOfLastInjury": { + "field": "m_flTimeOfLastInjury", + "type": 8 + }, + "NextSprayDecalTime": { + "field": "m_flNextSprayDecalTime", + "type": 8 + }, + "NextSprayDecalTimeExpedited": { + "field": "m_bNextSprayDecalTimeExpedited", + "type": 10 + }, + "RagdollDamageBone": { + "field": "m_nRagdollDamageBone", + "type": 2 + }, + "RagdollDamageForce": { + "field": "m_vRagdollDamageForce", + "type": 21 + }, + "RagdollDamagePosition": { + "field": "m_vRagdollDamagePosition", + "type": 21 + }, + "RagdollDamageWeaponName": { + "field": "m_szRagdollDamageWeaponName", + "type": 15, + "size": 64 + }, + "RagdollDamageHeadshot": { + "field": "m_bRagdollDamageHeadshot", + "type": 10 + }, + "RagdollServerOrigin": { + "field": "m_vRagdollServerOrigin", + "type": 21 + }, + "EconGloves": { + "field": "m_EconGloves", + "classname": "CEconItemView", + "type": 16 + }, + "EconGlovesChanged": { + "field": "m_nEconGlovesChanged", + "type": 4 + }, + "DeathEyeAngles": { + "field": "m_qDeathEyeAngles", + "type": 20 + }, + "SkipOneHeadConstraintUpdate": { + "field": "m_bSkipOneHeadConstraintUpdate", + "type": 10 + }, + "LeftHanded": { + "field": "m_bLeftHanded", + "type": 10 + }, + "SwitchedHandednessTime": { + "field": "m_fSwitchedHandednessTime", + "type": 8 + }, + "ViewmodelOffsetX": { + "field": "m_flViewmodelOffsetX", + "type": 8 + }, + "ViewmodelOffsetY": { + "field": "m_flViewmodelOffsetY", + "type": 8 + }, + "ViewmodelOffsetZ": { + "field": "m_flViewmodelOffsetZ", + "type": 8 + }, + "ViewmodelFOV": { + "field": "m_flViewmodelFOV", + "type": 8 + }, + "IsWalking": { + "field": "m_bIsWalking", + "type": 10 + }, + "LastGivenDefuserTime": { + "field": "m_fLastGivenDefuserTime", + "type": 8 + }, + "LastGivenBombTime": { + "field": "m_fLastGivenBombTime", + "type": 8 + }, + "DealtDamageToEnemyMostRecentTimestamp": { + "field": "m_flDealtDamageToEnemyMostRecentTimestamp", + "type": 8 + }, + "DisplayHistoryBits": { + "field": "m_iDisplayHistoryBits", + "type": 6 + }, + "LastAttackedTeammate": { + "field": "m_flLastAttackedTeammate", + "type": 8 + }, + "AllowAutoFollowTime": { + "field": "m_allowAutoFollowTime", + "type": 8 + }, + "ResetArmorNextSpawn": { + "field": "m_bResetArmorNextSpawn", + "type": 10 + }, + "LastKillerIndex": { + "field": "m_nLastKillerIndex", + "type": 2 + }, + "EntitySpottedState": { + "field": "m_entitySpottedState", + "classname": "EntitySpottedState_t", + "type": 16 + }, + "SpotRules": { + "field": "m_nSpotRules", + "type": 2 + }, + "IsScoped": { + "field": "m_bIsScoped", + "type": 10 + }, + "ResumeZoom": { + "field": "m_bResumeZoom", + "type": 10 + }, + "IsDefusing": { + "field": "m_bIsDefusing", + "type": 10 + }, + "IsGrabbingHostage": { + "field": "m_bIsGrabbingHostage", + "type": 10 + }, + "BlockingUseActionInProgress": { + "field": "m_iBlockingUseActionInProgress", + "type": 6 + }, + "EmitSoundTime": { + "field": "m_flEmitSoundTime", + "type": 8 + }, + "InNoDefuseArea": { + "field": "m_bInNoDefuseArea", + "type": 10 + }, + "BombSiteIndex": { + "field": "m_iBombSiteIndex", + "type": 2 + }, + "WhichBombZone": { + "field": "m_nWhichBombZone", + "type": 2 + }, + "InBombZoneTrigger": { + "field": "m_bInBombZoneTrigger", + "type": 10 + }, + "WasInBombZoneTrigger": { + "field": "m_bWasInBombZoneTrigger", + "type": 10 + }, + "ShotsFired": { + "field": "m_iShotsFired", + "type": 2 + }, + "FlinchStack": { + "field": "m_flFlinchStack", + "type": 8 + }, + "VelocityModifier": { + "field": "m_flVelocityModifier", + "type": 8 + }, + "HitHeading": { + "field": "m_flHitHeading", + "type": 8 + }, + "HitBodyPart": { + "field": "m_nHitBodyPart", + "type": 2 + }, + "TotalBulletForce": { + "field": "m_vecTotalBulletForce", + "type": 21 + }, + "WaitForNoAttack": { + "field": "m_bWaitForNoAttack", + "type": 10 + }, + "IgnoreLadderJumpTime": { + "field": "m_ignoreLadderJumpTime", + "type": 8 + }, + "KilledByHeadshot": { + "field": "m_bKilledByHeadshot", + "type": 10 + }, + "LastHitBox": { + "field": "m_LastHitBox", + "type": 2 + }, + "LastHealth": { + "field": "m_LastHealth", + "type": 2 + }, + "Bot": { + "field": "m_pBot", + "classname": "CCSBot", + "type": 24 + }, + "BotAllowActive": { + "field": "m_bBotAllowActive", + "type": 10 + }, + "ThirdPersonHeading": { + "field": "m_thirdPersonHeading", + "type": 20 + }, + "SlopeDropOffset": { + "field": "m_flSlopeDropOffset", + "type": 8 + }, + "SlopeDropHeight": { + "field": "m_flSlopeDropHeight", + "type": 8 + }, + "HeadConstraintOffset": { + "field": "m_vHeadConstraintOffset", + "type": 21 + }, + "LastPickupPriority": { + "field": "m_nLastPickupPriority", + "type": 2 + }, + "LastPickupPriorityTime": { + "field": "m_flLastPickupPriorityTime", + "type": 8 + }, + "ArmorValue": { + "field": "m_ArmorValue", + "type": 2 + }, + "CurrentEquipmentValue": { + "field": "m_unCurrentEquipmentValue", + "type": 5 + }, + "RoundStartEquipmentValue": { + "field": "m_unRoundStartEquipmentValue", + "type": 5 + }, + "FreezetimeEndEquipmentValue": { + "field": "m_unFreezetimeEndEquipmentValue", + "type": 5 + }, + "LastWeaponFireUsercmd": { + "field": "m_iLastWeaponFireUsercmd", + "type": 2 + }, + "IsSpawning": { + "field": "m_bIsSpawning", + "type": 10 + }, + "DeathFlags": { + "field": "m_iDeathFlags", + "type": 2 + }, + "HasDeathInfo": { + "field": "m_bHasDeathInfo", + "type": 10 + }, + "DeathInfoTime": { + "field": "m_flDeathInfoTime", + "type": 8 + }, + "DeathInfoOrigin": { + "field": "m_vecDeathInfoOrigin", + "type": 21 + }, + "PlayerPatchEconIndices": { + "field": "m_vecPlayerPatchEconIndices", + "type": 35, + "size": 5 + }, + "GunGameImmunityColor": { + "field": "m_GunGameImmunityColor", + "type": 19 + }, + "GrenadeParameterStashTime": { + "field": "m_grenadeParameterStashTime", + "type": 8 + }, + "GrenadeParametersStashed": { + "field": "m_bGrenadeParametersStashed", + "type": 10 + }, + "StashedShootAngles": { + "field": "m_angStashedShootAngles", + "type": 20 + }, + "StashedGrenadeThrowPosition": { + "field": "m_vecStashedGrenadeThrowPosition", + "type": 21 + }, + "StashedVelocity": { + "field": "m_vecStashedVelocity", + "type": 21 + }, + "ShootAngleHistory": { + "field": "m_angShootAngleHistory", + "type": 41, + "size": 2 + }, + "ThrowPositionHistory": { + "field": "m_vecThrowPositionHistory", + "type": 42, + "size": 2 + }, + "VelocityHistory": { + "field": "m_vecVelocityHistory", + "type": 42, + "size": 2 + }, + "HighestAppliedDamageTagTick": { + "field": "m_nHighestAppliedDamageTagTick", + "type": 2 + }, + "Parent": { + "field": "CCSPlayerPawnBase", + "type": 11 + } + }, + "CCSPlayerPawnBase": { + "CTouchExpansionComponent": { + "field": "m_CTouchExpansionComponent", + "classname": "CTouchExpansionComponent", + "type": 16 + }, + "PingServices": { + "field": "m_pPingServices", + "classname": "CCSPlayer_PingServices", + "type": 24 + }, + "ViewModelServices": { + "field": "m_pViewModelServices", + "classname": "CPlayer_ViewModelServices", + "type": 24 + }, + "BlindUntilTime": { + "field": "m_blindUntilTime", + "type": 8 + }, + "BlindStartTime": { + "field": "m_blindStartTime", + "type": 8 + }, + "PlayerState": { + "field": "m_iPlayerState", + "type": 6 + }, + "Respawning": { + "field": "m_bRespawning", + "type": 10 + }, + "ImmuneToGunGameDamageTime": { + "field": "m_fImmuneToGunGameDamageTime", + "type": 8 + }, + "GunGameImmunity": { + "field": "m_bGunGameImmunity", + "type": 10 + }, + "MolotovDamageTime": { + "field": "m_fMolotovDamageTime", + "type": 8 + }, + "HasMovedSinceSpawn": { + "field": "m_bHasMovedSinceSpawn", + "type": 10 + }, + "NumSpawns": { + "field": "m_iNumSpawns", + "type": 2 + }, + "IdleTimeSinceLastAction": { + "field": "m_flIdleTimeSinceLastAction", + "type": 8 + }, + "NextRadarUpdateTime": { + "field": "m_fNextRadarUpdateTime", + "type": 8 + }, + "FlashDuration": { + "field": "m_flFlashDuration", + "type": 8 + }, + "FlashMaxAlpha": { + "field": "m_flFlashMaxAlpha", + "type": 8 + }, + "ProgressBarStartTime": { + "field": "m_flProgressBarStartTime", + "type": 8 + }, + "ProgressBarDuration": { + "field": "m_iProgressBarDuration", + "type": 2 + }, + "EyeAngles": { + "field": "m_angEyeAngles", + "type": 20 + }, + "WasNotKilledNaturally": { + "field": "m_wasNotKilledNaturally", + "type": 10 + }, + "CommittingSuicideOnTeamChange": { + "field": "m_bCommittingSuicideOnTeamChange", + "type": 10 + }, + "OriginalController": { + "field": "m_hOriginalController", + "type": 17, + "classname": "CCSPlayerController" + }, + "Parent": { + "field": "CBasePlayerPawn", + "type": 11 + } + }, + "CCSPlayerResource": { + "HostageAlive": { + "field": "m_bHostageAlive", + "type": 39, + "size": 12 + }, + "IsHostageFollowingSomeone": { + "field": "m_isHostageFollowingSomeone", + "type": 39, + "size": 12 + }, + "HostageEntityIDs": { + "field": "m_iHostageEntityIDs", + "type": 31, + "size": 12 + }, + "BombsiteCenterA": { + "field": "m_bombsiteCenterA", + "type": 21 + }, + "BombsiteCenterB": { + "field": "m_bombsiteCenterB", + "type": 21 + }, + "HostageRescueX": { + "field": "m_hostageRescueX", + "type": 31, + "size": 4 + }, + "HostageRescueY": { + "field": "m_hostageRescueY", + "type": 31, + "size": 4 + }, + "HostageRescueZ": { + "field": "m_hostageRescueZ", + "type": 31, + "size": 4 + }, + "EndMatchNextMapAllVoted": { + "field": "m_bEndMatchNextMapAllVoted", + "type": 10 + }, + "FoundGoalPositions": { + "field": "m_foundGoalPositions", + "type": 10 + }, + "Parent": { + "field": "CBaseEntity", + "type": 11 + } + }, + "CCSPlayer_RadioServices": { + "GotHostageTalkTimer": { + "field": "m_flGotHostageTalkTimer", + "type": 8 + }, + "DefusingTalkTimer": { + "field": "m_flDefusingTalkTimer", + "type": 8 + }, + "C4PlantTalkTimer": { + "field": "m_flC4PlantTalkTimer", + "type": 8 + }, + "RadioTokenSlots": { + "field": "m_flRadioTokenSlots", + "type": 37, + "size": 3 + }, + "IgnoreRadio": { + "field": "m_bIgnoreRadio", + "type": 10 + }, + "Parent": { + "field": "CPlayerPawnComponent", + "type": 11 + } + }, + "CCSServerPointScriptEntity": { + "Parent": { + "field": "CCSPointScriptEntity", + "type": 11 + } + }, + "CCSSprite": { + "Parent": { + "field": "CSprite", + "type": 11 + } + }, + "CCSTeam": { + "LastRecievedShorthandedRoundBonus": { + "field": "m_nLastRecievedShorthandedRoundBonus", + "type": 2 + }, + "ShorthandedRoundBonusStartRound": { + "field": "m_nShorthandedRoundBonusStartRound", + "type": 2 + }, + "Surrendered": { + "field": "m_bSurrendered", + "type": 10 + }, + "TeamMatchStat": { + "field": "m_szTeamMatchStat", + "type": 15, + "size": 512 + }, + "NumMapVictories": { + "field": "m_numMapVictories", + "type": 2 + }, + "ScoreFirstHalf": { + "field": "m_scoreFirstHalf", + "type": 2 + }, + "ScoreSecondHalf": { + "field": "m_scoreSecondHalf", + "type": 2 + }, + "ScoreOvertime": { + "field": "m_scoreOvertime", + "type": 2 + }, + "ClanTeamname": { + "field": "m_szClanTeamname", + "type": 15, + "size": 129 + }, + "ClanID": { + "field": "m_iClanID", + "type": 6 + }, + "TeamFlagImage": { + "field": "m_szTeamFlagImage", + "type": 15, + "size": 8 + }, + "TeamLogoImage": { + "field": "m_szTeamLogoImage", + "type": 15, + "size": 8 + }, + "NextResourceTime": { + "field": "m_flNextResourceTime", + "type": 8 + }, + "LastUpdateSentAt": { + "field": "m_iLastUpdateSentAt", + "type": 2 + }, + "Parent": { + "field": "CTeam", + "type": 11 + } + }, + "CCSWeaponBase": { + "Removeable": { + "field": "m_bRemoveable", + "type": 10 + }, + "FireSequenceStartTime": { + "field": "m_flFireSequenceStartTime", + "type": 8 + }, + "FireSequenceStartTimeChange": { + "field": "m_nFireSequenceStartTimeChange", + "type": 2 + }, + "FireSequenceStartTimeAck": { + "field": "m_nFireSequenceStartTimeAck", + "type": 2 + }, + "PlayerFireEvent": { + "field": "m_ePlayerFireEvent", + "type": 6 + }, + "PlayerFireEventAttackType": { + "field": "m_ePlayerFireEventAttackType", + "type": 6 + }, + "SeqIdle": { + "field": "m_seqIdle", + "type": 2 + }, + "SeqFirePrimary": { + "field": "m_seqFirePrimary", + "type": 2 + }, + "SeqFireSecondary": { + "field": "m_seqFireSecondary", + "type": 2 + }, + "ThirdPersonFireSequences": { + "field": "m_thirdPersonFireSequences", + "type": 53 + }, + "CurrentThirdPersonSequence": { + "field": "m_hCurrentThirdPersonSequence", + "type": 2 + }, + "SilencerBoneIndex": { + "field": "m_nSilencerBoneIndex", + "type": 2 + }, + "ThirdPersonSequences": { + "field": "m_thirdPersonSequences", + "type": 31, + "size": 7 + }, + "PlayerAmmoStockOnPickup": { + "field": "m_bPlayerAmmoStockOnPickup", + "type": 10 + }, + "RequireUseToTouch": { + "field": "m_bRequireUseToTouch", + "type": 10 + }, + "State": { + "field": "m_iState", + "type": 6 + }, + "LastTimeInAir": { + "field": "m_flLastTimeInAir", + "type": 8 + }, + "LastDeployTime": { + "field": "m_flLastDeployTime", + "type": 8 + }, + "LastEmptySoundCmdNum": { + "field": "m_nLastEmptySoundCmdNum", + "type": 2 + }, + "ViewModelIndex": { + "field": "m_nViewModelIndex", + "type": 6 + }, + "ReloadsWithClips": { + "field": "m_bReloadsWithClips", + "type": 10 + }, + "TimeWeaponIdle": { + "field": "m_flTimeWeaponIdle", + "type": 8 + }, + "FireOnEmpty": { + "field": "m_bFireOnEmpty", + "type": 10 + }, + "OnPlayerPickup": { + "field": "m_OnPlayerPickup", + "classname": "CEntityIOOutput", + "type": 16 + }, + "WeaponMode": { + "field": "m_weaponMode", + "type": 6 + }, + "TurningInaccuracyDelta": { + "field": "m_flTurningInaccuracyDelta", + "type": 8 + }, + "TurningInaccuracyEyeDirLast": { + "field": "m_vecTurningInaccuracyEyeDirLast", + "type": 21 + }, + "TurningInaccuracy": { + "field": "m_flTurningInaccuracy", + "type": 8 + }, + "AccuracyPenalty": { + "field": "m_fAccuracyPenalty", + "type": 8 + }, + "LastAccuracyUpdateTime": { + "field": "m_flLastAccuracyUpdateTime", + "type": 8 + }, + "AccuracySmoothedForZoom": { + "field": "m_fAccuracySmoothedForZoom", + "type": 8 + }, + "ScopeZoomEndTime": { + "field": "m_fScopeZoomEndTime", + "type": 8 + }, + "RecoilIndex": { + "field": "m_iRecoilIndex", + "type": 2 + }, + "RecoilIndex1": { + "field": "m_flRecoilIndex", + "type": 8 + }, + "BurstMode": { + "field": "m_bBurstMode", + "type": 10 + }, + "PostponeFireReadyTicks": { + "field": "m_nPostponeFireReadyTicks", + "type": 2 + }, + "PostponeFireReadyFrac": { + "field": "m_flPostponeFireReadyFrac", + "type": 8 + }, + "InReload": { + "field": "m_bInReload", + "type": 10 + }, + "ReloadVisuallyComplete": { + "field": "m_bReloadVisuallyComplete", + "type": 10 + }, + "DroppedAtTime": { + "field": "m_flDroppedAtTime", + "type": 8 + }, + "IsHauledBack": { + "field": "m_bIsHauledBack", + "type": 10 + }, + "SilencerOn": { + "field": "m_bSilencerOn", + "type": 10 + }, + "TimeSilencerSwitchComplete": { + "field": "m_flTimeSilencerSwitchComplete", + "type": 8 + }, + "OriginalTeamNumber": { + "field": "m_iOriginalTeamNumber", + "type": 2 + }, + "MostRecentTeamNumber": { + "field": "m_iMostRecentTeamNumber", + "type": 2 + }, + "DroppedNearBuyZone": { + "field": "m_bDroppedNearBuyZone", + "type": 10 + }, + "NextAttackRenderTimeOffset": { + "field": "m_flNextAttackRenderTimeOffset", + "type": 8 + }, + "CanBePickedUp": { + "field": "m_bCanBePickedUp", + "type": 10 + }, + "UseCanOverrideNextOwnerTouchTime": { + "field": "m_bUseCanOverrideNextOwnerTouchTime", + "type": 10 + }, + "NextOwnerTouchTime": { + "field": "m_nextOwnerTouchTime", + "type": 8 + }, + "NextPrevOwnerTouchTime": { + "field": "m_nextPrevOwnerTouchTime", + "type": 8 + }, + "NextPrevOwnerUseTime": { + "field": "m_nextPrevOwnerUseTime", + "type": 8 + }, + "PrevOwner": { + "field": "m_hPrevOwner", + "type": 17, + "classname": "CCSPlayerPawn" + }, + "DropTick": { + "field": "m_nDropTick", + "type": 2 + }, + "Donated": { + "field": "m_donated", + "type": 10 + }, + "LastShotTime": { + "field": "m_fLastShotTime", + "type": 8 + }, + "WasOwnedByCT": { + "field": "m_bWasOwnedByCT", + "type": 10 + }, + "WasOwnedByTerrorist": { + "field": "m_bWasOwnedByTerrorist", + "type": 10 + }, + "FiredOutOfAmmoEvent": { + "field": "m_bFiredOutOfAmmoEvent", + "type": 10 + }, + "NumRemoveUnownedWeaponThink": { + "field": "m_numRemoveUnownedWeaponThink", + "type": 2 + }, + "IronSightController": { + "field": "m_IronSightController", + "classname": "CIronSightController", + "type": 16 + }, + "IronSightMode": { + "field": "m_iIronSightMode", + "type": 2 + }, + "LastLOSTraceFailureTime": { + "field": "m_flLastLOSTraceFailureTime", + "type": 8 + }, + "NumEmptyAttacks": { + "field": "m_iNumEmptyAttacks", + "type": 2 + }, + "WatTickOffset": { + "field": "m_flWatTickOffset", + "type": 8 + }, + "Parent": { + "field": "CBasePlayerWeapon", + "type": 11 + } + }, + "CCSWeaponBaseGun": { + "ZoomLevel": { + "field": "m_zoomLevel", + "type": 2 + }, + "BurstShotsRemaining": { + "field": "m_iBurstShotsRemaining", + "type": 2 + }, + "SilencedModelIndex": { + "field": "m_silencedModelIndex", + "type": 2 + }, + "InPrecache": { + "field": "m_inPrecache", + "type": 10 + }, + "NeedsBoltAction": { + "field": "m_bNeedsBoltAction", + "type": 10 + }, + "SkillReloadAvailable": { + "field": "m_bSkillReloadAvailable", + "type": 10 + }, + "SkillReloadLiftedReloadKey": { + "field": "m_bSkillReloadLiftedReloadKey", + "type": 10 + }, + "SkillBoltInterruptAvailable": { + "field": "m_bSkillBoltInterruptAvailable", + "type": 10 + }, + "SkillBoltLiftedFireKey": { + "field": "m_bSkillBoltLiftedFireKey", + "type": 10 + }, + "Parent": { + "field": "CCSWeaponBase", + "type": 11 + } + }, + "CChangeLevel": { + "MapName": { + "field": "m_sMapName", + "type": 14 + }, + "LandmarkName": { + "field": "m_sLandmarkName", + "type": 14 + }, + "OnChangeLevel": { + "field": "m_OnChangeLevel", + "classname": "CEntityIOOutput", + "type": 16 + }, + "Touched": { + "field": "m_bTouched", + "type": 10 + }, + "NoTouch": { + "field": "m_bNoTouch", + "type": 10 + }, + "NewChapter": { + "field": "m_bNewChapter", + "type": 10 + }, + "OnChangeLevelFired": { + "field": "m_bOnChangeLevelFired", + "type": 10 + }, + "Parent": { + "field": "CBaseTrigger", + "type": 11 + } + }, + "CChicken": { + "AttributeManager": { + "field": "m_AttributeManager", + "classname": "CAttributeContainer", + "type": 16 + }, + "UpdateTimer": { + "field": "m_updateTimer", + "classname": "CountdownTimer", + "type": 16 + }, + "StuckAnchor": { + "field": "m_stuckAnchor", + "type": 21 + }, + "StuckTimer": { + "field": "m_stuckTimer", + "classname": "CountdownTimer", + "type": 16 + }, + "CollisionStuckTimer": { + "field": "m_collisionStuckTimer", + "classname": "CountdownTimer", + "type": 16 + }, + "IsOnGround": { + "field": "m_isOnGround", + "type": 10 + }, + "FallVelocity": { + "field": "m_vFallVelocity", + "type": 21 + }, + "DesiredActivity": { + "field": "m_desiredActivity", + "type": 6 + }, + "CurrentActivity": { + "field": "m_currentActivity", + "type": 6 + }, + "ActivityTimer": { + "field": "m_activityTimer", + "classname": "CountdownTimer", + "type": 16 + }, + "TurnRate": { + "field": "m_turnRate", + "type": 8 + }, + "FleeFrom": { + "field": "m_fleeFrom", + "type": 17, + "classname": "CBaseEntity" + }, + "MoveRateThrottleTimer": { + "field": "m_moveRateThrottleTimer", + "classname": "CountdownTimer", + "type": 16 + }, + "StartleTimer": { + "field": "m_startleTimer", + "classname": "CountdownTimer", + "type": 16 + }, + "VocalizeTimer": { + "field": "m_vocalizeTimer", + "classname": "CountdownTimer", + "type": 16 + }, + "WhenZombified": { + "field": "m_flWhenZombified", + "type": 8 + }, + "JumpedThisFrame": { + "field": "m_jumpedThisFrame", + "type": 10 + }, + "Leader": { + "field": "m_leader", + "type": 17, + "classname": "CCSPlayerPawn" + }, + "ReuseTimer": { + "field": "m_reuseTimer", + "classname": "CountdownTimer", + "type": 16 + }, + "HasBeenUsed": { + "field": "m_hasBeenUsed", + "type": 10 + }, + "JumpTimer": { + "field": "m_jumpTimer", + "classname": "CountdownTimer", + "type": 16 + }, + "LastJumpTime": { + "field": "m_flLastJumpTime", + "type": 8 + }, + "InJump": { + "field": "m_bInJump", + "type": 10 + }, + "RepathTimer": { + "field": "m_repathTimer", + "classname": "CountdownTimer", + "type": 16 + }, + "PathGoal": { + "field": "m_vecPathGoal", + "type": 21 + }, + "ActiveFollowStartTime": { + "field": "m_flActiveFollowStartTime", + "type": 8 + }, + "FollowMinuteTimer": { + "field": "m_followMinuteTimer", + "classname": "CountdownTimer", + "type": 16 + }, + "BlockDirectionTimer": { + "field": "m_BlockDirectionTimer", + "classname": "CountdownTimer", + "type": 16 + }, + "Parent": { + "field": "CDynamicProp", + "type": 11 + } + }, + "CColorCorrection": { + "FadeInDuration": { + "field": "m_flFadeInDuration", + "type": 8 + }, + "FadeOutDuration": { + "field": "m_flFadeOutDuration", + "type": 8 + }, + "StartFadeInWeight": { + "field": "m_flStartFadeInWeight", + "type": 8 + }, + "StartFadeOutWeight": { + "field": "m_flStartFadeOutWeight", + "type": 8 + }, + "TimeStartFadeIn": { + "field": "m_flTimeStartFadeIn", + "type": 8 + }, + "TimeStartFadeOut": { + "field": "m_flTimeStartFadeOut", + "type": 8 + }, + "MaxWeight": { + "field": "m_flMaxWeight", + "type": 8 + }, + "StartDisabled": { + "field": "m_bStartDisabled", + "type": 10 + }, + "Enabled": { + "field": "m_bEnabled", + "type": 10 + }, + "Master": { + "field": "m_bMaster", + "type": 10 + }, + "ClientSide": { + "field": "m_bClientSide", + "type": 10 + }, + "Exclusive": { + "field": "m_bExclusive", + "type": 10 + }, + "MinFalloff": { + "field": "m_MinFalloff", + "type": 8 + }, + "MaxFalloff": { + "field": "m_MaxFalloff", + "type": 8 + }, + "CurWeight": { + "field": "m_flCurWeight", + "type": 8 + }, + "NetlookupFilename": { + "field": "m_netlookupFilename", + "type": 15, + "size": 512 + }, + "LookupFilename": { + "field": "m_lookupFilename", + "type": 13 + }, + "Parent": { + "field": "CBaseEntity", + "type": 11 + } + }, + "CColorCorrectionVolume": { + "Enabled": { + "field": "m_bEnabled", + "type": 10 + }, + "MaxWeight": { + "field": "m_MaxWeight", + "type": 8 + }, + "FadeDuration": { + "field": "m_FadeDuration", + "type": 8 + }, + "StartDisabled": { + "field": "m_bStartDisabled", + "type": 10 + }, + "Weight": { + "field": "m_Weight", + "type": 8 + }, + "LookupFilename": { + "field": "m_lookupFilename", + "type": 15, + "size": 512 + }, + "LastEnterWeight": { + "field": "m_LastEnterWeight", + "type": 8 + }, + "LastEnterTime": { + "field": "m_LastEnterTime", + "type": 8 + }, + "LastExitWeight": { + "field": "m_LastExitWeight", + "type": 8 + }, + "LastExitTime": { + "field": "m_LastExitTime", + "type": 8 + }, + "Parent": { + "field": "CBaseTrigger", + "type": 11 + } + }, + "CCommentaryAuto": { + "OnCommentaryNewGame": { + "field": "m_OnCommentaryNewGame", + "classname": "CEntityIOOutput", + "type": 16 + }, + "OnCommentaryMidGame": { + "field": "m_OnCommentaryMidGame", + "classname": "CEntityIOOutput", + "type": 16 + }, + "OnCommentaryMultiplayerSpawn": { + "field": "m_OnCommentaryMultiplayerSpawn", + "classname": "CEntityIOOutput", + "type": 16 + }, + "Parent": { + "field": "CBaseEntity", + "type": 11 + } + }, + "CCommentarySystem": { + "CommentaryConvarsChanging": { + "field": "m_bCommentaryConvarsChanging", + "type": 10 + }, + "CommentaryEnabledMidGame": { + "field": "m_bCommentaryEnabledMidGame", + "type": 10 + }, + "NextTeleportTime": { + "field": "m_flNextTeleportTime", + "type": 8 + }, + "TeleportStage": { + "field": "m_iTeleportStage", + "type": 2 + }, + "CheatState": { + "field": "m_bCheatState", + "type": 10 + }, + "IsFirstSpawnGroupToLoad": { + "field": "m_bIsFirstSpawnGroupToLoad", + "type": 10 + } + }, + "CCommentaryViewPosition": { + "Parent": { + "field": "CSprite", + "type": 11 + } + }, + "CConstantForceController": { + "Linear": { + "field": "m_linear", + "type": 21 + }, + "Angular": { + "field": "m_angular", + "type": 21 + }, + "LinearSave": { + "field": "m_linearSave", + "type": 21 + }, + "AngularSave": { + "field": "m_angularSave", + "type": 21 + } + }, + "CConstraintAnchor": { + "MassScale": { + "field": "m_massScale", + "type": 8 + }, + "Parent": { + "field": "CBaseAnimGraph", + "type": 11 + } + }, + "CCredits": { + "OnCreditsDone": { + "field": "m_OnCreditsDone", + "classname": "CEntityIOOutput", + "type": 16 + }, + "RolledOutroCredits": { + "field": "m_bRolledOutroCredits", + "type": 10 + }, + "LogoLength": { + "field": "m_flLogoLength", + "type": 8 + }, + "Parent": { + "field": "CPointEntity", + "type": 11 + } + }, + "CDEagle": { + "Parent": { + "field": "CCSWeaponBaseGun", + "type": 11 + } + }, + "CDebugHistory": { + "NpcEvents": { + "field": "m_nNpcEvents", + "type": 2 + }, + "Parent": { + "field": "CBaseEntity", + "type": 11 + } + }, + "CDecoyGrenade": { + "Parent": { + "field": "CBaseCSGrenade", + "type": 11 + } + }, + "CDecoyProjectile": { + "DecoyShotTick": { + "field": "m_nDecoyShotTick", + "type": 2 + }, + "ShotsRemaining": { + "field": "m_shotsRemaining", + "type": 2 + }, + "ExpireTime": { + "field": "m_fExpireTime", + "type": 8 + }, + "DecoyWeaponDefIndex": { + "field": "m_decoyWeaponDefIndex", + "type": 5 + }, + "Parent": { + "field": "CBaseCSGrenadeProjectile", + "type": 11 + } + }, + "CDynamicLight": { + "ActualFlags": { + "field": "m_ActualFlags", + "type": 4 + }, + "Flags": { + "field": "m_Flags", + "type": 4 + }, + "LightStyle": { + "field": "m_LightStyle", + "type": 4 + }, + "On": { + "field": "m_On", + "type": 10 + }, + "Radius": { + "field": "m_Radius", + "type": 8 + }, + "Exponent": { + "field": "m_Exponent", + "type": 2 + }, + "InnerAngle": { + "field": "m_InnerAngle", + "type": 8 + }, + "OuterAngle": { + "field": "m_OuterAngle", + "type": 8 + }, + "SpotRadius": { + "field": "m_SpotRadius", + "type": 8 + }, + "Parent": { + "field": "CBaseModelEntity", + "type": 11 + } + }, + "CDynamicProp": { + "CreateNavObstacle": { + "field": "m_bCreateNavObstacle", + "type": 10 + }, + "NavObstacleUpdatesOverridden": { + "field": "m_bNavObstacleUpdatesOverridden", + "type": 10 + }, + "UseHitboxesForRenderBox": { + "field": "m_bUseHitboxesForRenderBox", + "type": 10 + }, + "UseAnimGraph": { + "field": "m_bUseAnimGraph", + "type": 10 + }, + "OutputAnimBegun": { + "field": "m_pOutputAnimBegun", + "classname": "CEntityIOOutput", + "type": 16 + }, + "OutputAnimOver": { + "field": "m_pOutputAnimOver", + "classname": "CEntityIOOutput", + "type": 16 + }, + "OutputAnimLoopCycleOver": { + "field": "m_pOutputAnimLoopCycleOver", + "classname": "CEntityIOOutput", + "type": 16 + }, + "OnAnimReachedStart": { + "field": "m_OnAnimReachedStart", + "classname": "CEntityIOOutput", + "type": 16 + }, + "OnAnimReachedEnd": { + "field": "m_OnAnimReachedEnd", + "classname": "CEntityIOOutput", + "type": 16 + }, + "IdleAnim": { + "field": "m_iszIdleAnim", + "type": 13 + }, + "IdleAnimLoopMode": { + "field": "m_nIdleAnimLoopMode", + "type": 6 + }, + "RandomizeCycle": { + "field": "m_bRandomizeCycle", + "type": 10 + }, + "StartDisabled": { + "field": "m_bStartDisabled", + "type": 10 + }, + "FiredStartEndOutput": { + "field": "m_bFiredStartEndOutput", + "type": 10 + }, + "ForceNpcExclude": { + "field": "m_bForceNpcExclude", + "type": 10 + }, + "CreateNonSolid": { + "field": "m_bCreateNonSolid", + "type": 10 + }, + "IsOverrideProp": { + "field": "m_bIsOverrideProp", + "type": 10 + }, + "InitialGlowState": { + "field": "m_iInitialGlowState", + "type": 2 + }, + "GlowRange": { + "field": "m_nGlowRange", + "type": 2 + }, + "GlowRangeMin": { + "field": "m_nGlowRangeMin", + "type": 2 + }, + "GlowColor": { + "field": "m_glowColor", + "type": 19 + }, + "GlowTeam": { + "field": "m_nGlowTeam", + "type": 2 + }, + "Parent": { + "field": "CBreakableProp", + "type": 11 + } + }, + "CDynamicPropAlias_cable_dynamic": { + "Parent": { + "field": "CDynamicProp", + "type": 11 + } + }, + "CDynamicPropAlias_dynamic_prop": { + "Parent": { + "field": "CDynamicProp", + "type": 11 + } + }, + "CDynamicPropAlias_prop_dynamic_override": { + "Parent": { + "field": "CDynamicProp", + "type": 11 + } + }, + "CEconEntity": { + "AttributeManager": { + "field": "m_AttributeManager", + "classname": "CAttributeContainer", + "type": 16 + }, + "OriginalOwnerXuidLow": { + "field": "m_OriginalOwnerXuidLow", + "type": 6 + }, + "OriginalOwnerXuidHigh": { + "field": "m_OriginalOwnerXuidHigh", + "type": 6 + }, + "FallbackPaintKit": { + "field": "m_nFallbackPaintKit", + "type": 2 + }, + "FallbackSeed": { + "field": "m_nFallbackSeed", + "type": 2 + }, + "FallbackWear": { + "field": "m_flFallbackWear", + "type": 8 + }, + "FallbackStatTrak": { + "field": "m_nFallbackStatTrak", + "type": 2 + }, + "OldProvidee": { + "field": "m_hOldProvidee", + "type": 17, + "classname": "CBaseEntity" + }, + "OldOwnerClass": { + "field": "m_iOldOwnerClass", + "type": 2 + }, + "Parent": { + "field": "CBaseFlex", + "type": 11 + } + }, + "CEconItemView": { + "ItemDefinitionIndex": { + "field": "m_iItemDefinitionIndex", + "type": 5 + }, + "EntityQuality": { + "field": "m_iEntityQuality", + "type": 2 + }, + "EntityLevel": { + "field": "m_iEntityLevel", + "type": 6 + }, + "ItemID": { + "field": "m_iItemID", + "type": 7 + }, + "ItemIDHigh": { + "field": "m_iItemIDHigh", + "type": 6 + }, + "ItemIDLow": { + "field": "m_iItemIDLow", + "type": 6 + }, + "AccountID": { + "field": "m_iAccountID", + "type": 6 + }, + "InventoryPosition": { + "field": "m_iInventoryPosition", + "type": 6 + }, + "Initialized": { + "field": "m_bInitialized", + "type": 10 + }, + "AttributeList": { + "field": "m_AttributeList", + "classname": "CAttributeList", + "type": 16 + }, + "NetworkedDynamicAttributes": { + "field": "m_NetworkedDynamicAttributes", + "classname": "CAttributeList", + "type": 16 + }, + "CustomName": { + "field": "m_szCustomName", + "type": 15, + "size": 161 + }, + "CustomNameOverride": { + "field": "m_szCustomNameOverride", + "type": 15, + "size": 161 + }, + "Parent": { + "field": "IEconItemInterface", + "type": 11 + } + }, + "CEconWearable": { + "ForceSkin": { + "field": "m_nForceSkin", + "type": 2 + }, + "AlwaysAllow": { + "field": "m_bAlwaysAllow", + "type": 10 + }, + "Parent": { + "field": "CEconEntity", + "type": 11 + } + }, + "CEnableMotionFixup": { + "Parent": { + "field": "CBaseEntity", + "type": 11 + } + }, + "CEntityBlocker": { + "Parent": { + "field": "CBaseModelEntity", + "type": 11 + } + }, + "CEntityDissolve": { + "FadeInStart": { + "field": "m_flFadeInStart", + "type": 8 + }, + "FadeInLength": { + "field": "m_flFadeInLength", + "type": 8 + }, + "FadeOutModelStart": { + "field": "m_flFadeOutModelStart", + "type": 8 + }, + "FadeOutModelLength": { + "field": "m_flFadeOutModelLength", + "type": 8 + }, + "FadeOutStart": { + "field": "m_flFadeOutStart", + "type": 8 + }, + "FadeOutLength": { + "field": "m_flFadeOutLength", + "type": 8 + }, + "StartTime": { + "field": "m_flStartTime", + "type": 8 + }, + "DissolveType": { + "field": "m_nDissolveType", + "type": 6 + }, + "DissolverOrigin": { + "field": "m_vDissolverOrigin", + "type": 21 + }, + "Magnitude": { + "field": "m_nMagnitude", + "type": 6 + }, + "Parent": { + "field": "CBaseModelEntity", + "type": 11 + } + }, + "CEntityFlame": { + "EntAttached": { + "field": "m_hEntAttached", + "type": 17, + "classname": "CBaseEntity" + }, + "CheapEffect": { + "field": "m_bCheapEffect", + "type": 10 + }, + "Size": { + "field": "m_flSize", + "type": 8 + }, + "UseHitboxes": { + "field": "m_bUseHitboxes", + "type": 10 + }, + "NumHitboxFires": { + "field": "m_iNumHitboxFires", + "type": 2 + }, + "HitboxFireScale": { + "field": "m_flHitboxFireScale", + "type": 8 + }, + "Lifetime": { + "field": "m_flLifetime", + "type": 8 + }, + "Attacker": { + "field": "m_hAttacker", + "type": 17, + "classname": "CBaseEntity" + }, + "DangerSound": { + "field": "m_iDangerSound", + "type": 2 + }, + "DirectDamagePerSecond": { + "field": "m_flDirectDamagePerSecond", + "type": 8 + }, + "CustomDamageType": { + "field": "m_iCustomDamageType", + "type": 2 + }, + "Parent": { + "field": "CBaseEntity", + "type": 11 + } + }, + "CEnvBeam": { + "Active": { + "field": "m_active", + "type": 2 + }, + "StartEntity": { + "field": "m_iszStartEntity", + "type": 13 + }, + "EndEntity": { + "field": "m_iszEndEntity", + "type": 13 + }, + "Life": { + "field": "m_life", + "type": 8 + }, + "BoltWidth": { + "field": "m_boltWidth", + "type": 8 + }, + "NoiseAmplitude": { + "field": "m_noiseAmplitude", + "type": 8 + }, + "Speed": { + "field": "m_speed", + "type": 2 + }, + "Restrike": { + "field": "m_restrike", + "type": 8 + }, + "SpriteName": { + "field": "m_iszSpriteName", + "type": 13 + }, + "FrameStart": { + "field": "m_frameStart", + "type": 2 + }, + "EndPointWorld": { + "field": "m_vEndPointWorld", + "type": 21 + }, + "EndPointRelative": { + "field": "m_vEndPointRelative", + "type": 21 + }, + "Radius": { + "field": "m_radius", + "type": 8 + }, + "TouchType": { + "field": "m_TouchType", + "type": 6 + }, + "FilterName": { + "field": "m_iFilterName", + "type": 13 + }, + "Filter": { + "field": "m_hFilter", + "type": 17, + "classname": "CBaseEntity" + }, + "Decal": { + "field": "m_iszDecal", + "type": 13 + }, + "OnTouchedByEntity": { + "field": "m_OnTouchedByEntity", + "classname": "CEntityIOOutput", + "type": 16 + }, + "Parent": { + "field": "CBeam", + "type": 11 + } + }, + "CEnvBeverage": { + "CanInDispenser": { + "field": "m_CanInDispenser", + "type": 10 + }, + "BeverageType": { + "field": "m_nBeverageType", + "type": 2 + }, + "Parent": { + "field": "CBaseEntity", + "type": 11 + } + }, + "CEnvCombinedLightProbeVolume": { + "Entity_Color": { + "field": "m_Entity_Color", + "type": 19 + }, + "Entity_flBrightness": { + "field": "m_Entity_flBrightness", + "type": 8 + }, + "Entity_bCustomCubemapTexture": { + "field": "m_Entity_bCustomCubemapTexture", + "type": 10 + }, + "Entity_vBoxMins": { + "field": "m_Entity_vBoxMins", + "type": 21 + }, + "Entity_vBoxMaxs": { + "field": "m_Entity_vBoxMaxs", + "type": 21 + }, + "Entity_bMoveable": { + "field": "m_Entity_bMoveable", + "type": 10 + }, + "Entity_nHandshake": { + "field": "m_Entity_nHandshake", + "type": 2 + }, + "Entity_nEnvCubeMapArrayIndex": { + "field": "m_Entity_nEnvCubeMapArrayIndex", + "type": 2 + }, + "Entity_nPriority": { + "field": "m_Entity_nPriority", + "type": 2 + }, + "Entity_bStartDisabled": { + "field": "m_Entity_bStartDisabled", + "type": 10 + }, + "Entity_flEdgeFadeDist": { + "field": "m_Entity_flEdgeFadeDist", + "type": 8 + }, + "Entity_vEdgeFadeDists": { + "field": "m_Entity_vEdgeFadeDists", + "type": 21 + }, + "Entity_nLightProbeSizeX": { + "field": "m_Entity_nLightProbeSizeX", + "type": 2 + }, + "Entity_nLightProbeSizeY": { + "field": "m_Entity_nLightProbeSizeY", + "type": 2 + }, + "Entity_nLightProbeSizeZ": { + "field": "m_Entity_nLightProbeSizeZ", + "type": 2 + }, + "Entity_nLightProbeAtlasX": { + "field": "m_Entity_nLightProbeAtlasX", + "type": 2 + }, + "Entity_nLightProbeAtlasY": { + "field": "m_Entity_nLightProbeAtlasY", + "type": 2 + }, + "Entity_nLightProbeAtlasZ": { + "field": "m_Entity_nLightProbeAtlasZ", + "type": 2 + }, + "Entity_bEnabled": { + "field": "m_Entity_bEnabled", + "type": 10 + }, + "Parent": { + "field": "CBaseEntity", + "type": 11 + } + }, + "CEnvCubemap": { + "Entity_bCustomCubemapTexture": { + "field": "m_Entity_bCustomCubemapTexture", + "type": 10 + }, + "Entity_flInfluenceRadius": { + "field": "m_Entity_flInfluenceRadius", + "type": 8 + }, + "Entity_vBoxProjectMins": { + "field": "m_Entity_vBoxProjectMins", + "type": 21 + }, + "Entity_vBoxProjectMaxs": { + "field": "m_Entity_vBoxProjectMaxs", + "type": 21 + }, + "Entity_bMoveable": { + "field": "m_Entity_bMoveable", + "type": 10 + }, + "Entity_nHandshake": { + "field": "m_Entity_nHandshake", + "type": 2 + }, + "Entity_nEnvCubeMapArrayIndex": { + "field": "m_Entity_nEnvCubeMapArrayIndex", + "type": 2 + }, + "Entity_nPriority": { + "field": "m_Entity_nPriority", + "type": 2 + }, + "Entity_flEdgeFadeDist": { + "field": "m_Entity_flEdgeFadeDist", + "type": 8 + }, + "Entity_vEdgeFadeDists": { + "field": "m_Entity_vEdgeFadeDists", + "type": 21 + }, + "Entity_flDiffuseScale": { + "field": "m_Entity_flDiffuseScale", + "type": 8 + }, + "Entity_bStartDisabled": { + "field": "m_Entity_bStartDisabled", + "type": 10 + }, + "Entity_bDefaultEnvMap": { + "field": "m_Entity_bDefaultEnvMap", + "type": 10 + }, + "Entity_bDefaultSpecEnvMap": { + "field": "m_Entity_bDefaultSpecEnvMap", + "type": 10 + }, + "Entity_bIndoorCubeMap": { + "field": "m_Entity_bIndoorCubeMap", + "type": 10 + }, + "Entity_bCopyDiffuseFromDefaultCubemap": { + "field": "m_Entity_bCopyDiffuseFromDefaultCubemap", + "type": 10 + }, + "Entity_bEnabled": { + "field": "m_Entity_bEnabled", + "type": 10 + }, + "Parent": { + "field": "CBaseEntity", + "type": 11 + } + }, + "CEnvCubemapBox": { + "Parent": { + "field": "CEnvCubemap", + "type": 11 + } + }, + "CEnvCubemapFog": { + "EndDistance": { + "field": "m_flEndDistance", + "type": 8 + }, + "StartDistance": { + "field": "m_flStartDistance", + "type": 8 + }, + "FogFalloffExponent": { + "field": "m_flFogFalloffExponent", + "type": 8 + }, + "HeightFogEnabled": { + "field": "m_bHeightFogEnabled", + "type": 10 + }, + "FogHeightWidth": { + "field": "m_flFogHeightWidth", + "type": 8 + }, + "FogHeightEnd": { + "field": "m_flFogHeightEnd", + "type": 8 + }, + "FogHeightStart": { + "field": "m_flFogHeightStart", + "type": 8 + }, + "FogHeightExponent": { + "field": "m_flFogHeightExponent", + "type": 8 + }, + "LODBias": { + "field": "m_flLODBias", + "type": 8 + }, + "Active": { + "field": "m_bActive", + "type": 10 + }, + "StartDisabled": { + "field": "m_bStartDisabled", + "type": 10 + }, + "FogMaxOpacity": { + "field": "m_flFogMaxOpacity", + "type": 8 + }, + "CubemapSourceType": { + "field": "m_nCubemapSourceType", + "type": 2 + }, + "SkyEntity": { + "field": "m_iszSkyEntity", + "type": 13 + }, + "HasHeightFogEnd": { + "field": "m_bHasHeightFogEnd", + "type": 10 + }, + "FirstTime": { + "field": "m_bFirstTime", + "type": 10 + }, + "Parent": { + "field": "CBaseEntity", + "type": 11 + } + }, + "CEnvDecal": { + "Width": { + "field": "m_flWidth", + "type": 8 + }, + "Height": { + "field": "m_flHeight", + "type": 8 + }, + "Depth": { + "field": "m_flDepth", + "type": 8 + }, + "RenderOrder": { + "field": "m_nRenderOrder", + "type": 6 + }, + "ProjectOnWorld": { + "field": "m_bProjectOnWorld", + "type": 10 + }, + "ProjectOnCharacters": { + "field": "m_bProjectOnCharacters", + "type": 10 + }, + "ProjectOnWater": { + "field": "m_bProjectOnWater", + "type": 10 + }, + "DepthSortBias": { + "field": "m_flDepthSortBias", + "type": 8 + }, + "Parent": { + "field": "CBaseModelEntity", + "type": 11 + } + }, + "CEnvDetailController": { + "FadeStartDist": { + "field": "m_flFadeStartDist", + "type": 8 + }, + "FadeEndDist": { + "field": "m_flFadeEndDist", + "type": 8 + }, + "Parent": { + "field": "CBaseEntity", + "type": 11 + } + }, + "CEnvEntityIgniter": { + "Lifetime": { + "field": "m_flLifetime", + "type": 8 + }, + "Parent": { + "field": "CBaseEntity", + "type": 11 + } + }, + "CEnvEntityMaker": { + "EntityMins": { + "field": "m_vecEntityMins", + "type": 21 + }, + "EntityMaxs": { + "field": "m_vecEntityMaxs", + "type": 21 + }, + "CurrentInstance": { + "field": "m_hCurrentInstance", + "type": 17, + "classname": "CBaseEntity" + }, + "CurrentBlocker": { + "field": "m_hCurrentBlocker", + "type": 17, + "classname": "CBaseEntity" + }, + "BlockerOrigin": { + "field": "m_vecBlockerOrigin", + "type": 21 + }, + "PostSpawnDirection": { + "field": "m_angPostSpawnDirection", + "type": 20 + }, + "PostSpawnDirectionVariance": { + "field": "m_flPostSpawnDirectionVariance", + "type": 8 + }, + "PostSpawnSpeed": { + "field": "m_flPostSpawnSpeed", + "type": 8 + }, + "PostSpawnUseAngles": { + "field": "m_bPostSpawnUseAngles", + "type": 10 + }, + "Template": { + "field": "m_iszTemplate", + "type": 13 + }, + "OutputOnSpawned": { + "field": "m_pOutputOnSpawned", + "classname": "CEntityIOOutput", + "type": 16 + }, + "OutputOnFailedSpawn": { + "field": "m_pOutputOnFailedSpawn", + "classname": "CEntityIOOutput", + "type": 16 + }, + "Parent": { + "field": "CPointEntity", + "type": 11 + } + }, + "CEnvExplosion": { + "Magnitude": { + "field": "m_iMagnitude", + "type": 2 + }, + "PlayerDamage": { + "field": "m_flPlayerDamage", + "type": 8 + }, + "RadiusOverride": { + "field": "m_iRadiusOverride", + "type": 2 + }, + "InnerRadius": { + "field": "m_flInnerRadius", + "type": 8 + }, + "SpriteScale": { + "field": "m_spriteScale", + "type": 2 + }, + "DamageForce": { + "field": "m_flDamageForce", + "type": 8 + }, + "Inflictor": { + "field": "m_hInflictor", + "type": 17, + "classname": "CBaseEntity" + }, + "CustomDamageType": { + "field": "m_iCustomDamageType", + "type": 6 + }, + "CreateDebris": { + "field": "m_bCreateDebris", + "type": 10 + }, + "ExplosionType": { + "field": "m_iszExplosionType", + "type": 13 + }, + "CustomEffectName": { + "field": "m_iszCustomEffectName", + "type": 13 + }, + "CustomSoundName": { + "field": "m_iszCustomSoundName", + "type": 13 + }, + "ClassIgnore": { + "field": "m_iClassIgnore", + "type": 6 + }, + "ClassIgnore2": { + "field": "m_iClassIgnore2", + "type": 6 + }, + "EntityIgnoreName": { + "field": "m_iszEntityIgnoreName", + "type": 13 + }, + "EntityIgnore": { + "field": "m_hEntityIgnore", + "type": 17, + "classname": "CBaseEntity" + }, + "Parent": { + "field": "CModelPointEntity", + "type": 11 + } + }, + "CEnvFade": { + "FadeColor": { + "field": "m_fadeColor", + "type": 19 + }, + "Duration": { + "field": "m_Duration", + "type": 8 + }, + "HoldDuration": { + "field": "m_HoldDuration", + "type": 8 + }, + "OnBeginFade": { + "field": "m_OnBeginFade", + "classname": "CEntityIOOutput", + "type": 16 + }, + "Parent": { + "field": "CLogicalEntity", + "type": 11 + } + }, + "CEnvFireSensor": { + "Enabled": { + "field": "m_bEnabled", + "type": 10 + }, + "HeatAtLevel": { + "field": "m_bHeatAtLevel", + "type": 10 + }, + "Radius": { + "field": "m_radius", + "type": 8 + }, + "TargetLevel": { + "field": "m_targetLevel", + "type": 8 + }, + "TargetTime": { + "field": "m_targetTime", + "type": 8 + }, + "LevelTime": { + "field": "m_levelTime", + "type": 8 + }, + "OnHeatLevelStart": { + "field": "m_OnHeatLevelStart", + "classname": "CEntityIOOutput", + "type": 16 + }, + "OnHeatLevelEnd": { + "field": "m_OnHeatLevelEnd", + "classname": "CEntityIOOutput", + "type": 16 + }, + "Parent": { + "field": "CBaseEntity", + "type": 11 + } + }, + "CEnvFireSource": { + "Enabled": { + "field": "m_bEnabled", + "type": 10 + }, + "Radius": { + "field": "m_radius", + "type": 8 + }, + "Damage": { + "field": "m_damage", + "type": 8 + }, + "Parent": { + "field": "CBaseEntity", + "type": 11 + } + }, + "CEnvFunnel": { + "Parent": { + "field": "CBaseEntity", + "type": 11 + } + }, + "CEnvGlobal": { + "Globalstate": { + "field": "m_globalstate", + "type": 13 + }, + "Triggermode": { + "field": "m_triggermode", + "type": 2 + }, + "Initialstate": { + "field": "m_initialstate", + "type": 2 + }, + "Counter": { + "field": "m_counter", + "type": 2 + }, + "Parent": { + "field": "CLogicalEntity", + "type": 11 + } + }, + "CEnvHudHint": { + "Message": { + "field": "m_iszMessage", + "type": 13 + }, + "Parent": { + "field": "CPointEntity", + "type": 11 + } + }, + "CEnvInstructorHint": { + "Name": { + "field": "m_iszName", + "type": 13 + }, + "Replace_Key": { + "field": "m_iszReplace_Key", + "type": 13 + }, + "HintTargetEntity": { + "field": "m_iszHintTargetEntity", + "type": 13 + }, + "Timeout": { + "field": "m_iTimeout", + "type": 2 + }, + "DisplayLimit": { + "field": "m_iDisplayLimit", + "type": 2 + }, + "Icon_Onscreen": { + "field": "m_iszIcon_Onscreen", + "type": 13 + }, + "Icon_Offscreen": { + "field": "m_iszIcon_Offscreen", + "type": 13 + }, + "Caption": { + "field": "m_iszCaption", + "type": 13 + }, + "ActivatorCaption": { + "field": "m_iszActivatorCaption", + "type": 13 + }, + "Color": { + "field": "m_Color", + "type": 19 + }, + "IconOffset": { + "field": "m_fIconOffset", + "type": 8 + }, + "Range": { + "field": "m_fRange", + "type": 8 + }, + "PulseOption": { + "field": "m_iPulseOption", + "type": 4 + }, + "AlphaOption": { + "field": "m_iAlphaOption", + "type": 4 + }, + "ShakeOption": { + "field": "m_iShakeOption", + "type": 4 + }, + "Static": { + "field": "m_bStatic", + "type": 10 + }, + "NoOffscreen": { + "field": "m_bNoOffscreen", + "type": 10 + }, + "ForceCaption": { + "field": "m_bForceCaption", + "type": 10 + }, + "InstanceType": { + "field": "m_iInstanceType", + "type": 2 + }, + "SuppressRest": { + "field": "m_bSuppressRest", + "type": 10 + }, + "Binding": { + "field": "m_iszBinding", + "type": 13 + }, + "AllowNoDrawTarget": { + "field": "m_bAllowNoDrawTarget", + "type": 10 + }, + "AutoStart": { + "field": "m_bAutoStart", + "type": 10 + }, + "LocalPlayerOnly": { + "field": "m_bLocalPlayerOnly", + "type": 10 + }, + "Parent": { + "field": "CPointEntity", + "type": 11 + } + }, + "CEnvInstructorVRHint": { + "Name": { + "field": "m_iszName", + "type": 13 + }, + "HintTargetEntity": { + "field": "m_iszHintTargetEntity", + "type": 13 + }, + "Timeout": { + "field": "m_iTimeout", + "type": 2 + }, + "Caption": { + "field": "m_iszCaption", + "type": 13 + }, + "StartSound": { + "field": "m_iszStartSound", + "type": 13 + }, + "LayoutFileType": { + "field": "m_iLayoutFileType", + "type": 2 + }, + "CustomLayoutFile": { + "field": "m_iszCustomLayoutFile", + "type": 13 + }, + "AttachType": { + "field": "m_iAttachType", + "type": 2 + }, + "HeightOffset": { + "field": "m_flHeightOffset", + "type": 8 + }, + "Parent": { + "field": "CPointEntity", + "type": 11 + } + }, + "CEnvLaser": { + "LaserTarget": { + "field": "m_iszLaserTarget", + "type": 13 + }, + "Sprite": { + "field": "m_pSprite", + "classname": "CSprite", + "type": 24 + }, + "SpriteName": { + "field": "m_iszSpriteName", + "type": 13 + }, + "FirePosition": { + "field": "m_firePosition", + "type": 21 + }, + "StartFrame": { + "field": "m_flStartFrame", + "type": 8 + }, + "Parent": { + "field": "CBeam", + "type": 11 + } + }, + "CEnvLightProbeVolume": { + "Entity_vBoxMins": { + "field": "m_Entity_vBoxMins", + "type": 21 + }, + "Entity_vBoxMaxs": { + "field": "m_Entity_vBoxMaxs", + "type": 21 + }, + "Entity_bMoveable": { + "field": "m_Entity_bMoveable", + "type": 10 + }, + "Entity_nHandshake": { + "field": "m_Entity_nHandshake", + "type": 2 + }, + "Entity_nPriority": { + "field": "m_Entity_nPriority", + "type": 2 + }, + "Entity_bStartDisabled": { + "field": "m_Entity_bStartDisabled", + "type": 10 + }, + "Entity_nLightProbeSizeX": { + "field": "m_Entity_nLightProbeSizeX", + "type": 2 + }, + "Entity_nLightProbeSizeY": { + "field": "m_Entity_nLightProbeSizeY", + "type": 2 + }, + "Entity_nLightProbeSizeZ": { + "field": "m_Entity_nLightProbeSizeZ", + "type": 2 + }, + "Entity_nLightProbeAtlasX": { + "field": "m_Entity_nLightProbeAtlasX", + "type": 2 + }, + "Entity_nLightProbeAtlasY": { + "field": "m_Entity_nLightProbeAtlasY", + "type": 2 + }, + "Entity_nLightProbeAtlasZ": { + "field": "m_Entity_nLightProbeAtlasZ", + "type": 2 + }, + "Entity_bEnabled": { + "field": "m_Entity_bEnabled", + "type": 10 + }, + "Parent": { + "field": "CBaseEntity", + "type": 11 + } + }, + "CEnvMicrophone": { + "Disabled": { + "field": "m_bDisabled", + "type": 10 + }, + "MeasureTarget": { + "field": "m_hMeasureTarget", + "type": 17, + "classname": "CBaseEntity" + }, + "SoundType": { + "field": "m_nSoundType", + "type": 5 + }, + "SoundFlags": { + "field": "m_nSoundFlags", + "type": 5 + }, + "Sensitivity": { + "field": "m_flSensitivity", + "type": 8 + }, + "SmoothFactor": { + "field": "m_flSmoothFactor", + "type": 8 + }, + "MaxRange": { + "field": "m_flMaxRange", + "type": 8 + }, + "SpeakerName": { + "field": "m_iszSpeakerName", + "type": 13 + }, + "Speaker": { + "field": "m_hSpeaker", + "type": 17, + "classname": "CBaseEntity" + }, + "AvoidFeedback": { + "field": "m_bAvoidFeedback", + "type": 10 + }, + "SpeakerDSPPreset": { + "field": "m_iSpeakerDSPPreset", + "type": 2 + }, + "ListenFilter": { + "field": "m_iszListenFilter", + "type": 13 + }, + "ListenFilter1": { + "field": "m_hListenFilter", + "type": 17, + "classname": "CBaseFilter" + }, + "OnRoutedSound": { + "field": "m_OnRoutedSound", + "classname": "CEntityIOOutput", + "type": 16 + }, + "OnHeardSound": { + "field": "m_OnHeardSound", + "classname": "CEntityIOOutput", + "type": 16 + }, + "LastSound": { + "field": "m_szLastSound", + "type": 15, + "size": 256 + }, + "LastRoutedFrame": { + "field": "m_iLastRoutedFrame", + "type": 2 + }, + "Parent": { + "field": "CPointEntity", + "type": 11 + } + }, + "CEnvMuzzleFlash": { + "Scale": { + "field": "m_flScale", + "type": 8 + }, + "ParentAttachment": { + "field": "m_iszParentAttachment", + "type": 13 + }, + "Parent": { + "field": "CPointEntity", + "type": 11 + } + }, + "CEnvParticleGlow": { + "AlphaScale": { + "field": "m_flAlphaScale", + "type": 8 + }, + "RadiusScale": { + "field": "m_flRadiusScale", + "type": 8 + }, + "SelfIllumScale": { + "field": "m_flSelfIllumScale", + "type": 8 + }, + "ColorTint": { + "field": "m_ColorTint", + "type": 19 + }, + "Parent": { + "field": "CParticleSystem", + "type": 11 + } + }, + "CEnvProjectedTexture": { + "TargetEntity": { + "field": "m_hTargetEntity", + "type": 17, + "classname": "CBaseEntity" + }, + "State": { + "field": "m_bState", + "type": 10 + }, + "AlwaysUpdate": { + "field": "m_bAlwaysUpdate", + "type": 10 + }, + "LightFOV": { + "field": "m_flLightFOV", + "type": 8 + }, + "EnableShadows": { + "field": "m_bEnableShadows", + "type": 10 + }, + "SimpleProjection": { + "field": "m_bSimpleProjection", + "type": 10 + }, + "LightOnlyTarget": { + "field": "m_bLightOnlyTarget", + "type": 10 + }, + "LightWorld": { + "field": "m_bLightWorld", + "type": 10 + }, + "CameraSpace": { + "field": "m_bCameraSpace", + "type": 10 + }, + "BrightnessScale": { + "field": "m_flBrightnessScale", + "type": 8 + }, + "LightColor": { + "field": "m_LightColor", + "type": 19 + }, + "Intensity": { + "field": "m_flIntensity", + "type": 8 + }, + "LinearAttenuation": { + "field": "m_flLinearAttenuation", + "type": 8 + }, + "QuadraticAttenuation": { + "field": "m_flQuadraticAttenuation", + "type": 8 + }, + "Volumetric": { + "field": "m_bVolumetric", + "type": 10 + }, + "NoiseStrength": { + "field": "m_flNoiseStrength", + "type": 8 + }, + "FlashlightTime": { + "field": "m_flFlashlightTime", + "type": 8 + }, + "NumPlanes": { + "field": "m_nNumPlanes", + "type": 6 + }, + "PlaneOffset": { + "field": "m_flPlaneOffset", + "type": 8 + }, + "VolumetricIntensity": { + "field": "m_flVolumetricIntensity", + "type": 8 + }, + "ColorTransitionTime": { + "field": "m_flColorTransitionTime", + "type": 8 + }, + "Ambient": { + "field": "m_flAmbient", + "type": 8 + }, + "SpotlightTextureName": { + "field": "m_SpotlightTextureName", + "type": 15, + "size": 512 + }, + "SpotlightTextureFrame": { + "field": "m_nSpotlightTextureFrame", + "type": 2 + }, + "ShadowQuality": { + "field": "m_nShadowQuality", + "type": 6 + }, + "NearZ": { + "field": "m_flNearZ", + "type": 8 + }, + "FarZ": { + "field": "m_flFarZ", + "type": 8 + }, + "ProjectionSize": { + "field": "m_flProjectionSize", + "type": 8 + }, + "Rotation": { + "field": "m_flRotation", + "type": 8 + }, + "FlipHorizontal": { + "field": "m_bFlipHorizontal", + "type": 10 + }, + "Parent": { + "field": "CModelPointEntity", + "type": 11 + } + }, + "CEnvScreenOverlay": { + "OverlayNames": { + "field": "m_iszOverlayNames", + "type": 26, + "size": 10 + }, + "OverlayTimes": { + "field": "m_flOverlayTimes", + "type": 37, + "size": 10 + }, + "StartTime": { + "field": "m_flStartTime", + "type": 8 + }, + "DesiredOverlay": { + "field": "m_iDesiredOverlay", + "type": 2 + }, + "IsActive": { + "field": "m_bIsActive", + "type": 10 + }, + "Parent": { + "field": "CPointEntity", + "type": 11 + } + }, + "CEnvShake": { + "LimitToEntity": { + "field": "m_limitToEntity", + "type": 13 + }, + "Amplitude": { + "field": "m_Amplitude", + "type": 8 + }, + "Frequency": { + "field": "m_Frequency", + "type": 8 + }, + "Duration": { + "field": "m_Duration", + "type": 8 + }, + "Radius": { + "field": "m_Radius", + "type": 8 + }, + "StopTime": { + "field": "m_stopTime", + "type": 8 + }, + "NextShake": { + "field": "m_nextShake", + "type": 8 + }, + "CurrentAmp": { + "field": "m_currentAmp", + "type": 8 + }, + "MaxForce": { + "field": "m_maxForce", + "type": 21 + }, + "ShakeCallback": { + "field": "m_shakeCallback", + "classname": "CPhysicsShake", + "type": 16 + }, + "Parent": { + "field": "CPointEntity", + "type": 11 + } + }, + "CEnvSky": { + "StartDisabled": { + "field": "m_bStartDisabled", + "type": 10 + }, + "TintColor": { + "field": "m_vTintColor", + "type": 19 + }, + "TintColorLightingOnly": { + "field": "m_vTintColorLightingOnly", + "type": 19 + }, + "BrightnessScale": { + "field": "m_flBrightnessScale", + "type": 8 + }, + "FogType": { + "field": "m_nFogType", + "type": 2 + }, + "FogMinStart": { + "field": "m_flFogMinStart", + "type": 8 + }, + "FogMinEnd": { + "field": "m_flFogMinEnd", + "type": 8 + }, + "FogMaxStart": { + "field": "m_flFogMaxStart", + "type": 8 + }, + "FogMaxEnd": { + "field": "m_flFogMaxEnd", + "type": 8 + }, + "Enabled": { + "field": "m_bEnabled", + "type": 10 + }, + "Parent": { + "field": "CBaseModelEntity", + "type": 11 + } + }, + "CEnvSpark": { + "Delay": { + "field": "m_flDelay", + "type": 8 + }, + "Magnitude": { + "field": "m_nMagnitude", + "type": 2 + }, + "TrailLength": { + "field": "m_nTrailLength", + "type": 2 + }, + "Type": { + "field": "m_nType", + "type": 2 + }, + "OnSpark": { + "field": "m_OnSpark", + "classname": "CEntityIOOutput", + "type": 16 + }, + "Parent": { + "field": "CPointEntity", + "type": 11 + } + }, + "CEnvSplash": { + "Scale": { + "field": "m_flScale", + "type": 8 + }, + "Parent": { + "field": "CPointEntity", + "type": 11 + } + }, + "CEnvTilt": { + "Duration": { + "field": "m_Duration", + "type": 8 + }, + "Radius": { + "field": "m_Radius", + "type": 8 + }, + "TiltTime": { + "field": "m_TiltTime", + "type": 8 + }, + "StopTime": { + "field": "m_stopTime", + "type": 8 + }, + "Parent": { + "field": "CPointEntity", + "type": 11 + } + }, + "CEnvTracer": { + "End": { + "field": "m_vecEnd", + "type": 21 + }, + "Delay": { + "field": "m_flDelay", + "type": 8 + }, + "Parent": { + "field": "CPointEntity", + "type": 11 + } + }, + "CEnvViewPunch": { + "Radius": { + "field": "m_flRadius", + "type": 8 + }, + "ViewPunch": { + "field": "m_angViewPunch", + "type": 20 + }, + "Parent": { + "field": "CPointEntity", + "type": 11 + } + }, + "CEnvVolumetricFogController": { + "Scattering": { + "field": "m_flScattering", + "type": 8 + }, + "Anisotropy": { + "field": "m_flAnisotropy", + "type": 8 + }, + "FadeSpeed": { + "field": "m_flFadeSpeed", + "type": 8 + }, + "DrawDistance": { + "field": "m_flDrawDistance", + "type": 8 + }, + "FadeInStart": { + "field": "m_flFadeInStart", + "type": 8 + }, + "FadeInEnd": { + "field": "m_flFadeInEnd", + "type": 8 + }, + "IndirectStrength": { + "field": "m_flIndirectStrength", + "type": 8 + }, + "VolumeDepth": { + "field": "m_nVolumeDepth", + "type": 2 + }, + "FirstVolumeSliceThickness": { + "field": "m_fFirstVolumeSliceThickness", + "type": 8 + }, + "IndirectTextureDimX": { + "field": "m_nIndirectTextureDimX", + "type": 2 + }, + "IndirectTextureDimY": { + "field": "m_nIndirectTextureDimY", + "type": 2 + }, + "IndirectTextureDimZ": { + "field": "m_nIndirectTextureDimZ", + "type": 2 + }, + "BoxMins": { + "field": "m_vBoxMins", + "type": 21 + }, + "BoxMaxs": { + "field": "m_vBoxMaxs", + "type": 21 + }, + "Active": { + "field": "m_bActive", + "type": 10 + }, + "StartAnisoTime": { + "field": "m_flStartAnisoTime", + "type": 8 + }, + "StartScatterTime": { + "field": "m_flStartScatterTime", + "type": 8 + }, + "StartDrawDistanceTime": { + "field": "m_flStartDrawDistanceTime", + "type": 8 + }, + "StartAnisotropy": { + "field": "m_flStartAnisotropy", + "type": 8 + }, + "StartScattering": { + "field": "m_flStartScattering", + "type": 8 + }, + "StartDrawDistance": { + "field": "m_flStartDrawDistance", + "type": 8 + }, + "DefaultAnisotropy": { + "field": "m_flDefaultAnisotropy", + "type": 8 + }, + "DefaultScattering": { + "field": "m_flDefaultScattering", + "type": 8 + }, + "DefaultDrawDistance": { + "field": "m_flDefaultDrawDistance", + "type": 8 + }, + "StartDisabled": { + "field": "m_bStartDisabled", + "type": 10 + }, + "EnableIndirect": { + "field": "m_bEnableIndirect", + "type": 10 + }, + "IndirectUseLPVs": { + "field": "m_bIndirectUseLPVs", + "type": 10 + }, + "IsMaster": { + "field": "m_bIsMaster", + "type": 10 + }, + "ForceRefreshCount": { + "field": "m_nForceRefreshCount", + "type": 2 + }, + "NoiseSpeed": { + "field": "m_fNoiseSpeed", + "type": 8 + }, + "NoiseStrength": { + "field": "m_fNoiseStrength", + "type": 8 + }, + "NoiseScale": { + "field": "m_vNoiseScale", + "type": 21 + }, + "FirstTime": { + "field": "m_bFirstTime", + "type": 10 + }, + "Parent": { + "field": "CBaseEntity", + "type": 11 + } + }, + "CEnvVolumetricFogVolume": { + "Active": { + "field": "m_bActive", + "type": 10 + }, + "BoxMins": { + "field": "m_vBoxMins", + "type": 21 + }, + "BoxMaxs": { + "field": "m_vBoxMaxs", + "type": 21 + }, + "StartDisabled": { + "field": "m_bStartDisabled", + "type": 10 + }, + "Strength": { + "field": "m_flStrength", + "type": 8 + }, + "FalloffShape": { + "field": "m_nFalloffShape", + "type": 2 + }, + "FalloffExponent": { + "field": "m_flFalloffExponent", + "type": 8 + }, + "HeightFogDepth": { + "field": "m_flHeightFogDepth", + "type": 8 + }, + "HeightFogEdgeWidth": { + "field": "m_fHeightFogEdgeWidth", + "type": 8 + }, + "IndirectLightStrength": { + "field": "m_fIndirectLightStrength", + "type": 8 + }, + "SunLightStrength": { + "field": "m_fSunLightStrength", + "type": 8 + }, + "NoiseStrength": { + "field": "m_fNoiseStrength", + "type": 8 + }, + "OverrideIndirectLightStrength": { + "field": "m_bOverrideIndirectLightStrength", + "type": 10 + }, + "OverrideSunLightStrength": { + "field": "m_bOverrideSunLightStrength", + "type": 10 + }, + "OverrideNoiseStrength": { + "field": "m_bOverrideNoiseStrength", + "type": 10 + }, + "AllowLPVIndirect": { + "field": "m_bAllowLPVIndirect", + "type": 10 + }, + "Parent": { + "field": "CBaseEntity", + "type": 11 + } + }, + "CEnvWind": { + "EnvWindShared": { + "field": "m_EnvWindShared", + "classname": "CEnvWindShared", + "type": 16 + }, + "Parent": { + "field": "CBaseEntity", + "type": 11 + } + }, + "CEnvWindShared": { + "StartTime": { + "field": "m_flStartTime", + "type": 8 + }, + "WindSeed": { + "field": "m_iWindSeed", + "type": 6 + }, + "MinWind": { + "field": "m_iMinWind", + "type": 5 + }, + "MaxWind": { + "field": "m_iMaxWind", + "type": 5 + }, + "WindRadius": { + "field": "m_windRadius", + "type": 2 + }, + "MinGust": { + "field": "m_iMinGust", + "type": 5 + }, + "MaxGust": { + "field": "m_iMaxGust", + "type": 5 + }, + "MinGustDelay": { + "field": "m_flMinGustDelay", + "type": 8 + }, + "MaxGustDelay": { + "field": "m_flMaxGustDelay", + "type": 8 + }, + "GustDuration": { + "field": "m_flGustDuration", + "type": 8 + }, + "GustDirChange": { + "field": "m_iGustDirChange", + "type": 5 + }, + "Location": { + "field": "m_location", + "type": 21 + }, + "GustSound": { + "field": "m_iszGustSound", + "type": 2 + }, + "WindDir": { + "field": "m_iWindDir", + "type": 2 + }, + "WindSpeed": { + "field": "m_flWindSpeed", + "type": 8 + }, + "CurrentWindVector": { + "field": "m_currentWindVector", + "type": 21 + }, + "CurrentSwayVector": { + "field": "m_CurrentSwayVector", + "type": 21 + }, + "PrevSwayVector": { + "field": "m_PrevSwayVector", + "type": 21 + }, + "InitialWindDir": { + "field": "m_iInitialWindDir", + "type": 5 + }, + "InitialWindSpeed": { + "field": "m_flInitialWindSpeed", + "type": 8 + }, + "OnGustStart": { + "field": "m_OnGustStart", + "classname": "CEntityIOOutput", + "type": 16 + }, + "OnGustEnd": { + "field": "m_OnGustEnd", + "classname": "CEntityIOOutput", + "type": 16 + }, + "VariationTime": { + "field": "m_flVariationTime", + "type": 8 + }, + "SwayTime": { + "field": "m_flSwayTime", + "type": 8 + }, + "SimTime": { + "field": "m_flSimTime", + "type": 8 + }, + "SwitchTime": { + "field": "m_flSwitchTime", + "type": 8 + }, + "AveWindSpeed": { + "field": "m_flAveWindSpeed", + "type": 8 + }, + "Gusting": { + "field": "m_bGusting", + "type": 10 + }, + "WindAngleVariation": { + "field": "m_flWindAngleVariation", + "type": 8 + }, + "WindSpeedVariation": { + "field": "m_flWindSpeedVariation", + "type": 8 + }, + "EntOwner": { + "field": "m_hEntOwner", + "type": 17, + "classname": "CBaseEntity" + } + }, + "CFilterAttributeInt": { + "AttributeName": { + "field": "m_sAttributeName", + "type": 12 + }, + "Parent": { + "field": "CBaseFilter", + "type": 11 + } + }, + "CFilterClass": { + "FilterClass": { + "field": "m_iFilterClass", + "type": 13 + }, + "Parent": { + "field": "CBaseFilter", + "type": 11 + } + }, + "CFilterContext": { + "FilterContext": { + "field": "m_iFilterContext", + "type": 13 + }, + "Parent": { + "field": "CBaseFilter", + "type": 11 + } + }, + "CFilterEnemy": { + "EnemyName": { + "field": "m_iszEnemyName", + "type": 13 + }, + "Radius": { + "field": "m_flRadius", + "type": 8 + }, + "OuterRadius": { + "field": "m_flOuterRadius", + "type": 8 + }, + "MaxSquadmatesPerEnemy": { + "field": "m_nMaxSquadmatesPerEnemy", + "type": 2 + }, + "PlayerName": { + "field": "m_iszPlayerName", + "type": 13 + }, + "Parent": { + "field": "CBaseFilter", + "type": 11 + } + }, + "CFilterLOS": { + "Parent": { + "field": "CBaseFilter", + "type": 11 + } + }, + "CFilterMassGreater": { + "FilterMass": { + "field": "m_fFilterMass", + "type": 8 + }, + "Parent": { + "field": "CBaseFilter", + "type": 11 + } + }, + "CFilterModel": { + "FilterModel": { + "field": "m_iFilterModel", + "type": 13 + }, + "Parent": { + "field": "CBaseFilter", + "type": 11 + } + }, + "CFilterMultiple": { + "FilterType": { + "field": "m_nFilterType", + "type": 6 + }, + "FilterName": { + "field": "m_iFilterName", + "type": 26, + "size": 10 + }, + "Filter": { + "field": "m_hFilter", + "type": 46, + "size": 10 + }, + "FilterCount": { + "field": "m_nFilterCount", + "type": 2 + }, + "Parent": { + "field": "CBaseFilter", + "type": 11 + } + }, + "CFilterName": { + "FilterName": { + "field": "m_iFilterName", + "type": 13 + }, + "Parent": { + "field": "CBaseFilter", + "type": 11 + } + }, + "CFilterProximity": { + "Radius": { + "field": "m_flRadius", + "type": 8 + }, + "Parent": { + "field": "CBaseFilter", + "type": 11 + } + }, + "CFire": { + "Effect": { + "field": "m_hEffect", + "type": 17, + "classname": "CBaseFire" + }, + "Owner": { + "field": "m_hOwner", + "type": 17, + "classname": "CBaseEntity" + }, + "FireType": { + "field": "m_nFireType", + "type": 2 + }, + "Fuel": { + "field": "m_flFuel", + "type": 8 + }, + "DamageTime": { + "field": "m_flDamageTime", + "type": 8 + }, + "LastDamage": { + "field": "m_lastDamage", + "type": 8 + }, + "FireSize": { + "field": "m_flFireSize", + "type": 8 + }, + "LastNavUpdateTime": { + "field": "m_flLastNavUpdateTime", + "type": 8 + }, + "HeatLevel": { + "field": "m_flHeatLevel", + "type": 8 + }, + "HeatAbsorb": { + "field": "m_flHeatAbsorb", + "type": 8 + }, + "DamageScale": { + "field": "m_flDamageScale", + "type": 8 + }, + "MaxHeat": { + "field": "m_flMaxHeat", + "type": 8 + }, + "LastHeatLevel": { + "field": "m_flLastHeatLevel", + "type": 8 + }, + "AttackTime": { + "field": "m_flAttackTime", + "type": 8 + }, + "Enabled": { + "field": "m_bEnabled", + "type": 10 + }, + "StartDisabled": { + "field": "m_bStartDisabled", + "type": 10 + }, + "DidActivate": { + "field": "m_bDidActivate", + "type": 10 + }, + "OnIgnited": { + "field": "m_OnIgnited", + "classname": "CEntityIOOutput", + "type": 16 + }, + "OnExtinguished": { + "field": "m_OnExtinguished", + "classname": "CEntityIOOutput", + "type": 16 + }, + "Parent": { + "field": "CBaseModelEntity", + "type": 11 + } + }, + "CFireCrackerBlast": { + "Parent": { + "field": "CInferno", + "type": 11 + } + }, + "CFireSmoke": { + "FlameModelIndex": { + "field": "m_nFlameModelIndex", + "type": 2 + }, + "FlameFromAboveModelIndex": { + "field": "m_nFlameFromAboveModelIndex", + "type": 2 + }, + "Parent": { + "field": "CBaseFire", + "type": 11 + } + }, + "CFish": { + "Pool": { + "field": "m_pool", + "type": 17, + "classname": "CFishPool" + }, + "Id": { + "field": "m_id", + "type": 6 + }, + "X": { + "field": "m_x", + "type": 8 + }, + "Y": { + "field": "m_y", + "type": 8 + }, + "Z": { + "field": "m_z", + "type": 8 + }, + "Angle": { + "field": "m_angle", + "type": 8 + }, + "AngleChange": { + "field": "m_angleChange", + "type": 8 + }, + "Forward": { + "field": "m_forward", + "type": 21 + }, + "Perp": { + "field": "m_perp", + "type": 21 + }, + "PoolOrigin": { + "field": "m_poolOrigin", + "type": 21 + }, + "WaterLevel": { + "field": "m_waterLevel", + "type": 8 + }, + "Speed": { + "field": "m_speed", + "type": 8 + }, + "DesiredSpeed": { + "field": "m_desiredSpeed", + "type": 8 + }, + "CalmSpeed": { + "field": "m_calmSpeed", + "type": 8 + }, + "PanicSpeed": { + "field": "m_panicSpeed", + "type": 8 + }, + "AvoidRange": { + "field": "m_avoidRange", + "type": 8 + }, + "TurnTimer": { + "field": "m_turnTimer", + "classname": "CountdownTimer", + "type": 16 + }, + "TurnClockwise": { + "field": "m_turnClockwise", + "type": 10 + }, + "GoTimer": { + "field": "m_goTimer", + "classname": "CountdownTimer", + "type": 16 + }, + "MoveTimer": { + "field": "m_moveTimer", + "classname": "CountdownTimer", + "type": 16 + }, + "PanicTimer": { + "field": "m_panicTimer", + "classname": "CountdownTimer", + "type": 16 + }, + "DisperseTimer": { + "field": "m_disperseTimer", + "classname": "CountdownTimer", + "type": 16 + }, + "ProximityTimer": { + "field": "m_proximityTimer", + "classname": "CountdownTimer", + "type": 16 + }, + "Parent": { + "field": "CBaseAnimGraph", + "type": 11 + } + }, + "CFishPool": { + "FishCount": { + "field": "m_fishCount", + "type": 2 + }, + "MaxRange": { + "field": "m_maxRange", + "type": 8 + }, + "SwimDepth": { + "field": "m_swimDepth", + "type": 8 + }, + "WaterLevel": { + "field": "m_waterLevel", + "type": 8 + }, + "IsDormant": { + "field": "m_isDormant", + "type": 10 + }, + "VisTimer": { + "field": "m_visTimer", + "classname": "CountdownTimer", + "type": 16 + }, + "Parent": { + "field": "CBaseEntity", + "type": 11 + } + }, + "CFists": { + "PlayingUninterruptableAct": { + "field": "m_bPlayingUninterruptableAct", + "type": 10 + }, + "UninterruptableActivity": { + "field": "m_nUninterruptableActivity", + "type": 6 + }, + "RestorePrevWep": { + "field": "m_bRestorePrevWep", + "type": 10 + }, + "WeaponBeforePrevious": { + "field": "m_hWeaponBeforePrevious", + "type": 17, + "classname": "CBasePlayerWeapon" + }, + "WeaponPrevious": { + "field": "m_hWeaponPrevious", + "type": 17, + "classname": "CBasePlayerWeapon" + }, + "DelayedHardPunchIncoming": { + "field": "m_bDelayedHardPunchIncoming", + "type": 10 + }, + "DestroyAfterTaunt": { + "field": "m_bDestroyAfterTaunt", + "type": 10 + }, + "Parent": { + "field": "CCSWeaponBase", + "type": 11 + } + }, + "CFlashbang": { + "Parent": { + "field": "CBaseCSGrenade", + "type": 11 + } + }, + "CFlashbangProjectile": { + "TimeToDetonate": { + "field": "m_flTimeToDetonate", + "type": 8 + }, + "NumOpponentsHit": { + "field": "m_numOpponentsHit", + "type": 4 + }, + "NumTeammatesHit": { + "field": "m_numTeammatesHit", + "type": 4 + }, + "Parent": { + "field": "CBaseCSGrenadeProjectile", + "type": 11 + } + }, + "CFogController": { + "Fog": { + "field": "m_fog", + "classname": "fogparams_t", + "type": 16 + }, + "UseAngles": { + "field": "m_bUseAngles", + "type": 10 + }, + "ChangedVariables": { + "field": "m_iChangedVariables", + "type": 2 + }, + "Parent": { + "field": "CBaseEntity", + "type": 11 + } + }, + "CFogTrigger": { + "Fog": { + "field": "m_fog", + "classname": "fogparams_t", + "type": 16 + }, + "Parent": { + "field": "CBaseTrigger", + "type": 11 + } + }, + "CFogVolume": { + "FogName": { + "field": "m_fogName", + "type": 13 + }, + "PostProcessName": { + "field": "m_postProcessName", + "type": 13 + }, + "ColorCorrectionName": { + "field": "m_colorCorrectionName", + "type": 13 + }, + "Disabled": { + "field": "m_bDisabled", + "type": 10 + }, + "InFogVolumesList": { + "field": "m_bInFogVolumesList", + "type": 10 + }, + "Parent": { + "field": "CServerOnlyModelEntity", + "type": 11 + } + }, + "CFootstepControl": { + "Source": { + "field": "m_source", + "type": 13 + }, + "Destination": { + "field": "m_destination", + "type": 13 + }, + "Parent": { + "field": "CBaseTrigger", + "type": 11 + } + }, + "CFuncBrush": { + "Solidity": { + "field": "m_iSolidity", + "type": 6 + }, + "Disabled": { + "field": "m_iDisabled", + "type": 2 + }, + "SolidBsp": { + "field": "m_bSolidBsp", + "type": 10 + }, + "ExcludedClass": { + "field": "m_iszExcludedClass", + "type": 13 + }, + "InvertExclusion": { + "field": "m_bInvertExclusion", + "type": 10 + }, + "ScriptedMovement": { + "field": "m_bScriptedMovement", + "type": 10 + }, + "Parent": { + "field": "CBaseModelEntity", + "type": 11 + } + }, + "CFuncConveyor": { + "ConveyorModels": { + "field": "m_szConveyorModels", + "type": 13 + }, + "TransitionDurationSeconds": { + "field": "m_flTransitionDurationSeconds", + "type": 8 + }, + "MoveEntitySpace": { + "field": "m_angMoveEntitySpace", + "type": 20 + }, + "MoveDirEntitySpace": { + "field": "m_vecMoveDirEntitySpace", + "type": 21 + }, + "TargetSpeed": { + "field": "m_flTargetSpeed", + "type": 8 + }, + "TransitionStartTick": { + "field": "m_nTransitionStartTick", + "type": 2 + }, + "TransitionDurationTicks": { + "field": "m_nTransitionDurationTicks", + "type": 2 + }, + "TransitionStartSpeed": { + "field": "m_flTransitionStartSpeed", + "type": 8 + }, + "Parent": { + "field": "CBaseModelEntity", + "type": 11 + } + }, + "CFuncElectrifiedVolume": { + "EffectName": { + "field": "m_EffectName", + "type": 13 + }, + "EffectInterpenetrateName": { + "field": "m_EffectInterpenetrateName", + "type": 13 + }, + "EffectZapName": { + "field": "m_EffectZapName", + "type": 13 + }, + "EffectSource": { + "field": "m_iszEffectSource", + "type": 13 + }, + "Parent": { + "field": "CFuncBrush", + "type": 11 + } + }, + "CFuncIllusionary": { + "Parent": { + "field": "CBaseModelEntity", + "type": 11 + } + }, + "CFuncInteractionLayerClip": { + "Disabled": { + "field": "m_bDisabled", + "type": 10 + }, + "InteractsAs": { + "field": "m_iszInteractsAs", + "type": 13 + }, + "InteractsWith": { + "field": "m_iszInteractsWith", + "type": 13 + }, + "Parent": { + "field": "CBaseModelEntity", + "type": 11 + } + }, + "CFuncLadder": { + "LadderDir": { + "field": "m_vecLadderDir", + "type": 21 + }, + "LocalTop": { + "field": "m_vecLocalTop", + "type": 21 + }, + "PlayerMountPositionTop": { + "field": "m_vecPlayerMountPositionTop", + "type": 21 + }, + "PlayerMountPositionBottom": { + "field": "m_vecPlayerMountPositionBottom", + "type": 21 + }, + "AutoRideSpeed": { + "field": "m_flAutoRideSpeed", + "type": 8 + }, + "Disabled": { + "field": "m_bDisabled", + "type": 10 + }, + "FakeLadder": { + "field": "m_bFakeLadder", + "type": 10 + }, + "HasSlack": { + "field": "m_bHasSlack", + "type": 10 + }, + "SurfacePropName": { + "field": "m_surfacePropName", + "type": 13 + }, + "OnPlayerGotOnLadder": { + "field": "m_OnPlayerGotOnLadder", + "classname": "CEntityIOOutput", + "type": 16 + }, + "OnPlayerGotOffLadder": { + "field": "m_OnPlayerGotOffLadder", + "classname": "CEntityIOOutput", + "type": 16 + }, + "Parent": { + "field": "CBaseModelEntity", + "type": 11 + } + }, + "CFuncLadderAlias_func_useableladder": { + "Parent": { + "field": "CFuncLadder", + "type": 11 + } + }, + "CFuncMonitor": { + "TargetCamera": { + "field": "m_targetCamera", + "type": 14 + }, + "ResolutionEnum": { + "field": "m_nResolutionEnum", + "type": 2 + }, + "RenderShadows": { + "field": "m_bRenderShadows", + "type": 10 + }, + "UseUniqueColorTarget": { + "field": "m_bUseUniqueColorTarget", + "type": 10 + }, + "BrushModelName": { + "field": "m_brushModelName", + "type": 14 + }, + "TargetCamera1": { + "field": "m_hTargetCamera", + "type": 17, + "classname": "CBaseEntity" + }, + "Enabled": { + "field": "m_bEnabled", + "type": 10 + }, + "Draw3DSkybox": { + "field": "m_bDraw3DSkybox", + "type": 10 + }, + "StartEnabled": { + "field": "m_bStartEnabled", + "type": 10 + }, + "Parent": { + "field": "CFuncBrush", + "type": 11 + } + }, + "CFuncMoveLinear": { + "AuthoredPosition": { + "field": "m_authoredPosition", + "type": 6 + }, + "MoveEntitySpace": { + "field": "m_angMoveEntitySpace", + "type": 20 + }, + "MoveDirParentSpace": { + "field": "m_vecMoveDirParentSpace", + "type": 21 + }, + "SoundStart": { + "field": "m_soundStart", + "type": 13 + }, + "SoundStop": { + "field": "m_soundStop", + "type": 13 + }, + "CurrentSound": { + "field": "m_currentSound", + "type": 13 + }, + "BlockDamage": { + "field": "m_flBlockDamage", + "type": 8 + }, + "StartPosition": { + "field": "m_flStartPosition", + "type": 8 + }, + "OnFullyOpen": { + "field": "m_OnFullyOpen", + "classname": "CEntityIOOutput", + "type": 16 + }, + "OnFullyClosed": { + "field": "m_OnFullyClosed", + "classname": "CEntityIOOutput", + "type": 16 + }, + "CreateMovableNavMesh": { + "field": "m_bCreateMovableNavMesh", + "type": 10 + }, + "CreateNavObstacle": { + "field": "m_bCreateNavObstacle", + "type": 10 + }, + "Parent": { + "field": "CBaseToggle", + "type": 11 + } + }, + "CFuncMoveLinearAlias_momentary_door": { + "Parent": { + "field": "CFuncMoveLinear", + "type": 11 + } + }, + "CFuncMover": { + "CreateMovableNavMesh": { + "field": "m_bCreateMovableNavMesh", + "type": 10 + }, + "PathName": { + "field": "m_iszPathName", + "type": 13 + }, + "PathMover": { + "field": "m_hPathMover", + "type": 17, + "classname": "CPathMover" + }, + "PathNodeStart": { + "field": "m_iszPathNodeStart", + "type": 13 + }, + "MoveType": { + "field": "m_eMoveType", + "type": 6 + }, + "IsReversing": { + "field": "m_bIsReversing", + "type": 10 + }, + "Target": { + "field": "m_vTarget", + "type": 21 + }, + "StartSpeed": { + "field": "m_flStartSpeed", + "type": 8 + }, + "PathLocation": { + "field": "m_flPathLocation", + "type": 8 + }, + "T": { + "field": "m_flT", + "type": 8 + }, + "CurrentNodeIndex": { + "field": "m_nCurrentNodeIndex", + "type": 2 + }, + "PreviousNodeIndex": { + "field": "m_nPreviousNodeIndex", + "type": 2 + }, + "FixedOrientation": { + "field": "m_bFixedOrientation", + "type": 10 + }, + "FixedPitch": { + "field": "m_bFixedPitch", + "type": 10 + }, + "SolidType": { + "field": "m_eSolidType", + "type": 4 + }, + "IsMoving": { + "field": "m_bIsMoving", + "type": 10 + }, + "TimeToReachMaxSpeed": { + "field": "m_flTimeToReachMaxSpeed", + "type": 8 + }, + "DistanceToReachMaxSpeed": { + "field": "m_flDistanceToReachMaxSpeed", + "type": 8 + }, + "TimeToReachZeroSpeed": { + "field": "m_flTimeToReachZeroSpeed", + "type": 8 + }, + "DistanceToReachZeroSpeed": { + "field": "m_flDistanceToReachZeroSpeed", + "type": 8 + }, + "TimeMovementStart": { + "field": "m_flTimeMovementStart", + "type": 8 + }, + "TimeMovementStop": { + "field": "m_flTimeMovementStop", + "type": 8 + }, + "StopAtNode": { + "field": "m_hStopAtNode", + "type": 17, + "classname": "CMoverPathNode" + }, + "PathLocationToBeginStop": { + "field": "m_flPathLocationToBeginStop", + "type": 8 + }, + "StartForwardSound": { + "field": "m_iszStartForwardSound", + "type": 13 + }, + "LoopForwardSound": { + "field": "m_iszLoopForwardSound", + "type": 13 + }, + "StopForwardSound": { + "field": "m_iszStopForwardSound", + "type": 13 + }, + "StartReverseSound": { + "field": "m_iszStartReverseSound", + "type": 13 + }, + "LoopReverseSound": { + "field": "m_iszLoopReverseSound", + "type": 13 + }, + "StopReverseSound": { + "field": "m_iszStopReverseSound", + "type": 13 + }, + "ArriveAtDestinationSound": { + "field": "m_iszArriveAtDestinationSound", + "type": 13 + }, + "OnMovementEnd": { + "field": "m_OnMovementEnd", + "classname": "CEntityIOOutput", + "type": 16 + }, + "StartAtEnd": { + "field": "m_bStartAtEnd", + "type": 10 + }, + "OrientationUpdate": { + "field": "m_eOrientationUpdate", + "type": 6 + }, + "TimeStartOrientationChange": { + "field": "m_flTimeStartOrientationChange", + "type": 8 + }, + "TimeToBlendToNewOrientation": { + "field": "m_flTimeToBlendToNewOrientation", + "type": 8 + }, + "DurationBlendToNewOrientationRan": { + "field": "m_flDurationBlendToNewOrientationRan", + "type": 8 + }, + "Parent": { + "field": "CBaseModelEntity", + "type": 11 + } + }, + "CFuncMoverAPI": {}, + "CFuncNavBlocker": { + "Disabled": { + "field": "m_bDisabled", + "type": 10 + }, + "BlockedTeamNumber": { + "field": "m_nBlockedTeamNumber", + "type": 2 + }, + "Parent": { + "field": "CBaseModelEntity", + "type": 11 + } + }, + "CFuncNavObstruction": { + "Disabled": { + "field": "m_bDisabled", + "type": 10 + }, + "Parent": { + "field": "CBaseModelEntity", + "type": 11 + } + }, + "CFuncPlat": { + "Noise": { + "field": "m_sNoise", + "type": 13 + }, + "Parent": { + "field": "CBasePlatTrain", + "type": 11 + } + }, + "CFuncPlatRot": { + "End": { + "field": "m_end", + "type": 20 + }, + "Start": { + "field": "m_start", + "type": 20 + }, + "Parent": { + "field": "CFuncPlat", + "type": 11 + } + }, + "CFuncPropRespawnZone": { + "Parent": { + "field": "CBaseEntity", + "type": 11 + } + }, + "CFuncRotating": { + "OnStopped": { + "field": "m_OnStopped", + "classname": "CEntityIOOutput", + "type": 16 + }, + "OnStarted": { + "field": "m_OnStarted", + "classname": "CEntityIOOutput", + "type": 16 + }, + "OnReachedStart": { + "field": "m_OnReachedStart", + "classname": "CEntityIOOutput", + "type": 16 + }, + "LocalRotationVector": { + "field": "m_localRotationVector", + "type": 21 + }, + "FanFriction": { + "field": "m_flFanFriction", + "type": 8 + }, + "Attenuation": { + "field": "m_flAttenuation", + "type": 8 + }, + "Volume": { + "field": "m_flVolume", + "type": 8 + }, + "TargetSpeed": { + "field": "m_flTargetSpeed", + "type": 8 + }, + "MaxSpeed": { + "field": "m_flMaxSpeed", + "type": 8 + }, + "BlockDamage": { + "field": "m_flBlockDamage", + "type": 8 + }, + "NoiseRunning": { + "field": "m_NoiseRunning", + "type": 13 + }, + "Reversed": { + "field": "m_bReversed", + "type": 10 + }, + "AccelDecel": { + "field": "m_bAccelDecel", + "type": 10 + }, + "PrevLocalAngles": { + "field": "m_prevLocalAngles", + "type": 20 + }, + "Start": { + "field": "m_angStart", + "type": 20 + }, + "StopAtStartPos": { + "field": "m_bStopAtStartPos", + "type": 10 + }, + "ClientOrigin": { + "field": "m_vecClientOrigin", + "type": 21 + }, + "ClientAngles": { + "field": "m_vecClientAngles", + "type": 20 + }, + "Parent": { + "field": "CBaseModelEntity", + "type": 11 + } + }, + "CFuncShatterglass": { + "ShatterGlassShards": { + "field": "m_vecShatterGlassShards", + "type": 57 + }, + "PanelSize": { + "field": "m_PanelSize", + "type": 22 + }, + "LastShatterSoundEmitTime": { + "field": "m_flLastShatterSoundEmitTime", + "type": 8 + }, + "LastCleanupTime": { + "field": "m_flLastCleanupTime", + "type": 8 + }, + "InitAtTime": { + "field": "m_flInitAtTime", + "type": 8 + }, + "GlassThickness": { + "field": "m_flGlassThickness", + "type": 8 + }, + "SpawnInvulnerability": { + "field": "m_flSpawnInvulnerability", + "type": 8 + }, + "BreakSilent": { + "field": "m_bBreakSilent", + "type": 10 + }, + "BreakShardless": { + "field": "m_bBreakShardless", + "type": 10 + }, + "Broken": { + "field": "m_bBroken", + "type": 10 + }, + "GlassNavIgnore": { + "field": "m_bGlassNavIgnore", + "type": 10 + }, + "GlassInFrame": { + "field": "m_bGlassInFrame", + "type": 10 + }, + "StartBroken": { + "field": "m_bStartBroken", + "type": 10 + }, + "InitialDamageType": { + "field": "m_iInitialDamageType", + "type": 4 + }, + "DamagePositioningEntityName01": { + "field": "m_szDamagePositioningEntityName01", + "type": 13 + }, + "DamagePositioningEntityName02": { + "field": "m_szDamagePositioningEntityName02", + "type": 13 + }, + "DamagePositioningEntityName03": { + "field": "m_szDamagePositioningEntityName03", + "type": 13 + }, + "DamagePositioningEntityName04": { + "field": "m_szDamagePositioningEntityName04", + "type": 13 + }, + "InitialDamagePositions": { + "field": "m_vInitialDamagePositions", + "type": 63 + }, + "ExtraDamagePositions": { + "field": "m_vExtraDamagePositions", + "type": 63 + }, + "InitialPanelVertices": { + "field": "m_vInitialPanelVertices", + "type": 65 + }, + "OnBroken": { + "field": "m_OnBroken", + "classname": "CEntityIOOutput", + "type": 16 + }, + "SurfaceType": { + "field": "m_iSurfaceType", + "type": 4 + }, + "Parent": { + "field": "CBaseModelEntity", + "type": 11 + } + }, + "CFuncTankTrain": { + "OnDeath": { + "field": "m_OnDeath", + "classname": "CEntityIOOutput", + "type": 16 + }, + "Parent": { + "field": "CFuncTrackTrain", + "type": 11 + } + }, + "CFuncTimescale": { + "DesiredTimescale": { + "field": "m_flDesiredTimescale", + "type": 8 + }, + "Acceleration": { + "field": "m_flAcceleration", + "type": 8 + }, + "MinBlendRate": { + "field": "m_flMinBlendRate", + "type": 8 + }, + "BlendDeltaMultiplier": { + "field": "m_flBlendDeltaMultiplier", + "type": 8 + }, + "IsStarted": { + "field": "m_isStarted", + "type": 10 + }, + "Parent": { + "field": "CBaseEntity", + "type": 11 + } + }, + "CFuncTrackAuto": { + "Parent": { + "field": "CFuncTrackChange", + "type": 11 + } + }, + "CFuncTrackChange": { + "TrackTop": { + "field": "m_trackTop", + "classname": "CPathTrack", + "type": 24 + }, + "TrackBottom": { + "field": "m_trackBottom", + "classname": "CPathTrack", + "type": 24 + }, + "Train": { + "field": "m_train", + "classname": "CFuncTrackTrain", + "type": 24 + }, + "TrackTopName": { + "field": "m_trackTopName", + "type": 13 + }, + "TrackBottomName": { + "field": "m_trackBottomName", + "type": 13 + }, + "TrainName": { + "field": "m_trainName", + "type": 13 + }, + "Code": { + "field": "m_code", + "type": 6 + }, + "TargetState": { + "field": "m_targetState", + "type": 2 + }, + "Use": { + "field": "m_use", + "type": 2 + }, + "Parent": { + "field": "CFuncPlatRot", + "type": 11 + } + }, + "CFuncTrackTrain": { + "Ppath": { + "field": "m_ppath", + "type": 17, + "classname": "CPathTrack" + }, + "Length": { + "field": "m_length", + "type": 8 + }, + "PosPrev": { + "field": "m_vPosPrev", + "type": 21 + }, + "Prev": { + "field": "m_angPrev", + "type": 20 + }, + "ControlMins": { + "field": "m_controlMins", + "type": 21 + }, + "ControlMaxs": { + "field": "m_controlMaxs", + "type": 21 + }, + "LastBlockPos": { + "field": "m_lastBlockPos", + "type": 21 + }, + "LastBlockTick": { + "field": "m_lastBlockTick", + "type": 2 + }, + "Volume": { + "field": "m_flVolume", + "type": 8 + }, + "Bank": { + "field": "m_flBank", + "type": 8 + }, + "OldSpeed": { + "field": "m_oldSpeed", + "type": 8 + }, + "BlockDamage": { + "field": "m_flBlockDamage", + "type": 8 + }, + "Height": { + "field": "m_height", + "type": 8 + }, + "MaxSpeed": { + "field": "m_maxSpeed", + "type": 8 + }, + "Dir": { + "field": "m_dir", + "type": 8 + }, + "SoundMove": { + "field": "m_iszSoundMove", + "type": 13 + }, + "SoundMovePing": { + "field": "m_iszSoundMovePing", + "type": 13 + }, + "SoundStart": { + "field": "m_iszSoundStart", + "type": 13 + }, + "SoundStop": { + "field": "m_iszSoundStop", + "type": 13 + }, + "StrPathTarget": { + "field": "m_strPathTarget", + "type": 13 + }, + "MoveSoundMinDuration": { + "field": "m_flMoveSoundMinDuration", + "type": 8 + }, + "MoveSoundMaxDuration": { + "field": "m_flMoveSoundMaxDuration", + "type": 8 + }, + "NextMoveSoundTime": { + "field": "m_flNextMoveSoundTime", + "type": 8 + }, + "MoveSoundMinPitch": { + "field": "m_flMoveSoundMinPitch", + "type": 8 + }, + "MoveSoundMaxPitch": { + "field": "m_flMoveSoundMaxPitch", + "type": 8 + }, + "OrientationType": { + "field": "m_eOrientationType", + "type": 6 + }, + "VelocityType": { + "field": "m_eVelocityType", + "type": 6 + }, + "OnStart": { + "field": "m_OnStart", + "classname": "CEntityIOOutput", + "type": 16 + }, + "OnNext": { + "field": "m_OnNext", + "classname": "CEntityIOOutput", + "type": 16 + }, + "OnArrivedAtDestinationNode": { + "field": "m_OnArrivedAtDestinationNode", + "classname": "CEntityIOOutput", + "type": 16 + }, + "ManualSpeedChanges": { + "field": "m_bManualSpeedChanges", + "type": 10 + }, + "DesiredSpeed": { + "field": "m_flDesiredSpeed", + "type": 8 + }, + "SpeedChangeTime": { + "field": "m_flSpeedChangeTime", + "type": 8 + }, + "AccelSpeed": { + "field": "m_flAccelSpeed", + "type": 8 + }, + "DecelSpeed": { + "field": "m_flDecelSpeed", + "type": 8 + }, + "AccelToSpeed": { + "field": "m_bAccelToSpeed", + "type": 10 + }, + "NextMPSoundTime": { + "field": "m_flNextMPSoundTime", + "type": 8 + }, + "Parent": { + "field": "CBaseModelEntity", + "type": 11 + } + }, + "CFuncTrain": { + "CurrentTarget": { + "field": "m_hCurrentTarget", + "type": 17, + "classname": "CBaseEntity" + }, + "Activated": { + "field": "m_activated", + "type": 10 + }, + "Enemy": { + "field": "m_hEnemy", + "type": 17, + "classname": "CBaseEntity" + }, + "BlockDamage": { + "field": "m_flBlockDamage", + "type": 8 + }, + "NextBlockTime": { + "field": "m_flNextBlockTime", + "type": 8 + }, + "LastTarget": { + "field": "m_iszLastTarget", + "type": 13 + }, + "Parent": { + "field": "CBasePlatTrain", + "type": 11 + } + }, + "CFuncTrainControls": { + "Parent": { + "field": "CBaseModelEntity", + "type": 11 + } + }, + "CFuncVPhysicsClip": { + "Disabled": { + "field": "m_bDisabled", + "type": 10 + }, + "Parent": { + "field": "CBaseModelEntity", + "type": 11 + } + }, + "CFuncVehicleClip": { + "Parent": { + "field": "CBaseModelEntity", + "type": 11 + } + }, + "CFuncWall": { + "State": { + "field": "m_nState", + "type": 2 + }, + "Parent": { + "field": "CBaseModelEntity", + "type": 11 + } + }, + "CFuncWallToggle": { + "Parent": { + "field": "CFuncWall", + "type": 11 + } + }, + "CGameChoreoServices": { + "Owner": { + "field": "m_hOwner", + "type": 17, + "classname": "CBaseAnimGraph" + }, + "ScriptedSequence": { + "field": "m_hScriptedSequence", + "type": 17, + "classname": "CScriptedSequence" + }, + "TimeStartedState": { + "field": "m_flTimeStartedState", + "type": 8 + }, + "Parent": { + "field": "IChoreoServices", + "type": 11 + } + }, + "CGameEnd": { + "Parent": { + "field": "CRulePointEntity", + "type": 11 + } + }, + "CGameGibManager": { + "AllowNewGibs": { + "field": "m_bAllowNewGibs", + "type": 10 + }, + "CurrentMaxPieces": { + "field": "m_iCurrentMaxPieces", + "type": 2 + }, + "MaxPieces": { + "field": "m_iMaxPieces", + "type": 2 + }, + "LastFrame": { + "field": "m_iLastFrame", + "type": 2 + }, + "Parent": { + "field": "CBaseEntity", + "type": 11 + } + }, + "CGameMoney": { + "OnMoneySpent": { + "field": "m_OnMoneySpent", + "classname": "CEntityIOOutput", + "type": 16 + }, + "OnMoneySpentFail": { + "field": "m_OnMoneySpentFail", + "classname": "CEntityIOOutput", + "type": 16 + }, + "Money": { + "field": "m_nMoney", + "type": 2 + }, + "StrAwardText": { + "field": "m_strAwardText", + "type": 14 + }, + "Parent": { + "field": "CRulePointEntity", + "type": 11 + } + }, + "CGamePlayerEquip": { + "Parent": { + "field": "CRulePointEntity", + "type": 11 + } + }, + "CGamePlayerZone": { + "OnPlayerInZone": { + "field": "m_OnPlayerInZone", + "classname": "CEntityIOOutput", + "type": 16 + }, + "OnPlayerOutZone": { + "field": "m_OnPlayerOutZone", + "classname": "CEntityIOOutput", + "type": 16 + }, + "Parent": { + "field": "CRuleBrushEntity", + "type": 11 + } + }, + "CGameRules": { + "__pChainEntity": { + "field": "__m_pChainEntity", + "classname": "CNetworkVarChainer", + "type": 16 + }, + "QuestName": { + "field": "m_szQuestName", + "type": 15, + "size": 128 + }, + "QuestPhase": { + "field": "m_nQuestPhase", + "type": 2 + }, + "TotalPausedTicks": { + "field": "m_nTotalPausedTicks", + "type": 2 + }, + "PauseStartTick": { + "field": "m_nPauseStartTick", + "type": 2 + }, + "GamePaused": { + "field": "m_bGamePaused", + "type": 10 + } + }, + "CGameRulesProxy": { + "Parent": { + "field": "CBaseEntity", + "type": 11 + } + }, + "CGameScriptedMoveData": { + "AccumulatedRootMotion": { + "field": "m_vAccumulatedRootMotion", + "type": 21 + }, + "Dest": { + "field": "m_vDest", + "type": 21 + }, + "Src": { + "field": "m_vSrc", + "type": 21 + }, + "Src1": { + "field": "m_angSrc", + "type": 20 + }, + "Dst": { + "field": "m_angDst", + "type": 20 + }, + "Current": { + "field": "m_angCurrent", + "type": 20 + }, + "DestEntity": { + "field": "m_hDestEntity", + "type": 17, + "classname": "CBaseEntity" + }, + "LockedSpeed": { + "field": "m_flLockedSpeed", + "type": 8 + }, + "AngRate": { + "field": "m_flAngRate", + "type": 8 + }, + "Duration": { + "field": "m_flDuration", + "type": 8 + }, + "StartTime": { + "field": "m_flStartTime", + "type": 8 + }, + "Active": { + "field": "m_bActive", + "type": 10 + }, + "TeleportOnEnd": { + "field": "m_bTeleportOnEnd", + "type": 10 + }, + "IgnoreRotation": { + "field": "m_bIgnoreRotation", + "type": 10 + }, + "Type": { + "field": "m_nType", + "type": 6 + }, + "Success": { + "field": "m_bSuccess", + "type": 10 + }, + "ForcedCrouchState": { + "field": "m_nForcedCrouchState", + "type": 6 + }, + "IgnoreCollisions": { + "field": "m_bIgnoreCollisions", + "type": 10 + } + }, + "CGameScriptedMoveDef_t": { + "Type": { + "field": "m_nType", + "type": 6 + }, + "DestOffset": { + "field": "m_vDestOffset", + "type": 21 + }, + "DestEntity": { + "field": "m_hDestEntity", + "type": 17, + "classname": "CBaseEntity" + }, + "Dest": { + "field": "m_angDest", + "type": 20 + }, + "Duration": { + "field": "m_flDuration", + "type": 8 + }, + "AngRate": { + "field": "m_flAngRate", + "type": 8 + } + }, + "CGameText": { + "Message": { + "field": "m_iszMessage", + "type": 13 + }, + "TextParms": { + "field": "m_textParms", + "classname": "hudtextparms_t", + "type": 16 + }, + "Parent": { + "field": "CRulePointEntity", + "type": 11 + } + }, + "CGenericConstraint": { + "LinearMotionX": { + "field": "m_nLinearMotionX", + "type": 6 + }, + "LinearMotionY": { + "field": "m_nLinearMotionY", + "type": 6 + }, + "LinearMotionZ": { + "field": "m_nLinearMotionZ", + "type": 6 + }, + "LinearFrequencyX": { + "field": "m_flLinearFrequencyX", + "type": 8 + }, + "LinearFrequencyY": { + "field": "m_flLinearFrequencyY", + "type": 8 + }, + "LinearFrequencyZ": { + "field": "m_flLinearFrequencyZ", + "type": 8 + }, + "LinearDampingRatioX": { + "field": "m_flLinearDampingRatioX", + "type": 8 + }, + "LinearDampingRatioY": { + "field": "m_flLinearDampingRatioY", + "type": 8 + }, + "LinearDampingRatioZ": { + "field": "m_flLinearDampingRatioZ", + "type": 8 + }, + "MaxLinearImpulseX": { + "field": "m_flMaxLinearImpulseX", + "type": 8 + }, + "MaxLinearImpulseY": { + "field": "m_flMaxLinearImpulseY", + "type": 8 + }, + "MaxLinearImpulseZ": { + "field": "m_flMaxLinearImpulseZ", + "type": 8 + }, + "BreakAfterTimeX": { + "field": "m_flBreakAfterTimeX", + "type": 8 + }, + "BreakAfterTimeY": { + "field": "m_flBreakAfterTimeY", + "type": 8 + }, + "BreakAfterTimeZ": { + "field": "m_flBreakAfterTimeZ", + "type": 8 + }, + "BreakAfterTimeStartTimeX": { + "field": "m_flBreakAfterTimeStartTimeX", + "type": 8 + }, + "BreakAfterTimeStartTimeY": { + "field": "m_flBreakAfterTimeStartTimeY", + "type": 8 + }, + "BreakAfterTimeStartTimeZ": { + "field": "m_flBreakAfterTimeStartTimeZ", + "type": 8 + }, + "BreakAfterTimeThresholdX": { + "field": "m_flBreakAfterTimeThresholdX", + "type": 8 + }, + "BreakAfterTimeThresholdY": { + "field": "m_flBreakAfterTimeThresholdY", + "type": 8 + }, + "BreakAfterTimeThresholdZ": { + "field": "m_flBreakAfterTimeThresholdZ", + "type": 8 + }, + "NotifyForceX": { + "field": "m_flNotifyForceX", + "type": 8 + }, + "NotifyForceY": { + "field": "m_flNotifyForceY", + "type": 8 + }, + "NotifyForceZ": { + "field": "m_flNotifyForceZ", + "type": 8 + }, + "NotifyForceMinTimeX": { + "field": "m_flNotifyForceMinTimeX", + "type": 8 + }, + "NotifyForceMinTimeY": { + "field": "m_flNotifyForceMinTimeY", + "type": 8 + }, + "NotifyForceMinTimeZ": { + "field": "m_flNotifyForceMinTimeZ", + "type": 8 + }, + "NotifyForceLastTimeX": { + "field": "m_flNotifyForceLastTimeX", + "type": 8 + }, + "NotifyForceLastTimeY": { + "field": "m_flNotifyForceLastTimeY", + "type": 8 + }, + "NotifyForceLastTimeZ": { + "field": "m_flNotifyForceLastTimeZ", + "type": 8 + }, + "AxisNotifiedX": { + "field": "m_bAxisNotifiedX", + "type": 10 + }, + "AxisNotifiedY": { + "field": "m_bAxisNotifiedY", + "type": 10 + }, + "AxisNotifiedZ": { + "field": "m_bAxisNotifiedZ", + "type": 10 + }, + "AngularMotionX": { + "field": "m_nAngularMotionX", + "type": 6 + }, + "AngularMotionY": { + "field": "m_nAngularMotionY", + "type": 6 + }, + "AngularMotionZ": { + "field": "m_nAngularMotionZ", + "type": 6 + }, + "AngularFrequencyX": { + "field": "m_flAngularFrequencyX", + "type": 8 + }, + "AngularFrequencyY": { + "field": "m_flAngularFrequencyY", + "type": 8 + }, + "AngularFrequencyZ": { + "field": "m_flAngularFrequencyZ", + "type": 8 + }, + "AngularDampingRatioX": { + "field": "m_flAngularDampingRatioX", + "type": 8 + }, + "AngularDampingRatioY": { + "field": "m_flAngularDampingRatioY", + "type": 8 + }, + "AngularDampingRatioZ": { + "field": "m_flAngularDampingRatioZ", + "type": 8 + }, + "MaxAngularImpulseX": { + "field": "m_flMaxAngularImpulseX", + "type": 8 + }, + "MaxAngularImpulseY": { + "field": "m_flMaxAngularImpulseY", + "type": 8 + }, + "MaxAngularImpulseZ": { + "field": "m_flMaxAngularImpulseZ", + "type": 8 + }, + "NotifyForceReachedX": { + "field": "m_NotifyForceReachedX", + "classname": "CEntityIOOutput", + "type": 16 + }, + "NotifyForceReachedY": { + "field": "m_NotifyForceReachedY", + "classname": "CEntityIOOutput", + "type": 16 + }, + "NotifyForceReachedZ": { + "field": "m_NotifyForceReachedZ", + "classname": "CEntityIOOutput", + "type": 16 + }, + "Parent": { + "field": "CPhysConstraint", + "type": 11 + } + }, + "CGradientFog": { + "FogStartDistance": { + "field": "m_flFogStartDistance", + "type": 8 + }, + "FogEndDistance": { + "field": "m_flFogEndDistance", + "type": 8 + }, + "HeightFogEnabled": { + "field": "m_bHeightFogEnabled", + "type": 10 + }, + "FogStartHeight": { + "field": "m_flFogStartHeight", + "type": 8 + }, + "FogEndHeight": { + "field": "m_flFogEndHeight", + "type": 8 + }, + "FarZ": { + "field": "m_flFarZ", + "type": 8 + }, + "FogMaxOpacity": { + "field": "m_flFogMaxOpacity", + "type": 8 + }, + "FogFalloffExponent": { + "field": "m_flFogFalloffExponent", + "type": 8 + }, + "FogVerticalExponent": { + "field": "m_flFogVerticalExponent", + "type": 8 + }, + "FogColor": { + "field": "m_fogColor", + "type": 19 + }, + "FogStrength": { + "field": "m_flFogStrength", + "type": 8 + }, + "FadeTime": { + "field": "m_flFadeTime", + "type": 8 + }, + "StartDisabled": { + "field": "m_bStartDisabled", + "type": 10 + }, + "IsEnabled": { + "field": "m_bIsEnabled", + "type": 10 + }, + "GradientFogNeedsTextures": { + "field": "m_bGradientFogNeedsTextures", + "type": 10 + }, + "Parent": { + "field": "CBaseEntity", + "type": 11 + } + }, + "CGunTarget": { + "On": { + "field": "m_on", + "type": 10 + }, + "TargetEnt": { + "field": "m_hTargetEnt", + "type": 17, + "classname": "CBaseEntity" + }, + "OnDeath": { + "field": "m_OnDeath", + "classname": "CEntityIOOutput", + "type": 16 + }, + "Parent": { + "field": "CBaseToggle", + "type": 11 + } + }, + "CHEGrenade": { + "Parent": { + "field": "CBaseCSGrenade", + "type": 11 + } + }, + "CHEGrenadeProjectile": { + "Parent": { + "field": "CBaseCSGrenadeProjectile", + "type": 11 + } + }, + "CHandleDummy": { + "Parent": { + "field": "CBaseEntity", + "type": 11 + } + }, + "CHandleTest": { + "Handle": { + "field": "m_Handle", + "type": 17, + "classname": "CBaseEntity" + }, + "SendHandle": { + "field": "m_bSendHandle", + "type": 10 + }, + "Parent": { + "field": "CBaseEntity", + "type": 11 + } + }, + "CHostage": { + "OnHostageBeginGrab": { + "field": "m_OnHostageBeginGrab", + "classname": "CEntityIOOutput", + "type": 16 + }, + "OnFirstPickedUp": { + "field": "m_OnFirstPickedUp", + "classname": "CEntityIOOutput", + "type": 16 + }, + "OnDroppedNotRescued": { + "field": "m_OnDroppedNotRescued", + "classname": "CEntityIOOutput", + "type": 16 + }, + "OnRescued": { + "field": "m_OnRescued", + "classname": "CEntityIOOutput", + "type": 16 + }, + "EntitySpottedState": { + "field": "m_entitySpottedState", + "classname": "EntitySpottedState_t", + "type": 16 + }, + "SpotRules": { + "field": "m_nSpotRules", + "type": 2 + }, + "UiHostageSpawnExclusionGroupMask": { + "field": "m_uiHostageSpawnExclusionGroupMask", + "type": 6 + }, + "HostageSpawnRandomFactor": { + "field": "m_nHostageSpawnRandomFactor", + "type": 6 + }, + "Remove": { + "field": "m_bRemove", + "type": 10 + }, + "Vel": { + "field": "m_vel", + "type": 21 + }, + "IsRescued": { + "field": "m_isRescued", + "type": 10 + }, + "JumpedThisFrame": { + "field": "m_jumpedThisFrame", + "type": 10 + }, + "HostageState": { + "field": "m_nHostageState", + "type": 2 + }, + "Leader": { + "field": "m_leader", + "type": 17, + "classname": "CBaseEntity" + }, + "LastLeader": { + "field": "m_lastLeader", + "type": 17, + "classname": "CCSPlayerPawnBase" + }, + "ReuseTimer": { + "field": "m_reuseTimer", + "classname": "CountdownTimer", + "type": 16 + }, + "HasBeenUsed": { + "field": "m_hasBeenUsed", + "type": 10 + }, + "Accel": { + "field": "m_accel", + "type": 21 + }, + "IsRunning": { + "field": "m_isRunning", + "type": 10 + }, + "IsCrouching": { + "field": "m_isCrouching", + "type": 10 + }, + "JumpTimer": { + "field": "m_jumpTimer", + "classname": "CountdownTimer", + "type": 16 + }, + "IsWaitingForLeader": { + "field": "m_isWaitingForLeader", + "type": 10 + }, + "RepathTimer": { + "field": "m_repathTimer", + "classname": "CountdownTimer", + "type": 16 + }, + "InhibitDoorTimer": { + "field": "m_inhibitDoorTimer", + "classname": "CountdownTimer", + "type": 16 + }, + "InhibitObstacleAvoidanceTimer": { + "field": "m_inhibitObstacleAvoidanceTimer", + "classname": "CountdownTimer", + "type": 16 + }, + "WiggleTimer": { + "field": "m_wiggleTimer", + "classname": "CountdownTimer", + "type": 16 + }, + "IsAdjusted": { + "field": "m_isAdjusted", + "type": 10 + }, + "HandsHaveBeenCut": { + "field": "m_bHandsHaveBeenCut", + "type": 10 + }, + "HostageGrabber": { + "field": "m_hHostageGrabber", + "type": 17, + "classname": "CCSPlayerPawn" + }, + "LastGrabTime": { + "field": "m_fLastGrabTime", + "type": 8 + }, + "PositionWhenStartedDroppingToGround": { + "field": "m_vecPositionWhenStartedDroppingToGround", + "type": 21 + }, + "GrabbedPos": { + "field": "m_vecGrabbedPos", + "type": 21 + }, + "RescueStartTime": { + "field": "m_flRescueStartTime", + "type": 8 + }, + "GrabSuccessTime": { + "field": "m_flGrabSuccessTime", + "type": 8 + }, + "DropStartTime": { + "field": "m_flDropStartTime", + "type": 8 + }, + "ApproachRewardPayouts": { + "field": "m_nApproachRewardPayouts", + "type": 2 + }, + "PickupEventCount": { + "field": "m_nPickupEventCount", + "type": 2 + }, + "SpawnGroundPos": { + "field": "m_vecSpawnGroundPos", + "type": 21 + }, + "HostageResetPosition": { + "field": "m_vecHostageResetPosition", + "type": 21 + }, + "Parent": { + "field": "CHostageExpresserShim", + "type": 11 + } + }, + "CHostageAlias_info_hostage_spawn": { + "Parent": { + "field": "CHostage", + "type": 11 + } + }, + "CHostageCarriableProp": { + "Parent": { + "field": "CBaseAnimGraph", + "type": 11 + } + }, + "CHostageExpresserShim": { + "Expresser": { + "field": "m_pExpresser", + "classname": "CAI_Expresser", + "type": 24 + }, + "Parent": { + "field": "CBaseCombatCharacter", + "type": 11 + } + }, + "CIncendiaryGrenade": { + "Parent": { + "field": "CMolotovGrenade", + "type": 11 + } + }, + "CInferno": { + "FirePositions": { + "field": "m_firePositions", + "type": 42, + "size": 64 + }, + "FireParentPositions": { + "field": "m_fireParentPositions", + "type": 42, + "size": 64 + }, + "FireIsBurning": { + "field": "m_bFireIsBurning", + "type": 39, + "size": 64 + }, + "BurnNormal": { + "field": "m_BurnNormal", + "type": 42, + "size": 64 + }, + "FireCount": { + "field": "m_fireCount", + "type": 2 + }, + "InfernoType": { + "field": "m_nInfernoType", + "type": 2 + }, + "FireEffectTickBegin": { + "field": "m_nFireEffectTickBegin", + "type": 2 + }, + "FireLifetime": { + "field": "m_nFireLifetime", + "type": 8 + }, + "InPostEffectTime": { + "field": "m_bInPostEffectTime", + "type": 10 + }, + "FiresExtinguishCount": { + "field": "m_nFiresExtinguishCount", + "type": 2 + }, + "WasCreatedInSmoke": { + "field": "m_bWasCreatedInSmoke", + "type": 10 + }, + "Extent": { + "field": "m_extent", + "classname": "Extent", + "type": 16 + }, + "DamageTimer": { + "field": "m_damageTimer", + "classname": "CountdownTimer", + "type": 16 + }, + "DamageRampTimer": { + "field": "m_damageRampTimer", + "classname": "CountdownTimer", + "type": 16 + }, + "SplashVelocity": { + "field": "m_splashVelocity", + "type": 21 + }, + "InitialSplashVelocity": { + "field": "m_InitialSplashVelocity", + "type": 21 + }, + "StartPos": { + "field": "m_startPos", + "type": 21 + }, + "OriginalSpawnLocation": { + "field": "m_vecOriginalSpawnLocation", + "type": 21 + }, + "ActiveTimer": { + "field": "m_activeTimer", + "classname": "IntervalTimer", + "type": 16 + }, + "FireSpawnOffset": { + "field": "m_fireSpawnOffset", + "type": 2 + }, + "MaxFlames": { + "field": "m_nMaxFlames", + "type": 2 + }, + "SpreadCount": { + "field": "m_nSpreadCount", + "type": 2 + }, + "BookkeepingTimer": { + "field": "m_BookkeepingTimer", + "classname": "CountdownTimer", + "type": 16 + }, + "NextSpreadTimer": { + "field": "m_NextSpreadTimer", + "classname": "CountdownTimer", + "type": 16 + }, + "SourceItemDefIndex": { + "field": "m_nSourceItemDefIndex", + "type": 5 + }, + "Parent": { + "field": "CBaseModelEntity", + "type": 11 + } + }, + "CInfoData": { + "Parent": { + "field": "CServerOnlyEntity", + "type": 11 + } + }, + "CInfoDeathmatchSpawn": { + "Parent": { + "field": "SpawnPoint", + "type": 11 + } + }, + "CInfoGameEventProxy": { + "EventName": { + "field": "m_iszEventName", + "type": 13 + }, + "Range": { + "field": "m_flRange", + "type": 8 + }, + "Parent": { + "field": "CPointEntity", + "type": 11 + } + }, + "CInfoInstructorHintBombTargetA": { + "Parent": { + "field": "CPointEntity", + "type": 11 + } + }, + "CInfoInstructorHintBombTargetB": { + "Parent": { + "field": "CPointEntity", + "type": 11 + } + }, + "CInfoInstructorHintHostageRescueZone": { + "Parent": { + "field": "CPointEntity", + "type": 11 + } + }, + "CInfoInstructorHintTarget": { + "Parent": { + "field": "CPointEntity", + "type": 11 + } + }, + "CInfoLadderDismount": { + "Parent": { + "field": "CBaseEntity", + "type": 11 + } + }, + "CInfoLandmark": { + "Parent": { + "field": "CPointEntity", + "type": 11 + } + }, + "CInfoPlayerCounterterrorist": { + "Parent": { + "field": "SpawnPoint", + "type": 11 + } + }, + "CInfoPlayerStart": { + "Disabled": { + "field": "m_bDisabled", + "type": 10 + }, + "IsMaster": { + "field": "m_bIsMaster", + "type": 10 + }, + "Parent": { + "field": "CPointEntity", + "type": 11 + } + }, + "CInfoPlayerTerrorist": { + "Parent": { + "field": "SpawnPoint", + "type": 11 + } + }, + "CInfoSpawnGroupLandmark": { + "Parent": { + "field": "CPointEntity", + "type": 11 + } + }, + "CInfoSpawnGroupLoadUnload": { + "OnSpawnGroupLoadStarted": { + "field": "m_OnSpawnGroupLoadStarted", + "classname": "CEntityIOOutput", + "type": 16 + }, + "OnSpawnGroupLoadFinished": { + "field": "m_OnSpawnGroupLoadFinished", + "classname": "CEntityIOOutput", + "type": 16 + }, + "OnSpawnGroupUnloadStarted": { + "field": "m_OnSpawnGroupUnloadStarted", + "classname": "CEntityIOOutput", + "type": 16 + }, + "OnSpawnGroupUnloadFinished": { + "field": "m_OnSpawnGroupUnloadFinished", + "classname": "CEntityIOOutput", + "type": 16 + }, + "SpawnGroupName": { + "field": "m_iszSpawnGroupName", + "type": 13 + }, + "SpawnGroupFilterName": { + "field": "m_iszSpawnGroupFilterName", + "type": 13 + }, + "LandmarkName": { + "field": "m_iszLandmarkName", + "type": 13 + }, + "FixedSpawnGroupName": { + "field": "m_sFixedSpawnGroupName", + "type": 14 + }, + "TimeoutInterval": { + "field": "m_flTimeoutInterval", + "type": 8 + }, + "StreamingStarted": { + "field": "m_bStreamingStarted", + "type": 10 + }, + "UnloadingStarted": { + "field": "m_bUnloadingStarted", + "type": 10 + }, + "Parent": { + "field": "CLogicalEntity", + "type": 11 + } + }, + "CInfoTargetServerOnly": { + "Parent": { + "field": "CServerOnlyPointEntity", + "type": 11 + } + }, + "CInfoTeleportDestination": { + "Parent": { + "field": "CPointEntity", + "type": 11 + } + }, + "CInfoVisibilityBox": { + "Mode": { + "field": "m_nMode", + "type": 2 + }, + "BoxSize": { + "field": "m_vBoxSize", + "type": 21 + }, + "Enabled": { + "field": "m_bEnabled", + "type": 10 + }, + "Parent": { + "field": "CBaseEntity", + "type": 11 + } + }, + "CInstancedSceneEntity": { + "Owner": { + "field": "m_hOwner", + "type": 17, + "classname": "CBaseEntity" + }, + "HadOwner": { + "field": "m_bHadOwner", + "type": 10 + }, + "PostSpeakDelay": { + "field": "m_flPostSpeakDelay", + "type": 8 + }, + "PreDelay": { + "field": "m_flPreDelay", + "type": 8 + }, + "IsBackground": { + "field": "m_bIsBackground", + "type": 10 + }, + "RemoveOnCompletion": { + "field": "m_bRemoveOnCompletion", + "type": 10 + }, + "Target": { + "field": "m_hTarget", + "type": 17, + "classname": "CBaseEntity" + }, + "Parent": { + "field": "CSceneEntity", + "type": 11 + } + }, + "CInstructorEventEntity": { + "Name": { + "field": "m_iszName", + "type": 13 + }, + "HintTargetEntity": { + "field": "m_iszHintTargetEntity", + "type": 13 + }, + "TargetPlayer": { + "field": "m_hTargetPlayer", + "type": 17, + "classname": "CBasePlayerPawn" + }, + "Parent": { + "field": "CPointEntity", + "type": 11 + } + }, + "CIronSightController": { + "IronSightAvailable": { + "field": "m_bIronSightAvailable", + "type": 10 + }, + "IronSightAmount": { + "field": "m_flIronSightAmount", + "type": 8 + }, + "IronSightAmountGained": { + "field": "m_flIronSightAmountGained", + "type": 8 + }, + "IronSightAmountBiased": { + "field": "m_flIronSightAmountBiased", + "type": 8 + } + }, + "CItem": { + "OnPlayerTouch": { + "field": "m_OnPlayerTouch", + "classname": "CEntityIOOutput", + "type": 16 + }, + "OnPlayerPickup": { + "field": "m_OnPlayerPickup", + "classname": "CEntityIOOutput", + "type": 16 + }, + "ActivateWhenAtRest": { + "field": "m_bActivateWhenAtRest", + "type": 10 + }, + "OnCacheInteraction": { + "field": "m_OnCacheInteraction", + "classname": "CEntityIOOutput", + "type": 16 + }, + "OnGlovePulled": { + "field": "m_OnGlovePulled", + "classname": "CEntityIOOutput", + "type": 16 + }, + "OriginalSpawnOrigin": { + "field": "m_vOriginalSpawnOrigin", + "type": 21 + }, + "OriginalSpawnAngles": { + "field": "m_vOriginalSpawnAngles", + "type": 20 + }, + "PhysStartAsleep": { + "field": "m_bPhysStartAsleep", + "type": 10 + }, + "Parent": { + "field": "CBaseAnimGraph", + "type": 11 + } + }, + "CItemAssaultSuit": { + "Parent": { + "field": "CItem", + "type": 11 + } + }, + "CItemDefuser": { + "EntitySpottedState": { + "field": "m_entitySpottedState", + "classname": "EntitySpottedState_t", + "type": 16 + }, + "SpotRules": { + "field": "m_nSpotRules", + "type": 2 + }, + "Parent": { + "field": "CItem", + "type": 11 + } + }, + "CItemDefuserAlias_item_defuser": { + "Parent": { + "field": "CItemDefuser", + "type": 11 + } + }, + "CItemDogtags": { + "OwningPlayer": { + "field": "m_OwningPlayer", + "type": 17, + "classname": "CCSPlayerPawn" + }, + "KillingPlayer": { + "field": "m_KillingPlayer", + "type": 17, + "classname": "CCSPlayerPawn" + }, + "Parent": { + "field": "CItem", + "type": 11 + } + }, + "CItemHeavyAssaultSuit": { + "Parent": { + "field": "CItemAssaultSuit", + "type": 11 + } + }, + "CItemKevlar": { + "Parent": { + "field": "CItem", + "type": 11 + } + }, + "CItemSoda": { + "Parent": { + "field": "CBaseAnimGraph", + "type": 11 + } + }, + "CItem_Healthshot": { + "Parent": { + "field": "CWeaponBaseItem", + "type": 11 + } + }, + "CKeepUpright": { + "WorldGoalAxis": { + "field": "m_worldGoalAxis", + "type": 21 + }, + "LocalTestAxis": { + "field": "m_localTestAxis", + "type": 21 + }, + "NameAttach": { + "field": "m_nameAttach", + "type": 13 + }, + "AttachedObject": { + "field": "m_attachedObject", + "type": 17, + "classname": "CBaseEntity" + }, + "AngularLimit": { + "field": "m_angularLimit", + "type": 8 + }, + "Active": { + "field": "m_bActive", + "type": 10 + }, + "DampAllRotation": { + "field": "m_bDampAllRotation", + "type": 10 + }, + "Parent": { + "field": "CPointEntity", + "type": 11 + } + }, + "CKnife": { + "FirstAttack": { + "field": "m_bFirstAttack", + "type": 10 + }, + "Parent": { + "field": "CCSWeaponBase", + "type": 11 + } + }, + "CLightDirectionalEntity": { + "Parent": { + "field": "CLightEntity", + "type": 11 + } + }, + "CLightEntity": { + "CLightComponent": { + "field": "m_CLightComponent", + "classname": "CLightComponent", + "type": 24 + }, + "Parent": { + "field": "CBaseModelEntity", + "type": 11 + } + }, + "CLightEnvironmentEntity": { + "Parent": { + "field": "CLightDirectionalEntity", + "type": 11 + } + }, + "CLightGlow": { + "HorizontalSize": { + "field": "m_nHorizontalSize", + "type": 6 + }, + "VerticalSize": { + "field": "m_nVerticalSize", + "type": 6 + }, + "MinDist": { + "field": "m_nMinDist", + "type": 6 + }, + "MaxDist": { + "field": "m_nMaxDist", + "type": 6 + }, + "OuterMaxDist": { + "field": "m_nOuterMaxDist", + "type": 6 + }, + "GlowProxySize": { + "field": "m_flGlowProxySize", + "type": 8 + }, + "HDRColorScale": { + "field": "m_flHDRColorScale", + "type": 8 + }, + "Parent": { + "field": "CBaseModelEntity", + "type": 11 + } + }, + "CLightOrthoEntity": { + "Parent": { + "field": "CLightEntity", + "type": 11 + } + }, + "CLightSpotEntity": { + "Parent": { + "field": "CLightEntity", + "type": 11 + } + }, + "CLogicAchievement": { + "Disabled": { + "field": "m_bDisabled", + "type": 10 + }, + "AchievementEventID": { + "field": "m_iszAchievementEventID", + "type": 13 + }, + "OnFired": { + "field": "m_OnFired", + "classname": "CEntityIOOutput", + "type": 16 + }, + "Parent": { + "field": "CLogicalEntity", + "type": 11 + } + }, + "CLogicActiveAutosave": { + "TriggerHitPoints": { + "field": "m_TriggerHitPoints", + "type": 2 + }, + "TimeToTrigger": { + "field": "m_flTimeToTrigger", + "type": 8 + }, + "StartTime": { + "field": "m_flStartTime", + "type": 8 + }, + "DangerousTime": { + "field": "m_flDangerousTime", + "type": 8 + }, + "Parent": { + "field": "CLogicAutosave", + "type": 11 + } + }, + "CLogicAuto": { + "OnMapSpawn": { + "field": "m_OnMapSpawn", + "classname": "CEntityIOOutput", + "type": 16 + }, + "OnDemoMapSpawn": { + "field": "m_OnDemoMapSpawn", + "classname": "CEntityIOOutput", + "type": 16 + }, + "OnNewGame": { + "field": "m_OnNewGame", + "classname": "CEntityIOOutput", + "type": 16 + }, + "OnLoadGame": { + "field": "m_OnLoadGame", + "classname": "CEntityIOOutput", + "type": 16 + }, + "OnMapTransition": { + "field": "m_OnMapTransition", + "classname": "CEntityIOOutput", + "type": 16 + }, + "OnBackgroundMap": { + "field": "m_OnBackgroundMap", + "classname": "CEntityIOOutput", + "type": 16 + }, + "OnMultiNewMap": { + "field": "m_OnMultiNewMap", + "classname": "CEntityIOOutput", + "type": 16 + }, + "OnMultiNewRound": { + "field": "m_OnMultiNewRound", + "classname": "CEntityIOOutput", + "type": 16 + }, + "OnVREnabled": { + "field": "m_OnVREnabled", + "classname": "CEntityIOOutput", + "type": 16 + }, + "OnVRNotEnabled": { + "field": "m_OnVRNotEnabled", + "classname": "CEntityIOOutput", + "type": 16 + }, + "Globalstate": { + "field": "m_globalstate", + "type": 13 + }, + "Parent": { + "field": "CBaseEntity", + "type": 11 + } + }, + "CLogicAutosave": { + "ForceNewLevelUnit": { + "field": "m_bForceNewLevelUnit", + "type": 10 + }, + "MinHitPoints": { + "field": "m_minHitPoints", + "type": 2 + }, + "MinHitPointsToCommit": { + "field": "m_minHitPointsToCommit", + "type": 2 + }, + "Parent": { + "field": "CLogicalEntity", + "type": 11 + } + }, + "CLogicBranch": { + "InValue": { + "field": "m_bInValue", + "type": 10 + }, + "OnTrue": { + "field": "m_OnTrue", + "classname": "CEntityIOOutput", + "type": 16 + }, + "OnFalse": { + "field": "m_OnFalse", + "classname": "CEntityIOOutput", + "type": 16 + }, + "Parent": { + "field": "CLogicalEntity", + "type": 11 + } + }, + "CLogicBranchList": { + "LogicBranchNames": { + "field": "m_nLogicBranchNames", + "type": 26, + "size": 16 + }, + "OnAllTrue": { + "field": "m_OnAllTrue", + "classname": "CEntityIOOutput", + "type": 16 + }, + "OnAllFalse": { + "field": "m_OnAllFalse", + "classname": "CEntityIOOutput", + "type": 16 + }, + "OnMixed": { + "field": "m_OnMixed", + "classname": "CEntityIOOutput", + "type": 16 + }, + "Parent": { + "field": "CLogicalEntity", + "type": 11 + } + }, + "CLogicCase": { + "Case": { + "field": "m_nCase", + "type": 26, + "size": 32 + }, + "ShuffleCases": { + "field": "m_nShuffleCases", + "type": 2 + }, + "LastShuffleCase": { + "field": "m_nLastShuffleCase", + "type": 2 + }, + "UchShuffleCaseMap": { + "field": "m_uchShuffleCaseMap", + "type": 33, + "size": 32 + }, + "OnCase": { + "field": "m_OnCase", + "type": 45, + "size": 32 + }, + "Parent": { + "field": "CLogicalEntity", + "type": 11 + } + }, + "CLogicCollisionPair": { + "NameAttach1": { + "field": "m_nameAttach1", + "type": 13 + }, + "NameAttach2": { + "field": "m_nameAttach2", + "type": 13 + }, + "SupportMultipleEntitiesWithSameName": { + "field": "m_supportMultipleEntitiesWithSameName", + "type": 10 + }, + "Disabled": { + "field": "m_disabled", + "type": 10 + }, + "Succeeded": { + "field": "m_succeeded", + "type": 10 + }, + "Parent": { + "field": "CLogicalEntity", + "type": 11 + } + }, + "CLogicCompare": { + "InValue": { + "field": "m_flInValue", + "type": 8 + }, + "CompareValue": { + "field": "m_flCompareValue", + "type": 8 + }, + "Parent": { + "field": "CLogicalEntity", + "type": 11 + } + }, + "CLogicDistanceAutosave": { + "TargetEntity": { + "field": "m_iszTargetEntity", + "type": 13 + }, + "DistanceToPlayer": { + "field": "m_flDistanceToPlayer", + "type": 8 + }, + "ForceNewLevelUnit": { + "field": "m_bForceNewLevelUnit", + "type": 10 + }, + "CheckCough": { + "field": "m_bCheckCough", + "type": 10 + }, + "ThinkDangerous": { + "field": "m_bThinkDangerous", + "type": 10 + }, + "DangerousTime": { + "field": "m_flDangerousTime", + "type": 8 + }, + "Parent": { + "field": "CLogicalEntity", + "type": 11 + } + }, + "CLogicDistanceCheck": { + "EntityA": { + "field": "m_iszEntityA", + "type": 13 + }, + "EntityB": { + "field": "m_iszEntityB", + "type": 13 + }, + "Zone1Distance": { + "field": "m_flZone1Distance", + "type": 8 + }, + "Zone2Distance": { + "field": "m_flZone2Distance", + "type": 8 + }, + "InZone1": { + "field": "m_InZone1", + "classname": "CEntityIOOutput", + "type": 16 + }, + "InZone2": { + "field": "m_InZone2", + "classname": "CEntityIOOutput", + "type": 16 + }, + "InZone3": { + "field": "m_InZone3", + "classname": "CEntityIOOutput", + "type": 16 + }, + "Parent": { + "field": "CLogicalEntity", + "type": 11 + } + }, + "CLogicEventListener": { + "StrEventName": { + "field": "m_strEventName", + "type": 14 + }, + "IsEnabled": { + "field": "m_bIsEnabled", + "type": 10 + }, + "Team": { + "field": "m_nTeam", + "type": 2 + }, + "OnEventFired": { + "field": "m_OnEventFired", + "classname": "CEntityIOOutput", + "type": 16 + }, + "Parent": { + "field": "CLogicalEntity", + "type": 11 + } + }, + "CLogicGameEvent": { + "EventName": { + "field": "m_iszEventName", + "type": 13 + }, + "Parent": { + "field": "CLogicalEntity", + "type": 11 + } + }, + "CLogicGameEventListener": { + "OnEventFired": { + "field": "m_OnEventFired", + "classname": "CEntityIOOutput", + "type": 16 + }, + "GameEventName": { + "field": "m_iszGameEventName", + "type": 13 + }, + "GameEventItem": { + "field": "m_iszGameEventItem", + "type": 13 + }, + "Enabled": { + "field": "m_bEnabled", + "type": 10 + }, + "StartDisabled": { + "field": "m_bStartDisabled", + "type": 10 + }, + "Parent": { + "field": "CLogicalEntity", + "type": 11 + } + }, + "CLogicLineToEntity": { + "SourceName": { + "field": "m_SourceName", + "type": 13 + }, + "StartEntity": { + "field": "m_StartEntity", + "type": 17, + "classname": "CBaseEntity" + }, + "EndEntity": { + "field": "m_EndEntity", + "type": 17, + "classname": "CBaseEntity" + }, + "Parent": { + "field": "CLogicalEntity", + "type": 11 + } + }, + "CLogicMeasureMovement": { + "StrMeasureTarget": { + "field": "m_strMeasureTarget", + "type": 13 + }, + "StrMeasureReference": { + "field": "m_strMeasureReference", + "type": 13 + }, + "StrTargetReference": { + "field": "m_strTargetReference", + "type": 13 + }, + "MeasureTarget": { + "field": "m_hMeasureTarget", + "type": 17, + "classname": "CBaseEntity" + }, + "MeasureReference": { + "field": "m_hMeasureReference", + "type": 17, + "classname": "CBaseEntity" + }, + "Target": { + "field": "m_hTarget", + "type": 17, + "classname": "CBaseEntity" + }, + "TargetReference": { + "field": "m_hTargetReference", + "type": 17, + "classname": "CBaseEntity" + }, + "Scale": { + "field": "m_flScale", + "type": 8 + }, + "MeasureType": { + "field": "m_nMeasureType", + "type": 2 + }, + "Parent": { + "field": "CLogicalEntity", + "type": 11 + } + }, + "CLogicNPCCounter": { + "OnMinCountAll": { + "field": "m_OnMinCountAll", + "classname": "CEntityIOOutput", + "type": 16 + }, + "OnMaxCountAll": { + "field": "m_OnMaxCountAll", + "classname": "CEntityIOOutput", + "type": 16 + }, + "OnMinCount_1": { + "field": "m_OnMinCount_1", + "classname": "CEntityIOOutput", + "type": 16 + }, + "OnMaxCount_1": { + "field": "m_OnMaxCount_1", + "classname": "CEntityIOOutput", + "type": 16 + }, + "OnMinCount_2": { + "field": "m_OnMinCount_2", + "classname": "CEntityIOOutput", + "type": 16 + }, + "OnMaxCount_2": { + "field": "m_OnMaxCount_2", + "classname": "CEntityIOOutput", + "type": 16 + }, + "OnMinCount_3": { + "field": "m_OnMinCount_3", + "classname": "CEntityIOOutput", + "type": 16 + }, + "OnMaxCount_3": { + "field": "m_OnMaxCount_3", + "classname": "CEntityIOOutput", + "type": 16 + }, + "Source": { + "field": "m_hSource", + "type": 17, + "classname": "CEntityInstance" + }, + "SourceEntityName": { + "field": "m_iszSourceEntityName", + "type": 13 + }, + "DistanceMax": { + "field": "m_flDistanceMax", + "type": 8 + }, + "Disabled": { + "field": "m_bDisabled", + "type": 10 + }, + "MinCountAll": { + "field": "m_nMinCountAll", + "type": 2 + }, + "MaxCountAll": { + "field": "m_nMaxCountAll", + "type": 2 + }, + "MinFactorAll": { + "field": "m_nMinFactorAll", + "type": 2 + }, + "MaxFactorAll": { + "field": "m_nMaxFactorAll", + "type": 2 + }, + "NPCClassname_1": { + "field": "m_iszNPCClassname_1", + "type": 13 + }, + "NPCState_1": { + "field": "m_nNPCState_1", + "type": 2 + }, + "InvertState_1": { + "field": "m_bInvertState_1", + "type": 10 + }, + "MinCount_1": { + "field": "m_nMinCount_1", + "type": 2 + }, + "MaxCount_1": { + "field": "m_nMaxCount_1", + "type": 2 + }, + "MinFactor_1": { + "field": "m_nMinFactor_1", + "type": 2 + }, + "MaxFactor_1": { + "field": "m_nMaxFactor_1", + "type": 2 + }, + "DefaultDist_1": { + "field": "m_flDefaultDist_1", + "type": 8 + }, + "NPCClassname_2": { + "field": "m_iszNPCClassname_2", + "type": 13 + }, + "NPCState_2": { + "field": "m_nNPCState_2", + "type": 2 + }, + "InvertState_2": { + "field": "m_bInvertState_2", + "type": 10 + }, + "MinCount_2": { + "field": "m_nMinCount_2", + "type": 2 + }, + "MaxCount_2": { + "field": "m_nMaxCount_2", + "type": 2 + }, + "MinFactor_2": { + "field": "m_nMinFactor_2", + "type": 2 + }, + "MaxFactor_2": { + "field": "m_nMaxFactor_2", + "type": 2 + }, + "DefaultDist_2": { + "field": "m_flDefaultDist_2", + "type": 8 + }, + "NPCClassname_3": { + "field": "m_iszNPCClassname_3", + "type": 13 + }, + "NPCState_3": { + "field": "m_nNPCState_3", + "type": 2 + }, + "InvertState_3": { + "field": "m_bInvertState_3", + "type": 10 + }, + "MinCount_3": { + "field": "m_nMinCount_3", + "type": 2 + }, + "MaxCount_3": { + "field": "m_nMaxCount_3", + "type": 2 + }, + "MinFactor_3": { + "field": "m_nMinFactor_3", + "type": 2 + }, + "MaxFactor_3": { + "field": "m_nMaxFactor_3", + "type": 2 + }, + "DefaultDist_3": { + "field": "m_flDefaultDist_3", + "type": 8 + }, + "Parent": { + "field": "CBaseEntity", + "type": 11 + } + }, + "CLogicNPCCounterAABB": { + "DistanceOuterMins": { + "field": "m_vDistanceOuterMins", + "type": 21 + }, + "DistanceOuterMaxs": { + "field": "m_vDistanceOuterMaxs", + "type": 21 + }, + "OuterMins": { + "field": "m_vOuterMins", + "type": 21 + }, + "OuterMaxs": { + "field": "m_vOuterMaxs", + "type": 21 + }, + "Parent": { + "field": "CLogicNPCCounter", + "type": 11 + } + }, + "CLogicNPCCounterOBB": { + "Parent": { + "field": "CLogicNPCCounterAABB", + "type": 11 + } + }, + "CLogicNavigation": { + "IsOn": { + "field": "m_isOn", + "type": 10 + }, + "NavProperty": { + "field": "m_navProperty", + "type": 6 + }, + "Parent": { + "field": "CLogicalEntity", + "type": 11 + } + }, + "CLogicPlayerProxy": { + "Player": { + "field": "m_hPlayer", + "type": 17, + "classname": "CBaseEntity" + }, + "PlayerHasAmmo": { + "field": "m_PlayerHasAmmo", + "classname": "CEntityIOOutput", + "type": 16 + }, + "PlayerHasNoAmmo": { + "field": "m_PlayerHasNoAmmo", + "classname": "CEntityIOOutput", + "type": 16 + }, + "PlayerDied": { + "field": "m_PlayerDied", + "classname": "CEntityIOOutput", + "type": 16 + }, + "Parent": { + "field": "CLogicalEntity", + "type": 11 + } + }, + "CLogicProximity": { + "Parent": { + "field": "CPointEntity", + "type": 11 + } + }, + "CLogicScript": { + "Parent": { + "field": "CPointEntity", + "type": 11 + } + }, + "CMapVetoPickController": { + "PlayedIntroVcd": { + "field": "m_bPlayedIntroVcd", + "type": 10 + }, + "NeedToPlayFiveSecondsRemaining": { + "field": "m_bNeedToPlayFiveSecondsRemaining", + "type": 10 + }, + "DblPreMatchDraftSequenceTime": { + "field": "m_dblPreMatchDraftSequenceTime", + "type": 9 + }, + "PreMatchDraftStateChanged": { + "field": "m_bPreMatchDraftStateChanged", + "type": 10 + }, + "DraftType": { + "field": "m_nDraftType", + "type": 2 + }, + "TeamWinningCoinToss": { + "field": "m_nTeamWinningCoinToss", + "type": 2 + }, + "TeamWithFirstChoice": { + "field": "m_nTeamWithFirstChoice", + "type": 31, + "size": 64 + }, + "VoteMapIdsList": { + "field": "m_nVoteMapIdsList", + "type": 31, + "size": 7 + }, + "AccountIDs": { + "field": "m_nAccountIDs", + "type": 31, + "size": 64 + }, + "MapId0": { + "field": "m_nMapId0", + "type": 31, + "size": 64 + }, + "MapId1": { + "field": "m_nMapId1", + "type": 31, + "size": 64 + }, + "MapId2": { + "field": "m_nMapId2", + "type": 31, + "size": 64 + }, + "MapId3": { + "field": "m_nMapId3", + "type": 31, + "size": 64 + }, + "MapId4": { + "field": "m_nMapId4", + "type": 31, + "size": 64 + }, + "MapId5": { + "field": "m_nMapId5", + "type": 31, + "size": 64 + }, + "StartingSide0": { + "field": "m_nStartingSide0", + "type": 31, + "size": 64 + }, + "CurrentPhase": { + "field": "m_nCurrentPhase", + "type": 2 + }, + "PhaseStartTick": { + "field": "m_nPhaseStartTick", + "type": 2 + }, + "PhaseDurationTicks": { + "field": "m_nPhaseDurationTicks", + "type": 2 + }, + "Parent": { + "field": "CBaseEntity", + "type": 11 + } + }, + "CMarkupVolume": { + "Disabled": { + "field": "m_bDisabled", + "type": 10 + }, + "Parent": { + "field": "CBaseModelEntity", + "type": 11 + } + }, + "CMarkupVolumeTagged": { + "IsGroup": { + "field": "m_bIsGroup", + "type": 10 + }, + "GroupByPrefab": { + "field": "m_bGroupByPrefab", + "type": 10 + }, + "GroupByVolume": { + "field": "m_bGroupByVolume", + "type": 10 + }, + "GroupOtherGroups": { + "field": "m_bGroupOtherGroups", + "type": 10 + }, + "IsInGroup": { + "field": "m_bIsInGroup", + "type": 10 + }, + "Parent": { + "field": "CMarkupVolume", + "type": 11 + } + }, + "CMarkupVolumeTagged_Nav": { + "Parent": { + "field": "CMarkupVolumeTagged", + "type": 11 + } + }, + "CMarkupVolumeTagged_NavGame": { + "FloodFillAttribute": { + "field": "m_bFloodFillAttribute", + "type": 10 + }, + "Parent": { + "field": "CMarkupVolumeWithRef", + "type": 11 + } + }, + "CMarkupVolumeWithRef": { + "UseRef": { + "field": "m_bUseRef", + "type": 10 + }, + "RefPos": { + "field": "m_vRefPos", + "type": 21 + }, + "RefDot": { + "field": "m_flRefDot", + "type": 8 + }, + "Parent": { + "field": "CMarkupVolumeTagged", + "type": 11 + } + }, + "CMathColorBlend": { + "InMin": { + "field": "m_flInMin", + "type": 8 + }, + "InMax": { + "field": "m_flInMax", + "type": 8 + }, + "OutColor1": { + "field": "m_OutColor1", + "type": 19 + }, + "OutColor2": { + "field": "m_OutColor2", + "type": 19 + }, + "Parent": { + "field": "CLogicalEntity", + "type": 11 + } + }, + "CMathCounter": { + "Min": { + "field": "m_flMin", + "type": 8 + }, + "Max": { + "field": "m_flMax", + "type": 8 + }, + "HitMin": { + "field": "m_bHitMin", + "type": 10 + }, + "HitMax": { + "field": "m_bHitMax", + "type": 10 + }, + "Disabled": { + "field": "m_bDisabled", + "type": 10 + }, + "OnHitMin": { + "field": "m_OnHitMin", + "classname": "CEntityIOOutput", + "type": 16 + }, + "OnHitMax": { + "field": "m_OnHitMax", + "classname": "CEntityIOOutput", + "type": 16 + }, + "OnChangedFromMin": { + "field": "m_OnChangedFromMin", + "classname": "CEntityIOOutput", + "type": 16 + }, + "OnChangedFromMax": { + "field": "m_OnChangedFromMax", + "classname": "CEntityIOOutput", + "type": 16 + }, + "Parent": { + "field": "CLogicalEntity", + "type": 11 + } + }, + "CMathRemap": { + "InMin": { + "field": "m_flInMin", + "type": 8 + }, + "InMax": { + "field": "m_flInMax", + "type": 8 + }, + "Out1": { + "field": "m_flOut1", + "type": 8 + }, + "Out2": { + "field": "m_flOut2", + "type": 8 + }, + "OldInValue": { + "field": "m_flOldInValue", + "type": 8 + }, + "Enabled": { + "field": "m_bEnabled", + "type": 10 + }, + "OnRoseAboveMin": { + "field": "m_OnRoseAboveMin", + "classname": "CEntityIOOutput", + "type": 16 + }, + "OnRoseAboveMax": { + "field": "m_OnRoseAboveMax", + "classname": "CEntityIOOutput", + "type": 16 + }, + "OnFellBelowMin": { + "field": "m_OnFellBelowMin", + "classname": "CEntityIOOutput", + "type": 16 + }, + "OnFellBelowMax": { + "field": "m_OnFellBelowMax", + "classname": "CEntityIOOutput", + "type": 16 + }, + "Parent": { + "field": "CLogicalEntity", + "type": 11 + } + }, + "CMelee": { + "Parent": { + "field": "CCSWeaponBase", + "type": 11 + } + }, + "CMessage": { + "Message": { + "field": "m_iszMessage", + "type": 13 + }, + "MessageVolume": { + "field": "m_MessageVolume", + "type": 8 + }, + "MessageAttenuation": { + "field": "m_MessageAttenuation", + "type": 2 + }, + "Radius": { + "field": "m_Radius", + "type": 8 + }, + "Noise": { + "field": "m_sNoise", + "type": 13 + }, + "OnShowMessage": { + "field": "m_OnShowMessage", + "classname": "CEntityIOOutput", + "type": 16 + }, + "Parent": { + "field": "CPointEntity", + "type": 11 + } + }, + "CMessageEntity": { + "Radius": { + "field": "m_radius", + "type": 2 + }, + "MessageText": { + "field": "m_messageText", + "type": 13 + }, + "DrawText": { + "field": "m_drawText", + "type": 10 + }, + "DeveloperOnly": { + "field": "m_bDeveloperOnly", + "type": 10 + }, + "Enabled": { + "field": "m_bEnabled", + "type": 10 + }, + "Parent": { + "field": "CPointEntity", + "type": 11 + } + }, + "CModelPointEntity": { + "Parent": { + "field": "CBaseModelEntity", + "type": 11 + } + }, + "CMolotovGrenade": { + "Parent": { + "field": "CBaseCSGrenade", + "type": 11 + } + }, + "CMolotovProjectile": { + "IsIncGrenade": { + "field": "m_bIsIncGrenade", + "type": 10 + }, + "Detonated": { + "field": "m_bDetonated", + "type": 10 + }, + "StillTimer": { + "field": "m_stillTimer", + "classname": "IntervalTimer", + "type": 16 + }, + "HasBouncedOffPlayer": { + "field": "m_bHasBouncedOffPlayer", + "type": 10 + }, + "Parent": { + "field": "CBaseCSGrenadeProjectile", + "type": 11 + } + }, + "CMomentaryRotButton": { + "OnUnpressed": { + "field": "m_OnUnpressed", + "classname": "CEntityIOOutput", + "type": 16 + }, + "OnFullyOpen": { + "field": "m_OnFullyOpen", + "classname": "CEntityIOOutput", + "type": 16 + }, + "OnFullyClosed": { + "field": "m_OnFullyClosed", + "classname": "CEntityIOOutput", + "type": 16 + }, + "OnReachedPosition": { + "field": "m_OnReachedPosition", + "classname": "CEntityIOOutput", + "type": 16 + }, + "LastUsed": { + "field": "m_lastUsed", + "type": 2 + }, + "Start": { + "field": "m_start", + "type": 20 + }, + "End": { + "field": "m_end", + "type": 20 + }, + "IdealYaw": { + "field": "m_IdealYaw", + "type": 8 + }, + "Noise": { + "field": "m_sNoise", + "type": 13 + }, + "UpdateTarget": { + "field": "m_bUpdateTarget", + "type": 10 + }, + "Direction": { + "field": "m_direction", + "type": 2 + }, + "ReturnSpeed": { + "field": "m_returnSpeed", + "type": 8 + }, + "StartPosition": { + "field": "m_flStartPosition", + "type": 8 + }, + "Parent": { + "field": "CRotButton", + "type": 11 + } + }, + "CMotorController": { + "Speed": { + "field": "m_speed", + "type": 8 + }, + "MaxTorque": { + "field": "m_maxTorque", + "type": 8 + }, + "Axis": { + "field": "m_axis", + "type": 21 + }, + "InertiaFactor": { + "field": "m_inertiaFactor", + "type": 8 + } + }, + "CMoverPathNode": { + "InTangentLocal": { + "field": "m_vInTangentLocal", + "type": 21 + }, + "OutTangentLocal": { + "field": "m_vOutTangentLocal", + "type": 21 + }, + "ParentPathUniqueID": { + "field": "m_szParentPathUniqueID", + "type": 13 + }, + "OnPassThrough": { + "field": "m_OnPassThrough", + "classname": "CEntityIOOutput", + "type": 16 + }, + "OnPassThroughForward": { + "field": "m_OnPassThroughForward", + "classname": "CEntityIOOutput", + "type": 16 + }, + "OnPassThroughReverse": { + "field": "m_OnPassThroughReverse", + "classname": "CEntityIOOutput", + "type": 16 + }, + "Mover": { + "field": "m_hMover", + "type": 17, + "classname": "CPathMover" + }, + "Parent": { + "field": "CPointEntity", + "type": 11 + } + }, + "CMultiLightProxy": { + "LightNameFilter": { + "field": "m_iszLightNameFilter", + "type": 13 + }, + "LightClassFilter": { + "field": "m_iszLightClassFilter", + "type": 13 + }, + "LightRadiusFilter": { + "field": "m_flLightRadiusFilter", + "type": 8 + }, + "BrightnessDelta": { + "field": "m_flBrightnessDelta", + "type": 8 + }, + "PerformScreenFade": { + "field": "m_bPerformScreenFade", + "type": 10 + }, + "TargetBrightnessMultiplier": { + "field": "m_flTargetBrightnessMultiplier", + "type": 8 + }, + "CurrentBrightnessMultiplier": { + "field": "m_flCurrentBrightnessMultiplier", + "type": 8 + }, + "Parent": { + "field": "CLogicalEntity", + "type": 11 + } + }, + "CMultiSource": { + "RgEntities": { + "field": "m_rgEntities", + "type": 46, + "size": 32 + }, + "RgTriggered": { + "field": "m_rgTriggered", + "type": 31, + "size": 32 + }, + "OnTrigger": { + "field": "m_OnTrigger", + "classname": "CEntityIOOutput", + "type": 16 + }, + "Total": { + "field": "m_iTotal", + "type": 2 + }, + "Globalstate": { + "field": "m_globalstate", + "type": 13 + }, + "Parent": { + "field": "CLogicalEntity", + "type": 11 + } + }, + "CMultiplayRules": { + "Parent": { + "field": "CGameRules", + "type": 11 + } + }, + "CMultiplayer_Expresser": { + "AllowMultipleScenes": { + "field": "m_bAllowMultipleScenes", + "type": 10 + }, + "Parent": { + "field": "CAI_ExpresserWithFollowup", + "type": 11 + } + }, + "CNavLinkAreaEntity": { + "Width": { + "field": "m_flWidth", + "type": 8 + }, + "LocatorOffset": { + "field": "m_vLocatorOffset", + "type": 21 + }, + "LocatorAnglesOffset": { + "field": "m_qLocatorAnglesOffset", + "type": 20 + }, + "StrMovementForward": { + "field": "m_strMovementForward", + "type": 13 + }, + "StrMovementReverse": { + "field": "m_strMovementReverse", + "type": 13 + }, + "NavLinkIdForward": { + "field": "m_nNavLinkIdForward", + "type": 2 + }, + "NavLinkIdReverse": { + "field": "m_nNavLinkIdReverse", + "type": 2 + }, + "Enabled": { + "field": "m_bEnabled", + "type": 10 + }, + "StrFilterName": { + "field": "m_strFilterName", + "type": 13 + }, + "Filter": { + "field": "m_hFilter", + "type": 17, + "classname": "CBaseFilter" + }, + "OnNavLinkStart": { + "field": "m_OnNavLinkStart", + "classname": "CEntityIOOutput", + "type": 16 + }, + "OnNavLinkFinish": { + "field": "m_OnNavLinkFinish", + "classname": "CEntityIOOutput", + "type": 16 + }, + "IsTerminus": { + "field": "m_bIsTerminus", + "type": 10 + }, + "Parent": { + "field": "CPointEntity", + "type": 11 + } + }, + "CNavSpaceInfo": { + "CreateFlightSpace": { + "field": "m_bCreateFlightSpace", + "type": 10 + }, + "Parent": { + "field": "CPointEntity", + "type": 11 + } + }, + "CNavVolumeBreadthFirstSearch": { + "StartPos": { + "field": "m_vStartPos", + "type": 21 + }, + "SearchDist": { + "field": "m_flSearchDist", + "type": 8 + }, + "Parent": { + "field": "CNavVolumeCalculatedVector", + "type": 11 + } + }, + "CNavVolumeCalculatedVector": { + "Parent": { + "field": "CNavVolume", + "type": 11 + } + }, + "CNavVolumeMarkupVolume": { + "Parent": { + "field": "CNavVolume", + "type": 11 + } + }, + "CNavWalkable": { + "Parent": { + "field": "CPointEntity", + "type": 11 + } + }, + "CNullEntity": { + "Parent": { + "field": "CBaseEntity", + "type": 11 + } + }, + "COmniLight": { + "InnerAngle": { + "field": "m_flInnerAngle", + "type": 8 + }, + "OuterAngle": { + "field": "m_flOuterAngle", + "type": 8 + }, + "ShowLight": { + "field": "m_bShowLight", + "type": 10 + }, + "Parent": { + "field": "CBarnLight", + "type": 11 + } + }, + "COrnamentProp": { + "InitialOwner": { + "field": "m_initialOwner", + "type": 13 + }, + "Parent": { + "field": "CDynamicProp", + "type": 11 + } + }, + "CParticleSystem": { + "SnapshotFileName": { + "field": "m_szSnapshotFileName", + "type": 15, + "size": 512 + }, + "Active": { + "field": "m_bActive", + "type": 10 + }, + "Frozen": { + "field": "m_bFrozen", + "type": 10 + }, + "FreezeTransitionDuration": { + "field": "m_flFreezeTransitionDuration", + "type": 8 + }, + "StopType": { + "field": "m_nStopType", + "type": 2 + }, + "AnimateDuringGameplayPause": { + "field": "m_bAnimateDuringGameplayPause", + "type": 10 + }, + "StartTime": { + "field": "m_flStartTime", + "type": 8 + }, + "PreSimTime": { + "field": "m_flPreSimTime", + "type": 8 + }, + "ServerControlPoints": { + "field": "m_vServerControlPoints", + "type": 42, + "size": 4 + }, + "ServerControlPointAssignments": { + "field": "m_iServerControlPointAssignments", + "type": 33, + "size": 4 + }, + "ControlPointEnts": { + "field": "m_hControlPointEnts", + "type": 46, + "size": 64 + }, + "NoSave": { + "field": "m_bNoSave", + "type": 10 + }, + "NoFreeze": { + "field": "m_bNoFreeze", + "type": 10 + }, + "NoRamp": { + "field": "m_bNoRamp", + "type": 10 + }, + "StartActive": { + "field": "m_bStartActive", + "type": 10 + }, + "EffectName": { + "field": "m_iszEffectName", + "type": 13 + }, + "ControlPointNames": { + "field": "m_iszControlPointNames", + "type": 26, + "size": 64 + }, + "DataCP": { + "field": "m_nDataCP", + "type": 2 + }, + "DataCPValue": { + "field": "m_vecDataCPValue", + "type": 21 + }, + "TintCP": { + "field": "m_nTintCP", + "type": 2 + }, + "Tint": { + "field": "m_clrTint", + "type": 19 + }, + "Parent": { + "field": "CBaseModelEntity", + "type": 11 + } + }, + "CPathCorner": { + "Wait": { + "field": "m_flWait", + "type": 8 + }, + "Radius": { + "field": "m_flRadius", + "type": 8 + }, + "OnPass": { + "field": "m_OnPass", + "classname": "CEntityIOOutput", + "type": 16 + }, + "Parent": { + "field": "CPointEntity", + "type": 11 + } + }, + "CPathCornerCrash": { + "Parent": { + "field": "CPathCorner", + "type": 11 + } + }, + "CPathKeyFrame": { + "Origin": { + "field": "m_Origin", + "type": 21 + }, + "Angles": { + "field": "m_Angles", + "type": 20 + }, + "NextKey": { + "field": "m_iNextKey", + "type": 13 + }, + "NextTime": { + "field": "m_flNextTime", + "type": 8 + }, + "NextKey1": { + "field": "m_pNextKey", + "classname": "CPathKeyFrame", + "type": 24 + }, + "PrevKey": { + "field": "m_pPrevKey", + "classname": "CPathKeyFrame", + "type": 24 + }, + "MoveSpeed": { + "field": "m_flMoveSpeed", + "type": 8 + }, + "Parent": { + "field": "CLogicalEntity", + "type": 11 + } + }, + "CPathMover": { + "PathLength": { + "field": "m_flPathLength", + "type": 8 + }, + "ClosedLoop": { + "field": "m_bClosedLoop", + "type": 10 + }, + "Parent": { + "field": "CBaseEntity", + "type": 11 + } + }, + "CPathParticleRope": { + "StartActive": { + "field": "m_bStartActive", + "type": 10 + }, + "MaxSimulationTime": { + "field": "m_flMaxSimulationTime", + "type": 8 + }, + "EffectName": { + "field": "m_iszEffectName", + "type": 13 + }, + "PathNodes_Name": { + "field": "m_PathNodes_Name", + "type": 48 + }, + "ParticleSpacing": { + "field": "m_flParticleSpacing", + "type": 8 + }, + "Slack": { + "field": "m_flSlack", + "type": 8 + }, + "Radius": { + "field": "m_flRadius", + "type": 8 + }, + "ColorTint": { + "field": "m_ColorTint", + "type": 19 + }, + "EffectState": { + "field": "m_nEffectState", + "type": 2 + }, + "PathNodes_Position": { + "field": "m_PathNodes_Position", + "type": 63 + }, + "PathNodes_TangentIn": { + "field": "m_PathNodes_TangentIn", + "type": 63 + }, + "PathNodes_TangentOut": { + "field": "m_PathNodes_TangentOut", + "type": 63 + }, + "PathNodes_Color": { + "field": "m_PathNodes_Color", + "type": 63 + }, + "PathNodes_PinEnabled": { + "field": "m_PathNodes_PinEnabled", + "type": 66 + }, + "PathNodes_RadiusScale": { + "field": "m_PathNodes_RadiusScale", + "type": 59 + }, + "Parent": { + "field": "CBaseEntity", + "type": 11 + } + }, + "CPathParticleRopeAlias_path_particle_rope_clientside": { + "Parent": { + "field": "CPathParticleRope", + "type": 11 + } + }, + "CPathTrack": { + "Pnext": { + "field": "m_pnext", + "classname": "CPathTrack", + "type": 24 + }, + "Pprevious": { + "field": "m_pprevious", + "classname": "CPathTrack", + "type": 24 + }, + "Paltpath": { + "field": "m_paltpath", + "classname": "CPathTrack", + "type": 24 + }, + "Radius": { + "field": "m_flRadius", + "type": 8 + }, + "Length": { + "field": "m_length", + "type": 8 + }, + "AltName": { + "field": "m_altName", + "type": 13 + }, + "IterVal": { + "field": "m_nIterVal", + "type": 2 + }, + "OrientationType": { + "field": "m_eOrientationType", + "type": 6 + }, + "OnPass": { + "field": "m_OnPass", + "classname": "CEntityIOOutput", + "type": 16 + }, + "Parent": { + "field": "CPointEntity", + "type": 11 + } + }, + "CPhysBallSocket": { + "JointFriction": { + "field": "m_flJointFriction", + "type": 8 + }, + "EnableSwingLimit": { + "field": "m_bEnableSwingLimit", + "type": 10 + }, + "SwingLimit": { + "field": "m_flSwingLimit", + "type": 8 + }, + "EnableTwistLimit": { + "field": "m_bEnableTwistLimit", + "type": 10 + }, + "MinTwistAngle": { + "field": "m_flMinTwistAngle", + "type": 8 + }, + "MaxTwistAngle": { + "field": "m_flMaxTwistAngle", + "type": 8 + }, + "Parent": { + "field": "CPhysConstraint", + "type": 11 + } + }, + "CPhysBox": { + "DamageType": { + "field": "m_damageType", + "type": 2 + }, + "DamageToEnableMotion": { + "field": "m_damageToEnableMotion", + "type": 2 + }, + "ForceToEnableMotion": { + "field": "m_flForceToEnableMotion", + "type": 8 + }, + "PreferredCarryAngles": { + "field": "m_angPreferredCarryAngles", + "type": 20 + }, + "NotSolidToWorld": { + "field": "m_bNotSolidToWorld", + "type": 10 + }, + "EnableUseOutput": { + "field": "m_bEnableUseOutput", + "type": 10 + }, + "ExploitableByPlayer": { + "field": "m_iExploitableByPlayer", + "type": 2 + }, + "TouchOutputPerEntityDelay": { + "field": "m_flTouchOutputPerEntityDelay", + "type": 8 + }, + "OnDamaged": { + "field": "m_OnDamaged", + "classname": "CEntityIOOutput", + "type": 16 + }, + "OnAwakened": { + "field": "m_OnAwakened", + "classname": "CEntityIOOutput", + "type": 16 + }, + "OnMotionEnabled": { + "field": "m_OnMotionEnabled", + "classname": "CEntityIOOutput", + "type": 16 + }, + "OnPlayerUse": { + "field": "m_OnPlayerUse", + "classname": "CEntityIOOutput", + "type": 16 + }, + "OnStartTouch": { + "field": "m_OnStartTouch", + "classname": "CEntityIOOutput", + "type": 16 + }, + "CarryingPlayer": { + "field": "m_hCarryingPlayer", + "type": 17, + "classname": "CBasePlayerPawn" + }, + "Parent": { + "field": "CBreakable", + "type": 11 + } + }, + "CPhysConstraint": { + "NameAttach1": { + "field": "m_nameAttach1", + "type": 13 + }, + "NameAttach2": { + "field": "m_nameAttach2", + "type": 13 + }, + "Attach1": { + "field": "m_hAttach1", + "type": 17, + "classname": "CBaseEntity" + }, + "Attach2": { + "field": "m_hAttach2", + "type": 17, + "classname": "CBaseEntity" + }, + "NameAttachment1": { + "field": "m_nameAttachment1", + "type": 13 + }, + "NameAttachment2": { + "field": "m_nameAttachment2", + "type": 13 + }, + "BreakSound": { + "field": "m_breakSound", + "type": 13 + }, + "ForceLimit": { + "field": "m_forceLimit", + "type": 8 + }, + "TorqueLimit": { + "field": "m_torqueLimit", + "type": 8 + }, + "TeleportTick": { + "field": "m_teleportTick", + "type": 6 + }, + "MinTeleportDistance": { + "field": "m_minTeleportDistance", + "type": 8 + }, + "SnapObjectPositions": { + "field": "m_bSnapObjectPositions", + "type": 10 + }, + "OnBreak": { + "field": "m_OnBreak", + "classname": "CEntityIOOutput", + "type": 16 + }, + "Parent": { + "field": "CLogicalEntity", + "type": 11 + } + }, + "CPhysExplosion": { + "ExplodeOnSpawn": { + "field": "m_bExplodeOnSpawn", + "type": 10 + }, + "Magnitude": { + "field": "m_flMagnitude", + "type": 8 + }, + "Damage": { + "field": "m_flDamage", + "type": 8 + }, + "Radius": { + "field": "m_radius", + "type": 8 + }, + "TargetEntityName": { + "field": "m_targetEntityName", + "type": 13 + }, + "InnerRadius": { + "field": "m_flInnerRadius", + "type": 8 + }, + "PushScale": { + "field": "m_flPushScale", + "type": 8 + }, + "ConvertToDebrisWhenPossible": { + "field": "m_bConvertToDebrisWhenPossible", + "type": 10 + }, + "OnPushedPlayer": { + "field": "m_OnPushedPlayer", + "classname": "CEntityIOOutput", + "type": 16 + }, + "Parent": { + "field": "CPointEntity", + "type": 11 + } + }, + "CPhysFixed": { + "LinearFrequency": { + "field": "m_flLinearFrequency", + "type": 8 + }, + "LinearDampingRatio": { + "field": "m_flLinearDampingRatio", + "type": 8 + }, + "AngularFrequency": { + "field": "m_flAngularFrequency", + "type": 8 + }, + "AngularDampingRatio": { + "field": "m_flAngularDampingRatio", + "type": 8 + }, + "EnableLinearConstraint": { + "field": "m_bEnableLinearConstraint", + "type": 10 + }, + "EnableAngularConstraint": { + "field": "m_bEnableAngularConstraint", + "type": 10 + }, + "Parent": { + "field": "CPhysConstraint", + "type": 11 + } + }, + "CPhysForce": { + "NameAttach": { + "field": "m_nameAttach", + "type": 13 + }, + "Force": { + "field": "m_force", + "type": 8 + }, + "ForceTime": { + "field": "m_forceTime", + "type": 8 + }, + "AttachedObject": { + "field": "m_attachedObject", + "type": 17, + "classname": "CBaseEntity" + }, + "WasRestored": { + "field": "m_wasRestored", + "type": 10 + }, + "Integrator": { + "field": "m_integrator", + "classname": "CConstantForceController", + "type": 16 + }, + "Parent": { + "field": "CPointEntity", + "type": 11 + } + }, + "CPhysHinge": { + "SoundInfo": { + "field": "m_soundInfo", + "classname": "ConstraintSoundInfo", + "type": 16 + }, + "NotifyMinLimitReached": { + "field": "m_NotifyMinLimitReached", + "classname": "CEntityIOOutput", + "type": 16 + }, + "NotifyMaxLimitReached": { + "field": "m_NotifyMaxLimitReached", + "classname": "CEntityIOOutput", + "type": 16 + }, + "AtMinLimit": { + "field": "m_bAtMinLimit", + "type": 10 + }, + "AtMaxLimit": { + "field": "m_bAtMaxLimit", + "type": 10 + }, + "Hinge": { + "field": "m_hinge", + "classname": "constraint_hingeparams_t", + "type": 16 + }, + "HingeFriction": { + "field": "m_hingeFriction", + "type": 8 + }, + "SystemLoadScale": { + "field": "m_systemLoadScale", + "type": 8 + }, + "IsAxisLocal": { + "field": "m_bIsAxisLocal", + "type": 10 + }, + "MinRotation": { + "field": "m_flMinRotation", + "type": 8 + }, + "MaxRotation": { + "field": "m_flMaxRotation", + "type": 8 + }, + "InitialRotation": { + "field": "m_flInitialRotation", + "type": 8 + }, + "MotorFrequency": { + "field": "m_flMotorFrequency", + "type": 8 + }, + "MotorDampingRatio": { + "field": "m_flMotorDampingRatio", + "type": 8 + }, + "AngleSpeed": { + "field": "m_flAngleSpeed", + "type": 8 + }, + "AngleSpeedThreshold": { + "field": "m_flAngleSpeedThreshold", + "type": 8 + }, + "OnStartMoving": { + "field": "m_OnStartMoving", + "classname": "CEntityIOOutput", + "type": 16 + }, + "OnStopMoving": { + "field": "m_OnStopMoving", + "classname": "CEntityIOOutput", + "type": 16 + }, + "Parent": { + "field": "CPhysConstraint", + "type": 11 + } + }, + "CPhysHingeAlias_phys_hinge_local": { + "Parent": { + "field": "CPhysHinge", + "type": 11 + } + }, + "CPhysImpact": { + "Damage": { + "field": "m_damage", + "type": 8 + }, + "Distance": { + "field": "m_distance", + "type": 8 + }, + "DirectionEntityName": { + "field": "m_directionEntityName", + "type": 13 + }, + "Parent": { + "field": "CPointEntity", + "type": 11 + } + }, + "CPhysLength": { + "Offset": { + "field": "m_offset", + "type": 42, + "size": 2 + }, + "Attach": { + "field": "m_vecAttach", + "type": 21 + }, + "AddLength": { + "field": "m_addLength", + "type": 8 + }, + "MinLength": { + "field": "m_minLength", + "type": 8 + }, + "TotalLength": { + "field": "m_totalLength", + "type": 8 + }, + "EnableCollision": { + "field": "m_bEnableCollision", + "type": 10 + }, + "Parent": { + "field": "CPhysConstraint", + "type": 11 + } + }, + "CPhysMagnet": { + "OnMagnetAttach": { + "field": "m_OnMagnetAttach", + "classname": "CEntityIOOutput", + "type": 16 + }, + "OnMagnetDetach": { + "field": "m_OnMagnetDetach", + "classname": "CEntityIOOutput", + "type": 16 + }, + "MassScale": { + "field": "m_massScale", + "type": 8 + }, + "ForceLimit": { + "field": "m_forceLimit", + "type": 8 + }, + "TorqueLimit": { + "field": "m_torqueLimit", + "type": 8 + }, + "Active": { + "field": "m_bActive", + "type": 10 + }, + "HasHitSomething": { + "field": "m_bHasHitSomething", + "type": 10 + }, + "TotalMass": { + "field": "m_flTotalMass", + "type": 8 + }, + "Radius": { + "field": "m_flRadius", + "type": 8 + }, + "NextSuckTime": { + "field": "m_flNextSuckTime", + "type": 8 + }, + "MaxObjectsAttached": { + "field": "m_iMaxObjectsAttached", + "type": 2 + }, + "Parent": { + "field": "CBaseAnimGraph", + "type": 11 + } + }, + "CPhysMotor": { + "NameAttach": { + "field": "m_nameAttach", + "type": 13 + }, + "AttachedObject": { + "field": "m_hAttachedObject", + "type": 17, + "classname": "CBaseEntity" + }, + "SpinUp": { + "field": "m_spinUp", + "type": 8 + }, + "AdditionalAcceleration": { + "field": "m_additionalAcceleration", + "type": 8 + }, + "AngularAcceleration": { + "field": "m_angularAcceleration", + "type": 8 + }, + "LastTime": { + "field": "m_lastTime", + "type": 8 + }, + "Motor": { + "field": "m_motor", + "classname": "CMotorController", + "type": 16 + }, + "Parent": { + "field": "CLogicalEntity", + "type": 11 + } + }, + "CPhysPulley": { + "Position2": { + "field": "m_position2", + "type": 21 + }, + "Offset": { + "field": "m_offset", + "type": 42, + "size": 2 + }, + "AddLength": { + "field": "m_addLength", + "type": 8 + }, + "GearRatio": { + "field": "m_gearRatio", + "type": 8 + }, + "Parent": { + "field": "CPhysConstraint", + "type": 11 + } + }, + "CPhysSlideConstraint": { + "AxisEnd": { + "field": "m_axisEnd", + "type": 21 + }, + "SlideFriction": { + "field": "m_slideFriction", + "type": 8 + }, + "SystemLoadScale": { + "field": "m_systemLoadScale", + "type": 8 + }, + "InitialOffset": { + "field": "m_initialOffset", + "type": 8 + }, + "EnableLinearConstraint": { + "field": "m_bEnableLinearConstraint", + "type": 10 + }, + "EnableAngularConstraint": { + "field": "m_bEnableAngularConstraint", + "type": 10 + }, + "MotorFrequency": { + "field": "m_flMotorFrequency", + "type": 8 + }, + "MotorDampingRatio": { + "field": "m_flMotorDampingRatio", + "type": 8 + }, + "UseEntityPivot": { + "field": "m_bUseEntityPivot", + "type": 10 + }, + "SoundInfo": { + "field": "m_soundInfo", + "classname": "ConstraintSoundInfo", + "type": 16 + }, + "Parent": { + "field": "CPhysConstraint", + "type": 11 + } + }, + "CPhysThruster": { + "LocalOrigin": { + "field": "m_localOrigin", + "type": 21 + }, + "Parent": { + "field": "CPhysForce", + "type": 11 + } + }, + "CPhysTorque": { + "Axis": { + "field": "m_axis", + "type": 21 + }, + "Parent": { + "field": "CPhysForce", + "type": 11 + } + }, + "CPhysWheelConstraint": { + "SuspensionFrequency": { + "field": "m_flSuspensionFrequency", + "type": 8 + }, + "SuspensionDampingRatio": { + "field": "m_flSuspensionDampingRatio", + "type": 8 + }, + "SuspensionHeightOffset": { + "field": "m_flSuspensionHeightOffset", + "type": 8 + }, + "EnableSuspensionLimit": { + "field": "m_bEnableSuspensionLimit", + "type": 10 + }, + "MinSuspensionOffset": { + "field": "m_flMinSuspensionOffset", + "type": 8 + }, + "MaxSuspensionOffset": { + "field": "m_flMaxSuspensionOffset", + "type": 8 + }, + "EnableSteeringLimit": { + "field": "m_bEnableSteeringLimit", + "type": 10 + }, + "MinSteeringAngle": { + "field": "m_flMinSteeringAngle", + "type": 8 + }, + "MaxSteeringAngle": { + "field": "m_flMaxSteeringAngle", + "type": 8 + }, + "SteeringAxisFriction": { + "field": "m_flSteeringAxisFriction", + "type": 8 + }, + "SpinAxisFriction": { + "field": "m_flSpinAxisFriction", + "type": 8 + }, + "Parent": { + "field": "CPhysConstraint", + "type": 11 + } + }, + "CPhysicalButton": { + "Parent": { + "field": "CBaseButton", + "type": 11 + } + }, + "CPhysicsEntitySolver": { + "MovingEntity": { + "field": "m_hMovingEntity", + "type": 17, + "classname": "CBaseEntity" + }, + "PhysicsBlocker": { + "field": "m_hPhysicsBlocker", + "type": 17, + "classname": "CBaseEntity" + }, + "SeparationDuration": { + "field": "m_separationDuration", + "type": 8 + }, + "CancelTime": { + "field": "m_cancelTime", + "type": 8 + }, + "Parent": { + "field": "CLogicalEntity", + "type": 11 + } + }, + "CPhysicsProp": { + "MotionEnabled": { + "field": "m_MotionEnabled", + "classname": "CEntityIOOutput", + "type": 16 + }, + "OnAwakened": { + "field": "m_OnAwakened", + "classname": "CEntityIOOutput", + "type": 16 + }, + "OnAwake": { + "field": "m_OnAwake", + "classname": "CEntityIOOutput", + "type": 16 + }, + "OnAsleep": { + "field": "m_OnAsleep", + "classname": "CEntityIOOutput", + "type": 16 + }, + "OnPlayerUse": { + "field": "m_OnPlayerUse", + "classname": "CEntityIOOutput", + "type": 16 + }, + "OnOutOfWorld": { + "field": "m_OnOutOfWorld", + "classname": "CEntityIOOutput", + "type": 16 + }, + "OnPlayerPickup": { + "field": "m_OnPlayerPickup", + "classname": "CEntityIOOutput", + "type": 16 + }, + "ForceNavIgnore": { + "field": "m_bForceNavIgnore", + "type": 10 + }, + "NoNavmeshBlocker": { + "field": "m_bNoNavmeshBlocker", + "type": 10 + }, + "ForceNpcExclude": { + "field": "m_bForceNpcExclude", + "type": 10 + }, + "MassScale": { + "field": "m_massScale", + "type": 8 + }, + "InertiaScale": { + "field": "m_inertiaScale", + "type": 8 + }, + "BuoyancyScale": { + "field": "m_buoyancyScale", + "type": 8 + }, + "DamageType": { + "field": "m_damageType", + "type": 2 + }, + "DamageToEnableMotion": { + "field": "m_damageToEnableMotion", + "type": 2 + }, + "ForceToEnableMotion": { + "field": "m_flForceToEnableMotion", + "type": 8 + }, + "ThrownByPlayer": { + "field": "m_bThrownByPlayer", + "type": 10 + }, + "DroppedByPlayer": { + "field": "m_bDroppedByPlayer", + "type": 10 + }, + "TouchedByPlayer": { + "field": "m_bTouchedByPlayer", + "type": 10 + }, + "FirstCollisionAfterLaunch": { + "field": "m_bFirstCollisionAfterLaunch", + "type": 10 + }, + "ExploitableByPlayer": { + "field": "m_iExploitableByPlayer", + "type": 2 + }, + "HasBeenAwakened": { + "field": "m_bHasBeenAwakened", + "type": 10 + }, + "IsOverrideProp": { + "field": "m_bIsOverrideProp", + "type": 10 + }, + "NextCheckDisableMotionContactsTime": { + "field": "m_fNextCheckDisableMotionContactsTime", + "type": 8 + }, + "InitialGlowState": { + "field": "m_iInitialGlowState", + "type": 2 + }, + "GlowRange": { + "field": "m_nGlowRange", + "type": 2 + }, + "GlowRangeMin": { + "field": "m_nGlowRangeMin", + "type": 2 + }, + "GlowColor": { + "field": "m_glowColor", + "type": 19 + }, + "ShouldAutoConvertBackFromDebris": { + "field": "m_bShouldAutoConvertBackFromDebris", + "type": 10 + }, + "MuteImpactEffects": { + "field": "m_bMuteImpactEffects", + "type": 10 + }, + "AcceptDamageFromHeldObjects": { + "field": "m_bAcceptDamageFromHeldObjects", + "type": 10 + }, + "EnableUseOutput": { + "field": "m_bEnableUseOutput", + "type": 10 + }, + "CrateType": { + "field": "m_CrateType", + "type": 6 + }, + "StrItemClass": { + "field": "m_strItemClass", + "type": 26, + "size": 4 + }, + "ItemCount": { + "field": "m_nItemCount", + "type": 31, + "size": 4 + }, + "RemovableForAmmoBalancing": { + "field": "m_bRemovableForAmmoBalancing", + "type": 10 + }, + "Awake": { + "field": "m_bAwake", + "type": 10 + }, + "Parent": { + "field": "CBreakableProp", + "type": 11 + } + }, + "CPhysicsPropMultiplayer": { + "Parent": { + "field": "CPhysicsProp", + "type": 11 + } + }, + "CPhysicsPropOverride": { + "Parent": { + "field": "CPhysicsProp", + "type": 11 + } + }, + "CPhysicsPropRespawnable": { + "OriginalSpawnOrigin": { + "field": "m_vOriginalSpawnOrigin", + "type": 21 + }, + "OriginalSpawnAngles": { + "field": "m_vOriginalSpawnAngles", + "type": 20 + }, + "OriginalMins": { + "field": "m_vOriginalMins", + "type": 21 + }, + "OriginalMaxs": { + "field": "m_vOriginalMaxs", + "type": 21 + }, + "RespawnDuration": { + "field": "m_flRespawnDuration", + "type": 8 + }, + "Parent": { + "field": "CPhysicsProp", + "type": 11 + } + }, + "CPhysicsShake": { + "Force": { + "field": "m_force", + "type": 21 + } + }, + "CPhysicsSpring": { + "Frequency": { + "field": "m_flFrequency", + "type": 8 + }, + "DampingRatio": { + "field": "m_flDampingRatio", + "type": 8 + }, + "RestLength": { + "field": "m_flRestLength", + "type": 8 + }, + "NameAttachStart": { + "field": "m_nameAttachStart", + "type": 13 + }, + "NameAttachEnd": { + "field": "m_nameAttachEnd", + "type": 13 + }, + "Start": { + "field": "m_start", + "type": 21 + }, + "End": { + "field": "m_end", + "type": 21 + }, + "TeleportTick": { + "field": "m_teleportTick", + "type": 6 + }, + "Parent": { + "field": "CBaseEntity", + "type": 11 + } + }, + "CPhysicsWire": { + "Density": { + "field": "m_nDensity", + "type": 2 + }, + "Parent": { + "field": "CBaseEntity", + "type": 11 + } + }, + "CPlantedC4": { + "BombTicking": { + "field": "m_bBombTicking", + "type": 10 + }, + "C4Blow": { + "field": "m_flC4Blow", + "type": 8 + }, + "BombSite": { + "field": "m_nBombSite", + "type": 2 + }, + "SourceSoundscapeHash": { + "field": "m_nSourceSoundscapeHash", + "type": 2 + }, + "AttributeManager": { + "field": "m_AttributeManager", + "classname": "CAttributeContainer", + "type": 16 + }, + "OnBombDefused": { + "field": "m_OnBombDefused", + "classname": "CEntityIOOutput", + "type": 16 + }, + "OnBombBeginDefuse": { + "field": "m_OnBombBeginDefuse", + "classname": "CEntityIOOutput", + "type": 16 + }, + "OnBombDefuseAborted": { + "field": "m_OnBombDefuseAborted", + "classname": "CEntityIOOutput", + "type": 16 + }, + "CannotBeDefused": { + "field": "m_bCannotBeDefused", + "type": 10 + }, + "EntitySpottedState": { + "field": "m_entitySpottedState", + "classname": "EntitySpottedState_t", + "type": 16 + }, + "SpotRules": { + "field": "m_nSpotRules", + "type": 2 + }, + "TrainingPlacedByPlayer": { + "field": "m_bTrainingPlacedByPlayer", + "type": 10 + }, + "HasExploded": { + "field": "m_bHasExploded", + "type": 10 + }, + "TimerLength": { + "field": "m_flTimerLength", + "type": 8 + }, + "BeingDefused": { + "field": "m_bBeingDefused", + "type": 10 + }, + "LastDefuseTime": { + "field": "m_fLastDefuseTime", + "type": 8 + }, + "DefuseLength": { + "field": "m_flDefuseLength", + "type": 8 + }, + "DefuseCountDown": { + "field": "m_flDefuseCountDown", + "type": 8 + }, + "BombDefused": { + "field": "m_bBombDefused", + "type": 10 + }, + "BombDefuser": { + "field": "m_hBombDefuser", + "type": 17, + "classname": "CCSPlayerPawn" + }, + "ControlPanel": { + "field": "m_hControlPanel", + "type": 17, + "classname": "CBaseEntity" + }, + "ProgressBarTime": { + "field": "m_iProgressBarTime", + "type": 2 + }, + "VoiceAlertFired": { + "field": "m_bVoiceAlertFired", + "type": 10 + }, + "VoiceAlertPlayed": { + "field": "m_bVoiceAlertPlayed", + "type": 39, + "size": 4 + }, + "NextBotBeepTime": { + "field": "m_flNextBotBeepTime", + "type": 8 + }, + "CatchUpToPlayerEye": { + "field": "m_angCatchUpToPlayerEye", + "type": 20 + }, + "LastSpinDetectionTime": { + "field": "m_flLastSpinDetectionTime", + "type": 8 + }, + "Parent": { + "field": "CBaseAnimGraph", + "type": 11 + } + }, + "CPlatTrigger": { + "Platform": { + "field": "m_pPlatform", + "type": 17, + "classname": "CFuncPlat" + }, + "Parent": { + "field": "CBaseModelEntity", + "type": 11 + } + }, + "CPlayerPing": { + "Player": { + "field": "m_hPlayer", + "type": 17, + "classname": "CCSPlayerPawn" + }, + "PingedEntity": { + "field": "m_hPingedEntity", + "type": 17, + "classname": "CBaseEntity" + }, + "Type": { + "field": "m_iType", + "type": 2 + }, + "Urgent": { + "field": "m_bUrgent", + "type": 10 + }, + "PlaceName": { + "field": "m_szPlaceName", + "type": 15, + "size": 18 + }, + "Parent": { + "field": "CBaseEntity", + "type": 11 + } + }, + "CPlayerSprayDecal": { + "UniqueID": { + "field": "m_nUniqueID", + "type": 2 + }, + "AccountID": { + "field": "m_unAccountID", + "type": 6 + }, + "TraceID": { + "field": "m_unTraceID", + "type": 6 + }, + "RtGcTime": { + "field": "m_rtGcTime", + "type": 6 + }, + "EndPos": { + "field": "m_vecEndPos", + "type": 21 + }, + "Start": { + "field": "m_vecStart", + "type": 21 + }, + "Left": { + "field": "m_vecLeft", + "type": 21 + }, + "Normal": { + "field": "m_vecNormal", + "type": 21 + }, + "Player": { + "field": "m_nPlayer", + "type": 2 + }, + "Entity": { + "field": "m_nEntity", + "type": 2 + }, + "Hitbox": { + "field": "m_nHitbox", + "type": 2 + }, + "CreationTime": { + "field": "m_flCreationTime", + "type": 8 + }, + "TintID": { + "field": "m_nTintID", + "type": 2 + }, + "Version": { + "field": "m_nVersion", + "type": 4 + }, + "Signature": { + "field": "m_ubSignature", + "type": 33, + "size": 128 + }, + "Parent": { + "field": "CModelPointEntity", + "type": 11 + } + }, + "CPlayerVisibility": { + "VisibilityStrength": { + "field": "m_flVisibilityStrength", + "type": 8 + }, + "FogDistanceMultiplier": { + "field": "m_flFogDistanceMultiplier", + "type": 8 + }, + "FogMaxDensityMultiplier": { + "field": "m_flFogMaxDensityMultiplier", + "type": 8 + }, + "FadeTime": { + "field": "m_flFadeTime", + "type": 8 + }, + "StartDisabled": { + "field": "m_bStartDisabled", + "type": 10 + }, + "IsEnabled": { + "field": "m_bIsEnabled", + "type": 10 + }, + "Parent": { + "field": "CBaseEntity", + "type": 11 + } + }, + "CPointAngleSensor": { + "Disabled": { + "field": "m_bDisabled", + "type": 10 + }, + "LookAtName": { + "field": "m_nLookAtName", + "type": 13 + }, + "TargetEntity": { + "field": "m_hTargetEntity", + "type": 17, + "classname": "CBaseEntity" + }, + "LookAtEntity": { + "field": "m_hLookAtEntity", + "type": 17, + "classname": "CBaseEntity" + }, + "Duration": { + "field": "m_flDuration", + "type": 8 + }, + "DotTolerance": { + "field": "m_flDotTolerance", + "type": 8 + }, + "FacingTime": { + "field": "m_flFacingTime", + "type": 8 + }, + "Fired": { + "field": "m_bFired", + "type": 10 + }, + "OnFacingLookat": { + "field": "m_OnFacingLookat", + "classname": "CEntityIOOutput", + "type": 16 + }, + "OnNotFacingLookat": { + "field": "m_OnNotFacingLookat", + "classname": "CEntityIOOutput", + "type": 16 + }, + "Parent": { + "field": "CPointEntity", + "type": 11 + } + }, + "CPointAngularVelocitySensor": { + "TargetEntity": { + "field": "m_hTargetEntity", + "type": 17, + "classname": "CBaseEntity" + }, + "Threshold": { + "field": "m_flThreshold", + "type": 8 + }, + "LastCompareResult": { + "field": "m_nLastCompareResult", + "type": 2 + }, + "LastFireResult": { + "field": "m_nLastFireResult", + "type": 2 + }, + "FireTime": { + "field": "m_flFireTime", + "type": 8 + }, + "FireInterval": { + "field": "m_flFireInterval", + "type": 8 + }, + "LastAngVelocity": { + "field": "m_flLastAngVelocity", + "type": 8 + }, + "LastOrientation": { + "field": "m_lastOrientation", + "type": 20 + }, + "Axis": { + "field": "m_vecAxis", + "type": 21 + }, + "UseHelper": { + "field": "m_bUseHelper", + "type": 10 + }, + "OnLessThan": { + "field": "m_OnLessThan", + "classname": "CEntityIOOutput", + "type": 16 + }, + "OnLessThanOrEqualTo": { + "field": "m_OnLessThanOrEqualTo", + "classname": "CEntityIOOutput", + "type": 16 + }, + "OnGreaterThan": { + "field": "m_OnGreaterThan", + "classname": "CEntityIOOutput", + "type": 16 + }, + "OnGreaterThanOrEqualTo": { + "field": "m_OnGreaterThanOrEqualTo", + "classname": "CEntityIOOutput", + "type": 16 + }, + "OnEqualTo": { + "field": "m_OnEqualTo", + "classname": "CEntityIOOutput", + "type": 16 + }, + "Parent": { + "field": "CPointEntity", + "type": 11 + } + }, + "CPointBroadcastClientCommand": { + "Parent": { + "field": "CPointEntity", + "type": 11 + } + }, + "CPointCamera": { + "FOV": { + "field": "m_FOV", + "type": 8 + }, + "Resolution": { + "field": "m_Resolution", + "type": 8 + }, + "FogEnable": { + "field": "m_bFogEnable", + "type": 10 + }, + "FogColor": { + "field": "m_FogColor", + "type": 19 + }, + "FogStart": { + "field": "m_flFogStart", + "type": 8 + }, + "FogEnd": { + "field": "m_flFogEnd", + "type": 8 + }, + "FogMaxDensity": { + "field": "m_flFogMaxDensity", + "type": 8 + }, + "Active": { + "field": "m_bActive", + "type": 10 + }, + "UseScreenAspectRatio": { + "field": "m_bUseScreenAspectRatio", + "type": 10 + }, + "AspectRatio": { + "field": "m_flAspectRatio", + "type": 8 + }, + "NoSky": { + "field": "m_bNoSky", + "type": 10 + }, + "Brightness": { + "field": "m_fBrightness", + "type": 8 + }, + "ZFar": { + "field": "m_flZFar", + "type": 8 + }, + "ZNear": { + "field": "m_flZNear", + "type": 8 + }, + "CanHLTVUse": { + "field": "m_bCanHLTVUse", + "type": 10 + }, + "AlignWithParent": { + "field": "m_bAlignWithParent", + "type": 10 + }, + "DofEnabled": { + "field": "m_bDofEnabled", + "type": 10 + }, + "DofNearBlurry": { + "field": "m_flDofNearBlurry", + "type": 8 + }, + "DofNearCrisp": { + "field": "m_flDofNearCrisp", + "type": 8 + }, + "DofFarCrisp": { + "field": "m_flDofFarCrisp", + "type": 8 + }, + "DofFarBlurry": { + "field": "m_flDofFarBlurry", + "type": 8 + }, + "DofTiltToGround": { + "field": "m_flDofTiltToGround", + "type": 8 + }, + "TargetFOV": { + "field": "m_TargetFOV", + "type": 8 + }, + "DegreesPerSecond": { + "field": "m_DegreesPerSecond", + "type": 8 + }, + "IsOn": { + "field": "m_bIsOn", + "type": 10 + }, + "Next": { + "field": "m_pNext", + "classname": "CPointCamera", + "type": 24 + }, + "Parent": { + "field": "CBaseEntity", + "type": 11 + } + }, + "CPointCameraVFOV": { + "VerticalFOV": { + "field": "m_flVerticalFOV", + "type": 8 + }, + "Parent": { + "field": "CPointCamera", + "type": 11 + } + }, + "CPointClientCommand": { + "Parent": { + "field": "CPointEntity", + "type": 11 + } + }, + "CPointClientUIDialog": { + "Activator": { + "field": "m_hActivator", + "type": 17, + "classname": "CBaseEntity" + }, + "StartEnabled": { + "field": "m_bStartEnabled", + "type": 10 + }, + "Parent": { + "field": "CBaseClientUIEntity", + "type": 11 + } + }, + "CPointClientUIWorldPanel": { + "IgnoreInput": { + "field": "m_bIgnoreInput", + "type": 10 + }, + "Lit": { + "field": "m_bLit", + "type": 10 + }, + "FollowPlayerAcrossTeleport": { + "field": "m_bFollowPlayerAcrossTeleport", + "type": 10 + }, + "Width": { + "field": "m_flWidth", + "type": 8 + }, + "Height": { + "field": "m_flHeight", + "type": 8 + }, + "DPI": { + "field": "m_flDPI", + "type": 8 + }, + "InteractDistance": { + "field": "m_flInteractDistance", + "type": 8 + }, + "DepthOffset": { + "field": "m_flDepthOffset", + "type": 8 + }, + "OwnerContext": { + "field": "m_unOwnerContext", + "type": 6 + }, + "HorizontalAlign": { + "field": "m_unHorizontalAlign", + "type": 6 + }, + "VerticalAlign": { + "field": "m_unVerticalAlign", + "type": 6 + }, + "Orientation": { + "field": "m_unOrientation", + "type": 6 + }, + "AllowInteractionFromAllSceneWorlds": { + "field": "m_bAllowInteractionFromAllSceneWorlds", + "type": 10 + }, + "CSSClasses": { + "field": "m_vecCSSClasses", + "type": 48 + }, + "Opaque": { + "field": "m_bOpaque", + "type": 10 + }, + "NoDepth": { + "field": "m_bNoDepth", + "type": 10 + }, + "RenderBackface": { + "field": "m_bRenderBackface", + "type": 10 + }, + "UseOffScreenIndicator": { + "field": "m_bUseOffScreenIndicator", + "type": 10 + }, + "ExcludeFromSaveGames": { + "field": "m_bExcludeFromSaveGames", + "type": 10 + }, + "Grabbable": { + "field": "m_bGrabbable", + "type": 10 + }, + "OnlyRenderToTexture": { + "field": "m_bOnlyRenderToTexture", + "type": 10 + }, + "DisableMipGen": { + "field": "m_bDisableMipGen", + "type": 10 + }, + "ExplicitImageLayout": { + "field": "m_nExplicitImageLayout", + "type": 2 + }, + "Parent": { + "field": "CBaseClientUIEntity", + "type": 11 + } + }, + "CPointClientUIWorldTextPanel": { + "MessageText": { + "field": "m_messageText", + "type": 15, + "size": 512 + }, + "Parent": { + "field": "CPointClientUIWorldPanel", + "type": 11 + } + }, + "CPointEntity": { + "Parent": { + "field": "CBaseEntity", + "type": 11 + } + }, + "CPointEntityFinder": { + "Entity": { + "field": "m_hEntity", + "type": 17, + "classname": "CBaseEntity" + }, + "FilterName": { + "field": "m_iFilterName", + "type": 13 + }, + "Filter": { + "field": "m_hFilter", + "type": 17, + "classname": "CBaseFilter" + }, + "RefName": { + "field": "m_iRefName", + "type": 13 + }, + "Reference": { + "field": "m_hReference", + "type": 17, + "classname": "CBaseEntity" + }, + "FindMethod": { + "field": "m_FindMethod", + "type": 6 + }, + "OnFoundEntity": { + "field": "m_OnFoundEntity", + "classname": "CEntityIOOutput", + "type": 16 + }, + "Parent": { + "field": "CBaseEntity", + "type": 11 + } + }, + "CPointGamestatsCounter": { + "StrStatisticName": { + "field": "m_strStatisticName", + "type": 13 + }, + "Disabled": { + "field": "m_bDisabled", + "type": 10 + }, + "Parent": { + "field": "CPointEntity", + "type": 11 + } + }, + "CPointGiveAmmo": { + "Activator": { + "field": "m_pActivator", + "type": 17, + "classname": "CBaseEntity" + }, + "Parent": { + "field": "CPointEntity", + "type": 11 + } + }, + "CPointHurt": { + "Damage": { + "field": "m_nDamage", + "type": 2 + }, + "BitsDamageType": { + "field": "m_bitsDamageType", + "type": 6 + }, + "Radius": { + "field": "m_flRadius", + "type": 8 + }, + "Delay": { + "field": "m_flDelay", + "type": 8 + }, + "StrTarget": { + "field": "m_strTarget", + "type": 13 + }, + "Activator": { + "field": "m_pActivator", + "type": 17, + "classname": "CBaseEntity" + }, + "Parent": { + "field": "CPointEntity", + "type": 11 + } + }, + "CPointPrefab": { + "TargetMapName": { + "field": "m_targetMapName", + "type": 13 + }, + "ForceWorldGroupID": { + "field": "m_forceWorldGroupID", + "type": 13 + }, + "AssociatedRelayTargetName": { + "field": "m_associatedRelayTargetName", + "type": 13 + }, + "FixupNames": { + "field": "m_fixupNames", + "type": 10 + }, + "LoadDynamic": { + "field": "m_bLoadDynamic", + "type": 10 + }, + "AssociatedRelayEntity": { + "field": "m_associatedRelayEntity", + "type": 17, + "classname": "CPointPrefab" + }, + "Parent": { + "field": "CServerOnlyPointEntity", + "type": 11 + } + }, + "CPointProximitySensor": { + "Disabled": { + "field": "m_bDisabled", + "type": 10 + }, + "TargetEntity": { + "field": "m_hTargetEntity", + "type": 17, + "classname": "CBaseEntity" + }, + "Parent": { + "field": "CPointEntity", + "type": 11 + } + }, + "CPointPush": { + "Enabled": { + "field": "m_bEnabled", + "type": 10 + }, + "Magnitude": { + "field": "m_flMagnitude", + "type": 8 + }, + "Radius": { + "field": "m_flRadius", + "type": 8 + }, + "InnerRadius": { + "field": "m_flInnerRadius", + "type": 8 + }, + "ConeOfInfluence": { + "field": "m_flConeOfInfluence", + "type": 8 + }, + "FilterName": { + "field": "m_iszFilterName", + "type": 13 + }, + "Filter": { + "field": "m_hFilter", + "type": 17, + "classname": "CBaseFilter" + }, + "Parent": { + "field": "CPointEntity", + "type": 11 + } + }, + "CPointServerCommand": { + "Parent": { + "field": "CPointEntity", + "type": 11 + } + }, + "CPointTeleport": { + "SaveOrigin": { + "field": "m_vSaveOrigin", + "type": 21 + }, + "SaveAngles": { + "field": "m_vSaveAngles", + "type": 20 + }, + "TeleportParentedEntities": { + "field": "m_bTeleportParentedEntities", + "type": 10 + }, + "TeleportUseCurrentAngle": { + "field": "m_bTeleportUseCurrentAngle", + "type": 10 + }, + "Parent": { + "field": "CServerOnlyPointEntity", + "type": 11 + } + }, + "CPointValueRemapper": { + "Disabled": { + "field": "m_bDisabled", + "type": 10 + }, + "UpdateOnClient": { + "field": "m_bUpdateOnClient", + "type": 10 + }, + "InputType": { + "field": "m_nInputType", + "type": 6 + }, + "RemapLineStartName": { + "field": "m_iszRemapLineStartName", + "type": 13 + }, + "RemapLineEndName": { + "field": "m_iszRemapLineEndName", + "type": 13 + }, + "RemapLineStart": { + "field": "m_hRemapLineStart", + "type": 17, + "classname": "CBaseEntity" + }, + "RemapLineEnd": { + "field": "m_hRemapLineEnd", + "type": 17, + "classname": "CBaseEntity" + }, + "MaximumChangePerSecond": { + "field": "m_flMaximumChangePerSecond", + "type": 8 + }, + "DisengageDistance": { + "field": "m_flDisengageDistance", + "type": 8 + }, + "EngageDistance": { + "field": "m_flEngageDistance", + "type": 8 + }, + "RequiresUseKey": { + "field": "m_bRequiresUseKey", + "type": 10 + }, + "OutputType": { + "field": "m_nOutputType", + "type": 6 + }, + "OutputEntityName": { + "field": "m_iszOutputEntityName", + "type": 13 + }, + "OutputEntity2Name": { + "field": "m_iszOutputEntity2Name", + "type": 13 + }, + "OutputEntity3Name": { + "field": "m_iszOutputEntity3Name", + "type": 13 + }, + "OutputEntity4Name": { + "field": "m_iszOutputEntity4Name", + "type": 13 + }, + "HapticsType": { + "field": "m_nHapticsType", + "type": 6 + }, + "MomentumType": { + "field": "m_nMomentumType", + "type": 6 + }, + "MomentumModifier": { + "field": "m_flMomentumModifier", + "type": 8 + }, + "SnapValue": { + "field": "m_flSnapValue", + "type": 8 + }, + "CurrentMomentum": { + "field": "m_flCurrentMomentum", + "type": 8 + }, + "RatchetType": { + "field": "m_nRatchetType", + "type": 6 + }, + "RatchetOffset": { + "field": "m_flRatchetOffset", + "type": 8 + }, + "InputOffset": { + "field": "m_flInputOffset", + "type": 8 + }, + "Engaged": { + "field": "m_bEngaged", + "type": 10 + }, + "FirstUpdate": { + "field": "m_bFirstUpdate", + "type": 10 + }, + "PreviousValue": { + "field": "m_flPreviousValue", + "type": 8 + }, + "PreviousUpdateTickTime": { + "field": "m_flPreviousUpdateTickTime", + "type": 8 + }, + "PreviousTestPoint": { + "field": "m_vecPreviousTestPoint", + "type": 21 + }, + "UsingPlayer": { + "field": "m_hUsingPlayer", + "type": 17, + "classname": "CBasePlayerPawn" + }, + "CustomOutputValue": { + "field": "m_flCustomOutputValue", + "type": 8 + }, + "SoundEngage": { + "field": "m_iszSoundEngage", + "type": 13 + }, + "SoundDisengage": { + "field": "m_iszSoundDisengage", + "type": 13 + }, + "SoundReachedValueZero": { + "field": "m_iszSoundReachedValueZero", + "type": 13 + }, + "SoundReachedValueOne": { + "field": "m_iszSoundReachedValueOne", + "type": 13 + }, + "SoundMovingLoop": { + "field": "m_iszSoundMovingLoop", + "type": 13 + }, + "OnReachedValueZero": { + "field": "m_OnReachedValueZero", + "classname": "CEntityIOOutput", + "type": 16 + }, + "OnReachedValueOne": { + "field": "m_OnReachedValueOne", + "classname": "CEntityIOOutput", + "type": 16 + }, + "OnReachedValueCustom": { + "field": "m_OnReachedValueCustom", + "classname": "CEntityIOOutput", + "type": 16 + }, + "OnEngage": { + "field": "m_OnEngage", + "classname": "CEntityIOOutput", + "type": 16 + }, + "OnDisengage": { + "field": "m_OnDisengage", + "classname": "CEntityIOOutput", + "type": 16 + }, + "Parent": { + "field": "CBaseEntity", + "type": 11 + } + }, + "CPointVelocitySensor": { + "TargetEntity": { + "field": "m_hTargetEntity", + "type": 17, + "classname": "CBaseEntity" + }, + "Axis": { + "field": "m_vecAxis", + "type": 21 + }, + "Enabled": { + "field": "m_bEnabled", + "type": 10 + }, + "PrevVelocity": { + "field": "m_fPrevVelocity", + "type": 8 + }, + "AvgInterval": { + "field": "m_flAvgInterval", + "type": 8 + }, + "Parent": { + "field": "CPointEntity", + "type": 11 + } + }, + "CPointWorldText": { + "MessageText": { + "field": "m_messageText", + "type": 15, + "size": 512 + }, + "FontName": { + "field": "m_FontName", + "type": 15, + "size": 64 + }, + "BackgroundMaterialName": { + "field": "m_BackgroundMaterialName", + "type": 15, + "size": 64 + }, + "Enabled": { + "field": "m_bEnabled", + "type": 10 + }, + "Fullbright": { + "field": "m_bFullbright", + "type": 10 + }, + "WorldUnitsPerPx": { + "field": "m_flWorldUnitsPerPx", + "type": 8 + }, + "FontSize": { + "field": "m_flFontSize", + "type": 8 + }, + "DepthOffset": { + "field": "m_flDepthOffset", + "type": 8 + }, + "DrawBackground": { + "field": "m_bDrawBackground", + "type": 10 + }, + "BackgroundBorderWidth": { + "field": "m_flBackgroundBorderWidth", + "type": 8 + }, + "BackgroundBorderHeight": { + "field": "m_flBackgroundBorderHeight", + "type": 8 + }, + "BackgroundWorldToUV": { + "field": "m_flBackgroundWorldToUV", + "type": 8 + }, + "Color": { + "field": "m_Color", + "type": 19 + }, + "JustifyHorizontal": { + "field": "m_nJustifyHorizontal", + "type": 6 + }, + "JustifyVertical": { + "field": "m_nJustifyVertical", + "type": 6 + }, + "ReorientMode": { + "field": "m_nReorientMode", + "type": 6 + }, + "Parent": { + "field": "CModelPointEntity", + "type": 11 + } + }, + "CPostProcessingVolume": { + "FadeDuration": { + "field": "m_flFadeDuration", + "type": 8 + }, + "MinLogExposure": { + "field": "m_flMinLogExposure", + "type": 8 + }, + "MaxLogExposure": { + "field": "m_flMaxLogExposure", + "type": 8 + }, + "MinExposure": { + "field": "m_flMinExposure", + "type": 8 + }, + "MaxExposure": { + "field": "m_flMaxExposure", + "type": 8 + }, + "ExposureCompensation": { + "field": "m_flExposureCompensation", + "type": 8 + }, + "ExposureFadeSpeedUp": { + "field": "m_flExposureFadeSpeedUp", + "type": 8 + }, + "ExposureFadeSpeedDown": { + "field": "m_flExposureFadeSpeedDown", + "type": 8 + }, + "TonemapEVSmoothingRange": { + "field": "m_flTonemapEVSmoothingRange", + "type": 8 + }, + "Master": { + "field": "m_bMaster", + "type": 10 + }, + "ExposureControl": { + "field": "m_bExposureControl", + "type": 10 + }, + "Rate": { + "field": "m_flRate", + "type": 8 + }, + "TonemapPercentTarget": { + "field": "m_flTonemapPercentTarget", + "type": 8 + }, + "TonemapPercentBrightPixels": { + "field": "m_flTonemapPercentBrightPixels", + "type": 8 + }, + "TonemapMinAvgLum": { + "field": "m_flTonemapMinAvgLum", + "type": 8 + }, + "Parent": { + "field": "CBaseTrigger", + "type": 11 + } + }, + "CPrecipitation": { + "Parent": { + "field": "CBaseTrigger", + "type": 11 + } + }, + "CPrecipitationBlocker": { + "Parent": { + "field": "CBaseModelEntity", + "type": 11 + } + }, + "CPredictedViewModel": { + "Parent": { + "field": "CBaseViewModel", + "type": 11 + } + }, + "CProjectedDecal": { + "Texture": { + "field": "m_nTexture", + "type": 2 + }, + "Distance": { + "field": "m_flDistance", + "type": 8 + }, + "Parent": { + "field": "CPointEntity", + "type": 11 + } + }, + "CPropDoorRotating": { + "Axis": { + "field": "m_vecAxis", + "type": 21 + }, + "Distance": { + "field": "m_flDistance", + "type": 8 + }, + "SpawnPosition": { + "field": "m_eSpawnPosition", + "type": 6 + }, + "OpenDirection": { + "field": "m_eOpenDirection", + "type": 6 + }, + "CurrentOpenDirection": { + "field": "m_eCurrentOpenDirection", + "type": 6 + }, + "AjarAngle": { + "field": "m_flAjarAngle", + "type": 8 + }, + "RotationAjarDeprecated": { + "field": "m_angRotationAjarDeprecated", + "type": 20 + }, + "RotationClosed": { + "field": "m_angRotationClosed", + "type": 20 + }, + "RotationOpenForward": { + "field": "m_angRotationOpenForward", + "type": 20 + }, + "RotationOpenBack": { + "field": "m_angRotationOpenBack", + "type": 20 + }, + "Goal": { + "field": "m_angGoal", + "type": 20 + }, + "ForwardBoundsMin": { + "field": "m_vecForwardBoundsMin", + "type": 21 + }, + "ForwardBoundsMax": { + "field": "m_vecForwardBoundsMax", + "type": 21 + }, + "BackBoundsMin": { + "field": "m_vecBackBoundsMin", + "type": 21 + }, + "BackBoundsMax": { + "field": "m_vecBackBoundsMax", + "type": 21 + }, + "AjarDoorShouldntAlwaysOpen": { + "field": "m_bAjarDoorShouldntAlwaysOpen", + "type": 10 + }, + "EntityBlocker": { + "field": "m_hEntityBlocker", + "type": 17, + "classname": "CEntityBlocker" + }, + "Parent": { + "field": "CBasePropDoor", + "type": 11 + } + }, + "CPropDoorRotatingBreakable": { + "Breakable": { + "field": "m_bBreakable", + "type": 10 + }, + "IsAbleToCloseAreaPortals": { + "field": "m_isAbleToCloseAreaPortals", + "type": 10 + }, + "CurrentDamageState": { + "field": "m_currentDamageState", + "type": 2 + }, + "DamageStates": { + "field": "m_damageStates", + "type": 48 + }, + "Parent": { + "field": "CPropDoorRotating", + "type": 11 + } + }, + "CPushable": { + "Parent": { + "field": "CBreakable", + "type": 11 + } + }, + "CRagdollConstraint": { + "Xmin": { + "field": "m_xmin", + "type": 8 + }, + "Xmax": { + "field": "m_xmax", + "type": 8 + }, + "Ymin": { + "field": "m_ymin", + "type": 8 + }, + "Ymax": { + "field": "m_ymax", + "type": 8 + }, + "Zmin": { + "field": "m_zmin", + "type": 8 + }, + "Zmax": { + "field": "m_zmax", + "type": 8 + }, + "Xfriction": { + "field": "m_xfriction", + "type": 8 + }, + "Yfriction": { + "field": "m_yfriction", + "type": 8 + }, + "Zfriction": { + "field": "m_zfriction", + "type": 8 + }, + "Parent": { + "field": "CPhysConstraint", + "type": 11 + } + }, + "CRagdollMagnet": { + "Disabled": { + "field": "m_bDisabled", + "type": 10 + }, + "Radius": { + "field": "m_radius", + "type": 8 + }, + "Force": { + "field": "m_force", + "type": 8 + }, + "Axis": { + "field": "m_axis", + "type": 21 + }, + "Parent": { + "field": "CPointEntity", + "type": 11 + } + }, + "CRagdollProp": { + "Ragdoll": { + "field": "m_ragdoll", + "classname": "ragdoll_t", + "type": 16 + }, + "StartDisabled": { + "field": "m_bStartDisabled", + "type": 10 + }, + "RagPos": { + "field": "m_ragPos", + "type": 63 + }, + "RagAngles": { + "field": "m_ragAngles", + "type": 62 + }, + "RagdollSource": { + "field": "m_hRagdollSource", + "type": 17, + "classname": "CBaseEntity" + }, + "LastUpdateTickCount": { + "field": "m_lastUpdateTickCount", + "type": 6 + }, + "AllAsleep": { + "field": "m_allAsleep", + "type": 10 + }, + "FirstCollisionAfterLaunch": { + "field": "m_bFirstCollisionAfterLaunch", + "type": 10 + }, + "DamageEntity": { + "field": "m_hDamageEntity", + "type": 17, + "classname": "CBaseEntity" + }, + "Killer": { + "field": "m_hKiller", + "type": 17, + "classname": "CBaseEntity" + }, + "PhysicsAttacker": { + "field": "m_hPhysicsAttacker", + "type": 17, + "classname": "CBasePlayerPawn" + }, + "LastPhysicsInfluenceTime": { + "field": "m_flLastPhysicsInfluenceTime", + "type": 8 + }, + "FadeOutStartTime": { + "field": "m_flFadeOutStartTime", + "type": 8 + }, + "FadeTime": { + "field": "m_flFadeTime", + "type": 8 + }, + "LastOrigin": { + "field": "m_vecLastOrigin", + "type": 21 + }, + "AwakeTime": { + "field": "m_flAwakeTime", + "type": 8 + }, + "LastOriginChangeTime": { + "field": "m_flLastOriginChangeTime", + "type": 8 + }, + "StrOriginClassName": { + "field": "m_strOriginClassName", + "type": 13 + }, + "StrSourceClassName": { + "field": "m_strSourceClassName", + "type": 13 + }, + "HasBeenPhysgunned": { + "field": "m_bHasBeenPhysgunned", + "type": 10 + }, + "ShouldTeleportPhysics": { + "field": "m_bShouldTeleportPhysics", + "type": 10 + }, + "BlendWeight": { + "field": "m_flBlendWeight", + "type": 8 + }, + "DefaultFadeScale": { + "field": "m_flDefaultFadeScale", + "type": 8 + }, + "RagdollMins": { + "field": "m_ragdollMins", + "type": 63 + }, + "RagdollMaxs": { + "field": "m_ragdollMaxs", + "type": 63 + }, + "ShouldDeleteActivationRecord": { + "field": "m_bShouldDeleteActivationRecord", + "type": 10 + }, + "ValidatePoweredRagdollPose": { + "field": "m_bValidatePoweredRagdollPose", + "type": 10 + }, + "Parent": { + "field": "CBaseAnimGraph", + "type": 11 + } + }, + "CRagdollPropAlias_physics_prop_ragdoll": { + "Parent": { + "field": "CRagdollProp", + "type": 11 + } + }, + "CRagdollPropAttached": { + "BoneIndexAttached": { + "field": "m_boneIndexAttached", + "type": 6 + }, + "RagdollAttachedObjectIndex": { + "field": "m_ragdollAttachedObjectIndex", + "type": 6 + }, + "AttachmentPointBoneSpace": { + "field": "m_attachmentPointBoneSpace", + "type": 21 + }, + "AttachmentPointRagdollSpace": { + "field": "m_attachmentPointRagdollSpace", + "type": 21 + }, + "ShouldDetach": { + "field": "m_bShouldDetach", + "type": 10 + }, + "ShouldDeleteAttachedActivationRecord": { + "field": "m_bShouldDeleteAttachedActivationRecord", + "type": 10 + }, + "Parent": { + "field": "CRagdollProp", + "type": 11 + } + }, + "CRectLight": { + "ShowLight": { + "field": "m_bShowLight", + "type": 10 + }, + "Parent": { + "field": "CBarnLight", + "type": 11 + } + }, + "CResponseQueue": {}, + "CRetakeGameRules": { + "MatchSeed": { + "field": "m_nMatchSeed", + "type": 2 + }, + "BlockersPresent": { + "field": "m_bBlockersPresent", + "type": 10 + }, + "RoundInProgress": { + "field": "m_bRoundInProgress", + "type": 10 + }, + "FirstSecondHalfRound": { + "field": "m_iFirstSecondHalfRound", + "type": 2 + }, + "BombSite": { + "field": "m_iBombSite", + "type": 2 + } + }, + "CRevertSaved": { + "LoadTime": { + "field": "m_loadTime", + "type": 8 + }, + "Duration": { + "field": "m_Duration", + "type": 8 + }, + "HoldTime": { + "field": "m_HoldTime", + "type": 8 + }, + "Parent": { + "field": "CModelPointEntity", + "type": 11 + } + }, + "CRopeKeyframe": { + "RopeFlags": { + "field": "m_RopeFlags", + "type": 5 + }, + "NextLinkName": { + "field": "m_iNextLinkName", + "type": 13 + }, + "Slack": { + "field": "m_Slack", + "type": 1 + }, + "Width": { + "field": "m_Width", + "type": 8 + }, + "TextureScale": { + "field": "m_TextureScale", + "type": 8 + }, + "Segments": { + "field": "m_nSegments", + "type": 4 + }, + "ConstrainBetweenEndpoints": { + "field": "m_bConstrainBetweenEndpoints", + "type": 10 + }, + "StrRopeMaterialModel": { + "field": "m_strRopeMaterialModel", + "type": 13 + }, + "Subdiv": { + "field": "m_Subdiv", + "type": 4 + }, + "ChangeCount": { + "field": "m_nChangeCount", + "type": 4 + }, + "RopeLength": { + "field": "m_RopeLength", + "type": 1 + }, + "LockedPoints": { + "field": "m_fLockedPoints", + "type": 4 + }, + "CreatedFromMapFile": { + "field": "m_bCreatedFromMapFile", + "type": 10 + }, + "ScrollSpeed": { + "field": "m_flScrollSpeed", + "type": 8 + }, + "StartPointValid": { + "field": "m_bStartPointValid", + "type": 10 + }, + "EndPointValid": { + "field": "m_bEndPointValid", + "type": 10 + }, + "StartPoint": { + "field": "m_hStartPoint", + "type": 17, + "classname": "CBaseEntity" + }, + "EndPoint": { + "field": "m_hEndPoint", + "type": 17, + "classname": "CBaseEntity" + }, + "Parent": { + "field": "CBaseModelEntity", + "type": 11 + } + }, + "CRopeKeyframeAlias_move_rope": { + "Parent": { + "field": "CRopeKeyframe", + "type": 11 + } + }, + "CRotButton": { + "Parent": { + "field": "CBaseButton", + "type": 11 + } + }, + "CRotDoor": { + "SolidBsp": { + "field": "m_bSolidBsp", + "type": 10 + }, + "Parent": { + "field": "CBaseDoor", + "type": 11 + } + }, + "CRuleBrushEntity": { + "Parent": { + "field": "CRuleEntity", + "type": 11 + } + }, + "CRuleEntity": { + "Master": { + "field": "m_iszMaster", + "type": 13 + }, + "Parent": { + "field": "CBaseModelEntity", + "type": 11 + } + }, + "CRulePointEntity": { + "Score": { + "field": "m_Score", + "type": 2 + }, + "Parent": { + "field": "CRuleEntity", + "type": 11 + } + }, + "CSAdditionalMatchStats_t": { + "NumRoundsSurvived": { + "field": "m_numRoundsSurvived", + "type": 2 + }, + "MaxNumRoundsSurvived": { + "field": "m_maxNumRoundsSurvived", + "type": 2 + }, + "NumRoundsSurvivedTotal": { + "field": "m_numRoundsSurvivedTotal", + "type": 2 + }, + "RoundsWonWithoutPurchase": { + "field": "m_iRoundsWonWithoutPurchase", + "type": 2 + }, + "RoundsWonWithoutPurchaseTotal": { + "field": "m_iRoundsWonWithoutPurchaseTotal", + "type": 2 + }, + "NumFirstKills": { + "field": "m_numFirstKills", + "type": 2 + }, + "NumClutchKills": { + "field": "m_numClutchKills", + "type": 2 + }, + "NumPistolKills": { + "field": "m_numPistolKills", + "type": 2 + }, + "NumSniperKills": { + "field": "m_numSniperKills", + "type": 2 + }, + "NumSuicides": { + "field": "m_iNumSuicides", + "type": 2 + }, + "NumTeamKills": { + "field": "m_iNumTeamKills", + "type": 2 + }, + "TeamDamage": { + "field": "m_iTeamDamage", + "type": 2 + }, + "Parent": { + "field": "CSAdditionalPerRoundStats_t", + "type": 11 + } + }, + "CSAdditionalPerRoundStats_t": { + "NumChickensKilled": { + "field": "m_numChickensKilled", + "type": 2 + }, + "KillsWhileBlind": { + "field": "m_killsWhileBlind", + "type": 2 + }, + "BombCarrierkills": { + "field": "m_bombCarrierkills", + "type": 2 + }, + "BurnDamageInflicted": { + "field": "m_iBurnDamageInflicted", + "type": 2 + }, + "BlastDamageInflicted": { + "field": "m_iBlastDamageInflicted", + "type": 2 + }, + "Dinks": { + "field": "m_iDinks", + "type": 2 + } + }, + "CSceneEntity": { + "SceneFile": { + "field": "m_iszSceneFile", + "type": 13 + }, + "ResumeSceneFile": { + "field": "m_iszResumeSceneFile", + "type": 13 + }, + "Target1": { + "field": "m_iszTarget1", + "type": 13 + }, + "Target2": { + "field": "m_iszTarget2", + "type": 13 + }, + "Target3": { + "field": "m_iszTarget3", + "type": 13 + }, + "Target4": { + "field": "m_iszTarget4", + "type": 13 + }, + "Target5": { + "field": "m_iszTarget5", + "type": 13 + }, + "Target6": { + "field": "m_iszTarget6", + "type": 13 + }, + "Target7": { + "field": "m_iszTarget7", + "type": 13 + }, + "Target8": { + "field": "m_iszTarget8", + "type": 13 + }, + "Target11": { + "field": "m_hTarget1", + "type": 17, + "classname": "CBaseEntity" + }, + "Target21": { + "field": "m_hTarget2", + "type": 17, + "classname": "CBaseEntity" + }, + "Target31": { + "field": "m_hTarget3", + "type": 17, + "classname": "CBaseEntity" + }, + "Target41": { + "field": "m_hTarget4", + "type": 17, + "classname": "CBaseEntity" + }, + "Target51": { + "field": "m_hTarget5", + "type": 17, + "classname": "CBaseEntity" + }, + "Target61": { + "field": "m_hTarget6", + "type": 17, + "classname": "CBaseEntity" + }, + "Target71": { + "field": "m_hTarget7", + "type": 17, + "classname": "CBaseEntity" + }, + "Target81": { + "field": "m_hTarget8", + "type": 17, + "classname": "CBaseEntity" + }, + "TargetAttachment": { + "field": "m_sTargetAttachment", + "type": 13 + }, + "IsPlayingBack": { + "field": "m_bIsPlayingBack", + "type": 10 + }, + "Paused": { + "field": "m_bPaused", + "type": 10 + }, + "Multiplayer": { + "field": "m_bMultiplayer", + "type": 10 + }, + "Autogenerated": { + "field": "m_bAutogenerated", + "type": 10 + }, + "ForceClientTime": { + "field": "m_flForceClientTime", + "type": 8 + }, + "CurrentTime": { + "field": "m_flCurrentTime", + "type": 8 + }, + "FrameTime": { + "field": "m_flFrameTime", + "type": 8 + }, + "CancelAtNextInterrupt": { + "field": "m_bCancelAtNextInterrupt", + "type": 10 + }, + "Pitch": { + "field": "m_fPitch", + "type": 8 + }, + "Automated": { + "field": "m_bAutomated", + "type": 10 + }, + "AutomatedAction": { + "field": "m_nAutomatedAction", + "type": 2 + }, + "AutomationDelay": { + "field": "m_flAutomationDelay", + "type": 8 + }, + "AutomationTime": { + "field": "m_flAutomationTime", + "type": 8 + }, + "WaitingForThisResumeScene": { + "field": "m_hWaitingForThisResumeScene", + "type": 17, + "classname": "CBaseEntity" + }, + "WaitingForResumeScene": { + "field": "m_bWaitingForResumeScene", + "type": 10 + }, + "PausedViaInput": { + "field": "m_bPausedViaInput", + "type": 10 + }, + "PauseAtNextInterrupt": { + "field": "m_bPauseAtNextInterrupt", + "type": 10 + }, + "WaitingForActor": { + "field": "m_bWaitingForActor", + "type": 10 + }, + "WaitingForInterrupt": { + "field": "m_bWaitingForInterrupt", + "type": 10 + }, + "InterruptedActorsScenes": { + "field": "m_bInterruptedActorsScenes", + "type": 10 + }, + "BreakOnNonIdle": { + "field": "m_bBreakOnNonIdle", + "type": 10 + }, + "SceneFinished": { + "field": "m_bSceneFinished", + "type": 10 + }, + "SceneFlushCounter": { + "field": "m_nSceneFlushCounter", + "type": 2 + }, + "SceneStringIndex": { + "field": "m_nSceneStringIndex", + "type": 5 + }, + "OnStart": { + "field": "m_OnStart", + "classname": "CEntityIOOutput", + "type": 16 + }, + "OnCompletion": { + "field": "m_OnCompletion", + "classname": "CEntityIOOutput", + "type": 16 + }, + "OnCanceled": { + "field": "m_OnCanceled", + "classname": "CEntityIOOutput", + "type": 16 + }, + "OnPaused": { + "field": "m_OnPaused", + "classname": "CEntityIOOutput", + "type": 16 + }, + "OnResumed": { + "field": "m_OnResumed", + "classname": "CEntityIOOutput", + "type": 16 + }, + "OnTrigger": { + "field": "m_OnTrigger", + "type": 45, + "size": 16 + }, + "InterruptScene": { + "field": "m_hInterruptScene", + "type": 17, + "classname": "CSceneEntity" + }, + "InterruptCount": { + "field": "m_nInterruptCount", + "type": 2 + }, + "SceneMissing": { + "field": "m_bSceneMissing", + "type": 10 + }, + "Interrupted": { + "field": "m_bInterrupted", + "type": 10 + }, + "CompletedEarly": { + "field": "m_bCompletedEarly", + "type": 10 + }, + "InterruptSceneFinished": { + "field": "m_bInterruptSceneFinished", + "type": 10 + }, + "Restoring": { + "field": "m_bRestoring", + "type": 10 + }, + "SoundName": { + "field": "m_iszSoundName", + "type": 13 + }, + "SequenceName": { + "field": "m_iszSequenceName", + "type": 13 + }, + "Actor": { + "field": "m_hActor", + "type": 17, + "classname": "CBaseFlex" + }, + "Activator": { + "field": "m_hActivator", + "type": 17, + "classname": "CBaseEntity" + }, + "BusyActor": { + "field": "m_BusyActor", + "type": 2 + }, + "PlayerDeathBehavior": { + "field": "m_iPlayerDeathBehavior", + "type": 6 + }, + "Parent": { + "field": "CPointEntity", + "type": 11 + } + }, + "CSceneEntityAlias_logic_choreographed_scene": { + "Parent": { + "field": "CSceneEntity", + "type": 11 + } + }, + "CSceneListManager": { + "Scenes": { + "field": "m_iszScenes", + "type": 26, + "size": 16 + }, + "Scenes1": { + "field": "m_hScenes", + "type": 46, + "size": 16 + }, + "Parent": { + "field": "CLogicalEntity", + "type": 11 + } + }, + "CScriptItem": { + "MoveTypeOverride": { + "field": "m_MoveTypeOverride", + "type": 4 + }, + "Parent": { + "field": "CItem", + "type": 11 + } + }, + "CScriptNavBlocker": { + "Extent": { + "field": "m_vExtent", + "type": 21 + }, + "Parent": { + "field": "CFuncNavBlocker", + "type": 11 + } + }, + "CScriptTriggerHurt": { + "Extent": { + "field": "m_vExtent", + "type": 21 + }, + "Parent": { + "field": "CTriggerHurt", + "type": 11 + } + }, + "CScriptTriggerMultiple": { + "Extent": { + "field": "m_vExtent", + "type": 21 + }, + "Parent": { + "field": "CTriggerMultiple", + "type": 11 + } + }, + "CScriptTriggerOnce": { + "Extent": { + "field": "m_vExtent", + "type": 21 + }, + "Parent": { + "field": "CTriggerOnce", + "type": 11 + } + }, + "CScriptTriggerPush": { + "Extent": { + "field": "m_vExtent", + "type": 21 + }, + "Parent": { + "field": "CTriggerPush", + "type": 11 + } + }, + "CScriptedSequence": { + "Entry": { + "field": "m_iszEntry", + "type": 13 + }, + "PreIdle": { + "field": "m_iszPreIdle", + "type": 13 + }, + "Play": { + "field": "m_iszPlay", + "type": 13 + }, + "PostIdle": { + "field": "m_iszPostIdle", + "type": 13 + }, + "ModifierToAddOnPlay": { + "field": "m_iszModifierToAddOnPlay", + "type": 13 + }, + "NextScript": { + "field": "m_iszNextScript", + "type": 13 + }, + "Entity": { + "field": "m_iszEntity", + "type": 13 + }, + "SyncGroup": { + "field": "m_iszSyncGroup", + "type": 13 + }, + "MoveTo": { + "field": "m_nMoveTo", + "type": 6 + }, + "MoveToGait": { + "field": "m_nMoveToGait", + "type": 4 + }, + "HeldWeaponBehavior": { + "field": "m_nHeldWeaponBehavior", + "type": 6 + }, + "IsPlayingPreIdle": { + "field": "m_bIsPlayingPreIdle", + "type": 10 + }, + "IsPlayingEntry": { + "field": "m_bIsPlayingEntry", + "type": 10 + }, + "IsPlayingAction": { + "field": "m_bIsPlayingAction", + "type": 10 + }, + "IsPlayingPostIdle": { + "field": "m_bIsPlayingPostIdle", + "type": 10 + }, + "DontRotateOther": { + "field": "m_bDontRotateOther", + "type": 10 + }, + "IsRepeatable": { + "field": "m_bIsRepeatable", + "type": 10 + }, + "ShouldLeaveCorpse": { + "field": "m_bShouldLeaveCorpse", + "type": 10 + }, + "StartOnSpawn": { + "field": "m_bStartOnSpawn", + "type": 10 + }, + "DisallowInterrupts": { + "field": "m_bDisallowInterrupts", + "type": 10 + }, + "CanOverrideNPCState": { + "field": "m_bCanOverrideNPCState", + "type": 10 + }, + "DontTeleportAtEnd": { + "field": "m_bDontTeleportAtEnd", + "type": 10 + }, + "HighPriority": { + "field": "m_bHighPriority", + "type": 10 + }, + "HideDebugComplaints": { + "field": "m_bHideDebugComplaints", + "type": 10 + }, + "ContinueOnDeath": { + "field": "m_bContinueOnDeath", + "type": 10 + }, + "LoopPreIdleSequence": { + "field": "m_bLoopPreIdleSequence", + "type": 10 + }, + "LoopActionSequence": { + "field": "m_bLoopActionSequence", + "type": 10 + }, + "LoopPostIdleSequence": { + "field": "m_bLoopPostIdleSequence", + "type": 10 + }, + "SynchPostIdles": { + "field": "m_bSynchPostIdles", + "type": 10 + }, + "IgnoreLookAt": { + "field": "m_bIgnoreLookAt", + "type": 10 + }, + "IgnoreGravity": { + "field": "m_bIgnoreGravity", + "type": 10 + }, + "DisableNPCCollisions": { + "field": "m_bDisableNPCCollisions", + "type": 10 + }, + "KeepAnimgraphLockedPost": { + "field": "m_bKeepAnimgraphLockedPost", + "type": 10 + }, + "DontAddModifiers": { + "field": "m_bDontAddModifiers", + "type": 10 + }, + "Radius": { + "field": "m_flRadius", + "type": 8 + }, + "Repeat": { + "field": "m_flRepeat", + "type": 8 + }, + "PlayAnimFadeInTime": { + "field": "m_flPlayAnimFadeInTime", + "type": 8 + }, + "MoveInterpTime": { + "field": "m_flMoveInterpTime", + "type": 8 + }, + "AngRate": { + "field": "m_flAngRate", + "type": 8 + }, + "WaitUntilMoveCompletesToStartAnimation": { + "field": "m_bWaitUntilMoveCompletesToStartAnimation", + "type": 10 + }, + "NotReadySequenceCount": { + "field": "m_nNotReadySequenceCount", + "type": 2 + }, + "StartTime": { + "field": "m_startTime", + "type": 8 + }, + "WaitForBeginSequence": { + "field": "m_bWaitForBeginSequence", + "type": 10 + }, + "Saved_effects": { + "field": "m_saved_effects", + "type": 2 + }, + "SavedFlags": { + "field": "m_savedFlags", + "type": 2 + }, + "SavedCollisionGroup": { + "field": "m_savedCollisionGroup", + "type": 2 + }, + "Interruptable": { + "field": "m_bInterruptable", + "type": 10 + }, + "SequenceStarted": { + "field": "m_sequenceStarted", + "type": 10 + }, + "PositionRelativeToOtherEntity": { + "field": "m_bPositionRelativeToOtherEntity", + "type": 10 + }, + "TargetEnt": { + "field": "m_hTargetEnt", + "type": 17, + "classname": "CBaseEntity" + }, + "NextCine": { + "field": "m_hNextCine", + "type": 17, + "classname": "CScriptedSequence" + }, + "Thinking": { + "field": "m_bThinking", + "type": 10 + }, + "InitiatedSelfDelete": { + "field": "m_bInitiatedSelfDelete", + "type": 10 + }, + "IsTeleportingDueToMoveTo": { + "field": "m_bIsTeleportingDueToMoveTo", + "type": 10 + }, + "AllowCustomInterruptConditions": { + "field": "m_bAllowCustomInterruptConditions", + "type": 10 + }, + "ForcedTarget": { + "field": "m_hForcedTarget", + "type": 17, + "classname": "CBaseAnimGraph" + }, + "DontCancelOtherSequences": { + "field": "m_bDontCancelOtherSequences", + "type": 10 + }, + "ForceSynch": { + "field": "m_bForceSynch", + "type": 10 + }, + "PreventUpdateYawOnFinish": { + "field": "m_bPreventUpdateYawOnFinish", + "type": 10 + }, + "EnsureOnNavmeshOnFinish": { + "field": "m_bEnsureOnNavmeshOnFinish", + "type": 10 + }, + "OnDeathBehavior": { + "field": "m_onDeathBehavior", + "type": 6 + }, + "ConflictResponse": { + "field": "m_ConflictResponse", + "type": 6 + }, + "OnBeginSequence": { + "field": "m_OnBeginSequence", + "classname": "CEntityIOOutput", + "type": 16 + }, + "OnActionStartOrLoop": { + "field": "m_OnActionStartOrLoop", + "classname": "CEntityIOOutput", + "type": 16 + }, + "OnEndSequence": { + "field": "m_OnEndSequence", + "classname": "CEntityIOOutput", + "type": 16 + }, + "OnPostIdleEndSequence": { + "field": "m_OnPostIdleEndSequence", + "classname": "CEntityIOOutput", + "type": 16 + }, + "OnCancelSequence": { + "field": "m_OnCancelSequence", + "classname": "CEntityIOOutput", + "type": 16 + }, + "OnCancelFailedSequence": { + "field": "m_OnCancelFailedSequence", + "classname": "CEntityIOOutput", + "type": 16 + }, + "OnScriptEvent": { + "field": "m_OnScriptEvent", + "type": 45, + "size": 8 + }, + "InteractionMainEntity": { + "field": "m_hInteractionMainEntity", + "type": 17, + "classname": "CBaseEntity" + }, + "PlayerDeathBehavior": { + "field": "m_iPlayerDeathBehavior", + "type": 2 + }, + "Parent": { + "field": "CBaseEntity", + "type": 11 + } + }, + "CSensorGrenade": { + "Parent": { + "field": "CBaseCSGrenade", + "type": 11 + } + }, + "CSensorGrenadeProjectile": { + "ExpireTime": { + "field": "m_fExpireTime", + "type": 8 + }, + "NextDetectPlayerSound": { + "field": "m_fNextDetectPlayerSound", + "type": 8 + }, + "DisplayGrenade": { + "field": "m_hDisplayGrenade", + "type": 17, + "classname": "CBaseEntity" + }, + "Parent": { + "field": "CBaseCSGrenadeProjectile", + "type": 11 + } + }, + "CServerOnlyEntity": { + "Parent": { + "field": "CBaseEntity", + "type": 11 + } + }, + "CServerOnlyPointEntity": { + "Parent": { + "field": "CServerOnlyEntity", + "type": 11 + } + }, + "CServerRagdollTrigger": { + "Parent": { + "field": "CBaseTrigger", + "type": 11 + } + }, + "CShatterGlassShard": { + "ShardHandle": { + "field": "m_hShardHandle", + "type": 6 + }, + "PanelVertices": { + "field": "m_vecPanelVertices", + "type": 64 + }, + "LocalPanelSpaceOrigin": { + "field": "m_vLocalPanelSpaceOrigin", + "type": 22 + }, + "PhysicsEntity": { + "field": "m_hPhysicsEntity", + "type": 17, + "classname": "CShatterGlassShardPhysics" + }, + "ParentPanel": { + "field": "m_hParentPanel", + "type": 17, + "classname": "CFuncShatterglass" + }, + "ParentShard": { + "field": "m_hParentShard", + "type": 6 + }, + "ShatterStressType": { + "field": "m_ShatterStressType", + "type": 4 + }, + "StressVelocity": { + "field": "m_vecStressVelocity", + "type": 21 + }, + "CreatedModel": { + "field": "m_bCreatedModel", + "type": 10 + }, + "LongestEdge": { + "field": "m_flLongestEdge", + "type": 8 + }, + "ShortestEdge": { + "field": "m_flShortestEdge", + "type": 8 + }, + "LongestAcross": { + "field": "m_flLongestAcross", + "type": 8 + }, + "ShortestAcross": { + "field": "m_flShortestAcross", + "type": 8 + }, + "SumOfAllEdges": { + "field": "m_flSumOfAllEdges", + "type": 8 + }, + "Area": { + "field": "m_flArea", + "type": 8 + }, + "OnFrameEdge": { + "field": "m_nOnFrameEdge", + "type": 4 + }, + "SubShardGeneration": { + "field": "m_nSubShardGeneration", + "type": 2 + }, + "AverageVertPosition": { + "field": "m_vecAverageVertPosition", + "type": 22 + }, + "AverageVertPositionIsValid": { + "field": "m_bAverageVertPositionIsValid", + "type": 10 + }, + "PanelSpaceStressPositionA": { + "field": "m_vecPanelSpaceStressPositionA", + "type": 22 + }, + "PanelSpaceStressPositionB": { + "field": "m_vecPanelSpaceStressPositionB", + "type": 22 + }, + "StressPositionAIsValid": { + "field": "m_bStressPositionAIsValid", + "type": 10 + }, + "StressPositionBIsValid": { + "field": "m_bStressPositionBIsValid", + "type": 10 + }, + "FlaggedForRemoval": { + "field": "m_bFlaggedForRemoval", + "type": 10 + }, + "PhysicsEntitySpawnedAtTime": { + "field": "m_flPhysicsEntitySpawnedAtTime", + "type": 8 + }, + "EntityHittingMe": { + "field": "m_hEntityHittingMe", + "type": 17, + "classname": "CBaseEntity" + }, + "Neighbors": { + "field": "m_vecNeighbors", + "type": 57 + } + }, + "CShatterGlassShardPhysics": { + "Debris": { + "field": "m_bDebris", + "type": 10 + }, + "ParentShard": { + "field": "m_hParentShard", + "type": 6 + }, + "ShardDesc": { + "field": "m_ShardDesc", + "classname": "shard_model_desc_t", + "type": 16 + }, + "Parent": { + "field": "CPhysicsProp", + "type": 11 + } + }, + "CShower": { + "Parent": { + "field": "CModelPointEntity", + "type": 11 + } + }, + "CSimpleMarkupVolumeTagged": { + "Parent": { + "field": "CMarkupVolumeTagged", + "type": 11 + } + }, + "CSingleplayRules": { + "SinglePlayerGameEnding": { + "field": "m_bSinglePlayerGameEnding", + "type": 10 + }, + "Parent": { + "field": "CGameRules", + "type": 11 + } + }, + "CSkyCamera": { + "SkyboxData": { + "field": "m_skyboxData", + "classname": "sky3dparams_t", + "type": 16 + }, + "SkyboxSlotToken": { + "field": "m_skyboxSlotToken", + "type": 12 + }, + "UseAngles": { + "field": "m_bUseAngles", + "type": 10 + }, + "Next": { + "field": "m_pNext", + "classname": "CSkyCamera", + "type": 24 + }, + "Parent": { + "field": "CBaseEntity", + "type": 11 + } + }, + "CSmokeGrenade": { + "Parent": { + "field": "CBaseCSGrenade", + "type": 11 + } + }, + "CSmokeGrenadeProjectile": { + "SmokeEffectTickBegin": { + "field": "m_nSmokeEffectTickBegin", + "type": 2 + }, + "DidSmokeEffect": { + "field": "m_bDidSmokeEffect", + "type": 10 + }, + "RandomSeed": { + "field": "m_nRandomSeed", + "type": 2 + }, + "SmokeColor": { + "field": "m_vSmokeColor", + "type": 21 + }, + "SmokeDetonationPos": { + "field": "m_vSmokeDetonationPos", + "type": 21 + }, + "VoxelFrameData": { + "field": "m_VoxelFrameData", + "type": 55 + }, + "VoxelFrameDataSize": { + "field": "m_nVoxelFrameDataSize", + "type": 2 + }, + "VoxelUpdate": { + "field": "m_nVoxelUpdate", + "type": 2 + }, + "LastBounce": { + "field": "m_flLastBounce", + "type": 8 + }, + "FllastSimulationTime": { + "field": "m_fllastSimulationTime", + "type": 8 + }, + "ExplodeFromInferno": { + "field": "m_bExplodeFromInferno", + "type": 10 + }, + "Parent": { + "field": "CBaseCSGrenadeProjectile", + "type": 11 + } + }, + "CSmoothFunc": { + "SmoothAmplitude": { + "field": "m_flSmoothAmplitude", + "type": 8 + }, + "SmoothBias": { + "field": "m_flSmoothBias", + "type": 8 + }, + "SmoothDuration": { + "field": "m_flSmoothDuration", + "type": 8 + }, + "SmoothRemainingTime": { + "field": "m_flSmoothRemainingTime", + "type": 8 + }, + "SmoothDir": { + "field": "m_nSmoothDir", + "type": 2 + } + }, + "CSound": { + "Owner": { + "field": "m_hOwner", + "type": 17, + "classname": "CBaseEntity" + }, + "Target": { + "field": "m_hTarget", + "type": 17, + "classname": "CBaseEntity" + }, + "Volume": { + "field": "m_iVolume", + "type": 2 + }, + "OcclusionScale": { + "field": "m_flOcclusionScale", + "type": 8 + }, + "NextAudible": { + "field": "m_iNextAudible", + "type": 2 + }, + "ExpireTime": { + "field": "m_flExpireTime", + "type": 8 + }, + "Next": { + "field": "m_iNext", + "type": 1 + }, + "NoExpirationTime": { + "field": "m_bNoExpirationTime", + "type": 10 + }, + "OwnerChannelIndex": { + "field": "m_ownerChannelIndex", + "type": 2 + }, + "Origin": { + "field": "m_vecOrigin", + "type": 21 + }, + "HasOwner": { + "field": "m_bHasOwner", + "type": 10 + } + }, + "CSoundAreaEntityBase": { + "Disabled": { + "field": "m_bDisabled", + "type": 10 + }, + "SoundAreaType": { + "field": "m_iszSoundAreaType", + "type": 13 + }, + "Pos": { + "field": "m_vPos", + "type": 21 + }, + "Parent": { + "field": "CBaseEntity", + "type": 11 + } + }, + "CSoundAreaEntityOrientedBox": { + "Min": { + "field": "m_vMin", + "type": 21 + }, + "Max": { + "field": "m_vMax", + "type": 21 + }, + "Parent": { + "field": "CSoundAreaEntityBase", + "type": 11 + } + }, + "CSoundAreaEntitySphere": { + "Radius": { + "field": "m_flRadius", + "type": 8 + }, + "Parent": { + "field": "CSoundAreaEntityBase", + "type": 11 + } + }, + "CSoundEnt": { + "FreeSound": { + "field": "m_iFreeSound", + "type": 2 + }, + "ActiveSound": { + "field": "m_iActiveSound", + "type": 2 + }, + "CLastActiveSounds": { + "field": "m_cLastActiveSounds", + "type": 2 + }, + "SoundPool": { + "field": "m_SoundPool", + "type": 45, + "size": 128 + }, + "Parent": { + "field": "CPointEntity", + "type": 11 + } + }, + "CSoundEventAABBEntity": { + "Mins": { + "field": "m_vMins", + "type": 21 + }, + "Maxs": { + "field": "m_vMaxs", + "type": 21 + }, + "Parent": { + "field": "CSoundEventEntity", + "type": 11 + } + }, + "CSoundEventEntity": { + "StartOnSpawn": { + "field": "m_bStartOnSpawn", + "type": 10 + }, + "ToLocalPlayer": { + "field": "m_bToLocalPlayer", + "type": 10 + }, + "StopOnNew": { + "field": "m_bStopOnNew", + "type": 10 + }, + "SaveRestore": { + "field": "m_bSaveRestore", + "type": 10 + }, + "SavedIsPlaying": { + "field": "m_bSavedIsPlaying", + "type": 10 + }, + "SavedElapsedTime": { + "field": "m_flSavedElapsedTime", + "type": 8 + }, + "SourceEntityName": { + "field": "m_iszSourceEntityName", + "type": 13 + }, + "AttachmentName": { + "field": "m_iszAttachmentName", + "type": 13 + }, + "OnSoundFinished": { + "field": "m_onSoundFinished", + "classname": "CEntityIOOutput", + "type": 16 + }, + "ClientCullRadius": { + "field": "m_flClientCullRadius", + "type": 8 + }, + "SoundName": { + "field": "m_iszSoundName", + "type": 13 + }, + "Source": { + "field": "m_hSource", + "type": 17, + "classname": "CEntityInstance" + }, + "EntityIndexSelection": { + "field": "m_nEntityIndexSelection", + "type": 2 + }, + "Parent": { + "field": "CBaseEntity", + "type": 11 + } + }, + "CSoundEventEntityAlias_snd_event_point": { + "Parent": { + "field": "CSoundEventEntity", + "type": 11 + } + }, + "CSoundEventOBBEntity": { + "Mins": { + "field": "m_vMins", + "type": 21 + }, + "Maxs": { + "field": "m_vMaxs", + "type": 21 + }, + "Parent": { + "field": "CSoundEventEntity", + "type": 11 + } + }, + "CSoundEventParameter": { + "ParamName": { + "field": "m_iszParamName", + "type": 13 + }, + "FloatValue": { + "field": "m_flFloatValue", + "type": 8 + }, + "Parent": { + "field": "CBaseEntity", + "type": 11 + } + }, + "CSoundEventPathCornerEntity": { + "PathCorner": { + "field": "m_iszPathCorner", + "type": 13 + }, + "CountMax": { + "field": "m_iCountMax", + "type": 2 + }, + "DistanceMax": { + "field": "m_flDistanceMax", + "type": 8 + }, + "DistMaxSqr": { + "field": "m_flDistMaxSqr", + "type": 8 + }, + "DotProductMax": { + "field": "m_flDotProductMax", + "type": 8 + }, + "Playing": { + "field": "m_bPlaying", + "type": 10 + }, + "Parent": { + "field": "CSoundEventEntity", + "type": 11 + } + }, + "CSoundEventSphereEntity": { + "Radius": { + "field": "m_flRadius", + "type": 8 + }, + "Parent": { + "field": "CSoundEventEntity", + "type": 11 + } + }, + "CSoundOpvarSetAABBEntity": { + "DistanceInnerMins": { + "field": "m_vDistanceInnerMins", + "type": 21 + }, + "DistanceInnerMaxs": { + "field": "m_vDistanceInnerMaxs", + "type": 21 + }, + "DistanceOuterMins": { + "field": "m_vDistanceOuterMins", + "type": 21 + }, + "DistanceOuterMaxs": { + "field": "m_vDistanceOuterMaxs", + "type": 21 + }, + "AABBDirection": { + "field": "m_nAABBDirection", + "type": 2 + }, + "InnerMins": { + "field": "m_vInnerMins", + "type": 21 + }, + "InnerMaxs": { + "field": "m_vInnerMaxs", + "type": 21 + }, + "OuterMins": { + "field": "m_vOuterMins", + "type": 21 + }, + "OuterMaxs": { + "field": "m_vOuterMaxs", + "type": 21 + }, + "Parent": { + "field": "CSoundOpvarSetPointEntity", + "type": 11 + } + }, + "CSoundOpvarSetAutoRoomEntity": { + "Size": { + "field": "m_flSize", + "type": 8 + }, + "HeightTolerance": { + "field": "m_flHeightTolerance", + "type": 8 + }, + "SizeSqr": { + "field": "m_flSizeSqr", + "type": 8 + }, + "Parent": { + "field": "CSoundOpvarSetPointEntity", + "type": 11 + } + }, + "CSoundOpvarSetEntity": { + "StackName": { + "field": "m_iszStackName", + "type": 13 + }, + "OperatorName": { + "field": "m_iszOperatorName", + "type": 13 + }, + "OpvarName": { + "field": "m_iszOpvarName", + "type": 13 + }, + "OpvarType": { + "field": "m_nOpvarType", + "type": 2 + }, + "OpvarIndex": { + "field": "m_nOpvarIndex", + "type": 2 + }, + "OpvarValue": { + "field": "m_flOpvarValue", + "type": 8 + }, + "OpvarValueString": { + "field": "m_OpvarValueString", + "type": 13 + }, + "SetOnSpawn": { + "field": "m_bSetOnSpawn", + "type": 10 + }, + "Parent": { + "field": "CBaseEntity", + "type": 11 + } + }, + "CSoundOpvarSetOBBEntity": { + "Parent": { + "field": "CSoundOpvarSetAABBEntity", + "type": 11 + } + }, + "CSoundOpvarSetOBBWindEntity": { + "Mins": { + "field": "m_vMins", + "type": 21 + }, + "Maxs": { + "field": "m_vMaxs", + "type": 21 + }, + "DistanceMins": { + "field": "m_vDistanceMins", + "type": 21 + }, + "DistanceMaxs": { + "field": "m_vDistanceMaxs", + "type": 21 + }, + "WindMin": { + "field": "m_flWindMin", + "type": 8 + }, + "WindMax": { + "field": "m_flWindMax", + "type": 8 + }, + "WindMapMin": { + "field": "m_flWindMapMin", + "type": 8 + }, + "WindMapMax": { + "field": "m_flWindMapMax", + "type": 8 + }, + "Parent": { + "field": "CSoundOpvarSetPointBase", + "type": 11 + } + }, + "CSoundOpvarSetPathCornerEntity": { + "DistMinSqr": { + "field": "m_flDistMinSqr", + "type": 8 + }, + "DistMaxSqr": { + "field": "m_flDistMaxSqr", + "type": 8 + }, + "PathCornerEntityName": { + "field": "m_iszPathCornerEntityName", + "type": 13 + }, + "Parent": { + "field": "CSoundOpvarSetPointEntity", + "type": 11 + } + }, + "CSoundOpvarSetPointBase": { + "Disabled": { + "field": "m_bDisabled", + "type": 10 + }, + "Source": { + "field": "m_hSource", + "type": 17, + "classname": "CEntityInstance" + }, + "SourceEntityName": { + "field": "m_iszSourceEntityName", + "type": 13 + }, + "LastPosition": { + "field": "m_vLastPosition", + "type": 21 + }, + "StackName": { + "field": "m_iszStackName", + "type": 13 + }, + "OperatorName": { + "field": "m_iszOperatorName", + "type": 13 + }, + "OpvarName": { + "field": "m_iszOpvarName", + "type": 13 + }, + "OpvarIndex": { + "field": "m_iOpvarIndex", + "type": 2 + }, + "UseAutoCompare": { + "field": "m_bUseAutoCompare", + "type": 10 + }, + "Parent": { + "field": "CBaseEntity", + "type": 11 + } + }, + "CSoundOpvarSetPointEntity": { + "OnEnter": { + "field": "m_OnEnter", + "classname": "CEntityIOOutput", + "type": 16 + }, + "OnExit": { + "field": "m_OnExit", + "classname": "CEntityIOOutput", + "type": 16 + }, + "AutoDisable": { + "field": "m_bAutoDisable", + "type": 10 + }, + "DistanceMin": { + "field": "m_flDistanceMin", + "type": 8 + }, + "DistanceMax": { + "field": "m_flDistanceMax", + "type": 8 + }, + "DistanceMapMin": { + "field": "m_flDistanceMapMin", + "type": 8 + }, + "DistanceMapMax": { + "field": "m_flDistanceMapMax", + "type": 8 + }, + "OcclusionRadius": { + "field": "m_flOcclusionRadius", + "type": 8 + }, + "OcclusionMin": { + "field": "m_flOcclusionMin", + "type": 8 + }, + "OcclusionMax": { + "field": "m_flOcclusionMax", + "type": 8 + }, + "ValSetOnDisable": { + "field": "m_flValSetOnDisable", + "type": 8 + }, + "SetValueOnDisable": { + "field": "m_bSetValueOnDisable", + "type": 10 + }, + "Reloading": { + "field": "m_bReloading", + "type": 10 + }, + "SimulationMode": { + "field": "m_nSimulationMode", + "type": 2 + }, + "VisibilitySamples": { + "field": "m_nVisibilitySamples", + "type": 2 + }, + "DynamicProxyPoint": { + "field": "m_vDynamicProxyPoint", + "type": 21 + }, + "DynamicMaximumOcclusion": { + "field": "m_flDynamicMaximumOcclusion", + "type": 8 + }, + "DynamicEntity": { + "field": "m_hDynamicEntity", + "type": 17, + "classname": "CEntityInstance" + }, + "DynamicEntityName": { + "field": "m_iszDynamicEntityName", + "type": 13 + }, + "PathingDistanceNormFactor": { + "field": "m_flPathingDistanceNormFactor", + "type": 8 + }, + "PathingSourcePos": { + "field": "m_vPathingSourcePos", + "type": 21 + }, + "PathingListenerPos": { + "field": "m_vPathingListenerPos", + "type": 21 + }, + "PathingDirection": { + "field": "m_vPathingDirection", + "type": 21 + }, + "PathingSourceIndex": { + "field": "m_nPathingSourceIndex", + "type": 2 + }, + "Parent": { + "field": "CSoundOpvarSetPointBase", + "type": 11 + } + }, + "CSoundStackSave": { + "StackName": { + "field": "m_iszStackName", + "type": 13 + }, + "Parent": { + "field": "CLogicalEntity", + "type": 11 + } + }, + "CSplineConstraint": { + "AnchorOffsetRestore": { + "field": "m_vAnchorOffsetRestore", + "type": 21 + }, + "Parent": { + "field": "CPhysConstraint", + "type": 11 + } + }, + "CSpotlightEnd": { + "LightScale": { + "field": "m_flLightScale", + "type": 8 + }, + "Radius": { + "field": "m_Radius", + "type": 8 + }, + "SpotlightDir": { + "field": "m_vSpotlightDir", + "type": 21 + }, + "SpotlightOrg": { + "field": "m_vSpotlightOrg", + "type": 21 + }, + "Parent": { + "field": "CBaseModelEntity", + "type": 11 + } + }, + "CSprite": { + "AttachedToEntity": { + "field": "m_hAttachedToEntity", + "type": 17, + "classname": "CBaseEntity" + }, + "SpriteFramerate": { + "field": "m_flSpriteFramerate", + "type": 8 + }, + "Frame": { + "field": "m_flFrame", + "type": 8 + }, + "DieTime": { + "field": "m_flDieTime", + "type": 8 + }, + "Brightness": { + "field": "m_nBrightness", + "type": 6 + }, + "BrightnessDuration": { + "field": "m_flBrightnessDuration", + "type": 8 + }, + "SpriteScale": { + "field": "m_flSpriteScale", + "type": 8 + }, + "ScaleDuration": { + "field": "m_flScaleDuration", + "type": 8 + }, + "WorldSpaceScale": { + "field": "m_bWorldSpaceScale", + "type": 10 + }, + "GlowProxySize": { + "field": "m_flGlowProxySize", + "type": 8 + }, + "HDRColorScale": { + "field": "m_flHDRColorScale", + "type": 8 + }, + "LastTime": { + "field": "m_flLastTime", + "type": 8 + }, + "MaxFrame": { + "field": "m_flMaxFrame", + "type": 8 + }, + "StartScale": { + "field": "m_flStartScale", + "type": 8 + }, + "DestScale": { + "field": "m_flDestScale", + "type": 8 + }, + "ScaleTimeStart": { + "field": "m_flScaleTimeStart", + "type": 8 + }, + "StartBrightness": { + "field": "m_nStartBrightness", + "type": 2 + }, + "DestBrightness": { + "field": "m_nDestBrightness", + "type": 2 + }, + "BrightnessTimeStart": { + "field": "m_flBrightnessTimeStart", + "type": 8 + }, + "SpriteWidth": { + "field": "m_nSpriteWidth", + "type": 2 + }, + "SpriteHeight": { + "field": "m_nSpriteHeight", + "type": 2 + }, + "Parent": { + "field": "CBaseModelEntity", + "type": 11 + } + }, + "CSpriteAlias_env_glow": { + "Parent": { + "field": "CSprite", + "type": 11 + } + }, + "CSun": { + "Direction": { + "field": "m_vDirection", + "type": 21 + }, + "Overlay": { + "field": "m_clrOverlay", + "type": 19 + }, + "EffectName": { + "field": "m_iszEffectName", + "type": 13 + }, + "SSEffectName": { + "field": "m_iszSSEffectName", + "type": 13 + }, + "On": { + "field": "m_bOn", + "type": 10 + }, + "BmaxColor": { + "field": "m_bmaxColor", + "type": 10 + }, + "Size": { + "field": "m_flSize", + "type": 8 + }, + "Rotation": { + "field": "m_flRotation", + "type": 8 + }, + "HazeScale": { + "field": "m_flHazeScale", + "type": 8 + }, + "AlphaHaze": { + "field": "m_flAlphaHaze", + "type": 8 + }, + "AlphaHdr": { + "field": "m_flAlphaHdr", + "type": 8 + }, + "AlphaScale": { + "field": "m_flAlphaScale", + "type": 8 + }, + "HDRColorScale": { + "field": "m_flHDRColorScale", + "type": 8 + }, + "FarZScale": { + "field": "m_flFarZScale", + "type": 8 + }, + "Parent": { + "field": "CBaseModelEntity", + "type": 11 + } + }, + "CTankTargetChange": { + "NewTargetName": { + "field": "m_newTargetName", + "type": 13 + }, + "Parent": { + "field": "CPointEntity", + "type": 11 + } + }, + "CTankTrainAI": { + "Train": { + "field": "m_hTrain", + "type": 17, + "classname": "CFuncTrackTrain" + }, + "TargetEntity": { + "field": "m_hTargetEntity", + "type": 17, + "classname": "CBaseEntity" + }, + "SoundPlaying": { + "field": "m_soundPlaying", + "type": 2 + }, + "StartSoundName": { + "field": "m_startSoundName", + "type": 13 + }, + "EngineSoundName": { + "field": "m_engineSoundName", + "type": 13 + }, + "MovementSoundName": { + "field": "m_movementSoundName", + "type": 13 + }, + "TargetEntityName": { + "field": "m_targetEntityName", + "type": 13 + }, + "Parent": { + "field": "CPointEntity", + "type": 11 + } + }, + "CTeam": { + "Score": { + "field": "m_iScore", + "type": 2 + }, + "Teamname": { + "field": "m_szTeamname", + "type": 15, + "size": 129 + }, + "Parent": { + "field": "CBaseEntity", + "type": 11 + } + }, + "CTeamplayRules": { + "Parent": { + "field": "CMultiplayRules", + "type": 11 + } + }, + "CTestEffect": { + "Loop": { + "field": "m_iLoop", + "type": 2 + }, + "Beam": { + "field": "m_iBeam", + "type": 2 + }, + "Beam1": { + "field": "m_pBeam", + "classname": "CBeam", + "type": 24 + }, + "BeamTime": { + "field": "m_flBeamTime", + "type": 37, + "size": 24 + }, + "StartTime": { + "field": "m_flStartTime", + "type": 8 + }, + "Parent": { + "field": "CBaseEntity", + "type": 11 + } + }, + "CTextureBasedAnimatable": { + "Loop": { + "field": "m_bLoop", + "type": 10 + }, + "FPS": { + "field": "m_flFPS", + "type": 8 + }, + "AnimationBoundsMin": { + "field": "m_vAnimationBoundsMin", + "type": 21 + }, + "AnimationBoundsMax": { + "field": "m_vAnimationBoundsMax", + "type": 21 + }, + "StartTime": { + "field": "m_flStartTime", + "type": 8 + }, + "StartFrame": { + "field": "m_flStartFrame", + "type": 8 + }, + "Parent": { + "field": "CBaseModelEntity", + "type": 11 + } + }, + "CTimerEntity": { + "OnTimer": { + "field": "m_OnTimer", + "classname": "CEntityIOOutput", + "type": 16 + }, + "OnTimerHigh": { + "field": "m_OnTimerHigh", + "classname": "CEntityIOOutput", + "type": 16 + }, + "OnTimerLow": { + "field": "m_OnTimerLow", + "classname": "CEntityIOOutput", + "type": 16 + }, + "Disabled": { + "field": "m_iDisabled", + "type": 2 + }, + "InitialDelay": { + "field": "m_flInitialDelay", + "type": 8 + }, + "RefireTime": { + "field": "m_flRefireTime", + "type": 8 + }, + "UpDownState": { + "field": "m_bUpDownState", + "type": 10 + }, + "UseRandomTime": { + "field": "m_iUseRandomTime", + "type": 2 + }, + "PauseAfterFiring": { + "field": "m_bPauseAfterFiring", + "type": 10 + }, + "LowerRandomBound": { + "field": "m_flLowerRandomBound", + "type": 8 + }, + "UpperRandomBound": { + "field": "m_flUpperRandomBound", + "type": 8 + }, + "RemainingTime": { + "field": "m_flRemainingTime", + "type": 8 + }, + "Paused": { + "field": "m_bPaused", + "type": 10 + }, + "Parent": { + "field": "CLogicalEntity", + "type": 11 + } + }, + "CTonemapController2": { + "AutoExposureMin": { + "field": "m_flAutoExposureMin", + "type": 8 + }, + "AutoExposureMax": { + "field": "m_flAutoExposureMax", + "type": 8 + }, + "TonemapPercentTarget": { + "field": "m_flTonemapPercentTarget", + "type": 8 + }, + "TonemapPercentBrightPixels": { + "field": "m_flTonemapPercentBrightPixels", + "type": 8 + }, + "TonemapMinAvgLum": { + "field": "m_flTonemapMinAvgLum", + "type": 8 + }, + "ExposureAdaptationSpeedUp": { + "field": "m_flExposureAdaptationSpeedUp", + "type": 8 + }, + "ExposureAdaptationSpeedDown": { + "field": "m_flExposureAdaptationSpeedDown", + "type": 8 + }, + "TonemapEVSmoothingRange": { + "field": "m_flTonemapEVSmoothingRange", + "type": 8 + }, + "Parent": { + "field": "CBaseEntity", + "type": 11 + } + }, + "CTonemapController2Alias_env_tonemap_controller2": { + "Parent": { + "field": "CTonemapController2", + "type": 11 + } + }, + "CTonemapTrigger": { + "TonemapControllerName": { + "field": "m_tonemapControllerName", + "type": 13 + }, + "TonemapController": { + "field": "m_hTonemapController", + "type": 17, + "classname": "CEntityInstance" + }, + "Parent": { + "field": "CBaseTrigger", + "type": 11 + } + }, + "CTouchExpansionComponent": { + "Parent": { + "field": "CEntityComponent", + "type": 11 + } + }, + "CTriggerActiveWeaponDetect": { + "OnTouchedActiveWeapon": { + "field": "m_OnTouchedActiveWeapon", + "classname": "CEntityIOOutput", + "type": 16 + }, + "WeaponClassName": { + "field": "m_iszWeaponClassName", + "type": 13 + }, + "Parent": { + "field": "CBaseTrigger", + "type": 11 + } + }, + "CTriggerBombReset": { + "Parent": { + "field": "CBaseTrigger", + "type": 11 + } + }, + "CTriggerBrush": { + "OnStartTouch": { + "field": "m_OnStartTouch", + "classname": "CEntityIOOutput", + "type": 16 + }, + "OnEndTouch": { + "field": "m_OnEndTouch", + "classname": "CEntityIOOutput", + "type": 16 + }, + "OnUse": { + "field": "m_OnUse", + "classname": "CEntityIOOutput", + "type": 16 + }, + "InputFilter": { + "field": "m_iInputFilter", + "type": 2 + }, + "DontMessageParent": { + "field": "m_iDontMessageParent", + "type": 2 + }, + "Parent": { + "field": "CBaseModelEntity", + "type": 11 + } + }, + "CTriggerBuoyancy": { + "BuoyancyHelper": { + "field": "m_BuoyancyHelper", + "classname": "CBuoyancyHelper", + "type": 16 + }, + "FluidDensity": { + "field": "m_flFluidDensity", + "type": 8 + }, + "Parent": { + "field": "CBaseTrigger", + "type": 11 + } + }, + "CTriggerCallback": { + "Parent": { + "field": "CBaseTrigger", + "type": 11 + } + }, + "CTriggerDetectBulletFire": { + "PlayerFireOnly": { + "field": "m_bPlayerFireOnly", + "type": 10 + }, + "OnDetectedBulletFire": { + "field": "m_OnDetectedBulletFire", + "classname": "CEntityIOOutput", + "type": 16 + }, + "Parent": { + "field": "CBaseTrigger", + "type": 11 + } + }, + "CTriggerDetectExplosion": { + "OnDetectedExplosion": { + "field": "m_OnDetectedExplosion", + "classname": "CEntityIOOutput", + "type": 16 + }, + "Parent": { + "field": "CBaseTrigger", + "type": 11 + } + }, + "CTriggerFan": { + "FanOrigin": { + "field": "m_vFanOrigin", + "type": 21 + }, + "FanEnd": { + "field": "m_vFanEnd", + "type": 21 + }, + "Noise": { + "field": "m_vNoise", + "type": 21 + }, + "Force": { + "field": "m_flForce", + "type": 8 + }, + "RopeForceScale": { + "field": "m_flRopeForceScale", + "type": 8 + }, + "PlayerForce": { + "field": "m_flPlayerForce", + "type": 8 + }, + "RampTime": { + "field": "m_flRampTime", + "type": 8 + }, + "Falloff": { + "field": "m_bFalloff", + "type": 10 + }, + "PushPlayer": { + "field": "m_bPushPlayer", + "type": 10 + }, + "RampDown": { + "field": "m_bRampDown", + "type": 10 + }, + "AddNoise": { + "field": "m_bAddNoise", + "type": 10 + }, + "RampTimer": { + "field": "m_RampTimer", + "classname": "CountdownTimer", + "type": 16 + }, + "Parent": { + "field": "CBaseTrigger", + "type": 11 + } + }, + "CTriggerGameEvent": { + "StrStartTouchEventName": { + "field": "m_strStartTouchEventName", + "type": 14 + }, + "StrEndTouchEventName": { + "field": "m_strEndTouchEventName", + "type": 14 + }, + "StrTriggerID": { + "field": "m_strTriggerID", + "type": 14 + }, + "Parent": { + "field": "CBaseTrigger", + "type": 11 + } + }, + "CTriggerGravity": { + "Parent": { + "field": "CBaseTrigger", + "type": 11 + } + }, + "CTriggerHostageReset": { + "Parent": { + "field": "CBaseTrigger", + "type": 11 + } + }, + "CTriggerHurt": { + "OriginalDamage": { + "field": "m_flOriginalDamage", + "type": 8 + }, + "Damage": { + "field": "m_flDamage", + "type": 8 + }, + "DamageCap": { + "field": "m_flDamageCap", + "type": 8 + }, + "LastDmgTime": { + "field": "m_flLastDmgTime", + "type": 8 + }, + "ForgivenessDelay": { + "field": "m_flForgivenessDelay", + "type": 8 + }, + "BitsDamageInflict": { + "field": "m_bitsDamageInflict", + "type": 6 + }, + "DamageModel": { + "field": "m_damageModel", + "type": 2 + }, + "NoDmgForce": { + "field": "m_bNoDmgForce", + "type": 10 + }, + "DamageForce": { + "field": "m_vDamageForce", + "type": 21 + }, + "ThinkAlways": { + "field": "m_thinkAlways", + "type": 10 + }, + "HurtThinkPeriod": { + "field": "m_hurtThinkPeriod", + "type": 8 + }, + "OnHurt": { + "field": "m_OnHurt", + "classname": "CEntityIOOutput", + "type": 16 + }, + "OnHurtPlayer": { + "field": "m_OnHurtPlayer", + "classname": "CEntityIOOutput", + "type": 16 + }, + "Parent": { + "field": "CBaseTrigger", + "type": 11 + } + }, + "CTriggerImpact": { + "Magnitude": { + "field": "m_flMagnitude", + "type": 8 + }, + "Noise": { + "field": "m_flNoise", + "type": 8 + }, + "Viewkick": { + "field": "m_flViewkick", + "type": 8 + }, + "Parent": { + "field": "CTriggerMultiple", + "type": 11 + } + }, + "CTriggerLerpObject": { + "LerpTarget": { + "field": "m_iszLerpTarget", + "type": 13 + }, + "LerpTarget1": { + "field": "m_hLerpTarget", + "type": 17, + "classname": "CBaseEntity" + }, + "LerpTargetAttachment": { + "field": "m_iszLerpTargetAttachment", + "type": 13 + }, + "LerpDuration": { + "field": "m_flLerpDuration", + "type": 8 + }, + "LerpRestoreMoveType": { + "field": "m_bLerpRestoreMoveType", + "type": 10 + }, + "SingleLerpObject": { + "field": "m_bSingleLerpObject", + "type": 10 + }, + "LerpEffect": { + "field": "m_iszLerpEffect", + "type": 13 + }, + "LerpSound": { + "field": "m_iszLerpSound", + "type": 13 + }, + "AttachTouchingObject": { + "field": "m_bAttachTouchingObject", + "type": 10 + }, + "EntityToWaitForDisconnect": { + "field": "m_hEntityToWaitForDisconnect", + "type": 17, + "classname": "CBaseEntity" + }, + "OnLerpStarted": { + "field": "m_OnLerpStarted", + "classname": "CEntityIOOutput", + "type": 16 + }, + "OnLerpFinished": { + "field": "m_OnLerpFinished", + "classname": "CEntityIOOutput", + "type": 16 + }, + "Parent": { + "field": "CBaseTrigger", + "type": 11 + } + }, + "CTriggerLook": { + "LookTarget": { + "field": "m_hLookTarget", + "type": 17, + "classname": "CBaseEntity" + }, + "FieldOfView": { + "field": "m_flFieldOfView", + "type": 8 + }, + "LookTime": { + "field": "m_flLookTime", + "type": 8 + }, + "LookTimeTotal": { + "field": "m_flLookTimeTotal", + "type": 8 + }, + "LookTimeLast": { + "field": "m_flLookTimeLast", + "type": 8 + }, + "TimeoutDuration": { + "field": "m_flTimeoutDuration", + "type": 8 + }, + "TimeoutFired": { + "field": "m_bTimeoutFired", + "type": 10 + }, + "IsLooking": { + "field": "m_bIsLooking", + "type": 10 + }, + "2DFOV": { + "field": "m_b2DFOV", + "type": 10 + }, + "UseVelocity": { + "field": "m_bUseVelocity", + "type": 10 + }, + "TestOcclusion": { + "field": "m_bTestOcclusion", + "type": 10 + }, + "OnTimeout": { + "field": "m_OnTimeout", + "classname": "CEntityIOOutput", + "type": 16 + }, + "OnStartLook": { + "field": "m_OnStartLook", + "classname": "CEntityIOOutput", + "type": 16 + }, + "OnEndLook": { + "field": "m_OnEndLook", + "classname": "CEntityIOOutput", + "type": 16 + }, + "Parent": { + "field": "CTriggerOnce", + "type": 11 + } + }, + "CTriggerMultiple": { + "OnTrigger": { + "field": "m_OnTrigger", + "classname": "CEntityIOOutput", + "type": 16 + }, + "Parent": { + "field": "CBaseTrigger", + "type": 11 + } + }, + "CTriggerOnce": { + "Parent": { + "field": "CTriggerMultiple", + "type": 11 + } + }, + "CTriggerPhysics": { + "GravityScale": { + "field": "m_gravityScale", + "type": 8 + }, + "LinearLimit": { + "field": "m_linearLimit", + "type": 8 + }, + "LinearDamping": { + "field": "m_linearDamping", + "type": 8 + }, + "AngularLimit": { + "field": "m_angularLimit", + "type": 8 + }, + "AngularDamping": { + "field": "m_angularDamping", + "type": 8 + }, + "LinearForce": { + "field": "m_linearForce", + "type": 8 + }, + "Frequency": { + "field": "m_flFrequency", + "type": 8 + }, + "DampingRatio": { + "field": "m_flDampingRatio", + "type": 8 + }, + "LinearForcePointAt": { + "field": "m_vecLinearForcePointAt", + "type": 21 + }, + "CollapseToForcePoint": { + "field": "m_bCollapseToForcePoint", + "type": 10 + }, + "LinearForcePointAtWorld": { + "field": "m_vecLinearForcePointAtWorld", + "type": 21 + }, + "LinearForceDirection": { + "field": "m_vecLinearForceDirection", + "type": 21 + }, + "ConvertToDebrisWhenPossible": { + "field": "m_bConvertToDebrisWhenPossible", + "type": 10 + }, + "Parent": { + "field": "CBaseTrigger", + "type": 11 + } + }, + "CTriggerProximity": { + "MeasureTarget": { + "field": "m_hMeasureTarget", + "type": 17, + "classname": "CBaseEntity" + }, + "MeasureTarget1": { + "field": "m_iszMeasureTarget", + "type": 13 + }, + "Radius": { + "field": "m_fRadius", + "type": 8 + }, + "Touchers": { + "field": "m_nTouchers", + "type": 2 + }, + "Parent": { + "field": "CBaseTrigger", + "type": 11 + } + }, + "CTriggerPush": { + "PushEntitySpace": { + "field": "m_angPushEntitySpace", + "type": 20 + }, + "PushDirEntitySpace": { + "field": "m_vecPushDirEntitySpace", + "type": 21 + }, + "TriggerOnStartTouch": { + "field": "m_bTriggerOnStartTouch", + "type": 10 + }, + "UsePathSimple": { + "field": "m_bUsePathSimple", + "type": 10 + }, + "PathSimpleName": { + "field": "m_iszPathSimpleName", + "type": 13 + }, + "PathSimple": { + "field": "m_PathSimple", + "classname": "CPathSimple", + "type": 24 + }, + "SplinePushType": { + "field": "m_splinePushType", + "type": 6 + }, + "Parent": { + "field": "CBaseTrigger", + "type": 11 + } + }, + "CTriggerRemove": { + "OnRemove": { + "field": "m_OnRemove", + "classname": "CEntityIOOutput", + "type": 16 + }, + "Parent": { + "field": "CBaseTrigger", + "type": 11 + } + }, + "CTriggerSave": { + "ForceNewLevelUnit": { + "field": "m_bForceNewLevelUnit", + "type": 10 + }, + "DangerousTimer": { + "field": "m_fDangerousTimer", + "type": 8 + }, + "MinHitPoints": { + "field": "m_minHitPoints", + "type": 2 + }, + "Parent": { + "field": "CBaseTrigger", + "type": 11 + } + }, + "CTriggerSndSosOpvar": { + "Position": { + "field": "m_flPosition", + "type": 21 + }, + "CenterSize": { + "field": "m_flCenterSize", + "type": 8 + }, + "MinVal": { + "field": "m_flMinVal", + "type": 8 + }, + "MaxVal": { + "field": "m_flMaxVal", + "type": 8 + }, + "OpvarName": { + "field": "m_opvarName", + "type": 13 + }, + "StackName": { + "field": "m_stackName", + "type": 13 + }, + "OperatorName": { + "field": "m_operatorName", + "type": 13 + }, + "VolIs2D": { + "field": "m_bVolIs2D", + "type": 10 + }, + "OpvarNameChar": { + "field": "m_opvarNameChar", + "type": 15, + "size": 256 + }, + "StackNameChar": { + "field": "m_stackNameChar", + "type": 15, + "size": 256 + }, + "OperatorNameChar": { + "field": "m_operatorNameChar", + "type": 15, + "size": 256 + }, + "VecNormPos": { + "field": "m_VecNormPos", + "type": 21 + }, + "NormCenterSize": { + "field": "m_flNormCenterSize", + "type": 8 + }, + "Parent": { + "field": "CBaseTrigger", + "type": 11 + } + }, + "CTriggerSoundscape": { + "Soundscape": { + "field": "m_hSoundscape", + "type": 17, + "classname": "CEnvSoundscapeTriggerable" + }, + "SoundscapeName": { + "field": "m_SoundscapeName", + "type": 13 + }, + "Parent": { + "field": "CBaseTrigger", + "type": 11 + } + }, + "CTriggerTeleport": { + "Landmark": { + "field": "m_iLandmark", + "type": 13 + }, + "UseLandmarkAngles": { + "field": "m_bUseLandmarkAngles", + "type": 10 + }, + "MirrorPlayer": { + "field": "m_bMirrorPlayer", + "type": 10 + }, + "CheckDestIfClearForPlayer": { + "field": "m_bCheckDestIfClearForPlayer", + "type": 10 + }, + "Parent": { + "field": "CBaseTrigger", + "type": 11 + } + }, + "CTriggerToggleSave": { + "Parent": { + "field": "CBaseTrigger", + "type": 11 + } + }, + "CTriggerTripWire": { + "Parent": { + "field": "CBaseTrigger", + "type": 11 + } + }, + "CTriggerVolume": { + "FilterName": { + "field": "m_iFilterName", + "type": 13 + }, + "Filter": { + "field": "m_hFilter", + "type": 17, + "classname": "CBaseFilter" + }, + "Parent": { + "field": "CBaseModelEntity", + "type": 11 + } + }, + "CWaterBullet": { + "Parent": { + "field": "CBaseAnimGraph", + "type": 11 + } + }, + "CWeaponAWP": { + "Parent": { + "field": "CCSWeaponBaseGun", + "type": 11 + } + }, + "CWeaponAug": { + "Parent": { + "field": "CCSWeaponBaseGun", + "type": 11 + } + }, + "CWeaponBaseItem": { + "SequenceCompleteTimer": { + "field": "m_SequenceCompleteTimer", + "classname": "CountdownTimer", + "type": 16 + }, + "Redraw": { + "field": "m_bRedraw", + "type": 10 + }, + "Parent": { + "field": "CCSWeaponBase", + "type": 11 + } + }, + "CWeaponBizon": { + "Parent": { + "field": "CCSWeaponBaseGun", + "type": 11 + } + }, + "CWeaponCZ75a": { + "Parent": { + "field": "CCSWeaponBaseGun", + "type": 11 + } + }, + "CWeaponElite": { + "Parent": { + "field": "CCSWeaponBaseGun", + "type": 11 + } + }, + "CWeaponFamas": { + "Parent": { + "field": "CCSWeaponBaseGun", + "type": 11 + } + }, + "CWeaponFiveSeven": { + "Parent": { + "field": "CCSWeaponBaseGun", + "type": 11 + } + }, + "CWeaponG3SG1": { + "Parent": { + "field": "CCSWeaponBaseGun", + "type": 11 + } + }, + "CWeaponGalilAR": { + "Parent": { + "field": "CCSWeaponBaseGun", + "type": 11 + } + }, + "CWeaponGlock": { + "Parent": { + "field": "CCSWeaponBaseGun", + "type": 11 + } + }, + "CWeaponHKP2000": { + "Parent": { + "field": "CCSWeaponBaseGun", + "type": 11 + } + }, + "CWeaponM249": { + "Parent": { + "field": "CCSWeaponBaseGun", + "type": 11 + } + }, + "CWeaponM4A1": { + "Parent": { + "field": "CCSWeaponBaseGun", + "type": 11 + } + }, + "CWeaponM4A1Silencer": { + "Parent": { + "field": "CCSWeaponBaseGun", + "type": 11 + } + }, + "CWeaponMAC10": { + "Parent": { + "field": "CCSWeaponBaseGun", + "type": 11 + } + }, + "CWeaponMP5SD": { + "Parent": { + "field": "CCSWeaponBaseGun", + "type": 11 + } + }, + "CWeaponMP7": { + "Parent": { + "field": "CCSWeaponBaseGun", + "type": 11 + } + }, + "CWeaponMP9": { + "Parent": { + "field": "CCSWeaponBaseGun", + "type": 11 + } + }, + "CWeaponMag7": { + "Parent": { + "field": "CCSWeaponBaseGun", + "type": 11 + } + }, + "CWeaponNOVA": { + "Parent": { + "field": "CCSWeaponBase", + "type": 11 + } + }, + "CWeaponNegev": { + "Parent": { + "field": "CCSWeaponBaseGun", + "type": 11 + } + }, + "CWeaponP250": { + "Parent": { + "field": "CCSWeaponBaseGun", + "type": 11 + } + }, + "CWeaponP90": { + "Parent": { + "field": "CCSWeaponBaseGun", + "type": 11 + } + }, + "CWeaponRevolver": { + "Parent": { + "field": "CCSWeaponBaseGun", + "type": 11 + } + }, + "CWeaponSCAR20": { + "Parent": { + "field": "CCSWeaponBaseGun", + "type": 11 + } + }, + "CWeaponSG556": { + "Parent": { + "field": "CCSWeaponBaseGun", + "type": 11 + } + }, + "CWeaponSSG08": { + "Parent": { + "field": "CCSWeaponBaseGun", + "type": 11 + } + }, + "CWeaponSawedoff": { + "Parent": { + "field": "CCSWeaponBase", + "type": 11 + } + }, + "CWeaponShield": { + "BulletDamageAbsorbed": { + "field": "m_flBulletDamageAbsorbed", + "type": 8 + }, + "LastBulletHitSoundTime": { + "field": "m_flLastBulletHitSoundTime", + "type": 8 + }, + "DisplayHealth": { + "field": "m_flDisplayHealth", + "type": 8 + }, + "Parent": { + "field": "CCSWeaponBaseGun", + "type": 11 + } + }, + "CWeaponTaser": { + "FireTime": { + "field": "m_fFireTime", + "type": 8 + }, + "LastAttackTick": { + "field": "m_nLastAttackTick", + "type": 2 + }, + "Parent": { + "field": "CCSWeaponBaseGun", + "type": 11 + } + }, + "CWeaponTec9": { + "Parent": { + "field": "CCSWeaponBaseGun", + "type": 11 + } + }, + "CWeaponUMP45": { + "Parent": { + "field": "CCSWeaponBaseGun", + "type": 11 + } + }, + "CWeaponUSPSilencer": { + "Parent": { + "field": "CCSWeaponBaseGun", + "type": 11 + } + }, + "CWeaponXM1014": { + "Parent": { + "field": "CCSWeaponBase", + "type": 11 + } + }, + "CWorld": { + "Parent": { + "field": "CBaseModelEntity", + "type": 11 + } + }, + "ConstraintSoundInfo": { + "Sampler": { + "field": "m_vSampler", + "classname": "VelocitySampler", + "type": 16 + }, + "SoundProfile": { + "field": "m_soundProfile", + "classname": "SimpleConstraintSoundProfile", + "type": 16 + }, + "ForwardAxis": { + "field": "m_forwardAxis", + "type": 21 + }, + "TravelSoundFwd": { + "field": "m_iszTravelSoundFwd", + "type": 13 + }, + "TravelSoundBack": { + "field": "m_iszTravelSoundBack", + "type": 13 + }, + "ReversalSounds": { + "field": "m_iszReversalSounds", + "type": 26, + "size": 3 + }, + "PlayTravelSound": { + "field": "m_bPlayTravelSound", + "type": 10 + }, + "PlayReversalSound": { + "field": "m_bPlayReversalSound", + "type": 10 + } + }, + "FilterDamageType": { + "DamageType": { + "field": "m_iDamageType", + "type": 2 + }, + "Parent": { + "field": "CBaseFilter", + "type": 11 + } + }, + "FilterHealth": { + "AdrenalineActive": { + "field": "m_bAdrenalineActive", + "type": 10 + }, + "HealthMin": { + "field": "m_iHealthMin", + "type": 2 + }, + "HealthMax": { + "field": "m_iHealthMax", + "type": 2 + }, + "Parent": { + "field": "CBaseFilter", + "type": 11 + } + }, + "FilterTeam": { + "FilterTeam": { + "field": "m_iFilterTeam", + "type": 2 + }, + "Parent": { + "field": "CBaseFilter", + "type": 11 + } + }, + "RelationshipOverride_t": { + "Entity": { + "field": "entity", + "type": 17, + "classname": "CBaseEntity" + }, + "ClassType": { + "field": "classType", + "type": 6 + }, + "Parent": { + "field": "Relationship_t", + "type": 11 + } + }, + "Relationship_t": { + "Disposition": { + "field": "disposition", + "type": 6 + }, + "Priority": { + "field": "priority", + "type": 2 + } + }, + "ResponseContext_t": { + "Name": { + "field": "m_iszName", + "type": 13 + }, + "Value": { + "field": "m_iszValue", + "type": 13 + }, + "ExpirationTime": { + "field": "m_fExpirationTime", + "type": 8 + } + }, + "SimpleConstraintSoundProfile": { + "KeyPoints": { + "field": "m_keyPoints", + "type": 37, + "size": 2 + }, + "ReversalSoundThresholds": { + "field": "m_reversalSoundThresholds", + "type": 37, + "size": 3 + } + }, + "SoundOpvarTraceResult_t": { + "Pos": { + "field": "vPos", + "type": 21 + }, + "DidHit": { + "field": "bDidHit", + "type": 10 + }, + "DistSqrToCenter": { + "field": "flDistSqrToCenter", + "type": 8 + } + }, + "SpawnPoint": { + "Priority": { + "field": "m_iPriority", + "type": 2 + }, + "Enabled": { + "field": "m_bEnabled", + "type": 10 + }, + "Type": { + "field": "m_nType", + "type": 2 + }, + "Parent": { + "field": "CServerOnlyPointEntity", + "type": 11 + } + }, + "VelocitySampler": { + "PrevSample": { + "field": "m_prevSample", + "type": 21 + }, + "PrevSampleTime": { + "field": "m_fPrevSampleTime", + "type": 8 + }, + "IdealSampleRate": { + "field": "m_fIdealSampleRate", + "type": 8 + } + }, + "dynpitchvol_base_t": { + "Preset": { + "field": "preset", + "type": 2 + }, + "Pitchrun": { + "field": "pitchrun", + "type": 2 + }, + "Pitchstart": { + "field": "pitchstart", + "type": 2 + }, + "Spinup": { + "field": "spinup", + "type": 2 + }, + "Spindown": { + "field": "spindown", + "type": 2 + }, + "Volrun": { + "field": "volrun", + "type": 2 + }, + "Volstart": { + "field": "volstart", + "type": 2 + }, + "Fadein": { + "field": "fadein", + "type": 2 + }, + "Fadeout": { + "field": "fadeout", + "type": 2 + }, + "Lfotype": { + "field": "lfotype", + "type": 2 + }, + "Lforate": { + "field": "lforate", + "type": 2 + }, + "Lfomodpitch": { + "field": "lfomodpitch", + "type": 2 + }, + "Lfomodvol": { + "field": "lfomodvol", + "type": 2 + }, + "Cspinup": { + "field": "cspinup", + "type": 2 + }, + "Cspincount": { + "field": "cspincount", + "type": 2 + }, + "Pitch": { + "field": "pitch", + "type": 2 + }, + "Spinupsav": { + "field": "spinupsav", + "type": 2 + }, + "Spindownsav": { + "field": "spindownsav", + "type": 2 + }, + "Pitchfrac": { + "field": "pitchfrac", + "type": 2 + }, + "Vol": { + "field": "vol", + "type": 2 + }, + "Fadeinsav": { + "field": "fadeinsav", + "type": 2 + }, + "Fadeoutsav": { + "field": "fadeoutsav", + "type": 2 + }, + "Volfrac": { + "field": "volfrac", + "type": 2 + }, + "Lfofrac": { + "field": "lfofrac", + "type": 2 + }, + "Lfomult": { + "field": "lfomult", + "type": 2 + } + }, + "dynpitchvol_t": { + "Parent": { + "field": "dynpitchvol_base_t", + "type": 11 + } + }, + "fogplayerparams_t": { + "Ctrl": { + "field": "m_hCtrl", + "type": 17, + "classname": "CFogController" + }, + "TransitionTime": { + "field": "m_flTransitionTime", + "type": 8 + }, + "OldColor": { + "field": "m_OldColor", + "type": 19 + }, + "OldStart": { + "field": "m_flOldStart", + "type": 8 + }, + "OldEnd": { + "field": "m_flOldEnd", + "type": 8 + }, + "OldMaxDensity": { + "field": "m_flOldMaxDensity", + "type": 8 + }, + "OldHDRColorScale": { + "field": "m_flOldHDRColorScale", + "type": 8 + }, + "OldFarZ": { + "field": "m_flOldFarZ", + "type": 8 + }, + "NewColor": { + "field": "m_NewColor", + "type": 19 + }, + "NewStart": { + "field": "m_flNewStart", + "type": 8 + }, + "NewEnd": { + "field": "m_flNewEnd", + "type": 8 + }, + "NewMaxDensity": { + "field": "m_flNewMaxDensity", + "type": 8 + }, + "NewHDRColorScale": { + "field": "m_flNewHDRColorScale", + "type": 8 + }, + "NewFarZ": { + "field": "m_flNewFarZ", + "type": 8 + } + }, + "lerpdata_t": { + "Ent": { + "field": "m_hEnt", + "type": 17, + "classname": "CBaseEntity" + }, + "MoveType": { + "field": "m_MoveType", + "type": 4 + }, + "StartTime": { + "field": "m_flStartTime", + "type": 8 + }, + "StartOrigin": { + "field": "m_vecStartOrigin", + "type": 21 + }, + "FXIndex": { + "field": "m_nFXIndex", + "classname": "ParticleIndex_t", + "type": 16 + } + }, + "locksound_t": { + "LockedSound": { + "field": "sLockedSound", + "type": 13 + }, + "UnlockedSound": { + "field": "sUnlockedSound", + "type": 13 + }, + "FlwaitSound": { + "field": "flwaitSound", + "type": 8 + } + }, + "magnetted_objects_t": { + "Entity": { + "field": "hEntity", + "type": 17, + "classname": "CBaseEntity" + } + }, + "CDSPMixgroupModifier": { + "Mixgroup": { + "field": "m_mixgroup", + "type": 14 + }, + "Modifier": { + "field": "m_flModifier", + "type": 8 + }, + "ModifierMin": { + "field": "m_flModifierMin", + "type": 8 + }, + "SourceModifier": { + "field": "m_flSourceModifier", + "type": 8 + }, + "SourceModifierMin": { + "field": "m_flSourceModifierMin", + "type": 8 + }, + "ListenerReverbModifierWhenSourceReverbIsActive": { + "field": "m_flListenerReverbModifierWhenSourceReverbIsActive", + "type": 8 + } + }, + "CDSPPresetMixgroupModifierTable": {}, + "CDspPresetModifierList": { + "DspName": { + "field": "m_dspName", + "type": 14 + } + }, + "CSosGroupActionLimitSchema": { + "MaxCount": { + "field": "m_nMaxCount", + "type": 2 + }, + "StopType": { + "field": "m_nStopType", + "type": 6 + }, + "SortType": { + "field": "m_nSortType", + "type": 6 + }, + "Parent": { + "field": "CSosGroupActionSchema", + "type": 11 + } + }, + "CSosGroupActionMemberCountEnvelopeSchema": { + "BaseCount": { + "field": "m_nBaseCount", + "type": 2 + }, + "TargetCount": { + "field": "m_nTargetCount", + "type": 2 + }, + "BaseValue": { + "field": "m_flBaseValue", + "type": 8 + }, + "TargetValue": { + "field": "m_flTargetValue", + "type": 8 + }, + "Attack": { + "field": "m_flAttack", + "type": 8 + }, + "Decay": { + "field": "m_flDecay", + "type": 8 + }, + "ResultVarName": { + "field": "m_resultVarName", + "type": 14 + }, + "SaveToGroup": { + "field": "m_bSaveToGroup", + "type": 10 + }, + "Parent": { + "field": "CSosGroupActionSchema", + "type": 11 + } + }, + "CSosGroupActionSchema": { + "Name": { + "field": "m_name", + "type": 14 + }, + "ActionType": { + "field": "m_actionType", + "type": 6 + }, + "ActionInstanceType": { + "field": "m_actionInstanceType", + "type": 6 + } + }, + "CSosGroupActionSetSoundeventParameterSchema": { + "MaxCount": { + "field": "m_nMaxCount", + "type": 2 + }, + "MinValue": { + "field": "m_flMinValue", + "type": 8 + }, + "MaxValue": { + "field": "m_flMaxValue", + "type": 8 + }, + "OpvarName": { + "field": "m_opvarName", + "type": 14 + }, + "SortType": { + "field": "m_nSortType", + "type": 6 + }, + "Parent": { + "field": "CSosGroupActionSchema", + "type": 11 + } + }, + "CSosGroupActionSoundeventClusterSchema": { + "MinNearby": { + "field": "m_nMinNearby", + "type": 2 + }, + "ClusterEpsilon": { + "field": "m_flClusterEpsilon", + "type": 8 + }, + "ShouldPlayOpvar": { + "field": "m_shouldPlayOpvar", + "type": 14 + }, + "ShouldPlayClusterChild": { + "field": "m_shouldPlayClusterChild", + "type": 14 + }, + "ClusterSizeOpvar": { + "field": "m_clusterSizeOpvar", + "type": 14 + }, + "GroupBoundingBoxMinsOpvar": { + "field": "m_groupBoundingBoxMinsOpvar", + "type": 14 + }, + "GroupBoundingBoxMaxsOpvar": { + "field": "m_groupBoundingBoxMaxsOpvar", + "type": 14 + }, + "Parent": { + "field": "CSosGroupActionSchema", + "type": 11 + } + }, + "CSosGroupActionSoundeventCountSchema": { + "ExcludeStoppedSounds": { + "field": "m_bExcludeStoppedSounds", + "type": 10 + }, + "StrCountKeyName": { + "field": "m_strCountKeyName", + "type": 14 + }, + "Parent": { + "field": "CSosGroupActionSchema", + "type": 11 + } + }, + "CSosGroupActionSoundeventMinMaxValuesSchema": { + "StrQueryPublicFieldName": { + "field": "m_strQueryPublicFieldName", + "type": 14 + }, + "StrDelayPublicFieldName": { + "field": "m_strDelayPublicFieldName", + "type": 14 + }, + "ExcludeStoppedSounds": { + "field": "m_bExcludeStoppedSounds", + "type": 10 + }, + "ExcludeDelayedSounds": { + "field": "m_bExcludeDelayedSounds", + "type": 10 + }, + "ExcludeSoundsBelowThreshold": { + "field": "m_bExcludeSoundsBelowThreshold", + "type": 10 + }, + "ExcludeSoundsMinThresholdValue": { + "field": "m_flExcludeSoundsMinThresholdValue", + "type": 8 + }, + "ExcludSoundsAboveThreshold": { + "field": "m_bExcludSoundsAboveThreshold", + "type": 10 + }, + "ExcludeSoundsMaxThresholdValue": { + "field": "m_flExcludeSoundsMaxThresholdValue", + "type": 8 + }, + "StrMinValueName": { + "field": "m_strMinValueName", + "type": 14 + }, + "StrMaxValueName": { + "field": "m_strMaxValueName", + "type": 14 + }, + "Parent": { + "field": "CSosGroupActionSchema", + "type": 11 + } + }, + "CSosGroupActionSoundeventPrioritySchema": { + "PriorityValue": { + "field": "m_priorityValue", + "type": 14 + }, + "PriorityVolumeScalar": { + "field": "m_priorityVolumeScalar", + "type": 14 + }, + "PriorityContributeButDontRead": { + "field": "m_priorityContributeButDontRead", + "type": 14 + }, + "PriorityReadButDontContribute": { + "field": "m_bPriorityReadButDontContribute", + "type": 14 + }, + "Parent": { + "field": "CSosGroupActionSchema", + "type": 11 + } + }, + "CSosGroupActionTimeBlockLimitSchema": { + "MaxCount": { + "field": "m_nMaxCount", + "type": 2 + }, + "MaxDuration": { + "field": "m_flMaxDuration", + "type": 8 + }, + "Parent": { + "field": "CSosGroupActionSchema", + "type": 11 + } + }, + "CSosGroupActionTimeLimitSchema": { + "MaxDuration": { + "field": "m_flMaxDuration", + "type": 8 + }, + "Parent": { + "field": "CSosGroupActionSchema", + "type": 11 + } + }, + "CSosGroupBranchPattern": { + "MatchEventName": { + "field": "m_bMatchEventName", + "type": 10 + }, + "MatchEventSubString": { + "field": "m_bMatchEventSubString", + "type": 10 + }, + "MatchEntIndex": { + "field": "m_bMatchEntIndex", + "type": 10 + }, + "MatchOpvar": { + "field": "m_bMatchOpvar", + "type": 10 + }, + "MatchString": { + "field": "m_bMatchString", + "type": 10 + } + }, + "CSosGroupMatchPattern": { + "MatchSoundEventName": { + "field": "m_matchSoundEventName", + "type": 14 + }, + "MatchSoundEventSubString": { + "field": "m_matchSoundEventSubString", + "type": 14 + }, + "EntIndex": { + "field": "m_flEntIndex", + "type": 8 + }, + "Opvar": { + "field": "m_flOpvar", + "type": 8 + }, + "OpvarString": { + "field": "m_opvarString", + "type": 14 + }, + "Parent": { + "field": "CSosGroupBranchPattern", + "type": 11 + } + }, + "CSosSoundEventGroupListSchema": {}, + "CSosSoundEventGroupSchema": { + "Name": { + "field": "m_name", + "type": 14 + }, + "Type": { + "field": "m_nType", + "type": 6 + }, + "IsBlocking": { + "field": "m_bIsBlocking", + "type": 10 + }, + "BlockMaxCount": { + "field": "m_nBlockMaxCount", + "type": 2 + }, + "InvertMatch": { + "field": "m_bInvertMatch", + "type": 10 + }, + "MatchPattern": { + "field": "m_matchPattern", + "classname": "CSosGroupMatchPattern", + "type": 16 + }, + "BranchPattern": { + "field": "m_branchPattern", + "classname": "CSosGroupBranchPattern", + "type": 16 + }, + "LifeSpanTime": { + "field": "m_flLifeSpanTime", + "type": 8 + }, + "Actions": { + "field": "m_vActions", + "classname": "CSosGroupActionSchema", + "type": 24 + } + }, + "CSoundEventMetaData": {}, + "CTestBlendContainer": { + "Parent": { + "field": "CVoiceContainerBase", + "type": 11 + } + }, + "SelectedEditItemInfo_t": {}, + "SosEditItemInfo_t": { + "ItemType": { + "field": "itemType", + "type": 6 + }, + "ItemName": { + "field": "itemName", + "type": 14 + }, + "ItemTypeName": { + "field": "itemTypeName", + "type": 14 + }, + "ItemKVString": { + "field": "itemKVString", + "type": 14 + }, + "ItemPos": { + "field": "itemPos", + "type": 22 + } + }, + "VMixAutoFilterDesc_t": { + "EnvelopeAmount": { + "field": "m_flEnvelopeAmount", + "type": 8 + }, + "AttackTimeMS": { + "field": "m_flAttackTimeMS", + "type": 8 + }, + "ReleaseTimeMS": { + "field": "m_flReleaseTimeMS", + "type": 8 + }, + "Filter": { + "field": "m_filter", + "classname": "VMixFilterDesc_t", + "type": 16 + }, + "LFOAmount": { + "field": "m_flLFOAmount", + "type": 8 + }, + "LFORate": { + "field": "m_flLFORate", + "type": 8 + }, + "Phase": { + "field": "m_flPhase", + "type": 8 + }, + "LFOShape": { + "field": "m_nLFOShape", + "type": 6 + } + }, + "VMixBoxverbDesc_t": { + "SizeMax": { + "field": "m_flSizeMax", + "type": 8 + }, + "SizeMin": { + "field": "m_flSizeMin", + "type": 8 + }, + "Complexity": { + "field": "m_flComplexity", + "type": 8 + }, + "Diffusion": { + "field": "m_flDiffusion", + "type": 8 + }, + "ModDepth": { + "field": "m_flModDepth", + "type": 8 + }, + "ModRate": { + "field": "m_flModRate", + "type": 8 + }, + "Parallel": { + "field": "m_bParallel", + "type": 10 + }, + "FilterType": { + "field": "m_filterType", + "classname": "VMixFilterDesc_t", + "type": 16 + }, + "Width": { + "field": "m_flWidth", + "type": 8 + }, + "Height": { + "field": "m_flHeight", + "type": 8 + }, + "Depth": { + "field": "m_flDepth", + "type": 8 + }, + "FeedbackScale": { + "field": "m_flFeedbackScale", + "type": 8 + }, + "FeedbackWidth": { + "field": "m_flFeedbackWidth", + "type": 8 + }, + "FeedbackHeight": { + "field": "m_flFeedbackHeight", + "type": 8 + }, + "FeedbackDepth": { + "field": "m_flFeedbackDepth", + "type": 8 + }, + "OutputGain": { + "field": "m_flOutputGain", + "type": 8 + }, + "Taps": { + "field": "m_flTaps", + "type": 8 + } + }, + "VMixConvolutionDesc_t": { + "FldbGain": { + "field": "m_fldbGain", + "type": 8 + }, + "PreDelayMS": { + "field": "m_flPreDelayMS", + "type": 8 + }, + "WetMix": { + "field": "m_flWetMix", + "type": 8 + }, + "FldbLow": { + "field": "m_fldbLow", + "type": 8 + }, + "FldbMid": { + "field": "m_fldbMid", + "type": 8 + }, + "FldbHigh": { + "field": "m_fldbHigh", + "type": 8 + }, + "LowCutoffFreq": { + "field": "m_flLowCutoffFreq", + "type": 8 + }, + "HighCutoffFreq": { + "field": "m_flHighCutoffFreq", + "type": 8 + } + }, + "VMixDelayDesc_t": { + "FeedbackFilter": { + "field": "m_feedbackFilter", + "classname": "VMixFilterDesc_t", + "type": 16 + }, + "EnableFilter": { + "field": "m_bEnableFilter", + "type": 10 + }, + "Delay": { + "field": "m_flDelay", + "type": 8 + }, + "DirectGain": { + "field": "m_flDirectGain", + "type": 8 + }, + "DelayGain": { + "field": "m_flDelayGain", + "type": 8 + }, + "FeedbackGain": { + "field": "m_flFeedbackGain", + "type": 8 + }, + "Width": { + "field": "m_flWidth", + "type": 8 + } + }, + "VMixDiffusorDesc_t": { + "Size": { + "field": "m_flSize", + "type": 8 + }, + "Complexity": { + "field": "m_flComplexity", + "type": 8 + }, + "Feedback": { + "field": "m_flFeedback", + "type": 8 + }, + "OutputGain": { + "field": "m_flOutputGain", + "type": 8 + } + }, + "VMixDynamics3BandDesc_t": { + "FldbGainOutput": { + "field": "m_fldbGainOutput", + "type": 8 + }, + "RMSTimeMS": { + "field": "m_flRMSTimeMS", + "type": 8 + }, + "FldbKneeWidth": { + "field": "m_fldbKneeWidth", + "type": 8 + }, + "Depth": { + "field": "m_flDepth", + "type": 8 + }, + "WetMix": { + "field": "m_flWetMix", + "type": 8 + }, + "TimeScale": { + "field": "m_flTimeScale", + "type": 8 + }, + "LowCutoffFreq": { + "field": "m_flLowCutoffFreq", + "type": 8 + }, + "HighCutoffFreq": { + "field": "m_flHighCutoffFreq", + "type": 8 + }, + "PeakMode": { + "field": "m_bPeakMode", + "type": 10 + }, + "BandDesc": { + "field": "m_bandDesc", + "type": 45, + "size": 3 + } + }, + "VMixDynamicsBand_t": { + "FldbGainInput": { + "field": "m_fldbGainInput", + "type": 8 + }, + "FldbGainOutput": { + "field": "m_fldbGainOutput", + "type": 8 + }, + "FldbThresholdBelow": { + "field": "m_fldbThresholdBelow", + "type": 8 + }, + "FldbThresholdAbove": { + "field": "m_fldbThresholdAbove", + "type": 8 + }, + "RatioBelow": { + "field": "m_flRatioBelow", + "type": 8 + }, + "RatioAbove": { + "field": "m_flRatioAbove", + "type": 8 + }, + "AttackTimeMS": { + "field": "m_flAttackTimeMS", + "type": 8 + }, + "ReleaseTimeMS": { + "field": "m_flReleaseTimeMS", + "type": 8 + }, + "Enable": { + "field": "m_bEnable", + "type": 10 + }, + "Solo": { + "field": "m_bSolo", + "type": 10 + } + }, + "VMixDynamicsCompressorDesc_t": { + "FldbOutputGain": { + "field": "m_fldbOutputGain", + "type": 8 + }, + "FldbCompressionThreshold": { + "field": "m_fldbCompressionThreshold", + "type": 8 + }, + "FldbKneeWidth": { + "field": "m_fldbKneeWidth", + "type": 8 + }, + "CompressionRatio": { + "field": "m_flCompressionRatio", + "type": 8 + }, + "AttackTimeMS": { + "field": "m_flAttackTimeMS", + "type": 8 + }, + "ReleaseTimeMS": { + "field": "m_flReleaseTimeMS", + "type": 8 + }, + "RMSTimeMS": { + "field": "m_flRMSTimeMS", + "type": 8 + }, + "WetMix": { + "field": "m_flWetMix", + "type": 8 + }, + "PeakMode": { + "field": "m_bPeakMode", + "type": 10 + } + }, + "VMixDynamicsDesc_t": { + "FldbGain": { + "field": "m_fldbGain", + "type": 8 + }, + "FldbNoiseGateThreshold": { + "field": "m_fldbNoiseGateThreshold", + "type": 8 + }, + "FldbCompressionThreshold": { + "field": "m_fldbCompressionThreshold", + "type": 8 + }, + "FldbLimiterThreshold": { + "field": "m_fldbLimiterThreshold", + "type": 8 + }, + "FldbKneeWidth": { + "field": "m_fldbKneeWidth", + "type": 8 + }, + "Ratio": { + "field": "m_flRatio", + "type": 8 + }, + "LimiterRatio": { + "field": "m_flLimiterRatio", + "type": 8 + }, + "AttackTimeMS": { + "field": "m_flAttackTimeMS", + "type": 8 + }, + "ReleaseTimeMS": { + "field": "m_flReleaseTimeMS", + "type": 8 + }, + "RMSTimeMS": { + "field": "m_flRMSTimeMS", + "type": 8 + }, + "WetMix": { + "field": "m_flWetMix", + "type": 8 + }, + "PeakMode": { + "field": "m_bPeakMode", + "type": 10 + } + }, + "VMixEQ8Desc_t": { + "Stages": { + "field": "m_stages", + "type": 45, + "size": 8 + } + }, + "VMixEffectChainDesc_t": { + "CrossfadeTime": { + "field": "m_flCrossfadeTime", + "type": 8 + } + }, + "VMixEnvelopeDesc_t": { + "AttackTimeMS": { + "field": "m_flAttackTimeMS", + "type": 8 + }, + "HoldTimeMS": { + "field": "m_flHoldTimeMS", + "type": 8 + }, + "ReleaseTimeMS": { + "field": "m_flReleaseTimeMS", + "type": 8 + } + }, + "VMixFilterDesc_t": { + "FilterType": { + "field": "m_nFilterType", + "type": 5 + }, + "FilterSlope": { + "field": "m_nFilterSlope", + "type": 4 + }, + "Enabled": { + "field": "m_bEnabled", + "type": 10 + }, + "FldbGain": { + "field": "m_fldbGain", + "type": 8 + }, + "CutoffFreq": { + "field": "m_flCutoffFreq", + "type": 8 + }, + "Q": { + "field": "m_flQ", + "type": 8 + } + }, + "VMixFreeverbDesc_t": { + "RoomSize": { + "field": "m_flRoomSize", + "type": 8 + }, + "Damp": { + "field": "m_flDamp", + "type": 8 + }, + "Width": { + "field": "m_flWidth", + "type": 8 + }, + "LateReflections": { + "field": "m_flLateReflections", + "type": 8 + } + }, + "VMixModDelayDesc_t": { + "FeedbackFilter": { + "field": "m_feedbackFilter", + "classname": "VMixFilterDesc_t", + "type": 16 + }, + "PhaseInvert": { + "field": "m_bPhaseInvert", + "type": 10 + }, + "GlideTime": { + "field": "m_flGlideTime", + "type": 8 + }, + "Delay": { + "field": "m_flDelay", + "type": 8 + }, + "OutputGain": { + "field": "m_flOutputGain", + "type": 8 + }, + "FeedbackGain": { + "field": "m_flFeedbackGain", + "type": 8 + }, + "ModRate": { + "field": "m_flModRate", + "type": 8 + }, + "ModDepth": { + "field": "m_flModDepth", + "type": 8 + }, + "ApplyAntialiasing": { + "field": "m_bApplyAntialiasing", + "type": 10 + } + }, + "VMixOscDesc_t": { + "OscType": { + "field": "oscType", + "type": 6 + }, + "Freq": { + "field": "m_freq", + "type": 8 + }, + "Phase": { + "field": "m_flPhase", + "type": 8 + } + }, + "VMixPannerDesc_t": { + "Type": { + "field": "m_type", + "type": 6 + }, + "Strength": { + "field": "m_flStrength", + "type": 8 + } + }, + "VMixPitchShiftDesc_t": { + "GrainSampleCount": { + "field": "m_nGrainSampleCount", + "type": 2 + }, + "PitchShift": { + "field": "m_flPitchShift", + "type": 8 + }, + "Quality": { + "field": "m_nQuality", + "type": 2 + }, + "ProcType": { + "field": "m_nProcType", + "type": 2 + } + }, + "VMixPlateverbDesc_t": { + "Prefilter": { + "field": "m_flPrefilter", + "type": 8 + }, + "InputDiffusion1": { + "field": "m_flInputDiffusion1", + "type": 8 + }, + "InputDiffusion2": { + "field": "m_flInputDiffusion2", + "type": 8 + }, + "Decay": { + "field": "m_flDecay", + "type": 8 + }, + "Damp": { + "field": "m_flDamp", + "type": 8 + }, + "FeedbackDiffusion1": { + "field": "m_flFeedbackDiffusion1", + "type": 8 + }, + "FeedbackDiffusion2": { + "field": "m_flFeedbackDiffusion2", + "type": 8 + } + }, + "VMixShaperDesc_t": { + "Shape": { + "field": "m_nShape", + "type": 2 + }, + "FldbDrive": { + "field": "m_fldbDrive", + "type": 8 + }, + "FldbOutputGain": { + "field": "m_fldbOutputGain", + "type": 8 + }, + "WetMix": { + "field": "m_flWetMix", + "type": 8 + }, + "OversampleFactor": { + "field": "m_nOversampleFactor", + "type": 2 + } + }, + "VMixSubgraphSwitchDesc_t": { + "InterpolationMode": { + "field": "m_interpolationMode", + "type": 6 + }, + "OnlyTailsOnFadeOut": { + "field": "m_bOnlyTailsOnFadeOut", + "type": 10 + }, + "InterpolationTime": { + "field": "m_flInterpolationTime", + "type": 8 + } + }, + "VMixUtilityDesc_t": { + "Op": { + "field": "m_nOp", + "type": 6 + }, + "InputPan": { + "field": "m_flInputPan", + "type": 8 + }, + "OutputBalance": { + "field": "m_flOutputBalance", + "type": 8 + }, + "FldbOutputGain": { + "field": "m_fldbOutputGain", + "type": 8 + }, + "BassMono": { + "field": "m_bBassMono", + "type": 10 + }, + "BassFreq": { + "field": "m_flBassFreq", + "type": 8 + } + }, + "VMixVocoderDesc_t": { + "BandCount": { + "field": "m_nBandCount", + "type": 2 + }, + "Bandwidth": { + "field": "m_flBandwidth", + "type": 8 + }, + "FldBModGain": { + "field": "m_fldBModGain", + "type": 8 + }, + "FreqRangeStart": { + "field": "m_flFreqRangeStart", + "type": 8 + }, + "FreqRangeEnd": { + "field": "m_flFreqRangeEnd", + "type": 8 + }, + "FldBUnvoicedGain": { + "field": "m_fldBUnvoicedGain", + "type": 8 + }, + "AttackTimeMS": { + "field": "m_flAttackTimeMS", + "type": 8 + }, + "ReleaseTimeMS": { + "field": "m_flReleaseTimeMS", + "type": 8 + }, + "DebugBand": { + "field": "m_nDebugBand", + "type": 2 + }, + "PeakMode": { + "field": "m_bPeakMode", + "type": 10 + } + }, + "CAudioEmphasisSample": { + "Time": { + "field": "m_flTime", + "type": 8 + }, + "Value": { + "field": "m_flValue", + "type": 8 + } + }, + "CAudioMorphData": { + "Times": { + "field": "m_times", + "type": 59 + }, + "NameHashCodes": { + "field": "m_nameHashCodes", + "type": 57 + }, + "NameStrings": { + "field": "m_nameStrings", + "type": 50 + }, + "EaseIn": { + "field": "m_flEaseIn", + "type": 8 + }, + "EaseOut": { + "field": "m_flEaseOut", + "type": 8 + } + }, + "CAudioPhonemeTag": { + "StartTime": { + "field": "m_flStartTime", + "type": 8 + }, + "EndTime": { + "field": "m_flEndTime", + "type": 8 + }, + "PhonemeCode": { + "field": "m_nPhonemeCode", + "type": 2 + } + }, + "CAudioSentence": { + "ShouldVoiceDuck": { + "field": "m_bShouldVoiceDuck", + "type": 10 + }, + "MorphData": { + "field": "m_morphData", + "classname": "CAudioMorphData", + "type": 16 + } + }, + "CSoundContainerReference": { + "UseReference": { + "field": "m_bUseReference", + "type": 10 + }, + "Sound": { + "field": "m_pSound", + "classname": "CVoiceContainerBase", + "type": 24 + } + }, + "CSoundContainerReferenceArray": { + "UseReference": { + "field": "m_bUseReference", + "type": 10 + } + }, + "CSoundInfoHeader": {}, + "CVoiceContainerAmpedDecayingSineWave": { + "GainAmount": { + "field": "m_flGainAmount", + "type": 8 + }, + "Parent": { + "field": "CVoiceContainerDecayingSineWave", + "type": 11 + } + }, + "CVoiceContainerAnalysisBase": { + "RegenerateCurveOnCompile": { + "field": "m_bRegenerateCurveOnCompile", + "type": 10 + } + }, + "CVoiceContainerBase": { + "EnvelopeAnalyzer": { + "field": "m_pEnvelopeAnalyzer", + "classname": "CVoiceContainerAnalysisBase", + "type": 24 + } + }, + "CVoiceContainerBlender": { + "FirstSound": { + "field": "m_firstSound", + "classname": "CSoundContainerReference", + "type": 16 + }, + "SecondSound": { + "field": "m_secondSound", + "classname": "CSoundContainerReference", + "type": 16 + }, + "BlendFactor": { + "field": "m_flBlendFactor", + "type": 8 + }, + "Parent": { + "field": "CVoiceContainerBase", + "type": 11 + } + }, + "CVoiceContainerDecayingSineWave": { + "Frequency": { + "field": "m_flFrequency", + "type": 8 + }, + "DecayTime": { + "field": "m_flDecayTime", + "type": 8 + }, + "Parent": { + "field": "CVoiceContainerBase", + "type": 11 + } + }, + "CVoiceContainerDefault": { + "Parent": { + "field": "CVoiceContainerBase", + "type": 11 + } + }, + "CVoiceContainerEnvelope": { + "AnalysisContainer": { + "field": "m_analysisContainer", + "classname": "CVoiceContainerAnalysisBase", + "type": 24 + }, + "Parent": { + "field": "CVoiceContainerBase", + "type": 11 + } + }, + "CVoiceContainerEnvelopeAnalyzer": { + "Mode": { + "field": "m_mode", + "type": 6 + }, + "Samples": { + "field": "m_nSamples", + "type": 2 + }, + "Threshold": { + "field": "m_flThreshold", + "type": 8 + }, + "Parent": { + "field": "CVoiceContainerAnalysisBase", + "type": 11 + } + }, + "CVoiceContainerGranulator": { + "GrainLength": { + "field": "m_flGrainLength", + "type": 8 + }, + "GrainCrossfadeAmount": { + "field": "m_flGrainCrossfadeAmount", + "type": 8 + }, + "StartJitter": { + "field": "m_flStartJitter", + "type": 8 + }, + "PlaybackJitter": { + "field": "m_flPlaybackJitter", + "type": 8 + }, + "Parent": { + "field": "CVoiceContainerBase", + "type": 11 + } + }, + "CVoiceContainerLoopTrigger": { + "Sound": { + "field": "m_sound", + "classname": "CSoundContainerReference", + "type": 16 + }, + "RetriggerTimeMin": { + "field": "m_flRetriggerTimeMin", + "type": 8 + }, + "RetriggerTimeMax": { + "field": "m_flRetriggerTimeMax", + "type": 8 + }, + "FadeTime": { + "field": "m_flFadeTime", + "type": 8 + }, + "CrossFade": { + "field": "m_bCrossFade", + "type": 10 + }, + "Parent": { + "field": "CVoiceContainerBase", + "type": 11 + } + }, + "CVoiceContainerNull": { + "Parent": { + "field": "CVoiceContainerBase", + "type": 11 + } + }, + "CVoiceContainerRandomSampler": { + "Amplitude": { + "field": "m_flAmplitude", + "type": 8 + }, + "AmplitudeJitter": { + "field": "m_flAmplitudeJitter", + "type": 8 + }, + "TimeJitter": { + "field": "m_flTimeJitter", + "type": 8 + }, + "MaxLength": { + "field": "m_flMaxLength", + "type": 8 + }, + "NumDelayVariations": { + "field": "m_nNumDelayVariations", + "type": 2 + }, + "Parent": { + "field": "CVoiceContainerBase", + "type": 11 + } + }, + "CVoiceContainerRealtimeFMSineWave": { + "CarrierFrequency": { + "field": "m_flCarrierFrequency", + "type": 8 + }, + "ModulatorFrequency": { + "field": "m_flModulatorFrequency", + "type": 8 + }, + "ModulatorAmount": { + "field": "m_flModulatorAmount", + "type": 8 + }, + "Parent": { + "field": "CVoiceContainerBase", + "type": 11 + } + }, + "CVoiceContainerSelector": { + "Mode": { + "field": "m_mode", + "type": 6 + }, + "SoundsToPlay": { + "field": "m_soundsToPlay", + "classname": "CSoundContainerReferenceArray", + "type": 16 + }, + "ProbabilityWeights": { + "field": "m_fProbabilityWeights", + "type": 59 + }, + "Parent": { + "field": "CVoiceContainerBase", + "type": 11 + } + }, + "CVoiceContainerSet": { + "Parent": { + "field": "CVoiceContainerBase", + "type": 11 + } + }, + "CVoiceContainerSetElement": { + "Sound": { + "field": "m_sound", + "classname": "CSoundContainerReference", + "type": 16 + }, + "VolumeDB": { + "field": "m_flVolumeDB", + "type": 8 + } + }, + "CVoiceContainerShapedNoise": { + "UseCurveForFrequency": { + "field": "m_bUseCurveForFrequency", + "type": 10 + }, + "Frequency": { + "field": "m_flFrequency", + "type": 8 + }, + "UseCurveForResonance": { + "field": "m_bUseCurveForResonance", + "type": 10 + }, + "Resonance": { + "field": "m_flResonance", + "type": 8 + }, + "UseCurveForAmplitude": { + "field": "m_bUseCurveForAmplitude", + "type": 10 + }, + "GainInDecibels": { + "field": "m_flGainInDecibels", + "type": 8 + }, + "Parent": { + "field": "CVoiceContainerBase", + "type": 11 + } + }, + "CVoiceContainerStaticAdditiveSynth": { + "Parent": { + "field": "CVoiceContainerBase", + "type": 11 + } + }, + "CVoiceContainerSwitch": { + "Parent": { + "field": "CVoiceContainerBase", + "type": 11 + } + }, + "CRangeFloat": { + "Value": { + "field": "m_pValue", + "type": 37, + "size": 2 + } + }, + "CRangeInt": { + "Value": { + "field": "m_pValue", + "type": 31, + "size": 2 + } + }, + "IPhysicsPlayerController": {}, + "constraint_axislimit_t": { + "MinRotation": { + "field": "flMinRotation", + "type": 8 + }, + "MaxRotation": { + "field": "flMaxRotation", + "type": 8 + }, + "MotorTargetAngSpeed": { + "field": "flMotorTargetAngSpeed", + "type": 8 + }, + "MotorMaxTorque": { + "field": "flMotorMaxTorque", + "type": 8 + } + }, + "constraint_breakableparams_t": { + "Strength": { + "field": "strength", + "type": 8 + }, + "ForceLimit": { + "field": "forceLimit", + "type": 8 + }, + "TorqueLimit": { + "field": "torqueLimit", + "type": 8 + }, + "BodyMassScale": { + "field": "bodyMassScale", + "type": 37, + "size": 2 + }, + "IsActive": { + "field": "isActive", + "type": 10 + } + }, + "constraint_hingeparams_t": { + "WorldPosition": { + "field": "worldPosition", + "type": 21 + }, + "WorldAxisDirection": { + "field": "worldAxisDirection", + "type": 21 + }, + "HingeAxis": { + "field": "hingeAxis", + "classname": "constraint_axislimit_t", + "type": 16 + }, + "Constraint": { + "field": "constraint", + "classname": "constraint_breakableparams_t", + "type": 16 + } + }, + "vphysics_save_cphysicsbody_t": { + "OldPointer": { + "field": "m_nOldPointer", + "type": 7 + }, + "Parent": { + "field": "RnBodyDesc_t", + "type": 11 + } + }, + "AggregateLODSetup_t": { + "LODOrigin": { + "field": "m_vLODOrigin", + "type": 21 + }, + "MaxObjectScale": { + "field": "m_fMaxObjectScale", + "type": 8 + }, + "SwitchDistances": { + "field": "m_fSwitchDistances", + "type": 59 + } + }, + "AggregateMeshInfo_t": { + "VisClusterMemberOffset": { + "field": "m_nVisClusterMemberOffset", + "type": 6 + }, + "VisClusterMemberCount": { + "field": "m_nVisClusterMemberCount", + "type": 4 + }, + "HasTransform": { + "field": "m_bHasTransform", + "type": 10 + }, + "DrawCallIndex": { + "field": "m_nDrawCallIndex", + "type": 1 + }, + "LODSetupIndex": { + "field": "m_nLODSetupIndex", + "type": 1 + }, + "LODGroupMask": { + "field": "m_nLODGroupMask", + "type": 4 + }, + "TintColor": { + "field": "m_vTintColor", + "type": 19 + }, + "ObjectFlags": { + "field": "m_objectFlags", + "type": 6 + }, + "LightProbeVolumePrecomputedHandshake": { + "field": "m_nLightProbeVolumePrecomputedHandshake", + "type": 2 + } + }, + "AggregateSceneObject_t": { + "AllFlags": { + "field": "m_allFlags", + "type": 6 + }, + "AnyFlags": { + "field": "m_anyFlags", + "type": 6 + }, + "Layer": { + "field": "m_nLayer", + "type": 1 + }, + "VisClusterMembership": { + "field": "m_visClusterMembership", + "type": 56 + } + }, + "BakedLightingInfo_t": { + "LightmapVersionNumber": { + "field": "m_nLightmapVersionNumber", + "type": 6 + }, + "LightmapGameVersionNumber": { + "field": "m_nLightmapGameVersionNumber", + "type": 6 + }, + "LightmapUvScale": { + "field": "m_vLightmapUvScale", + "type": 22 + }, + "HasLightmaps": { + "field": "m_bHasLightmaps", + "type": 10 + }, + "BakedShadowsGamma20": { + "field": "m_bBakedShadowsGamma20", + "type": 10 + }, + "CompressionEnabled": { + "field": "m_bCompressionEnabled", + "type": 10 + }, + "ChartPackIterations": { + "field": "m_nChartPackIterations", + "type": 4 + }, + "VradQuality": { + "field": "m_nVradQuality", + "type": 4 + } + }, + "BaseSceneObjectOverride_t": { + "SceneObjectIndex": { + "field": "m_nSceneObjectIndex", + "type": 6 + } + }, + "CVoxelVisibility": { + "BaseClusterCount": { + "field": "m_nBaseClusterCount", + "type": 6 + }, + "PVSBytesPerCluster": { + "field": "m_nPVSBytesPerCluster", + "type": 6 + }, + "MinBounds": { + "field": "m_vMinBounds", + "type": 21 + }, + "MaxBounds": { + "field": "m_vMaxBounds", + "type": 21 + }, + "GridSize": { + "field": "m_flGridSize", + "type": 8 + }, + "SkyVisibilityCluster": { + "field": "m_nSkyVisibilityCluster", + "type": 6 + }, + "SunVisibilityCluster": { + "field": "m_nSunVisibilityCluster", + "type": 6 + }, + "NodeBlock": { + "field": "m_NodeBlock", + "classname": "VoxelVisBlockOffset_t", + "type": 16 + }, + "RegionBlock": { + "field": "m_RegionBlock", + "classname": "VoxelVisBlockOffset_t", + "type": 16 + }, + "EnclosedClusterListBlock": { + "field": "m_EnclosedClusterListBlock", + "classname": "VoxelVisBlockOffset_t", + "type": 16 + }, + "EnclosedClustersBlock": { + "field": "m_EnclosedClustersBlock", + "classname": "VoxelVisBlockOffset_t", + "type": 16 + }, + "MasksBlock": { + "field": "m_MasksBlock", + "classname": "VoxelVisBlockOffset_t", + "type": 16 + }, + "VisBlocks": { + "field": "m_nVisBlocks", + "classname": "VoxelVisBlockOffset_t", + "type": 16 + } + }, + "ClutterSceneObject_t": { + "Bounds": { + "field": "m_Bounds", + "classname": "AABB_t", + "type": 16 + }, + "Flags": { + "field": "m_flags", + "type": 6 + }, + "Layer": { + "field": "m_nLayer", + "type": 1 + }, + "InstancePositions": { + "field": "m_instancePositions", + "type": 63 + }, + "InstanceScales": { + "field": "m_instanceScales", + "type": 59 + }, + "InstanceTintSrgb": { + "field": "m_instanceTintSrgb", + "type": 61 + } + }, + "ClutterTile_t": { + "FirstInstance": { + "field": "m_nFirstInstance", + "type": 6 + }, + "LastInstance": { + "field": "m_nLastInstance", + "type": 6 + }, + "BoundsWs": { + "field": "m_BoundsWs", + "classname": "AABB_t", + "type": 16 + } + }, + "EntityIOConnectionData_t": { + "OutputName": { + "field": "m_outputName", + "type": 14 + }, + "TargetType": { + "field": "m_targetType", + "type": 6 + }, + "TargetName": { + "field": "m_targetName", + "type": 14 + }, + "InputName": { + "field": "m_inputName", + "type": 14 + }, + "OverrideParam": { + "field": "m_overrideParam", + "type": 14 + }, + "Delay": { + "field": "m_flDelay", + "type": 8 + }, + "TimesToFire": { + "field": "m_nTimesToFire", + "type": 2 + } + }, + "EntityKeyValueData_t": {}, + "ExtraVertexStreamOverride_t": { + "SubSceneObject": { + "field": "m_nSubSceneObject", + "type": 6 + }, + "DrawCallIndex": { + "field": "m_nDrawCallIndex", + "type": 6 + }, + "AdditionalMeshDrawPrimitiveFlags": { + "field": "m_nAdditionalMeshDrawPrimitiveFlags", + "type": 6 + }, + "ExtraBufferBinding": { + "field": "m_extraBufferBinding", + "classname": "CRenderBufferBinding", + "type": 16 + }, + "Parent": { + "field": "BaseSceneObjectOverride_t", + "type": 11 + } + }, + "InfoOverlayData_t": { + "Width": { + "field": "m_flWidth", + "type": 8 + }, + "Height": { + "field": "m_flHeight", + "type": 8 + }, + "Depth": { + "field": "m_flDepth", + "type": 8 + }, + "UVStart": { + "field": "m_vUVStart", + "type": 22 + }, + "UVEnd": { + "field": "m_vUVEnd", + "type": 22 + }, + "RenderOrder": { + "field": "m_nRenderOrder", + "type": 2 + }, + "TintColor": { + "field": "m_vTintColor", + "type": 23 + }, + "SequenceOverride": { + "field": "m_nSequenceOverride", + "type": 2 + } + }, + "MaterialOverride_t": { + "SubSceneObject": { + "field": "m_nSubSceneObject", + "type": 6 + }, + "DrawCallIndex": { + "field": "m_nDrawCallIndex", + "type": 6 + }, + "Parent": { + "field": "BaseSceneObjectOverride_t", + "type": 11 + } + }, + "NodeData_t": { + "Parent": { + "field": "m_nParent", + "type": 2 + }, + "Origin": { + "field": "m_vOrigin", + "type": 21 + }, + "MinBounds": { + "field": "m_vMinBounds", + "type": 21 + }, + "MaxBounds": { + "field": "m_vMaxBounds", + "type": 21 + }, + "MinimumDistance": { + "field": "m_flMinimumDistance", + "type": 8 + }, + "ChildNodeIndices": { + "field": "m_ChildNodeIndices", + "type": 53 + }, + "WorldNodePrefix": { + "field": "m_worldNodePrefix", + "type": 14 + } + }, + "PermEntityLumpData_t": { + "Name": { + "field": "m_name", + "type": 14 + } + }, + "SceneObject_t": { + "ObjectID": { + "field": "m_nObjectID", + "type": 6 + }, + "Transform": { + "field": "m_vTransform", + "type": 44, + "size": 3 + }, + "FadeStartDistance": { + "field": "m_flFadeStartDistance", + "type": 8 + }, + "FadeEndDistance": { + "field": "m_flFadeEndDistance", + "type": 8 + }, + "TintColor": { + "field": "m_vTintColor", + "type": 23 + }, + "Skin": { + "field": "m_skin", + "type": 14 + }, + "ObjectTypeFlags": { + "field": "m_nObjectTypeFlags", + "type": 6 + }, + "LightingOrigin": { + "field": "m_vLightingOrigin", + "type": 21 + }, + "OverlayRenderOrder": { + "field": "m_nOverlayRenderOrder", + "type": 1 + }, + "LODOverride": { + "field": "m_nLODOverride", + "type": 1 + }, + "CubeMapPrecomputedHandshake": { + "field": "m_nCubeMapPrecomputedHandshake", + "type": 2 + }, + "LightProbeVolumePrecomputedHandshake": { + "field": "m_nLightProbeVolumePrecomputedHandshake", + "type": 2 + } + }, + "VMapResourceData_t": {}, + "VoxelVisBlockOffset_t": { + "Offset": { + "field": "m_nOffset", + "type": 6 + }, + "ElementCount": { + "field": "m_nElementCount", + "type": 6 + } + }, + "WorldBuilderParams_t": { + "MinDrawVolumeSize": { + "field": "m_flMinDrawVolumeSize", + "type": 8 + }, + "BuildBakedLighting": { + "field": "m_bBuildBakedLighting", + "type": 10 + }, + "BakedLightingInfo": { + "field": "m_bakedLightingInfo", + "classname": "BakedLightingInfo_t", + "type": 16 + }, + "CompileTimestamp": { + "field": "m_nCompileTimestamp", + "type": 7 + }, + "CompileFingerprint": { + "field": "m_nCompileFingerprint", + "type": 7 + } + }, + "WorldNodeOnDiskBufferData_t": { + "ElementCount": { + "field": "m_nElementCount", + "type": 2 + }, + "ElementSizeInBytes": { + "field": "m_nElementSizeInBytes", + "type": 2 + }, + "Data": { + "field": "m_pData", + "type": 55 + } + }, + "WorldNode_t": { + "VisClusterMembership": { + "field": "m_visClusterMembership", + "type": 56 + }, + "LayerNames": { + "field": "m_layerNames", + "type": 50 + }, + "SceneObjectLayerIndices": { + "field": "m_sceneObjectLayerIndices", + "type": 55 + }, + "OverlayLayerIndices": { + "field": "m_overlayLayerIndices", + "type": 55 + }, + "GrassFileName": { + "field": "m_grassFileName", + "type": 14 + }, + "NodeLightingInfo": { + "field": "m_nodeLightingInfo", + "classname": "BakedLightingInfo_t", + "type": 16 + }, + "HasBakedGeometryFlag": { + "field": "m_bHasBakedGeometryFlag", + "type": 10 + } + }, + "World_t": { + "BuilderParams": { + "field": "m_builderParams", + "classname": "WorldBuilderParams_t", + "type": 16 + }, + "WorldLightingInfo": { + "field": "m_worldLightingInfo", + "classname": "BakedLightingInfo_t", + "type": 16 + } + } +} \ No newline at end of file diff --git a/plugin_files/gamedata/cs2/sdk_types.json b/plugin_files/gamedata/cs2/sdk_types.json new file mode 100644 index 000000000..88824b27a --- /dev/null +++ b/plugin_files/gamedata/cs2/sdk_types.json @@ -0,0 +1,2933 @@ +{ + "AnimParamButton_t": { + "ANIMPARAM_BUTTON_NONE": 0, + "ANIMPARAM_BUTTON_DPAD_UP": 1, + "ANIMPARAM_BUTTON_DPAD_RIGHT": 2, + "ANIMPARAM_BUTTON_DPAD_DOWN": 3, + "ANIMPARAM_BUTTON_DPAD_LEFT": 4, + "ANIMPARAM_BUTTON_A": 5, + "ANIMPARAM_BUTTON_B": 6, + "ANIMPARAM_BUTTON_X": 7, + "ANIMPARAM_BUTTON_Y": 8, + "ANIMPARAM_BUTTON_LEFT_SHOULDER": 9, + "ANIMPARAM_BUTTON_RIGHT_SHOULDER": 10, + "ANIMPARAM_BUTTON_LTRIGGER": 11, + "ANIMPARAM_BUTTON_RTRIGGER": 12 + }, + "AnimParamNetworkSetting": { + "Auto": 0, + "AlwaysNetwork": 1, + "NeverNetwork": 2 + }, + "AnimParamType_t": { + "ANIMPARAM_UNKNOWN": 0, + "ANIMPARAM_BOOL": 1, + "ANIMPARAM_ENUM": 2, + "ANIMPARAM_INT": 3, + "ANIMPARAM_FLOAT": 4, + "ANIMPARAM_VECTOR": 5, + "ANIMPARAM_QUATERNION": 6, + "ANIMPARAM_GLOBALSYMBOL": 7, + "ANIMPARAM_COUNT": 8 + }, + "AnimPoseControl": { + "NoPoseControl": 0, + "AbsolutePoseControl": 1, + "RelativePoseControl": 2 + }, + "AnimationProcessingType_t": { + "ANIMATION_PROCESSING_SERVER_SIMULATION": 0, + "ANIMATION_PROCESSING_CLIENT_SIMULATION": 1, + "ANIMATION_PROCESSING_CLIENT_PREDICTION": 2, + "ANIMATION_PROCESSING_CLIENT_INTERPOLATION": 3, + "ANIMATION_PROCESSING_CLIENT_RENDER": 4, + "ANIMATION_PROCESSING_MAX": 5 + }, + "AnimationSnapshotType_t": { + "ANIMATION_SNAPSHOT_SERVER_SIMULATION": 0, + "ANIMATION_SNAPSHOT_CLIENT_SIMULATION": 1, + "ANIMATION_SNAPSHOT_CLIENT_PREDICTION": 2, + "ANIMATION_SNAPSHOT_CLIENT_INTERPOLATION": 3, + "ANIMATION_SNAPSHOT_CLIENT_RENDER": 4, + "ANIMATION_SNAPSHOT_FINAL_COMPOSITE": 5, + "ANIMATION_SNAPSHOT_MAX": 6 + }, + "BoneTransformSpace_t": { + "BoneTransformSpace_Invalid": -1, + "BoneTransformSpace_Parent": 0, + "BoneTransformSpace_Model": 1, + "BoneTransformSpace_World": 2 + }, + "FootstepLandedFootSoundType_t": { + "FOOTSOUND_Left": 0, + "FOOTSOUND_Right": 1, + "FOOTSOUND_UseOverrideSound": 2 + }, + "MoodType_t": { + "eMoodType_Head": 0, + "eMoodType_Body": 1 + }, + "ParticleAttachment_t": { + "PATTACH_INVALID": -1, + "PATTACH_ABSORIGIN": 0, + "PATTACH_ABSORIGIN_FOLLOW": 1, + "PATTACH_CUSTOMORIGIN": 2, + "PATTACH_CUSTOMORIGIN_FOLLOW": 3, + "PATTACH_POINT": 4, + "PATTACH_POINT_FOLLOW": 5, + "PATTACH_EYES_FOLLOW": 6, + "PATTACH_OVERHEAD_FOLLOW": 7, + "PATTACH_WORLDORIGIN": 8, + "PATTACH_ROOTBONE_FOLLOW": 9, + "PATTACH_RENDERORIGIN_FOLLOW": 10, + "PATTACH_MAIN_VIEW": 11, + "PATTACH_WATERWAKE": 12, + "PATTACH_CENTER_FOLLOW": 13, + "PATTACH_CUSTOM_GAME_STATE_1": 14, + "PATTACH_HEALTHBAR": 15, + "MAX_PATTACH_TYPES": 16 + }, + "RagdollPoseControl": { + "Absolute": 0, + "Relative": 1 + }, + "SeqCmd_t": { + "SeqCmd_Nop": 0, + "SeqCmd_LinearDelta": 1, + "SeqCmd_FetchFrameRange": 2, + "SeqCmd_Slerp": 3, + "SeqCmd_Add": 4, + "SeqCmd_Subtract": 5, + "SeqCmd_Scale": 6, + "SeqCmd_Copy": 7, + "SeqCmd_Blend": 8, + "SeqCmd_Worldspace": 9, + "SeqCmd_Sequence": 10, + "SeqCmd_FetchCycle": 11, + "SeqCmd_FetchFrame": 12, + "SeqCmd_IKLockInPlace": 13, + "SeqCmd_IKRestoreAll": 14, + "SeqCmd_ReverseSequence": 15, + "SeqCmd_Transform": 16 + }, + "SeqPoseSetting_t": { + "SEQ_POSE_SETTING_CONSTANT": 0, + "SEQ_POSE_SETTING_ROTATION": 1, + "SEQ_POSE_SETTING_POSITION": 2, + "SEQ_POSE_SETTING_VELOCITY": 3 + }, + "AimMatrixBlendMode": { + "AimMatrixBlendMode_None": 0, + "AimMatrixBlendMode_Additive": 1, + "AimMatrixBlendMode_ModelSpaceAdditive": 2, + "AimMatrixBlendMode_BoneMask": 3 + }, + "AnimNodeNetworkMode": { + "ServerAuthoritative": 0, + "ClientSimulate": 1 + }, + "AnimScriptType": { + "ANIMSCRIPT_TYPE_INVALID": -1, + "ANIMSCRIPT_FUSE_GENERAL": 0, + "ANIMSCRIPT_FUSE_STATEMACHINE": 1 + }, + "AnimValueSource": { + "MoveHeading": 0, + "MoveSpeed": 1, + "ForwardSpeed": 2, + "StrafeSpeed": 3, + "FacingHeading": 4, + "LookHeading": 5, + "LookPitch": 6, + "LookDistance": 7, + "Parameter": 8, + "WayPointHeading": 9, + "WayPointDistance": 10, + "BoundaryRadius": 11, + "TargetMoveHeading": 12, + "TargetMoveSpeed": 13, + "AccelerationHeading": 14, + "AccelerationSpeed": 15, + "SlopeHeading": 16, + "SlopeAngle": 17, + "SlopePitch": 18, + "SlopeYaw": 19, + "GoalDistance": 20, + "AccelerationLeftRight": 21, + "AccelerationFrontBack": 22, + "RootMotionSpeed": 23, + "RootMotionTurnSpeed": 24, + "MoveHeadingRelativeToLookHeading": 25, + "MaxMoveSpeed": 26, + "FingerCurl_Thumb": 27, + "FingerCurl_Index": 28, + "FingerCurl_Middle": 29, + "FingerCurl_Ring": 30, + "FingerCurl_Pinky": 31, + "FingerSplay_Thumb_Index": 32, + "FingerSplay_Index_Middle": 33, + "FingerSplay_Middle_Ring": 34, + "FingerSplay_Ring_Pinky": 35 + }, + "AnimVectorSource": { + "MoveDirection": 0, + "FacingPosition": 1, + "LookDirection": 2, + "VectorParameter": 3, + "WayPointDirection": 4, + "Acceleration": 5, + "SlopeNormal": 6, + "SlopeNormal_WorldSpace": 7, + "LookTarget": 8, + "LookTarget_WorldSpace": 9, + "WayPointPosition": 10, + "GoalPosition": 11, + "RootMotionVelocity": 12, + "ManualTarget_WorldSpace": 13 + }, + "BinaryNodeChildOption": { + "Child1": 0, + "Child2": 1 + }, + "BinaryNodeTiming": { + "UseChild1": 0, + "UseChild2": 1, + "SyncChildren": 2 + }, + "Blend2DMode": { + "Blend2DMode_General": 0, + "Blend2DMode_Directional": 1 + }, + "BlendKeyType": { + "BlendKey_UserValue": 0, + "BlendKey_Velocity": 1, + "BlendKey_Distance": 2, + "BlendKey_RemainingDistance": 3 + }, + "BoneMaskBlendSpace": { + "BlendSpace_Parent": 0, + "BlendSpace_Model": 1, + "BlendSpace_Model_RotationOnly": 2, + "BlendSpace_Model_TranslationOnly": 3 + }, + "CAnimationGraphVisualizerPrimitiveType": { + "ANIMATIONGRAPHVISUALIZERPRIMITIVETYPE_Text": 0, + "ANIMATIONGRAPHVISUALIZERPRIMITIVETYPE_Sphere": 1, + "ANIMATIONGRAPHVISUALIZERPRIMITIVETYPE_Line": 2, + "ANIMATIONGRAPHVISUALIZERPRIMITIVETYPE_Pie": 3, + "ANIMATIONGRAPHVISUALIZERPRIMITIVETYPE_Axis": 4 + }, + "ChoiceBlendMethod": { + "SingleBlendTime": 0, + "PerChoiceBlendTimes": 1 + }, + "ChoiceChangeMethod": { + "OnReset": 0, + "OnCycleEnd": 1, + "OnResetOrCycleEnd": 2 + }, + "ChoiceMethod": { + "WeightedRandom": 0, + "WeightedRandomNoRepeat": 1, + "Iterate": 2, + "IterateRandom": 3 + }, + "DampingSpeedFunction": { + "NoDamping": 0, + "Constant": 1, + "Spring": 2 + }, + "EDemoBoneSelectionMode": { + "CaptureAllBones": 0, + "CaptureSelectedBones": 1 + }, + "EIKEndEffectorRotationFixUpMode": { + "None": 0, + "MatchTargetOrientation": 1, + "LookAtTargetForward": 2, + "MaintainParentOrientation": 3, + "Count": 4 + }, + "FacingMode": { + "FacingMode_Invalid": 0, + "FacingMode_Manual": 1, + "FacingMode_Path": 2, + "FacingMode_LookTarget": 3, + "FacingMode_ManualPosition": 4 + }, + "FieldNetworkOption": { + "Auto": 0, + "ForceEnable": 1, + "ForceDisable": 2 + }, + "FootFallTagFoot_t": { + "FOOT1": 0, + "FOOT2": 1, + "FOOT3": 2, + "FOOT4": 3, + "FOOT5": 4, + "FOOT6": 5, + "FOOT7": 6, + "FOOT8": 7 + }, + "FootLockSubVisualization": { + "FOOTLOCKSUBVISUALIZATION_ReachabilityAnalysis": 0, + "FOOTLOCKSUBVISUALIZATION_IKSolve": 1 + }, + "FootPinningTimingSource": { + "FootMotion": 0, + "Tag": 1, + "Parameter": 2 + }, + "HandshakeTagType_t": { + "eInvalid": -1, + "eTask": 0, + "eMovement": 1, + "eCount": 2 + }, + "IKChannelMode": { + "TwoBone": 0, + "TwoBone_Translate": 1, + "OneBone": 2, + "OneBone_Translate": 3 + }, + "IKSolverType": { + "IKSOLVER_Perlin": 0, + "IKSOLVER_TwoBone": 1, + "IKSOLVER_Fabrik": 2, + "IKSOLVER_DogLeg3Bone": 3, + "IKSOLVER_CCD": 4, + "IKSOLVER_COUNT": 5 + }, + "IKTargetCoordinateSystem": { + "IKTARGETCOORDINATESYSTEM_WorldSpace": 0, + "IKTARGETCOORDINATESYSTEM_ModelSpace": 1, + "IKTARGETCOORDINATESYSTEM_COUNT": 2 + }, + "IKTargetSource": { + "IKTARGETSOURCE_Bone": 0, + "IKTARGETSOURCE_AnimgraphParameter": 1, + "IKTARGETSOURCE_COUNT": 2 + }, + "IkEndEffectorType": { + "IkEndEffector_Attachment": 0, + "IkEndEffector_Bone": 1 + }, + "IkTargetType": { + "IkTarget_Attachment": 0, + "IkTarget_Bone": 1, + "IkTarget_Parameter_ModelSpace": 2, + "IkTarget_Parameter_WorldSpace": 3 + }, + "JiggleBoneSimSpace": { + "SimSpace_Local": 0, + "SimSpace_Model": 1, + "SimSpace_World": 2 + }, + "JumpCorrectionMethod": { + "ScaleMotion": 0, + "AddCorrectionDelta": 1 + }, + "MatterialAttributeTagType_t": { + "MATERIAL_ATTRIBUTE_TAG_VALUE": 0, + "MATERIAL_ATTRIBUTE_TAG_COLOR": 1 + }, + "PoseType_t": { + "POSETYPE_STATIC": 0, + "POSETYPE_DYNAMIC": 1, + "POSETYPE_INVALID": 255 + }, + "ResetCycleOption": { + "Beginning": 0, + "SameCycleAsSource": 1, + "InverseSourceCycle": 2, + "FixedValue": 3, + "SameTimeAsSource": 4 + }, + "SelectorTagBehavior_t": { + "SelectorTagBehavior_OnWhileCurrent": 0, + "SelectorTagBehavior_OffWhenFinished": 1, + "SelectorTagBehavior_OffBeforeFinished": 2 + }, + "SolveIKChainAnimNodeDebugSetting": { + "SOLVEIKCHAINANIMNODEDEBUGSETTING_None": 0, + "SOLVEIKCHAINANIMNODEDEBUGSETTING_X_Axis_Circle": 1, + "SOLVEIKCHAINANIMNODEDEBUGSETTING_Y_Axis_Circle": 2, + "SOLVEIKCHAINANIMNODEDEBUGSETTING_Z_Axis_Circle": 3, + "SOLVEIKCHAINANIMNODEDEBUGSETTING_Forward": 4, + "SOLVEIKCHAINANIMNODEDEBUGSETTING_Up": 5, + "SOLVEIKCHAINANIMNODEDEBUGSETTING_Left": 6 + }, + "StanceOverrideMode": { + "Sequence": 0, + "Node": 1 + }, + "StateActionBehavior": { + "STATETAGBEHAVIOR_ACTIVE_WHILE_CURRENT": 0, + "STATETAGBEHAVIOR_FIRE_ON_ENTER": 1, + "STATETAGBEHAVIOR_FIRE_ON_EXIT": 2, + "STATETAGBEHAVIOR_FIRE_ON_ENTER_AND_EXIT": 3 + }, + "StepPhase": { + "StepPhase_OnGround": 0, + "StepPhase_InAir": 1 + }, + "VelocityMetricMode": { + "DirectionOnly": 0, + "MagnitudeOnly": 1, + "DirectionAndMagnitude": 2 + }, + "NmCachedValueMode_t": { + "OnEntry": 0, + "OnExit": 1 + }, + "NmEasingFunction_t": { + "Linear": 0, + "Quad": 1, + "Cubic": 2, + "Quart": 3, + "Quint": 4, + "Sine": 5, + "Expo": 6, + "Circ": 7, + "Back": 8 + }, + "NmEasingOperation_t": { + "Linear": 0, + "InQuad": 1, + "OutQuad": 2, + "InOutQuad": 3, + "InCubic": 4, + "OutCubic": 5, + "InOutCubic": 6, + "InQuart": 7, + "OutQuart": 8, + "InOutQuart": 9, + "InQuint": 10, + "OutQuint": 11, + "InOutQuint": 12, + "InSine": 13, + "OutSine": 14, + "InOutSine": 15, + "InExpo": 16, + "OutExpo": 17, + "InOutExpo": 18, + "InCirc": 19, + "OutCirc": 20, + "InOutCirc": 21, + "None": 22 + }, + "NmEventConditionRules_t": { + "LimitSearchToSourceState": 0, + "IgnoreInactiveEvents": 1, + "PreferHighestWeight": 2, + "PreferHighestProgress": 3, + "OperatorOr": 4, + "OperatorAnd": 5, + "SearchOnlyStateEvents": 6, + "SearchOnlyAnimEvents": 7, + "SearchBothStateAndAnimEvents": 8 + }, + "NmFootPhaseCondition_t": { + "LeftFootDown": 0, + "LeftFootPassing": 1, + "LeftPhase": 4, + "RightFootDown": 2, + "RightFootPassing": 3, + "RightPhase": 5 + }, + "NmFootPhase_t": { + "LeftFootDown": 0, + "RightFootPassing": 1, + "RightFootDown": 2, + "LeftFootPassing": 3 + }, + "NmFrameSnapEventMode_t": { + "Floor": 0, + "Round": 1 + }, + "NmGraphValueType_t": { + "Unknown": 0, + "Bool": 1, + "ID": 2, + "Float": 3, + "Vector": 4, + "Target": 5, + "BoneMask": 6, + "Pose": 7, + "Special": 8 + }, + "NmPoseBlendMode_t": { + "Overlay": 0, + "Additive": 1, + "ModelSpace": 2 + }, + "NmRootMotionBlendMode_t": { + "Blend": 0, + "Additive": 1, + "IgnoreSource": 2, + "IgnoreTarget": 3 + }, + "NmStateEventTypeCondition_t": { + "Entry": 0, + "FullyInState": 1, + "Exit": 2, + "Timed": 3, + "Any": 4 + }, + "NmTargetWarpAlgorithm_t": { + "Lerp": 0, + "Hermite": 1, + "HermiteFeaturePreserving": 2, + "Bezier": 3 + }, + "NmTargetWarpRule_t": { + "WarpXY": 0, + "WarpZ": 1, + "WarpXYZ": 2, + "RotationOnly": 3 + }, + "NmTransitionRuleCondition_t": { + "AnyAllowed": 0, + "FullyAllowed": 1, + "ConditionallyAllowed": 2, + "Blocked": 3 + }, + "NmTransitionRule_t": { + "AllowTransition": 0, + "ConditionallyAllowTransition": 1, + "BlockTransition": 2 + }, + "AmmoFlags_t": { + "AMMO_FORCE_DROP_IF_CARRIED": 1, + "AMMO_RESERVE_STAYS_WITH_WEAPON": 2, + "AMMO_FLAG_MAX": 2 + }, + "AmmoPosition_t": { + "AMMO_POSITION_INVALID": -1, + "AMMO_POSITION_PRIMARY": 0, + "AMMO_POSITION_SECONDARY": 1, + "AMMO_POSITION_COUNT": 2 + }, + "AnimLoopMode_t": { + "ANIM_LOOP_MODE_INVALID": -1, + "ANIM_LOOP_MODE_NOT_LOOPING": 0, + "ANIM_LOOP_MODE_LOOPING": 1, + "ANIM_LOOP_MODE_USE_SEQUENCE_SETTINGS": 2, + "ANIM_LOOP_MODE_COUNT": 3 + }, + "BaseExplosionTypes_t": { + "EXPLOSION_TYPE_DEFAULT": 0, + "EXPLOSION_TYPE_GRENADE": 1, + "EXPLOSION_TYPE_MOLOTOV": 2, + "EXPLOSION_TYPE_FIREWORKS": 3, + "EXPLOSION_TYPE_GASCAN": 4, + "EXPLOSION_TYPE_GASCYLINDER": 5, + "EXPLOSION_TYPE_EXPLOSIVEBARREL": 6, + "EXPLOSION_TYPE_ELECTRICAL": 7, + "EXPLOSION_TYPE_EMP": 8, + "EXPLOSION_TYPE_SHRAPNEL": 9, + "EXPLOSION_TYPE_SMOKEGRENADE": 10, + "EXPLOSION_TYPE_FLASHBANG": 11, + "EXPLOSION_TYPE_TRIPMINE": 12, + "EXPLOSION_TYPE_ICE": 13, + "EXPLOSION_TYPE_NONE": 14, + "EXPLOSION_TYPE_CUSTOM": 15, + "EXPLOSION_TYPE_COUNT": 16 + }, + "BeamClipStyle_t": { + "kNOCLIP": 0, + "kGEOCLIP": 1, + "kMODELCLIP": 2, + "kBEAMCLIPSTYLE_NUMBITS": 2 + }, + "BeamType_t": { + "BEAM_INVALID": 0, + "BEAM_POINTS": 1, + "BEAM_ENTPOINT": 2, + "BEAM_ENTS": 3, + "BEAM_HOSE": 4, + "BEAM_SPLINE": 5, + "BEAM_LASER": 6 + }, + "BeginDeathLifeStateTransition_t": { + "NO_CHANGE_IN_LIFESTATE": 0, + "TRANSITION_TO_LIFESTATE_DYING": 1, + "TRANSITION_TO_LIFESTATE_DEAD": 2 + }, + "BloodType": { + "None": -1, + "ColorRed": 0, + "ColorYellow": 1, + "ColorGreen": 2, + "ColorRedLVL2": 3, + "ColorRedLVL3": 4, + "ColorRedLVL4": 5, + "ColorRedLVL5": 6, + "ColorRedLVL6": 7 + }, + "BreakableContentsType_t": { + "BC_DEFAULT": 0, + "BC_EMPTY": 1, + "BC_PROP_GROUP_OVERRIDE": 2, + "BC_PARTICLE_SYSTEM_OVERRIDE": 3 + }, + "BrushSolidities_e": { + "BRUSHSOLID_TOGGLE": 0, + "BRUSHSOLID_NEVER": 1, + "BRUSHSOLID_ALWAYS": 2 + }, + "C4LightEffect_t": { + "eLightEffectNone": 0, + "eLightEffectDropped": 1, + "eLightEffectThirdPersonHeld": 2 + }, + "CDebugOverlayCombinedTypes_t": { + "ALL": 0, + "ANY": 1, + "COUNT": 2 + }, + "CDebugOverlayFilterType_t": { + "NONE": 0, + "TEXT": 1, + "ENTITY": 2, + "COUNT": 3, + "TACTICAL_SEARCH": 4, + "AI_SCHEDULE": 5, + "AI_TASK": 6, + "AI_EVENT": 7, + "END_SIM_HISTORY_TYPES": 8, + "COMBINED": -1 + }, + "CSPlayerBlockingUseAction_t": { + "k_CSPlayerBlockingUseAction_None": 0, + "k_CSPlayerBlockingUseAction_DefusingDefault": 1, + "k_CSPlayerBlockingUseAction_DefusingWithKit": 2, + "k_CSPlayerBlockingUseAction_HostageGrabbing": 3, + "k_CSPlayerBlockingUseAction_HostageDropping": 4, + "k_CSPlayerBlockingUseAction_OpeningSafe": 5, + "k_CSPlayerBlockingUseAction_EquippingParachute": 6, + "k_CSPlayerBlockingUseAction_EquippingHeavyArmor": 7, + "k_CSPlayerBlockingUseAction_EquippingContract": 8, + "k_CSPlayerBlockingUseAction_EquippingTabletUpgrade": 9, + "k_CSPlayerBlockingUseAction_TakingOffHeavyArmor": 10, + "k_CSPlayerBlockingUseAction_PayingToOpenDoor": 11, + "k_CSPlayerBlockingUseAction_CancelingSpawnRappelling": 12, + "k_CSPlayerBlockingUseAction_EquippingExoJump": 13, + "k_CSPlayerBlockingUseAction_PickingUpBumpMine": 14, + "k_CSPlayerBlockingUseAction_MapLongUseEntity_Pickup": 15, + "k_CSPlayerBlockingUseAction_MapLongUseEntity_Place": 16, + "k_CSPlayerBlockingUseAction_MaxCount": 17 + }, + "CSPlayerState": { + "STATE_ACTIVE": 0, + "STATE_WELCOME": 1, + "STATE_PICKINGTEAM": 2, + "STATE_PICKINGCLASS": 3, + "STATE_DEATH_ANIM": 4, + "STATE_DEATH_WAIT_FOR_KEY": 5, + "STATE_OBSERVER_MODE": 6, + "STATE_GUNGAME_RESPAWN": 7, + "STATE_DORMANT": 8, + "NUM_PLAYER_STATES": 9 + }, + "CSWeaponCategory": { + "WEAPONCATEGORY_OTHER": 0, + "WEAPONCATEGORY_MELEE": 1, + "WEAPONCATEGORY_SECONDARY": 2, + "WEAPONCATEGORY_SMG": 3, + "WEAPONCATEGORY_RIFLE": 4, + "WEAPONCATEGORY_HEAVY": 5, + "WEAPONCATEGORY_COUNT": 6 + }, + "CSWeaponMode": { + "Primary_Mode": 0, + "Secondary_Mode": 1, + "WeaponMode_MAX": 2 + }, + "CSWeaponSilencerType": { + "WEAPONSILENCER_NONE": 0, + "WEAPONSILENCER_DETACHABLE": 1, + "WEAPONSILENCER_INTEGRATED": 2 + }, + "CSWeaponState_t": { + "WEAPON_NOT_CARRIED": 0, + "WEAPON_IS_CARRIED_BY_PLAYER": 1, + "WEAPON_IS_ACTIVE": 2 + }, + "CSWeaponType": { + "WEAPONTYPE_KNIFE": 0, + "WEAPONTYPE_PISTOL": 1, + "WEAPONTYPE_SUBMACHINEGUN": 2, + "WEAPONTYPE_RIFLE": 3, + "WEAPONTYPE_SHOTGUN": 4, + "WEAPONTYPE_SNIPER_RIFLE": 5, + "WEAPONTYPE_MACHINEGUN": 6, + "WEAPONTYPE_C4": 7, + "WEAPONTYPE_TASER": 8, + "WEAPONTYPE_GRENADE": 9, + "WEAPONTYPE_EQUIPMENT": 10, + "WEAPONTYPE_STACKABLEITEM": 11, + "WEAPONTYPE_FISTS": 12, + "WEAPONTYPE_BREACHCHARGE": 13, + "WEAPONTYPE_BUMPMINE": 14, + "WEAPONTYPE_TABLET": 15, + "WEAPONTYPE_MELEE": 16, + "WEAPONTYPE_SHIELD": 17, + "WEAPONTYPE_ZONE_REPULSOR": 18, + "WEAPONTYPE_UNKNOWN": 19 + }, + "CanPlaySequence_t": { + "CANNOT_PLAY": 0, + "CAN_PLAY_NOW": 1, + "CAN_PLAY_ENQUEUED": 2 + }, + "ChatIgnoreType_t": { + "CHAT_IGNORE_NONE": 0, + "CHAT_IGNORE_ALL": 1, + "CHAT_IGNORE_TEAM": 2 + }, + "ChoreoLookAtMode_t": { + "eInvalid": -1, + "eChest": 0, + "eHead": 1, + "eEyesOnly": 2 + }, + "ChoreoLookAtSpeed_t": { + "eInvalid": -1, + "eSlow": 0, + "eMedium": 1, + "eFast": 2 + }, + "Class_T": { + "CLASS_NONE": 0, + "CLASS_PLAYER": 1, + "CLASS_PLAYER_ALLY": 2, + "CLASS_BOMB": 3, + "CLASS_FOOT_CONTACT_SHADOW": 4, + "CLASS_WEAPON": 5, + "CLASS_WATER_SPLASHER": 6, + "CLASS_WEAPON_VIEWMODEL": 7, + "CLASS_DOOR": 8, + "NUM_CLASSIFY_CLASSES": 9 + }, + "CommandEntitySpecType_t": { + "SPEC_SEARCH": 0, + "SPEC_TYPES_COUNT": 1 + }, + "CommandExecMode_t": { + "EXEC_MANUAL": 0, + "EXEC_LEVELSTART": 1, + "EXEC_PERIODIC": 2, + "EXEC_MODES_COUNT": 3 + }, + "CompMatPropertyMutatorConditionType_t": { + "COMP_MAT_MUTATOR_CONDITION_INPUT_CONTAINER_EXISTS": 0, + "COMP_MAT_MUTATOR_CONDITION_INPUT_CONTAINER_VALUE_EXISTS": 1, + "COMP_MAT_MUTATOR_CONDITION_INPUT_CONTAINER_VALUE_EQUALS": 2 + }, + "CompMatPropertyMutatorType_t": { + "COMP_MAT_PROPERTY_MUTATOR_INIT": 0, + "COMP_MAT_PROPERTY_MUTATOR_COPY_MATCHING_KEYS": 1, + "COMP_MAT_PROPERTY_MUTATOR_COPY_KEYS_WITH_SUFFIX": 2, + "COMP_MAT_PROPERTY_MUTATOR_COPY_PROPERTY": 3, + "COMP_MAT_PROPERTY_MUTATOR_SET_VALUE": 4, + "COMP_MAT_PROPERTY_MUTATOR_GENERATE_TEXTURE": 5, + "COMP_MAT_PROPERTY_MUTATOR_CONDITIONAL_MUTATORS": 6, + "COMP_MAT_PROPERTY_MUTATOR_POP_INPUT_QUEUE": 7, + "COMP_MAT_PROPERTY_MUTATOR_DRAW_TEXT": 8, + "COMP_MAT_PROPERTY_MUTATOR_RANDOM_ROLL_INPUT_VARIABLES": 9 + }, + "CompositeMaterialInputContainerSourceType_t": { + "CONTAINER_SOURCE_TYPE_TARGET_MATERIAL": 0, + "CONTAINER_SOURCE_TYPE_MATERIAL_FROM_TARGET_ATTR": 1, + "CONTAINER_SOURCE_TYPE_SPECIFIC_MATERIAL": 2, + "CONTAINER_SOURCE_TYPE_LOOSE_VARIABLES": 3, + "CONTAINER_SOURCE_TYPE_VARIABLE_FROM_TARGET_ATTR": 4, + "CONTAINER_SOURCE_TYPE_TARGET_INSTANCE_MATERIAL": 5 + }, + "CompositeMaterialInputLooseVariableType_t": { + "LOOSE_VARIABLE_TYPE_BOOLEAN": 0, + "LOOSE_VARIABLE_TYPE_INTEGER1": 1, + "LOOSE_VARIABLE_TYPE_INTEGER2": 2, + "LOOSE_VARIABLE_TYPE_INTEGER3": 3, + "LOOSE_VARIABLE_TYPE_INTEGER4": 4, + "LOOSE_VARIABLE_TYPE_FLOAT1": 5, + "LOOSE_VARIABLE_TYPE_FLOAT2": 6, + "LOOSE_VARIABLE_TYPE_FLOAT3": 7, + "LOOSE_VARIABLE_TYPE_FLOAT4": 8, + "LOOSE_VARIABLE_TYPE_COLOR4": 9, + "LOOSE_VARIABLE_TYPE_STRING": 10, + "LOOSE_VARIABLE_TYPE_SYSTEMVAR": 11, + "LOOSE_VARIABLE_TYPE_RESOURCE_MATERIAL": 12, + "LOOSE_VARIABLE_TYPE_RESOURCE_TEXTURE": 13, + "LOOSE_VARIABLE_TYPE_PANORAMA_RENDER": 14 + }, + "CompositeMaterialInputTextureType_t": { + "INPUT_TEXTURE_TYPE_DEFAULT": 0, + "INPUT_TEXTURE_TYPE_NORMALMAP": 1, + "INPUT_TEXTURE_TYPE_COLOR": 2, + "INPUT_TEXTURE_TYPE_MASKS": 3, + "INPUT_TEXTURE_TYPE_ROUGHNESS": 4, + "INPUT_TEXTURE_TYPE_PEARLESCENCE_MASK": 5, + "INPUT_TEXTURE_TYPE_AO": 6 + }, + "CompositeMaterialMatchFilterType_t": { + "MATCH_FILTER_MATERIAL_ATTRIBUTE_EXISTS": 0, + "MATCH_FILTER_MATERIAL_SHADER": 1, + "MATCH_FILTER_MATERIAL_NAME_SUBSTR": 2, + "MATCH_FILTER_MATERIAL_ATTRIBUTE_EQUALS": 3, + "MATCH_FILTER_MATERIAL_PROPERTY_EXISTS": 4, + "MATCH_FILTER_MATERIAL_PROPERTY_EQUALS": 5 + }, + "CompositeMaterialVarSystemVar_t": { + "COMPMATSYSVAR_COMPOSITETIME": 0, + "COMPMATSYSVAR_EMPTY_RESOURCE_SPACER": 1 + }, + "DamageTypes_t": { + "DMG_GENERIC": 0, + "DMG_CRUSH": 1, + "DMG_BULLET": 2, + "DMG_SLASH": 4, + "DMG_BURN": 8, + "DMG_VEHICLE": 16, + "DMG_FALL": 32, + "DMG_BLAST": 64, + "DMG_CLUB": 128, + "DMG_SHOCK": 256, + "DMG_SONIC": 512, + "DMG_ENERGYBEAM": 1024, + "DMG_DROWN": 16384, + "DMG_POISON": 32768, + "DMG_RADIATION": 65536, + "DMG_DROWNRECOVER": 131072, + "DMG_ACID": 262144, + "DMG_PHYSGUN": 1048576, + "DMG_DISSOLVE": 2097152, + "DMG_BLAST_SURFACE": 4194304, + "DMG_BUCKSHOT": 16777216, + "DMG_LASTGENERICFLAG": 16777216, + "DMG_HEADSHOT": 33554432, + "DMG_DANGERZONE": 67108864 + }, + "DebugOverlayBits_t": { + "OVERLAY_TEXT_BIT": 1, + "OVERLAY_NAME_BIT": 2, + "OVERLAY_BBOX_BIT": 4, + "OVERLAY_PIVOT_BIT": 8, + "OVERLAY_MESSAGE_BIT": 16, + "OVERLAY_ABSBOX_BIT": 32, + "OVERLAY_RBOX_BIT": 64, + "OVERLAY_SHOW_BLOCKSLOS": 128, + "OVERLAY_ATTACHMENTS_BIT": 256, + "OVERLAY_INTERPOLATED_ATTACHMENTS_BIT": 512, + "OVERLAY_INTERPOLATED_PIVOT_BIT": 1024, + "OVERLAY_SKELETON_BIT": 2048, + "OVERLAY_INTERPOLATED_SKELETON_BIT": 4096, + "OVERLAY_TRIGGER_BOUNDS_BIT": 8192, + "OVERLAY_HITBOX_BIT": 16384, + "OVERLAY_INTERPOLATED_HITBOX_BIT": 32768, + "OVERLAY_AUTOAIM_BIT": 65536, + "OVERLAY_NPC_SELECTED_BIT": 131072, + "OVERLAY_JOINT_INFO_BIT": 262144, + "OVERLAY_NPC_ROUTE_BIT": 524288, + "OVERLAY_VISIBILITY_TRACES_BIT": 1048576, + "OVERLAY_NPC_ENEMIES_BIT": 4194304, + "OVERLAY_NPC_CONDITIONS_BIT": 8388608, + "OVERLAY_NPC_COMBAT_BIT": 16777216, + "OVERLAY_NPC_TASK_BIT": 33554432, + "OVERLAY_NPC_BODYLOCATIONS": 67108864, + "OVERLAY_NPC_VIEWCONE_BIT": 134217728, + "OVERLAY_NPC_KILL_BIT": 268435456, + "OVERLAY_WC_CHANGE_ENTITY": 536870912, + "OVERLAY_BUDDHA_MODE": 1073741824, + "OVERLAY_NPC_STEERING_REGULATIONS": 2147483648, + "OVERLAY_NPC_TASK_TEXT_BIT": 4294967296, + "OVERLAY_PROP_DEBUG": 8589934592, + "OVERLAY_NPC_RELATION_BIT": 17179869184, + "OVERLAY_VIEWOFFSET": 34359738368, + "OVERLAY_VCOLLIDE_WIREFRAME_BIT": 68719476736, + "OVERLAY_NPC_SCRIPTED_COMMANDS_BIT": 137438953472, + "OVERLAY_ACTORNAME_BIT": 274877906944, + "OVERLAY_NPC_CONDITIONS_TEXT_BIT": 549755813888, + "OVERLAY_NPC_ABILITY_RANGE_DEBUG_BIT": 1099511627776 + }, + "Disposition_t": { + "D_ER": 0, + "D_HT": 1, + "D_FR": 2, + "D_LI": 3, + "D_NU": 4, + "D_ERROR": 0, + "D_HATE": 1, + "D_FEAR": 2, + "D_LIKE": 3, + "D_NEUTRAL": 4 + }, + "DoorState_t": { + "DOOR_STATE_CLOSED": 0, + "DOOR_STATE_OPENING": 1, + "DOOR_STATE_OPEN": 2, + "DOOR_STATE_CLOSING": 3, + "DOOR_STATE_AJAR": 4 + }, + "EContributionScoreFlag_t": { + "k_EContributionScoreFlag_Default": 0, + "k_EContributionScoreFlag_Objective": 1, + "k_EContributionScoreFlag_Bullets": 2 + }, + "EDestructiblePartDamagePassThroughType": { + "Normal": 0, + "Absorb": 1 + }, + "EInButtonState": { + "IN_BUTTON_UP": 0, + "IN_BUTTON_DOWN": 1, + "IN_BUTTON_DOWN_UP": 2, + "IN_BUTTON_UP_DOWN": 3, + "IN_BUTTON_UP_DOWN_UP": 4, + "IN_BUTTON_DOWN_UP_DOWN": 5, + "IN_BUTTON_DOWN_UP_DOWN_UP": 6, + "IN_BUTTON_UP_DOWN_UP_DOWN": 7, + "IN_BUTTON_STATE_COUNT": 8 + }, + "EKillTypes_t": { + "KILL_NONE": 0, + "KILL_DEFAULT": 1, + "KILL_HEADSHOT": 2, + "KILL_BLAST": 3, + "KILL_BURN": 4, + "KILL_SLASH": 5, + "KILL_SHOCK": 6, + "KILLTYPE_COUNT": 7 + }, + "EProceduralRagdollWeightIndexPropagationMethod": { + "Bone": 0, + "BoneAndChildren": 1 + }, + "EntityDisolveType_t": { + "ENTITY_DISSOLVE_INVALID": -1, + "ENTITY_DISSOLVE_NORMAL": 0, + "ENTITY_DISSOLVE_ELECTRICAL": 1, + "ENTITY_DISSOLVE_ELECTRICAL_LIGHT": 2, + "ENTITY_DISSOLVE_CORE": 3 + }, + "EntityDistanceMode_t": { + "eOriginToOrigin": 0, + "eCenterToCenter": 1, + "eAxisToAxis": 2 + }, + "EntityPlatformTypes_t": { + "ENTITY_NOT_PLATFORM": 0, + "ENTITY_PLATFORM_PLAYER_FOLLOWS_YAW": 1, + "ENTITY_PLATFORM_PLAYER_IGNORES_YAW": 2 + }, + "EntitySubclassScope_t": { + "SUBCLASS_SCOPE_NONE": -1, + "SUBCLASS_SCOPE_PRECIPITATION": 0, + "SUBCLASS_SCOPE_PLAYER_WEAPONS": 1, + "SUBCLASS_SCOPE_COUNT": 2 + }, + "FixAngleSet_t": { + "None": 0, + "Absolute": 1, + "Relative": 2 + }, + "GameAnimEventIndex_t": { + "AE_EMPTY": 0, + "AE_CL_PLAYSOUND": 1, + "AE_CL_PLAYSOUND_ATTACHMENT": 2, + "AE_CL_PLAYSOUND_POSITION": 3, + "AE_SV_PLAYSOUND": 4, + "AE_CL_STOPSOUND": 5, + "AE_CL_PLAYSOUND_LOOPING": 6, + "AE_CL_CREATE_PARTICLE_EFFECT": 7, + "AE_CL_STOP_PARTICLE_EFFECT": 8, + "AE_CL_CREATE_PARTICLE_EFFECT_CFG": 9, + "AE_SV_CREATE_PARTICLE_EFFECT_CFG": 10, + "AE_SV_STOP_PARTICLE_EFFECT": 11, + "AE_FOOTSTEP": 12, + "AE_RAGDOLL": 13, + "AE_CL_STOP_RAGDOLL_CONTROL": 14, + "AE_CL_ENABLE_BODYGROUP": 15, + "AE_CL_DISABLE_BODYGROUP": 16, + "AE_BODYGROUP_SET_VALUE": 17, + "AE_CL_BODYGROUP_SET_VALUE_CMODEL_WPN": 18, + "AE_WEAPON_PERFORM_ATTACK": 19, + "AE_FIRE_INPUT": 20, + "AE_CL_CLOTH_ATTR": 21, + "AE_CL_CLOTH_GROUND_OFFSET": 22, + "AE_CL_CLOTH_STIFFEN": 23, + "AE_CL_CLOTH_EFFECT": 24, + "AE_CL_CREATE_ANIM_SCOPE_PROP": 25, + "AE_SV_IKLOCK": 26, + "AE_PULSE_GRAPH": 27, + "AE_PULSE_GRAPH_LOOKAT": 28, + "AE_PULSE_GRAPH_AIMAT": 29, + "AE_PULSE_GRAPH_IKLOCKLEFTARM": 30, + "AE_PULSE_GRAPH_IKLOCKRIGHTARM": 31, + "AE_DISABLE_PLATFORM": 32, + "AE_ENABLE_PLATFORM": 33, + "AE_ANIMGRAPH_SET_PARAM": 34, + "AE_CL_WEAPON_TRANSITION_INTO_HAND": 35, + "AE_CL_BODYGROUP_SET_TO_CLIP": 36, + "AE_CL_BODYGROUP_SET_TO_NEXTCLIP": 37, + "AE_SV_SHOW_SILENCER": 38, + "AE_SV_ATTACH_SILENCER_COMPLETE": 39, + "AE_SV_HIDE_SILENCER": 40, + "AE_SV_DETACH_SILENCER_COMPLETE": 41, + "AE_CL_EJECT_MAG": 42, + "AE_WPN_COMPLETE_RELOAD": 43, + "AE_WPN_HEALTHSHOT_INJECT": 44, + "AE_CL_C4_SCREEN_TEXT": 45, + "AE_GRENADE_THROW_COMPLETE": 46 + }, + "GrenadeType_t": { + "GRENADE_TYPE_EXPLOSIVE": 0, + "GRENADE_TYPE_FLASH": 1, + "GRENADE_TYPE_FIRE": 2, + "GRENADE_TYPE_DECOY": 3, + "GRENADE_TYPE_SMOKE": 4, + "GRENADE_TYPE_SENSOR": 5, + "GRENADE_TYPE_SNOWBALL": 6, + "GRENADE_TYPE_TOTAL": 7 + }, + "HierarchyType_t": { + "HIERARCHY_NONE": 0, + "HIERARCHY_BONE_MERGE": 1, + "HIERARCHY_ATTACHMENT": 2, + "HIERARCHY_ABSORIGIN": 3, + "HIERARCHY_BONE": 4, + "HIERARCHY_TYPE_COUNT": 5 + }, + "HitGroup_t": { + "HITGROUP_INVALID": -1, + "HITGROUP_GENERIC": 0, + "HITGROUP_HEAD": 1, + "HITGROUP_CHEST": 2, + "HITGROUP_STOMACH": 3, + "HITGROUP_LEFTARM": 4, + "HITGROUP_RIGHTARM": 5, + "HITGROUP_LEFTLEG": 6, + "HITGROUP_RIGHTLEG": 7, + "HITGROUP_NECK": 8, + "HITGROUP_UNUSED": 9, + "HITGROUP_GEAR": 10, + "HITGROUP_SPECIAL": 11, + "HITGROUP_COUNT": 12 + }, + "Hull_t": { + "HULL_HUMAN": 0, + "HULL_SMALL_CENTERED": 1, + "HULL_WIDE_HUMAN": 2, + "HULL_TINY": 3, + "HULL_MEDIUM": 4, + "HULL_TINY_CENTERED": 5, + "HULL_LARGE": 6, + "HULL_LARGE_CENTERED": 7, + "HULL_MEDIUM_TALL": 8, + "HULL_SMALL": 9, + "NUM_HULLS": 10, + "HULL_NONE": 11 + }, + "InputBitMask_t": { + "IN_NONE": 0, + "IN_ALL": -1, + "IN_ATTACK": 1, + "IN_JUMP": 2, + "IN_DUCK": 4, + "IN_FORWARD": 8, + "IN_BACK": 16, + "IN_USE": 32, + "IN_TURNLEFT": 128, + "IN_TURNRIGHT": 256, + "IN_MOVELEFT": 512, + "IN_MOVERIGHT": 1024, + "IN_ATTACK2": 2048, + "IN_RELOAD": 8192, + "IN_SPEED": 65536, + "IN_JOYAUTOSPRINT": 131072, + "IN_FIRST_MOD_SPECIFIC_BIT": 4294967296, + "IN_USEORRELOAD": 4294967296, + "IN_SCORE": 8589934592, + "IN_ZOOM": 17179869184, + "IN_LOOK_AT_WEAPON": 34359738368 + }, + "ItemFlagTypes_t": { + "ITEM_FLAG_NONE": 0, + "ITEM_FLAG_CAN_SELECT_WITHOUT_AMMO": 1, + "ITEM_FLAG_NOAUTORELOAD": 2, + "ITEM_FLAG_NOAUTOSWITCHEMPTY": 4, + "ITEM_FLAG_LIMITINWORLD": 8, + "ITEM_FLAG_EXHAUSTIBLE": 16, + "ITEM_FLAG_DOHITLOCATIONDMG": 32, + "ITEM_FLAG_NOAMMOPICKUPS": 64, + "ITEM_FLAG_NOITEMPICKUP": 128 + }, + "LatchDirtyPermission_t": { + "LATCH_DIRTY_DISALLOW": 0, + "LATCH_DIRTY_SERVER_CONTROLLED": 1, + "LATCH_DIRTY_CLIENT_SIMULATED": 2, + "LATCH_DIRTY_PREDICTION": 3, + "LATCH_DIRTY_FRAMESIMULATE": 4, + "LATCH_DIRTY_PARTICLE_SIMULATE": 5 + }, + "LifeState_t": { + "LIFE_ALIVE": 0, + "LIFE_DYING": 1, + "LIFE_DEAD": 2, + "LIFE_RESPAWNABLE": 3, + "LIFE_RESPAWNING": 4 + }, + "MedalRank_t": { + "MEDAL_RANK_NONE": 0, + "MEDAL_RANK_BRONZE": 1, + "MEDAL_RANK_SILVER": 2, + "MEDAL_RANK_GOLD": 3, + "MEDAL_RANK_COUNT": 4 + }, + "ModifyDamageReturn_t": { + "CONTINUE_TO_APPLY_DAMAGE": 0, + "ABORT_DO_NOT_APPLY_DAMAGE": 1 + }, + "MoveCollide_t": { + "MOVECOLLIDE_DEFAULT": 0, + "MOVECOLLIDE_FLY_BOUNCE": 1, + "MOVECOLLIDE_FLY_CUSTOM": 2, + "MOVECOLLIDE_FLY_SLIDE": 3, + "MOVECOLLIDE_COUNT": 4, + "MOVECOLLIDE_MAX_BITS": 3 + }, + "MoveMountingAmount_t": { + "MOVE_MOUNT_NONE": 0, + "MOVE_MOUNT_LOW": 1, + "MOVE_MOUNT_HIGH": 2, + "MOVE_MOUNT_MAXCOUNT": 3 + }, + "MoveType_t": { + "MOVETYPE_NONE": 0, + "MOVETYPE_OBSOLETE": 1, + "MOVETYPE_WALK": 2, + "MOVETYPE_FLY": 3, + "MOVETYPE_FLYGRAVITY": 4, + "MOVETYPE_VPHYSICS": 5, + "MOVETYPE_PUSH": 6, + "MOVETYPE_NOCLIP": 7, + "MOVETYPE_OBSERVER": 8, + "MOVETYPE_LADDER": 9, + "MOVETYPE_CUSTOM": 10, + "MOVETYPE_LAST": 11, + "MOVETYPE_INVALID": 11, + "MOVETYPE_MAX_BITS": 5 + }, + "ObserverInterpState_t": { + "OBSERVER_INTERP_NONE": 0, + "OBSERVER_INTERP_TRAVELING": 1, + "OBSERVER_INTERP_SETTLING": 2 + }, + "ObserverMode_t": { + "OBS_MODE_NONE": 0, + "OBS_MODE_FIXED": 1, + "OBS_MODE_IN_EYE": 2, + "OBS_MODE_CHASE": 3, + "OBS_MODE_ROAMING": 4, + "OBS_MODE_DIRECTED": 5, + "NUM_OBSERVER_MODES": 6 + }, + "OnFrame": { + "ONFRAME_UNKNOWN": 0, + "ONFRAME_TRUE": 1, + "ONFRAME_FALSE": 2 + }, + "PerformanceMode_t": { + "PM_NORMAL": 0, + "PM_NO_GIBS": 1, + "PM_FULL_GIBS": 2, + "PM_REDUCED_GIBS": 3 + }, + "PlayerAnimEvent_t": { + "PLAYERANIMEVENT_FIRE_GUN_PRIMARY": 0, + "PLAYERANIMEVENT_FIRE_GUN_SECONDARY": 1, + "PLAYERANIMEVENT_GRENADE_PULL_PIN": 2, + "PLAYERANIMEVENT_THROW_GRENADE": 3, + "PLAYERANIMEVENT_JUMP": 4, + "PLAYERANIMEVENT_RELOAD": 5, + "PLAYERANIMEVENT_CLEAR_FIRING": 6, + "PLAYERANIMEVENT_DEPLOY": 7, + "PLAYERANIMEVENT_SILENCER_STATE": 8, + "PLAYERANIMEVENT_SILENCER_TOGGLE": 9, + "PLAYERANIMEVENT_THROW_GRENADE_UNDERHAND": 10, + "PLAYERANIMEVENT_CATCH_WEAPON": 11, + "PLAYERANIMEVENT_LOOKATWEAPON_REQUEST": 12, + "PLAYERANIMEVENT_RELOAD_CANCEL_LOOKATWEAPON": 13, + "PLAYERANIMEVENT_HAULBACK": 14, + "PLAYERANIMEVENT_IDLE": 15, + "PLAYERANIMEVENT_STRIKE_HIT": 16, + "PLAYERANIMEVENT_STRIKE_MISS": 17, + "PLAYERANIMEVENT_BACKSTAB": 18, + "PLAYERANIMEVENT_DRYFIRE": 19, + "PLAYERANIMEVENT_FIDGET": 20, + "PLAYERANIMEVENT_RELEASE": 21, + "PLAYERANIMEVENT_TAUNT": 22, + "PLAYERANIMEVENT_COUNT": 23 + }, + "PlayerConnectedState": { + "PlayerNeverConnected": -1, + "PlayerConnected": 0, + "PlayerConnecting": 1, + "PlayerReconnecting": 2, + "PlayerDisconnecting": 3, + "PlayerDisconnected": 4, + "PlayerReserved": 5 + }, + "PointTemplateClientOnlyEntityBehavior_t": { + "CREATE_FOR_CURRENTLY_CONNECTED_CLIENTS_ONLY": 0, + "CREATE_FOR_CLIENTS_WHO_CONNECT_LATER": 1 + }, + "PointTemplateOwnerSpawnGroupType_t": { + "INSERT_INTO_POINT_TEMPLATE_SPAWN_GROUP": 0, + "INSERT_INTO_CURRENTLY_ACTIVE_SPAWN_GROUP": 1, + "INSERT_INTO_NEWLY_CREATED_SPAWN_GROUP": 2 + }, + "PointWorldTextJustifyHorizontal_t": { + "POINT_WORLD_TEXT_JUSTIFY_HORIZONTAL_LEFT": 0, + "POINT_WORLD_TEXT_JUSTIFY_HORIZONTAL_CENTER": 1, + "POINT_WORLD_TEXT_JUSTIFY_HORIZONTAL_RIGHT": 2 + }, + "PointWorldTextJustifyVertical_t": { + "POINT_WORLD_TEXT_JUSTIFY_VERTICAL_BOTTOM": 0, + "POINT_WORLD_TEXT_JUSTIFY_VERTICAL_CENTER": 1, + "POINT_WORLD_TEXT_JUSTIFY_VERTICAL_TOP": 2 + }, + "PointWorldTextReorientMode_t": { + "POINT_WORLD_TEXT_REORIENT_NONE": 0, + "POINT_WORLD_TEXT_REORIENT_AROUND_UP": 1 + }, + "PreviewCharacterMode": { + "DIORAMA": 0, + "MAIN_MENU": 1, + "BUY_MENU": 2, + "TEAM_SELECT": 3, + "END_OF_MATCH": 4, + "INVENTORY_INSPECT": 5, + "WALKING": 6, + "TEAM_INTRO": 7, + "WINGMAN_INTRO": 8, + "BANNER": 9 + }, + "PreviewEOMCelebration": { + "WALKUP": 0, + "PUNCHING": 1, + "SWAGGER": 2, + "DROPDOWN": 3, + "STRETCH": 4, + "SWAT_FEMALE": 5, + "MASK_F": 6, + "GUERILLA": 7, + "GUERILLA02": 8, + "GENDARMERIE": 9, + "SCUBA_FEMALE": 10, + "SCUBA_MALE": 11, + "AVA_DEFEAT": 12, + "GENDARMERIE_DEFEAT": 13, + "MAE_DEFEAT": 14, + "RICKSAW_DEFEAT": 15, + "SCUBA_FEMALE_DEFEAT": 16, + "SCUBA_MALE_DEFEAT": 17, + "CRASSWATER_DEFEAT": 18, + "DARRYL_DEFEAT": 19, + "DOCTOR_DEFEAT": 20, + "MUHLIK_DEFEAT": 21, + "VYPA_DEFEAT": 22 + }, + "PreviewWeaponState": { + "DROPPED": 0, + "HOLSTERED": 1, + "DEPLOYED": 2, + "PLANTED": 3, + "INSPECT": 4, + "ICON": 5 + }, + "RenderFx_t": { + "kRenderFxNone": 0, + "kRenderFxPulseSlow": 1, + "kRenderFxPulseFast": 2, + "kRenderFxPulseSlowWide": 3, + "kRenderFxPulseFastWide": 4, + "kRenderFxFadeSlow": 5, + "kRenderFxFadeFast": 6, + "kRenderFxSolidSlow": 7, + "kRenderFxSolidFast": 8, + "kRenderFxStrobeSlow": 9, + "kRenderFxStrobeFast": 10, + "kRenderFxStrobeFaster": 11, + "kRenderFxFlickerSlow": 12, + "kRenderFxFlickerFast": 13, + "kRenderFxNoDissipation": 14, + "kRenderFxFadeOut": 15, + "kRenderFxFadeIn": 16, + "kRenderFxPulseFastWider": 17, + "kRenderFxGlowShell": 18, + "kRenderFxMax": 19 + }, + "RenderMode_t": { + "kRenderNormal": 0, + "kRenderTransColor": 1, + "kRenderTransTexture": 2, + "kRenderGlow": 3, + "kRenderTransAlpha": 4, + "kRenderTransAdd": 5, + "kRenderEnvironmental": 6, + "kRenderTransAddFrameBlend": 7, + "kRenderTransAlphaAdd": 8, + "kRenderWorldGlow": 9, + "kRenderNone": 10, + "kRenderDevVisualizer": 11, + "kRenderModeCount": 12 + }, + "RumbleEffect_t": { + "RUMBLE_INVALID": -1, + "RUMBLE_STOP_ALL": 0, + "RUMBLE_PISTOL": 1, + "RUMBLE_357": 2, + "RUMBLE_SMG1": 3, + "RUMBLE_AR2": 4, + "RUMBLE_SHOTGUN_SINGLE": 5, + "RUMBLE_SHOTGUN_DOUBLE": 6, + "RUMBLE_AR2_ALT_FIRE": 7, + "RUMBLE_RPG_MISSILE": 8, + "RUMBLE_CROWBAR_SWING": 9, + "RUMBLE_AIRBOAT_GUN": 10, + "RUMBLE_JEEP_ENGINE_LOOP": 11, + "RUMBLE_FLAT_LEFT": 12, + "RUMBLE_FLAT_RIGHT": 13, + "RUMBLE_FLAT_BOTH": 14, + "RUMBLE_DMG_LOW": 15, + "RUMBLE_DMG_MED": 16, + "RUMBLE_DMG_HIGH": 17, + "RUMBLE_FALL_LONG": 18, + "RUMBLE_FALL_SHORT": 19, + "RUMBLE_PHYSCANNON_OPEN": 20, + "RUMBLE_PHYSCANNON_PUNT": 21, + "RUMBLE_PHYSCANNON_LOW": 22, + "RUMBLE_PHYSCANNON_MEDIUM": 23, + "RUMBLE_PHYSCANNON_HIGH": 24, + "NUM_RUMBLE_EFFECTS": 25 + }, + "ScriptedHeldWeaponBehavior_t": { + "eInvalid": -1, + "eHolster": 0, + "eDeploy": 1, + "eDrop": 2 + }, + "ScriptedMoveTo_t": { + "eWait": 0, + "eMoveWithGait": 3, + "eTeleport": 4, + "eWaitFacing": 5, + "eObsoleteBackCompat1": 1, + "eObsoleteBackCompat2": 2 + }, + "ScriptedOnDeath_t": { + "SS_ONDEATH_NOT_APPLICABLE": -1, + "SS_ONDEATH_UNDEFINED": 0, + "SS_ONDEATH_RAGDOLL": 1, + "SS_ONDEATH_ANIMATED_DEATH": 2 + }, + "SequenceFinishNotifyState_t": { + "eDoNotNotify": 0, + "eNotifyWhenFinished": 1, + "eNotifyTriggered": 2 + }, + "ShadowType_t": { + "SHADOWS_NONE": 0, + "SHADOWS_SIMPLE": 1 + }, + "ShakeCommand_t": { + "SHAKE_START": 0, + "SHAKE_STOP": 1, + "SHAKE_AMPLITUDE": 2, + "SHAKE_FREQUENCY": 3, + "SHAKE_START_RUMBLEONLY": 4, + "SHAKE_START_NORUMBLE": 5 + }, + "ShardSolid_t": { + "SHARD_SOLID": 0, + "SHARD_DEBRIS": 1 + }, + "ShatterDamageCause": { + "SHATTERDAMAGE_BULLET": 0, + "SHATTERDAMAGE_MELEE": 1, + "SHATTERDAMAGE_THROWN": 2, + "SHATTERDAMAGE_SCRIPT": 3, + "SHATTERDAMAGE_EXPLOSIVE": 4 + }, + "ShatterGlassStressType": { + "SHATTERGLASS_BLUNT": 0, + "SHATTERGLASS_BALLISTIC": 1, + "SHATTERGLASS_PULSE": 2, + "SHATTERGLASS_EXPLOSIVE": 3 + }, + "SolidType_t": { + "SOLID_NONE": 0, + "SOLID_BSP": 1, + "SOLID_BBOX": 2, + "SOLID_OBB": 3, + "SOLID_SPHERE": 4, + "SOLID_POINT": 5, + "SOLID_VPHYSICS": 6, + "SOLID_CAPSULE": 7, + "SOLID_LAST": 8 + }, + "StanceType_t": { + "STANCE_CURRENT": -1, + "STANCE_DEFAULT": 0, + "STANCE_CROUCHING": 1, + "STANCE_PRONE": 2, + "NUM_STANCES": 3 + }, + "SubclassVDataChangeType_t": { + "SUBCLASS_VDATA_CREATED": 0, + "SUBCLASS_VDATA_SUBCLASS_CHANGED": 1, + "SUBCLASS_VDATA_RELOADED": 2 + }, + "SurroundingBoundsType_t": { + "USE_OBB_COLLISION_BOUNDS": 0, + "USE_BEST_COLLISION_BOUNDS": 1, + "USE_HITBOXES": 2, + "USE_SPECIFIED_BOUNDS": 3, + "USE_GAME_CODE": 4, + "USE_ROTATION_EXPANDED_BOUNDS": 5, + "USE_ROTATION_EXPANDED_ORIENTED_BOUNDS": 6, + "USE_COLLISION_BOUNDS_NEVER_VPHYSICS": 7, + "USE_ROTATION_EXPANDED_SEQUENCE_BOUNDS": 8, + "SURROUNDING_TYPE_BIT_COUNT": 3 + }, + "TakeDamageFlags_t": { + "DFLAG_NONE": 0, + "DFLAG_SUPPRESS_HEALTH_CHANGES": 1, + "DFLAG_SUPPRESS_PHYSICS_FORCE": 2, + "DFLAG_SUPPRESS_EFFECTS": 4, + "DFLAG_PREVENT_DEATH": 8, + "DFLAG_FORCE_DEATH": 16, + "DFLAG_ALWAYS_GIB": 32, + "DFLAG_NEVER_GIB": 64, + "DFLAG_REMOVE_NO_RAGDOLL": 128, + "DFLAG_SUPPRESS_DAMAGE_MODIFICATION": 256, + "DFLAG_ALWAYS_FIRE_DAMAGE_EVENTS": 512, + "DFLAG_RADIUS_DMG": 1024, + "DFLAG_FORCEREDUCEARMOR_DMG": 2048, + "DFLAG_SUPPRESS_INTERRUPT_FLINCH": 4096, + "DMG_LASTDFLAG": 4096, + "DFLAG_IGNORE_ARMOR": 8192, + "DFLAG_SUPPRESS_UTILREMOVE": 16384 + }, + "TimelineCompression_t": { + "TIMELINE_COMPRESSION_SUM": 0, + "TIMELINE_COMPRESSION_COUNT_PER_INTERVAL": 1, + "TIMELINE_COMPRESSION_AVERAGE": 2, + "TIMELINE_COMPRESSION_AVERAGE_BLEND": 3, + "TIMELINE_COMPRESSION_TOTAL": 4 + }, + "ValueRemapperHapticsType_t": { + "HaticsType_Default": 0, + "HaticsType_None": 1 + }, + "ValueRemapperInputType_t": { + "InputType_PlayerShootPosition": 0, + "InputType_PlayerShootPositionAroundAxis": 1 + }, + "ValueRemapperMomentumType_t": { + "MomentumType_None": 0, + "MomentumType_Friction": 1, + "MomentumType_SpringTowardSnapValue": 2, + "MomentumType_SpringAwayFromSnapValue": 3 + }, + "ValueRemapperOutputType_t": { + "OutputType_AnimationCycle": 0, + "OutputType_RotationX": 1, + "OutputType_RotationY": 2, + "OutputType_RotationZ": 3 + }, + "ValueRemapperRatchetType_t": { + "RatchetType_Absolute": 0, + "RatchetType_EachEngage": 1 + }, + "WaterLevel_t": { + "WL_NotInWater": 0, + "WL_Feet": 1, + "WL_Knees": 2, + "WL_Waist": 3, + "WL_Chest": 4, + "WL_FullyUnderwater": 5, + "WL_Count": 6 + }, + "WeaponAttackType_t": { + "eInvalid": -1, + "ePrimary": 0, + "eSecondary": 1, + "eCount": 2 + }, + "WeaponSound_t": { + "WEAPON_SOUND_EMPTY": 0, + "WEAPON_SOUND_SECONDARY_EMPTY": 1, + "WEAPON_SOUND_SINGLE": 2, + "WEAPON_SOUND_SECONDARY_ATTACK": 3, + "WEAPON_SOUND_MELEE_MISS": 4, + "WEAPON_SOUND_MELEE_HIT": 5, + "WEAPON_SOUND_MELEE_HIT_WORLD": 6, + "WEAPON_SOUND_MELEE_HIT_PLAYER": 7, + "WEAPON_SOUND_MELEE_HIT_NPC": 8, + "WEAPON_SOUND_SPECIAL1": 9, + "WEAPON_SOUND_SPECIAL2": 10, + "WEAPON_SOUND_SPECIAL3": 11, + "WEAPON_SOUND_NEARLYEMPTY": 12, + "WEAPON_SOUND_IMPACT": 13, + "WEAPON_SOUND_REFLECT": 14, + "WEAPON_SOUND_SECONDARY_IMPACT": 15, + "WEAPON_SOUND_SECONDARY_REFLECT": 16, + "WEAPON_SOUND_RELOAD": 17, + "WEAPON_SOUND_SINGLE_ACCURATE": 18, + "WEAPON_SOUND_ZOOM_IN": 19, + "WEAPON_SOUND_ZOOM_OUT": 20, + "WEAPON_SOUND_MOUSE_PRESSED": 21, + "WEAPON_SOUND_DROP": 22, + "WEAPON_SOUND_RADIO_USE": 23, + "WEAPON_SOUND_NUM_TYPES": 24 + }, + "WeaponSwitchReason_t": { + "eDrawn": 0, + "eEquipped": 1, + "eUserInitiatedSwitchToLast": 2, + "eUserInitiatedSwitchHands": 3 + }, + "WorldTextPanelHorizontalAlign_t": { + "WORLDTEXT_HORIZONTAL_ALIGN_LEFT": 0, + "WORLDTEXT_HORIZONTAL_ALIGN_CENTER": 1, + "WORLDTEXT_HORIZONTAL_ALIGN_RIGHT": 2 + }, + "WorldTextPanelOrientation_t": { + "WORLDTEXT_ORIENTATION_DEFAULT": 0, + "WORLDTEXT_ORIENTATION_FACEUSER": 1, + "WORLDTEXT_ORIENTATION_FACEUSER_UPRIGHT": 2 + }, + "WorldTextPanelVerticalAlign_t": { + "WORLDTEXT_VERTICAL_ALIGN_TOP": 0, + "WORLDTEXT_VERTICAL_ALIGN_CENTER": 1, + "WORLDTEXT_VERTICAL_ALIGN_BOTTOM": 2 + }, + "attributeprovidertypes_t": { + "PROVIDER_GENERIC": 0, + "PROVIDER_WEAPON": 1 + }, + "gear_slot_t": { + "GEAR_SLOT_INVALID": -1, + "GEAR_SLOT_RIFLE": 0, + "GEAR_SLOT_PISTOL": 1, + "GEAR_SLOT_KNIFE": 2, + "GEAR_SLOT_GRENADES": 3, + "GEAR_SLOT_C4": 4, + "GEAR_SLOT_RESERVED_SLOT6": 5, + "GEAR_SLOT_RESERVED_SLOT7": 6, + "GEAR_SLOT_RESERVED_SLOT8": 7, + "GEAR_SLOT_RESERVED_SLOT9": 8, + "GEAR_SLOT_RESERVED_SLOT10": 9, + "GEAR_SLOT_RESERVED_SLOT11": 10, + "GEAR_SLOT_BOOSTS": 11, + "GEAR_SLOT_UTILITY": 12, + "GEAR_SLOT_COUNT": 13, + "GEAR_SLOT_FIRST": 0, + "GEAR_SLOT_LAST": 12 + }, + "loadout_slot_t": { + "LOADOUT_SLOT_PROMOTED": -2, + "LOADOUT_SLOT_INVALID": -1, + "LOADOUT_SLOT_MELEE": 0, + "LOADOUT_SLOT_C4": 1, + "LOADOUT_SLOT_FIRST_AUTO_BUY_WEAPON": 0, + "LOADOUT_SLOT_LAST_AUTO_BUY_WEAPON": 1, + "LOADOUT_SLOT_SECONDARY0": 2, + "LOADOUT_SLOT_SECONDARY1": 3, + "LOADOUT_SLOT_SECONDARY2": 4, + "LOADOUT_SLOT_SECONDARY3": 5, + "LOADOUT_SLOT_SECONDARY4": 6, + "LOADOUT_SLOT_SECONDARY5": 7, + "LOADOUT_SLOT_SMG0": 8, + "LOADOUT_SLOT_SMG1": 9, + "LOADOUT_SLOT_SMG2": 10, + "LOADOUT_SLOT_SMG3": 11, + "LOADOUT_SLOT_SMG4": 12, + "LOADOUT_SLOT_SMG5": 13, + "LOADOUT_SLOT_RIFLE0": 14, + "LOADOUT_SLOT_RIFLE1": 15, + "LOADOUT_SLOT_RIFLE2": 16, + "LOADOUT_SLOT_RIFLE3": 17, + "LOADOUT_SLOT_RIFLE4": 18, + "LOADOUT_SLOT_RIFLE5": 19, + "LOADOUT_SLOT_HEAVY0": 20, + "LOADOUT_SLOT_HEAVY1": 21, + "LOADOUT_SLOT_HEAVY2": 22, + "LOADOUT_SLOT_HEAVY3": 23, + "LOADOUT_SLOT_HEAVY4": 24, + "LOADOUT_SLOT_HEAVY5": 25, + "LOADOUT_SLOT_FIRST_WHEEL_WEAPON": 2, + "LOADOUT_SLOT_LAST_WHEEL_WEAPON": 25, + "LOADOUT_SLOT_FIRST_PRIMARY_WEAPON": 8, + "LOADOUT_SLOT_LAST_PRIMARY_WEAPON": 25, + "LOADOUT_SLOT_FIRST_WHEEL_GRENADE": 26, + "LOADOUT_SLOT_GRENADE0": 26, + "LOADOUT_SLOT_GRENADE1": 27, + "LOADOUT_SLOT_GRENADE2": 28, + "LOADOUT_SLOT_GRENADE3": 29, + "LOADOUT_SLOT_GRENADE4": 30, + "LOADOUT_SLOT_GRENADE5": 31, + "LOADOUT_SLOT_LAST_WHEEL_GRENADE": 31, + "LOADOUT_SLOT_EQUIPMENT0": 32, + "LOADOUT_SLOT_EQUIPMENT1": 33, + "LOADOUT_SLOT_EQUIPMENT2": 34, + "LOADOUT_SLOT_EQUIPMENT3": 35, + "LOADOUT_SLOT_EQUIPMENT4": 36, + "LOADOUT_SLOT_EQUIPMENT5": 37, + "LOADOUT_SLOT_FIRST_WHEEL_EQUIPMENT": 32, + "LOADOUT_SLOT_LAST_WHEEL_EQUIPMENT": 37, + "LOADOUT_SLOT_CLOTHING_CUSTOMPLAYER": 38, + "LOADOUT_SLOT_CLOTHING_CUSTOMHEAD": 39, + "LOADOUT_SLOT_CLOTHING_FACEMASK": 40, + "LOADOUT_SLOT_CLOTHING_HANDS": 41, + "LOADOUT_SLOT_FIRST_COSMETIC": 41, + "LOADOUT_SLOT_LAST_COSMETIC": 41, + "LOADOUT_SLOT_CLOTHING_EYEWEAR": 42, + "LOADOUT_SLOT_CLOTHING_HAT": 43, + "LOADOUT_SLOT_CLOTHING_LOWERBODY": 44, + "LOADOUT_SLOT_CLOTHING_TORSO": 45, + "LOADOUT_SLOT_CLOTHING_APPEARANCE": 46, + "LOADOUT_SLOT_MISC0": 47, + "LOADOUT_SLOT_MISC1": 48, + "LOADOUT_SLOT_MISC2": 49, + "LOADOUT_SLOT_MISC3": 50, + "LOADOUT_SLOT_MISC4": 51, + "LOADOUT_SLOT_MISC5": 52, + "LOADOUT_SLOT_MISC6": 53, + "LOADOUT_SLOT_MUSICKIT": 54, + "LOADOUT_SLOT_FLAIR0": 55, + "LOADOUT_SLOT_SPRAY0": 56, + "LOADOUT_SLOT_FIRST_ALL_CHARACTER": 54, + "LOADOUT_SLOT_LAST_ALL_CHARACTER": 56, + "LOADOUT_SLOT_COUNT": 57 + }, + "vote_create_failed_t": { + "VOTE_FAILED_GENERIC": 0, + "VOTE_FAILED_TRANSITIONING_PLAYERS": 1, + "VOTE_FAILED_RATE_EXCEEDED": 2, + "VOTE_FAILED_YES_MUST_EXCEED_NO": 3, + "VOTE_FAILED_QUORUM_FAILURE": 4, + "VOTE_FAILED_ISSUE_DISABLED": 5, + "VOTE_FAILED_MAP_NOT_FOUND": 6, + "VOTE_FAILED_MAP_NAME_REQUIRED": 7, + "VOTE_FAILED_FAILED_RECENTLY": 8, + "VOTE_FAILED_TEAM_CANT_CALL": 9, + "VOTE_FAILED_WAITINGFORPLAYERS": 10, + "VOTE_FAILED_PLAYERNOTFOUND": 11, + "VOTE_FAILED_CANNOT_KICK_ADMIN": 12, + "VOTE_FAILED_SCRAMBLE_IN_PROGRESS": 13, + "VOTE_FAILED_SPECTATOR": 14, + "VOTE_FAILED_FAILED_RECENT_KICK": 15, + "VOTE_FAILED_FAILED_RECENT_CHANGEMAP": 16, + "VOTE_FAILED_FAILED_RECENT_SWAPTEAMS": 17, + "VOTE_FAILED_FAILED_RECENT_SCRAMBLETEAMS": 18, + "VOTE_FAILED_FAILED_RECENT_RESTART": 19, + "VOTE_FAILED_SWAP_IN_PROGRESS": 20, + "VOTE_FAILED_DISABLED": 21, + "VOTE_FAILED_NEXTLEVEL_SET": 22, + "VOTE_FAILED_TOO_EARLY_SURRENDER": 23, + "VOTE_FAILED_MATCH_PAUSED": 24, + "VOTE_FAILED_MATCH_NOT_PAUSED": 25, + "VOTE_FAILED_NOT_IN_WARMUP": 26, + "VOTE_FAILED_NOT_10_PLAYERS": 27, + "VOTE_FAILED_TIMEOUT_ACTIVE": 28, + "VOTE_FAILED_TIMEOUT_INACTIVE": 29, + "VOTE_FAILED_TIMEOUT_EXHAUSTED": 30, + "VOTE_FAILED_CANT_ROUND_END": 31, + "VOTE_FAILED_REMATCH": 32, + "VOTE_FAILED_CONTINUE": 33, + "VOTE_FAILED_MAX": 34 + }, + "SpawnDebugOverrideState_t": { + "SPAWN_DEBUG_OVERRIDE_NONE": 0, + "SPAWN_DEBUG_OVERRIDE_FORCE_ENABLED": 1, + "SPAWN_DEBUG_OVERRIDE_FORCE_DISABLED": 2 + }, + "SpawnDebugRestrictionOverrideState_t": { + "SPAWN_DEBUG_RESTRICT_NONE": 0, + "SPAWN_DEBUG_RESTRICT_IGNORE_MANAGER_DISTANCE_REQS": 1, + "SPAWN_DEBUG_RESTRICT_IGNORE_TEMPLATE_DISTANCE_LOS_REQS": 2, + "SPAWN_DEBUG_RESTRICT_IGNORE_TEMPLATE_COOLDOWN_LIMITS": 4, + "SPAWN_DEBUG_RESTRICT_IGNORE_TARGET_COOLDOWN_LIMITS": 8 + }, + "EntityDormancyType_t": { + "ENTITY_NOT_DORMANT": 0, + "ENTITY_DORMANT": 1, + "ENTITY_SUSPENDED": 2 + }, + "EntityIOTargetType_t": { + "ENTITY_IO_TARGET_INVALID": -1, + "ENTITY_IO_TARGET_ENTITYNAME": 2, + "ENTITY_IO_TARGET_EHANDLE": 6, + "ENTITY_IO_TARGET_ENTITYNAME_OR_CLASSNAME": 7 + }, + "BloomBlendMode_t": { + "BLOOM_BLEND_ADD": 0, + "BLOOM_BLEND_SCREEN": 1, + "BLOOM_BLEND_BLUR": 2 + }, + "HorizJustification_e": { + "HORIZ_JUSTIFICATION_LEFT": 0, + "HORIZ_JUSTIFICATION_CENTER": 1, + "HORIZ_JUSTIFICATION_RIGHT": 2, + "HORIZ_JUSTIFICATION_NONE": 3 + }, + "LayoutPositionType_e": { + "LAYOUTPOSITIONTYPE_VIEWPORT_RELATIVE": 0, + "LAYOUTPOSITIONTYPE_FRACTIONAL": 1, + "LAYOUTPOSITIONTYPE_NONE": 2 + }, + "VertJustification_e": { + "VERT_JUSTIFICATION_TOP": 0, + "VERT_JUSTIFICATION_CENTER": 1, + "VERT_JUSTIFICATION_BOTTOM": 2, + "VERT_JUSTIFICATION_NONE": 3 + }, + "ViewFadeMode_t": { + "VIEW_FADE_CONSTANT_COLOR": 0, + "VIEW_FADE_MODULATE": 1, + "VIEW_FADE_MOD2X": 2 + }, + "FuseVariableAccess_t": { + "WRITABLE": 0, + "READ_ONLY": 1 + }, + "FuseVariableType_t": { + "INVALID": 0, + "BOOL": 1, + "INT8": 2, + "INT16": 3, + "INT32": 4, + "UINT8": 5, + "UINT16": 6, + "UINT32": 7, + "FLOAT32": 8 + }, + "FlexOpCode_t": { + "FLEX_OP_CONST": 1, + "FLEX_OP_FETCH1": 2, + "FLEX_OP_FETCH2": 3, + "FLEX_OP_ADD": 4, + "FLEX_OP_SUB": 5, + "FLEX_OP_MUL": 6, + "FLEX_OP_DIV": 7, + "FLEX_OP_NEG": 8, + "FLEX_OP_EXP": 9, + "FLEX_OP_OPEN": 10, + "FLEX_OP_CLOSE": 11, + "FLEX_OP_COMMA": 12, + "FLEX_OP_MAX": 13, + "FLEX_OP_MIN": 14, + "FLEX_OP_2WAY_0": 15, + "FLEX_OP_2WAY_1": 16, + "FLEX_OP_NWAY": 17, + "FLEX_OP_COMBO": 18, + "FLEX_OP_DOMINATE": 19, + "FLEX_OP_DME_LOWER_EYELID": 20, + "FLEX_OP_DME_UPPER_EYELID": 21, + "FLEX_OP_SQRT": 22, + "FLEX_OP_REMAPVALCLAMPED": 23, + "FLEX_OP_SIN": 24, + "FLEX_OP_COS": 25, + "FLEX_OP_ABS": 26 + }, + "MeshDrawPrimitiveFlags_t": { + "MESH_DRAW_FLAGS_NONE": 0, + "MESH_DRAW_FLAGS_USE_SHADOW_FAST_PATH": 1, + "MESH_DRAW_FLAGS_USE_COMPRESSED_NORMAL_TANGENT": 2, + "MESH_DRAW_INPUT_LAYOUT_IS_NOT_MATCHED_TO_MATERIAL": 8, + "MESH_DRAW_FLAGS_USE_COMPRESSED_PER_VERTEX_LIGHTING": 16, + "MESH_DRAW_FLAGS_USE_UNCOMPRESSED_PER_VERTEX_LIGHTING": 32, + "MESH_DRAW_FLAGS_CAN_BATCH_WITH_DYNAMIC_SHADER_CONSTANTS": 64, + "MESH_DRAW_FLAGS_DRAW_LAST": 128 + }, + "ModelBoneFlexComponent_t": { + "MODEL_BONE_FLEX_INVALID": -1, + "MODEL_BONE_FLEX_TX": 0, + "MODEL_BONE_FLEX_TY": 1, + "MODEL_BONE_FLEX_TZ": 2 + }, + "ModelConfigAttachmentType_t": { + "MODEL_CONFIG_ATTACHMENT_INVALID": -1, + "MODEL_CONFIG_ATTACHMENT_BONE_OR_ATTACHMENT": 0, + "MODEL_CONFIG_ATTACHMENT_ROOT_RELATIVE": 1, + "MODEL_CONFIG_ATTACHMENT_BONEMERGE": 2, + "MODEL_CONFIG_ATTACHMENT_COUNT": 3 + }, + "MorphBundleType_t": { + "MORPH_BUNDLE_TYPE_NONE": 0, + "MORPH_BUNDLE_TYPE_POSITION_SPEED": 1, + "MORPH_BUNDLE_TYPE_NORMAL_WRINKLE": 2, + "MORPH_BUNDLE_TYPE_COUNT": 3 + }, + "MorphFlexControllerRemapType_t": { + "MORPH_FLEXCONTROLLER_REMAP_PASSTHRU": 0, + "MORPH_FLEXCONTROLLER_REMAP_2WAY": 1, + "MORPH_FLEXCONTROLLER_REMAP_NWAY": 2, + "MORPH_FLEXCONTROLLER_REMAP_EYELID": 3 + }, + "MovementGait_t": { + "eInvalid": -1, + "eSlow": 0, + "eMedium": 1, + "eFast": 2, + "eVeryFast": 3, + "eCount": 4 + }, + "NavAttributeEnum": { + "NAV_MESH_AVOID": 128, + "NAV_MESH_STAIRS": 4096, + "NAV_MESH_NON_ZUP": 32768, + "NAV_MESH_SHORT_HEIGHT": 65536, + "NAV_MESH_NON_ZUP_TRANSITION": 131072, + "NAV_MESH_CROUCH": 65536, + "NAV_MESH_JUMP": 2, + "NAV_MESH_PRECISE": 4, + "NAV_MESH_NO_JUMP": 8, + "NAV_MESH_STOP": 16, + "NAV_MESH_RUN": 32, + "NAV_MESH_WALK": 64, + "NAV_MESH_TRANSIENT": 256, + "NAV_MESH_DONT_HIDE": 512, + "NAV_MESH_STAND": 1024, + "NAV_MESH_NO_HOSTAGES": 2048, + "NAV_MESH_NO_MERGE": 8192, + "NAV_MESH_OBSTACLE_TOP": 16384, + "NAV_ATTR_FIRST_GAME_INDEX": 19, + "NAV_ATTR_LAST_INDEX": 31 + }, + "NavDirType": { + "NORTH": 0, + "EAST": 1, + "SOUTH": 2, + "WEST": 3, + "NUM_NAV_DIR_TYPE_DIRECTIONS": 4 + }, + "ELayoutNodeType": { + "ROOT": 0, + "STYLES": 1, + "SCRIPT_BODY": 2, + "SCRIPTS": 3, + "SNIPPETS": 4, + "INCLUDE": 5, + "SNIPPET": 6, + "PANEL": 7, + "PANEL_ATTRIBUTE": 8, + "PANEL_ATTRIBUTE_VALUE": 9, + "REFERENCE_CONTENT": 10, + "REFERENCE_COMPILED": 11, + "REFERENCE_PASSTHROUGH": 12 + }, + "EStyleNodeType": { + "ROOT": 0, + "EXPRESSION": 1, + "PROPERTY": 2, + "DEFINE": 3, + "IMPORT": 4, + "KEYFRAMES": 5, + "KEYFRAME_SELECTOR": 6, + "STYLE_SELECTOR": 7, + "WHITESPACE": 8, + "EXPRESSION_TEXT": 9, + "EXPRESSION_URL": 10, + "EXPRESSION_CONCAT": 11, + "REFERENCE_CONTENT": 12, + "REFERENCE_COMPILED": 13, + "REFERENCE_PASSTHROUGH": 14, + "COMPILER_CONDITIONAL": 15 + }, + "AnimationType_t": { + "ANIMATION_TYPE_FIXED_RATE": 0, + "ANIMATION_TYPE_FIT_LIFETIME": 1, + "ANIMATION_TYPE_MANUAL_FRAMES": 2 + }, + "BBoxVolumeType_t": { + "BBOX_VOLUME": 0, + "BBOX_DIMENSIONS": 1, + "BBOX_MINS_MAXS": 2 + }, + "BlurFilterType_t": { + "BLURFILTER_GAUSSIAN": 0, + "BLURFILTER_BOX": 1 + }, + "ClosestPointTestType_t": { + "PARTICLE_CLOSEST_TYPE_BOX": 0, + "PARTICLE_CLOSEST_TYPE_CAPSULE": 1, + "PARTICLE_CLOSEST_TYPE_HYBRID": 2 + }, + "Detail2Combo_t": { + "DETAIL_2_COMBO_UNINITIALIZED": -1, + "DETAIL_2_COMBO_OFF": 0, + "DETAIL_2_COMBO_ADD": 1, + "DETAIL_2_COMBO_ADD_SELF_ILLUM": 2, + "DETAIL_2_COMBO_MOD2X": 3, + "DETAIL_2_COMBO_MUL": 4, + "DETAIL_2_COMBO_CROSSFADE": 5 + }, + "DetailCombo_t": { + "DETAIL_COMBO_OFF": 0, + "DETAIL_COMBO_ADD": 1, + "DETAIL_COMBO_ADD_SELF_ILLUM": 2, + "DETAIL_COMBO_MOD2X": 3 + }, + "EventTypeSelection_t": { + "PARTICLE_EVENT_TYPE_MASK_NONE": 0, + "PARTICLE_EVENT_TYPE_MASK_SPAWNED": 1, + "PARTICLE_EVENT_TYPE_MASK_KILLED": 2, + "PARTICLE_EVENT_TYPE_MASK_COLLISION": 4, + "PARTICLE_EVENT_TYPE_MASK_FIRST_COLLISION": 8, + "PARTICLE_EVENT_TYPE_MASK_COLLISION_STOPPED": 16, + "PARTICLE_EVENT_TYPE_MASK_KILLED_ON_COLLISION": 32, + "PARTICLE_EVENT_TYPE_MASK_USER_1": 64, + "PARTICLE_EVENT_TYPE_MASK_USER_2": 128, + "PARTICLE_EVENT_TYPE_MASK_USER_3": 256, + "PARTICLE_EVENT_TYPE_MASK_USER_4": 512 + }, + "HitboxLerpType_t": { + "HITBOX_LERP_LIFETIME": 0, + "HITBOX_LERP_CONSTANT": 1 + }, + "InheritableBoolType_t": { + "INHERITABLE_BOOL_INHERIT": 0, + "INHERITABLE_BOOL_FALSE": 1, + "INHERITABLE_BOOL_TRUE": 2 + }, + "MaterialProxyType_t": { + "MATERIAL_PROXY_STATUS_EFFECT": 0, + "MATERIAL_PROXY_TINT": 1 + }, + "MissingParentInheritBehavior_t": { + "MISSING_PARENT_DO_NOTHING": -1, + "MISSING_PARENT_KILL": 0, + "MISSING_PARENT_FIND_NEW": 1, + "MISSING_PARENT_SAME_INDEX": 2 + }, + "ModelHitboxType_t": { + "MODEL_HITBOX_TYPE_STANDARD": 0, + "MODEL_HITBOX_TYPE_RAW_BONES": 1, + "MODEL_HITBOX_TYPE_RENDERBOUNDS": 2, + "MODEL_HITBOX_TYPE_SNAPSHOT": 3 + }, + "PFuncVisualizationType_t": { + "PFUNC_VISUALIZATION_SPHERE_WIREFRAME": 0, + "PFUNC_VISUALIZATION_SPHERE_SOLID": 1, + "PFUNC_VISUALIZATION_BOX": 2, + "PFUNC_VISUALIZATION_RING": 3, + "PFUNC_VISUALIZATION_PLANE": 4, + "PFUNC_VISUALIZATION_LINE": 5, + "PFUNC_VISUALIZATION_CYLINDER": 6 + }, + "ParticleAlphaReferenceType_t": { + "PARTICLE_ALPHA_REFERENCE_ALPHA_ALPHA": 0, + "PARTICLE_ALPHA_REFERENCE_OPAQUE_ALPHA": 1, + "PARTICLE_ALPHA_REFERENCE_ALPHA_OPAQUE": 2, + "PARTICLE_ALPHA_REFERENCE_OPAQUE_OPAQUE": 3 + }, + "ParticleAttrBoxFlags_t": { + "PARTICLE_ATTR_BOX_FLAGS_NONE": 0, + "PARTICLE_ATTR_BOX_FLAGS_WATER": 1 + }, + "ParticleCollisionMode_t": { + "COLLISION_MODE_PER_PARTICLE_TRACE": 3, + "COLLISION_MODE_USE_NEAREST_TRACE": 2, + "COLLISION_MODE_PER_FRAME_PLANESET": 1, + "COLLISION_MODE_INITIAL_TRACE_DOWN": 0, + "COLLISION_MODE_DISABLED": -1 + }, + "ParticleColorBlendMode_t": { + "PARTICLEBLEND_DEFAULT": 0, + "PARTICLEBLEND_OVERLAY": 1, + "PARTICLEBLEND_DARKEN": 2, + "PARTICLEBLEND_LIGHTEN": 3, + "PARTICLEBLEND_MULTIPLY": 4 + }, + "ParticleColorBlendType_t": { + "PARTICLE_COLOR_BLEND_MULTIPLY": 0, + "PARTICLE_COLOR_BLEND_MULTIPLY2X": 1, + "PARTICLE_COLOR_BLEND_DIVIDE": 2, + "PARTICLE_COLOR_BLEND_ADD": 3, + "PARTICLE_COLOR_BLEND_SUBTRACT": 4, + "PARTICLE_COLOR_BLEND_MOD2X": 5, + "PARTICLE_COLOR_BLEND_SCREEN": 6, + "PARTICLE_COLOR_BLEND_MAX": 7, + "PARTICLE_COLOR_BLEND_MIN": 8, + "PARTICLE_COLOR_BLEND_REPLACE": 9, + "PARTICLE_COLOR_BLEND_AVERAGE": 10, + "PARTICLE_COLOR_BLEND_NEGATE": 11, + "PARTICLE_COLOR_BLEND_LUMINANCE": 12 + }, + "ParticleControlPointAxis_t": { + "PARTICLE_CP_AXIS_X": 0, + "PARTICLE_CP_AXIS_Y": 1, + "PARTICLE_CP_AXIS_Z": 2, + "PARTICLE_CP_AXIS_NEGATIVE_X": 3, + "PARTICLE_CP_AXIS_NEGATIVE_Y": 4, + "PARTICLE_CP_AXIS_NEGATIVE_Z": 5 + }, + "ParticleDepthFeatheringMode_t": { + "PARTICLE_DEPTH_FEATHERING_OFF": 0, + "PARTICLE_DEPTH_FEATHERING_ON_OPTIONAL": 1, + "PARTICLE_DEPTH_FEATHERING_ON_REQUIRED": 2 + }, + "ParticleDetailLevel_t": { + "PARTICLEDETAIL_LOW": 0, + "PARTICLEDETAIL_MEDIUM": 1, + "PARTICLEDETAIL_HIGH": 2, + "PARTICLEDETAIL_ULTRA": 3 + }, + "ParticleDirectionNoiseType_t": { + "PARTICLE_DIR_NOISE_PERLIN": 0, + "PARTICLE_DIR_NOISE_CURL": 1, + "PARTICLE_DIR_NOISE_WORLEY_BASIC": 2 + }, + "ParticleEndcapMode_t": { + "PARTICLE_ENDCAP_ALWAYS_ON": -1, + "PARTICLE_ENDCAP_ENDCAP_OFF": 0, + "PARTICLE_ENDCAP_ENDCAP_ON": 1 + }, + "ParticleFalloffFunction_t": { + "PARTICLE_FALLOFF_CONSTANT": 0, + "PARTICLE_FALLOFF_LINEAR": 1, + "PARTICLE_FALLOFF_EXPONENTIAL": 2 + }, + "ParticleFogType_t": { + "PARTICLE_FOG_GAME_DEFAULT": 0, + "PARTICLE_FOG_ENABLED": 1, + "PARTICLE_FOG_DISABLED": 2 + }, + "ParticleHitboxBiasType_t": { + "PARTICLE_HITBOX_BIAS_ENTITY": 0, + "PARTICLE_HITBOX_BIAS_HITBOX": 1 + }, + "ParticleHitboxDataSelection_t": { + "PARTICLE_HITBOX_AVERAGE_SPEED": 0, + "PARTICLE_HITBOX_COUNT": 1 + }, + "ParticleImpulseType_t": { + "IMPULSE_TYPE_NONE": 0, + "IMPULSE_TYPE_GENERIC": 1, + "IMPULSE_TYPE_ROPE": 2, + "IMPULSE_TYPE_EXPLOSION": 4, + "IMPULSE_TYPE_EXPLOSION_UNDERWATER": 8, + "IMPULSE_TYPE_PARTICLE_SYSTEM": 16 + }, + "ParticleLightBehaviorChoiceList_t": { + "PARTICLE_LIGHT_BEHAVIOR_FOLLOW_DIRECTION": 0, + "PARTICLE_LIGHT_BEHAVIOR_ROPE": 1, + "PARTICLE_LIGHT_BEHAVIOR_TRAILS": 2 + }, + "ParticleLightFogLightingMode_t": { + "PARTICLE_LIGHT_FOG_LIGHTING_MODE_NONE": 0, + "PARTICLE_LIGHT_FOG_LIGHTING_MODE_DYNAMIC": 2, + "PARTICLE_LIGHT_FOG_LIGHTING_MODE_DYNAMIC_NOSHADOWS": 4 + }, + "ParticleLightTypeChoiceList_t": { + "PARTICLE_LIGHT_TYPE_POINT": 0, + "PARTICLE_LIGHT_TYPE_SPOT": 1, + "PARTICLE_LIGHT_TYPE_FX": 2, + "PARTICLE_LIGHT_TYPE_CAPSULE": 3 + }, + "ParticleLightUnitChoiceList_t": { + "PARTICLE_LIGHT_UNIT_CANDELAS": 0, + "PARTICLE_LIGHT_UNIT_LUMENS": 1 + }, + "ParticleLightingQuality_t": { + "PARTICLE_LIGHTING_PER_PARTICLE": 0, + "PARTICLE_LIGHTING_PER_VERTEX": 1, + "PARTICLE_LIGHTING_PER_PIXEL": -1 + }, + "ParticleLightnintBranchBehavior_t": { + "PARTICLE_LIGHTNING_BRANCH_CURRENT_DIR": 0, + "PARTICLE_LIGHTNING_BRANCH_ENDPOINT_DIR": 1 + }, + "ParticleMassMode_t": { + "PARTICLE_MASSMODE_RADIUS_CUBED": 0, + "PARTICLE_MASSMODE_RADIUS_SQUARED": 2 + }, + "ParticleOmni2LightTypeChoiceList_t": { + "PARTICLE_OMNI2_LIGHT_TYPE_POINT": 0, + "PARTICLE_OMNI2_LIGHT_TYPE_SPHERE": 1 + }, + "ParticleOrientationChoiceList_t": { + "PARTICLE_ORIENTATION_SCREEN_ALIGNED": 0, + "PARTICLE_ORIENTATION_SCREEN_Z_ALIGNED": 1, + "PARTICLE_ORIENTATION_WORLD_Z_ALIGNED": 2, + "PARTICLE_ORIENTATION_ALIGN_TO_PARTICLE_NORMAL": 3, + "PARTICLE_ORIENTATION_SCREENALIGN_TO_PARTICLE_NORMAL": 4, + "PARTICLE_ORIENTATION_FULL_3AXIS_ROTATION": 5 + }, + "ParticleOrientationSetMode_t": { + "PARTICLE_ORIENTATION_SET_FROM_VELOCITY": 0, + "PARTICLE_ORIENTATION_SET_FROM_ROTATIONS": 1 + }, + "ParticleOutputBlendMode_t": { + "PARTICLE_OUTPUT_BLEND_MODE_ALPHA": 0, + "PARTICLE_OUTPUT_BLEND_MODE_ADD": 1, + "PARTICLE_OUTPUT_BLEND_MODE_BLEND_ADD": 2, + "PARTICLE_OUTPUT_BLEND_MODE_HALF_BLEND_ADD": 3, + "PARTICLE_OUTPUT_BLEND_MODE_NEG_HALF_BLEND_ADD": 4, + "PARTICLE_OUTPUT_BLEND_MODE_MOD2X": 5, + "PARTICLE_OUTPUT_BLEND_MODE_LIGHTEN": 6 + }, + "ParticleParentSetMode_t": { + "PARTICLE_SET_PARENT_NO": 0, + "PARTICLE_SET_PARENT_IMMEDIATE": 1, + "PARTICLE_SET_PARENT_ROOT": 1 + }, + "ParticlePinDistance_t": { + "PARTICLE_PIN_DISTANCE_NONE": -1, + "PARTICLE_PIN_DISTANCE_NEIGHBOR": 0, + "PARTICLE_PIN_DISTANCE_FARTHEST": 1, + "PARTICLE_PIN_DISTANCE_FIRST": 2, + "PARTICLE_PIN_DISTANCE_LAST": 3, + "PARTICLE_PIN_DISTANCE_CENTER": 5, + "PARTICLE_PIN_DISTANCE_CP": 6, + "PARTICLE_PIN_DISTANCE_CP_PAIR_EITHER": 7, + "PARTICLE_PIN_DISTANCE_CP_PAIR_BOTH": 8, + "PARTICLE_PIN_SPEED": 9, + "PARTICLE_PIN_COLLECTION_AGE": 10, + "PARTICLE_PIN_FLOAT_VALUE": 11 + }, + "ParticlePostProcessPriorityGroup_t": { + "PARTICLE_POST_PROCESS_PRIORITY_LEVEL_VOLUME": 0, + "PARTICLE_POST_PROCESS_PRIORITY_LEVEL_OVERRIDE": 1, + "PARTICLE_POST_PROCESS_PRIORITY_GAMEPLAY_EFFECT": 2, + "PARTICLE_POST_PROCESS_PRIORITY_GAMEPLAY_STATE_LOW": 3, + "PARTICLE_POST_PROCESS_PRIORITY_GAMEPLAY_STATE_HIGH": 4, + "PARTICLE_POST_PROCESS_PRIORITY_GLOBAL_UI": 5 + }, + "ParticleReplicationMode_t": { + "PARTICLE_REPLICATIONMODE_NONE": 0, + "PARTICLE_REPLICATIONMODE_REPLICATE_FOR_EACH_PARENT_PARTICLE": 1 + }, + "ParticleRotationLockType_t": { + "PARTICLE_ROTATION_LOCK_NONE": 0, + "PARTICLE_ROTATION_LOCK_ROTATIONS": 1, + "PARTICLE_ROTATION_LOCK_NORMAL": 2 + }, + "ParticleSelection_t": { + "PARTICLE_SELECTION_FIRST": 0, + "PARTICLE_SELECTION_LAST": 1, + "PARTICLE_SELECTION_NUMBER": 2 + }, + "ParticleSequenceCropOverride_t": { + "PARTICLE_SEQUENCE_CROP_OVERRIDE_DEFAULT": -1, + "PARTICLE_SEQUENCE_CROP_OVERRIDE_FORCE_OFF": 0, + "PARTICLE_SEQUENCE_CROP_OVERRIDE_FORCE_ON": 1 + }, + "ParticleSetMethod_t": { + "PARTICLE_SET_REPLACE_VALUE": 0, + "PARTICLE_SET_SCALE_INITIAL_VALUE": 1, + "PARTICLE_SET_ADD_TO_INITIAL_VALUE": 2, + "PARTICLE_SET_RAMP_CURRENT_VALUE": 3, + "PARTICLE_SET_SCALE_CURRENT_VALUE": 4, + "PARTICLE_SET_ADD_TO_CURRENT_VALUE": 5 + }, + "ParticleSortingChoiceList_t": { + "PARTICLE_SORTING_NEAREST": 0, + "PARTICLE_SORTING_CREATION_TIME": 1 + }, + "ParticleTextureLayerBlendType_t": { + "SPRITECARD_TEXTURE_BLEND_MULTIPLY": 0, + "SPRITECARD_TEXTURE_BLEND_MOD2X": 1, + "SPRITECARD_TEXTURE_BLEND_REPLACE": 2, + "SPRITECARD_TEXTURE_BLEND_ADD": 3, + "SPRITECARD_TEXTURE_BLEND_SUBTRACT": 4, + "SPRITECARD_TEXTURE_BLEND_AVERAGE": 5, + "SPRITECARD_TEXTURE_BLEND_LUMINANCE": 6 + }, + "ParticleTopology_t": { + "PARTICLE_TOPOLOGY_POINTS": 0, + "PARTICLE_TOPOLOGY_LINES": 1, + "PARTICLE_TOPOLOGY_TRIS": 2, + "PARTICLE_TOPOLOGY_QUADS": 3, + "PARTICLE_TOPOLOGY_CUBES": 4 + }, + "ParticleTraceMissBehavior_t": { + "PARTICLE_TRACE_MISS_BEHAVIOR_NONE": 0, + "PARTICLE_TRACE_MISS_BEHAVIOR_KILL": 1, + "PARTICLE_TRACE_MISS_BEHAVIOR_TRACE_END": 2 + }, + "ParticleTraceSet_t": { + "PARTICLE_TRACE_SET_ALL": 0, + "PARTICLE_TRACE_SET_STATIC": 1, + "PARTICLE_TRACE_SET_STATIC_AND_KEYFRAMED": 2, + "PARTICLE_TRACE_SET_DYNAMIC": 3 + }, + "ParticleVRHandChoiceList_t": { + "PARTICLE_VRHAND_LEFT": 0, + "PARTICLE_VRHAND_RIGHT": 1, + "PARTICLE_VRHAND_CP": 2, + "PARTICLE_VRHAND_CP_OBJECT": 3 + }, + "PetGroundType_t": { + "PET_GROUND_NONE": 0, + "PET_GROUND_GRID": 1, + "PET_GROUND_PLANE": 2 + }, + "RenderModelSubModelFieldType_t": { + "SUBMODEL_AS_BODYGROUP_SUBMODEL": 0, + "SUBMODEL_AS_MESHGROUP_INDEX": 1, + "SUBMODEL_AS_MESHGROUP_MASK": 2, + "SUBMODEL_IGNORED_USE_MODEL_DEFAULT_MESHGROUP_MASK": 3 + }, + "ScalarExpressionType_t": { + "SCALAR_EXPRESSION_UNINITIALIZED": -1, + "SCALAR_EXPRESSION_ADD": 0, + "SCALAR_EXPRESSION_SUBTRACT": 1, + "SCALAR_EXPRESSION_MUL": 2, + "SCALAR_EXPRESSION_DIVIDE": 3, + "SCALAR_EXPRESSION_INPUT_1": 4, + "SCALAR_EXPRESSION_MIN": 5, + "SCALAR_EXPRESSION_MAX": 6, + "SCALAR_EXPRESSION_MOD": 7 + }, + "SnapshotIndexType_t": { + "SNAPSHOT_INDEX_INCREMENT": 0, + "SNAPSHOT_INDEX_DIRECT": 1 + }, + "SpriteCardPerParticleScale_t": { + "SPRITECARD_TEXTURE_PP_SCALE_NONE": 0, + "SPRITECARD_TEXTURE_PP_SCALE_PARTICLE_AGE": 1, + "SPRITECARD_TEXTURE_PP_SCALE_ANIMATION_FRAME": 2, + "SPRITECARD_TEXTURE_PP_SCALE_SHADER_EXTRA_DATA1": 3, + "SPRITECARD_TEXTURE_PP_SCALE_SHADER_EXTRA_DATA2": 4, + "SPRITECARD_TEXTURE_PP_SCALE_PARTICLE_ALPHA": 5, + "SPRITECARD_TEXTURE_PP_SCALE_SHADER_RADIUS": 6, + "SPRITECARD_TEXTURE_PP_SCALE_ROLL": 7, + "SPRITECARD_TEXTURE_PP_SCALE_YAW": 8, + "SPRITECARD_TEXTURE_PP_SCALE_PITCH": 9, + "SPRITECARD_TEXTURE_PP_SCALE_RANDOM": 10, + "SPRITECARD_TEXTURE_PP_SCALE_NEG_RANDOM": 11, + "SPRITECARD_TEXTURE_PP_SCALE_RANDOM_TIME": 12, + "SPRITECARD_TEXTURE_PP_SCALE_NEG_RANDOM_TIME": 13 + }, + "SpriteCardShaderType_t": { + "SPRITECARD_SHADER_BASE": 0, + "SPRITECARD_SHADER_CUSTOM": 1 + }, + "SpriteCardTextureChannel_t": { + "SPRITECARD_TEXTURE_CHANNEL_MIX_RGB": 0, + "SPRITECARD_TEXTURE_CHANNEL_MIX_RGBA": 1, + "SPRITECARD_TEXTURE_CHANNEL_MIX_A": 2, + "SPRITECARD_TEXTURE_CHANNEL_MIX_RGB_A": 3, + "SPRITECARD_TEXTURE_CHANNEL_MIX_RGB_ALPHAMASK": 4, + "SPRITECARD_TEXTURE_CHANNEL_MIX_RGB_RGBMASK": 5, + "SPRITECARD_TEXTURE_CHANNEL_MIX_RGBA_RGBALPHA": 6, + "SPRITECARD_TEXTURE_CHANNEL_MIX_A_RGBALPHA": 7, + "SPRITECARD_TEXTURE_CHANNEL_MIX_RGB_A_RGBALPHA": 8, + "SPRITECARD_TEXTURE_CHANNEL_MIX_R": 9, + "SPRITECARD_TEXTURE_CHANNEL_MIX_G": 10, + "SPRITECARD_TEXTURE_CHANNEL_MIX_B": 11, + "SPRITECARD_TEXTURE_CHANNEL_MIX_RALPHA": 12, + "SPRITECARD_TEXTURE_CHANNEL_MIX_GALPHA": 13, + "SPRITECARD_TEXTURE_CHANNEL_MIX_BALPHA": 14 + }, + "SpriteCardTextureType_t": { + "SPRITECARD_TEXTURE_DIFFUSE": 0, + "SPRITECARD_TEXTURE_ZOOM": 1, + "SPRITECARD_TEXTURE_1D_COLOR_LOOKUP": 2, + "SPRITECARD_TEXTURE_UVDISTORTION": 3, + "SPRITECARD_TEXTURE_UVDISTORTION_ZOOM": 4, + "SPRITECARD_TEXTURE_NORMALMAP": 5, + "SPRITECARD_TEXTURE_ANIMMOTIONVEC": 6, + "SPRITECARD_TEXTURE_SPHERICAL_HARMONICS_A": 7, + "SPRITECARD_TEXTURE_SPHERICAL_HARMONICS_B": 8, + "SPRITECARD_TEXTURE_SPHERICAL_HARMONICS_C": 9 + }, + "StandardLightingAttenuationStyle_t": { + "LIGHT_STYLE_OLD": 0, + "LIGHT_STYLE_NEW": 1 + }, + "TextureRepetitionMode_t": { + "TEXTURE_REPETITION_PARTICLE": 0, + "TEXTURE_REPETITION_PATH": 1 + }, + "VectorExpressionType_t": { + "VECTOR_EXPRESSION_UNINITIALIZED": -1, + "VECTOR_EXPRESSION_ADD": 0, + "VECTOR_EXPRESSION_SUBTRACT": 1, + "VECTOR_EXPRESSION_MUL": 2, + "VECTOR_EXPRESSION_DIVIDE": 3, + "VECTOR_EXPRESSION_INPUT_1": 4, + "VECTOR_EXPRESSION_MIN": 5, + "VECTOR_EXPRESSION_MAX": 6, + "VECTOR_EXPRESSION_CROSSPRODUCT": 7 + }, + "VectorFloatExpressionType_t": { + "VECTOR_FLOAT_EXPRESSION_UNINITIALIZED": -1, + "VECTOR_FLOAT_EXPRESSION_DOTPRODUCT": 0, + "VECTOR_FLOAT_EXPRESSION_DISTANCE": 1, + "VECTOR_FLOAT_EXPRESSION_DISTANCESQR": 2, + "VECTOR_FLOAT_EXPRESSION_INPUT1_LENGTH": 3, + "VECTOR_FLOAT_EXPRESSION_INPUT1_LENGTHSQR": 4, + "VECTOR_FLOAT_EXPRESSION_INPUT1_NOISE": 5 + }, + "PFNoiseModifier_t": { + "PF_NOISE_MODIFIER_NONE": 0, + "PF_NOISE_MODIFIER_LINES": 1, + "PF_NOISE_MODIFIER_CLUMPS": 2, + "PF_NOISE_MODIFIER_RINGS": 3 + }, + "PFNoiseTurbulence_t": { + "PF_NOISE_TURB_NONE": 0, + "PF_NOISE_TURB_HIGHLIGHT": 1, + "PF_NOISE_TURB_FEEDBACK": 2, + "PF_NOISE_TURB_LOOPY": 3, + "PF_NOISE_TURB_CONTRAST": 4, + "PF_NOISE_TURB_ALTERNATE": 5 + }, + "PFNoiseType_t": { + "PF_NOISE_TYPE_PERLIN": 0, + "PF_NOISE_TYPE_SIMPLEX": 1, + "PF_NOISE_TYPE_WORLEY": 2, + "PF_NOISE_TYPE_CURL": 3 + }, + "ParticleFloatBiasType_t": { + "PF_BIAS_TYPE_INVALID": -1, + "PF_BIAS_TYPE_STANDARD": 0, + "PF_BIAS_TYPE_GAIN": 1, + "PF_BIAS_TYPE_EXPONENTIAL": 2, + "PF_BIAS_TYPE_COUNT": 3 + }, + "ParticleFloatInputMode_t": { + "PF_INPUT_MODE_INVALID": -1, + "PF_INPUT_MODE_CLAMPED": 0, + "PF_INPUT_MODE_LOOPED": 1, + "PF_INPUT_MODE_COUNT": 2 + }, + "ParticleFloatMapType_t": { + "PF_MAP_TYPE_INVALID": -1, + "PF_MAP_TYPE_DIRECT": 0, + "PF_MAP_TYPE_MULT": 1, + "PF_MAP_TYPE_REMAP": 2, + "PF_MAP_TYPE_REMAP_BIASED": 3, + "PF_MAP_TYPE_CURVE": 4, + "PF_MAP_TYPE_NOTCHED": 5, + "PF_MAP_TYPE_ROUND": 6, + "PF_MAP_TYPE_COUNT": 7 + }, + "ParticleFloatRandomMode_t": { + "PF_RANDOM_MODE_INVALID": -1, + "PF_RANDOM_MODE_CONSTANT": 0, + "PF_RANDOM_MODE_VARYING": 1, + "PF_RANDOM_MODE_COUNT": 2 + }, + "ParticleFloatRoundType_t": { + "PF_ROUND_TYPE_INVALID": -1, + "PF_ROUND_TYPE_NEAREST": 0, + "PF_ROUND_TYPE_FLOOR": 1, + "PF_ROUND_TYPE_CEIL": 2, + "PF_ROUND_TYPE_COUNT": 3 + }, + "ParticleFloatType_t": { + "PF_TYPE_INVALID": -1, + "PF_TYPE_LITERAL": 0, + "PF_TYPE_NAMED_VALUE": 1, + "PF_TYPE_RANDOM_UNIFORM": 2, + "PF_TYPE_RANDOM_BIASED": 3, + "PF_TYPE_COLLECTION_AGE": 4, + "PF_TYPE_ENDCAP_AGE": 5, + "PF_TYPE_CONTROL_POINT_COMPONENT": 6, + "PF_TYPE_CONTROL_POINT_CHANGE_AGE": 7, + "PF_TYPE_CONTROL_POINT_SPEED": 8, + "PF_TYPE_PARTICLE_DETAIL_LEVEL": 9, + "PF_TYPE_CONCURRENT_DEF_COUNT": 10, + "PF_TYPE_CLOSEST_CAMERA_DISTANCE": 11, + "PF_TYPE_RENDERER_CAMERA_DISTANCE": 12, + "PF_TYPE_RENDERER_CAMERA_DOT_PRODUCT": 13, + "PF_TYPE_PARTICLE_NOISE": 14, + "PF_TYPE_PARTICLE_AGE": 15, + "PF_TYPE_PARTICLE_AGE_NORMALIZED": 16, + "PF_TYPE_PARTICLE_FLOAT": 17, + "PF_TYPE_PARTICLE_VECTOR_COMPONENT": 18, + "PF_TYPE_PARTICLE_SPEED": 19, + "PF_TYPE_PARTICLE_NUMBER": 20, + "PF_TYPE_PARTICLE_NUMBER_NORMALIZED": 21, + "PF_TYPE_COUNT": 22 + }, + "ParticleModelType_t": { + "PM_TYPE_INVALID": 0, + "PM_TYPE_NAMED_VALUE_MODEL": 1, + "PM_TYPE_NAMED_VALUE_EHANDLE": 2, + "PM_TYPE_CONTROL_POINT": 3, + "PM_TYPE_COUNT": 4 + }, + "ParticleTransformType_t": { + "PT_TYPE_INVALID": 0, + "PT_TYPE_NAMED_VALUE": 1, + "PT_TYPE_CONTROL_POINT": 2, + "PT_TYPE_CONTROL_POINT_RANGE": 3, + "PT_TYPE_COUNT": 4 + }, + "ParticleVecType_t": { + "PVEC_TYPE_INVALID": -1, + "PVEC_TYPE_LITERAL": 0, + "PVEC_TYPE_LITERAL_COLOR": 1, + "PVEC_TYPE_NAMED_VALUE": 2, + "PVEC_TYPE_PARTICLE_VECTOR": 3, + "PVEC_TYPE_PARTICLE_VELOCITY": 4, + "PVEC_TYPE_CP_VALUE": 5, + "PVEC_TYPE_CP_RELATIVE_POSITION": 6, + "PVEC_TYPE_CP_RELATIVE_DIR": 7, + "PVEC_TYPE_CP_RELATIVE_RANDOM_DIR": 8, + "PVEC_TYPE_FLOAT_COMPONENTS": 9, + "PVEC_TYPE_FLOAT_INTERP_CLAMPED": 10, + "PVEC_TYPE_FLOAT_INTERP_OPEN": 11, + "PVEC_TYPE_FLOAT_INTERP_GRADIENT": 12, + "PVEC_TYPE_RANDOM_UNIFORM": 13, + "PVEC_TYPE_RANDOM_UNIFORM_OFFSET": 14, + "PVEC_TYPE_CP_DELTA": 15, + "PVEC_TYPE_CLOSEST_CAMERA_POSITION": 16, + "PVEC_TYPE_COUNT": 17 + }, + "JointAxis_t": { + "JOINT_AXIS_X": 0, + "JOINT_AXIS_Y": 1, + "JOINT_AXIS_Z": 2, + "JOINT_AXIS_COUNT": 3 + }, + "JointMotion_t": { + "JOINT_MOTION_FREE": 0, + "JOINT_MOTION_LOCKED": 1, + "JOINT_MOTION_COUNT": 2 + }, + "InputLayoutVariation_t": { + "INPUT_LAYOUT_VARIATION_DEFAULT": 0, + "INPUT_LAYOUT_VARIATION_STREAM1_INSTANCEID": 1, + "INPUT_LAYOUT_VARIATION_STREAM1_INSTANCEID_MORPH_VERT_ID": 2, + "INPUT_LAYOUT_VARIATION_MAX": 3 + }, + "RenderBufferFlags_t": { + "RENDER_BUFFER_USAGE_VERTEX_BUFFER": 1, + "RENDER_BUFFER_USAGE_INDEX_BUFFER": 2, + "RENDER_BUFFER_USAGE_SHADER_RESOURCE": 4, + "RENDER_BUFFER_USAGE_UNORDERED_ACCESS": 8, + "RENDER_BUFFER_BYTEADDRESS_BUFFER": 16, + "RENDER_BUFFER_STRUCTURED_BUFFER": 32, + "RENDER_BUFFER_APPEND_CONSUME_BUFFER": 64, + "RENDER_BUFFER_UAV_COUNTER": 128, + "RENDER_BUFFER_UAV_DRAW_INDIRECT_ARGS": 256, + "RENDER_BUFFER_ACCELERATION_STRUCTURE": 512, + "RENDER_BUFFER_SHADER_BINDING_TABLE": 1024, + "RENDER_BUFFER_PER_FRAME_WRITE_ONCE": 2048, + "RENDER_BUFFER_POOL_ALLOCATED": 4096 + }, + "RenderMultisampleType_t": { + "RENDER_MULTISAMPLE_INVALID": -1, + "RENDER_MULTISAMPLE_NONE": 0, + "RENDER_MULTISAMPLE_2X": 1, + "RENDER_MULTISAMPLE_4X": 2, + "RENDER_MULTISAMPLE_6X": 3, + "RENDER_MULTISAMPLE_8X": 4, + "RENDER_MULTISAMPLE_16X": 5, + "RENDER_MULTISAMPLE_TYPE_COUNT": 6 + }, + "RenderPrimitiveType_t": { + "RENDER_PRIM_POINTS": 0, + "RENDER_PRIM_LINES": 1, + "RENDER_PRIM_LINES_WITH_ADJACENCY": 2, + "RENDER_PRIM_LINE_STRIP": 3, + "RENDER_PRIM_LINE_STRIP_WITH_ADJACENCY": 4, + "RENDER_PRIM_TRIANGLES": 5, + "RENDER_PRIM_TRIANGLES_WITH_ADJACENCY": 6, + "RENDER_PRIM_TRIANGLE_STRIP": 7, + "RENDER_PRIM_TRIANGLE_STRIP_WITH_ADJACENCY": 8, + "RENDER_PRIM_INSTANCED_QUADS": 9, + "RENDER_PRIM_HETEROGENOUS": 10, + "RENDER_PRIM_COMPUTE_SHADER": 11, + "RENDER_PRIM_TYPE_COUNT": 12 + }, + "RenderSlotType_t": { + "RENDER_SLOT_INVALID": -1, + "RENDER_SLOT_PER_VERTEX": 0, + "RENDER_SLOT_PER_INSTANCE": 1 + }, + "DisableShadows_t": { + "kDisableShadows_None": 0, + "kDisableShadows_All": 1, + "kDisableShadows_Baked": 2, + "kDisableShadows_Realtime": 3 + }, + "ThreeState_t": { + "TRS_FALSE": 0, + "TRS_TRUE": 1, + "TRS_NONE": 2 + }, + "fieldtype_t": { + "FIELD_VOID": 0, + "FIELD_FLOAT32": 1, + "FIELD_STRING": 2, + "FIELD_VECTOR": 3, + "FIELD_QUATERNION": 4, + "FIELD_INT32": 5, + "FIELD_BOOLEAN": 6, + "FIELD_INT16": 7, + "FIELD_CHARACTER": 8, + "FIELD_COLOR32": 9, + "FIELD_EMBEDDED": 10, + "FIELD_CUSTOM": 11, + "FIELD_CLASSPTR": 12, + "FIELD_EHANDLE": 13, + "FIELD_POSITION_VECTOR": 14, + "FIELD_TIME": 15, + "FIELD_TICK": 16, + "FIELD_SOUNDNAME": 17, + "FIELD_INPUT": 18, + "FIELD_FUNCTION": 19, + "FIELD_VMATRIX": 20, + "FIELD_VMATRIX_WORLDSPACE": 21, + "FIELD_MATRIX3X4_WORLDSPACE": 22, + "FIELD_INTERVAL": 23, + "FIELD_UNUSED": 24, + "FIELD_VECTOR2D": 25, + "FIELD_INT64": 26, + "FIELD_VECTOR4D": 27, + "FIELD_RESOURCE": 28, + "FIELD_TYPEUNKNOWN": 29, + "FIELD_CSTRING": 30, + "FIELD_HSCRIPT": 31, + "FIELD_VARIANT": 32, + "FIELD_UINT64": 33, + "FIELD_FLOAT64": 34, + "FIELD_POSITIVEINTEGER_OR_NULL": 35, + "FIELD_HSCRIPT_NEW_INSTANCE": 36, + "FIELD_UINT32": 37, + "FIELD_UTLSTRINGTOKEN": 38, + "FIELD_QANGLE": 39, + "FIELD_NETWORK_ORIGIN_CELL_QUANTIZED_VECTOR": 40, + "FIELD_HMATERIAL": 41, + "FIELD_HMODEL": 42, + "FIELD_NETWORK_QUANTIZED_VECTOR": 43, + "FIELD_NETWORK_QUANTIZED_FLOAT": 44, + "FIELD_DIRECTION_VECTOR_WORLDSPACE": 45, + "FIELD_QANGLE_WORLDSPACE": 46, + "FIELD_QUATERNION_WORLDSPACE": 47, + "FIELD_HSCRIPT_LIGHTBINDING": 48, + "FIELD_V8_VALUE": 49, + "FIELD_V8_OBJECT": 50, + "FIELD_V8_ARRAY": 51, + "FIELD_V8_CALLBACK_INFO": 52, + "FIELD_UTLSTRING": 53, + "FIELD_NETWORK_ORIGIN_CELL_QUANTIZED_POSITION_VECTOR": 54, + "FIELD_HRENDERTEXTURE": 55, + "FIELD_HPARTICLESYSTEMDEFINITION": 56, + "FIELD_UINT8": 57, + "FIELD_UINT16": 58, + "FIELD_CTRANSFORM": 59, + "FIELD_CTRANSFORM_WORLDSPACE": 60, + "FIELD_HPOSTPROCESSING": 61, + "FIELD_MATRIX3X4": 62, + "FIELD_SHIM": 63, + "FIELD_CMOTIONTRANSFORM": 64, + "FIELD_CMOTIONTRANSFORM_WORLDSPACE": 65, + "FIELD_ATTACHMENT_HANDLE": 66, + "FIELD_AMMO_INDEX": 67, + "FIELD_CONDITION_ID": 68, + "FIELD_AI_SCHEDULE_BITS": 69, + "FIELD_MODIFIER_HANDLE": 70, + "FIELD_ROTATION_VECTOR": 71, + "FIELD_ROTATION_VECTOR_WORLDSPACE": 72, + "FIELD_HVDATA": 73, + "FIELD_SCALE32": 74, + "FIELD_STRING_AND_TOKEN": 75, + "FIELD_ENGINE_TIME": 76, + "FIELD_ENGINE_TICK": 77, + "FIELD_WORLD_GROUP_ID": 78, + "FIELD_GLOBALSYMBOL": 79, + "FIELD_TYPECOUNT": 80 + }, + "ChickenActivity": { + "IDLE": 0, + "SQUAT": 1, + "WALK": 2, + "RUN": 3, + "GLIDE": 4, + "LAND": 5, + "PANIC": 6, + "TRICK": 7, + "TURN_IN_PLACE": 8 + }, + "EOverrideBlockLOS_t": { + "BLOCK_LOS_DEFAULT": 0, + "BLOCK_LOS_FORCE_FALSE": 1, + "BLOCK_LOS_FORCE_TRUE": 2 + }, + "EntFinderMethod_t": { + "ENT_FIND_METHOD_NEAREST": 0, + "ENT_FIND_METHOD_FARTHEST": 1, + "ENT_FIND_METHOD_RANDOM": 2 + }, + "Explosions": { + "expRandom": 0, + "expDirected": 1, + "expUsePrecise": 2 + }, + "ForcedCrouchState_t": { + "FORCEDCROUCH_NONE": 0, + "FORCEDCROUCH_CROUCHED": 1, + "FORCEDCROUCH_UNCROUCHED": 2 + }, + "FuncDoorSpawnPos_t": { + "FUNC_DOOR_SPAWN_CLOSED": 0, + "FUNC_DOOR_SPAWN_OPEN": 1 + }, + "LessonPanelLayoutFileTypes_t": { + "LAYOUT_HAND_DEFAULT": 0, + "LAYOUT_WORLD_DEFAULT": 1, + "LAYOUT_CUSTOM": 2 + }, + "Materials": { + "matGlass": 0, + "matWood": 1, + "matMetal": 2, + "matFlesh": 3, + "matCinderBlock": 4, + "matCeilingTile": 5, + "matComputer": 6, + "matUnbreakableGlass": 7, + "matRocks": 8, + "matWeb": 9, + "matNone": 10, + "matLastMaterial": 11 + }, + "MoveLinearAuthoredPos_t": { + "MOVELINEAR_AUTHORED_AT_START_POSITION": 0, + "MOVELINEAR_AUTHORED_AT_OPEN_POSITION": 1, + "MOVELINEAR_AUTHORED_AT_CLOSED_POSITION": 2 + }, + "NPCFollowFormation_t": { + "Default": -1, + "CloseCircle": 0, + "WideCircle": 1, + "MediumCircle": 5, + "Sidekick": 6 + }, + "PropDoorRotatingOpenDirection_e": { + "DOOR_ROTATING_OPEN_BOTH_WAYS": 0, + "DOOR_ROTATING_OPEN_FORWARD": 1, + "DOOR_ROTATING_OPEN_BACKWARD": 2 + }, + "PropDoorRotatingSpawnPos_t": { + "DOOR_SPAWN_CLOSED": 0, + "DOOR_SPAWN_OPEN_FORWARD": 1, + "DOOR_SPAWN_OPEN_BACK": 2, + "DOOR_SPAWN_AJAR": 3 + }, + "SceneOnPlayerDeath_t": { + "SCENE_ONPLAYERDEATH_DO_NOTHING": 0, + "SCENE_ONPLAYERDEATH_CANCEL": 1 + }, + "ScriptedConflictResponse_t": { + "SS_CONFLICT_ENQUEUE": 0, + "SS_CONFLICT_INTERRUPT": 1 + }, + "ScriptedMoveType_t": { + "SCRIPTED_MOVETYPE_NONE": 0, + "SCRIPTED_MOVETYPE_TO_WITH_DURATION": 1, + "SCRIPTED_MOVETYPE_TO_WITH_MOVESPEED": 2, + "SCRIPTED_MOVETYPE_SWEEP_TO_AT_MOVEMENT_SPEED": 3 + }, + "SoundEventStartType_t": { + "SOUNDEVENT_START_PLAYER": 0, + "SOUNDEVENT_START_WORLD": 1, + "SOUNDEVENT_START_ENTITY": 2 + }, + "SoundFlags_t": { + "SOUND_FLAGS_NONE": 0, + "SOUND_FLAG_GUNFIRE": 1, + "SOUND_FLAG_COMBINE_ONLY": 2, + "SOUND_FLAG_REACT_TO_SOURCE": 4, + "SOUND_FLAG_EXPLOSION": 8, + "SOUND_FLAG_EXCLUDE_COMBINE": 16, + "SOUND_FLAG_DANGER_APPROACH": 32, + "SOUND_FLAG_ALLIES_ONLY": 64, + "SOUND_FLAG_PANIC_NPCS": 128, + "SOUND_FLAG_SQUAD_ONLY": 256 + }, + "SoundTypes_t": { + "SOUND_NONE": 0, + "SOUND_COMBAT": 1, + "SOUND_PLAYER": 2, + "SOUND_DANGER": 3, + "SOUND_BULLET_IMPACT": 4, + "SOUND_THUMPER": 5, + "SOUND_PHYSICS_DANGER": 6, + "SOUND_MOVE_AWAY": 7, + "SOUND_PLAYER_VEHICLE": 8, + "SOUND_GLASS_BREAK": 9, + "SOUND_PHYSICS_OBJECT": 10, + "SOUND_WARN_FRIENDS": 11, + "SOUND_FOOD": 12, + "NUM_AI_SOUND_TYPES": 13 + }, + "TOGGLE_STATE": { + "TS_AT_TOP": 0, + "TS_AT_BOTTOM": 1, + "TS_GOING_UP": 2, + "TS_GOING_DOWN": 3, + "DOOR_OPEN": 0, + "DOOR_CLOSED": 1, + "DOOR_OPENING": 2, + "DOOR_CLOSING": 3 + }, + "TRAIN_CODE": { + "TRAIN_SAFE": 0, + "TRAIN_BLOCKING": 1, + "TRAIN_FOLLOWING": 2 + }, + "Touch_t": { + "touch_none": 0, + "touch_player_only": 1, + "touch_npc_only": 2, + "touch_player_or_npc": 3, + "touch_player_or_npc_or_physicsprop": 4 + }, + "TrackOrientationType_t": { + "TrackOrientation_Fixed": 0, + "TrackOrientation_FacePath": 1, + "TrackOrientation_FacePathAngles": 2 + }, + "TrainOrientationType_t": { + "TrainOrientation_Fixed": 0, + "TrainOrientation_AtPathTracks": 1, + "TrainOrientation_LinearBlend": 2, + "TrainOrientation_EaseInEaseOut": 3 + }, + "TrainVelocityType_t": { + "TrainVelocity_Instantaneous": 0, + "TrainVelocity_LinearBlend": 1, + "TrainVelocity_EaseInEaseOut": 2 + }, + "doorCheck_e": { + "DOOR_CHECK_FORWARD": 0, + "DOOR_CHECK_BACKWARD": 1, + "DOOR_CHECK_FULL": 2 + }, + "eSplinePushType": { + "k_eSplinePushAlong": 0, + "k_eSplinePushAway": 1, + "k_eSplinePushTowards": 2 + }, + "filter_t": { + "FILTER_AND": 0, + "FILTER_OR": 1 + }, + "navproperties_t": { + "NAV_IGNORE": 1 + }, + "ActionType_t": { + "SOS_ACTION_NONE": 0, + "SOS_ACTION_LIMITER": 1, + "SOS_ACTION_TIME_LIMIT": 2, + "SOS_ACTION_TIME_BLOCK_LIMITER": 3, + "SOS_ACTION_SET_SOUNDEVENT_PARAM": 4, + "SOS_ACTION_SOUNDEVENT_CLUSTER": 5, + "SOS_ACTION_SOUNDEVENT_PRIORITY": 6, + "SOS_ACTION_COUNT_ENVELOPE": 7, + "SOS_ACTION_SOUNDEVENT_COUNT": 8, + "SOS_ACTION_SOUNDEVENT_MIN_MAX_VALUES": 9 + }, + "SosActionSortType_t": { + "SOS_SORTTYPE_HIGHEST": 0, + "SOS_SORTTYPE_LOWEST": 1 + }, + "SosActionStopType_t": { + "SOS_STOPTYPE_NONE": 0, + "SOS_STOPTYPE_TIME": 1, + "SOS_STOPTYPE_OPVAR": 2 + }, + "SosEditItemType_t": { + "SOS_EDIT_ITEM_TYPE_SOUNDEVENTS": 0, + "SOS_EDIT_ITEM_TYPE_SOUNDEVENT": 1, + "SOS_EDIT_ITEM_TYPE_LIBRARYSTACKS": 2, + "SOS_EDIT_ITEM_TYPE_STACK": 3, + "SOS_EDIT_ITEM_TYPE_OPERATOR": 4, + "SOS_EDIT_ITEM_TYPE_FIELD": 5 + }, + "SosGroupType_t": { + "SOS_GROUPTYPE_DYNAMIC": 0, + "SOS_GROUPTYPE_STATIC": 1 + }, + "soundlevel_t": { + "SNDLVL_NONE": 0, + "SNDLVL_20dB": 20, + "SNDLVL_25dB": 25, + "SNDLVL_30dB": 30, + "SNDLVL_35dB": 35, + "SNDLVL_40dB": 40, + "SNDLVL_45dB": 45, + "SNDLVL_50dB": 50, + "SNDLVL_55dB": 55, + "SNDLVL_IDLE": 60, + "SNDLVL_60dB": 60, + "SNDLVL_65dB": 65, + "SNDLVL_STATIC": 66, + "SNDLVL_70dB": 70, + "SNDLVL_NORM": 75, + "SNDLVL_75dB": 75, + "SNDLVL_80dB": 80, + "SNDLVL_TALKING": 80, + "SNDLVL_85dB": 85, + "SNDLVL_90dB": 90, + "SNDLVL_95dB": 95, + "SNDLVL_100dB": 100, + "SNDLVL_105dB": 105, + "SNDLVL_110dB": 110, + "SNDLVL_120dB": 120, + "SNDLVL_130dB": 130, + "SNDLVL_GUNFIRE": 140, + "SNDLVL_140dB": 140, + "SNDLVL_150dB": 150, + "SNDLVL_180dB": 180 + }, + "VMixChannelOperation_t": { + "VMIX_CHAN_STEREO": 0, + "VMIX_CHAN_LEFT": 1, + "VMIX_CHAN_RIGHT": 2, + "VMIX_CHAN_SWAP": 3, + "VMIX_CHAN_MONO": 4, + "VMIX_CHAN_MID_SIDE": 5 + }, + "VMixFilterSlope_t": { + "FILTER_SLOPE_1POLE_6dB": 0, + "FILTER_SLOPE_1POLE_12dB": 1, + "FILTER_SLOPE_1POLE_18dB": 2, + "FILTER_SLOPE_1POLE_24dB": 3, + "FILTER_SLOPE_12dB": 4, + "FILTER_SLOPE_24dB": 5, + "FILTER_SLOPE_36dB": 6, + "FILTER_SLOPE_48dB": 7, + "FILTER_SLOPE_MAX": 7 + }, + "VMixFilterType_t": { + "FILTER_UNKNOWN": -1, + "FILTER_LOWPASS": 0, + "FILTER_HIGHPASS": 1, + "FILTER_BANDPASS": 2, + "FILTER_NOTCH": 3, + "FILTER_PEAKING_EQ": 4, + "FILTER_LOW_SHELF": 5, + "FILTER_HIGH_SHELF": 6, + "FILTER_ALLPASS": 7, + "FILTER_PASSTHROUGH": 8 + }, + "VMixLFOShape_t": { + "LFO_SHAPE_SINE": 0, + "LFO_SHAPE_SQUARE": 1, + "LFO_SHAPE_TRI": 2, + "LFO_SHAPE_SAW": 3, + "LFO_SHAPE_NOISE": 4 + }, + "VMixPannerType_t": { + "PANNER_TYPE_LINEAR": 0, + "PANNER_TYPE_EQUAL_POWER": 1 + }, + "VMixProcessorType_t": { + "VPROCESSOR_UNKNOWN": 0, + "VPROCESSOR_RT_PITCH": 1, + "VPROCESSOR_STEAMAUDIO_HRTF": 2, + "VPROCESSOR_DYNAMICS": 3, + "VPROCESSOR_PRESETDSP": 4, + "VPROCESSOR_DELAY": 5, + "VPROCESSOR_MOD_DELAY": 6, + "VPROCESSOR_DIFFUSOR": 7, + "VPROCESSOR_BOXVERB": 8, + "VPROCESSOR_FREEVERB": 9, + "VPROCESSOR_PLATEVERB": 10, + "VPROCESSOR_FULLWAVE_INTEGRATOR": 11, + "VPROCESSOR_FILTER": 12, + "VPROCESSOR_STEAMAUDIO_PATHING": 13, + "VPROCESSOR_EQ8": 14, + "VPROCESSOR_ENVELOPE": 15, + "VPROCESSOR_VOCODER": 16, + "VPROCESSOR_CONVOLUTION": 17, + "VPROCESSOR_DYNAMICS_3BAND": 18, + "VPROCESSOR_DYNAMICS_COMPRESSOR": 19, + "VPROCESSOR_SHAPER": 20, + "VPROCESSOR_PANNER": 21, + "VPROCESSOR_UTILITY": 22, + "VPROCESSOR_AUTOFILTER": 23, + "VPROCESSOR_OSC": 24, + "VPROCESSOR_STEREODELAY": 25, + "VPROCESSOR_EFFECT_CHAIN": 26, + "VPROCESSOR_SUBGRAPH_SWITCH": 27, + "VPROCESSOR_STEAMAUDIO_DIRECT": 28, + "VPROCESSOR_STEAMAUDIO_HYBRIDREVERB": 29 + }, + "VMixSubgraphSwitchInterpolationType_t": { + "SUBGRAPH_INTERPOLATION_TEMPORAL_CROSSFADE": 0, + "SUBGRAPH_INTERPOLATION_TEMPORAL_FADE_OUT": 1, + "SUBGRAPH_INTERPOLATION_KEEP_LAST_SUBGRAPH_RUNNING": 2 + }, + "CVSoundFormat_t": { + "PCM16": 0, + "PCM8": 1, + "MP3": 2, + "ADPCM": 3 + }, + "EMidiNote": { + "C": 0, + "C_Sharp": 1, + "D": 2, + "D_Sharp": 3, + "E": 4, + "F": 5, + "F_Sharp": 6, + "G": 7, + "G_Sharp": 8, + "A": 9, + "A_Sharp": 10, + "B": 11, + "Count": 12 + }, + "EMode_t": { + "Peak": 0, + "RMS": 1 + }, + "EWaveform": { + "Sine": 0, + "Square": 1, + "Saw": 2, + "Triangle": 3, + "Noise": 4 + }, + "PlayBackMode_t": { + "Random": 0, + "RandomNoRepeats": 1, + "RandomAvoidLast": 2, + "Sequential": 3, + "RandomWeights": 4 + }, + "ObjectTypeFlags_t": { + "OBJECT_TYPE_NONE": 0, + "OBJECT_TYPE_MODEL": 8, + "OBJECT_TYPE_BLOCK_LIGHT": 16, + "OBJECT_TYPE_NO_SHADOWS": 32, + "OBJECT_TYPE_WORLDSPACE_TEXURE_BLEND": 64, + "OBJECT_TYPE_DISABLED_IN_LOW_QUALITY": 128, + "OBJECT_TYPE_NO_SUN_SHADOWS": 256, + "OBJECT_TYPE_RENDER_WITH_DYNAMIC": 512, + "OBJECT_TYPE_RENDER_TO_CUBEMAPS": 1024, + "OBJECT_TYPE_MODEL_HAS_LODS": 2048, + "OBJECT_TYPE_OVERLAY": 8192, + "OBJECT_TYPE_PRECOMPUTED_VISMEMBERS": 16384, + "OBJECT_TYPE_STATIC_CUBE_MAP": 32768, + "OBJECT_TYPE_DISABLE_VIS_CULLING": 65536, + "OBJECT_TYPE_BAKED_GEOMETRY": 131072 + } +} \ No newline at end of file diff --git a/plugin_files/logs/.gitignore b/plugin_files/logs/.gitignore new file mode 100644 index 000000000..e69de29bb diff --git a/plugin_files/logs/plugins/.gitignore b/plugin_files/logs/plugins/.gitignore new file mode 100644 index 000000000..e69de29bb diff --git a/plugin_files/plugins/.gitignore b/plugin_files/plugins/.gitignore new file mode 100644 index 000000000..1c2d77b5c --- /dev/null +++ b/plugin_files/plugins/.gitignore @@ -0,0 +1 @@ +test_plugin/ \ No newline at end of file diff --git a/plugin_files/translations/.gitignore b/plugin_files/translations/.gitignore new file mode 100644 index 000000000..e69de29bb diff --git a/plugin_files/translations/translation.core.json b/plugin_files/translations/translation.core.json new file mode 100644 index 000000000..2899be9fc --- /dev/null +++ b/plugin_files/translations/translation.core.json @@ -0,0 +1,92 @@ +{ + "seconds": { + "en": "{TIME} second(s)", + "ro": "{TIME} secunde", + "es": "{TIME} segundo(s)", + "pl": "{TIME} sekund(a/y)", + "de": "{TIME} sekunde(n)" + }, + "minutes": { + "en": "{TIME} minute(s)", + "ro": "{TIME} minut(e)", + "es": "{TIME} minuto(s)", + "pl": "{TIME} minut(a/y)", + "de": "{TIME} minute(n)" + }, + "hours": { + "en": "{TIME} hour(s)", + "ro": "{TIME} ore", + "es": "{TIME} hora(s)", + "pl": "{TIME} godzin(a/y)", + "de": "{TIME} stunde(n)" + }, + "days": { + "en": "{TIME} day(s)", + "ro": "{TIME} zi(le)", + "es": "{TIME} día(s)", + "pl": "{TIME} dzień/dni", + "de": "{TIME} tag(e)" + }, + "forever": { + "en": "Forever", + "ro": "Pentru totdeauna", + "es": "Para siempre", + "pl": "Na zawsze", + "de": "Für immer" + }, + "never": { + "en": "Never", + "ro": "Niciodată", + "es": "Nunca", + "pl": "Nigdy", + "de": "Niemals" + }, + "menu.next": { + "en": "Next", + "ro": "Următorul", + "pl": "Następny", + "de": "Nächstes" + }, + "menu.back": { + "en": "Back", + "ro": "Înapoi", + "pl": "Wstecz", + "de": "Zurück" + }, + "menu.exit": { + "en": "Exit", + "ro": "Ieșire", + "pl": "Wyjście", + "de": "Beenden" + }, + "menu.input.chat": { + "en": "Page {PAGE}/{MAXPAGES} | {PREFIX}1 - {PREFIX}9", + "ro": "Pagina {PAGE}/{MAXPAGES} | {PREFIX}1 - {PREFIX}9", + "pl": "Strona {PAGE}/{MAXPAGES} | {PREFIX}1 - {PREFIX}9", + "de": "Seite {PAGE}/{MAXPAGES} | {PREFIX}1 - {PREFIX}9" + }, + "menu.center.footer": { + "en": "{CYCLE_BUTTON} - Cycle | {USE_BUTTON} - Select | Page {PAGE}/{MAXPAGES}", + "ro": "{CYCLE_BUTTON} - Schimbă | {USE_BUTTON} - Selectează | Pagina {PAGE}/{MAXPAGES}", + "pl": "{CYCLE_BUTTON} - Przeglądaj | {USE_BUTTON} - Wybierz | Strona {PAGE}/{MAXPAGES}", + "de": "{CYCLE_BUTTON} - Durchblättern | {USE_BUTTON} - Auswählen | Seite {PAGE}/{MAXPAGES}" + }, + "menu.center.footer.nooption": { + "en": "{CYCLE_BUTTON} - Cycle | {USE_BUTTON} - Select | {EXIT_BUTTON} - Exit | Page {PAGE}/{MAXPAGES}", + "ro": "{CYCLE_BUTTON} - Schimbă | {USE_BUTTON} - Selectează | {EXIT_BUTTON} - Ieșire | Pagina {PAGE}/{MAXPAGES}", + "pl": "{CYCLE_BUTTON} - Przeglądaj | {USE_BUTTON} - Wybierz | {EXIT_BUTTON} - Wyjście | Strona {PAGE}/{MAXPAGES}", + "de": "{CYCLE_BUTTON} - Durchblättern | {USE_BUTTON} - Auswählen | {EXIT_BUTTON} - Beenden | Seite {PAGE}/{MAXPAGES}" + }, + "menu.screen.footer": { + "en": "{CYCLE_BUTTON} - Cycle | {USE_BUTTON} - Select\nPage {PAGE}/{MAXPAGES}", + "ro": "{CYCLE_BUTTON} - Schimbă | {USE_BUTTON} - Selectează\nPagina {PAGE}/{MAXPAGES}", + "pl": "{CYCLE_BUTTON} - Przeglądaj | {USE_BUTTON} - Wybierz\nStrona {PAGE}/{MAXPAGES}", + "de": "{CYCLE_BUTTON} - Durchblättern | {USE_BUTTON} - Auswählen\nSeite {PAGE}/{MAXPAGES}" + }, + "menu.screen.footer.nooption": { + "en": "{CYCLE_BUTTON} - Cycle | {USE_BUTTON} - Select\n{EXIT_BUTTON} - Exit | Page {PAGE}/{MAXPAGES}", + "ro": "{CYCLE_BUTTON} - Schimbă | {USE_BUTTON} - Selectează\n{EXIT_BUTTON} - Ieșire | Pagina {PAGE}/{MAXPAGES}", + "pl": "{CYCLE_BUTTON} - Przeglądaj | {USE_BUTTON} - Wybierz\n{EXIT_BUTTON} - Wyjście | Strona {PAGE}/{MAXPAGES}", + "de": "{CYCLE_BUTTON} - Durchblättern | {USE_BUTTON} - Auswählen\n{EXIT_BUTTON} - Beenden | Seite {PAGE}/{MAXPAGES}" + } +} \ No newline at end of file diff --git a/protobufs/cs2/clientmessages.proto b/protobufs/cs2/clientmessages.proto new file mode 100644 index 000000000..484ae5744 --- /dev/null +++ b/protobufs/cs2/clientmessages.proto @@ -0,0 +1,53 @@ +enum EBaseClientMessages { + CM_CustomGameEvent = 280; + CM_CustomGameEventBounce = 281; + CM_ClientUIEvent = 282; + CM_DevPaletteVisibilityChanged = 283; + CM_WorldUIControllerHasPanelChanged = 284; + CM_RotateAnchor = 285; + CM_ListenForResponseFound = 286; + CM_MAX_BASE = 300; +} + +enum EClientUIEvent { + EClientUIEvent_Invalid = 0; + EClientUIEvent_DialogFinished = 1; + EClientUIEvent_FireOutput = 2; +} + +message CClientMsg_CustomGameEvent { + optional string event_name = 1; + optional bytes data = 2; +} + +message CClientMsg_CustomGameEventBounce { + optional string event_name = 1; + optional bytes data = 2; + optional int32 player_slot = 3 [default = -1]; +} + +message CClientMsg_ClientUIEvent { + optional .EClientUIEvent event = 1 [default = EClientUIEvent_Invalid]; + optional uint32 ent_ehandle = 2; + optional uint32 client_ehandle = 3; + optional string data1 = 4; + optional string data2 = 5; +} + +message CClientMsg_DevPaletteVisibilityChangedEvent { + optional bool visible = 1; +} + +message CClientMsg_WorldUIControllerHasPanelChangedEvent { + optional bool has_panel = 1; + optional uint32 client_ehandle = 2; + optional uint32 literal_hand_type = 3; +} + +message CClientMsg_RotateAnchor { + optional float angle = 1; +} + +message CClientMsg_ListenForResponseFound { + optional int32 player_slot = 1 [default = -1]; +} diff --git a/protobufs/cs2/cs_gameevents.proto b/protobufs/cs2/cs_gameevents.proto new file mode 100644 index 000000000..eb6a8feb9 --- /dev/null +++ b/protobufs/cs2/cs_gameevents.proto @@ -0,0 +1,35 @@ +import "networkbasetypes.proto"; + +enum ECsgoGameEvents { + GE_PlayerAnimEventId = 450; + GE_RadioIconEventId = 451; + GE_FireBulletsId = 452; +} + +message CMsgTEPlayerAnimEvent { + optional fixed32 player = 1 [default = 16777215]; + optional uint32 event = 2; + optional int32 data = 3; +} + +message CMsgTERadioIcon { + optional fixed32 player = 1 [default = 16777215]; +} + +message CMsgTEFireBullets { + optional .CMsgVector origin = 1; + optional .CMsgQAngle angles = 2; + optional uint32 weapon_id = 3 [default = 16777215]; + optional uint32 mode = 4; + optional uint32 seed = 5; + optional fixed32 player = 6 [default = 16777215]; + optional float inaccuracy = 7; + optional float recoil_index = 8; + optional float spread = 9; + optional int32 sound_type = 10; + optional uint32 item_def_index = 11; + optional fixed32 sound_dsp_effect = 12; + optional .CMsgVector ent_origin = 13; + optional uint32 num_bullets_remaining = 14; + optional uint32 attack_type = 15; +} diff --git a/protobufs/cs2/cs_usercmd.proto b/protobufs/cs2/cs_usercmd.proto new file mode 100644 index 000000000..87dd3ad3d --- /dev/null +++ b/protobufs/cs2/cs_usercmd.proto @@ -0,0 +1,42 @@ +import "networkbasetypes.proto"; +import "usercmd.proto"; + +message CSGOInterpolationInfoPB { + optional int32 src_tick = 1 [default = -1]; + optional int32 dst_tick = 2 [default = -1]; + optional float frac = 3 [default = 0]; +} + +message CSGOInterpolationInfoPB_CL { + optional float frac = 3 [default = 0]; +} + +message CSGOInputHistoryEntryPB { + optional .CMsgQAngle view_angles = 2; + optional int32 render_tick_count = 4; + optional float render_tick_fraction = 5; + optional int32 player_tick_count = 6; + optional float player_tick_fraction = 7; + optional .CSGOInterpolationInfoPB_CL cl_interp = 12; + optional .CSGOInterpolationInfoPB sv_interp0 = 13; + optional .CSGOInterpolationInfoPB sv_interp1 = 14; + optional .CSGOInterpolationInfoPB player_interp = 15; + optional int32 frame_number = 64; + optional int32 target_ent_index = 65 [default = -1]; + optional .CMsgVector shoot_position = 66; + optional .CMsgVector target_head_pos_check = 67; + optional .CMsgVector target_abs_pos_check = 68; + optional .CMsgQAngle target_abs_ang_check = 69; +} + +message CSGOUserCmdPB { + optional .CBaseUserCmdPB base = 1; + repeated .CSGOInputHistoryEntryPB input_history = 2; + optional int32 attack1_start_history_index = 6 [default = -1]; + optional int32 attack2_start_history_index = 7 [default = -1]; + optional int32 attack3_start_history_index = 8 [default = -1]; + optional bool left_hand_desired = 9 [default = false]; + optional bool is_predicting_body_shot_fx = 11 [default = false]; + optional bool is_predicting_head_shot_fx = 12 [default = false]; + optional bool is_predicting_kill_ragdolls = 13 [default = false]; +} diff --git a/protobufs/cs2/cstrike15_gcmessages.proto b/protobufs/cs2/cstrike15_gcmessages.proto new file mode 100644 index 000000000..485974efd --- /dev/null +++ b/protobufs/cs2/cstrike15_gcmessages.proto @@ -0,0 +1,1505 @@ +import "steammessages.proto"; +import "engine_gcmessages.proto"; +import "gcsdk_gcmessages.proto"; + +enum ECsgoGCMsg { + k_EMsgGCCStrike15_v2_Base = 9100; + k_EMsgGCCStrike15_v2_MatchmakingStart = 9101; + k_EMsgGCCStrike15_v2_MatchmakingStop = 9102; + k_EMsgGCCStrike15_v2_MatchmakingClient2ServerPing = 9103; + k_EMsgGCCStrike15_v2_MatchmakingGC2ClientUpdate = 9104; + k_EMsgGCCStrike15_v2_MatchmakingServerReservationResponse = 9106; + k_EMsgGCCStrike15_v2_MatchmakingGC2ClientReserve = 9107; + k_EMsgGCCStrike15_v2_MatchmakingClient2GCHello = 9109; + k_EMsgGCCStrike15_v2_MatchmakingGC2ClientHello = 9110; + k_EMsgGCCStrike15_v2_MatchmakingGC2ClientAbandon = 9112; + k_EMsgGCCStrike15_v2_MatchmakingOperator2GCBlogUpdate = 9117; + k_EMsgGCCStrike15_v2_ServerNotificationForUserPenalty = 9118; + k_EMsgGCCStrike15_v2_ClientReportPlayer = 9119; + k_EMsgGCCStrike15_v2_ClientReportServer = 9120; + k_EMsgGCCStrike15_v2_ClientCommendPlayer = 9121; + k_EMsgGCCStrike15_v2_ClientReportResponse = 9122; + k_EMsgGCCStrike15_v2_ClientCommendPlayerQuery = 9123; + k_EMsgGCCStrike15_v2_ClientCommendPlayerQueryResponse = 9124; + k_EMsgGCCStrike15_v2_WatchInfoUsers = 9126; + k_EMsgGCCStrike15_v2_ClientRequestPlayersProfile = 9127; + k_EMsgGCCStrike15_v2_PlayersProfile = 9128; + k_EMsgGCCStrike15_v2_PlayerOverwatchCaseUpdate = 9131; + k_EMsgGCCStrike15_v2_PlayerOverwatchCaseAssignment = 9132; + k_EMsgGCCStrike15_v2_PlayerOverwatchCaseStatus = 9133; + k_EMsgGCCStrike15_v2_GC2ClientTextMsg = 9134; + k_EMsgGCCStrike15_v2_Client2GCTextMsg = 9135; + k_EMsgGCCStrike15_v2_MatchEndRunRewardDrops = 9136; + k_EMsgGCCStrike15_v2_MatchEndRewardDropsNotification = 9137; + k_EMsgGCCStrike15_v2_ClientRequestWatchInfoFriends2 = 9138; + k_EMsgGCCStrike15_v2_MatchList = 9139; + k_EMsgGCCStrike15_v2_MatchListRequestCurrentLiveGames = 9140; + k_EMsgGCCStrike15_v2_MatchListRequestRecentUserGames = 9141; + k_EMsgGCCStrike15_v2_GC2ServerReservationUpdate = 9142; + k_EMsgGCCStrike15_v2_ClientVarValueNotificationInfo = 9144; + k_EMsgGCCStrike15_v2_MatchListRequestTournamentGames = 9146; + k_EMsgGCCStrike15_v2_MatchListRequestFullGameInfo = 9147; + k_EMsgGCCStrike15_v2_GiftsLeaderboardRequest = 9148; + k_EMsgGCCStrike15_v2_GiftsLeaderboardResponse = 9149; + k_EMsgGCCStrike15_v2_ServerVarValueNotificationInfo = 9150; + k_EMsgGCCStrike15_v2_ClientSubmitSurveyVote = 9152; + k_EMsgGCCStrike15_v2_Server2GCClientValidate = 9153; + k_EMsgGCCStrike15_v2_MatchListRequestLiveGameForUser = 9154; + k_EMsgGCCStrike15_v2_Client2GCEconPreviewDataBlockRequest = 9156; + k_EMsgGCCStrike15_v2_Client2GCEconPreviewDataBlockResponse = 9157; + k_EMsgGCCStrike15_v2_AccountPrivacySettings = 9158; + k_EMsgGCCStrike15_v2_SetMyActivityInfo = 9159; + k_EMsgGCCStrike15_v2_MatchListRequestTournamentPredictions = 9160; + k_EMsgGCCStrike15_v2_MatchListUploadTournamentPredictions = 9161; + k_EMsgGCCStrike15_v2_DraftSummary = 9162; + k_EMsgGCCStrike15_v2_ClientRequestJoinFriendData = 9163; + k_EMsgGCCStrike15_v2_ClientRequestJoinServerData = 9164; + k_EMsgGCCStrike15_v2_ClientRequestNewMission = 9165; + k_EMsgGCCStrike15_v2_GC2ClientTournamentInfo = 9167; + k_EMsgGC_GlobalGame_Subscribe = 9168; + k_EMsgGC_GlobalGame_Unsubscribe = 9169; + k_EMsgGC_GlobalGame_Play = 9170; + k_EMsgGCCStrike15_v2_AcknowledgePenalty = 9171; + k_EMsgGCCStrike15_v2_Client2GCRequestPrestigeCoin = 9172; + k_EMsgGCCStrike15_v2_GC2ClientGlobalStats = 9173; + k_EMsgGCCStrike15_v2_Client2GCStreamUnlock = 9174; + k_EMsgGCCStrike15_v2_FantasyRequestClientData = 9175; + k_EMsgGCCStrike15_v2_FantasyUpdateClientData = 9176; + k_EMsgGCCStrike15_v2_GCToClientSteamdatagramTicket = 9177; + k_EMsgGCCStrike15_v2_ClientToGCRequestTicket = 9178; + k_EMsgGCCStrike15_v2_ClientToGCRequestElevate = 9179; + k_EMsgGCCStrike15_v2_GlobalChat = 9180; + k_EMsgGCCStrike15_v2_GlobalChat_Subscribe = 9181; + k_EMsgGCCStrike15_v2_GlobalChat_Unsubscribe = 9182; + k_EMsgGCCStrike15_v2_ClientAuthKeyCode = 9183; + k_EMsgGCCStrike15_v2_GotvSyncPacket = 9184; + k_EMsgGCCStrike15_v2_ClientPlayerDecalSign = 9185; + k_EMsgGCCStrike15_v2_ClientLogonFatalError = 9187; + k_EMsgGCCStrike15_v2_ClientPollState = 9188; + k_EMsgGCCStrike15_v2_Party_Register = 9189; + k_EMsgGCCStrike15_v2_Party_Unregister = 9190; + k_EMsgGCCStrike15_v2_Party_Search = 9191; + k_EMsgGCCStrike15_v2_Party_Invite = 9192; + k_EMsgGCCStrike15_v2_Account_RequestCoPlays = 9193; + k_EMsgGCCStrike15_v2_ClientGCRankUpdate = 9194; + k_EMsgGCCStrike15_v2_ClientRequestOffers = 9195; + k_EMsgGCCStrike15_v2_ClientAccountBalance = 9196; + k_EMsgGCCStrike15_v2_ClientPartyJoinRelay = 9197; + k_EMsgGCCStrike15_v2_ClientPartyWarning = 9198; + k_EMsgGCCStrike15_v2_SetEventFavorite = 9200; + k_EMsgGCCStrike15_v2_GetEventFavorites_Request = 9201; + k_EMsgGCCStrike15_v2_ClientPerfReport = 9202; + k_EMsgGCCStrike15_v2_GetEventFavorites_Response = 9203; + k_EMsgGCCStrike15_v2_ClientRequestSouvenir = 9204; + k_EMsgGCCStrike15_v2_ClientReportValidation = 9205; + k_EMsgGCCStrike15_v2_GC2ClientRefuseSecureMode = 9206; + k_EMsgGCCStrike15_v2_GC2ClientRequestValidation = 9207; + k_EMsgGCCStrike15_v2_ClientRedeemMissionReward = 9209; + k_EMsgGCCStrike15_ClientDeepStats = 9210; + k_EMsgGCCStrike15_StartAgreementSessionInGame = 9211; + k_EMsgGCCStrike15_v2_GC2ClientInitSystem = 9212; + k_EMsgGCCStrike15_v2_GC2ClientInitSystem_Response = 9213; + k_EMsgGCCStrike15_v2_PrivateQueues = 9214; + k_EMsgGCCStrike15_v2_MatchListTournamentOperatorMgmt = 9215; + k_EMsgGCCStrike15_v2_BetaEnrollment = 9217; + k_EMsgGCCStrike15_v2_SetPlayerLeaderboardSafeName = 9218; + k_EMsgGCCStrike15_v2_ClientRedeemFreeReward = 9219; + k_EMsgGCCStrike15_v2_ClientNetworkConfig = 9220; + k_EMsgGCCStrike15_v2_GC2ClientNotifyXPShop = 9221; + k_EMsgGCCStrike15_v2_Client2GcAckXPShopTracks = 9222; + k_EMsgGCCStrike15_v2_MatchmakingGC2ClientSearchStats = 9223; + k_EMsgGCCStrike15_v2_PremierSeasonSummary = 9224; +} + +enum ECsgoSteamUserStat { + k_ECsgoSteamUserStat_XpEarnedGames = 1; + k_ECsgoSteamUserStat_MatchWinsCompetitive = 2; + k_ECsgoSteamUserStat_SurvivedDangerZone = 3; +} + +enum EClientReportingVersion { + k_EClientReportingVersion_OldVersion = 0; + k_EClientReportingVersion_BetaVersion = 1; + k_EClientReportingVersion_SupportsTrustedMode = 2; +} + +enum EInitSystemResult { + k_EInitSystemResult_Invalid = 0; + k_EInitSystemResult_Success = 1; + k_EInitSystemResult_None = 2; + k_EInitSystemResult_NotFound = 3; + k_EInitSystemResult_Existing = 4; + k_EInitSystemResult_FailedOpen = 5; + k_EInitSystemResult_Mismatch = 6; + k_EInitSystemResult_FailedInit = 7; + k_EInitSystemResult_Max = 8; +} + +message GameServerPing { + optional int32 ping = 2; + optional uint32 ip = 3; + optional uint32 instances = 5; +} + +message DataCenterPing { + optional fixed32 data_center_id = 1; + optional sint32 ping = 2; +} + +message DetailedSearchStatistic { + optional uint32 game_type = 1; + optional uint32 search_time_avg = 2; + optional uint32 players_searching = 4; +} + +message TournamentPlayer { + optional uint32 account_id = 1; + optional string player_nick = 2; + optional string player_name = 3; + optional uint32 player_dob = 4; + optional string player_flag = 5; + optional string player_location = 6; + optional string player_desc = 7; +} + +message TournamentTeam { + optional int32 team_id = 1; + optional string team_tag = 2; + optional string team_flag = 3; + optional string team_name = 4; + repeated .TournamentPlayer players = 5; +} + +message TournamentEvent { + optional int32 event_id = 1; + optional string event_tag = 2; + optional string event_name = 3; + optional uint32 event_time_start = 4; + optional uint32 event_time_end = 5; + optional int32 event_public = 6; + optional int32 event_stage_id = 7; + optional string event_stage_name = 8; + optional uint32 active_section_id = 9; +} + +message GlobalStatistics { + optional uint32 players_online = 1; + optional uint32 servers_online = 2; + optional uint32 players_searching = 3; + optional uint32 servers_available = 4; + optional uint32 ongoing_matches = 5; + optional uint32 search_time_avg = 6; + repeated .DetailedSearchStatistic search_statistics = 7; + optional string main_post_url = 8; + optional uint32 required_appid_version = 9; + optional uint32 pricesheet_version = 10; + optional uint32 twitch_streams_version = 11; + optional uint32 active_tournament_eventid = 12; + optional uint32 active_survey_id = 13; + optional uint32 rtime32_cur = 14; + optional uint32 rtime32_event_start = 15; + optional uint32 required_appid_version2 = 16; +} + +message OperationalStatisticDescription { + optional string name = 1; + optional uint32 idkey = 2; +} + +message OperationalStatisticElement { + optional uint32 idkey = 1; + repeated int32 values = 2; +} + +message OperationalStatisticsPacket { + optional int32 packetid = 1; + optional int32 mstimestamp = 2; + repeated .OperationalStatisticElement values = 3; +} + +message OperationalVarValue { + optional string name = 1; + optional int32 ivalue = 2; + optional float fvalue = 3; + optional bytes svalue = 4; +} + +message PlayerRankingInfo { + message PerMapRank { + optional uint32 map_id = 1; + optional uint32 rank_id = 2; + optional uint32 wins = 3; + } + + optional uint32 account_id = 1; + optional uint32 rank_id = 2; + optional uint32 wins = 3; + optional float rank_change = 4; + optional uint32 rank_type_id = 6; + optional uint32 tv_control = 7; + optional uint64 rank_window_stats = 8; + optional string leaderboard_name = 9; + optional uint32 rank_if_win = 10; + optional uint32 rank_if_lose = 11; + optional uint32 rank_if_tie = 12; + repeated .PlayerRankingInfo.PerMapRank per_map_rank = 13; + optional uint32 leaderboard_name_status = 14; + optional uint32 highest_rank = 15; + optional uint32 rank_expiry = 16; +} + +message PlayerCommendationInfo { + optional uint32 cmd_friendly = 1; + optional uint32 cmd_teaching = 2; + optional uint32 cmd_leader = 4; +} + +message PlayerMedalsInfo { + repeated uint32 display_items_defidx = 7; + optional uint32 featured_display_item_defidx = 8; +} + +message AccountActivity { + optional uint32 activity = 1; + optional uint32 mode = 2; + optional uint32 map = 3; + optional uint64 matchid = 4; +} + +message TournamentMatchSetup { + optional int32 event_id = 1; + optional int32 team_id_ct = 2; + optional int32 team_id_t = 3; + optional int32 event_stage_id = 4; +} + +message ServerHltvInfo { + optional uint32 tv_udp_port = 1; + optional uint64 tv_watch_key = 2; + optional uint32 tv_slots = 3; + optional uint32 tv_clients = 4; + optional uint32 tv_proxies = 5; + optional uint32 tv_time = 6; + optional uint32 game_type = 8; + optional string game_mapgroup = 9; + optional string game_map = 10; + optional uint64 tv_master_steamid = 11; + optional uint32 tv_local_slots = 12; + optional uint32 tv_local_clients = 13; + optional uint32 tv_local_proxies = 14; + optional uint32 tv_relay_slots = 15; + optional uint32 tv_relay_clients = 16; + optional uint32 tv_relay_proxies = 17; + optional uint32 tv_relay_address = 18; + optional uint32 tv_relay_port = 19; + optional uint64 tv_relay_steamid = 20; + optional uint32 flags = 21; +} + +message IpAddressMask { + optional uint32 a = 1; + optional uint32 b = 2; + optional uint32 c = 3; + optional uint32 d = 4; + optional uint32 bits = 5; + optional uint32 token = 6; +} + +message CMsgCsgoSteamUserStatChange { + optional int32 ecsgosteamuserstat = 1; + optional int32 delta = 2; + optional bool absolute = 3; +} + +message XpProgressData { + optional uint32 xp_points = 1; + optional int32 xp_category = 2; +} + +message MatchEndItemUpdates { + optional uint64 item_id = 1; + optional uint32 item_attr_defidx = 2; + optional uint32 item_attr_delta_value = 3; +} + +message ScoreLeaderboardData { + message Entry { + optional uint32 tag = 1; + optional uint32 val = 2; + } + + message AccountEntries { + optional uint32 accountid = 1; + repeated .ScoreLeaderboardData.Entry entries = 2; + } + + optional uint64 quest_id = 1; + optional uint32 score = 2; + repeated .ScoreLeaderboardData.AccountEntries accountentries = 3; + repeated .ScoreLeaderboardData.Entry matchentries = 5; + optional string leaderboard_name = 6; +} + +message PlayerQuestData { + message QuestItemData { + optional uint64 quest_id = 1; + optional int32 quest_normal_points_earned = 2; + optional int32 quest_bonus_points_earned = 3; + } + + optional uint32 quester_account_id = 1; + repeated .PlayerQuestData.QuestItemData quest_item_data = 2; + repeated .XpProgressData xp_progress_data = 3; + optional uint32 time_played = 4; + optional uint32 mm_game_mode = 5; + repeated .MatchEndItemUpdates item_updates = 6; + optional bool operation_points_eligible = 7; + repeated .CMsgCsgoSteamUserStatChange userstatchanges = 8; +} + +message DeepPlayerStatsEntry { + optional uint32 accountid = 1; + optional uint64 match_id = 2; + optional uint32 mm_game_mode = 3; + optional uint32 mapid = 4; + optional bool b_starting_ct = 5; + optional uint32 match_outcome = 6; + optional uint32 rounds_won = 7; + optional uint32 rounds_lost = 8; + optional uint32 stat_score = 9; + optional uint32 stat_deaths = 12; + optional uint32 stat_mvps = 13; + optional uint32 enemy_kills = 14; + optional uint32 enemy_headshots = 15; + optional uint32 enemy_2ks = 16; + optional uint32 enemy_3ks = 17; + optional uint32 enemy_4ks = 18; + optional uint32 total_damage = 19; + optional uint32 engagements_entry_count = 23; + optional uint32 engagements_entry_wins = 24; + optional uint32 engagements_1v1_count = 25; + optional uint32 engagements_1v1_wins = 26; + optional uint32 engagements_1v2_count = 27; + optional uint32 engagements_1v2_wins = 28; + optional uint32 utility_count = 29; + optional uint32 utility_success = 30; + optional uint32 flash_count = 32; + optional uint32 flash_success = 33; + repeated uint32 mates = 34; +} + +message DeepPlayerMatchEvent { + optional uint32 accountid = 1; + optional uint64 match_id = 2; + optional uint32 event_id = 3; + optional uint32 event_type = 4; + optional bool b_playing_ct = 5; + optional int32 user_pos_x = 6; + optional int32 user_pos_y = 7; + optional int32 user_pos_z = 12; + optional uint32 user_defidx = 8; + optional int32 other_pos_x = 9; + optional int32 other_pos_y = 10; + optional int32 other_pos_z = 13; + optional uint32 other_defidx = 11; + optional int32 event_data = 14; +} + +message CMsgGC_ServerQuestUpdateData { + repeated .PlayerQuestData player_quest_data = 1; + optional bytes binary_data = 2; + optional uint32 mm_game_mode = 3; + optional .ScoreLeaderboardData missionlbsdata = 4; + optional uint32 flags = 5; +} + +message CMsgGCCStrike15_v2_MatchmakingGC2ServerConfirm { + optional uint32 token = 1; + optional uint32 stamp = 2; + optional uint64 exchange = 3; + optional uint32 retry = 4; +} + +message CMsgGCCStrike15_v2_GC2ServerReservationUpdate { + optional uint32 viewers_external_total = 1; + optional uint32 viewers_external_steam = 2; +} + +message CMsgGCCStrike15_v2_MatchmakingStart { + repeated uint32 account_ids = 1; + optional uint32 game_type = 2; + optional string ticket_data = 3; + optional uint32 client_version = 4; + optional .TournamentMatchSetup tournament_match = 5; + optional bool prime_only = 6; + optional uint32 tv_control = 7; + optional uint64 lobby_id = 8; +} + +message CMsgGCCStrike15_v2_MatchmakingStop { + optional int32 abandon = 1; +} + +message CMsgGCCStrike15_v2_MatchmakingGC2ClientUpdate_Note { + optional int32 type = 1; + optional int32 region_id = 2; + optional float region_r = 3; + optional float distance = 4; +} + +message CMsgGCCStrike15_v2_MatchmakingClient2ServerPing { + repeated .GameServerPing gameserverpings = 1; + optional int32 offset_index = 2; + optional int32 final_batch = 3; + repeated .DataCenterPing data_center_pings = 4; + optional uint32 max_ping = 5; + optional fixed32 test_token = 6; + optional bytes search_key = 7; + repeated .CMsgGCCStrike15_v2_MatchmakingGC2ClientUpdate_Note notes = 8; + optional string debug_message = 9; +} + +message CMsgGCCStrike15_v2_MatchmakingGC2ClientUpdate { + optional int32 matchmaking = 1; + repeated uint32 waiting_account_id_sessions = 2; + optional string error = 3; + repeated uint32 ongoingmatch_account_id_sessions = 6; + optional .GlobalStatistics global_stats = 7; + repeated uint32 failping_account_id_sessions = 8; + repeated uint32 penalty_account_id_sessions = 9; + repeated uint32 failready_account_id_sessions = 10; + repeated uint32 vacbanned_account_id_sessions = 11; + optional .IpAddressMask server_ipaddress_mask = 12; + repeated .CMsgGCCStrike15_v2_MatchmakingGC2ClientUpdate_Note notes = 13; + repeated uint32 penalty_account_id_sessions_green = 14; + repeated uint32 insufficientlevel_sessions = 15; + repeated uint32 vsncheck_account_id_sessions = 16; + repeated uint32 launcher_mismatch_sessions = 17; + repeated uint32 insecure_account_id_sessions = 18; +} + +message CDataGCCStrike15_v2_TournamentMatchDraft { + message Entry { + optional int32 mapid = 1; + optional int32 team_id_ct = 2; + } + + optional int32 event_id = 1; + optional int32 event_stage_id = 2; + optional int32 team_id_0 = 3; + optional int32 team_id_1 = 4; + optional int32 maps_count = 5; + optional int32 maps_current = 6; + optional int32 team_id_start = 7; + optional int32 team_id_veto1 = 8; + optional int32 team_id_pickn = 9; + repeated .CDataGCCStrike15_v2_TournamentMatchDraft.Entry drafts = 10; + repeated int32 vote_mapid_0 = 11; + repeated int32 vote_mapid_1 = 12; + repeated int32 vote_mapid_2 = 13; + repeated int32 vote_mapid_3 = 14; + repeated int32 vote_mapid_4 = 15; + repeated int32 vote_mapid_5 = 16; + repeated int32 vote_starting_side = 17; + optional int32 vote_phase = 18; + optional float vote_phase_start = 19; + optional float vote_phase_length = 20; +} + +message CPreMatchInfoData { + message TeamStats { + optional int32 match_info_idxtxt = 1; + optional string match_info_txt = 2; + repeated string match_info_teams = 3; + } + + optional int32 predictions_pct = 1; + optional .CDataGCCStrike15_v2_TournamentMatchDraft draft = 4; + repeated .CPreMatchInfoData.TeamStats stats = 5; + repeated int32 wins = 6; +} + +message CMsgGCCStrike15_v2_MatchmakingGC2ServerReserve { + repeated uint32 account_ids = 1; + optional uint32 game_type = 2; + optional uint64 match_id = 3; + optional uint32 server_version = 4; + optional uint32 flags = 18; + repeated .PlayerRankingInfo rankings = 5; + optional uint64 encryption_key = 6; + optional uint64 encryption_key_pub = 7; + repeated uint32 party_ids = 8; + repeated .IpAddressMask whitelist = 9; + optional uint64 tv_master_steamid = 10; + optional .TournamentEvent tournament_event = 11; + repeated .TournamentTeam tournament_teams = 12; + repeated uint32 tournament_casters_account_ids = 13; + optional uint64 tv_relay_steamid = 14; + optional .CPreMatchInfoData pre_match_data = 15; + optional uint32 rtime32_event_start = 16; + optional uint32 tv_control = 17; + repeated .OperationalVarValue op_var_values = 19; + optional uint32 socache_control = 20; + repeated int32 teammate_colors = 21; +} + +message CMsgGCCStrike15_v2_MatchmakingServerReservationResponse { + optional uint64 reservationid = 1; + optional .CMsgGCCStrike15_v2_MatchmakingGC2ServerReserve reservation = 2; + optional string map = 3; + optional uint64 gc_reservation_sent = 4; + optional uint32 server_version = 5; + optional .ServerHltvInfo tv_info = 6; + repeated uint32 reward_player_accounts = 7; + repeated uint32 idle_player_accounts = 8; + optional uint32 reward_item_attr_def_idx = 9; + optional uint32 reward_item_attr_value = 10; + optional uint32 reward_item_attr_reward_idx = 11; + optional uint32 reward_drop_list = 12; + optional string tournament_tag = 13; + optional uint32 legacy_steamdatagram_port = 14; + optional uint32 steamdatagram_routing = 17; + optional fixed32 test_token = 15; + optional uint32 flags = 16; + optional uint32 system_load = 18; + optional uint32 cpus_online = 19; +} + +message CMsgGCCStrike15_v2_MatchmakingGC2ClientReserve { + optional uint64 serverid = 1; + optional uint32 direct_udp_ip = 2; + optional uint32 direct_udp_port = 3; + optional uint64 reservationid = 4; + optional .CMsgGCCStrike15_v2_MatchmakingGC2ServerReserve reservation = 5; + optional string map = 6; + optional string server_address = 7; + optional .DataCenterPing gs_ping = 8; + optional uint32 gs_location_id = 9; +} + +message CMsgGCCStrike15_v2_MatchmakingServerRoundStats { + message DropInfo { + optional uint32 account_mvp = 1; + } + + optional uint64 reservationid = 1; + optional .CMsgGCCStrike15_v2_MatchmakingGC2ServerReserve reservation = 2; + optional string map = 3; + optional int32 round = 4; + repeated int32 kills = 5; + repeated int32 assists = 6; + repeated int32 deaths = 7; + repeated int32 scores = 8; + repeated int32 pings = 9; + optional int32 round_result = 10; + optional int32 match_result = 11; + repeated int32 team_scores = 12; + optional .CMsgGCCStrike15_v2_MatchmakingGC2ServerConfirm confirm = 13; + optional int32 reservation_stage = 14; + optional int32 match_duration = 15; + repeated int32 enemy_kills = 16; + repeated int32 enemy_headshots = 17; + repeated int32 enemy_3ks = 18; + repeated int32 enemy_4ks = 19; + repeated int32 enemy_5ks = 20; + repeated int32 mvps = 21; + optional uint32 spectators_count = 22; + optional uint32 spectators_count_tv = 23; + optional uint32 spectators_count_lnk = 24; + repeated int32 enemy_kills_agg = 25; + optional .CMsgGCCStrike15_v2_MatchmakingServerRoundStats.DropInfo drop_info = 26; + optional bool b_switched_teams = 27; + repeated int32 enemy_2ks = 28; + repeated int32 player_spawned = 29; + repeated int32 team_spawn_count = 30; + optional uint32 max_rounds = 31; + optional int32 map_id = 32; +} + +message CMsgGCCStrike15_v2_MatchmakingClient2GCHello { +} + +message CMsgGCCStrike15_v2_MatchmakingGC2ClientHello { + optional uint32 account_id = 1; + optional .CMsgGCCStrike15_v2_MatchmakingGC2ClientReserve ongoingmatch = 2; + optional .GlobalStatistics global_stats = 3; + optional uint32 penalty_seconds = 4; + optional uint32 penalty_reason = 5; + optional int32 vac_banned = 6; + optional .PlayerRankingInfo ranking = 7; + optional .PlayerCommendationInfo commendation = 8; + optional .PlayerMedalsInfo medals = 9; + optional .TournamentEvent my_current_event = 10; + repeated .TournamentTeam my_current_event_teams = 11; + optional .TournamentTeam my_current_team = 12; + repeated .TournamentEvent my_current_event_stages = 13; + optional uint32 survey_vote = 14; + optional .AccountActivity activity = 15; + optional int32 player_level = 17; + optional int32 player_cur_xp = 18; + optional int32 player_xp_bonus_flags = 19; + repeated .PlayerRankingInfo rankings = 20; + optional uint64 owcaseid = 21; +} + +message CMsgGCCStrike15_v2_AccountPrivacySettings { + message Setting { + optional uint32 setting_type = 1; + optional uint32 setting_value = 2; + } + + repeated .CMsgGCCStrike15_v2_AccountPrivacySettings.Setting settings = 1; +} + +message CMsgGCCStrike15_v2_MatchmakingGC2ClientAbandon { + optional uint32 account_id = 1; + optional .CMsgGCCStrike15_v2_MatchmakingGC2ClientReserve abandoned_match = 2; + optional uint32 penalty_seconds = 3; + optional uint32 penalty_reason = 4; +} + +message CMsgGCCStrike15_v2_ClientGCRankUpdate { + repeated .PlayerRankingInfo rankings = 1; +} + +message CMsgGCCStrike15_v2_MatchmakingOperator2GCBlogUpdate { + optional string main_post_url = 1; +} + +message CMsgGCCStrike15_v2_ServerNotificationForUserPenalty { + optional uint32 account_id = 1; + optional uint32 reason = 2; + optional uint32 seconds = 3; + optional bool communication_cooldown = 4; +} + +message CMsgGCCStrike15_v2_ClientReportPlayer { + optional uint32 account_id = 1; + optional uint32 rpt_aimbot = 2; + optional uint32 rpt_wallhack = 3; + optional uint32 rpt_speedhack = 4; + optional uint32 rpt_teamharm = 5; + optional uint32 rpt_textabuse = 6; + optional uint32 rpt_voiceabuse = 7; + optional uint64 match_id = 8; + optional bool report_from_demo = 9; +} + +message CMsgGCCStrike15_v2_ClientCommendPlayer { + optional uint32 account_id = 1; + optional uint64 match_id = 8; + optional .PlayerCommendationInfo commendation = 9; + optional uint32 tokens = 10; +} + +message CMsgGCCStrike15_v2_ClientReportServer { + optional uint32 rpt_poorperf = 1; + optional uint32 rpt_abusivemodels = 2; + optional uint32 rpt_badmotd = 3; + optional uint32 rpt_listingabuse = 4; + optional uint32 rpt_inventoryabuse = 5; + optional uint64 match_id = 8; +} + +message CMsgGCCStrike15_v2_ClientReportResponse { + optional uint64 confirmation_id = 1; + optional uint32 account_id = 2; + optional uint32 server_ip = 3; + optional uint32 response_type = 4; + optional uint32 response_result = 5; + optional uint32 tokens = 6; +} + +message CMsgGCCStrike15_v2_ClientRequestWatchInfoFriends { + optional uint32 request_id = 1; + repeated uint32 account_ids = 2; + optional uint64 serverid = 3; + optional uint64 matchid = 4; + optional uint32 client_launcher = 5; + repeated .DataCenterPing data_center_pings = 6; +} + +message WatchableMatchInfo { + optional uint32 server_ip = 1; + optional uint32 tv_port = 2; + optional uint32 tv_spectators = 3; + optional uint32 tv_time = 4; + optional bytes tv_watch_password = 5; + optional uint64 cl_decryptdata_key = 6; + optional uint64 cl_decryptdata_key_pub = 7; + optional uint32 game_type = 8; + optional string game_mapgroup = 9; + optional string game_map = 10; + optional uint64 server_id = 11; + optional uint64 match_id = 12; + optional uint64 reservation_id = 13; +} + +message CMsgGCCStrike15_v2_ClientRequestJoinFriendData { + optional uint32 version = 1; + optional uint32 account_id = 2; + optional uint32 join_token = 3; + optional uint32 join_ipp = 4; + optional .CMsgGCCStrike15_v2_MatchmakingGC2ClientReserve res = 5; + optional string errormsg = 6; +} + +message CMsgGCCStrike15_v2_ClientRequestJoinServerData { + optional uint32 version = 1; + optional uint32 account_id = 2; + optional uint64 serverid = 3; + optional uint32 server_ip = 4; + optional uint32 server_port = 5; + optional .CMsgGCCStrike15_v2_MatchmakingGC2ClientReserve res = 6; + optional string errormsg = 7; +} + +message CMsgGCCstrike15_v2_ClientRequestNewMission { + optional uint32 mission_id = 2; + optional uint32 campaign_id = 3; +} + +message CMsgGCCstrike15_v2_ClientRedeemMissionReward { + optional uint32 campaign_id = 1; + optional uint32 redeem_id = 2; + optional uint32 redeemable_balance = 3; + optional uint32 expected_cost = 4; +} + +message CMsgGCCstrike15_v2_ClientRedeemFreeReward { + optional uint32 generation_time = 1; + optional uint32 redeemable_balance = 2; + repeated uint64 items = 3; +} + +message CMsgGCCstrike15_v2_GC2ServerNotifyXPRewarded { + repeated .XpProgressData xp_progress_data = 1; + optional uint32 account_id = 2; + optional uint32 current_xp = 3; + optional uint32 current_level = 4; + optional uint32 upgraded_defidx = 5; + optional uint32 operation_points_awarded = 6; + optional uint32 free_rewards = 7; + optional uint32 xp_trail_remaining = 8; + optional int32 xp_trail_xp_needed = 9; + optional uint32 xp_trail_level = 10; +} + +message CMsgGCCStrike15_v2_ClientNetworkConfig { + optional bytes data = 1; +} + +message CMsgGCCStrike15_ClientDeepStats { + message DeepStatsRange { + optional uint32 begin = 1; + optional uint32 end = 2; + optional bool frozen = 3; + } + + message DeepStatsMatch { + optional .DeepPlayerStatsEntry player = 1; + repeated .DeepPlayerMatchEvent events = 2; + } + + optional uint32 account_id = 1; + optional .CMsgGCCStrike15_ClientDeepStats.DeepStatsRange range = 2; + repeated .CMsgGCCStrike15_ClientDeepStats.DeepStatsMatch matches = 3; +} + +message CMsgGCCStrike15_v2_WatchInfoUsers { + optional uint32 request_id = 1; + repeated uint32 account_ids = 2; + repeated .WatchableMatchInfo watchable_match_infos = 3; + optional uint32 extended_timeout = 5; +} + +message CMsgGCCStrike15_v2_ClientRequestPlayersProfile { + optional uint32 request_id__deprecated = 1; + repeated uint32 account_ids__deprecated = 2; + optional uint32 account_id = 3; + optional uint32 request_level = 4; +} + +message CMsgGCCStrike15_v2_PlayersProfile { + optional uint32 request_id = 1; + repeated .CMsgGCCStrike15_v2_MatchmakingGC2ClientHello account_profiles = 2; +} + +message CMsgGCCStrike15_v2_PremierSeasonSummary { + message DataPerWeek { + optional uint64 week_id = 1; + optional uint32 rank_id = 2; + optional uint32 matches_played = 3; + } + + message DataPerMap { + optional uint32 map_id = 1; + optional uint32 wins = 2; + optional uint32 ties = 3; + optional uint32 losses = 4; + optional uint32 rounds = 5; + optional uint32 kills = 6; + optional uint32 headshots = 7; + optional uint32 assists = 8; + optional uint32 deaths = 9; + optional uint32 mvps = 10; + optional uint32 rounds_3k = 11; + optional uint32 rounds_4k = 12; + optional uint32 rounds_5k = 13; + } + + optional uint32 account_id = 1; + optional uint32 season_id = 2; + repeated .CMsgGCCStrike15_v2_PremierSeasonSummary.DataPerWeek data_per_week = 3; + repeated .CMsgGCCStrike15_v2_PremierSeasonSummary.DataPerMap data_per_map = 4; +} + +message CMsgGCCStrike15_v2_PlayerOverwatchCaseUpdate { + optional uint64 caseid = 1; + optional uint32 suspectid = 3; + optional uint32 fractionid = 4; + optional uint32 rpt_aimbot = 5; + optional uint32 rpt_wallhack = 6; + optional uint32 rpt_speedhack = 7; + optional uint32 rpt_teamharm = 8; + optional uint32 reason = 9; +} + +message CMsgGCCStrike15_v2_PlayerOverwatchCaseAssignment { + optional uint64 caseid = 1; + optional string caseurl = 2; + optional uint32 verdict = 3; + optional uint32 timestamp = 4; + optional uint32 throttleseconds = 5; + optional uint32 suspectid = 6; + optional uint32 fractionid = 7; + optional uint32 numrounds = 8; + optional uint32 fractionrounds = 9; + optional int32 streakconvictions = 10; + optional uint32 reason = 11; +} + +message CMsgGCCStrike15_v2_PlayerOverwatchCaseStatus { + optional uint64 caseid = 1; + optional uint32 statusid = 2; +} + +message CClientHeaderOverwatchEvidence { + optional uint32 accountid = 1; + optional uint64 caseid = 2; +} + +message CMsgGCCStrike15_v2_GC2ClientTextMsg { + optional uint32 id = 1; + optional uint32 type = 2; + optional bytes payload = 3; +} + +message CMsgGCCStrike15_v2_Client2GCTextMsg { + optional uint32 id = 1; + repeated bytes args = 2; +} + +message CMsgGCCStrike15_v2_MatchEndRunRewardDrops { + optional .CMsgGCCStrike15_v2_MatchmakingServerReservationResponse serverinfo = 3; + optional .CMsgGC_ServerQuestUpdateData match_end_quest_data = 4; +} + +message CEconItemPreviewDataBlock { + message Sticker { + optional uint32 slot = 1; + optional uint32 sticker_id = 2; + optional float wear = 3; + optional float scale = 4; + optional float rotation = 5; + optional uint32 tint_id = 6; + optional float offset_x = 7; + optional float offset_y = 8; + optional float offset_z = 9; + optional uint32 pattern = 10; + } + + optional uint32 accountid = 1; + optional uint64 itemid = 2; + optional uint32 defindex = 3; + optional uint32 paintindex = 4; + optional uint32 rarity = 5; + optional uint32 quality = 6; + optional uint32 paintwear = 7; + optional uint32 paintseed = 8; + optional uint32 killeaterscoretype = 9; + optional uint32 killeatervalue = 10; + optional string customname = 11; + repeated .CEconItemPreviewDataBlock.Sticker stickers = 12; + optional uint32 inventory = 13; + optional uint32 origin = 14; + optional uint32 questid = 15; + optional uint32 dropreason = 16; + optional uint32 musicindex = 17; + optional int32 entindex = 18; + optional uint32 petindex = 19; + repeated .CEconItemPreviewDataBlock.Sticker keychains = 20; +} + +message CMsgGCCStrike15_v2_MatchEndRewardDropsNotification { + optional .CEconItemPreviewDataBlock iteminfo = 6; +} + +message CMsgItemAcknowledged { + optional .CEconItemPreviewDataBlock iteminfo = 1; +} + +message CMsgGCCStrike15_v2_Client2GCEconPreviewDataBlockRequest { + optional uint64 param_s = 1; + optional uint64 param_a = 2; + optional uint64 param_d = 3; + optional uint64 param_m = 4; +} + +message CMsgGCCStrike15_v2_Client2GCEconPreviewDataBlockResponse { + optional .CEconItemPreviewDataBlock iteminfo = 1; +} + +message CMsgGCCStrike15_v2_MatchListRequestCurrentLiveGames { +} + +message CMsgGCCStrike15_v2_MatchListRequestLiveGameForUser { + optional uint32 accountid = 1; +} + +message CMsgGCCStrike15_v2_MatchListRequestRecentUserGames { + optional uint32 accountid = 1; +} + +message CMsgGCCStrike15_v2_MatchListRequestTournamentGames { + optional int32 eventid = 1; +} + +message CMsgGCCStrike15_v2_MatchListRequestFullGameInfo { + optional uint64 matchid = 1; + optional uint64 outcomeid = 2; + optional uint32 token = 3; +} + +message CDataGCCStrike15_v2_MatchInfo { + optional uint64 matchid = 1; + optional uint32 matchtime = 2; + optional .WatchableMatchInfo watchablematchinfo = 3; + optional .CMsgGCCStrike15_v2_MatchmakingServerRoundStats roundstats_legacy = 4; + repeated .CMsgGCCStrike15_v2_MatchmakingServerRoundStats roundstatsall = 5; +} + +message CDataGCCStrike15_v2_TournamentGroupTeam { + optional int32 team_id = 1; + optional int32 score = 2; + optional bool correctpick = 3; +} + +message CDataGCCStrike15_v2_TournamentGroup { + message Picks { + repeated int32 pickids = 1; + } + + optional uint32 groupid = 1; + optional string name = 2; + optional string desc = 3; + optional uint32 picks__deprecated = 4; + repeated .CDataGCCStrike15_v2_TournamentGroupTeam teams = 5; + repeated int32 stage_ids = 6; + optional uint32 picklockuntiltime = 7; + optional uint32 pickableteams = 8; + optional uint32 points_per_pick = 9; + repeated .CDataGCCStrike15_v2_TournamentGroup.Picks picks = 10; +} + +message CDataGCCStrike15_v2_TournamentSection { + optional uint32 sectionid = 1; + optional string name = 2; + optional string desc = 3; + repeated .CDataGCCStrike15_v2_TournamentGroup groups = 4; +} + +message CDataGCCStrike15_v2_TournamentInfo { + repeated .CDataGCCStrike15_v2_TournamentSection sections = 1; + optional .TournamentEvent tournament_event = 2; + repeated .TournamentTeam tournament_teams = 3; +} + +message CMsgGCCStrike15_v2_MatchList { + optional uint32 msgrequestid = 1; + optional uint32 accountid = 2; + optional uint32 servertime = 3; + repeated .CDataGCCStrike15_v2_MatchInfo matches = 4; + repeated .TournamentTeam streams = 5; + optional .CDataGCCStrike15_v2_TournamentInfo tournamentinfo = 6; +} + +message CMsgGCCStrike15_v2_MatchListTournamentOperatorMgmt { + optional int32 eventid = 1; + repeated .CDataGCCStrike15_v2_MatchInfo matches = 2; + optional uint32 accountid = 3; +} + +message CMsgGCCStrike15_v2_Predictions { + message GroupMatchTeamPick { + optional int32 sectionid = 1; + optional int32 groupid = 2; + optional int32 index = 3; + optional int32 teamid = 4; + optional uint64 itemid = 5; + } + + optional uint32 event_id = 1; + repeated .CMsgGCCStrike15_v2_Predictions.GroupMatchTeamPick group_match_team_picks = 2; +} + +message CMsgGCCStrike15_v2_Fantasy { + message FantasySlot { + optional int32 type = 1; + optional int32 pick = 2; + optional uint64 itemid = 3; + } + + message FantasyTeam { + optional int32 sectionid = 1; + repeated .CMsgGCCStrike15_v2_Fantasy.FantasySlot slots = 2; + } + + optional uint32 event_id = 1; + repeated .CMsgGCCStrike15_v2_Fantasy.FantasyTeam teams = 2; +} + +message CAttribute_String { + optional string value = 1; +} + +message CMsgLegacySource1ClientWelcome { + message Location { + optional float latitude = 1; + optional float longitude = 2; + optional string country = 3; + } + + optional uint32 version = 1; + optional bytes game_data = 2; + repeated .CMsgSOCacheSubscribed outofdate_subscribed_caches = 3; + repeated .CMsgSOCacheSubscriptionCheck uptodate_subscribed_caches = 4; + optional .CMsgLegacySource1ClientWelcome.Location location = 5; + optional bytes game_data2 = 6; + optional uint32 rtime32_gc_welcome_timestamp = 7; + optional uint32 currency = 8; + optional uint32 balance = 9; + optional string balance_url = 10; + optional string txn_country_code = 11; +} + +message CMsgCStrike15Welcome { + optional uint32 store_item_hash = 5; + optional uint32 timeplayedconsecutively = 6; + optional uint32 time_first_played = 10; + optional uint32 last_time_played = 12; + optional uint32 last_ip_address = 13; + optional uint64 gscookieid = 18; + optional uint64 uniqueid = 19; +} + +message CMsgGCCStrike15_v2_ClientVarValueNotificationInfo { + optional string value_name = 1; + optional int32 value_int = 2; + optional uint32 server_addr = 3; + optional uint32 server_port = 4; + repeated string choked_blocks = 5; +} + +message CMsgGCCStrike15_v2_ServerVarValueNotificationInfo { + optional uint32 accountid = 1; + repeated uint32 viewangles = 2; + optional uint32 type = 3; + repeated uint32 userdata = 4; +} + +message CMsgGCCStrike15_v2_GiftsLeaderboardRequest { +} + +message CMsgGCCStrike15_v2_GiftsLeaderboardResponse { + message GiftLeaderboardEntry { + optional uint32 accountid = 1; + optional uint32 gifts = 2; + } + + optional uint32 servertime = 1; + optional uint32 time_period_seconds = 2; + optional uint32 total_gifts_given = 3; + optional uint32 total_givers = 4; + repeated .CMsgGCCStrike15_v2_GiftsLeaderboardResponse.GiftLeaderboardEntry entries = 5; +} + +message CMsgGCCStrike15_v2_ClientSubmitSurveyVote { + optional uint32 survey_id = 1; + optional uint32 vote = 2; +} + +message CMsgGCCStrike15_v2_Server2GCClientValidate { + optional uint32 accountid = 1; +} + +message CMsgGCCStrike15_v2_GC2ClientTournamentInfo { + optional uint32 eventid = 1; + optional uint32 stageid = 2; + optional uint32 game_type = 3; + repeated uint32 teamids = 4; +} + +message CSOEconCoupon { + optional uint32 entryid = 1 [(key_field) = true]; + optional uint32 defidx = 2; + optional fixed32 expiration_date = 3; +} + +message CSOAccountItemPersonalStore { + optional uint32 generation_time = 1; + optional uint32 redeemable_balance = 2; + repeated uint64 items = 3; +} + +message CSOAccountXpShop { + optional uint32 generation_time = 1; + optional uint32 redeemable_balance = 2; + repeated uint32 xp_tracks = 3; +} + +message CSOAccountKeychainRemoveToolCharges { + optional uint32 charges = 1; +} + +message CSOQuestProgress { + optional uint32 questid = 1 [(key_field) = true]; + optional uint32 points_remaining = 2; + optional uint32 bonus_points = 3; +} + +message CSOAccountSeasonalOperation { + optional uint32 season_value = 1 [(key_field) = true]; + optional uint32 tier_unlocked = 2; + optional uint32 premium_tiers = 3; + optional uint32 mission_id = 4; + optional uint32 missions_completed = 5; + optional uint32 redeemable_balance = 6; + optional uint32 season_pass_time = 7; +} + +message CSOAccountRecurringSubscription { + optional uint32 time_next_cycle = 1; + optional uint32 time_initiated = 2; +} + +message CSOPersonaDataPublic { + optional int32 player_level = 1; + optional .PlayerCommendationInfo commendation = 2; + optional bool elevated_state = 3; + optional uint32 xp_trail_timestamp_refresh = 4; + optional uint32 xp_trail_level = 5; +} + +message CMsgGCCStrike15_v2_GC2ClientNotifyXPShop { + optional .CSOAccountXpShop prematch = 1; + optional .CSOAccountXpShop postmatch = 2; + optional uint32 current_xp = 3; + optional uint32 current_level = 4; +} + +message CMsgGCCStrike15_v2_Client2GcAckXPShopTracks { +} + +message CMsgGCCStrike15_v2_MatchmakingGC2ClientSearchStats { + optional uint32 gs_location_id = 1; + optional uint32 data_center_id = 2; + optional uint32 num_locked_in = 3; + optional uint32 num_found_nearby = 4; + optional uint32 note_level = 5; +} + +message CMsgGC_GlobalGame_Subscribe { + optional uint64 ticket = 1; +} + +message CMsgGC_GlobalGame_Unsubscribe { + optional int32 timeleft = 1; +} + +message CMsgGC_GlobalGame_Play { + optional uint64 ticket = 1; + optional uint32 gametimems = 2; + optional uint32 msperpoint = 3; +} + +message CMsgGCCStrike15_v2_AcknowledgePenalty { + optional int32 acknowledged = 1; +} + +message CMsgGCCStrike15_v2_Client2GCRequestPrestigeCoin { + optional uint32 defindex = 1; + optional uint64 upgradeid = 2; + optional uint32 hours = 3; + optional uint32 prestigetime = 4; +} + +message CMsgGCCStrike15_v2_Client2GCStreamUnlock { + optional uint64 ticket = 1; + optional int32 os = 2; +} + +message CMsgGCCStrike15_v2_ClientToGCRequestElevate { + optional uint32 stage = 1; +} + +message CMsgGCCStrike15_v2_ClientToGCChat { + optional uint64 match_id = 1; + optional string text = 2; +} + +message CMsgGCCStrike15_v2_GCToClientChat { + optional uint32 account_id = 1; + optional string text = 2; +} + +message CMsgGCCStrike15_v2_ClientAuthKeyCode { + optional uint32 eventid = 1; + optional string code = 2; +} + +message CMsgGCCStrike15_GotvSyncPacket { + optional .CEngineGotvSyncPacket data = 1; +} + +message PlayerDecalDigitalSignature { + optional bytes signature = 1; + optional uint32 accountid = 2; + optional uint32 rtime = 3; + repeated float endpos = 4; + repeated float startpos = 5; + repeated float left = 6; + optional uint32 tx_defidx = 7; + optional int32 entindex = 8; + optional uint32 hitbox = 9; + optional float creationtime = 10; + optional uint32 equipslot = 11; + optional uint32 trace_id = 12; + repeated float normal = 13; + optional uint32 tint_id = 14; +} + +message CMsgGCCStrike15_v2_ClientPlayerDecalSign { + optional .PlayerDecalDigitalSignature data = 1; + optional uint64 itemid = 2; +} + +message CMsgGCCStrike15_v2_BetaEnrollment { + optional uint32 eresult = 1; +} + +message CMsgGCCStrike15_v2_ClientLogonFatalError { + optional uint32 errorcode = 1; + optional string message = 2; + optional string country = 3; +} + +message CMsgGCCStrike15_v2_ClientPollState { + optional uint32 pollid = 1; + repeated string names = 2; + repeated int32 values = 3; +} + +message CMsgGCCStrike15_v2_Party_Register { + optional uint32 id = 1; + optional uint32 ver = 2; + optional uint32 apr = 3; + optional uint32 ark = 4; + optional uint32 nby = 5; + optional uint32 grp = 6; + optional uint32 slots = 7; + optional uint32 launcher = 8; + optional uint32 game_type = 9; +} + +message CMsgGCCStrike15_v2_Party_Search { + optional uint32 ver = 1; + optional uint32 apr = 2; + optional uint32 ark = 3; + repeated uint32 grps = 4; + optional uint32 launcher = 5; + optional uint32 game_type = 6; +} + +message CMsgGCCStrike15_v2_Party_SearchResults { + message Entry { + optional uint32 id = 1; + optional uint32 grp = 2; + optional uint32 game_type = 3; + optional uint32 apr = 4; + optional uint32 ark = 5; + optional uint32 loc = 6; + optional uint32 accountid = 7; + } + + repeated .CMsgGCCStrike15_v2_Party_SearchResults.Entry entries = 1; +} + +message CMsgGCCStrike15_v2_Party_Invite { + optional uint32 accountid = 1; + optional uint32 lobbyid = 2; +} + +message CMsgGCCStrike15_v2_Account_RequestCoPlays { + message Player { + optional uint32 accountid = 1; + optional uint32 rtcoplay = 2; + optional bool online = 3; + } + + repeated .CMsgGCCStrike15_v2_Account_RequestCoPlays.Player players = 1; + optional uint32 servertime = 2; +} + +message CMsgGCCStrike15_v2_ClientToGCRequestTicket { + optional fixed64 authorized_steam_id = 1; + optional fixed32 authorized_public_ip = 2; + optional fixed64 gameserver_steam_id = 3; + optional string gameserver_sdr_routing = 5; +} + +message CMsgGCToClientSteamDatagramTicket { + optional bytes serialized_ticket = 16; +} + +message CMsgGCCStrike15_v2_ClientRequestOffers { +} + +message CMsgGCCStrike15_v2_ClientRequestSouvenir { + optional uint64 itemid = 1; + optional uint64 matchid = 2; + optional int32 eventid = 3; +} + +message CMsgGCCStrike15_v2_ClientAccountBalance { + optional uint64 amount = 1; + optional string url = 2; +} + +message CMsgGCCStrike15_v2_ClientPartyJoinRelay { + optional uint32 accountid = 1; + optional uint64 lobbyid = 2; +} + +message CMsgGCCStrike15_v2_ClientPartyWarning { + message Entry { + optional uint32 accountid = 1; + optional uint32 warntype = 2; + } + + repeated .CMsgGCCStrike15_v2_ClientPartyWarning.Entry entries = 1; +} + +message CMsgGCCStrike15_v2_SetEventFavorite { + optional uint64 eventid = 1; + optional bool is_favorite = 2; +} + +message CMsgGCCStrike15_v2_GetEventFavorites_Request { + optional bool all_events = 1; +} + +message CMsgGCCStrike15_v2_GetEventFavorites_Response { + optional bool all_events = 1; + optional string json_favorites = 2; + optional string json_featured = 3; +} + +message CMsgGCCStrike15_v2_ClientPerfReport { + message Entry { + optional uint32 perfcounter = 1; + optional uint32 length = 2; + optional bytes reference = 3; + optional bytes actual = 4; + optional uint32 sourceid = 5; + optional uint32 status = 6; + } + + repeated .CMsgGCCStrike15_v2_ClientPerfReport.Entry entries = 1; +} + +message CVDiagnostic { + optional uint32 id = 1; + optional uint32 extended = 2; + optional uint64 value = 3; + optional string string_value = 4; +} + +message CMsgGCCStrike15_v2_ClientReportValidation { + optional string file_report = 1; + optional string command_line = 2; + optional uint32 total_files = 3; + optional uint32 internal_error = 4; + optional uint32 trust_time = 5; + optional uint32 count_pending = 6; + optional uint32 count_completed = 7; + optional uint32 process_id = 8; + optional int32 osversion = 9; + optional uint32 clientreportversion = 10; + optional uint32 status_id = 11; + optional uint32 diagnostic1 = 12; + optional uint64 diagnostic2 = 13; + optional uint64 diagnostic3 = 14; + optional string last_launch_data = 15; + optional uint32 report_count = 16; + optional uint64 client_time = 17; + optional uint64 diagnostic4 = 18; + optional uint64 diagnostic5 = 19; + repeated .CVDiagnostic diagnostics = 20; +} + +message CMsgGCCStrike15_v2_GC2ClientRefuseSecureMode { + optional string file_report = 1; + optional bool offer_insecure_mode = 2; + optional bool offer_secure_mode = 3; + optional bool show_unsigned_ui = 4; + optional bool kick_user = 5; + optional bool show_trusted_ui = 6; + optional bool show_warning_not_trusted = 7; + optional bool show_warning_not_trusted_2 = 8; + optional string files_prevented_trusted = 9; +} + +message CMsgGCCStrike15_v2_GC2ClientRequestValidation { + optional bool full_report = 1; + optional string module = 2; +} + +message CMsgGCCStrike15_v2_GC2ClientInitSystem { + optional bool load = 1; + optional string name = 2; + optional string outputname = 3; + optional bytes key_data = 4; + optional bytes sha_hash = 5; + optional int32 cookie = 6; + optional string manifest = 7; + optional bytes system_package = 8; + optional bool load_system = 9; +} + +message CMsgGCCStrike15_v2_GC2ClientInitSystem_Response { + optional bool success = 1; + optional string diagnostic = 2; + optional bytes sha_hash = 3; + optional int32 response = 4; + optional int32 error_code1 = 5; + optional int32 error_code2 = 6; + optional int64 handle = 7; + optional .EInitSystemResult einit_result = 8 [default = k_EInitSystemResult_Invalid]; + optional int32 aux_system1 = 9; + optional int32 aux_system2 = 10; +} + +message CMsgGCCStrike15_v2_SetPlayerLeaderboardSafeName { + optional string leaderboard_safe_name = 1; +} diff --git a/protobufs/cs2/cstrike15_usermessages.proto b/protobufs/cs2/cstrike15_usermessages.proto new file mode 100644 index 000000000..9bba307a7 --- /dev/null +++ b/protobufs/cs2/cstrike15_usermessages.proto @@ -0,0 +1,613 @@ +import "networkbasetypes.proto"; +import "cstrike15_gcmessages.proto"; + +enum ECstrike15UserMessages { + CS_UM_VGUIMenu = 301; + CS_UM_Geiger = 302; + CS_UM_Train = 303; + CS_UM_HudText = 304; + CS_UM_SayText = 305; + CS_UM_SayText2 = 306; + CS_UM_TextMsg = 307; + CS_UM_HudMsg = 308; + CS_UM_ResetHud = 309; + CS_UM_GameTitle = 310; + CS_UM_Shake = 312; + CS_UM_Fade = 313; + CS_UM_Rumble = 314; + CS_UM_CloseCaption = 315; + CS_UM_CloseCaptionDirect = 316; + CS_UM_SendAudio = 317; + CS_UM_RawAudio = 318; + CS_UM_VoiceMask = 319; + CS_UM_RequestState = 320; + CS_UM_Damage = 321; + CS_UM_RadioText = 322; + CS_UM_HintText = 323; + CS_UM_KeyHintText = 324; + CS_UM_ProcessSpottedEntityUpdate = 325; + CS_UM_ReloadEffect = 326; + CS_UM_AdjustMoney = 327; + CS_UM_UpdateTeamMoney = 328; + CS_UM_StopSpectatorMode = 329; + CS_UM_KillCam = 330; + CS_UM_DesiredTimescale = 331; + CS_UM_CurrentTimescale = 332; + CS_UM_AchievementEvent = 333; + CS_UM_MatchEndConditions = 334; + CS_UM_DisconnectToLobby = 335; + CS_UM_PlayerStatsUpdate = 336; + CS_UM_WarmupHasEnded = 338; + CS_UM_ClientInfo = 339; + CS_UM_XRankGet = 340; + CS_UM_XRankUpd = 341; + CS_UM_CallVoteFailed = 345; + CS_UM_VoteStart = 346; + CS_UM_VotePass = 347; + CS_UM_VoteFailed = 348; + CS_UM_VoteSetup = 349; + CS_UM_ServerRankRevealAll = 350; + CS_UM_SendLastKillerDamageToClient = 351; + CS_UM_ServerRankUpdate = 352; + CS_UM_ItemPickup = 353; + CS_UM_ShowMenu = 354; + CS_UM_BarTime = 355; + CS_UM_AmmoDenied = 356; + CS_UM_MarkAchievement = 357; + CS_UM_MatchStatsUpdate = 358; + CS_UM_ItemDrop = 359; + CS_UM_GlowPropTurnOff = 360; + CS_UM_SendPlayerItemDrops = 361; + CS_UM_RoundBackupFilenames = 362; + CS_UM_SendPlayerItemFound = 363; + CS_UM_ReportHit = 364; + CS_UM_XpUpdate = 365; + CS_UM_QuestProgress = 366; + CS_UM_ScoreLeaderboardData = 367; + CS_UM_PlayerDecalDigitalSignature = 368; + CS_UM_WeaponSound = 369; + CS_UM_UpdateScreenHealthBar = 370; + CS_UM_EntityOutlineHighlight = 371; + CS_UM_SSUI = 372; + CS_UM_SurvivalStats = 373; + CS_UM_DisconnectToLobby2 = 374; + CS_UM_EndOfMatchAllPlayersData = 375; + CS_UM_PostRoundDamageReport = 376; + CS_UM_RoundEndReportData = 379; + CS_UM_CurrentRoundOdds = 380; + CS_UM_DeepStats = 381; + CS_UM_ShootInfo = 383; + CS_UM_CounterStrafe = 385; + CS_UM_DamagePrediction = 386; +} + +enum ECSUsrMsg_DisconnectToLobby_Action { + k_ECSUsrMsg_DisconnectToLobby_Action_Default = 0; + k_ECSUsrMsg_DisconnectToLobby_Action_GoQueue = 1; +} + +message CCSUsrMsg_VGUIMenu { + message Keys { + optional string name = 1; + optional string value = 2; + } + + optional string name = 1; + optional bool show = 2; + repeated .CCSUsrMsg_VGUIMenu.Keys keys = 3; +} + +message CCSUsrMsg_Geiger { + optional int32 range = 1; +} + +message CCSUsrMsg_Train { + optional int32 train = 1; +} + +message CCSUsrMsg_HudText { + optional string text = 1; +} + +message CCSUsrMsg_HudMsg { + optional int32 channel = 1; + optional .CMsgVector2D pos = 2; + optional .CMsgRGBA clr1 = 3; + optional .CMsgRGBA clr2 = 4; + optional int32 effect = 5; + optional float fade_in_time = 6; + optional float fade_out_time = 7; + optional float hold_time = 9; + optional float fx_time = 10; + optional string text = 11; +} + +message CCSUsrMsg_Shake { + optional int32 command = 1; + optional float local_amplitude = 2; + optional float frequency = 3; + optional float duration = 4; +} + +message CCSUsrMsg_Fade { + optional int32 duration = 1; + optional int32 hold_time = 2; + optional int32 flags = 3; + optional .CMsgRGBA clr = 4; +} + +message CCSUsrMsg_Rumble { + optional int32 index = 1; + optional int32 data = 2; + optional int32 flags = 3; +} + +message CCSUsrMsg_CloseCaption { + optional uint32 hash = 1; + optional int32 duration = 2; + optional bool from_player = 3; + optional string cctoken = 4; +} + +message CCSUsrMsg_CloseCaptionDirect { + optional uint32 hash = 1; + optional int32 duration = 2; + optional bool from_player = 3; +} + +message CCSUsrMsg_SendAudio { + optional string radio_sound = 1; +} + +message CCSUsrMsg_RawAudio { + optional int32 pitch = 1; + optional int32 entidx = 2 [default = -1]; + optional float duration = 3; + optional string voice_filename = 4; +} + +message CCSUsrMsg_VoiceMask { + message PlayerMask { + optional int32 game_rules_mask = 1; + optional int32 ban_masks = 2; + } + + repeated .CCSUsrMsg_VoiceMask.PlayerMask player_masks = 1; + optional bool player_mod_enable = 2; +} + +message CCSUsrMsg_Damage { + optional int32 amount = 1; + optional .CMsgVector inflictor_world_pos = 2; + optional int32 victim_entindex = 3 [default = -1]; +} + +message CCSUsrMsg_RadioText { + optional int32 msg_dst = 1; + optional int32 client = 2 [default = -1]; + optional string msg_name = 3; + repeated string params = 4; +} + +message CCSUsrMsg_HintText { + optional string message = 1; +} + +message CCSUsrMsg_KeyHintText { + repeated string messages = 1; +} + +message CCSUsrMsg_ProcessSpottedEntityUpdate { + message SpottedEntityUpdate { + optional int32 entity_idx = 1 [default = -1]; + optional int32 class_id = 2; + optional int32 origin_x = 3; + optional int32 origin_y = 4; + optional int32 origin_z = 5; + optional int32 angle_y = 6; + optional bool defuser = 7; + optional bool player_has_defuser = 8; + optional bool player_has_c4 = 9; + } + + optional bool new_update = 1; + repeated .CCSUsrMsg_ProcessSpottedEntityUpdate.SpottedEntityUpdate entity_updates = 2; +} + +message CCSUsrMsg_SendPlayerItemDrops { + repeated .CEconItemPreviewDataBlock entity_updates = 1; +} + +message CCSUsrMsg_SendPlayerItemFound { + optional .CEconItemPreviewDataBlock iteminfo = 1; + optional int32 playerslot = 2 [default = -1]; +} + +message CCSUsrMsg_ReloadEffect { + optional int32 entidx = 1 [default = -1]; + optional int32 actanim = 2; + optional float origin_x = 3; + optional float origin_y = 4; + optional float origin_z = 5; +} + +message CCSUsrMsg_WeaponSound { + optional int32 entidx = 1 [default = -1]; + optional float origin_x = 2; + optional float origin_y = 3; + optional float origin_z = 4; + optional string sound = 5; + optional float game_timestamp = 6; + optional fixed32 source_soundscapeid = 7; +} + +message CCSUsrMsg_UpdateScreenHealthBar { + optional int32 entidx = 1 [default = -1]; + optional float healthratio_old = 2; + optional float healthratio_new = 3; + optional int32 style = 4; +} + +message CCSUsrMsg_EntityOutlineHighlight { + optional int32 entidx = 1 [default = -1]; + optional bool removehighlight = 2; +} + +message CCSUsrMsg_AdjustMoney { + optional int32 amount = 1; +} + +message CCSUsrMsg_ReportHit { + optional float pos_x = 1; + optional float pos_y = 2; + optional float timestamp = 4; + optional float pos_z = 3; +} + +message CCSUsrMsg_KillCam { + optional int32 obs_mode = 1; + optional int32 first_target = 2 [default = -1]; + optional int32 second_target = 3 [default = -1]; +} + +message CCSUsrMsg_DesiredTimescale { + optional float desired_timescale = 1; + optional float duration_realtime_sec = 2; + optional int32 interpolator_type = 3; + optional float start_blend_time = 4; +} + +message CCSUsrMsg_CurrentTimescale { + optional float cur_timescale = 1; +} + +message CCSUsrMsg_AchievementEvent { + optional int32 achievement = 1; + optional int32 count = 2; + optional int32 user_id = 3; +} + +message CCSUsrMsg_MatchEndConditions { + optional int32 fraglimit = 1; + optional int32 mp_maxrounds = 2; + optional int32 mp_winlimit = 3; + optional float mp_timelimit = 4; +} + +message CCSUsrMsg_PlayerStatsUpdate { + message Stat { + optional int32 idx = 1; + optional int32 delta = 2; + } + + optional int32 version = 1; + repeated .CCSUsrMsg_PlayerStatsUpdate.Stat stats = 4; + optional uint32 ehandle = 5; + optional int32 crc = 6; +} + +message CCSUsrMsg_QuestProgress { + optional uint32 quest_id = 1; + optional uint32 normal_points = 2; + optional uint32 bonus_points = 3; + optional bool is_event_quest = 4; +} + +message CCSUsrMsg_ScoreLeaderboardData { + optional .ScoreLeaderboardData data = 1; +} + +message CCSUsrMsg_PlayerDecalDigitalSignature { + optional .PlayerDecalDigitalSignature data = 1; +} + +message CCSUsrMsg_XRankGet { + optional int32 mode_idx = 1; + optional int32 controller = 2; +} + +message CCSUsrMsg_XRankUpd { + optional int32 mode_idx = 1; + optional int32 controller = 2; + optional int32 ranking = 3; +} + +message CCSUsrMsg_CallVoteFailed { + optional int32 reason = 1; + optional int32 time = 2; +} + +message CCSUsrMsg_VoteStart { + optional int32 team = 1; + optional int32 player_slot = 2 [default = -1]; + optional int32 vote_type = 3; + optional string disp_str = 4; + optional string details_str = 5; + optional string other_team_str = 6; + optional bool is_yes_no_vote = 7; + optional int32 player_slot_target = 8 [default = -1]; +} + +message CCSUsrMsg_VotePass { + optional int32 team = 1; + optional int32 vote_type = 2; + optional string disp_str = 3; + optional string details_str = 4; +} + +message CCSUsrMsg_VoteFailed { + optional int32 team = 1; + optional int32 reason = 2; +} + +message CCSUsrMsg_VoteSetup { + repeated string potential_issues = 1; +} + +message CCSUsrMsg_SendLastKillerDamageToClient { + optional int32 num_hits_given = 1; + optional int32 damage_given = 2; + optional int32 num_hits_taken = 3; + optional int32 damage_taken = 4; + optional int32 actual_damage_given = 5; + optional int32 actual_damage_taken = 6; +} + +message CCSUsrMsg_ServerRankUpdate { + message RankUpdate { + optional int32 account_id = 1; + optional int32 rank_old = 2; + optional int32 rank_new = 3; + optional int32 num_wins = 4; + optional float rank_change = 5; + optional int32 rank_type_id = 6; + } + + repeated .CCSUsrMsg_ServerRankUpdate.RankUpdate rank_update = 1; +} + +message CCSUsrMsg_XpUpdate { + optional .CMsgGCCstrike15_v2_GC2ServerNotifyXPRewarded data = 1; +} + +message CCSUsrMsg_ItemPickup { + optional string item = 1; +} + +message CCSUsrMsg_ShowMenu { + optional int32 bits_valid_slots = 1; + optional int32 display_time = 2; + optional string menu_string = 3; +} + +message CCSUsrMsg_BarTime { + optional string time = 1; +} + +message CCSUsrMsg_AmmoDenied { + optional int32 ammoidx = 1; +} + +message CCSUsrMsg_MarkAchievement { + optional string achievement = 1; +} + +message CCSUsrMsg_MatchStatsUpdate { + optional string update = 1; +} + +message CCSUsrMsg_ItemDrop { + optional int64 itemid = 1; + optional bool death = 2; +} + +message CCSUsrMsg_GlowPropTurnOff { + optional int32 entidx = 1 [default = -1]; +} + +message CCSUsrMsg_RoundBackupFilenames { + optional int32 count = 1; + optional int32 index = 2; + optional string filename = 3; + optional string nicename = 4; +} + +message CCSUsrMsg_SSUI { + optional bool show = 1; + optional float start_time = 2; + optional float end_time = 3; +} + +message CCSUsrMsg_SurvivalStats { + message Fact { + optional int32 type = 1; + optional int32 display = 2; + optional int32 value = 3; + optional float interestingness = 4; + } + + message Placement { + optional uint64 xuid = 1; + optional int32 teamnumber = 2; + optional int32 placement = 3; + } + + message Damage { + optional uint64 xuid = 1; + optional int32 to = 2; + optional int32 to_hits = 3; + optional int32 from = 4; + optional int32 from_hits = 5; + } + + optional uint64 xuid = 1; + repeated .CCSUsrMsg_SurvivalStats.Fact facts = 2; + repeated .CCSUsrMsg_SurvivalStats.Placement users = 3; + repeated .CCSUsrMsg_SurvivalStats.Damage damages = 5; + optional int32 ticknumber = 4; +} + +message CCSUsrMsg_EndOfMatchAllPlayersData { + message Accolade { + optional int32 eaccolade = 1; + optional float value = 2; + optional int32 position = 3; + } + + message PlayerData { + optional int32 slot = 1 [default = -1]; + optional uint64 xuid = 2; + optional string name = 3; + optional int32 teamnumber = 4; + optional .CCSUsrMsg_EndOfMatchAllPlayersData.Accolade nomination = 5; + repeated .CEconItemPreviewDataBlock items = 6; + optional int32 playercolor = 7; + optional bool isbot = 8; + } + + repeated .CCSUsrMsg_EndOfMatchAllPlayersData.PlayerData allplayerdata = 1; + optional int32 scene = 2; +} + +message CCSUsrMsg_RoundEndReportData { + message RerEvent { + message Victim { + optional int32 team_number = 1; + optional int32 playerslot = 2 [default = -1]; + optional uint64 xuid = 3; + optional int32 color = 4; + optional bool is_bot = 5; + optional bool is_dead = 6; + } + + message Objective { + optional int32 type = 1; + } + + message Damage { + optional int32 other_playerslot = 1 [default = -1]; + optional uint64 other_xuid = 2; + optional int32 health_removed = 3; + optional int32 num_hits = 4; + optional int32 return_health_removed = 5; + optional int32 return_num_hits = 6; + } + + optional float timestamp = 1; + optional int32 terrorist_odds = 2; + optional int32 ct_alive = 3; + optional int32 t_alive = 4; + optional .CCSUsrMsg_RoundEndReportData.RerEvent.Victim victim_data = 5; + optional .CCSUsrMsg_RoundEndReportData.RerEvent.Objective objective_data = 6; + repeated .CCSUsrMsg_RoundEndReportData.RerEvent.Damage all_damage_data = 7; + } + + message InitialConditions { + optional int32 ct_equip_value = 1; + optional int32 t_equip_value = 2; + optional int32 terrorist_odds = 3; + } + + optional .CCSUsrMsg_RoundEndReportData.InitialConditions init_conditions = 1; + repeated .CCSUsrMsg_RoundEndReportData.RerEvent all_rer_event_data = 2; +} + +message CCSUsrMsg_PostRoundDamageReport { + optional uint64 other_xuid = 1; + optional int32 given_kill_type = 2; + optional int32 given_health_removed = 3; + optional int32 given_num_hits = 4; + optional int32 taken_kill_type = 5; + optional int32 taken_health_removed = 6; + optional int32 taken_num_hits = 7; +} + +message CCSUsrMsg_CurrentRoundOdds { + optional int32 odds = 1; +} + +message CCSUsrMsg_DeepStats { + optional .CMsgGCCStrike15_ClientDeepStats stats = 1; +} + +message CCSUsrMsg_ShootInfo { + optional int32 frame_number = 1; + repeated .CMsgTransform hitbox_transforms = 2; + optional .CMsgVector shoot_pos = 3; + optional .CMsgQAngle shoot_dir = 4; +} + +message CCSUsrMsg_ResetHud { + optional bool reset = 1; +} + +message CCSUsrMsg_GameTitle { + optional int32 dummy = 1; +} + +message CCSUsrMsg_RequestState { + optional int32 dummy = 1; +} + +message CCSUsrMsg_StopSpectatorMode { + optional int32 dummy = 1; +} + +message CCSUsrMsg_DisconnectToLobby { + optional int32 dummy = 1; +} + +message CCSUsrMsg_WarmupHasEnded { + optional int32 dummy = 1; +} + +message CCSUsrMsg_ClientInfo { + optional int32 dummy = 1; +} + +message CCSUsrMsg_ServerRankRevealAll { + optional int32 seconds_till_shutdown = 1; + optional .CMsgGCCStrike15_v2_MatchmakingGC2ServerReserve reservation = 2; +} + +message CCSUsrMsgPreMatchSayText { + optional uint32 account_id = 1; + optional string text = 2; + optional bool all_chat = 3; +} + +message CCSUsrMsg_CounterStrafe { + optional int32 press_to_release_ns = 1; + optional int32 total_keys_down = 2; +} + +message CCSUsrMsg_DamagePrediction { + optional int32 command_num = 1; + optional int32 pellet_idx = 2; + optional int32 victim_slot = 3; + optional int32 victim_starting_health = 4; + optional int32 victim_damage = 5; + optional .CMsgVector shoot_pos = 6; + optional .CMsgQAngle shoot_dir = 7; + optional .CMsgQAngle aim_punch = 8; +} diff --git a/protobufs/cs2/engine_gcmessages.proto b/protobufs/cs2/engine_gcmessages.proto new file mode 100644 index 000000000..7f81bb6af --- /dev/null +++ b/protobufs/cs2/engine_gcmessages.proto @@ -0,0 +1,14 @@ +import "google/protobuf/descriptor.proto"; + +message CEngineGotvSyncPacket { + optional uint64 match_id = 1; + optional uint32 instance_id = 2; + optional uint32 signupfragment = 3; + optional uint32 currentfragment = 4; + optional float tickrate = 5; + optional uint32 tick = 6; + optional float rtdelay = 8; + optional float rcvage = 9; + optional float keyframe_interval = 10; + optional uint32 cdndelay = 11; +} diff --git a/protobufs/cs2/gcsdk_gcmessages.proto b/protobufs/cs2/gcsdk_gcmessages.proto new file mode 100644 index 000000000..3ed729c47 --- /dev/null +++ b/protobufs/cs2/gcsdk_gcmessages.proto @@ -0,0 +1,325 @@ +import "steammessages.proto"; + +enum GCClientLauncherType { + GCClientLauncherType_DEFAULT = 0; + GCClientLauncherType_PERFECTWORLD = 1; + GCClientLauncherType_STEAMCHINA = 2; + GCClientLauncherType_SOURCE2 = 3; +} + +enum GCConnectionStatus { + GCConnectionStatus_HAVE_SESSION = 0; + GCConnectionStatus_GC_GOING_DOWN = 1; + GCConnectionStatus_NO_SESSION = 2; + GCConnectionStatus_NO_SESSION_IN_LOGON_QUEUE = 3; + GCConnectionStatus_NO_STEAM = 4; +} + +message CMsgSOIDOwner { + optional uint32 type = 1; + optional uint64 id = 2; +} + +message CMsgSOSingleObject { + optional int32 type_id = 2; + optional bytes object_data = 3; + optional fixed64 version = 4; + optional .CMsgSOIDOwner owner_soid = 5; +} + +message CMsgSOMultipleObjects { + message SingleObject { + option (msgpool_soft_limit) = 256; + option (msgpool_hard_limit) = 1024; + + optional int32 type_id = 1; + optional bytes object_data = 2; + } + + repeated .CMsgSOMultipleObjects.SingleObject objects_modified = 2; + optional fixed64 version = 3; + optional .CMsgSOIDOwner owner_soid = 6; +} + +message CMsgSOCacheSubscribed { + message SubscribedType { + optional int32 type_id = 1; + repeated bytes object_data = 2; + } + + repeated .CMsgSOCacheSubscribed.SubscribedType objects = 2; + optional fixed64 version = 3; + optional .CMsgSOIDOwner owner_soid = 4; +} + +message CMsgSOCacheUnsubscribed { + optional .CMsgSOIDOwner owner_soid = 2; +} + +message CMsgSOCacheSubscriptionCheck { + optional fixed64 version = 2; + optional .CMsgSOIDOwner owner_soid = 3; +} + +message CMsgSOCacheSubscriptionRefresh { + optional .CMsgSOIDOwner owner_soid = 2; +} + +message CMsgSOCacheVersion { + optional fixed64 version = 1; +} + +message CMsgAccountDetails { + optional bool valid = 1; + optional string account_name = 2; + optional bool public_profile = 4; + optional bool public_inventory = 5; + optional bool vac_banned = 6; + optional bool cyber_cafe = 7; + optional bool school_account = 8; + optional bool free_trial_account = 9; + optional bool subscribed = 10; + optional bool low_violence = 11; + optional bool limited = 12; + optional bool trusted = 13; + optional uint32 package = 14; + optional fixed32 time_cached = 15; + optional bool account_locked = 16; + optional bool community_banned = 17; + optional bool trade_banned = 18; + optional bool eligible_for_community_market = 19; +} + +message CMsgGCMultiplexMessage { + optional uint32 msgtype = 1; + optional bytes payload = 2; + repeated fixed64 steamids = 3; + optional bool replytogc = 4; +} + +message CMsgGCMultiplexMessage_Response { + optional uint32 msgtype = 1; +} + +message CGCToGCMsgMasterAck { + optional uint32 dir_index = 1; + optional uint32 gc_type = 2; +} + +message CGCToGCMsgMasterAck_Response { + optional int32 eresult = 1 [default = 2]; +} + +message CGCToGCMsgMasterStartupComplete { +} + +message CGCToGCMsgRouted { + optional uint32 msg_type = 1; + optional fixed64 sender_id = 2; + optional bytes net_message = 3; + optional uint32 ip = 4; +} + +message CGCToGCMsgRoutedReply { + optional uint32 msg_type = 1; + optional bytes net_message = 2; +} + +message CMsgGCUpdateSessionIP { + optional fixed64 steamid = 1; + optional fixed32 ip = 2; +} + +message CMsgGCRequestSessionIP { + optional fixed64 steamid = 1; +} + +message CMsgGCRequestSessionIPResponse { + optional fixed32 ip = 1; +} + +message CMsgSOCacheHaveVersion { + optional .CMsgSOIDOwner soid = 1; + optional fixed64 version = 2; +} + +message CMsgClientHello { + optional uint32 version = 1; + repeated .CMsgSOCacheHaveVersion socache_have_versions = 2; + optional uint32 client_session_need = 3; + optional uint32 client_launcher = 4; + optional uint32 partner_srcid = 5; + optional uint32 partner_accountid = 6; + optional uint32 partner_accountflags = 7; + optional uint32 partner_accountbalance = 8; + optional uint32 steam_launcher = 9; +} + +message CMsgServerHello { + optional uint32 version = 1; + repeated .CMsgSOCacheHaveVersion socache_have_versions = 2; + optional uint32 legacy_client_session_need = 3; + optional uint32 client_launcher = 4; + optional bytes legacy_steamdatagram_routing = 6; + optional uint32 required_internal_addr = 7; + optional bytes steamdatagram_login = 8; + optional uint32 socache_control = 9; +} + +message CMsgClientWelcome { + message Location { + optional float latitude = 1; + optional float longitude = 2; + optional string country = 3; + } + + optional uint32 version = 1; + optional bytes game_data = 2; + repeated .CMsgSOCacheSubscribed outofdate_subscribed_caches = 3; + repeated .CMsgSOCacheSubscriptionCheck uptodate_subscribed_caches = 4; + optional .CMsgClientWelcome.Location location = 5; + optional bytes game_data2 = 6; + optional uint32 rtime32_gc_welcome_timestamp = 7; + optional uint32 currency = 8; + optional uint32 balance = 9; + optional string balance_url = 10; + optional string txn_country_code = 11; +} + +message CMsgConnectionStatus { + optional .GCConnectionStatus status = 1 [default = GCConnectionStatus_HAVE_SESSION]; + optional uint32 client_session_need = 2; + optional int32 queue_position = 3; + optional int32 queue_size = 4; + optional int32 wait_seconds = 5; + optional int32 estimated_wait_seconds_remaining = 6; +} + +message CWorkshop_PopulateItemDescriptions_Request { + message SingleItemDescription { + optional uint32 gameitemid = 1; + optional string item_description = 2; + optional bool one_per_account = 3; + } + + message ItemDescriptionsLanguageBlock { + optional string language = 1; + repeated .CWorkshop_PopulateItemDescriptions_Request.SingleItemDescription descriptions = 2; + } + + optional uint32 appid = 1; + repeated .CWorkshop_PopulateItemDescriptions_Request.ItemDescriptionsLanguageBlock languages = 2; +} + +message CWorkshop_GetContributors_Request { + optional uint32 appid = 1; + optional uint32 gameitemid = 2; +} + +message CWorkshop_GetContributors_Response { + repeated fixed64 contributors = 1; +} + +message CWorkshop_SetItemPaymentRules_Request { + message WorkshopItemPaymentRule { + optional uint64 workshop_file_id = 1; + optional float revenue_percentage = 2; + optional string rule_description = 3; + optional uint32 rule_type = 4 [default = 1]; + } + + message WorkshopDirectPaymentRule { + optional uint64 workshop_file_id = 1; + optional string rule_description = 2; + } + + message PartnerItemPaymentRule { + optional uint32 account_id = 1; + optional float revenue_percentage = 2; + optional string rule_description = 3; + } + + optional uint32 appid = 1; + optional uint32 gameitemid = 2; + repeated .CWorkshop_SetItemPaymentRules_Request.WorkshopItemPaymentRule associated_workshop_files = 3; + repeated .CWorkshop_SetItemPaymentRules_Request.PartnerItemPaymentRule partner_accounts = 4; + optional bool validate_only = 5; + optional bool make_workshop_files_subscribable = 6; + optional .CWorkshop_SetItemPaymentRules_Request.WorkshopDirectPaymentRule associated_workshop_file_for_direct_payments = 7; +} + +message CWorkshop_SetItemPaymentRules_Response { +} + +message CGameServers_AggregationQuery_Request { + optional string filter = 1; + repeated string group_fields = 3; +} + +message CGameServers_AggregationQuery_Response { + message Group { + repeated string group_values = 1; + optional uint32 servers_empty = 2; + optional uint32 servers_full = 3; + optional uint32 servers_total = 4; + optional uint32 players_humans = 5; + optional uint32 players_bots = 6; + optional uint32 player_capacity = 7; + } + + repeated .CGameServers_AggregationQuery_Response.Group groups = 1; +} + +message CWorkshop_AddSpecialPayment_Request { + optional uint32 appid = 1; + optional uint32 gameitemid = 2; + optional string date = 3; + optional uint64 payment_us_usd = 4; + optional uint64 payment_row_usd = 5; +} + +message CWorkshop_AddSpecialPayment_Response { +} + +message CProductInfo_SetRichPresenceLocalization_Request { + message Token { + optional string token = 1; + optional string value = 2; + } + + message LanguageSection { + optional string language = 1; + repeated .CProductInfo_SetRichPresenceLocalization_Request.Token tokens = 2; + } + + optional uint32 appid = 1; + repeated .CProductInfo_SetRichPresenceLocalization_Request.LanguageSection languages = 2; + optional uint64 steamid = 3; +} + +message CProductInfo_SetRichPresenceLocalization_Response { +} + +message CMsgSerializedSOCache { + message TypeCache { + optional uint32 type = 1; + repeated bytes objects = 2; + optional uint32 service_id = 3; + } + + message Cache { + message Version { + optional uint32 service = 1; + optional uint64 version = 2; + } + + optional uint32 type = 1; + optional uint64 id = 2; + repeated .CMsgSerializedSOCache.Cache.Version versions = 3; + repeated .CMsgSerializedSOCache.TypeCache type_caches = 4; + } + + optional uint32 file_version = 1; + repeated .CMsgSerializedSOCache.Cache caches = 2; + optional uint32 gc_socache_file_version = 3; +} diff --git a/protobufs/cs2/netmessages.proto b/protobufs/cs2/netmessages.proto new file mode 100644 index 000000000..60eab0d45 --- /dev/null +++ b/protobufs/cs2/netmessages.proto @@ -0,0 +1,710 @@ +import "networkbasetypes.proto"; + +enum CLC_Messages { + clc_ClientInfo = 20; + clc_Move = 21; + clc_VoiceData = 22; + clc_BaselineAck = 23; + clc_RespondCvarValue = 25; + clc_FileCRCCheck = 26; + clc_LoadingProgress = 27; + clc_SplitPlayerConnect = 28; + clc_SplitPlayerDisconnect = 30; + clc_ServerStatus = 31; + clc_RequestPause = 33; + clc_CmdKeyValues = 34; + clc_RconServerDetails = 35; + clc_HltvReplay = 36; + clc_Diagnostic = 37; +} + +enum SVC_Messages { + svc_ServerInfo = 40; + svc_FlattenedSerializer = 41; + svc_ClassInfo = 42; + svc_SetPause = 43; + svc_CreateStringTable = 44; + svc_UpdateStringTable = 45; + svc_VoiceInit = 46; + svc_VoiceData = 47; + svc_Print = 48; + svc_Sounds = 49; + svc_SetView = 50; + svc_ClearAllStringTables = 51; + svc_CmdKeyValues = 52; + svc_BSPDecal = 53; + svc_SplitScreen = 54; + svc_PacketEntities = 55; + svc_Prefetch = 56; + svc_Menu = 57; + svc_GetCvarValue = 58; + svc_StopSound = 59; + svc_PeerList = 60; + svc_PacketReliable = 61; + svc_HLTVStatus = 62; + svc_ServerSteamID = 63; + svc_FullFrameSplit = 70; + svc_RconServerDetails = 71; + svc_UserMessage = 72; + svc_Broadcast_Command = 74; + svc_HltvFixupOperatorStatus = 75; + svc_UserCmds = 76; +} + +enum VoiceDataFormat_t { + VOICEDATA_FORMAT_STEAM = 0; + VOICEDATA_FORMAT_ENGINE = 1; + VOICEDATA_FORMAT_OPUS = 2; +} + +enum RequestPause_t { + RP_PAUSE = 0; + RP_UNPAUSE = 1; + RP_TOGGLEPAUSE = 2; +} + +enum PrefetchType { + PFT_SOUND = 0; +} + +enum ESplitScreenMessageType { + MSG_SPLITSCREEN_ADDUSER = 0; + MSG_SPLITSCREEN_REMOVEUSER = 1; +} + +enum EQueryCvarValueStatus { + eQueryCvarValueStatus_ValueIntact = 0; + eQueryCvarValueStatus_CvarNotFound = 1; + eQueryCvarValueStatus_NotACvar = 2; + eQueryCvarValueStatus_CvarProtected = 3; +} + +enum DIALOG_TYPE { + DIALOG_MSG = 0; + DIALOG_MENU = 1; + DIALOG_TEXT = 2; + DIALOG_ENTRY = 3; + DIALOG_ASKCONNECT = 4; +} + +enum SVC_Messages_LowFrequency { + svc_dummy = 600; +} + +enum Bidirectional_Messages { + bi_RebroadcastGameEvent = 16; + bi_RebroadcastSource = 17; + bi_GameEvent = 18; +} + +enum Bidirectional_Messages_LowFrequency { + bi_RelayInfo = 700; + bi_RelayPacket = 701; +} + +enum ReplayEventType_t { + REPLAY_EVENT_CANCEL = 0; + REPLAY_EVENT_DEATH = 1; + REPLAY_EVENT_GENERIC = 2; + REPLAY_EVENT_STUCK_NEED_FULL_UPDATE = 3; + REPLAY_EVENT_VICTORY = 4; +} + +message CCLCMsg_ClientInfo { + optional fixed32 send_table_crc = 1; + optional uint32 server_count = 2; + optional bool is_hltv = 3; + optional uint32 friends_id = 5; + optional string friends_name = 6; +} + +message CCLCMsg_Move { + optional bytes data = 3; + optional uint32 last_command_number = 4; +} + +message CMsgVoiceAudio { + optional .VoiceDataFormat_t format = 1 [default = VOICEDATA_FORMAT_STEAM]; + optional bytes voice_data = 2; + optional int32 sequence_bytes = 3; + optional uint32 section_number = 4; + optional uint32 sample_rate = 5; + optional uint32 uncompressed_sample_offset = 6; + optional uint32 num_packets = 7; + repeated uint32 packet_offsets = 8 [packed = true]; + optional float voice_level = 9; +} + +message CCLCMsg_VoiceData { + optional .CMsgVoiceAudio audio = 1; + optional fixed64 xuid = 2; + optional uint32 tick = 3; +} + +message CCLCMsg_BaselineAck { + optional int32 baseline_tick = 1; + optional int32 baseline_nr = 2; +} + +message CCLCMsg_ListenEvents { + repeated fixed32 event_mask = 1; +} + +message CCLCMsg_RespondCvarValue { + optional int32 cookie = 1; + optional int32 status_code = 2; + optional string name = 3; + optional string value = 4; +} + +message CCLCMsg_FileCRCCheck { + optional int32 code_path = 1; + optional string path = 2; + optional int32 code_filename = 3; + optional string filename = 4; + optional fixed32 crc = 5; +} + +message CCLCMsg_LoadingProgress { + optional int32 progress = 1; +} + +message CCLCMsg_SplitPlayerConnect { + optional string playername = 1; +} + +message CCLCMsg_SplitPlayerDisconnect { + optional int32 slot = 1; +} + +message CCLCMsg_ServerStatus { + optional bool simplified = 1; +} + +message CCLCMsg_RequestPause { + optional .RequestPause_t pause_type = 1 [default = RP_PAUSE]; + optional int32 pause_group = 2; +} + +message CCLCMsg_CmdKeyValues { + optional bytes data = 1; +} + +message CCLCMsg_RconServerDetails { + optional bytes token = 1; +} + +message CMsgSource2SystemSpecs { + optional string cpu_id = 1; + optional string cpu_brand = 2; + optional uint32 cpu_model = 3; + optional uint32 cpu_num_physical = 4; + optional uint32 ram_physical_total_mb = 21; + optional string gpu_rendersystem_dll_name = 41; + optional uint32 gpu_vendor_id = 42; + optional string gpu_driver_name = 43; + optional uint32 gpu_driver_version_high = 44; + optional uint32 gpu_driver_version_low = 45; + optional uint32 gpu_dx_support_level = 46; + optional uint32 gpu_texture_memory_size_mb = 47; +} + +message CMsgSource2VProfLiteReportItem { + optional string name = 1; + optional uint32 active_samples = 2; + optional uint32 active_samples_1secmax = 4; + optional uint32 usec_max = 3; + optional uint32 usec_avg_active = 11; + optional uint32 usec_p50_active = 12; + optional uint32 usec_p99_active = 13; + optional uint32 usec_avg_all = 21; + optional uint32 usec_p50_all = 22; + optional uint32 usec_p99_all = 23; + optional uint32 usec_1secmax_avg_active = 31; + optional uint32 usec_1secmax_p50_active = 32; + optional uint32 usec_1secmax_p95_active = 33; + optional uint32 usec_1secmax_p99_active = 34; + optional uint32 usec_1secmax_avg_all = 41; + optional uint32 usec_1secmax_p50_all = 42; + optional uint32 usec_1secmax_p95_all = 43; + optional uint32 usec_1secmax_p99_all = 44; +} + +message CMsgSource2VProfLiteReport { + optional .CMsgSource2VProfLiteReportItem total = 1; + repeated .CMsgSource2VProfLiteReportItem items = 2; + optional uint32 discarded_frames = 3; +} + +message CMsgSource2NetworkFlowQuality { + optional uint32 duration = 1; + optional uint64 bytes_total = 5; + optional uint64 bytes_total_reliable = 6; + optional uint64 bytes_total_voice = 7; + optional uint32 bytes_sec_p95 = 10; + optional uint32 bytes_sec_p99 = 11; + optional uint32 enginemsgs_total = 20; + optional uint32 enginemsgs_sec_p95 = 21; + optional uint32 enginemsgs_sec_p99 = 22; + optional uint32 ticks_total = 40; + optional uint32 ticks_good = 41; + optional uint32 ticks_good_almost_late = 42; + optional uint32 ticks_fixed_dropped = 43; + optional uint32 ticks_fixed_late = 44; + optional uint32 ticks_bad_dropped = 45; + optional uint32 ticks_bad_late = 46; + optional uint32 ticks_bad_other = 47; + optional uint32 tick_missrate_samples_total = 50; + optional uint32 tick_missrate_samples_perfect = 51; + optional uint32 tick_missrate_samples_perfectnet = 52; + optional uint32 tick_missratenet_p75_x10 = 53; + optional uint32 tick_missratenet_p95_x10 = 54; + optional uint32 tick_missratenet_p99_x10 = 55; + optional sint32 recvmargin_p1 = 61; + optional sint32 recvmargin_p5 = 62; + optional sint32 recvmargin_p25 = 63; + optional sint32 recvmargin_p50 = 64; + optional sint32 recvmargin_p75 = 65; + optional sint32 recvmargin_p95 = 66; +} + +message CCLCMsg_Diagnostic { + optional .CMsgSource2SystemSpecs system_specs = 1; + optional .CMsgSource2VProfLiteReport vprof_report = 2; +} + +message CSource2Metrics_MatchPerfSummary_Notification { + message Client { + optional .CMsgSource2SystemSpecs system_specs = 1; + optional .CMsgSource2VProfLiteReport profile = 2; + optional uint32 build_id = 3; + optional fixed64 steamid = 10; + } + + optional uint32 appid = 1; + optional string game_mode = 2; + optional uint32 server_build_id = 3; + optional .CMsgSource2VProfLiteReport server_profile = 10; + repeated .CSource2Metrics_MatchPerfSummary_Notification.Client clients = 11; + optional string map = 20; +} + +message CSVCMsg_ServerInfo { + optional int32 protocol = 1; + optional int32 server_count = 2; + optional bool is_dedicated = 3; + optional bool is_hltv = 4; + optional int32 c_os = 6; + optional int32 max_clients = 10; + optional int32 max_classes = 11; + optional int32 player_slot = 12 [default = -1]; + optional float tick_interval = 13; + optional string game_dir = 14; + optional string map_name = 15; + optional string sky_name = 16; + optional string host_name = 17; + optional string addon_name = 18; + optional .CSVCMsg_GameSessionConfiguration game_session_config = 19; + optional bytes game_session_manifest = 20; +} + +message CSVCMsg_ClassInfo { + message class_t { + optional int32 class_id = 1; + optional string class_name = 3; + } + + optional bool create_on_client = 1; + repeated .CSVCMsg_ClassInfo.class_t classes = 2; +} + +message CSVCMsg_SetPause { + optional bool paused = 1; +} + +message CSVCMsg_VoiceInit { + optional int32 quality = 1; + optional string codec = 2; + optional int32 version = 3 [default = 0]; +} + +message CSVCMsg_Print { + optional string text = 1; +} + +message CSVCMsg_Sounds { + message sounddata_t { + optional sint32 origin_x = 1; + optional sint32 origin_y = 2; + optional sint32 origin_z = 3; + optional uint32 volume = 4; + optional float delay_value = 5; + optional int32 sequence_number = 6; + optional int32 entity_index = 7 [default = -1]; + optional int32 channel = 8; + optional int32 pitch = 9; + optional int32 flags = 10; + optional uint32 sound_num = 11; + optional fixed32 sound_num_handle = 12; + optional int32 speaker_entity = 13; + optional int32 random_seed = 14; + optional int32 sound_level = 15; + optional bool is_sentence = 16; + optional bool is_ambient = 17; + optional uint32 guid = 18; + optional fixed64 sound_resource_id = 19; + } + + optional bool reliable_sound = 1; + repeated .CSVCMsg_Sounds.sounddata_t sounds = 2; +} + +message CSVCMsg_Prefetch { + optional int32 sound_index = 1; + optional .PrefetchType resource_type = 2 [default = PFT_SOUND]; +} + +message CSVCMsg_SetView { + optional int32 entity_index = 1 [default = -1]; + optional int32 slot = 2 [default = -1]; +} + +message CSVCMsg_FixAngle { + optional bool relative = 1; + optional .CMsgQAngle angle = 2; +} + +message CSVCMsg_CrosshairAngle { + optional .CMsgQAngle angle = 1; +} + +message CSVCMsg_BSPDecal { + optional .CMsgVector pos = 1; + optional int32 decal_texture_index = 2; + optional int32 entity_index = 3 [default = -1]; + optional int32 model_index = 4; + optional bool low_priority = 5; +} + +message CSVCMsg_SplitScreen { + optional .ESplitScreenMessageType type = 1 [default = MSG_SPLITSCREEN_ADDUSER]; + optional int32 slot = 2; + optional int32 player_index = 3 [default = -1]; +} + +message CSVCMsg_GetCvarValue { + optional int32 cookie = 1; + optional string cvar_name = 2; +} + +message CSVCMsg_Menu { + optional int32 dialog_type = 1; + optional bytes menu_key_values = 2; +} + +message CSVCMsg_UserMessage { + optional int32 msg_type = 1; + optional bytes msg_data = 2; + optional int32 passthrough = 3; +} + +message CSVCMsg_SendTable { + message sendprop_t { + optional int32 type = 1; + optional string var_name = 2; + optional int32 flags = 3; + optional int32 priority = 4; + optional string dt_name = 5; + optional int32 num_elements = 6; + optional float low_value = 7; + optional float high_value = 8; + optional int32 num_bits = 9; + } + + optional bool is_end = 1; + optional string net_table_name = 2; + optional bool needs_decoder = 3; + repeated .CSVCMsg_SendTable.sendprop_t props = 4; +} + +message CSVCMsg_GameEventList { + message key_t { + optional int32 type = 1; + optional string name = 2; + } + + message descriptor_t { + optional int32 eventid = 1; + optional string name = 2; + repeated .CSVCMsg_GameEventList.key_t keys = 3; + } + + repeated .CSVCMsg_GameEventList.descriptor_t descriptors = 1; +} + +message CSVCMsg_PacketEntities { + message alternate_baseline_t { + optional int32 entity_index = 1; + optional int32 baseline_index = 2; + } + + message non_transmitted_entities_t { + optional int32 header_count = 1; + optional bytes data = 2; + } + + optional int32 max_entries = 1; + optional int32 updated_entries = 2; + optional bool legacy_is_delta = 3; + optional bool update_baseline = 4; + optional int32 baseline = 5; + optional int32 delta_from = 6; + optional bytes entity_data = 7; + optional bool pending_full_frame = 8; + optional uint32 active_spawngroup_handle = 9; + optional uint32 max_spawngroup_creationsequence = 10; + optional uint32 last_cmd_number_executed = 11; + optional sint32 last_cmd_number_recv_delta = 17; + optional uint32 server_tick = 12; + optional bytes serialized_entities = 13; + repeated .CSVCMsg_PacketEntities.alternate_baseline_t alternate_baselines = 15; + optional uint32 has_pvs_vis_bits = 16; + repeated sint32 cmd_recv_status = 22 [packed = true]; + optional .CSVCMsg_PacketEntities.non_transmitted_entities_t non_transmitted_entities = 19; + optional uint32 cq_starved_command_ticks = 20; + optional uint32 cq_discarded_command_ticks = 21; + optional bytes dev_padding = 999; +} + +message CSVCMsg_TempEntities { + optional bool reliable = 1; + optional int32 num_entries = 2; + optional bytes entity_data = 3; +} + +message CSVCMsg_CreateStringTable { + optional string name = 1; + optional int32 num_entries = 2; + optional bool user_data_fixed_size = 3; + optional int32 user_data_size = 4; + optional int32 user_data_size_bits = 5; + optional int32 flags = 6; + optional bytes string_data = 7; + optional int32 uncompressed_size = 8; + optional bool data_compressed = 9; + optional bool using_varint_bitcounts = 10; +} + +message CSVCMsg_UpdateStringTable { + optional int32 table_id = 1; + optional int32 num_changed_entries = 2; + optional bytes string_data = 3; +} + +message CSVCMsg_VoiceData { + optional .CMsgVoiceAudio audio = 1; + optional int32 client = 2 [default = -1]; + optional bool proximity = 3; + optional fixed64 xuid = 4; + optional int32 audible_mask = 5; + optional uint32 tick = 6; + optional int32 passthrough = 7; +} + +message CSVCMsg_PacketReliable { + optional int32 tick = 1; + optional int32 messagessize = 2; + optional bool state = 3; +} + +message CSVCMsg_FullFrameSplit { + optional int32 tick = 1; + optional int32 section = 2; + optional int32 total = 3; + optional bytes data = 4; +} + +message CSVCMsg_HLTVStatus { + optional string master = 1; + optional int32 clients = 2; + optional int32 slots = 3; + optional int32 proxies = 4; +} + +message CSVCMsg_ServerSteamID { + optional uint64 steam_id = 1; +} + +message CSVCMsg_CmdKeyValues { + optional bytes data = 1; +} + +message CSVCMsg_RconServerDetails { + optional bytes token = 1; + optional string details = 2; +} + +message CMsgIPCAddress { + optional fixed64 computer_guid = 1; + optional uint32 process_id = 2; +} + +message CMsgServerPeer { + optional int32 player_slot = 1 [default = -1]; + optional fixed64 steamid = 2; + optional .CMsgIPCAddress ipc = 3; + optional bool they_hear_you = 4; + optional bool you_hear_them = 5; + optional bool is_listenserver_host = 6; +} + +message CSVCMsg_PeerList { + repeated .CMsgServerPeer peer = 1; +} + +message CSVCMsg_ClearAllStringTables { + optional string mapname = 1; + optional bool create_tables_skipped = 3; +} + +message ProtoFlattenedSerializerField_t { + message polymorphic_field_t { + optional int32 polymorphic_field_serializer_name_sym = 1; + optional int32 polymorphic_field_serializer_version = 2; + } + + optional int32 var_type_sym = 1; + optional int32 var_name_sym = 2; + optional int32 bit_count = 3; + optional float low_value = 4; + optional float high_value = 5; + optional int32 encode_flags = 6; + optional int32 field_serializer_name_sym = 7; + optional int32 field_serializer_version = 8; + optional int32 send_node_sym = 9; + optional int32 var_encoder_sym = 10; + repeated .ProtoFlattenedSerializerField_t.polymorphic_field_t polymorphic_types = 11; + optional int32 var_serializer_sym = 12; +} + +message ProtoFlattenedSerializer_t { + optional int32 serializer_name_sym = 1; + optional int32 serializer_version = 2; + repeated int32 fields_index = 3; +} + +message CSVCMsg_FlattenedSerializer { + repeated .ProtoFlattenedSerializer_t serializers = 1; + repeated string symbols = 2; + repeated .ProtoFlattenedSerializerField_t fields = 3; +} + +message CSVCMsg_StopSound { + optional fixed32 guid = 1; +} + +message CBidirMsg_RebroadcastGameEvent { + optional bool posttoserver = 1; + optional int32 buftype = 2; + optional uint32 clientbitcount = 3; + optional uint64 receivingclients = 4; +} + +message CBidirMsg_RebroadcastSource { + optional int32 eventsource = 1; +} + +message CMsgServerNetworkStats { + message Port { + optional int32 port = 1; + optional string name = 2; + } + + message Player { + optional uint64 steamid = 1; + optional string remote_addr = 2; + optional int32 ping_avg_ms = 4; + optional float packet_loss_pct = 5; + optional bool is_bot = 6; + optional float loss_in = 7; + optional float loss_out = 8; + optional int32 engine_latency_ms = 9; + } + + optional bool dedicated = 1; + optional int32 cpu_usage = 2; + optional int32 memory_used_mb = 3; + optional int32 memory_free_mb = 4; + optional int32 uptime = 5; + optional int32 spawn_count = 6; + optional int32 num_clients = 8; + optional int32 num_bots = 9; + optional int32 num_spectators = 10; + optional int32 num_tv_relays = 11; + optional float fps = 12; + repeated .CMsgServerNetworkStats.Port ports = 17; + optional float avg_ping_ms = 18; + optional float avg_engine_latency_out = 19; + optional float avg_packets_out = 20; + optional float avg_packets_in = 21; + optional float avg_loss_out = 22; + optional float avg_loss_in = 23; + optional float avg_data_out = 24; + optional float avg_data_in = 25; + optional uint64 total_data_in = 26; + optional uint64 total_packets_in = 27; + optional uint64 total_data_out = 28; + optional uint64 total_packets_out = 29; + repeated .CMsgServerNetworkStats.Player players = 30; +} + +message CSVCMsg_HltvReplay { + optional int32 delay = 1; + optional int32 primary_target = 2 [default = -1]; + optional int32 replay_stop_at = 3; + optional int32 replay_start_at = 4; + optional int32 replay_slowdown_begin = 5; + optional int32 replay_slowdown_end = 6; + optional float replay_slowdown_rate = 7; + optional int32 reason = 8; +} + +message CCLCMsg_HltvReplay { + optional int32 request = 1; + optional float slowdown_length = 2; + optional float slowdown_rate = 3; + optional int32 primary_target = 4 [default = -1]; + optional float event_time = 5; +} + +message CSVCMsg_Broadcast_Command { + optional string cmd = 1; +} + +message CCLCMsg_HltvFixupOperatorTick { + optional int32 tick = 1; + optional bytes props_data = 2; + optional .CMsgVector origin = 3; + optional .CMsgQAngle eye_angles = 4; + optional int32 observer_mode = 5; + optional bool cameraman_scoreboard = 6; + optional int32 observer_target = 7; + optional .CMsgVector view_offset = 8; +} + +message CSVCMsg_HltvFixupOperatorStatus { + optional uint32 mode = 1; + optional string override_operator_name = 2; +} + +message CMsgServerUserCmd { + optional bytes data = 1; + optional int32 cmd_number = 2; + optional int32 player_slot = 3 [default = -1]; + optional int32 server_tick_executed = 4; + optional int32 client_tick = 5; +} + +message CSVCMsg_UserCommands { + repeated .CMsgServerUserCmd commands = 1; +} diff --git a/protobufs/cs2/network_connection.proto b/protobufs/cs2/network_connection.proto new file mode 100644 index 000000000..ac8b68787 --- /dev/null +++ b/protobufs/cs2/network_connection.proto @@ -0,0 +1,130 @@ +import "google/protobuf/descriptor.proto"; + +extend .google.protobuf.EnumValueOptions { + optional string network_connection_token = 50500; + optional string network_connection_detail_token = 50501; +} + +enum ENetworkDisconnectionReason { + NETWORK_DISCONNECT_INVALID = 0; + NETWORK_DISCONNECT_SHUTDOWN = 1; + NETWORK_DISCONNECT_DISCONNECT_BY_USER = 2 [(network_connection_token) = "#GameUI_Disconnect_User"]; + NETWORK_DISCONNECT_DISCONNECT_BY_SERVER = 3 [(network_connection_token) = "#GameUI_Disconnect_Server"]; + NETWORK_DISCONNECT_LOST = 4 [(network_connection_token) = "#GameUI_Disconnect_ConnectionLost"]; + NETWORK_DISCONNECT_OVERFLOW = 5 [(network_connection_token) = "#GameUI_Disconnect_ConnectionOverflow"]; + NETWORK_DISCONNECT_STEAM_BANNED = 6 [(network_connection_token) = "#GameUI_Disconnect_SteamIDBanned"]; + NETWORK_DISCONNECT_STEAM_INUSE = 7 [(network_connection_token) = "#GameUI_Disconnect_SteamIDInUse"]; + NETWORK_DISCONNECT_STEAM_TICKET = 8 [(network_connection_token) = "#GameUI_Disconnect_SteamTicket"]; + NETWORK_DISCONNECT_STEAM_LOGON = 9 [(network_connection_token) = "#GameUI_Disconnect_SteamLogon"]; + NETWORK_DISCONNECT_STEAM_AUTHCANCELLED = 10 [(network_connection_token) = "#GameUI_Disconnect_SteamLogon"]; + NETWORK_DISCONNECT_STEAM_AUTHALREADYUSED = 11 [(network_connection_token) = "#GameUI_Disconnect_SteamLogon"]; + NETWORK_DISCONNECT_STEAM_AUTHINVALID = 12 [(network_connection_token) = "#GameUI_Disconnect_SteamLogon"]; + NETWORK_DISCONNECT_STEAM_VACBANSTATE = 13 [(network_connection_token) = "#GameUI_Disconnect_SteamVAC"]; + NETWORK_DISCONNECT_STEAM_LOGGED_IN_ELSEWHERE = 14 [(network_connection_token) = "#GameUI_Disconnect_SteamInUse"]; + NETWORK_DISCONNECT_STEAM_VAC_CHECK_TIMEDOUT = 15 [(network_connection_token) = "#GameUI_Disconnect_SteamTimeOut"]; + NETWORK_DISCONNECT_STEAM_DROPPED = 16 [(network_connection_token) = "#GameUI_Disconnect_SteamDropped"]; + NETWORK_DISCONNECT_STEAM_OWNERSHIP = 17 [(network_connection_token) = "#GameUI_Disconnect_SteamOwnership"]; + NETWORK_DISCONNECT_SERVERINFO_OVERFLOW = 18 [(network_connection_token) = "#GameUI_Disconnect_ServerInfoOverflow"]; + NETWORK_DISCONNECT_TICKMSG_OVERFLOW = 19 [(network_connection_token) = "#GameUI_Disconnect_TickMessage"]; + NETWORK_DISCONNECT_STRINGTABLEMSG_OVERFLOW = 20 [(network_connection_token) = "#GameUI_Disconnect_StringTableMessage"]; + NETWORK_DISCONNECT_DELTAENTMSG_OVERFLOW = 21 [(network_connection_token) = "#GameUI_Disconnect_DeltaEntMessage"]; + NETWORK_DISCONNECT_TEMPENTMSG_OVERFLOW = 22 [(network_connection_token) = "#GameUI_Disconnect_TempEntMessage"]; + NETWORK_DISCONNECT_SOUNDSMSG_OVERFLOW = 23 [(network_connection_token) = "#GameUI_Disconnect_SoundsMessage"]; + NETWORK_DISCONNECT_SNAPSHOTOVERFLOW = 24 [(network_connection_token) = "#GameUI_Disconnect_SnapshotOverflow"]; + NETWORK_DISCONNECT_SNAPSHOTERROR = 25 [(network_connection_token) = "#GameUI_Disconnect_SnapshotError"]; + NETWORK_DISCONNECT_RELIABLEOVERFLOW = 26 [(network_connection_token) = "#GameUI_Disconnect_ReliableOverflow"]; + NETWORK_DISCONNECT_BADDELTATICK = 27 [(network_connection_token) = "#GameUI_Disconnect_BadClientDeltaTick"]; + NETWORK_DISCONNECT_NOMORESPLITS = 28 [(network_connection_token) = "#GameUI_Disconnect_NoMoreSplits"]; + NETWORK_DISCONNECT_TIMEDOUT = 29 [(network_connection_token) = "#GameUI_Disconnect_TimedOut"]; + NETWORK_DISCONNECT_DISCONNECTED = 30 [(network_connection_token) = "#GameUI_Disconnect_Disconnected"]; + NETWORK_DISCONNECT_LEAVINGSPLIT = 31 [(network_connection_token) = "#GameUI_Disconnect_LeavingSplit"]; + NETWORK_DISCONNECT_DIFFERENTCLASSTABLES = 32 [(network_connection_token) = "#GameUI_Disconnect_DifferentClassTables"]; + NETWORK_DISCONNECT_BADRELAYPASSWORD = 33 [(network_connection_token) = "#GameUI_Disconnect_BadRelayPassword"]; + NETWORK_DISCONNECT_BADSPECTATORPASSWORD = 34 [(network_connection_token) = "#GameUI_Disconnect_BadSpectatorPassword"]; + NETWORK_DISCONNECT_HLTVRESTRICTED = 35 [(network_connection_token) = "#GameUI_Disconnect_HLTVRestricted"]; + NETWORK_DISCONNECT_NOSPECTATORS = 36 [(network_connection_token) = "#GameUI_Disconnect_NoSpectators"]; + NETWORK_DISCONNECT_HLTVUNAVAILABLE = 37 [(network_connection_token) = "#GameUI_Disconnect_HLTVUnavailable"]; + NETWORK_DISCONNECT_HLTVSTOP = 38 [(network_connection_token) = "#GameUI_Disconnect_HLTVStop"]; + NETWORK_DISCONNECT_KICKED = 39 [(network_connection_token) = "#GameUI_Disconnect_Kicked"]; + NETWORK_DISCONNECT_BANADDED = 40 [(network_connection_token) = "#GameUI_Disconnect_BanAdded"]; + NETWORK_DISCONNECT_KICKBANADDED = 41 [(network_connection_token) = "#GameUI_Disconnect_KickBanAdded"]; + NETWORK_DISCONNECT_HLTVDIRECT = 42 [(network_connection_token) = "#GameUI_Disconnect_HLTVDirect"]; + NETWORK_DISCONNECT_PURESERVER_CLIENTEXTRA = 43 [(network_connection_token) = "#GameUI_Disconnect_PureServer_ClientExtra"]; + NETWORK_DISCONNECT_PURESERVER_MISMATCH = 44 [(network_connection_token) = "#GameUI_Disconnect_PureServer_Mismatch"]; + NETWORK_DISCONNECT_USERCMD = 45 [(network_connection_token) = "#GameUI_Disconnect_UserCmd"]; + NETWORK_DISCONNECT_REJECTED_BY_GAME = 46 [(network_connection_token) = "#GameUI_Disconnect_RejectedByGame"]; + NETWORK_DISCONNECT_MESSAGE_PARSE_ERROR = 47 [(network_connection_token) = "#GameUI_Disconnect_MessageParseError"]; + NETWORK_DISCONNECT_INVALID_MESSAGE_ERROR = 48 [(network_connection_token) = "#GameUI_Disconnect_InvalidMessageError"]; + NETWORK_DISCONNECT_BAD_SERVER_PASSWORD = 49 [(network_connection_token) = "#GameUI_Disconnect_BadServerPassword"]; + NETWORK_DISCONNECT_DIRECT_CONNECT_RESERVATION = 50; + NETWORK_DISCONNECT_CONNECTION_FAILURE = 51 [(network_connection_token) = "#GameUI_Disconnect_ConnectionFailure"]; + NETWORK_DISCONNECT_NO_PEER_GROUP_HANDLERS = 52 [(network_connection_token) = "#GameUI_Disconnect_NoPeerGroupHandlers"]; + NETWORK_DISCONNECT_RECONNECTION = 53; + NETWORK_DISCONNECT_LOOPSHUTDOWN = 54 [(network_connection_token) = "#GameUI_Disconnect_LoopShutdown"]; + NETWORK_DISCONNECT_LOOPDEACTIVATE = 55 [(network_connection_token) = "#GameUI_Disconnect_LoopDeactivate"]; + NETWORK_DISCONNECT_HOST_ENDGAME = 56 [(network_connection_token) = "#GameUI_Disconnect_Host_EndGame"]; + NETWORK_DISCONNECT_LOOP_LEVELLOAD_ACTIVATE = 57 [(network_connection_token) = "#GameUI_Disconnect_LoopLevelLoadActivate"]; + NETWORK_DISCONNECT_CREATE_SERVER_FAILED = 58 [(network_connection_token) = "#GameUI_Disconnect_CreateServerFailed"]; + NETWORK_DISCONNECT_EXITING = 59 [(network_connection_token) = "#GameUI_Disconnect_ExitingEngine"]; + NETWORK_DISCONNECT_REQUEST_HOSTSTATE_IDLE = 60 [(network_connection_token) = "#GameUI_Disconnect_Request_HSIdle"]; + NETWORK_DISCONNECT_REQUEST_HOSTSTATE_HLTVRELAY = 61 [(network_connection_token) = "#GameUI_Disconnect_Request_HLTVRelay"]; + NETWORK_DISCONNECT_CLIENT_CONSISTENCY_FAIL = 62 [(network_connection_token) = "#GameUI_ClientConsistencyFail"]; + NETWORK_DISCONNECT_CLIENT_UNABLE_TO_CRC_MAP = 63 [(network_connection_token) = "#GameUI_ClientUnableToCRCMap"]; + NETWORK_DISCONNECT_CLIENT_NO_MAP = 64 [(network_connection_token) = "#GameUI_ClientNoMap"]; + NETWORK_DISCONNECT_CLIENT_DIFFERENT_MAP = 65 [(network_connection_token) = "#GameUI_ClientDifferentMap"]; + NETWORK_DISCONNECT_SERVER_REQUIRES_STEAM = 66 [(network_connection_token) = "#GameUI_ServerRequireSteams"]; + NETWORK_DISCONNECT_STEAM_DENY_MISC = 67 [(network_connection_token) = "#GameUI_Disconnect_SteamDeny_Misc"]; + NETWORK_DISCONNECT_STEAM_DENY_BAD_ANTI_CHEAT = 68 [(network_connection_token) = "#GameUI_Disconnect_SteamDeny_BadAntiCheat"]; + NETWORK_DISCONNECT_SERVER_SHUTDOWN = 69 [(network_connection_token) = "#GameUI_Disconnect_ServerShutdown"]; + NETWORK_DISCONNECT_REPLAY_INCOMPATIBLE = 71 [(network_connection_token) = "#GameUI_Disconnect_ReplayIncompatible"]; + NETWORK_DISCONNECT_CONNECT_REQUEST_TIMEDOUT = 72 [(network_connection_token) = "#GameUI_Disconnect_ConnectionTimedout"]; + NETWORK_DISCONNECT_SERVER_INCOMPATIBLE = 73 [(network_connection_token) = "#GameUI_Disconnect_ServerIncompatible"]; + NETWORK_DISCONNECT_LOCALPROBLEM_MANYRELAYS = 74 [(network_connection_token) = "#GameUI_Disconnect_LocalProblem_ManyRelays"]; + NETWORK_DISCONNECT_LOCALPROBLEM_HOSTEDSERVERPRIMARYRELAY = 75 [(network_connection_token) = "#GameUI_Disconnect_LocalProblem_HostedServerPrimaryRelay"]; + NETWORK_DISCONNECT_LOCALPROBLEM_NETWORKCONFIG = 76 [(network_connection_token) = "#GameUI_Disconnect_LocalProblem_NetworkConfig"]; + NETWORK_DISCONNECT_LOCALPROBLEM_OTHER = 77 [(network_connection_token) = "#GameUI_Disconnect_LocalProblem_Other"]; + NETWORK_DISCONNECT_REMOTE_TIMEOUT = 79 [(network_connection_token) = "#GameUI_Disconnect_RemoteProblem_Timeout"]; + NETWORK_DISCONNECT_REMOTE_TIMEOUT_CONNECTING = 80 [(network_connection_token) = "#GameUI_Disconnect_RemoteProblem_TimeoutConnecting"]; + NETWORK_DISCONNECT_REMOTE_OTHER = 81 [(network_connection_token) = "#GameUI_Disconnect_RemoteProblem_Other"]; + NETWORK_DISCONNECT_REMOTE_BADCRYPT = 82 [(network_connection_token) = "#GameUI_Disconnect_RemoteProblem_BadCrypt"]; + NETWORK_DISCONNECT_REMOTE_CERTNOTTRUSTED = 83 [(network_connection_token) = "#GameUI_Disconnect_RemoteProblem_BadCert"]; + NETWORK_DISCONNECT_UNUSUAL = 84 [(network_connection_token) = "#GameUI_Disconnect_Unusual"]; + NETWORK_DISCONNECT_INTERNAL_ERROR = 85 [(network_connection_token) = "#GameUI_Disconnect_InternalError"]; + NETWORK_DISCONNECT_REJECT_BADCHALLENGE = 128 [(network_connection_token) = "#GameUI_ServerRejectBadChallenge"]; + NETWORK_DISCONNECT_REJECT_NOLOBBY = 129 [(network_connection_token) = "#GameUI_ServerNoLobby"]; + NETWORK_DISCONNECT_REJECT_BACKGROUND_MAP = 130 [(network_connection_token) = "#Valve_Reject_Background_Map"]; + NETWORK_DISCONNECT_REJECT_SINGLE_PLAYER = 131 [(network_connection_token) = "#Valve_Reject_Single_Player"]; + NETWORK_DISCONNECT_REJECT_HIDDEN_GAME = 132 [(network_connection_token) = "#Valve_Reject_Hidden_Game"]; + NETWORK_DISCONNECT_REJECT_LANRESTRICT = 133 [(network_connection_token) = "#GameUI_ServerRejectLANRestrict"]; + NETWORK_DISCONNECT_REJECT_BADPASSWORD = 134 [(network_connection_token) = "#GameUI_ServerRejectBadPassword"]; + NETWORK_DISCONNECT_REJECT_SERVERFULL = 135 [(network_connection_token) = "#GameUI_ServerRejectServerFull"]; + NETWORK_DISCONNECT_REJECT_INVALIDRESERVATION = 136 [(network_connection_token) = "#GameUI_ServerRejectInvalidReservation"]; + NETWORK_DISCONNECT_REJECT_FAILEDCHANNEL = 137 [(network_connection_token) = "#GameUI_ServerRejectFailedChannel"]; + NETWORK_DISCONNECT_REJECT_CONNECT_FROM_LOBBY = 138 [(network_connection_token) = "#Valve_Reject_Connect_From_Lobby"]; + NETWORK_DISCONNECT_REJECT_RESERVED_FOR_LOBBY = 139 [(network_connection_token) = "#Valve_Reject_Reserved_For_Lobby"]; + NETWORK_DISCONNECT_REJECT_INVALIDKEYLENGTH = 140 [(network_connection_token) = "#GameUI_ServerReject_InvalidKeyLength"]; + NETWORK_DISCONNECT_REJECT_OLDPROTOCOL = 141 [(network_connection_token) = "#GameUI_ServerRejectOldProtocol"]; + NETWORK_DISCONNECT_REJECT_NEWPROTOCOL = 142 [(network_connection_token) = "#GameUI_ServerRejectNewProtocol"]; + NETWORK_DISCONNECT_REJECT_INVALIDCONNECTION = 143 [(network_connection_token) = "#GameUI_ServerRejectInvalidConnection"]; + NETWORK_DISCONNECT_REJECT_INVALIDCERTLEN = 144 [(network_connection_token) = "#GameUI_ServerRejectInvalidCertLen"]; + NETWORK_DISCONNECT_REJECT_INVALIDSTEAMCERTLEN = 145 [(network_connection_token) = "#GameUI_ServerRejectInvalidSteamCertLen"]; + NETWORK_DISCONNECT_REJECT_STEAM = 146 [(network_connection_token) = "#GameUI_ServerRejectSteam"]; + NETWORK_DISCONNECT_REJECT_SERVERAUTHDISABLED = 147 [(network_connection_token) = "#GameUI_ServerAuthDisabled"]; + NETWORK_DISCONNECT_REJECT_SERVERCDKEYAUTHINVALID = 148 [(network_connection_token) = "#GameUI_ServerCDKeyAuthInvalid"]; + NETWORK_DISCONNECT_REJECT_BANNED = 149 [(network_connection_token) = "#GameUI_ServerRejectBanned"]; + NETWORK_DISCONNECT_KICKED_TEAMKILLING = 150 [(network_connection_token) = "#Player_DisconnectReason_TeamKilling"]; + NETWORK_DISCONNECT_KICKED_TK_START = 151 [(network_connection_token) = "#Player_DisconnectReason_TK_Start"]; + NETWORK_DISCONNECT_KICKED_UNTRUSTEDACCOUNT = 152 [(network_connection_token) = "#Player_DisconnectReason_UntrustedAccount"]; + NETWORK_DISCONNECT_KICKED_CONVICTEDACCOUNT = 153 [(network_connection_token) = "#Player_DisconnectReason_ConvictedAccount"]; + NETWORK_DISCONNECT_KICKED_COMPETITIVECOOLDOWN = 154 [(network_connection_token) = "#Player_DisconnectReason_CompetitiveCooldown"]; + NETWORK_DISCONNECT_KICKED_TEAMHURTING = 155 [(network_connection_token) = "#Player_DisconnectReason_TeamHurting"]; + NETWORK_DISCONNECT_KICKED_HOSTAGEKILLING = 156 [(network_connection_token) = "#Player_DisconnectReason_HostageKilling"]; + NETWORK_DISCONNECT_KICKED_VOTEDOFF = 157 [(network_connection_token) = "#Player_DisconnectReason_VotedOff"]; + NETWORK_DISCONNECT_KICKED_IDLE = 158 [(network_connection_token) = "#Player_DisconnectReason_Idle"]; + NETWORK_DISCONNECT_KICKED_SUICIDE = 159 [(network_connection_token) = "#Player_DisconnectReason_Suicide"]; + NETWORK_DISCONNECT_KICKED_NOSTEAMLOGIN = 160 [(network_connection_token) = "#Player_DisconnectReason_NoSteamLogin"]; + NETWORK_DISCONNECT_KICKED_NOSTEAMTICKET = 161 [(network_connection_token) = "#Player_DisconnectReason_NoSteamTicket"]; + NETWORK_DISCONNECT_KICKED_INPUTAUTOMATION = 162 [(network_connection_token) = "#Player_DisconnectReason_InputAutomation", (network_connection_detail_token) = "#Player_DisconnectReason_InputAutomation_Detail"]; + NETWORK_DISCONNECT_KICKED_VACNETABNORMALBEHAVIOR = 163 [(network_connection_token) = "#Player_DisconnectReason_VacNetAbnormalBehavior"]; + NETWORK_DISCONNECT_KICKED_INSECURECLIENT = 164 [(network_connection_token) = "#Player_DisconnectReason_InsecureClient"]; +} diff --git a/protobufs/cs2/networkbasetypes.proto b/protobufs/cs2/networkbasetypes.proto new file mode 100644 index 000000000..9a3a60d9c --- /dev/null +++ b/protobufs/cs2/networkbasetypes.proto @@ -0,0 +1,241 @@ +import "network_connection.proto"; + +enum SignonState_t { + SIGNONSTATE_NONE = 0; + SIGNONSTATE_CHALLENGE = 1; + SIGNONSTATE_CONNECTED = 2; + SIGNONSTATE_NEW = 3; + SIGNONSTATE_PRESPAWN = 4; + SIGNONSTATE_SPAWN = 5; + SIGNONSTATE_FULL = 6; + SIGNONSTATE_CHANGELEVEL = 7; +} + +enum NET_Messages { + net_NOP = 0; + net_Disconnect_Legacy = 1; + net_SplitScreenUser = 3; + net_Tick = 4; + net_StringCmd = 5; + net_SetConVar = 6; + net_SignonState = 7; + net_SpawnGroup_Load = 8; + net_SpawnGroup_ManifestUpdate = 9; + net_SpawnGroup_SetCreationTick = 11; + net_SpawnGroup_Unload = 12; + net_SpawnGroup_LoadCompleted = 13; + net_DebugOverlay = 15; +} + +enum SpawnGroupFlags_t { + SPAWN_GROUP_LOAD_ENTITIES_FROM_SAVE = 1; + SPAWN_GROUP_DONT_SPAWN_ENTITIES = 2; + SPAWN_GROUP_SYNCHRONOUS_SPAWN = 4; + SPAWN_GROUP_IS_INITIAL_SPAWN_GROUP = 8; + SPAWN_GROUP_CREATE_CLIENT_ONLY_ENTITIES = 16; + SPAWN_GROUP_BLOCK_UNTIL_LOADED = 64; + SPAWN_GROUP_LOAD_STREAMING_DATA = 128; + SPAWN_GROUP_CREATE_NEW_SCENE_WORLD = 256; +} + +message CMsgVector { + optional float x = 1; + optional float y = 2; + optional float z = 3; + optional float w = 4; +} + +message CMsgVector2D { + optional float x = 1; + optional float y = 2; +} + +message CMsgQAngle { + optional float x = 1; + optional float y = 2; + optional float z = 3; +} + +message CMsgQuaternion { + optional float x = 1; + optional float y = 2; + optional float z = 3; + optional float w = 4; +} + +message CMsgTransform { + optional .CMsgVector position = 1; + optional float scale = 2; + optional .CMsgQuaternion orientation = 3; +} + +message CMsgRGBA { + optional int32 r = 1; + optional int32 g = 2; + optional int32 b = 3; + optional int32 a = 4; +} + +message CMsgPlayerInfo { + optional string name = 1; + optional fixed64 xuid = 2; + optional int32 userid = 3; + optional fixed64 steamid = 4; + optional bool fakeplayer = 5; + optional bool ishltv = 6; +} + +message CEntityMsg { + optional uint32 target_entity = 1 [default = 16777215]; +} + +message CMsg_CVars { + message CVar { + optional string name = 1; + optional string value = 2; + } + + repeated .CMsg_CVars.CVar cvars = 1; +} + +message CNETMsg_NOP { +} + +message CNETMsg_SplitScreenUser { + optional int32 slot = 1; +} + +message CNETMsg_Tick { + optional uint32 tick = 1; + optional uint32 host_computationtime = 4; + optional uint32 host_computationtime_std_deviation = 5; + optional uint32 legacy_host_loss = 7; + optional uint32 host_unfiltered_frametime = 8; + optional uint32 hltv_replay_flags = 9; + optional uint32 expected_long_tick = 10; + optional string expected_long_tick_reason = 11; + optional uint32 host_frame_dropped_pct_x10 = 12; + optional uint32 host_frame_irregular_arrival_pct_x10 = 13; +} + +message CNETMsg_StringCmd { + optional string command = 1; + optional uint32 prediction_sync = 2; +} + +message CNETMsg_SetConVar { + optional .CMsg_CVars convars = 1; +} + +message CNETMsg_SignonState { + optional .SignonState_t signon_state = 1 [default = SIGNONSTATE_NONE]; + optional uint32 spawn_count = 2; + optional uint32 num_server_players = 3; + repeated string players_networkids = 4; + optional string map_name = 5; + optional string addons = 6; +} + +message CSVCMsg_GameEvent { + message key_t { + optional int32 type = 1; + optional string val_string = 2; + optional float val_float = 3; + optional int32 val_long = 4; + optional int32 val_short = 5; + optional int32 val_byte = 6; + optional bool val_bool = 7; + optional uint64 val_uint64 = 8; + } + + optional string event_name = 1; + optional int32 eventid = 2; + repeated .CSVCMsg_GameEvent.key_t keys = 3; +} + +message CSVCMsgList_GameEvents { + message event_t { + optional int32 tick = 1; + optional .CSVCMsg_GameEvent event = 2; + } + + repeated .CSVCMsgList_GameEvents.event_t events = 1; +} + +message CNETMsg_SpawnGroup_Load { + optional string worldname = 1; + optional string entitylumpname = 2; + optional string entityfiltername = 3; + optional uint32 spawngrouphandle = 4; + optional uint32 spawngroupownerhandle = 5; + optional .CMsgVector world_offset_pos = 6; + optional .CMsgQAngle world_offset_angle = 7; + optional bytes spawngroupmanifest = 8; + optional uint32 flags = 9; + optional int32 tickcount = 10; + optional bool manifestincomplete = 11; + optional string localnamefixup = 12; + optional string parentnamefixup = 13; + optional int32 manifestloadpriority = 14; + optional uint32 worldgroupid = 15; + optional uint32 creationsequence = 16; + optional string savegamefilename = 17; + optional uint32 spawngroupparenthandle = 18; + optional bool leveltransition = 19; + optional string worldgroupname = 20; +} + +message CNETMsg_SpawnGroup_ManifestUpdate { + optional uint32 spawngrouphandle = 1; + optional bytes spawngroupmanifest = 2; + optional bool manifestincomplete = 3; +} + +message CNETMsg_SpawnGroup_SetCreationTick { + optional uint32 spawngrouphandle = 1; + optional int32 tickcount = 2; + optional uint32 creationsequence = 3; +} + +message CNETMsg_SpawnGroup_Unload { + optional uint32 spawngrouphandle = 1; + optional uint32 flags = 2; + optional int32 tickcount = 3; +} + +message CNETMsg_SpawnGroup_LoadCompleted { + optional uint32 spawngrouphandle = 1; +} + +message CSVCMsg_GameSessionConfiguration { + optional bool is_multiplayer = 1; + optional bool is_loadsavegame = 2; + optional bool is_background_map = 3; + optional bool is_headless = 4; + optional uint32 min_client_limit = 5; + optional uint32 max_client_limit = 6; + optional uint32 max_clients = 7; + optional fixed32 tick_interval = 8; + optional string hostname = 9; + optional string savegamename = 10; + optional string s1_mapname = 11; + optional string gamemode = 12; + optional string server_ip_address = 13; + optional bytes data = 14; + optional bool is_localonly = 15; + optional bool no_steam_server = 19; + optional bool is_transition = 16; + optional string previouslevel = 17; + optional string landmarkname = 18; +} + +message CNETMsg_DebugOverlay { + optional int32 etype = 1; + repeated .CMsgVector vectors = 2; + repeated .CMsgRGBA colors = 3; + repeated float dimensions = 4; + repeated float times = 5; + repeated bool bools = 6; + repeated uint64 uint64s = 7; + repeated string strings = 8; +} diff --git a/protobufs/cs2/networksystem_protomessages.proto b/protobufs/cs2/networksystem_protomessages.proto new file mode 100644 index 000000000..1f51cf364 --- /dev/null +++ b/protobufs/cs2/networksystem_protomessages.proto @@ -0,0 +1,19 @@ +message NetMessageSplitscreenUserChanged { + optional uint32 slot = 1; +} + +message NetMessageConnectionClosed { + optional uint32 reason = 1; + optional string message = 2; +} + +message NetMessageConnectionCrashed { + optional uint32 reason = 1; + optional string message = 2; +} + +message NetMessagePacketStart { +} + +message NetMessagePacketEnd { +} diff --git a/protobufs/cs2/steammessages.proto b/protobufs/cs2/steammessages.proto new file mode 100644 index 000000000..96cdf6978 --- /dev/null +++ b/protobufs/cs2/steammessages.proto @@ -0,0 +1,45 @@ +import "google/protobuf/descriptor.proto"; + +extend .google.protobuf.FieldOptions { + optional bool key_field = 60000 [default = false]; +} + +extend .google.protobuf.MessageOptions { + optional int32 msgpool_soft_limit = 60000 [default = 32]; + optional int32 msgpool_hard_limit = 60001 [default = 384]; +} + +enum GCProtoBufMsgSrc { + GCProtoBufMsgSrc_Unspecified = 0; + GCProtoBufMsgSrc_FromSystem = 1; + GCProtoBufMsgSrc_FromSteamID = 2; + GCProtoBufMsgSrc_FromGC = 3; + GCProtoBufMsgSrc_ReplySystem = 4; +} + +message CMsgProtoBufHeader { + option (msgpool_soft_limit) = 256; + option (msgpool_hard_limit) = 1024; + + optional fixed64 client_steam_id = 1; + optional int32 client_session_id = 2; + optional uint32 source_app_id = 3; + optional fixed64 job_id_source = 10 [default = 18446744073709551615]; + optional fixed64 job_id_target = 11 [default = 18446744073709551615]; + optional string target_job_name = 12; + optional int32 eresult = 13 [default = 2]; + optional string error_message = 14; + optional uint32 ip = 15; + optional .GCProtoBufMsgSrc gc_msg_src = 200 [default = GCProtoBufMsgSrc_Unspecified]; + optional uint32 gc_dir_index_source = 201; +} + +message CChinaAgreementSessions_StartAgreementSessionInGame_Request { + optional uint32 appid = 1; + optional fixed64 steamid = 2; + optional string client_ipaddress = 3; +} + +message CChinaAgreementSessions_StartAgreementSessionInGame_Response { + optional string agreement_url = 1; +} diff --git a/protobufs/cs2/te.proto b/protobufs/cs2/te.proto new file mode 100644 index 000000000..da76e3077 --- /dev/null +++ b/protobufs/cs2/te.proto @@ -0,0 +1,262 @@ +import "networkbasetypes.proto"; + +enum ETEProtobufIds { + TE_EffectDispatchId = 400; + TE_ArmorRicochetId = 401; + TE_BeamEntPointId = 402; + TE_BeamEntsId = 403; + TE_BeamPointsId = 404; + TE_BeamRingId = 405; + TE_BSPDecalId = 407; + TE_BubblesId = 408; + TE_BubbleTrailId = 409; + TE_DecalId = 410; + TE_WorldDecalId = 411; + TE_EnergySplashId = 412; + TE_FizzId = 413; + TE_ShatterSurfaceId = 414; + TE_GlowSpriteId = 415; + TE_ImpactId = 416; + TE_MuzzleFlashId = 417; + TE_BloodStreamId = 418; + TE_ExplosionId = 419; + TE_DustId = 420; + TE_LargeFunnelId = 421; + TE_SparksId = 422; + TE_PhysicsPropId = 423; + TE_PlayerDecalId = 424; + TE_ProjectedDecalId = 425; + TE_SmokeId = 426; +} + +message CMsgTEArmorRicochet { + optional .CMsgVector pos = 1; + optional .CMsgVector dir = 2; +} + +message CMsgTEBaseBeam { + optional fixed64 modelindex = 1; + optional fixed64 haloindex = 2; + optional uint32 startframe = 3; + optional uint32 framerate = 4; + optional float life = 5; + optional float width = 6; + optional float endwidth = 7; + optional uint32 fadelength = 8; + optional float amplitude = 9; + optional fixed32 color = 10; + optional uint32 speed = 11; + optional uint32 flags = 12; +} + +message CMsgTEBeamEntPoint { + optional .CMsgTEBaseBeam base = 1; + optional uint32 startentity = 2; + optional uint32 endentity = 3; + optional .CMsgVector start = 4; + optional .CMsgVector end = 5; +} + +message CMsgTEBeamEnts { + optional .CMsgTEBaseBeam base = 1; + optional uint32 startentity = 2; + optional uint32 endentity = 3; +} + +message CMsgTEBeamPoints { + optional .CMsgTEBaseBeam base = 1; + optional .CMsgVector start = 2; + optional .CMsgVector end = 3; +} + +message CMsgTEBeamRing { + optional .CMsgTEBaseBeam base = 1; + optional uint32 startentity = 2; + optional uint32 endentity = 3; +} + +message CMsgTEBSPDecal { + optional .CMsgVector origin = 1; + optional .CMsgVector normal = 2; + optional .CMsgVector saxis = 3; + optional int32 entity = 4 [default = -1]; + optional uint32 index = 5; +} + +message CMsgTEBubbles { + optional .CMsgVector mins = 1; + optional .CMsgVector maxs = 2; + optional float height = 3; + optional uint32 count = 4; + optional float speed = 5; +} + +message CMsgTEBubbleTrail { + optional .CMsgVector mins = 1; + optional .CMsgVector maxs = 2; + optional float waterz = 3; + optional uint32 count = 4; + optional float speed = 5; +} + +message CMsgTEDecal { + optional .CMsgVector origin = 1; + optional .CMsgVector start = 2; + optional int32 entity = 3 [default = -1]; + optional uint32 hitbox = 4; + optional uint32 index = 5; +} + +message CMsgEffectData { + optional .CMsgVector origin = 1; + optional .CMsgVector start = 2; + optional .CMsgVector normal = 3; + optional .CMsgQAngle angles = 4; + optional fixed32 entity = 5 [default = 16777215]; + optional fixed32 otherentity = 6 [default = 16777215]; + optional float scale = 7; + optional float magnitude = 8; + optional float radius = 9; + optional fixed32 surfaceprop = 10; + optional fixed64 effectindex = 11; + optional uint32 damagetype = 12; + optional uint32 material = 13; + optional uint32 hitbox = 14; + optional uint32 color = 15; + optional uint32 flags = 16; + optional int32 attachmentindex = 17; + optional uint32 effectname = 18; + optional uint32 attachmentname = 19; +} + +message CMsgTEEffectDispatch { + optional .CMsgEffectData effectdata = 1; +} + +message CMsgTEEnergySplash { + optional .CMsgVector pos = 1; + optional .CMsgVector dir = 2; + optional bool explosive = 3; +} + +message CMsgTEFizz { + optional int32 entity = 1 [default = -1]; + optional uint32 density = 2; + optional int32 current = 3; +} + +message CMsgTEShatterSurface { + optional .CMsgVector origin = 1; + optional .CMsgQAngle angles = 2; + optional .CMsgVector force = 3; + optional .CMsgVector forcepos = 4; + optional float width = 5; + optional float height = 6; + optional float shardsize = 7; + optional uint32 surfacetype = 8; + optional fixed32 frontcolor = 9; + optional fixed32 backcolor = 10; +} + +message CMsgTEGlowSprite { + optional .CMsgVector origin = 1; + optional float scale = 2; + optional float life = 3; + optional uint32 brightness = 4; +} + +message CMsgTEImpact { + optional .CMsgVector origin = 1; + optional .CMsgVector normal = 2; + optional uint32 type = 3; +} + +message CMsgTEMuzzleFlash { + optional .CMsgVector origin = 1; + optional .CMsgQAngle angles = 2; + optional float scale = 3; + optional uint32 type = 4; +} + +message CMsgTEBloodStream { + optional .CMsgVector origin = 1; + optional .CMsgVector direction = 2; + optional fixed32 color = 3; + optional uint32 amount = 4; +} + +message CMsgTEExplosion { + optional .CMsgVector origin = 1; + optional uint32 framerate = 2; + optional uint32 flags = 3; + optional .CMsgVector normal = 4; + optional uint32 materialtype = 5; + optional uint32 radius = 6; + optional uint32 magnitude = 7; + optional float scale = 8; + optional bool affect_ragdolls = 9; + optional string effect_name = 10; + optional uint32 explosion_type = 11; + optional bool create_debris = 12; + optional .CMsgVector debris_origin = 13; + optional fixed32 debris_surfaceprop = 14; +} + +message CMsgTEDust { + optional .CMsgVector origin = 1; + optional float size = 2; + optional float speed = 3; + optional .CMsgVector direction = 4; +} + +message CMsgTELargeFunnel { + optional .CMsgVector origin = 1; + optional uint32 reversed = 2; +} + +message CMsgTESparks { + optional .CMsgVector origin = 1; + optional uint32 magnitude = 2; + optional uint32 length = 3; + optional .CMsgVector direction = 4; +} + +message CMsgTEPhysicsProp { + optional .CMsgVector origin = 1; + optional .CMsgVector velocity = 2; + optional .CMsgQAngle angles = 3; + optional fixed32 skin = 4; + optional uint32 flags = 5; + optional uint32 effects = 6; + optional fixed32 color = 7; + optional fixed64 modelindex = 8; + optional uint32 unused_breakmodelsnottomake = 9; + optional float scale = 10; + optional .CMsgVector dmgpos = 11; + optional .CMsgVector dmgdir = 12; + optional int32 dmgtype = 13; +} + +message CMsgTEPlayerDecal { + optional .CMsgVector origin = 1; + optional int32 player = 2 [default = -1]; + optional int32 entity = 3 [default = -1]; +} + +message CMsgTEProjectedDecal { + optional .CMsgVector origin = 1; + optional .CMsgQAngle angles = 2; + optional uint32 index = 3; + optional float distance = 4; +} + +message CMsgTESmoke { + optional .CMsgVector origin = 1; + optional float scale = 2; +} + +message CMsgTEWorldDecal { + optional .CMsgVector origin = 1; + optional .CMsgVector normal = 2; + optional uint32 index = 3; +} diff --git a/protobufs/cs2/usercmd.proto b/protobufs/cs2/usercmd.proto new file mode 100644 index 000000000..e0ffba8a5 --- /dev/null +++ b/protobufs/cs2/usercmd.proto @@ -0,0 +1,39 @@ +import "networkbasetypes.proto"; + +message CInButtonStatePB { + optional uint64 buttonstate1 = 1; + optional uint64 buttonstate2 = 2; + optional uint64 buttonstate3 = 3; +} + +message CSubtickMoveStep { + optional uint64 button = 1; + optional bool pressed = 2; + optional float when = 3; + optional float analog_forward_delta = 4; + optional float analog_left_delta = 5; +} + +message CBaseUserCmdPB { + optional int32 legacy_command_number = 1; + optional int32 client_tick = 2; + optional .CInButtonStatePB buttons_pb = 3; + optional .CMsgQAngle viewangles = 4; + optional float forwardmove = 5; + optional float leftmove = 6; + optional float upmove = 7; + optional int32 impulse = 8; + optional int32 weaponselect = 9; + optional int32 random_seed = 10; + optional int32 mousedx = 11; + optional int32 mousedy = 12; + optional uint32 pawn_entity_handle = 14 [default = 16777215]; + repeated .CSubtickMoveStep subtick_moves = 18; + optional bytes move_crc = 19; + optional uint32 consumed_server_angle_changes = 20; + optional int32 cmd_flags = 21; +} + +message CUserCmdBasePB { + optional .CBaseUserCmdPB base = 1; +} diff --git a/protobufs/cs2/usermessages.proto b/protobufs/cs2/usermessages.proto new file mode 100644 index 000000000..7c6dd3d27 --- /dev/null +++ b/protobufs/cs2/usermessages.proto @@ -0,0 +1,812 @@ +import "networkbasetypes.proto"; + +enum EBaseUserMessages { + UM_AchievementEvent = 101; + UM_CloseCaption = 102; + UM_CloseCaptionDirect = 103; + UM_CurrentTimescale = 104; + UM_DesiredTimescale = 105; + UM_Fade = 106; + UM_GameTitle = 107; + UM_HudMsg = 110; + UM_HudText = 111; + UM_ColoredText = 113; + UM_RequestState = 114; + UM_ResetHUD = 115; + UM_Rumble = 116; + UM_SayText = 117; + UM_SayText2 = 118; + UM_SayTextChannel = 119; + UM_Shake = 120; + UM_ShakeDir = 121; + UM_WaterShake = 122; + UM_TextMsg = 124; + UM_ScreenTilt = 125; + UM_VoiceMask = 128; + UM_SendAudio = 130; + UM_ItemPickup = 131; + UM_AmmoDenied = 132; + UM_ShowMenu = 134; + UM_CreditsMsg = 135; + UM_CloseCaptionPlaceholder = 142; + UM_CameraTransition = 143; + UM_AudioParameter = 144; + UM_ParticleManager = 145; + UM_HudError = 146; + UM_CustomGameEvent = 148; + UM_AnimGraphUpdate = 149; + UM_HapticsManagerPulse = 150; + UM_HapticsManagerEffect = 151; + UM_CommandQueueState = 152; + UM_UpdateCssClasses = 153; + UM_ServerFrameTime = 154; + UM_LagCompensationError = 155; + UM_RequestDllStatus = 156; + UM_RequestUtilAction = 157; + UM_UtilActionResponse = 158; + UM_DllStatusResponse = 159; + UM_RequestInventory = 160; + UM_InventoryResponse = 161; + UM_RequestDiagnostic = 162; + UM_DiagnosticResponse = 163; + UM_ExtraUserData = 164; + UM_NotifyResponseFound = 165; + UM_PlayResponseConditional = 166; + UM_MAX_BASE = 200; +} + +enum EBaseEntityMessages { + EM_PlayJingle = 136; + EM_ScreenOverlay = 137; + EM_RemoveAllDecals = 138; + EM_PropagateForce = 139; + EM_DoSpark = 140; + EM_FixAngle = 141; +} + +enum eRollType { + ROLL_NONE = -1; + ROLL_STATS = 0; + ROLL_CREDITS = 1; + ROLL_LATE_JOIN_LOGO = 2; + ROLL_OUTTRO = 3; +} + +enum PARTICLE_MESSAGE { + GAME_PARTICLE_MANAGER_EVENT_CREATE = 0; + GAME_PARTICLE_MANAGER_EVENT_UPDATE = 1; + GAME_PARTICLE_MANAGER_EVENT_UPDATE_FORWARD = 2; + GAME_PARTICLE_MANAGER_EVENT_UPDATE_ORIENTATION = 3; + GAME_PARTICLE_MANAGER_EVENT_UPDATE_FALLBACK = 4; + GAME_PARTICLE_MANAGER_EVENT_UPDATE_ENT = 5; + GAME_PARTICLE_MANAGER_EVENT_UPDATE_OFFSET = 6; + GAME_PARTICLE_MANAGER_EVENT_DESTROY = 7; + GAME_PARTICLE_MANAGER_EVENT_DESTROY_INVOLVING = 8; + GAME_PARTICLE_MANAGER_EVENT_RELEASE = 9; + GAME_PARTICLE_MANAGER_EVENT_LATENCY = 10; + GAME_PARTICLE_MANAGER_EVENT_SHOULD_DRAW = 11; + GAME_PARTICLE_MANAGER_EVENT_FROZEN = 12; + GAME_PARTICLE_MANAGER_EVENT_CHANGE_CONTROL_POINT_ATTACHMENT = 13; + GAME_PARTICLE_MANAGER_EVENT_UPDATE_ENTITY_POSITION = 14; + GAME_PARTICLE_MANAGER_EVENT_SET_FOW_PROPERTIES = 15; + GAME_PARTICLE_MANAGER_EVENT_SET_TEXT = 16; + GAME_PARTICLE_MANAGER_EVENT_SET_SHOULD_CHECK_FOW = 17; + GAME_PARTICLE_MANAGER_EVENT_SET_CONTROL_POINT_MODEL = 18; + GAME_PARTICLE_MANAGER_EVENT_SET_CONTROL_POINT_SNAPSHOT = 19; + GAME_PARTICLE_MANAGER_EVENT_SET_TEXTURE_ATTRIBUTE = 20; + GAME_PARTICLE_MANAGER_EVENT_SET_SCENE_OBJECT_GENERIC_FLAG = 21; + GAME_PARTICLE_MANAGER_EVENT_SET_SCENE_OBJECT_TINT_AND_DESAT = 22; + GAME_PARTICLE_MANAGER_EVENT_DESTROY_NAMED = 23; + GAME_PARTICLE_MANAGER_EVENT_SKIP_TO_TIME = 24; + GAME_PARTICLE_MANAGER_EVENT_CAN_FREEZE = 25; + GAME_PARTICLE_MANAGER_EVENT_SET_NAMED_VALUE_CONTEXT = 26; + GAME_PARTICLE_MANAGER_EVENT_UPDATE_TRANSFORM = 27; + GAME_PARTICLE_MANAGER_EVENT_FREEZE_TRANSITION_OVERRIDE = 28; + GAME_PARTICLE_MANAGER_EVENT_FREEZE_INVOLVING = 29; + GAME_PARTICLE_MANAGER_EVENT_ADD_MODELLIST_OVERRIDE_ELEMENT = 30; + GAME_PARTICLE_MANAGER_EVENT_CLEAR_MODELLIST_OVERRIDE = 31; + GAME_PARTICLE_MANAGER_EVENT_CREATE_PHYSICS_SIM = 32; + GAME_PARTICLE_MANAGER_EVENT_DESTROY_PHYSICS_SIM = 33; + GAME_PARTICLE_MANAGER_EVENT_SET_VDATA = 34; + GAME_PARTICLE_MANAGER_EVENT_SET_MATERIAL_OVERRIDE = 35; +} + +enum EHapticPulseType { + VR_HAND_HAPTIC_PULSE_LIGHT = 0; + VR_HAND_HAPTIC_PULSE_MEDIUM = 1; + VR_HAND_HAPTIC_PULSE_STRONG = 2; +} + +message CUserMessageAchievementEvent { + optional uint32 achievement = 1; +} + +message CUserMessageCloseCaption { + optional fixed32 hash = 1; + optional float duration = 2; + optional bool from_player = 3; + optional int32 ent_index = 4 [default = -1]; +} + +message CUserMessageCloseCaptionDirect { + optional fixed32 hash = 1; + optional float duration = 2; + optional bool from_player = 3; + optional int32 ent_index = 4 [default = -1]; +} + +message CUserMessageCloseCaptionPlaceholder { + optional string string = 1; + optional float duration = 2; + optional bool from_player = 3; + optional int32 ent_index = 4 [default = -1]; +} + +message CUserMessageCurrentTimescale { + optional float current = 1; +} + +message CUserMessageDesiredTimescale { + optional float desired = 1; + optional float acceleration = 2; + optional float minblendrate = 3; + optional float blenddeltamultiplier = 4; +} + +message CUserMessageFade { + optional uint32 duration = 1; + optional uint32 hold_time = 2; + optional uint32 flags = 3; + optional fixed32 color = 4; +} + +message CUserMessageShake { + optional uint32 command = 1; + optional float amplitude = 2; + optional float frequency = 3; + optional float duration = 4; +} + +message CUserMessageShakeDir { + optional .CUserMessageShake shake = 1; + optional .CMsgVector direction = 2; +} + +message CUserMessageWaterShake { + optional uint32 command = 1; + optional float amplitude = 2; + optional float frequency = 3; + optional float duration = 4; +} + +message CUserMessageScreenTilt { + optional uint32 command = 1; + optional bool ease_in_out = 2; + optional .CMsgVector angle = 3; + optional float duration = 4; + optional float time = 5; +} + +message CUserMessageSayText { + optional int32 playerindex = 1 [default = -1]; + optional string text = 2; + optional bool chat = 3; +} + +message CUserMessageSayText2 { + optional int32 entityindex = 1 [default = -1]; + optional bool chat = 2; + optional string messagename = 3; + optional string param1 = 4; + optional string param2 = 5; + optional string param3 = 6; + optional string param4 = 7; +} + +message CUserMessageHudMsg { + optional uint32 channel = 1; + optional float x = 2; + optional float y = 3; + optional fixed32 color1 = 4; + optional fixed32 color2 = 5; + optional uint32 effect = 6; + optional string message = 11; +} + +message CUserMessageHudText { + optional string message = 1; +} + +message CUserMessageTextMsg { + optional uint32 dest = 1; + repeated string param = 2; +} + +message CUserMessageGameTitle { +} + +message CUserMessageResetHUD { +} + +message CUserMessageSendAudio { + optional string soundname = 1; + optional bool stop = 2; +} + +message CUserMessageAudioParameter { + optional uint32 parameter_type = 1; + optional uint32 name_hash_code = 2; + optional float value = 3; + optional uint32 int_value = 4; +} + +message CUserMessageVoiceMask { + repeated uint32 gamerules_masks = 1; + repeated uint32 ban_masks = 2; + optional bool mod_enable = 3; +} + +message CUserMessageRequestState { +} + +message CUserMessageRumble { + optional int32 index = 1; + optional int32 data = 2; + optional int32 flags = 3; +} + +message CUserMessageSayTextChannel { + optional int32 player = 1; + optional int32 channel = 2; + optional string text = 3; +} + +message CUserMessageColoredText { + optional uint32 color = 1; + optional string text = 2; + optional bool reset = 3; + optional int32 context_player_slot = 4 [default = -1]; + optional int32 context_value = 5; + optional int32 context_team_id = 6; +} + +message CUserMessageItemPickup { + optional string itemname = 1; +} + +message CUserMessageAmmoDenied { + optional uint32 ammo_id = 1; +} + +message CUserMessageShowMenu { + optional uint32 validslots = 1; + optional uint32 displaytime = 2; + optional bool needmore = 3; + optional string menustring = 4; +} + +message CUserMessageCreditsMsg { + optional .eRollType rolltype = 1 [default = ROLL_NONE]; + optional float logo_length = 2; +} + +message CEntityMessagePlayJingle { + optional .CEntityMsg entity_msg = 1; +} + +message CEntityMessageScreenOverlay { + optional bool start_effect = 1; + optional .CEntityMsg entity_msg = 2; +} + +message CEntityMessageRemoveAllDecals { + optional bool remove_decals = 1; + optional .CEntityMsg entity_msg = 2; +} + +message CEntityMessagePropagateForce { + optional .CMsgVector impulse = 1; + optional .CEntityMsg entity_msg = 2; +} + +message CEntityMessageDoSpark { + optional .CMsgVector origin = 1; + optional int32 entityindex = 2 [default = -1]; + optional float radius = 3; + optional fixed32 color = 4; + optional uint32 beams = 5; + optional float thick = 6; + optional float duration = 7; + optional .CEntityMsg entity_msg = 8; +} + +message CEntityMessageFixAngle { + optional bool relative = 1; + optional .CMsgQAngle angle = 2; + optional .CEntityMsg entity_msg = 3; +} + +message CUserMessageCameraTransition { + message Transition_DataDriven { + optional string filename = 1; + optional int32 attach_ent_index = 2 [default = -1]; + optional float duration = 3; + } + + optional uint32 camera_type = 1; + optional float duration = 2; + optional .CUserMessageCameraTransition.Transition_DataDriven params_data_driven = 3; +} + +message CUserMsg_ParticleManager { + message ReleaseParticleIndex { + } + + message CreateParticle { + optional fixed64 particle_name_index = 1; + optional int32 attach_type = 2; + optional uint32 entity_handle = 3 [default = 16777215]; + optional uint32 entity_handle_for_modifiers = 4 [default = 16777215]; + optional bool apply_voice_ban_rules = 5; + optional int32 team_behavior = 6; + optional string control_point_configuration = 7; + optional bool cluster = 8; + optional float endcap_time = 9; + optional .CMsgVector aggregation_position = 10; + } + + message DestroyParticle { + optional bool destroy_immediately = 1; + } + + message DestroyParticleInvolving { + optional bool destroy_immediately = 1; + optional uint32 entity_handle = 3 [default = 16777215]; + } + + message DestroyParticleNamed { + optional fixed64 particle_name_index = 1; + optional uint32 entity_handle = 2 [default = 16777215]; + optional bool destroy_immediately = 3; + optional bool play_endcap = 4; + } + + message UpdateParticle_OBSOLETE { + optional int32 control_point = 1; + optional .CMsgVector position = 2; + } + + message UpdateParticleFwd_OBSOLETE { + optional int32 control_point = 1; + optional .CMsgVector forward = 2; + } + + message UpdateParticleOrient_OBSOLETE { + optional int32 control_point = 1; + optional .CMsgVector forward = 2; + optional .CMsgVector deprecated_right = 3; + optional .CMsgVector up = 4; + optional .CMsgVector left = 5; + } + + message UpdateParticleTransform { + optional int32 control_point = 1; + optional .CMsgVector position = 2; + optional .CMsgQuaternion orientation = 3; + optional float interpolation_interval = 4; + } + + message UpdateParticleFallback { + optional int32 control_point = 1; + optional .CMsgVector position = 2; + } + + message UpdateParticleOffset { + optional int32 control_point = 1; + optional .CMsgVector origin_offset = 2; + optional .CMsgQAngle angle_offset = 3; + } + + message UpdateParticleEnt { + optional int32 control_point = 1; + optional uint32 entity_handle = 2 [default = 16777215]; + optional int32 attach_type = 3; + optional int32 attachment = 4; + optional .CMsgVector fallback_position = 5; + optional bool include_wearables = 6; + optional .CMsgVector offset_position = 7; + optional .CMsgQAngle offset_angles = 8; + } + + message UpdateParticleSetFrozen { + optional bool set_frozen = 1; + optional float transition_duration = 2; + } + + message UpdateParticleShouldDraw { + optional bool should_draw = 1; + } + + message ChangeControlPointAttachment { + optional int32 attachment_old = 1; + optional int32 attachment_new = 2; + optional uint32 entity_handle = 3 [default = 16777215]; + } + + message UpdateEntityPosition { + optional uint32 entity_handle = 1 [default = 16777215]; + optional .CMsgVector position = 2; + } + + message SetParticleFoWProperties { + optional int32 fow_control_point = 1; + optional int32 fow_control_point2 = 2; + optional float fow_radius = 3; + } + + message SetParticleShouldCheckFoW { + optional bool check_fow = 1; + } + + message SetControlPointModel { + optional int32 control_point = 1; + optional string model_name = 2; + } + + message SetControlPointSnapshot { + optional int32 control_point = 1; + optional string snapshot_name = 2; + } + + message SetParticleText { + optional string text = 1; + } + + message SetTextureAttribute { + optional string attribute_name = 1; + optional string texture_name = 2; + } + + message SetSceneObjectGenericFlag { + optional bool flag_value = 1; + } + + message SetSceneObjectTintAndDesat { + optional fixed32 tint = 1; + optional float desat = 2; + } + + message ParticleSkipToTime { + optional float skip_to_time = 1; + } + + message ParticleCanFreeze { + optional bool can_freeze = 1; + } + + message ParticleFreezeTransitionOverride { + optional float freeze_transition_override = 1; + } + + message FreezeParticleInvolving { + optional bool set_frozen = 1; + optional float transition_duration = 2; + optional uint32 entity_handle = 3 [default = 16777215]; + } + + message AddModellistOverrideElement { + optional string model_name = 1; + optional float spawn_probability = 2; + optional uint32 groupid = 3; + } + + message ClearModellistOverride { + optional uint32 groupid = 1; + } + + message SetParticleNamedValueContext { + message FloatContextValue { + optional uint32 value_name_hash = 1; + optional float value = 2; + } + + message VectorContextValue { + optional uint32 value_name_hash = 1; + optional .CMsgVector value = 2; + } + + message TransformContextValue { + optional uint32 value_name_hash = 1; + optional .CMsgQAngle angles = 2; + optional .CMsgVector translation = 3; + } + + message EHandleContext { + optional uint32 value_name_hash = 1; + optional uint32 ent_index = 2 [default = 16777215]; + } + + repeated .CUserMsg_ParticleManager.SetParticleNamedValueContext.FloatContextValue float_values = 1; + repeated .CUserMsg_ParticleManager.SetParticleNamedValueContext.VectorContextValue vector_values = 2; + repeated .CUserMsg_ParticleManager.SetParticleNamedValueContext.TransformContextValue transform_values = 3; + repeated .CUserMsg_ParticleManager.SetParticleNamedValueContext.EHandleContext ehandle_values = 4; + } + + message CreatePhysicsSim { + optional string prop_group_name = 1; + optional bool use_high_quality_simulation = 2; + optional uint32 max_particle_count = 3; + } + + message DestroyPhysicsSim { + } + + message SetVData { + optional string vdata_name = 1; + } + + message SetMaterialOverride { + optional string material_name = 1; + optional bool include_children = 2; + } + + required .PARTICLE_MESSAGE type = 1 [default = GAME_PARTICLE_MANAGER_EVENT_CREATE]; + required uint32 index = 2; + optional .CUserMsg_ParticleManager.ReleaseParticleIndex release_particle_index = 3; + optional .CUserMsg_ParticleManager.CreateParticle create_particle = 4; + optional .CUserMsg_ParticleManager.DestroyParticle destroy_particle = 5; + optional .CUserMsg_ParticleManager.DestroyParticleInvolving destroy_particle_involving = 6; + optional .CUserMsg_ParticleManager.UpdateParticle_OBSOLETE update_particle = 7; + optional .CUserMsg_ParticleManager.UpdateParticleFwd_OBSOLETE update_particle_fwd = 8; + optional .CUserMsg_ParticleManager.UpdateParticleOrient_OBSOLETE update_particle_orient = 9; + optional .CUserMsg_ParticleManager.UpdateParticleFallback update_particle_fallback = 10; + optional .CUserMsg_ParticleManager.UpdateParticleOffset update_particle_offset = 11; + optional .CUserMsg_ParticleManager.UpdateParticleEnt update_particle_ent = 12; + optional .CUserMsg_ParticleManager.UpdateParticleShouldDraw update_particle_should_draw = 14; + optional .CUserMsg_ParticleManager.UpdateParticleSetFrozen update_particle_set_frozen = 15; + optional .CUserMsg_ParticleManager.ChangeControlPointAttachment change_control_point_attachment = 16; + optional .CUserMsg_ParticleManager.UpdateEntityPosition update_entity_position = 17; + optional .CUserMsg_ParticleManager.SetParticleFoWProperties set_particle_fow_properties = 18; + optional .CUserMsg_ParticleManager.SetParticleText set_particle_text = 19; + optional .CUserMsg_ParticleManager.SetParticleShouldCheckFoW set_particle_should_check_fow = 20; + optional .CUserMsg_ParticleManager.SetControlPointModel set_control_point_model = 21; + optional .CUserMsg_ParticleManager.SetControlPointSnapshot set_control_point_snapshot = 22; + optional .CUserMsg_ParticleManager.SetTextureAttribute set_texture_attribute = 23; + optional .CUserMsg_ParticleManager.SetSceneObjectGenericFlag set_scene_object_generic_flag = 24; + optional .CUserMsg_ParticleManager.SetSceneObjectTintAndDesat set_scene_object_tint_and_desat = 25; + optional .CUserMsg_ParticleManager.DestroyParticleNamed destroy_particle_named = 26; + optional .CUserMsg_ParticleManager.ParticleSkipToTime particle_skip_to_time = 27; + optional .CUserMsg_ParticleManager.ParticleCanFreeze particle_can_freeze = 28; + optional .CUserMsg_ParticleManager.SetParticleNamedValueContext set_named_value_context = 29; + optional .CUserMsg_ParticleManager.UpdateParticleTransform update_particle_transform = 30; + optional .CUserMsg_ParticleManager.ParticleFreezeTransitionOverride particle_freeze_transition_override = 31; + optional .CUserMsg_ParticleManager.FreezeParticleInvolving freeze_particle_involving = 32; + optional .CUserMsg_ParticleManager.AddModellistOverrideElement add_modellist_override_element = 33; + optional .CUserMsg_ParticleManager.ClearModellistOverride clear_modellist_override = 34; + optional .CUserMsg_ParticleManager.CreatePhysicsSim create_physics_sim = 35; + optional .CUserMsg_ParticleManager.DestroyPhysicsSim destroy_physics_sim = 36; + optional .CUserMsg_ParticleManager.SetVData set_vdata = 37; + optional .CUserMsg_ParticleManager.SetMaterialOverride set_material_override = 38; + + extensions 100 to 201; +} + +message CUserMsg_HudError { + optional int32 order_id = 1; +} + +message CUserMsg_CustomGameEvent { + optional string event_name = 1; + optional bytes data = 2; +} + +message CUserMessageHapticsManagerPulse { + optional int32 hand_id = 1; + optional float effect_amplitude = 2; + optional float effect_frequency = 3; + optional float effect_duration = 4; +} + +message CUserMessageHapticsManagerEffect { + optional int32 hand_id = 1; + optional uint32 effect_name_hash_code = 2; + optional float effect_scale = 3; +} + +message CUserMessageAnimStateGraphState { + optional int32 entity_index = 1; + optional bytes data = 2; +} + +message CUserMessageUpdateCssClasses { + optional int32 target_world_panel = 1; + optional string css_classes = 2; + optional bool is_add = 3; +} + +message CUserMessageServerFrameTime { + optional float frame_time = 1; +} + +message CUserMessageLagCompensationError { + optional float distance = 1; +} + +message CUserMessageRequestDllStatus { + optional string dll_action = 1; + optional bool full_report = 2; +} + +message CUserMessageRequestUtilAction { + optional int32 util1 = 2; + optional int32 util2 = 3; + optional int32 util3 = 4; + optional int32 util4 = 5; + optional int32 util5 = 6; +} + +message CUserMessage_UtilMsg_Response { + message ItemDetail { + optional int32 index = 1; + optional int32 hash = 2; + optional int32 crc = 3; + optional string name = 4; + } + + optional fixed32 crc = 1; + optional int32 item_count = 2; + optional fixed32 crc2 = 3; + optional int32 item_count2 = 4; + repeated int32 crc_part = 5; + repeated int32 crc_part2 = 6; + optional int32 client_timestamp = 7; + optional int32 platform = 8; + repeated .CUserMessage_UtilMsg_Response.ItemDetail itemdetails = 9; + optional int32 itemgroup = 10; + optional int32 total_count = 11; + optional int32 total_count2 = 12; +} + +message CUserMessage_DllStatus { + message CVDiagnostic { + optional uint32 id = 1; + optional uint32 extended = 2; + optional uint64 value = 3; + optional string string_value = 4; + } + + message CModule { + optional uint64 base_addr = 1; + optional string name = 2; + optional uint32 size = 3; + optional uint32 timestamp = 4; + } + + optional string file_report = 1; + optional string command_line = 2; + optional uint32 total_files = 3; + optional uint32 process_id = 4; + optional int32 osversion = 5; + optional uint64 client_time = 6; + repeated .CUserMessage_DllStatus.CVDiagnostic diagnostics = 7; + repeated .CUserMessage_DllStatus.CModule modules = 8; +} + +message CUserMessageRequestInventory { + optional int32 inventory = 1; + optional int32 offset = 2; + optional int32 options = 3; +} + +message CUserMessage_Inventory_Response { + message InventoryDetail { + optional int32 index = 1; + optional int64 primary = 2; + optional int64 offset = 3; + optional int64 first = 4; + optional int64 base = 5; + optional string name = 6; + optional string base_name = 7; + optional int32 base_detail = 8; + optional int32 base_time = 9; + optional int32 base_hash = 10; + } + + optional fixed32 crc = 1; + optional int32 item_count = 2; + optional int32 osversion = 5; + optional int32 perf_time = 6; + optional int32 client_timestamp = 7; + optional int32 platform = 8; + repeated .CUserMessage_Inventory_Response.InventoryDetail inventories = 9; + repeated .CUserMessage_Inventory_Response.InventoryDetail inventories2 = 10; + repeated .CUserMessage_Inventory_Response.InventoryDetail inventories3 = 14; + optional int32 inv_type = 11; + optional int32 build_version = 12; + optional int32 instance = 13; + optional int64 start_time = 15; +} + +message CUserMessageRequestDiagnostic { + message Diagnostic { + optional int32 index = 1; + optional int64 offset = 2; + optional int32 param = 3; + optional int32 length = 4; + optional int32 type = 5; + optional int64 base = 6; + optional int64 range = 7; + optional int64 extent = 8; + optional int64 detail = 9; + optional string name = 10; + optional string alias = 11; + optional bytes vardetail = 12; + optional int32 context = 13; + } + + repeated .CUserMessageRequestDiagnostic.Diagnostic diagnostics = 1; +} + +message CUserMessage_Diagnostic_Response { + message Diagnostic { + optional int32 index = 1; + optional int64 offset = 2; + optional int32 param = 3; + optional int32 length = 4; + optional bytes detail = 5; + optional int64 base = 6; + optional int64 range = 7; + optional int32 type = 8; + optional string name = 10; + optional string alias = 11; + optional bytes backup = 12; + optional int32 context = 13; + optional int64 control = 14; + optional int64 augment = 15; + optional int64 placebo = 16; + } + + repeated .CUserMessage_Diagnostic_Response.Diagnostic diagnostics = 1; + optional int32 build_version = 2; + optional int32 instance = 3; + optional int64 start_time = 4; + optional int32 osversion = 5; + optional int32 platform = 6; +} + +message CUserMessage_ExtraUserData { + optional int32 item = 1; + optional int64 value1 = 2; + optional int64 value2 = 3; + repeated bytes detail1 = 4; + repeated bytes detail2 = 5; +} + +message CUserMessage_NotifyResponseFound { + message Criteria { + optional uint32 name_symbol = 1; + optional string value = 2; + } + + optional int32 ent_index = 1 [default = -1]; + optional string rule_name = 2; + optional string response_value = 3; + optional string response_concept = 4; + repeated .CUserMessage_NotifyResponseFound.Criteria criteria = 5; + repeated uint32 int_criteria_names = 6 [packed = true]; + repeated int32 int_criteria_values = 7 [packed = true]; + repeated uint32 float_criteria_names = 8 [packed = true]; + repeated float float_criteria_values = 9; + repeated uint32 symbol_criteria_names = 10 [packed = true]; + repeated uint32 symbol_criteria_values = 11 [packed = true]; + optional int32 speak_result = 12; +} + +message CUserMessage_PlayResponseConditional { + optional int32 ent_index = 1 [default = -1]; + repeated int32 player_slots = 2; + optional string response = 3; + optional .CMsgVector ent_origin = 4; + optional float pre_delay = 5; + optional int32 mix_priority = 6; +} diff --git a/setup.ps1 b/setup.ps1 new file mode 100644 index 000000000..cd8fa763d --- /dev/null +++ b/setup.ps1 @@ -0,0 +1,14 @@ +if (-not $env:GITHUB_SHA) { + $env:GITHUB_SHA = (git rev-parse HEAD) +} + +if (!(Test-Path -Path "$PSScriptRoot\build")) { + mkdir build + Set-Location build + python ../configure.py --enable-optimize --hl2sdk-root "$PSScriptRoot\alliedmodders" --mms_path "$PSScriptRoot\alliedmodders\metamod" --hl2sdk-manifests "$PSScriptRoot\alliedmodders\hl2sdk-manifests" -s cs2 + Set-Location .. +} + +Set-Location build +ambuild +Set-Location .. \ No newline at end of file diff --git a/setup.sh b/setup.sh new file mode 100644 index 000000000..ec8bf60b5 --- /dev/null +++ b/setup.sh @@ -0,0 +1,18 @@ +#!/bin/bash + +LPATH=$(pwd) + +if [ -z "${GITHUB_SHA}" ]; then + export GITHUB_SHA=$(git rev-parse HEAD) +fi + +if [ ! -d build ]; then + mkdir build + cd build + CC=gcc CXX=g++ python ../configure.py --enable-optimize --hl2sdk-root "${LPATH}/alliedmodders" --mms_path "${LPATH}/alliedmodders/metamod" --hl2sdk-manifests "${LPATH}/alliedmodders/hl2sdk-manifests" -s cs2 + cd .. +fi + +cd build +ambuild +cd .. \ No newline at end of file diff --git a/src/core/commands/chat.cpp b/src/core/commands/chat.cpp new file mode 100644 index 000000000..30188c392 --- /dev/null +++ b/src/core/commands/chat.cpp @@ -0,0 +1,34 @@ +#include "commands.h" + +#include <server/chat/chat.h> + +void SwiftlyChatReload(CPlayerSlot slot) +{ + g_chatProcessor.LoadMessages(); + PrintToClientOrConsole(slot, "Chat Processor", "All chat messages has been succesfully reloaded.\n"); +} + +void SwiftlyChatManagerHelp(CPlayerSlot slot) +{ + PrintToClientOrConsole(slot, "Commands", "Swiftly Chat Menu\n"); + PrintToClientOrConsole(slot, "Commands", "Usage: swiftly chat <command>\n"); + PrintToClientOrConsole(slot, "Commands", " reload - Reload chat message configurations.\n"); +} + +void SwiftlyChatManager(CPlayerSlot slot, const char* subcmd) +{ + if (slot.Get() != -1) + return; + + std::string sbcmd = subcmd; + if (sbcmd.size() == 0) + { + SwiftlyChatManagerHelp(slot); + return; + } + + if (sbcmd == "reload") + SwiftlyChatReload(slot); + else + SwiftlyChatManagerHelp(slot); +} \ No newline at end of file diff --git a/src/core/commands/cmds.cpp b/src/core/commands/cmds.cpp new file mode 100644 index 000000000..93c4ec3c1 --- /dev/null +++ b/src/core/commands/cmds.cpp @@ -0,0 +1,29 @@ +#include "commands.h" +#include <server/commands/manager.h> + +void ShowSwiftlyCommands(CPlayerSlot slot, int page) +{ + std::map<std::string, Command*> cmds = g_commandsManager.GetCommands(); + PrintToClientOrConsole(slot, "Commands", "There are %d commands created by plugins.\n", cmds.size()); + PrintToClientOrConsole(slot, "Commands", "Below will be shown a list of all the commands:\n"); + + if (page < 1) + page = 1; + else if (static_cast<unsigned int>(page) * 10 > cmds.size()) + page = int(ceil(double(cmds.size()) / 10.0)); + + std::map<std::string, Command*>::iterator it = cmds.begin(); + for (int i = 0; i < (page - 1) * 10; i++) + ++it; + + for (uint32 i = 0; i < 10; i++) + { + if (it == cmds.end()) + break; + PrintToClientOrConsole(slot, "Commands", "sw_%s\n", it->first.c_str()); + ++it; + } + + if (static_cast<unsigned int>(page) * 10 < cmds.size()) + PrintToClientOrConsole(slot, "Commands", "To see more please use swiftly cmds %d\n", page + 1); +} \ No newline at end of file diff --git a/src/core/commands/commands.h b/src/core/commands/commands.h new file mode 100644 index 000000000..5316bea4f --- /dev/null +++ b/src/core/commands/commands.h @@ -0,0 +1,47 @@ +#ifndef _core_commands_h +#define _core_commands_h + +#include <core/entrypoint.h> +#include <public/tier1/strtools.h> +#include <utils/utils.h> +#include <utils/common.h> + +////////////////////////////////////////////////////////////// +///////////////// Utilities ////////////// +//////////////////////////////////////////////////////////// + +#ifndef GITHUB_SHA +#define GITHUB_SHA "LOCAL" +#endif + +const char* GetCppVersion(); +std::string seconds_to_time(unsigned int number); + +template <typename... T> +void PrintToClientOrConsole(CPlayerSlot slot, std::string category, std::string message, T... args) +{ + if (slot.Get() == -1) + PLUGIN_PRINTF(category, message, args...); + else + CLIENT_PRINTF(slot, category, message, args...); +} + +////////////////////////////////////////////////////////////// +///////////////// Functions ////////////// +//////////////////////////////////////////////////////////// + +void SwiftlyChatManager(CPlayerSlot slot, const char* subcmd); +void ShowSwiftlyCommands(CPlayerSlot slot, int page); +void SwiftlyConfigurationManager(CPlayerSlot slot, const char* subcmd); +void ShowSwiftlyCredits(CPlayerSlot slot); +void SwiftlyConvarsManager(CPlayerSlot slot, int page); +void SwiftlyExtensionManager(CPlayerSlot slot, const char* subcmd); +void ShowSwiftlyCommandHelp(CPlayerSlot slot); +void SwiftlyList(CPlayerSlot slot); +void SwiftlyPluginManager(CPlayerSlot slot, const char* subcmd, const char* plugin_name); +void SwiftlyResourceMonitorManager(CPlayerSlot slot, const char* subcmd, const char* subcmd2); +void SwiftlyStatus(CPlayerSlot slot); +void SwiftlyTranslationManager(CPlayerSlot slot, const char* subcmd); +void SwiftlyVersion(CPlayerSlot slot); + +#endif \ No newline at end of file diff --git a/src/core/commands/config.cpp b/src/core/commands/config.cpp new file mode 100644 index 000000000..299736ef1 --- /dev/null +++ b/src/core/commands/config.cpp @@ -0,0 +1,34 @@ +#include "commands.h" +#include <server/configuration/configuration.h> + +void SwiftlyConfigurationManagerHelp(CPlayerSlot slot) +{ + PrintToClientOrConsole(slot, "Commands", "Swiftly Configuration Menu\n"); + PrintToClientOrConsole(slot, "Commands", "Usage: swiftly config <command>\n"); + PrintToClientOrConsole(slot, "Commands", " reload - Reloads all the plugin configurations.\n"); +} + +void SwiftlyConfigurationReload(CPlayerSlot slot) +{ + g_Config.ClearPluginConfig(); + g_Config.LoadPluginConfigurations(); + PrintToClientOrConsole(slot, "Configuration", "You've succesfully reloaded all the configurations for plugins.\n"); +} + +void SwiftlyConfigurationManager(CPlayerSlot slot, const char* subcmd) +{ + if (slot.Get() != -1) + return; + + std::string sbcmd = subcmd; + if (sbcmd.size() == 0) + { + SwiftlyConfigurationManagerHelp(slot); + return; + } + + if (sbcmd == "reload") + SwiftlyConfigurationReload(slot); + else + SwiftlyConfigurationManagerHelp(slot); +} \ No newline at end of file diff --git a/src/core/commands/core.cpp b/src/core/commands/core.cpp new file mode 100644 index 000000000..9b42e7104 --- /dev/null +++ b/src/core/commands/core.cpp @@ -0,0 +1,51 @@ +#include "commands.h" + +void SwiftlyCommand(const CCommandContext& context, const CCommand& args) +{ + CPlayerSlot slot = context.GetPlayerSlot(); + if (args.ArgC() < 2) + { + ShowSwiftlyCommandHelp(slot); + return; + } + + std::string subcmd = args[1]; + if (subcmd == "credits") + ShowSwiftlyCredits(slot); + else if (subcmd == "cmds") + ShowSwiftlyCommands(slot, V_StringToInt32(args[2], 1)); + else if (subcmd == "help") + ShowSwiftlyCommandHelp(slot); + else if (subcmd == "version") + SwiftlyVersion(slot); + else if (subcmd == "list") + SwiftlyList(slot); + else if (subcmd == "cvars") + SwiftlyConvarsManager(slot, V_StringToInt32(args[2], 1)); + else if (subcmd == "translations") + SwiftlyTranslationManager(slot, args[2]); + else if (subcmd == "config") + SwiftlyConfigurationManager(slot, args[2]); + else if (subcmd == "exts") + SwiftlyExtensionManager(slot, args[2]); + else if (subcmd == "plugins") + SwiftlyPluginManager(slot, args[2], args[3]); + else if (subcmd == "resmon") + SwiftlyResourceMonitorManager(slot, args[2], args[3]); + else if (subcmd == "status") + SwiftlyStatus(slot); + else if (subcmd == "chat") + SwiftlyChatManager(slot, args[2]); + else + ShowSwiftlyCommandHelp(slot); +} + +CON_COMMAND_F(swiftly, "The main command for Swiftly.", FCVAR_CLIENT_CAN_EXECUTE | FCVAR_LINKED_CONCOMMAND | FCVAR_SERVER_CAN_EXECUTE) +{ + SwiftlyCommand(context, args); +} + +CON_COMMAND_F(sw, "The main command for Swiftly.", FCVAR_CLIENT_CAN_EXECUTE | FCVAR_LINKED_CONCOMMAND | FCVAR_SERVER_CAN_EXECUTE) +{ + SwiftlyCommand(context, args); +} \ No newline at end of file diff --git a/src/core/commands/credits.cpp b/src/core/commands/credits.cpp new file mode 100644 index 000000000..215e38950 --- /dev/null +++ b/src/core/commands/credits.cpp @@ -0,0 +1,7 @@ +#include "commands.h" + +void ShowSwiftlyCredits(CPlayerSlot slot) +{ + PrintToClientOrConsole(slot, "Commands", "Swiftly was developed by Swiftly Solutions.\n"); + PrintToClientOrConsole(slot, "Commands", "https://github.com/swiftly-solution \n"); +} \ No newline at end of file diff --git a/src/core/commands/cvars.cpp b/src/core/commands/cvars.cpp new file mode 100644 index 000000000..8db2d1aeb --- /dev/null +++ b/src/core/commands/cvars.cpp @@ -0,0 +1,31 @@ +#include "commands.h" + +#include <engine/convars/manager.h> + +void SwiftlyConvarsManager(CPlayerSlot slot, int page) +{ + auto fakeConvars = g_cvarManager.GetCvarMap(); + + PrintToClientOrConsole(slot, "Convars", "There are %d convars created by plugins.\n", fakeConvars.size()); + PrintToClientOrConsole(slot, "Convars", "Below will be shown a list of all the convars:\n"); + + if (page < 1) + page = 1; + else if (static_cast<unsigned int>(page) * 10 > fakeConvars.size()) + page = int(ceil(double(fakeConvars.size()) / 10.0)); + + auto it = fakeConvars.begin(); + for (int i = 0; i < (page - 1) * 10; i++) + ++it; + + for (uint32 i = 0; i < 10; i++) + { + if (it == fakeConvars.end()) + break; + PrintToClientOrConsole(slot, "Convars", "%s\n", it->first.c_str()); + ++it; + } + + if (static_cast<unsigned int>(page) * 10 < fakeConvars.size()) + PrintToClientOrConsole(slot, "Convars", "To see more please use swiftly cvars %d\n", page + 1); +} \ No newline at end of file diff --git a/src/core/commands/exts.cpp b/src/core/commands/exts.cpp new file mode 100644 index 000000000..cf111e162 --- /dev/null +++ b/src/core/commands/exts.cpp @@ -0,0 +1,80 @@ +#include "commands.h" + +#include <extensions/manager.h> + +void SwiftlyExtensionManagerHelp(CPlayerSlot slot) +{ + PrintToClientOrConsole(slot, "Commands", "Swiftly Configuration Menu\n"); + PrintToClientOrConsole(slot, "Commands", "Usage: swiftly exts <command>\n"); + PrintToClientOrConsole(slot, "Commands", " list - Shows all the extensions loaded.\n"); +} + +void SwiftlyExtensionList(CPlayerSlot slot) +{ + uint32 loadedExtensions = 0; + auto extensions = extManager.GetExtensionsList(); + for (uint32 i = 0; i < extensions.size(); i++) + { + Extension* ext = extensions[i]; + if (ext == nullptr) + continue; + if (!ext->IsLoaded()) + continue; + + ++loadedExtensions; + } + + if (loadedExtensions == 0) + return PrintToClientOrConsole(slot, "Extensions List", "There are no extensions loaded.\n"); + + PrintToClientOrConsole(slot, "Extensions List", "Showing below %02d extensions loaded:\n", loadedExtensions); + uint32 showingIdx = 0; + std::vector<std::string> errors; + for (uint32 i = 0; i < extensions.size(); i++) + { + Extension* ext = extensions[i]; + if (ext == nullptr) + continue; + if (ext->HasError()) + errors.push_back(string_format("Extension '%s': %s", ext->GetName().c_str(), ext->GetError().c_str())); + if (!ext->IsLoaded()) + continue; + + ++showingIdx; + + std::string website = ext->GetAPI()->GetWebsite(); + + PrintToClientOrConsole(slot, "Extensions List", "%02d. \"%s\" (%s) by %s%s\n", + showingIdx, + ext->GetAPI()->GetName(), + ext->GetAPI()->GetVersion(), + ext->GetAPI()->GetAuthor(), + website == "" ? "" : string_format(" ( %s )", website.c_str()).c_str()); + } + if (errors.size() && slot.Get() == -1) + { + PrintToClientOrConsole(slot, "Extensions List", "Extension load errors:\n"); + for (const std::string err : errors) + PrintToClientOrConsole(slot, "Extensions List", "%s\n", err.c_str()); + + errors.clear(); + } +} + +void SwiftlyExtensionManager(CPlayerSlot slot, const char* subcmd) +{ + if (slot.Get() != -1) + return; + + std::string sbcmd = subcmd; + if (sbcmd.size() == 0) + { + SwiftlyExtensionManagerHelp(slot); + return; + } + + if (sbcmd == "list") + SwiftlyExtensionList(slot); + else + SwiftlyExtensionManagerHelp(slot); +} \ No newline at end of file diff --git a/src/core/commands/help.cpp b/src/core/commands/help.cpp new file mode 100644 index 000000000..59ed328c1 --- /dev/null +++ b/src/core/commands/help.cpp @@ -0,0 +1,23 @@ +#include "commands.h" + +void ShowSwiftlyCommandHelp(CPlayerSlot slot) +{ + PrintToClientOrConsole(slot, "Commands", "Swiftly Commands Menu\n"); + PrintToClientOrConsole(slot, "Commands", "Usage: swiftly <command> [args]\n"); + PrintToClientOrConsole(slot, "Commands", " credits - List Swiftly credits\n"); + PrintToClientOrConsole(slot, "Commands", " help - Show the help for Swiftly commands\n"); + PrintToClientOrConsole(slot, "Commands", " list - Show the list of online players\n"); + PrintToClientOrConsole(slot, "Commands", " cmds - List all console commands created by plugins\n"); + PrintToClientOrConsole(slot, "Commands", " status - Show the status of the players\n"); + if (slot.Get() == -1) + { + PrintToClientOrConsole(slot, "Commands", " cvars - List all convars created by plugins\n"); + PrintToClientOrConsole(slot, "Commands", " config - Configuration Management Menu\n"); + PrintToClientOrConsole(slot, "Commands", " exts - Extension Management Menu\n"); + PrintToClientOrConsole(slot, "Commands", " plugins - Plugin Management Menu\n"); + PrintToClientOrConsole(slot, "Commands", " resmon - Resource Monitor Menu\n"); + PrintToClientOrConsole(slot, "Commands", " translations - Translations Menu\n"); + PrintToClientOrConsole(slot, "Commands", " chat - Chat Menu\n"); + } + PrintToClientOrConsole(slot, "Commands", " version - Display Swiftly version\n"); +} \ No newline at end of file diff --git a/src/core/commands/list.cpp b/src/core/commands/list.cpp new file mode 100644 index 000000000..ec4c992f5 --- /dev/null +++ b/src/core/commands/list.cpp @@ -0,0 +1,18 @@ +#include "commands.h" + +#include <server/player/manager.h> + +void SwiftlyList(CPlayerSlot slot) +{ + PrintToClientOrConsole(slot, "List", "Connected players: %02d/%02d\n", g_playerManager.GetPlayers(), engine->GetServerGlobals()->maxClients); + uint16 idx = 0; + for (uint16 i = 0; i < g_playerManager.GetPlayerCap(); i++) + { + Player* player = g_playerManager.GetPlayer(i); + if (!player) + continue; + + ++idx; + PrintToClientOrConsole(slot, "List", "%d. %s%s (%llu)\n", idx, player->GetName(), player->IsFakeClient() ? " (BOT)" : "", player->GetSteamID()); + } +} \ No newline at end of file diff --git a/src/core/commands/plugins.cpp b/src/core/commands/plugins.cpp new file mode 100644 index 000000000..99fcff9ba --- /dev/null +++ b/src/core/commands/plugins.cpp @@ -0,0 +1,176 @@ +#include "commands.h" + +#include <plugins/manager.h> + +void ShowSwiftlyPluginManagerHelp(CPlayerSlot slot) +{ + PrintToClientOrConsole(slot, "Commands", "Swiftly Plugin Management Menu\n"); + PrintToClientOrConsole(slot, "Commands", "Usage: swiftly plugins <command> [plugin_name]\n"); + PrintToClientOrConsole(slot, "Commands", " info - Shows informations about a plugin\n"); + PrintToClientOrConsole(slot, "Commands", " list - Shows loaded plugins\n"); + PrintToClientOrConsole(slot, "Commands", " load - Loads a plugin\n"); + PrintToClientOrConsole(slot, "Commands", " reload - Reloads a plugin if it was loaded\n"); + PrintToClientOrConsole(slot, "Commands", " unload - Unloads a plugin if it was loaded\n"); + PrintToClientOrConsole(slot, "Commands", " refresh - Refreshes the plugin list.\n"); +} + +void SwiftlyPluginManagerList(CPlayerSlot slot) +{ + uint32 loadedPlugins = 0; + auto plugins = g_pluginManager.GetPluginsList(); + for (uint32 i = 0; i < plugins.size(); i++) + { + auto plugin = plugins[i]; + if (plugin == nullptr) + continue; + if (plugin->GetPluginState() == PluginState_t::Stopped) + continue; + + ++loadedPlugins; + } + + if (loadedPlugins == 0) + return PrintToClientOrConsole(slot, "Plugins List", "There are no plugins loaded.\n"); + + PrintToClientOrConsole(slot, "Plugins List", "Showing below %02d plugins loaded:\n", loadedPlugins); + uint32 showingIdx = 0; + std::vector<std::string> errors; + for (uint32 i = 0; i < plugins.size(); i++) + { + auto plugin = plugins[i]; + if (plugin == nullptr) + continue; + if (plugin->GetLoadError().size() > 0) + errors.push_back(string_format("Plugin '%s': %s", plugin->GetName().c_str(), plugin->GetLoadError().c_str())); + if (plugin->GetPluginState() == PluginState_t::Stopped) + continue; + + ++showingIdx; + + auto website = plugin->GetWebsite(); + + PrintToClientOrConsole(slot, "Plugins List", "%02d. \"%s\" (%s) by %s%s\n", + showingIdx, + plugin->GetPlName().c_str(), + plugin->GetVersion().c_str(), + plugin->GetAuthor().c_str(), + website == "" ? "" : string_format(" ( %s )", website.c_str()).c_str()); + } + if (errors.size() && slot.Get() == -1) + { + PrintToClientOrConsole(slot, "Plugins List", "Plugin load errors:\n"); + for (const std::string err : errors) + PrintToClientOrConsole(slot, "Plugins List", "%s\n", err.c_str()); + + errors.clear(); + } +} + +void SwiftlyPluginManagerInfo(CPlayerSlot slot, std::string plugin_name) +{ + if (plugin_name.size() == 0) + return PrintToClientOrConsole(slot, "Commands", "Usage: swiftly plugins info <plugin_name>\n"); + + if (!g_pluginManager.PluginExists(plugin_name)) + return PrintToClientOrConsole(slot, "Plugin Info", "Invalid plugin name.\n"); + + auto plugin = g_pluginManager.FetchPlugin(plugin_name); + if (plugin->GetPluginState() == PluginState_t::Stopped) + return PrintToClientOrConsole(slot, "Plugin Info", "Plugin is not loaded.\n"); + + std::string website = plugin->GetWebsite(); + + PrintToClientOrConsole(slot, "Plugin Info", "Plugin File Name: %s\n", plugin->GetName().c_str()); + PrintToClientOrConsole(slot, "Plugin Info", "Name: %s\n", plugin->GetPlName().c_str()); + PrintToClientOrConsole(slot, "Plugin Info", "Author: %s\n", plugin->GetAuthor().c_str()); + PrintToClientOrConsole(slot, "Plugin Info", "Version: %s\n", plugin->GetVersion().c_str()); + PrintToClientOrConsole(slot, "Plugin Info", "URL: %s\n", website == "" ? "Not Present" : website.c_str()); + PrintToClientOrConsole(slot, "Plugin Info", "Memory Usage: %.4fMB\n", double(plugin->GetMemoryUsage()) / 1024.0f / 1024.0f); +} + +void SwiftlyPluginManagerUnload(CPlayerSlot slot, std::string plugin_name) +{ + if (plugin_name.size() == 0) + return PrintToClientOrConsole(slot, "Commands", "Usage: swiftly plugins unload <plugin_name>\n"); + + if (!g_pluginManager.PluginExists(plugin_name)) + return PrintToClientOrConsole(slot, "Plugin Unload", "Invalid plugin name.\n"); + + auto plugin = g_pluginManager.FetchPlugin(plugin_name); + if (plugin->GetPluginState() == PluginState_t::Stopped) + return PrintToClientOrConsole(slot, "Plugin Unload", "Plugin is not loaded.\n"); + + g_pluginManager.StopPlugin(plugin_name, true); + PrintToClientOrConsole(slot, "Plugin Unload", "Plugin '%s' has been unloaded.\n", plugin_name.c_str()); +} + +void SwiftlyPluginManagerLoad(CPlayerSlot slot, std::string plugin_name) +{ + if (plugin_name.size() == 0) + return PrintToClientOrConsole(slot, "Commands", "Usage: swiftly plugins load <plugin_name>\n"); + + if (!g_pluginManager.PluginExists(plugin_name)) + return PrintToClientOrConsole(slot, "Plugin Load", "Invalid plugin name.\n"); + + auto plugin = g_pluginManager.FetchPlugin(plugin_name); + if (plugin->GetPluginState() == PluginState_t::Started) + return PrintToClientOrConsole(slot, "Plugin Load", "Plugin is already loaded.\n"); + + g_pluginManager.LoadPlugin(plugin_name); + g_pluginManager.StartPlugin(plugin_name); + PrintToClientOrConsole(slot, "Plugin Load", "Plugin '%s' has been loaded.\n", plugin_name.c_str()); +} + +void SwiftlyPluginManagerReload(CPlayerSlot slot, std::string plugin_name) +{ + if (plugin_name.size() == 0) + return PrintToClientOrConsole(slot, "Commands", "Usage: swiftly plugins reload <plugin_name>\n"); + + if (!g_pluginManager.PluginExists(plugin_name)) + return PrintToClientOrConsole(slot, "Plugin Reload", "Invalid plugin name.\n"); + + auto plugin = g_pluginManager.FetchPlugin(plugin_name); + if (plugin->GetPluginState() == PluginState_t::Stopped) + return PrintToClientOrConsole(slot, "Plugin Reload", "Plugin is not loaded.\n"); + + g_pluginManager.StopPlugin(plugin_name, true); + g_pluginManager.LoadPlugin(plugin_name); + g_pluginManager.StartPlugin(plugin_name); + PrintToClientOrConsole(slot, "Plugin Reload", "Plugin '%s' has been reloaded.\n", plugin_name.c_str()); +} + +void SwiftlyPluginManagerRefresh(CPlayerSlot slot) +{ + auto oldPluginsAmount = g_pluginManager.GetPluginsList().size(); + g_pluginManager.LoadPlugins(""); + auto newPluginsAmount = g_pluginManager.GetPluginsList().size(); + PrintToClientOrConsole(slot, "Plugin Refresh", "Plugins have been succesfully refreshed. (%d -> %d plugins)\n", oldPluginsAmount, newPluginsAmount); +} + +void SwiftlyPluginManager(CPlayerSlot slot, const char* subcmd, const char* plugin_name) +{ + if (slot.Get() != -1) + return; + + std::string sbcmd = subcmd; + if (sbcmd.size() == 0) + { + ShowSwiftlyPluginManagerHelp(slot); + return; + } + + if (sbcmd == "list") + SwiftlyPluginManagerList(slot); + else if (sbcmd == "info") + SwiftlyPluginManagerInfo(slot, plugin_name); + else if (sbcmd == "unload") + SwiftlyPluginManagerUnload(slot, plugin_name); + else if (sbcmd == "load") + SwiftlyPluginManagerLoad(slot, plugin_name); + else if (sbcmd == "reload") + SwiftlyPluginManagerReload(slot, plugin_name); + else if (sbcmd == "refresh") + SwiftlyPluginManagerRefresh(slot); + else + ShowSwiftlyPluginManagerHelp(slot); +} \ No newline at end of file diff --git a/src/core/commands/resmon.cpp b/src/core/commands/resmon.cpp new file mode 100644 index 000000000..a7d690375 --- /dev/null +++ b/src/core/commands/resmon.cpp @@ -0,0 +1,243 @@ +#include "commands.h" + +#include <tools/resourcemonitor/monitor.h> +#include <plugins/manager.h> + +#include <sstream> + +void SwiftlyResourceMonitorManagerHelp(CPlayerSlot slot) +{ + PrintToClientOrConsole(slot, "Commands", "Swiftly Resource Monitor Menu\n"); + PrintToClientOrConsole(slot, "Commands", "Usage: swiftly resmon <command>\n"); + PrintToClientOrConsole(slot, "Commands", " enable - Enabled the usage monitoring.\n"); + PrintToClientOrConsole(slot, "Commands", " disable - Disables the usage monitoring.\n"); + PrintToClientOrConsole(slot, "Commands", " view - Shows the usage monitored.\n"); + PrintToClientOrConsole(slot, "Commands", " viewplugin <ID> - Shows the usage monitored for a specific plugin.\n"); +} + +void SwiftlyResourceMonitorManagerEnable(CPlayerSlot slot) +{ + if (g_ResourceMonitor.IsEnabled()) + return PrintToClientOrConsole(slot, "Resource Monitor", "Resource monitoring is already enabled.\n"); + + g_ResourceMonitor.Enable(); + PrintToClientOrConsole(slot, "Resource Monitor", "Resource monitoring has been enabled.\n"); +} + +void SwiftlyResourceMonitorManagerDisable(CPlayerSlot slot) +{ + if (!g_ResourceMonitor.IsEnabled()) + return PrintToClientOrConsole(slot, "Resource Monitor", "Resource monitoring is already disabled.\n"); + + g_ResourceMonitor.Disable(); + PrintToClientOrConsole(slot, "Resource Monitor", "Resource monitoring has been disabled.\n"); +} + +void SwiftlyResourceMonitorManagerViewPlugin(CPlayerSlot slot, std::string plugin_id) +{ + if (!g_ResourceMonitor.IsEnabled()) + return PrintToClientOrConsole(slot, "Resource Monitor", "Resource monitoring is not enabled.\n"); + + if (!g_pluginManager.PluginExists(plugin_id) && plugin_id != "core") + return PrintToClientOrConsole(slot, "Resource Monitor", "Invalid plugin ID.\n"); + + auto PrintTable = [](TextTable tbl) -> void + { + std::stringstream outputTable; + outputTable << tbl; + std::vector<std::string> rows = explode(outputTable.str(), "\n"); + for (int i = 0; i < rows.size(); i++) + PLUGIN_PRINTF("Resource Monitor", "%s\n", rows[i].c_str()); + }; + + PrintToClientOrConsole(slot, "Resource Monitor", "Resource Monitor View Plugin\n"); + PrintToClientOrConsole(slot, "Resource Monitor", "ID: %s\n", plugin_id.c_str()); + PrintToClientOrConsole(slot, "Resource Monitor", " \n", plugin_id.c_str()); + + PrintToClientOrConsole(slot, "Resource Monitor", "Plugin Usage View\n"); + + TextTable usagesTable('-', '|', '+'); + + usagesTable.add(" ID "); + usagesTable.add(" Name "); + usagesTable.add(" Calls "); + usagesTable.add(" min/avg/max "); + usagesTable.endOfRow(); + + std::map<std::string, std::map<std::string, std::vector<float>>> data = g_ResourceMonitor.GetResmonTimeTables(); + if (data.count(plugin_id) > 0) + { + std::map<std::string, std::vector<float>> pluginData = data.at(plugin_id); + uint64_t idx = 0; + for (std::map<std::string, std::vector<float>>::iterator it = pluginData.begin(); it != pluginData.end(); ++it) + { + ++idx; + usagesTable.add(string_format(" %02d. ", idx)); + usagesTable.add(string_format(" %s ", it->first.c_str())); + usagesTable.add(string_format(" %llu ", it->second.size())); + + if (it->second.size() == 0) + usagesTable.add(" 0.00000ms / 0.00000ms / 0.00000ms "); + else + { + auto [min, max] = std::minmax_element(it->second.begin(), it->second.end()); + + float avg = 0; + uint64_t avgCount = 0; + for (std::vector<float>::iterator ii = it->second.begin(); ii != it->second.end(); ++ii) + { + avg += *(ii); + ++avgCount; + } + + usagesTable.add(string_format(" %.5fms / %.5fms / %.5fms ", *min, (avg / avgCount), *max)); + } + usagesTable.endOfRow(); + } + } + + PrintTable(usagesTable); +} + +void SwiftlyResourceMonitorManagerView(CPlayerSlot slot) +{ + if (!g_ResourceMonitor.IsEnabled()) + return PrintToClientOrConsole(slot, "Resource Monitor", "Resource monitoring is not enabled.\n"); + + TextTable pluginsTable('-', '|', '+'); + + pluginsTable.add(" ID "); + pluginsTable.add(" Status "); + pluginsTable.add(" Type "); + pluginsTable.add(" Memory "); + pluginsTable.add(" min/avg/max "); + pluginsTable.endOfRow(); + + auto PrintTable = [](TextTable tbl) -> void + { + std::stringstream outputTable; + outputTable << tbl; + std::vector<std::string> rows = explode(outputTable.str(), "\n"); + for (int i = 0; i < rows.size(); i++) + PLUGIN_PRINTF("Resource Monitor", "%s\n", rows[i].c_str()); + }; + + PLUGIN_PRINTF("Resource Monitor", "Plugin Resource Viewer\n"); + + std::map<std::string, std::map<std::string, std::vector<float>>> data = g_ResourceMonitor.GetResmonTimeTables(); + + pluginsTable.add(" core "); + pluginsTable.add(" Loaded "); + pluginsTable.add(" - "); + pluginsTable.add(" - "); + + if (data.find("core") != data.end()) + { + float max = 0; + uint64_t maxCount = 0; + float avg = 0; + uint64_t avgCount = 0; + float min = 0; + uint64_t minCount = 0; + + std::map<std::string, std::vector<float>> pluginData = data.at("core"); + for (std::map<std::string, std::vector<float>>::iterator it = pluginData.begin(); it != pluginData.end(); ++it) + { + if (it->second.size() == 0) + continue; + + auto [mi, mx] = std::minmax_element(it->second.begin(), it->second.end()); + max += *mx; + min += *mi; + ++maxCount; + ++minCount; + + for (std::vector<float>::iterator it2 = it->second.begin(); it2 != it->second.end(); ++it2) + { + avg += *(it2); + ++avgCount; + } + } + + pluginsTable.add(string_format(" %.5fms / %.5fms / %.5fms ", (min / minCount), (avg / avgCount), (max / maxCount))); + } + else + pluginsTable.add(" 0.00000ms / 0.00000ms / 0.00000ms "); + + pluginsTable.endOfRow(); + + for (auto plugin : g_pluginManager.GetPluginsList()) + { + std::string plugin_id = plugin->GetName(); + + pluginsTable.add(" " + plugin_id + " "); + pluginsTable.add(std::string(" ") + (plugin->GetPluginState() == PluginState_t::Started ? "Loaded" : "Unloaded") + " "); + pluginsTable.add(std::string(" ") + (plugin->GetKind() == ContextKinds::Lua ? "Lua" : "JavaScript") + " "); + if (plugin->GetPluginState() == PluginState_t::Started) + pluginsTable.add(string_format(" %.4f MB ", (double(plugin->GetMemoryUsage()) / 1024.0f / 1024.0f))); + else + pluginsTable.add(" - "); + + if (plugin->GetPluginState() == PluginState_t::Started && data.find(plugin->GetName()) != data.end()) + { + float max = 0; + uint64_t maxCount = 0; + float avg = 0; + uint64_t avgCount = 0; + float min = 0; + uint64_t minCount = 0; + + std::map<std::string, std::vector<float>> pluginData = data.at(plugin->GetName()); + for (std::map<std::string, std::vector<float>>::iterator it = pluginData.begin(); it != pluginData.end(); ++it) + { + if (it->second.size() == 0) + continue; + + auto [mi, mx] = std::minmax_element(it->second.begin(), it->second.end()); + max += *mx; + min += *mi; + ++maxCount; + ++minCount; + + for (std::vector<float>::iterator it2 = it->second.begin(); it2 != it->second.end(); ++it2) + { + avg += *(it2); + ++avgCount; + } + } + + pluginsTable.add(string_format(" %.5fms / %.5fms / %.5fms ", (min / minCount), (avg / avgCount), (max / maxCount))); + } + else + pluginsTable.add(" 0.00000ms / 0.00000ms / 0.00000ms "); + + pluginsTable.endOfRow(); + } + + PrintTable(pluginsTable); + PrintToClientOrConsole(slot, "Resource Monitor", "To view more detailed informations for each plugin, use: sw resmon viewplugin <ID>\n"); +} + +void SwiftlyResourceMonitorManager(CPlayerSlot slot, const char* subcmd, const char* subcmd2) +{ + if (slot.Get() != -1) + return; + + std::string sbcmd = subcmd; + if (sbcmd.size() == 0) + { + SwiftlyResourceMonitorManagerHelp(slot); + return; + } + + if (sbcmd == "enable") + SwiftlyResourceMonitorManagerEnable(slot); + else if (sbcmd == "disable") + SwiftlyResourceMonitorManagerDisable(slot); + else if (sbcmd == "view") + SwiftlyResourceMonitorManagerView(slot); + else if (sbcmd == "viewplugin") + SwiftlyResourceMonitorManagerViewPlugin(slot, (subcmd2 == nullptr ? "" : subcmd2)); + else + SwiftlyResourceMonitorManagerHelp(slot); +} \ No newline at end of file diff --git a/src/core/commands/status.cpp b/src/core/commands/status.cpp new file mode 100644 index 000000000..bfb4ce9df --- /dev/null +++ b/src/core/commands/status.cpp @@ -0,0 +1,44 @@ +#include "commands.h" + +#include <texttable/TextTable.h> +#include <server/player/manager.h> +#include <sstream> + +void SwiftlyStatus(CPlayerSlot slot) +{ + TextTable statusTable('-', '|', '+'); + + statusTable.add(" playerid "); + statusTable.add(" name "); + statusTable.add(" steamid "); + statusTable.add(" time "); + statusTable.add(" state "); + statusTable.endOfRow(); + + for (uint16 i = 0; i < g_playerManager.GetPlayerCap(); i++) + { + auto player = g_playerManager.GetPlayer(i); + if (!player) + continue; + + statusTable.add(string_format(" #%d ", player->GetSlot())); + statusTable.add(string_format(" %s ", player->GetName())); + statusTable.add(string_format(" %s ", player->IsFakeClient() ? "BOT" : std::to_string(player->GetSteamID()).c_str())); + statusTable.add(string_format(" %s ", seconds_to_time(player->GetConnectedTime()).c_str())); + statusTable.add(string_format(" %s ", "Active")); + statusTable.endOfRow(); + } + + auto PrintTT = [slot](std::string category, TextTable table) -> void + { + std::stringstream outputTable; + outputTable << table; + std::vector<std::string> rows = explode(outputTable.str(), "\n"); + for (int i = 0; i < rows.size() - 1; i++) + PrintToClientOrConsole(slot, category, "%s\n", rows[i].c_str()); + }; + + PrintTT("Status", statusTable); + + PrintToClientOrConsole(slot, "Status", "end of status\n"); +} \ No newline at end of file diff --git a/src/core/commands/translations.cpp b/src/core/commands/translations.cpp new file mode 100644 index 000000000..897702505 --- /dev/null +++ b/src/core/commands/translations.cpp @@ -0,0 +1,33 @@ +#include "commands.h" +#include <server/translations/translations.h> + +void SwiftlyTranslationManagerHelp(CPlayerSlot slot) +{ + PrintToClientOrConsole(slot, "Commands", "Swiftly Translation Menu\n"); + PrintToClientOrConsole(slot, "Commands", "Usage: swiftly translations <command>\n"); + PrintToClientOrConsole(slot, "Commands", " reload - Reloads the translations.\n"); +} + +void SwiftlyTranslationReload(CPlayerSlot slot) +{ + g_translations.LoadTranslations(); + PrintToClientOrConsole(slot, "Translations", "All translations have been succesfully reloaded.\n"); +} + +void SwiftlyTranslationManager(CPlayerSlot slot, const char* subcmd) +{ + if (slot.Get() != -1) + return; + + std::string sbcmd = subcmd; + if (sbcmd.size() == 0) + { + SwiftlyTranslationManagerHelp(slot); + return; + } + + if (sbcmd == "reload") + SwiftlyTranslationReload(slot); + else + SwiftlyTranslationManagerHelp(slot); +} \ No newline at end of file diff --git a/src/core/commands/utils.cpp b/src/core/commands/utils.cpp new file mode 100644 index 000000000..cfa151351 --- /dev/null +++ b/src/core/commands/utils.cpp @@ -0,0 +1,24 @@ +#include "commands.h" + +const char* GetCppVersion() +{ + if (__cplusplus == 202101L) + return "C++23"; + else if (__cplusplus == 202002L) + return "C++20"; + else if (__cplusplus == 201703L) + return "C++17"; + else if (__cplusplus == 201402L) + return "C++14"; + else if (__cplusplus == 201103L) + return "C++11"; + else if (__cplusplus == 199711L) + return "C++98"; + else + return "Pre-standard C++"; +} + +std::string seconds_to_time(unsigned int number) +{ + return string_format("%02d:%02d:%02d", int(number / 3600), int((number % 3600) / 60), int((number % 3600) % 60)); +} \ No newline at end of file diff --git a/src/core/commands/version.cpp b/src/core/commands/version.cpp new file mode 100644 index 000000000..1a9817889 --- /dev/null +++ b/src/core/commands/version.cpp @@ -0,0 +1,12 @@ +#include "commands.h" + +void SwiftlyVersion(CPlayerSlot slot) +{ + PrintToClientOrConsole(slot, "Version", "Swiftly Version informations:\n"); + PrintToClientOrConsole(slot, "Version", " Swiftly Version: %s (%s)\n", g_Plugin.GetVersion(), std::string(GITHUB_SHA).substr(0, 7).c_str()); + PrintToClientOrConsole(slot, "Version", " Swiftly API Version: %d\n", g_Plugin.GetApiVersion()); + PrintToClientOrConsole(slot, "Version", " Swiftly C++ Version: %s\n", GetCppVersion()); + PrintToClientOrConsole(slot, "Version", " Compiled on: %s %s\n", __DATE__, __TIME__); + PrintToClientOrConsole(slot, "Version", " Github Commit: https://github.com/swiftly-solution/swiftly/commit/%s\n", std::string(GITHUB_SHA).c_str()); + PrintToClientOrConsole(slot, "Version", " https://github.com/swiftly-solution \n"); +} diff --git a/src/core/configuration/setup.cpp b/src/core/configuration/setup.cpp new file mode 100644 index 000000000..4337d4572 --- /dev/null +++ b/src/core/configuration/setup.cpp @@ -0,0 +1,11 @@ +#include <filesystem/files/files.h> + +void HandleConfigExamples() { + auto files = Files::FetchFileNames("addons/swiftly/configs"); + for(auto file : files) { + const std::string config_name = replace(file, ".example", ""); + if(ends_with(file, ".example.json") && !Files::ExistsPath(config_name)) { + Files::Write(config_name, Files::Read(file), false); + } + } +} \ No newline at end of file diff --git a/src/core/configuration/setup.h b/src/core/configuration/setup.h new file mode 100644 index 000000000..5340513cf --- /dev/null +++ b/src/core/configuration/setup.h @@ -0,0 +1,6 @@ +#ifndef _core_configuration_setup_h +#define _core_configuration_setup_h + +void HandleConfigExamples(); + +#endif \ No newline at end of file diff --git a/src/core/console/console.cpp b/src/core/console/console.cpp new file mode 100644 index 000000000..28ed88c8b --- /dev/null +++ b/src/core/console/console.cpp @@ -0,0 +1,32 @@ +#if _WIN32 +#include <Windows.h> +#include <stdio.h> + +FILE _ioccc[] = { *stdin, *stdout, *stderr }; +extern "C" FILE* __cdecl __iob_func(void) +{ + return _ioccc; +} + +void SetupConsoleColors() { + auto hOut = GetStdHandle(STD_OUTPUT_HANDLE); + + if (hOut != INVALID_HANDLE_VALUE) { + DWORD dwMode = 0; + if (GetConsoleMode(hOut, &dwMode)) { + dwMode |= ENABLE_PROCESSED_OUTPUT | ENABLE_VIRTUAL_TERMINAL_PROCESSING; + SetConsoleMode(hOut, dwMode); + } + + FILE* fp; + + if (freopen_s(&fp, "CONOUT$", "w", stdout) == 0) + setvbuf(stdout, NULL, _IONBF, 0); + } +} + +#else + +void SetupConsoleColors() {} + +#endif \ No newline at end of file diff --git a/src/core/console/console.h b/src/core/console/console.h new file mode 100644 index 000000000..a1f458ff1 --- /dev/null +++ b/src/core/console/console.h @@ -0,0 +1,6 @@ +#ifndef _src_core_console_console_h +#define _src_core_console_console_h + +void SetupConsoleColors(); + +#endif \ No newline at end of file diff --git a/src/core/entrypoint.cpp b/src/core/entrypoint.cpp new file mode 100644 index 000000000..bc55de839 --- /dev/null +++ b/src/core/entrypoint.cpp @@ -0,0 +1,412 @@ +#include "entrypoint.h" + +#include <tier1/convar.h> +#include <interfaces/interfaces.h> +#include <metamod_oslink.h> +#include <public/tier0/platform.h> + +#include <utils/common.h> + +#include <core/configuration/setup.h> +#include <core/console/console.h> + +#include <scripting/core.h> + +#include <engine/convars/manager.h> +#include <engine/convars/query.h> +#include <engine/vgui/vgui.h> +#include <engine/gameevents/gameevents.h> +#include <engine/precacher/precacher.h> + +#include <entities/system.h> + +#include <sdk/schema.h> + +#include <server/configuration/configuration.h> +#include <server/translations/translations.h> +#include <server/player/manager.h> +#include <server/commands/manager.h> +#include <server/menus/MenuManager.h> + +#include <filesystem/logs/logger.h> + +#include <memory/gamedata/gamedata.h> +#include <memory/hooks/manager.h> + +#include <network/usermessages/usermessages.h> + +#include <extensions/manager.h> +#include <server/chat/chat.h> +#include <engine/voicemanager/manager.h> + +#include <plugins/manager.h> + +#include <sdk/access.h> +#include <sdk/game.h> + +#include <schemasystem/schemasystem.h> + +#include <network/database/DatabaseManager.h> + +#include <tools/crashreporter/callstack.h> +#include <tools/crashreporter/crashreporter.h> +#include <tools/resourcemonitor/monitor.h> + +#include <public/tier0/icommandline.h> +#include <public/steam/steam_gameserver.h> +#include <utils/utils.h> + +////////////////////////////////////////////////////////////// +///////////////// SourceHook Hooks ////////////// +//////////////////////////////////////////////////////////// + +class GameSessionConfiguration_t +{ +}; + +SH_DECL_HOOK3_void(INetworkServerService, StartupServer, SH_NOATTRIB, 0, const GameSessionConfiguration_t&, ISource2WorldSession*, const char*); +SH_DECL_HOOK0_void(IServerGameDLL, GameServerSteamAPIActivated, SH_NOATTRIB, 0); +SH_DECL_HOOK0_void(IServerGameDLL, GameServerSteamAPIDeactivated, SH_NOATTRIB, 0); +SH_DECL_HOOK3_void(IServerGameDLL, GameFrame, SH_NOATTRIB, 0, bool, bool, bool); +SH_DECL_HOOK3_void(ICvar, DispatchConCommand, SH_NOATTRIB, 0, ConCommandRef, const CCommandContext&, const CCommand&); +SH_DECL_HOOK6(IServerGameClients, ClientConnect, SH_NOATTRIB, 0, bool, CPlayerSlot, const char*, uint64, const char*, bool, CBufferString*); +SH_DECL_HOOK7_void(ISource2GameEntities, CheckTransmit, SH_NOATTRIB, 0, CCheckTransmitInfo**, int, CBitVec<16384>&, const Entity2Networkable_t**, const uint16_t*, int, bool); +SH_DECL_HOOK6_void(IServerGameClients, OnClientConnected, SH_NOATTRIB, 0, CPlayerSlot, const char*, uint64, const char*, const char*, bool); +SH_DECL_HOOK5_void(IServerGameClients, ClientDisconnect, SH_NOATTRIB, 0, CPlayerSlot, ENetworkDisconnectionReason, const char*, uint64, const char*); +SH_DECL_HOOK8_void(IGameEventSystem, PostEventAbstract, SH_NOATTRIB, 0, CSplitScreenSlot, bool, int, const uint64*, INetworkMessageInternal*, const CNetMessage*, unsigned long, NetChannelBufType_t); +SH_DECL_HOOK3(IVEngineServer2, SetClientListening, SH_NOATTRIB, 0, bool, CPlayerSlot, CPlayerSlot, bool); +SH_DECL_HOOK2_void(IServerGameClients, ClientCommand, SH_NOATTRIB, 0, CPlayerSlot, const CCommand&); + +////////////////////////////////////////////////////////////// +///////////////// Core Variables & Functions ////////////// +//////////////////////////////////////////////////////////// + +SwiftlyS2 g_Plugin; +IVEngineServer2* engine = nullptr; +ISource2Server* server = nullptr; +CSchemaSystem* g_pSchemaSystem2 = nullptr; +CGameEntitySystem* g_pGameEntitySystem = nullptr; +IGameResourceService* g_pGameResourceService = nullptr; +CEntitySystem* g_pEntitySystem = nullptr; +IGameEventManager2* g_gameEventManager = nullptr; +IGameEventSystem* g_pGameEventSystem = nullptr; +IServerGameClients* gameclients = nullptr; +ICvar* g_pcVar = nullptr; + +CSteamGameServerAPIContext g_SteamAPI; + +////////////////////////////////////////////////////////////// +///////////////// Internal Variables ////////////// +//////////////////////////////////////////////////////////// + +Configuration g_Config; +Logger g_Logger; +Translations g_translations; +GameData g_GameData; +SDKAccess g_sdk; +PluginsManager g_pluginManager; +EventManager g_eventManager; +Precacher g_precacher; +EntitySystem g_entSystem; +PlayerManager g_playerManager; +CommandsManager g_commandsManager; +VGUI g_VGUI; +CvarQuery g_convarQuery; +ConvarManager g_cvarManager; +CallStackManager g_callStack; +ResourceMonitor g_ResourceMonitor; +ExtensionManager extManager; +ChatProcessor g_chatProcessor; +VoiceManager g_voiceManager; +MenuManager g_MenuManager; +DatabaseManager g_dbManager; +HookManager g_hookManager; +UserMessages g_ums; + +std::map<std::string, std::string> gameEventsRegister; +std::vector<ClassLoader*> loaderClasses; + +////////////////////////////////////////////////////////////// +///////////////// Core Class ////////////// +//////////////////////////////////////////////////////////// + +PLUGIN_EXPOSE(SwiftlyS2, g_Plugin); +bool SwiftlyS2::Load(PluginId id, ISmmAPI* ismm, char* error, size_t maxlen, bool late) +{ + PLUGIN_SAVEVARS(); + g_SMAPI->AddListener(this, this); + + if (GetGameName() == "unknown") { + ismm->Format(error, maxlen, "Unknown game detected."); + return false; + } + + SetupConsoleColors(); + + GET_V_IFACE_CURRENT(GetEngineFactory, g_pCVar, ICvar, CVAR_INTERFACE_VERSION); + GET_V_IFACE_CURRENT(GetEngineFactory, engine, IVEngineServer2, INTERFACEVERSION_VENGINESERVER); + GET_V_IFACE_CURRENT(GetEngineFactory, g_pSchemaSystem2, CSchemaSystem, SCHEMASYSTEM_INTERFACE_VERSION); + GET_V_IFACE_CURRENT(GetEngineFactory, g_pGameEventSystem, IGameEventSystem, GAMEEVENTSYSTEM_INTERFACE_VERSION); + GET_V_IFACE_CURRENT(GetEngineFactory, g_pGameResourceService, IGameResourceService, GAMERESOURCESERVICESERVER_INTERFACE_VERSION); + GET_V_IFACE_ANY(GetServerFactory, server, ISource2Server, INTERFACEVERSION_SERVERGAMEDLL); + GET_V_IFACE_ANY(GetFileSystemFactory, g_pFullFileSystem, IFileSystem, FILESYSTEM_INTERFACE_VERSION); + GET_V_IFACE_ANY(GetServerFactory, gameclients, IServerGameClients, INTERFACEVERSION_SERVERGAMECLIENTS); + GET_V_IFACE_ANY(GetEngineFactory, g_pNetworkMessages, INetworkMessages, NETWORKMESSAGES_INTERFACE_VERSION); + GET_V_IFACE_ANY(GetServerFactory, g_pSource2GameEntities, ISource2GameEntities, SOURCE2GAMEENTITIES_INTERFACE_VERSION); + GET_V_IFACE_ANY(GetEngineFactory, g_pNetworkServerService, INetworkServerService, NETWORKSERVERSERVICE_INTERFACE_VERSION); + + SH_ADD_HOOK_MEMFUNC(IServerGameDLL, GameServerSteamAPIActivated, server, this, &SwiftlyS2::Hook_GameServerSteamAPIActivated, false); + SH_ADD_HOOK_MEMFUNC(IServerGameDLL, GameServerSteamAPIDeactivated, server, this, &SwiftlyS2::Hook_GameServerSteamAPIDeactivated, false); + SH_ADD_HOOK_MEMFUNC(IServerGameDLL, GameFrame, server, this, &SwiftlyS2::GameFrame, true); + SH_ADD_HOOK_MEMFUNC(IServerGameClients, ClientCommand, gameclients, this, &SwiftlyS2::Hook_OnClientCommand, false); + + HandleConfigExamples(); + + if (g_Config.LoadConfiguration()) + PRINT("The configurations has been succesfully loaded.\n"); + else + PRINTRET("Failed to load configurations. The framework will not work.\n", false); + + g_Logger.AddLogger("core", false); + + g_sdk.LoadSDKData(); + g_Config.LoadPluginConfigurations(); + g_GameData.LoadGameData(); + g_GameData.PerformPatches(); + + g_ums.Initialize(); + g_convarQuery.Initialize(); + g_eventManager.Initialize(); + g_entSystem.Initialize(); + g_playerManager.Initialize(); + g_commandsManager.Initialize(); + g_VGUI.Initialize(); + g_chatProcessor.Initialize(); + g_hookManager.Initialize(); + g_voiceManager.OnAllInitialized(); + + g_chatProcessor.LoadMessages(); + g_translations.LoadTranslations(); + + extManager.LoadExtensions(); + + g_dbManager.LoadDatabases(); + + META_CONVAR_REGISTER(FCVAR_RELEASE | FCVAR_SERVER_CAN_EXECUTE | FCVAR_CLIENT_CAN_EXECUTE | FCVAR_GAMEDLL); + + g_pluginManager.LoadPlugins(""); + g_pluginManager.StartPlugins(); + + if (late) + { + g_eventManager.RegisterGameEvents(); + g_SteamAPI.Init(); + if (!BeginCrashListener()) PRINTRET("Failed to setup crash listener.\n", false); + } + + PRINT("Succesfully started.\n"); + + return true; +} + +bool SwiftlyS2::Unload(char* error, size_t maxlen) +{ + g_pluginManager.StopPlugins(false); + g_pluginManager.UnloadPlugins(); + + extManager.UnloadExtensions(); + g_ums.Destroy(); + g_convarQuery.Shutdown(); + g_eventManager.Shutdown(); + g_entSystem.Shutdown(); + g_playerManager.Shutdown(); + g_commandsManager.Shutdown(); + g_VGUI.Shutdown(); + g_chatProcessor.Shutdown(); + g_hookManager.Shutdown(); + g_voiceManager.OnShutdown(); + + SH_REMOVE_HOOK_MEMFUNC(IServerGameDLL, GameServerSteamAPIActivated, server, this, &SwiftlyS2::Hook_GameServerSteamAPIActivated, false); + SH_REMOVE_HOOK_MEMFUNC(IServerGameDLL, GameServerSteamAPIDeactivated, server, this, &SwiftlyS2::Hook_GameServerSteamAPIDeactivated, false); + SH_REMOVE_HOOK_MEMFUNC(IServerGameDLL, GameFrame, server, this, &SwiftlyS2::GameFrame, true); + SH_REMOVE_HOOK_MEMFUNC(IServerGameClients, ClientCommand, gameclients, this, &SwiftlyS2::Hook_OnClientCommand, false); + + EndCrashListener(); + return true; +} + +bool OnClientCommand(int playerid, std::string command) +{ + ClassData data({ { "plugin_name", "core" } }, "Event", nullptr); + g_pluginManager.ExecuteEvent("core", "OnClientCommand", { playerid, command }, &data); + + bool response = true; + try + { + response = std::any_cast<bool>(data.GetData<std::any>("event_return")); + } + catch (std::bad_any_cast& e) + { + response = true; + } + + return response; +} + +void SwiftlyS2::Hook_OnClientCommand(CPlayerSlot slot, const CCommand& cmd) +{ + if (!OnClientCommand(slot.Get(), cmd.GetCommandString())) + RETURN_META(MRES_SUPERCEDE); + + RETURN_META(MRES_IGNORED); +} + +void SwiftlyS2::RegisterTimeout(int64_t delay, std::function<void()> callback) +{ + timeoutsArray.push_back({ GetTime() + delay, callback }); + processingTimeouts = true; +} + +void SwiftlyS2::AllPluginsLoaded() +{ + +} + +std::string currentMap = "None"; + +void SwiftlyS2::OnLevelInit(char const* pMapName, char const* pMapEntities, char const* pOldLevel, char const* pLandmarkName, bool loadGame, bool background) +{ + currentMap = pMapName; + g_pluginManager.ExecuteEvent("core", "OnMapLoad", { currentMap }, nullptr); +} + +void SwiftlyS2::OnLevelShutdown() +{ + g_translations.LoadTranslations(); + g_Config.LoadPluginConfigurations(); + + g_pluginManager.ExecuteEvent("core", "OnMapUnload", { currentMap }, nullptr); +} + +std::list<std::list<std::pair<int64_t, std::function<void()>>>::iterator> queueRemoveTimeouts; + +void UpdatePlayers() +{ + // Credits to: https://github.com/Source2ZE/ServerListPlayersFix (Source2ZE Team) + if (!engine->GetServerGlobals() || !g_SteamAPI.SteamGameServer()) + return; + + for (int i = 0; i < engine->GetServerGlobals()->maxClients; i++) + { + auto steamId = engine->GetClientSteamID(CPlayerSlot(i)); + if (steamId) + { + auto controller = g_pEntitySystem->GetEntityInstance(CEntityIndex(i + 1)); + if (controller) + g_SteamAPI.SteamGameServer()->BUpdateUserData(*steamId, schema::GetPropPtr<char>(controller, "CBasePlayerController", "m_iszPlayerName"), gameclients->GetPlayerScore(CPlayerSlot(i))); + } + } +} + +ClassData* gfData = new ClassData({ { "plugin_name", "" } }, "Event", nullptr); + +void SwiftlyS2::GameFrame(bool simulate, bool first, bool last) +{ + if (processingTimeouts) { + int64_t t = GetTime(); + for (auto it = timeoutsArray.begin(); it != timeoutsArray.end(); ++it) { + if (it->first <= t) { + queueRemoveTimeouts.push_back(it); + it->second(); + } + } + + for (auto it = queueRemoveTimeouts.rbegin(); it != queueRemoveTimeouts.rend(); ++it) + timeoutsArray.erase(*it); + + queueRemoveTimeouts.clear(); + processingTimeouts = (timeoutsArray.size() > 0); + } + + static double g_flNextUpdate = 0.0; + double curtime = Plat_FloatTime(); + if (curtime > g_flNextUpdate) + { + // Credits to: https://github.com/Source2ZE/ServerListPlayersFix (Source2ZE Team) + UpdatePlayers(); + + g_flNextUpdate = curtime + 5.0; + } + + g_pluginManager.ExecuteEvent("core", "OnGameTick", { simulate, first, last }, gfData); +} + +void SwiftlyS2::Hook_GameServerSteamAPIActivated() +{ + if (!CommandLine()->HasParm("-dedicated") || g_SteamAPI.SteamUGC()) + return; + + g_SteamAPI.Init(); + + ExecuteOnce(BeginCrashListener()); + RETURN_META(MRES_IGNORED); +} + +void SwiftlyS2::Hook_GameServerSteamAPIDeactivated() +{ + RETURN_META(MRES_IGNORED); +} + +bool SwiftlyS2::Pause(char* error, size_t maxlen) +{ + return true; +} + +bool SwiftlyS2::Unpause(char* error, size_t maxlen) +{ + return true; +} + +const char* SwiftlyS2::GetLicense() +{ + return "GNU GPL 3"; +} + +const char* SwiftlyS2::GetVersion() +{ +#ifndef SWIFTLY_VERSION + return "Local"; +#else + return (std::string("v") + std::string(SWIFTLY_VERSION)).c_str(); +#endif +} + +const char* SwiftlyS2::GetDate() +{ + return __DATE__; +} + +const char* SwiftlyS2::GetLogTag() +{ + return "SWIFTLY"; +} + +const char* SwiftlyS2::GetAuthor() +{ + return "Swiftly Development Team"; +} + +const char* SwiftlyS2::GetDescription() +{ + return "SwiftlyS2 - Framework"; +} + +const char* SwiftlyS2::GetName() +{ + return "SwiftlyS2"; +} + +const char* SwiftlyS2::GetURL() +{ + return "https://github.com/swiftly-solution/swiftly"; +} diff --git a/src/core/entrypoint.h b/src/core/entrypoint.h new file mode 100644 index 000000000..dcaf59b2d --- /dev/null +++ b/src/core/entrypoint.h @@ -0,0 +1,62 @@ +#ifndef _core_entrypoint_h +#define _core_entrypoint_h + +#include <ISmmPlugin.h> +#include <public/igameevents.h> +#include <sh_vector.h> +#include <engine/igameeventsystem.h> +#include <public/networksystem/inetworkmessages.h> +#include <public/entity2/entitysystem.h> +#include <public/iserver.h> +#include <public/steam/steam_api_common.h> +#include <public/steam/isteamugc.h> +#include <functional> +#include <list> + +class SwiftlyS2 : public ISmmPlugin, public IMetamodListener +{ +private: + std::list<std::pair<int64_t, std::function<void()>>> timeoutsArray; + bool processingTimeouts = false; +public: + bool Load(PluginId id, ISmmAPI* ismm, char* error, size_t maxlen, bool late); + bool Unload(char* error, size_t maxlen); + bool Pause(char* error, size_t maxlen); + bool Unpause(char* error, size_t maxlen); + void AllPluginsLoaded(); + + void Hook_GameServerSteamAPIActivated(); + void Hook_GameServerSteamAPIDeactivated(); + void GameFrame(bool simulate, bool first, bool last); + void Hook_OnClientCommand(CPlayerSlot slot, const CCommand& cmd); + + void OnLevelInit(char const* pMapName, char const* pMapEntities, char const* pOldLevel, char const* pLandmarkName, bool loadGame, bool background); + void OnLevelShutdown(); + + void RegisterTimeout(int64_t delay, std::function<void()> callback); + +public: + const char* GetAuthor(); + const char* GetName(); + const char* GetDescription(); + const char* GetURL(); + const char* GetLicense(); + const char* GetVersion(); + const char* GetDate(); + const char* GetLogTag(); +}; + +extern SwiftlyS2 g_Plugin; +extern IVEngineServer2* engine; +extern ISource2Server* server; +extern CGameEntitySystem* g_pGameEntitySystem; +extern IGameResourceService* g_pGameResourceService; +extern CEntitySystem* g_pEntitySystem; +extern IGameEventManager2* g_gameEventManager; +extern IGameEventSystem* g_pGameEventSystem; +extern ICvar* g_pcVar; +extern IServerGameClients* gameclients; +extern CSteamGameServerAPIContext g_SteamAPI; +PLUGIN_GLOBALVARS(); + +#endif \ No newline at end of file diff --git a/src/engine/convars/manager.cpp b/src/engine/convars/manager.cpp new file mode 100644 index 000000000..91bdc47c1 --- /dev/null +++ b/src/engine/convars/manager.cpp @@ -0,0 +1,322 @@ +#include "manager.h" + +#include <utils/common.h> +#include <embedder/src/Embedder.h> + +#define NEW_CVAR(data_type, default_value) \ + cvarptr = (void*)(new CConVar<data_type>(cvar_name.c_str(), flags, description.c_str(), AnyCastOr<data_type>(defaultValue, default_value), min, AnyCastOr<data_type>(min_value, default_value), max, AnyCastOr<data_type>(max_value, default_value))) + +#define NEW_CVAR_CLASS(data_type, str, default_value) \ + cvarptr = (void*)(new CConVar<data_type>(cvar_name.c_str(), flags, description.c_str(), AnyCastClassData<data_type>(defaultValue, str, default_value), min, AnyCastClassData<data_type>(min_value, str, default_value), max, AnyCastClassData<data_type>(max_value, str, default_value))) + +#define FREE_CVAR(data_type) \ + delete (CConVar<data_type>*)cvarptr; + +EConVarType ConvarManager::GetConvarType(std::string cvar_name) +{ + ConVarRefAbstract cvar(cvar_name.c_str()); + + if (!cvar.IsValidRef()) return EConVarType_Invalid; + return cvar.GetType(); +} + +ConvarManager::~ConvarManager() +{ + for (auto it = cvarsMap.begin(); it != cvarsMap.end(); ++it) + DeleteConvar(it->first); +} + +std::any ConvarManager::GetConvarValue(std::string cvar_name) +{ + ConVarRefAbstract cvar(cvar_name.c_str()); + CSplitScreenSlot server(0); + if (!cvar.IsConVarDataValid()) return nullptr; + + if (cvar.GetType() == EConVarType_Int16) + { + return cvar.GetAs<int16>(server); + } + else if (cvar.GetType() == EConVarType_UInt16) + { + return cvar.GetAs<uint16>(server); + } + else if (cvar.GetType() == EConVarType_UInt32) + { + return cvar.GetAs<uint32>(server); + } + else if (cvar.GetType() == EConVarType_Int32) + { + return cvar.GetAs<int32>(server); + } + else if (cvar.GetType() == EConVarType_UInt64) + { + return cvar.GetAs<uint64>(server); + } + else if (cvar.GetType() == EConVarType_Int64) + { + return cvar.GetAs<int64>(server); + } + else if (cvar.GetType() == EConVarType_Bool) + { + return cvar.GetAs<bool>(server); + } + else if (cvar.GetType() == EConVarType_Float32) + { + return (float)cvar.GetAs<float32>(server); + } + else if (cvar.GetType() == EConVarType_Float64) + { + return (double)cvar.GetAs<float64>(server); + } + else if (cvar.GetType() == EConVarType_String) + { + return cvar.GetString(server).String(); + } + else if (cvar.GetType() == EConVarType_Color) + { + return cvar.GetAs<Color>(server); + } + else if (cvar.GetType() == EConVarType_Vector2) + { + return cvar.GetAs<Vector2D>(server); + } + else if (cvar.GetType() == EConVarType_Vector3) + { + return cvar.GetAs<Vector>(server); + } + else if (cvar.GetType() == EConVarType_Vector4) + { + return cvar.GetAs<Vector4D>(server); + } + else if (cvar.GetType() == EConVarType_Qangle) + { + return cvar.GetAs<QAngle>(server); + } + else { + PRINTF("Unsupported ConVar type: %d. Returning null.\n", (int)cvar.GetType()); + return nullptr; + } +} + +void ConvarManager::SetConvarValue(std::string cvar_name, std::any value) +{ + ConVarRefAbstract cvar(cvar_name.c_str()); + CSplitScreenSlot server(0); + if (!cvar.IsConVarDataValid()) return; + + try { + if (cvar.GetType() == EConVarType_Int16) + { + cvar.SetAs<int16>(std::any_cast<int16_t>(value), server); + } + else if (cvar.GetType() == EConVarType_UInt16) + { + cvar.SetAs<uint16>(std::any_cast<uint16_t>(value), server); + } + else if (cvar.GetType() == EConVarType_UInt32) + { + cvar.SetAs<uint32>(std::any_cast<uint32_t>(value), server); + } + else if (cvar.GetType() == EConVarType_Int32) + { + cvar.SetAs<int32>(std::any_cast<int32_t>(value), server); + } + else if (cvar.GetType() == EConVarType_UInt64) + { + cvar.SetAs<uint64>(std::any_cast<uint64_t>(value), server); + } + else if (cvar.GetType() == EConVarType_Int64) + { + cvar.SetAs<int64>(std::any_cast<int64_t>(value), server); + } + else if (cvar.GetType() == EConVarType_Bool) + { + cvar.SetAs<bool>(std::any_cast<bool>(value), server); + } + else if (cvar.GetType() == EConVarType_Float32) + { + cvar.SetAs<float32>((float32)(std::any_cast<float>(value)), server); + } + else if (cvar.GetType() == EConVarType_Float64) + { + cvar.SetAs<float64>((float64)(std::any_cast<double>(value)), server); + } + else if (cvar.GetType() == EConVarType_String) + { + if (value.type() == typeid(char*)) cvar.SetString(CUtlString(std::any_cast<char*>(value)), server); + else if (value.type() == typeid(const char*)) cvar.SetString(CUtlString(std::any_cast<const char*>(value)), server); + else if (value.type() == typeid(std::string)) cvar.SetString(CUtlString(std::any_cast<std::string>(value).c_str()), server); + } + else if (cvar.GetType() == EConVarType_Color) + { + cvar.SetAs<Color>(std::any_cast<ClassData*>(value)->GetData<Color>("Color_ptr"), server); + } + else if (cvar.GetType() == EConVarType_Vector2) + { + cvar.SetAs<Vector2D>(std::any_cast<ClassData*>(value)->GetData<Vector2D>("Vector2D_ptr"), server); + } + else if (cvar.GetType() == EConVarType_Vector3) + { + cvar.SetAs<Vector>(std::any_cast<ClassData*>(value)->GetData<Vector>("vector_ptr"), server); + } + else if (cvar.GetType() == EConVarType_Vector4) + { + cvar.SetAs<Vector4D>(std::any_cast<ClassData*>(value)->GetData<Vector4D>("Vector4D_ptr"), server); + } + else if (cvar.GetType() == EConVarType_Qangle) + { + cvar.SetAs<QAngle>(std::any_cast<ClassData*>(value)->GetData<QAngle>("QAngle_ptr"), server); + } + } + catch (std::bad_any_cast& e) {} +} + +void ConvarManager::CreateConvar(std::string cvar_name, EConVarType type, std::string description, int flags, std::any defaultValue, bool min, std::any min_value, bool max, std::any max_value) +{ + ConVarRefAbstract cvar(cvar_name.c_str()); + if (cvar.IsValidRef()) return; + + void* cvarptr = nullptr; + if (type == EConVarType_Int16) + { + NEW_CVAR(int16, 0); + } + else if (type == EConVarType_UInt16) + { + NEW_CVAR(uint16, 0); + } + else if (type == EConVarType_UInt32) + { + NEW_CVAR(uint32, 0); + } + else if (type == EConVarType_Int32) + { + NEW_CVAR(int32, 0); + } + else if (type == EConVarType_UInt64) + { + NEW_CVAR(uint64, 0); + } + else if (type == EConVarType_Int64) + { + NEW_CVAR(int64, 0); + } + else if (type == EConVarType_Bool) + { + NEW_CVAR(bool, false); + } + else if (type == EConVarType_Float32) + { + NEW_CVAR(float32, 0.0f); + } + else if (type == EConVarType_Float64) + { + NEW_CVAR(float64, 0.0f); + } + else if (type == EConVarType_Color) + { + NEW_CVAR_CLASS(Color, "Color_ptr", Color(0, 0, 0, 0)); + } + else if (type == EConVarType_Vector2) + { + NEW_CVAR_CLASS(Vector2D, "Vector2D_ptr", Vector2D(0.0f, 0.0f)); + } + else if (type == EConVarType_Vector3) + { + NEW_CVAR_CLASS(Vector, "vector_ptr", Vector(0.0f, 0.0f, 0.0f)); + } + else if (type == EConVarType_Vector4) + { + NEW_CVAR_CLASS(Vector4D, "Vector4D_ptr", Vector4D(0.0f, 0.0f, 0.0f, 0.0f)); + } + else if (type == EConVarType_Qangle) + { + NEW_CVAR_CLASS(QAngle, "QAngle_ptr", QAngle(0.0f, 0.0f, 0.0f)); + } + else if (type == EConVarType_String) + { + cvarptr = (void*)(new CConVar<CUtlString>(cvar_name.c_str(), flags, description.c_str(), AnyCastOr<const char*>(defaultValue, ""), min, AnyCastOr<const char*>(min_value, ""), max, AnyCastOr<const char*>(min_value, ""))); + } + + if (!cvarptr) return; + + cvarsMap.insert({ cvar_name, cvarptr }); +} + +void ConvarManager::DeleteConvar(std::string cvar_name) +{ + if (cvarsMap.find(cvar_name) == cvarsMap.end()) return; + + void* cvarptr = cvarsMap.at(cvar_name); + ConVarRefAbstract cvar(cvar_name.c_str()); + + if (cvar.GetType() == EConVarType_Int16) + { + FREE_CVAR(int16); + } + else if (cvar.GetType() == EConVarType_UInt16) + { + FREE_CVAR(uint16); + } + else if (cvar.GetType() == EConVarType_UInt32) + { + FREE_CVAR(uint32); + } + else if (cvar.GetType() == EConVarType_Int32) + { + FREE_CVAR(int32); + } + else if (cvar.GetType() == EConVarType_UInt64) + { + FREE_CVAR(uint64); + } + else if (cvar.GetType() == EConVarType_Int64) + { + FREE_CVAR(int64); + } + else if (cvar.GetType() == EConVarType_Bool) + { + FREE_CVAR(bool); + } + else if (cvar.GetType() == EConVarType_Float32) + { + FREE_CVAR(float32); + } + else if (cvar.GetType() == EConVarType_Float64) + { + FREE_CVAR(float64); + } + else if (cvar.GetType() == EConVarType_String) + { + FREE_CVAR(CUtlString); + } + else if (cvar.GetType() == EConVarType_Color) + { + FREE_CVAR(Color); + } + else if (cvar.GetType() == EConVarType_Vector2) + { + FREE_CVAR(Vector2D); + } + else if (cvar.GetType() == EConVarType_Vector3) + { + FREE_CVAR(Vector); + } + else if (cvar.GetType() == EConVarType_Vector4) + { + FREE_CVAR(Vector4D); + } + else if (cvar.GetType() == EConVarType_Qangle) + { + FREE_CVAR(QAngle); + } + else + { + free(cvarptr); + } +} + +std::map<std::string, void*> ConvarManager::GetCvarMap() +{ + return cvarsMap; +} \ No newline at end of file diff --git a/src/engine/convars/manager.h b/src/engine/convars/manager.h new file mode 100644 index 000000000..e78898ab0 --- /dev/null +++ b/src/engine/convars/manager.h @@ -0,0 +1,54 @@ +#ifndef _engine_convars_manager_h +#define _engine_convars_manager_h + +#include <core/entrypoint.h> +#include <string> +#include <any> +#include <map> +#include <embedder/src/Embedder.h> + +class ConvarManager +{ +private: + std::map<std::string, void*> cvarsMap; +public: + ~ConvarManager(); + + EConVarType GetConvarType(std::string cvar_name); + std::any GetConvarValue(std::string cvar_name); + void SetConvarValue(std::string cvar_name, std::any value); + + void CreateConvar(std::string cvar_name, EConVarType type, std::string description, int flags, std::any defaultValue, bool min, std::any min_value, bool max, std::any max_value); + void DeleteConvar(std::string cvar_name); + + std::map<std::string, void*> GetCvarMap(); +}; + +template<class T> +T AnyCastOr(std::any value, T defaultVal) +{ + try { + return std::any_cast<T>(value); + } + catch (std::bad_any_cast& e) { + return defaultVal; + } +} + +template<class T> +T AnyCastClassData(std::any value, std::string str, T defaultVal) +{ + try { + ClassData* data = std::any_cast<ClassData*>(value); + if (!data) return defaultVal; + + return data->GetDataOr<T>(str, defaultVal); + } + catch (std::bad_any_cast& e) { + return defaultVal; + } +} + +extern ConvarManager g_cvarManager; + +#endif \ No newline at end of file diff --git a/src/engine/convars/query.cpp b/src/engine/convars/query.cpp new file mode 100644 index 000000000..bc65a7a2b --- /dev/null +++ b/src/engine/convars/query.cpp @@ -0,0 +1,107 @@ +#include "query.h" + +#include <memory/gamedata/gamedata.h> +#include <dynlibutils/module.h> + +#include <sdk/components/CSingleRecipientFilter.h> +#include <sdk/components/CServerSideClient.h> + +#include <server/player/manager.h> + +std::map<std::string, std::string> languages = { + { "arabic", "ar" }, + { "bulgarian", "bg" }, + { "schinese", "zh-CN" }, + { "tchinese", "zh-TW" }, + { "czech", "cs" }, + { "danish", "da" }, + { "dutch", "nl" }, + { "english", "en" }, + { "finnish", "fi" }, + { "french", "fr" }, + { "german", "de" }, + { "greek", "el" }, + { "hungarian", "hu" }, + { "indonesian", "id" }, + { "italian", "it" }, + { "japanese", "ja" }, + { "koreana", "ko" }, + { "norwegian", "no" }, + { "polish", "pl" }, + { "portuguese", "pt" }, + { "brazilian", "pt-BR" }, + { "romanian", "ro" }, + { "russian", "ru" }, + { "spanish", "es" }, + { "latam", "es-419" }, + { "swedish", "sv" }, + { "thai", "th" }, + { "turkish", "tr" }, + { "ukrainian", "uk" }, + { "vietnamese", "vn" }, +}; + +SH_DECL_MANUALHOOK1(OnConVarQuery, 0, 0, 0, bool, const CNetMessagePB<CCLCMsg_RespondCvarValue>&); +DynLibUtils::CModule DetermineModuleByLibrary(std::string library); + +int OnConVarQueryID = -1; + +void CvarQuery::Initialize() +{ + SH_MANUALHOOK_RECONFIGURE(OnConVarQuery, g_GameData.GetOffset("CServerSideClient_OnConVarQuery"), 0, 0); + + DynLibUtils::CModule eng = DetermineModuleByLibrary("engine2"); + void* serverSideClientVTable = eng.GetVirtualTableByName("CServerSideClient"); + OnConVarQueryID = SH_ADD_MANUALDVPHOOK(OnConVarQuery, serverSideClientVTable, SH_MEMBER(this, &CvarQuery::OnConvarQuery), true); +} + +void CvarQuery::Shutdown() +{ + if (OnConVarQueryID == -1) return; + + SH_REMOVE_HOOK_ID(OnConVarQueryID); +} + +void OnClientConvarQuery(int playerid, std::string convar_name, std::string convar_value); + +bool CvarQuery::OnConvarQuery(const CNetMessagePB<CCLCMsg_RespondCvarValue>& msg) +{ + auto client = META_IFACEPTR(CServerSideClient); + + auto player = g_playerManager.GetPlayer(client->GetPlayerSlot()); + if (!player) RETURN_META_VALUE(MRES_IGNORED, true); + if (player->IsFakeClient()) RETURN_META_VALUE(MRES_IGNORED, true); + + if (msg.name() == "cl_language") { + if (languages.find(msg.value()) != languages.end()) { + player->SetInternalVar("language", languages.at(msg.value())); + } + } + + OnClientConvarQuery(client->GetPlayerSlot().Get(), msg.name(), msg.value()); + + RETURN_META_VALUE(MRES_IGNORED, true); +} + +void CvarQuery::QueryCvarClient(CPlayerSlot slot, std::string cvarName) +{ + auto pMsg = g_pNetworkMessages->FindNetworkMessagePartial("GetCvarValue"); + + auto msg = pMsg->AllocateMessage()->ToPB<CSVCMsg_GetCvarValue>(); + msg->set_cvar_name(cvarName.c_str()); + + CSingleRecipientFilter filter(slot.Get()); + g_pGameEventSystem->PostEventAbstract(-1, false, &filter, pMsg, msg, 0); + + /* + for the god's sake, why on windows without memoverride it automatically collects this pointer and deletes it ???? + they have some special shananigans over here + always remember to not delete it on windows because you'll stay again 4 hrs to debug it + + i'll use dreamberd next time to use "const const const" which will affect all users of windows globally for this + so that they don't need to debug it like i did + */ +#ifndef _WIN32 + delete msg; +#endif +} \ No newline at end of file diff --git a/src/engine/convars/query.h b/src/engine/convars/query.h new file mode 100644 index 000000000..f33bddfd7 --- /dev/null +++ b/src/engine/convars/query.h @@ -0,0 +1,20 @@ +#ifndef _engine_convars_query_h +#define _engine_convars_query_h + +#include <core/entrypoint.h> +#include "netmessages.pb.h" + +class CvarQuery +{ +public: + void Initialize(); + void Shutdown(); + + bool OnConvarQuery(const CNetMessagePB<CCLCMsg_RespondCvarValue>& msg); + + void QueryCvarClient(CPlayerSlot slot, std::string cvarName); +}; + +extern CvarQuery g_convarQuery; + +#endif \ No newline at end of file diff --git a/src/engine/gameevents/gameevents.cpp b/src/engine/gameevents/gameevents.cpp new file mode 100644 index 000000000..1da92c914 --- /dev/null +++ b/src/engine/gameevents/gameevents.cpp @@ -0,0 +1,223 @@ +#include "gameevents.h" + +#include <utils/common.h> +#include <sdk/game.h> +#include <memory/encoders/json.h> +#include <filesystem/files/files.h> +#include <embedder/src/Embedder.h> +#include <plugins/manager.h> +#include <engine/vgui/vgui.h> +#include <server/player/manager.h> + +#include <dynlibutils/module.h> +#include <rapidjson/json.hpp> +#include <any> + +#include <stack> + +extern std::map<std::string, std::string> gameEventsRegister; + +SH_DECL_EXTERN3_void(INetworkServerService, StartupServer, SH_NOATTRIB, 0, const GameSessionConfiguration_t&, ISource2WorldSession*, const char*); + +SH_DECL_HOOK2(IGameEventManager2, FireEvent, SH_NOATTRIB, 0, bool, IGameEvent*, bool); +SH_DECL_HOOK2(IGameEventManager2, LoadEventsFromFile, SH_NOATTRIB, 0, int, const char*, bool); +int loadEventFromFileHookID = -1; + +DynLibUtils::CModule DetermineModuleByLibrary(std::string library); + +std::stack<IGameEvent*> dupEvents; + +void EventManager::Initialize() +{ + std::string game_name = GetGameName(); + + if (game_name == "unknown") + { + PRINT("Unknown game detected, not loading any game events.\n"); + return; + } + + auto j = encoders::json::FromString(Files::Read("addons/swiftly/gamedata/" + game_name + "/gameevents.json"), "addons/swiftly/gamedata/" + game_name + "/gameevents.json"); + if (!j.IsObject()) + return; + + for (auto it = j.MemberBegin(); it != j.MemberEnd(); ++it) + { + std::string eventRawName = it->name.GetString(); + std::string eventProcessedName = it->value.GetString(); + gameEventsRegister.insert({ eventRawName, eventProcessedName }); + } + + PRINTF("Succesfully loaded %lld Game Events from files.\n", gameEventsRegister.size()); + + DynLibUtils::CModule servermodule = DetermineModuleByLibrary("server"); + auto CGameEventManagerVTable = servermodule.GetVirtualTableByName("CGameEventManager"); + loadEventFromFileHookID = SH_ADD_DVPHOOK(IGameEventManager2, LoadEventsFromFile, (IGameEventManager2*)((void*)CGameEventManagerVTable), SH_MEMBER(this, &EventManager::LoadEventsFromFile), false); +} + +void EventManager::RegisterGameEvents() +{ + PLUGIN_PRINT("Game Events", "Loading game events...\n"); + for (auto it = enqueueListenEvents.begin(); it != enqueueListenEvents.end(); ++it) + { + std::string ev = *(it); + if (!g_gameEventManager->FindListener(this, ev.c_str())) + g_gameEventManager->AddListener(this, ev.c_str(), true); + } + + if (!g_gameEventManager->FindListener(this, "player_spawn")) + g_gameEventManager->AddListener(this, "player_spawn", true); + + PLUGIN_PRINT("Game Events", "Game events have been succesfully loaded.\n"); + loadedGameEvents = true; +} + +void EventManager::RegisterGameEventListen(std::string ev_name) +{ + std::string raw_ev = ""; + + for (auto it = gameEventsRegister.begin(); it != gameEventsRegister.end(); ++it) + { + if (it->second == ev_name) + { + raw_ev = it->first; + break; + } + } + + if (raw_ev == "") + return; + + if (!loadedGameEvents) + { + if (enqueueListenEvents.find(raw_ev) == enqueueListenEvents.end()) + enqueueListenEvents.insert(raw_ev); + } + else + { + if (!g_gameEventManager->FindListener(this, raw_ev.c_str())) + g_gameEventManager->AddListener(this, raw_ev.c_str(), true); + } +} + +int EventManager::LoadEventsFromFile(const char* filePath, bool searchAll) +{ + if (!g_gameEventManager) + { + g_gameEventManager = META_IFACEPTR(IGameEventManager2); + + SH_ADD_HOOK(IGameEventManager2, FireEvent, g_gameEventManager, SH_MEMBER(this, &EventManager::OnFireEvent), false); + SH_ADD_HOOK(IGameEventManager2, FireEvent, g_gameEventManager, SH_MEMBER(this, &EventManager::OnPostFireEvent), true); + SH_ADD_HOOK(INetworkServerService, StartupServer, g_pNetworkServerService, SH_MEMBER(this, &EventManager::StartupServer), true); + } + + RETURN_META_VALUE(MRES_IGNORED, 0); +} + +void EventManager::Shutdown() +{ + SH_REMOVE_HOOK(IGameEventManager2, FireEvent, g_gameEventManager, SH_MEMBER(this, &EventManager::OnFireEvent), false); + SH_REMOVE_HOOK(IGameEventManager2, FireEvent, g_gameEventManager, SH_MEMBER(this, &EventManager::OnPostFireEvent), true); + SH_REMOVE_HOOK(INetworkServerService, StartupServer, g_pNetworkServerService, SH_MEMBER(this, &EventManager::StartupServer), true); + SH_REMOVE_HOOK_ID(loadEventFromFileHookID); + + g_gameEventManager->RemoveListener(this); +} + +void EventManager::StartupServer(const GameSessionConfiguration_t& config, ISource2WorldSession*, const char*) +{ + RegisterGameEvents(); +} + +void EventManager::FireGameEvent(IGameEvent* pEvent) {} + +bool EventManager::OnFireEvent(IGameEvent* pEvent, bool bDontBroadcast) +{ + if (!pEvent) + { + RETURN_META_VALUE(MRES_IGNORED, false); + } + + std::string eventName = pEvent->GetName(); + + bool dontBroadcast = bDontBroadcast; + + std::string prettyEventName = gameEventsRegister[eventName]; + if (!prettyEventName.empty()) + { + std::map<std::string, std::any> evData = { { "plugin_name", "core" }, { "event_data", pEvent }, { "dontBroadcast", dontBroadcast } }; + auto eventData = new ClassData(evData, "Event", nullptr); + + EventResult result = g_pluginManager.ExecuteEvent("core", prettyEventName, {}, eventData); + + dontBroadcast = eventData->GetDataOr<bool>("dontBroadcast", dontBroadcast); + + delete eventData; + + if (prettyEventName == "OnPlayerSpawn") + { + auto slot = pEvent->GetPlayerSlot("userid"); + Player* player = g_playerManager.GetPlayer(slot); + if (player) + { + player->SetFirstSpawn(false); + player->EnsureCustomView(1); + } + } + if (result != EventResult::Continue) + { + dupEvents.push(g_gameEventManager->DuplicateEvent(pEvent)); + g_gameEventManager->FreeEvent(pEvent); + RETURN_META_VALUE(MRES_SUPERCEDE, false); + } + } + + dupEvents.push(g_gameEventManager->DuplicateEvent(pEvent)); + + if (dontBroadcast != bDontBroadcast) + { + RETURN_META_VALUE_NEWPARAMS(MRES_IGNORED, true, &IGameEventManager2::FireEvent, (pEvent, dontBroadcast)); + } + + RETURN_META_VALUE(MRES_IGNORED, true); +} + +bool EventManager::OnPostFireEvent(IGameEvent* pEvent, bool bDontBroadcast) +{ + if (!pEvent) + { + RETURN_META_VALUE(MRES_IGNORED, false); + } + + IGameEvent* realGameEvent = dupEvents.top(); + + std::string eventName = realGameEvent->GetName(); + + std::string prettyEventName = gameEventsRegister[eventName]; + + if (prettyEventName == "OnRoundStart") { + g_Plugin.RegisterTimeout(100, []() -> void { + g_VGUI.RegenerateScreenTexts(); + }); + } + + if (!prettyEventName.empty()) + { + std::map<std::string, std::any> evData = { { "plugin_name", "core" }, { "event_data", realGameEvent }, { "dontBroadcast", bDontBroadcast } }; + auto eventData = new ClassData(evData, "Event", nullptr); + + EventResult result = g_pluginManager.ExecuteEvent("core", string_format("OnPost%s", prettyEventName.substr(2).c_str()), {}, eventData); + + delete eventData; + + if (result != EventResult::Continue) { + g_gameEventManager->FreeEvent(realGameEvent); + dupEvents.pop(); + RETURN_META_VALUE(MRES_SUPERCEDE, false); + } + } + + g_gameEventManager->FreeEvent(realGameEvent); + dupEvents.pop(); + RETURN_META_VALUE(MRES_IGNORED, true); +} \ No newline at end of file diff --git a/src/engine/gameevents/gameevents.h b/src/engine/gameevents/gameevents.h new file mode 100644 index 000000000..2cae6761a --- /dev/null +++ b/src/engine/gameevents/gameevents.h @@ -0,0 +1,33 @@ +#ifndef _engine_gameevents_h +#define _engine_gameevents_h + +#include <core/entrypoint.h> +#include <set> +#include <string> + +typedef void (*EventListenerCallback)(IGameEvent* event); + +class EventManager : public IGameEventListener2 +{ +private: + std::set<std::string> enqueueListenEvents; + bool loadedGameEvents = false; + +public: + void Initialize(); + void Shutdown(); + void RegisterGameEvents(); + void RegisterGameEventListen(std::string ev_name); + + void FireGameEvent(IGameEvent* pEvent) override; + bool OnFireEvent(IGameEvent* pEvent, bool bDontBroadcast); + bool OnPostFireEvent(IGameEvent* pEvent, bool bDontBroadcast); + + void StartupServer(const GameSessionConfiguration_t& config, ISource2WorldSession*, const char*); + + int LoadEventsFromFile(const char* filePath, bool searchAll); +}; + +extern EventManager g_eventManager; + +#endif \ No newline at end of file diff --git a/src/engine/precacher/game_system.cpp b/src/engine/precacher/game_system.cpp new file mode 100644 index 000000000..0714c2d3d --- /dev/null +++ b/src/engine/precacher/game_system.cpp @@ -0,0 +1,49 @@ +/** + * ============================================================================= + * CS2Fixes + * Copyright (C) 2023-2024 Source2ZE + * ============================================================================= + * + * This program is free software; you can redistribute it and/or modify it under + * the terms of the GNU General Public License, version 3.0, as published by the + * Free Software Foundation. + * + * This program is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS + * FOR A PARTICULAR PURPOSE. See the GNU General Public License for more + * details. + * + * You should have received a copy of the GNU General Public License along with + * this program. If not, see <http://www.gnu.org/licenses/>. + */ + +#include "game_system.h" +#include "precacher.h" + +CBaseGameSystemFactory** CBaseGameSystemFactory::sm_pFirst = nullptr; + +CGameSystem g_GameSystem; +IGameSystemFactory* CGameSystem::sm_Factory = nullptr; + +bool InitGameSystem() +{ + uint8_t* ptr = ((uint8_t*)g_GameData.FetchRawSignature("IGameSystem_InitAllSystems_pFirst")) + 3; + if(!ptr) return false; + + uint32_t offset = *(uint32*)ptr; + + ptr += 4; + + CBaseGameSystemFactory::sm_pFirst = (CBaseGameSystemFactory**)(ptr + offset); + + CGameSystem::sm_Factory = new CGameSystemStaticFactory<CGameSystem>("Swiftly_GameSystem", &g_GameSystem); + + return true; +} + +GS_EVENT_MEMBER(CGameSystem, BuildGameSessionManifest) +{ + IEntityResourceManifest* pResManifest = msg->m_pResourceManifest; + + g_precacher.CacheItems(pResManifest); +} \ No newline at end of file diff --git a/src/engine/precacher/game_system.h b/src/engine/precacher/game_system.h new file mode 100644 index 000000000..340e303f6 --- /dev/null +++ b/src/engine/precacher/game_system.h @@ -0,0 +1,46 @@ +/** + * ============================================================================= + * CS2Fixes + * Copyright (C) 2023-2024 Source2ZE + * ============================================================================= + * + * This program is free software; you can redistribute it and/or modify it under + * the terms of the GNU General Public License, version 3.0, as published by the + * Free Software Foundation. + * + * This program is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS + * FOR A PARTICULAR PURPOSE. See the GNU General Public License for more + * details. + * + * You should have received a copy of the GNU General Public License along with + * this program. If not, see <http://www.gnu.org/licenses/>. + */ + + #include <public/entity2/entitysystem.h> + #include <game/shared/igamesystemfactory.h> + + #include <memory/gamedata/gamedata.h> + +bool InitGameSystem(); + +class CGameSystem : public CBaseGameSystem +{ +public: + GS_EVENT(BuildGameSessionManifest); + + void Shutdown() override + { + delete sm_Factory; + } + + void SetGameSystemGlobalPtrs(void* pValue) override + { + if (sm_Factory) + sm_Factory->SetGlobalPtr(pValue); + } + + bool DoesGameSystemReallocate() override { return sm_Factory->ShouldAutoAdd(); } + + static IGameSystemFactory* sm_Factory; +}; \ No newline at end of file diff --git a/src/engine/precacher/precacher.cpp b/src/engine/precacher/precacher.cpp new file mode 100644 index 000000000..da01e1141 --- /dev/null +++ b/src/engine/precacher/precacher.cpp @@ -0,0 +1,34 @@ +#include "precacher.h" + +#include <memory/gamedata/gamedata.h> +#include <memory/virtual/virtual.h> +#include <utils/common.h> + +void Precacher::AddItem(std::string model) +{ + if (this->cacheItems.find(model) != this->cacheItems.end()) + return; + if (this->precachedItems.find(model) != this->precachedItems.end()) + return; + if (model.size() <= 0) + return; + + this->cacheItems.insert(model); +} + +void Precacher::CacheItems(IEntityResourceManifest* manifest) +{ + int addResourceOffset = g_GameData.GetOffset("CEntityResourceManifest_AddResource"); + for (auto it = this->cacheItems.begin(); it != this->cacheItems.end(); ++it) + { + std::string model = *it; + CALL_VIRTUAL(void, addResourceOffset, manifest, model.c_str()); + this->precachedItems.insert(model); + PLUGIN_PRINTF("Precacher", "Precached '%s'.\n", model.c_str()); + } +} + +bool Precacher::HasModelInList(std::string model) +{ + return (this->precachedItems.find(model) != this->precachedItems.end()); +} \ No newline at end of file diff --git a/src/engine/precacher/precacher.h b/src/engine/precacher/precacher.h new file mode 100644 index 000000000..b3947059f --- /dev/null +++ b/src/engine/precacher/precacher.h @@ -0,0 +1,26 @@ +#ifndef _precacher_h +#define _precacher_h + +#include <cstdint> +#include <set> +#include <string> +#include <algorithm> + +class IEntityResourceManifest; + +class Precacher +{ +private: + int64_t precacheContext = 0; + std::set<std::string> cacheItems; + std::set<std::string> precachedItems; + +public: + void AddItem(std::string model); + bool HasModelInList(std::string model); + void CacheItems(IEntityResourceManifest* manifest); +}; + +extern Precacher g_precacher; + +#endif \ No newline at end of file diff --git a/src/engine/vgui/screentext.cpp b/src/engine/vgui/screentext.cpp new file mode 100644 index 000000000..ed4468137 --- /dev/null +++ b/src/engine/vgui/screentext.cpp @@ -0,0 +1,193 @@ +#include "screentext.h" + +#include <memory/virtual/virtual.h> +#include <server/configuration/configuration.h> +#include <sdk/schema.h> +#include <entities/system.h> +#include <public/entity2/entitykeyvalues.h> + +ScreenText::~ScreenText() +{ + if (pScreenEntity.IsValid()) { + g_entSystem.AcceptInput(pScreenEntity.Get(), "SetMessage", nullptr, nullptr, "", 0); + schema::SetProp<bool>(pScreenEntity.Get(), "CPointWorldText", "m_bEnabled", false); + schema::SetProp<bool>(pScreenEntity.Get(), "CPointWorldText", "m_bDrawBackground", false); + } +} + +void ScreenText::Create(Color color, std::string font, int size, bool drawBackground, bool isMenu) +{ + m_col = color; + m_font = font; + m_size = size; + m_drawBackground = drawBackground; + m_isMenu = isMenu; + + pScreenEntity.Set((CEntityInstance*)(g_entSystem.CreateByName("point_worldtext"))); + if (!pScreenEntity) return; + + CEntityKeyValues* pMenuKV = new CEntityKeyValues(); + + pMenuKV->SetBool("enabled", true); + pMenuKV->SetFloat("world_units_per_pixel", (0.25 / 1050) * size); + pMenuKV->SetInt("justify_horizontal", 0); + pMenuKV->SetInt("justify_vertical", 2); + pMenuKV->SetInt("reorient_mode", 0); + pMenuKV->SetInt("fullbright", 1); + pMenuKV->SetFloat("font_size", size); + pMenuKV->SetString("font_name", font.c_str()); + pMenuKV->SetColor("color", color); + + if(drawBackground) { + pMenuKV->SetBool("draw_background", true); + + if(isMenu) { + pMenuKV->SetFloat("background_border_width", 0.2); + pMenuKV->SetFloat("background_border_height", 0.15); + } else { + pMenuKV->SetFloat("background_border_width", g_Config.FetchValue<float>("core.vgui.textBackground.paddingX")); + pMenuKV->SetFloat("background_border_height", g_Config.FetchValue<float>("core.vgui.textBackground.paddingY")); + } + + pMenuKV->SetFloat("background_away_units", 0.04); + pMenuKV->SetFloat("background_world_to_uv", 0.05); + } + + g_entSystem.Spawn(pScreenEntity.Get(), pMenuKV); +} + +void ScreenText::SetupViewForPlayer(Player* player) +{ + m_player = player; + + if (!pScreenEntity) return; + if (!player) return; + if (player->IsFakeClient()) return; + + void* pViewModel = player->EnsureCustomView(1); + if (!pViewModel) return; + + g_entSystem.AcceptInput(pScreenEntity, "SetParent", pViewModel, nullptr, "!activator", 0); + schema::SetProp<CHandle<CEntityInstance>>(pScreenEntity, "CBaseEntity", "m_hOwnerEntity", ((CEntityInstance*)pViewModel)->GetRefEHandle()); +} + +void ScreenText::SetText(std::string text) +{ + m_text = text; + + if (!pScreenEntity) return; + + g_entSystem.AcceptInput(pScreenEntity.Get(), "SetMessage", nullptr, nullptr, m_text, 0); + g_entSystem.AcceptInput(pScreenEntity.Get(), "Enable", nullptr, nullptr, "", 0); +} + +void ScreenText::SetPosition(float posX, float posY) +{ + m_posX = posX; + m_posY = posY; + + if (!m_player) return; + if (m_player->IsFakeClient()) return; + if(!pScreenEntity) return; + + auto pawn = m_player->GetPlayerPawn(); + if(!pawn) return; + + if(schema::GetProp<uint32_t>(pawn, "CBaseEntity", "m_lifeState") == 2) { + auto controller = m_player->GetController(); + if(!controller) return; + if(schema::GetProp<bool>(controller, "CCSPlayerController", "m_bControllingBot")) return; + + auto observerServices = schema::GetProp<void*>(pawn, "CBasePlayerPawn", "m_pObserverServices"); + if(!observerServices) return; + + CHandle<CEntityInstance> observerTarget = schema::GetProp<CHandle<CEntityInstance>>(observerServices, "CPlayer_ObserverServices", "m_hObserverTarget"); + if(!observerTarget) return; + + auto observerController = schema::GetProp<CHandle<CEntityInstance>>(observerTarget.Get(), "CCSPlayerPawnBase", "m_hOriginalController"); + if(!observerController) return; + + CHandle<CEntityInstance> pawnHandle = schema::GetProp<CHandle<CEntityInstance>>(observerController, "CCSPlayerController", "m_hPlayerPawn"); + if(!pawnHandle) return; + pawn = (void*)(pawnHandle.Get()); + } + + if(!pawn) return; + + QAngle eyeAngles = schema::GetProp<QAngle>(pawn, "CCSPlayerPawnBase", "m_angEyeAngles"); + Vector fwd, right, up; + AngleVectors(eyeAngles, &fwd, &right, &up); + + Vector eyePos(0.0, 0.0, 0.0); + eyePos += fwd * 7; + eyePos += right * (-9.2 + (posX * 18.35)); + eyePos += up * (-4.9 + (posY * 10.13)); + + QAngle ang(0, eyeAngles.y + 270, 90 - eyeAngles.x); + + void* bodyComponent = schema::GetProp<void*>(pawn, "CBaseEntity", "m_CBodyComponent"); + if(bodyComponent) return; + + void* sceneNode = schema::GetProp<void*>(bodyComponent, "CBodyComponent", "m_pSceneNode"); + if(!sceneNode) return; + + void* camServices = schema::GetProp<void*>(pawn, "CBasePlayerPawn", "m_pCameraServices"); + if(!camServices) return; + + float oldZ = schema::GetProp<float>(camServices, "CPlayer_CameraServices", "m_flOldPlayerViewOffsetZ"); + + eyePos += schema::GetProp<Vector>(sceneNode, "CGameSceneNode", "m_vecAbsOrigin") + Vector(0, 0, oldZ); + + CALL_VIRTUAL(void, g_GameData.GetOffset("CBaseEntity_Teleport"), pScreenEntity.Get(), &eyePos, &ang, nullptr); +} + +void ScreenText::SetColor(Color color) +{ + m_col = color; + + if (!pScreenEntity) return; + schema::SetProp(pScreenEntity.Get(), "CPointWorldText", "m_Color", color); +} + +bool ScreenText::IsValidEntity() +{ + return pScreenEntity.IsValid(); +} + +void ScreenText::RegenerateText(bool recreate) +{ + if (recreate) { + if (pScreenEntity.IsValid()) g_entSystem.Despawn(pScreenEntity.Get()); + + Create(m_col, m_font, m_size, m_drawBackground, m_isMenu); + SetupViewForPlayer(m_player); + SetText(m_text); + SetPosition(m_posX, m_posY); + } + else { + SetupViewForPlayer(m_player); + SetPosition(m_posX, m_posY); + } +} + +Player* ScreenText::GetPlayer() +{ + return m_player; +} + +int ScreenText::GetEntityIndex() +{ + if (!pScreenEntity) return 0; + + return pScreenEntity->GetEntityIndex().Get(); +} + +bool ScreenText::IsRenderingTo(CHandle<CEntityInstance> renderingTo) +{ + return renderingTo == pRenderingTo; +} + +void ScreenText::SetRenderingTo(CEntityInstance* ent) +{ + pRenderingTo.Set(ent); +} \ No newline at end of file diff --git a/src/engine/vgui/screentext.h b/src/engine/vgui/screentext.h new file mode 100644 index 000000000..fb6071714 --- /dev/null +++ b/src/engine/vgui/screentext.h @@ -0,0 +1,41 @@ +#ifndef _engine_vgui_screentext_h +#define _engine_vgui_screentext_h + +#include <string> +#include <server/player/player.h> +#include "ehandle.h" + +class ScreenText +{ +private: + CHandle<CEntityInstance> pScreenEntity; + CHandle<CEntityInstance> pRenderingTo; + + Color m_col; + std::string m_font; + int m_size; + Player* m_player; + float m_posX; + float m_posY; + std::string m_text; + bool m_drawBackground; + bool m_isMenu; + +public: + ~ScreenText(); + + void Create(Color color, std::string font = "Sans Serif", int size = 35, bool drawBackground = false, bool isMenu = false); + void SetupViewForPlayer(Player* player); + void SetText(std::string text); + void SetColor(Color color); + void SetPosition(float posX = 0.0, float posY = 0.0); + void SetRenderingTo(CEntityInstance* ent); + void RegenerateText(bool recreate = true); + + bool IsValidEntity(); + Player* GetPlayer(); + int GetEntityIndex(); + bool IsRenderingTo(CHandle<CEntityInstance> renderingTo); +}; + +#endif \ No newline at end of file diff --git a/src/engine/vgui/vgui.cpp b/src/engine/vgui/vgui.cpp new file mode 100644 index 000000000..91a96ac92 --- /dev/null +++ b/src/engine/vgui/vgui.cpp @@ -0,0 +1,140 @@ +/*************************************************************************************** + * Credits for VGUI + * @electronix - Method for static rendering of a text using predicted_viewmodel + * @Nyano1337 - Methods for background and text spawning in the world + attachment + * - https://github.com/CS2Surf-CN/Timer + * @Kxnrl - FyS Server Menu Background Color +****************************************************************************************/ + +#include "vgui.h" + +#include <core/entrypoint.h> +#include <sdk/components/EntityCheckTransmit.h> +#include <server/player/manager.h> +#include <plugins/manager.h> + +SH_DECL_EXTERN7_void(ISource2GameEntities, CheckTransmit, SH_NOATTRIB, 0, CCheckTransmitInfo**, int, CBitVec<16384>&, const Entity2Networkable_t**, const uint16_t*, int, bool); + +VGUI::~VGUI() +{ + for (auto it = screenTexts.begin(); it != screenTexts.end(); ++it) + delete it->second; +} + +uint64_t VGUI::RegisterScreenText() +{ + internalScreenTextID++; + ScreenText* txt = new ScreenText(); + screenTexts.insert({ internalScreenTextID, txt }); + + return internalScreenTextID; +} + +ScreenText* VGUI::GetScreenText(uint64_t id) +{ + if (screenTexts.find(id) == screenTexts.end()) return nullptr; + + return screenTexts[id]; +} + +void VGUI::DeleteScreenText(uint64_t id) +{ + if (screenTexts.find(id) == screenTexts.end()) return; + + ScreenText* txt = screenTexts[id]; + delete txt; + + screenTexts.erase(id); +} + +void VGUI::RegenerateScreenTexts() +{ + for (auto it = screenTexts.begin(); it != screenTexts.end(); ++it) { + it->second->RegenerateText(); + } +} + +void VGUI::FilterRenderingItems(Player* player, CCheckTransmitInfo* pInfo) +{ + for (auto it = screenTexts.begin(); it != screenTexts.end(); ++it) { + if (it->second->GetPlayer() != player) { + int entIndex = it->second->GetEntityIndex(); + pInfo->m_pTransmitEntity->Clear(entIndex); + if (pInfo->m_pTransmitAlways->Get(entIndex)) + pInfo->m_pTransmitAlways->Clear(entIndex); + } + } +} + +void VGUI::CheckRenderForPlayer(int pid, Player* player, CHandle<CEntityInstance> specView) +{ + bool shouldRegenerate = false; + if (((rendersToSpectator & (1ULL << pid)) != 0) && !specView) { + rendersToSpectator &= ~(1ULL << pid); + shouldRegenerate = true; + } + else if (((rendersToSpectator & (1ULL << pid)) == 0) && specView.IsValid()) { + rendersToSpectator |= (1ULL << pid); + shouldRegenerate = true; + } + + if (shouldRegenerate) { + for (auto it = screenTexts.begin(); it != screenTexts.end(); ++it) { + if (it->second->GetPlayer() == player) { + it->second->RegenerateText(false); + it->second->SetRenderingTo(specView.Get()); + } + } + } + else { + for (auto it = screenTexts.begin(); it != screenTexts.end(); ++it) { + if (it->second->GetPlayer() == player && !it->second->IsRenderingTo(specView)) { + it->second->RegenerateText(false); + it->second->SetRenderingTo(specView.Get()); + } + } + } +} + +void VGUI::Unregister(Player* player) +{ + std::vector<uint64_t> eraseIDs; + for (auto it = screenTexts.begin(); it != screenTexts.end(); ++it) { + if (it->second->GetPlayer() == player) { + delete it->second; + eraseIDs.push_back(it->first); + } + } + + for (auto id : eraseIDs) + screenTexts.erase(id); +} + +void VGUI::Initialize() +{ + SH_ADD_HOOK_MEMFUNC(ISource2GameEntities, CheckTransmit, g_pSource2GameEntities, this, &VGUI::CheckTransmit, true); +} + +void VGUI::Shutdown() +{ + SH_REMOVE_HOOK_MEMFUNC(ISource2GameEntities, CheckTransmit, g_pSource2GameEntities, this, &VGUI::CheckTransmit, true); +} + +ClassData* checktransmitEvent = new ClassData({ {"plugin_name", "core"} }, "Event", nullptr); + +void VGUI::CheckTransmit(CCheckTransmitInfo** ppInfoList, int infoCount, CBitVec<16384>& unionTransmitEdicts, const Entity2Networkable_t** pNetworkables, const uint16_t* pEntityIndicies, int nEntities, bool bEnablePVSBits) +{ + if (!g_pGameEntitySystem) return; + + for (int i = 0; i < infoCount; i++) + { + auto& pInfo = (EntityCheckTransmit*&)ppInfoList[i]; + int playerid = pInfo->m_nClientEntityIndex.Get(); + Player* player = g_playerManager.GetPlayer(playerid); + if (!player) continue; + + ClassData tInfo({ { "transmit_ptr", pInfo } }, "CCheckTransmitInfo", nullptr); + g_pluginManager.ExecuteEvent("core", "OnPlayerCheckTransmit", { playerid, &tInfo }, checktransmitEvent); + FilterRenderingItems(player, (CCheckTransmitInfo*)pInfo); + } +} \ No newline at end of file diff --git a/src/engine/vgui/vgui.h b/src/engine/vgui/vgui.h new file mode 100644 index 000000000..0ce0e831c --- /dev/null +++ b/src/engine/vgui/vgui.h @@ -0,0 +1,38 @@ +#ifndef _engine_vgui_vgui_h +#define _engine_vgui_vgui_h + +#include <map> +#include <server/player/player.h> +#include "ehandle.h" +#include "screentext.h" + +class VGUI +{ +private: + uint64_t internalScreenTextID = 0; + std::map<uint64_t, ScreenText*> screenTexts; + uint64_t rendersToSpectator = 0; + +public: + ~VGUI(); + + uint64_t RegisterScreenText(); + ScreenText* GetScreenText(uint64_t id); + void DeleteScreenText(uint64_t id); + + void RegenerateScreenTexts(); + + void FilterRenderingItems(Player* player, CCheckTransmitInfo* pInfo); + + void CheckRenderForPlayer(int pid, Player* player, CHandle<CEntityInstance> specView); + void Unregister(Player* player); + + void Initialize(); + void Shutdown(); + + void CheckTransmit(CCheckTransmitInfo** ppInfoList, int infoCount, CBitVec<16384>& unionTransmitEdicts, const Entity2Networkable_t** pNetworkables, const uint16_t* pEntityIndicies, int nEntities, bool bEnablePVSBits); +}; + +extern VGUI g_VGUI; + +#endif \ No newline at end of file diff --git a/src/engine/voicemanager/manager.cpp b/src/engine/voicemanager/manager.cpp new file mode 100644 index 000000000..882ec4171 --- /dev/null +++ b/src/engine/voicemanager/manager.cpp @@ -0,0 +1,114 @@ +#include "manager.h" + +#include <memory/hooks/functions.h> +#include <server/player/manager.h> +#include <sdk/schema.h> + +dyno::ReturnAction Hook_CSoundOpGameSystem_SetSoundEventParam(dyno::CallbackType cbType, dyno::IHook& hook) +{ + uint32_t hash = hook.getArgument<uint32_t>(3); + if (hash == 0x2D8464AF) { + hook.setArgument<uint32_t>(3, 0xBD6054E9); + } + return dyno::ReturnAction::Handled; +} + +FunctionHook CSoundOpGameSystem_SetSoundEventParam("CSoundOpGameSystem_SetSoundEventParam", dyno::CallbackType::Pre, Hook_CSoundOpGameSystem_SetSoundEventParam, "pppupuu", 'p'); + +enum ListenOverride +{ + Listen_Default = 0, + Listen_Mute, + Listen_Hear +}; + +enum VoiceFlagValue +{ + Speak_Normal = 0, + Speak_Muted = 1 << 0, + Speak_All = 1 << 1, + Speak_ListenAll = 1 << 2, + Speak_Team = 1 << 3, + Speak_ListenTeam = 1 << 4, +}; + +SH_DECL_EXTERN3(IVEngineServer2, SetClientListening, SH_NOATTRIB, 0, bool, CPlayerSlot, CPlayerSlot, bool); +SH_DECL_EXTERN2_void(IServerGameClients, ClientCommand, SH_NOATTRIB, 0, CPlayerSlot, const CCommand&); + +void VoiceManager::OnAllInitialized() +{ + SH_ADD_HOOK(IVEngineServer2, SetClientListening, engine, SH_MEMBER(this, &VoiceManager::SetClientListening), false); + SH_ADD_HOOK_MEMFUNC(IServerGameClients, ClientCommand, gameclients, this, &VoiceManager::OnClientCommand, false); +} + +void VoiceManager::OnShutdown() +{ + SH_REMOVE_HOOK(IVEngineServer2, SetClientListening, engine, SH_MEMBER(this, &VoiceManager::SetClientListening), false); + SH_REMOVE_HOOK_MEMFUNC(IServerGameClients, ClientCommand, gameclients, this, &VoiceManager::OnClientCommand, false); +} + +bool VoiceManager::SetClientListening(CPlayerSlot iReceiver, CPlayerSlot iSender, bool bListen) +{ + Player* receiver = g_playerManager.GetPlayer(iReceiver); + if (!receiver) + RETURN_META_VALUE(MRES_IGNORED, bListen); + + Player* sender = g_playerManager.GetPlayer(iSender); + if (!sender) + RETURN_META_VALUE(MRES_IGNORED, bListen); + + auto listenOverride = receiver->GetListen(iSender); + auto senderFlags = sender->GetVoiceFlags(); + auto receiverFlags = receiver->GetVoiceFlags(); + + if (receiver->m_selfMutes->Get(iSender.Get())) + { + RETURN_META_VALUE_NEWPARAMS(MRES_IGNORED, bListen, &IVEngineServer2::SetClientListening, (iReceiver, iSender, false)); + } + + if (senderFlags & VoiceFlagValue::Speak_Muted) + { + RETURN_META_VALUE_NEWPARAMS(MRES_IGNORED, bListen, &IVEngineServer2::SetClientListening, (iReceiver, iSender, false)); + } + + if (listenOverride == ListenOverride::Listen_Mute) + { + RETURN_META_VALUE_NEWPARAMS(MRES_IGNORED, bListen, &IVEngineServer2::SetClientListening, (iReceiver, iSender, false)); + } + else if (listenOverride == ListenOverride::Listen_Hear) + { + RETURN_META_VALUE_NEWPARAMS(MRES_IGNORED, bListen, &IVEngineServer2::SetClientListening, (iReceiver, iSender, true)); + } + + if ((senderFlags & VoiceFlagValue::Speak_All) || (receiverFlags & VoiceFlagValue::Speak_ListenAll)) + { + RETURN_META_VALUE_NEWPARAMS(MRES_IGNORED, bListen, &IVEngineServer2::SetClientListening, (iReceiver, iSender, true)); + } + + if ((senderFlags & VoiceFlagValue::Speak_Team) || (receiverFlags & VoiceFlagValue::Speak_ListenTeam)) + { + auto senderController = sender->GetController(); + auto receiverController = receiver->GetController(); + if (!senderController || !receiverController) + RETURN_META_VALUE(MRES_IGNORED, bListen); + + RETURN_META_VALUE_NEWPARAMS(MRES_IGNORED, bListen, &IVEngineServer2::SetClientListening, + (iReceiver, iSender, schema::GetProp<int>(senderController, "CBaseEntity", "m_iTeamNum") == schema::GetProp<int>(receiverController, "CBaseEntity", "m_iTeamNum"))); + } + + RETURN_META_VALUE(MRES_IGNORED, bListen); +} + +void VoiceManager::OnClientCommand(CPlayerSlot slot, const CCommand& args) +{ + Player* player = g_playerManager.GetPlayer(slot); + if (!player) + return; + + if (args.ArgC() > 1 && std::string(args.Arg(0)) == "vban") + { + uint32_t mask = 0; + sscanf(args.Arg(1), "%x", &mask); + player->m_selfMutes->SetDWord(0, mask); + } +} \ No newline at end of file diff --git a/src/engine/voicemanager/manager.h b/src/engine/voicemanager/manager.h new file mode 100644 index 000000000..b05f78ac1 --- /dev/null +++ b/src/engine/voicemanager/manager.h @@ -0,0 +1,27 @@ +/****************************************************************** + * + * This feature is inspired from CounterStrikeSharp. + * You can find the source code used by us in the following files: + * + * https://github.com/roflmuffin/CounterStrikeSharp/blob/a87bd25b48ff1407a71cfdce3222f5f55c8a2e0b/src/core/managers/voice_manager.h#L26 + * https://github.com/roflmuffin/CounterStrikeSharp/blob/a87bd25b48ff1407a71cfdce3222f5f55c8a2e0b/src/core/managers/voice_manager.cpp#L30 + * + ******************************************************************/ + +#ifndef _voicemanager_h +#define _voicemanager_h + +#include <core/entrypoint.h> + +class VoiceManager +{ +public: + void OnAllInitialized(); + void OnShutdown(); + bool SetClientListening(CPlayerSlot iReceiver, CPlayerSlot iSender, bool bListen); + void OnClientCommand(CPlayerSlot slot, const CCommand& args); +}; + +extern VoiceManager g_voiceManager; + +#endif \ No newline at end of file diff --git a/src/entities/listener.cpp b/src/entities/listener.cpp new file mode 100644 index 000000000..135701fb0 --- /dev/null +++ b/src/entities/listener.cpp @@ -0,0 +1,50 @@ +#include "system.h" + +#include <utils/platform/platform.h> +#include <memory/gamedata/gamedata.h> +#include <sdk/schema.h> +#include <plugins/manager.h> +#include <public/entity2/entitykeyvalues.h> + +CEntityListener g_entityListener; +std::map<void*, void*> entKeyVal; + +void CEntityListener::OnEntitySpawned(CEntityInstance* pEntity) +{ + ClassData* entity = new ClassData({ { "should_mark_freeable", true }, { "class_name", std::string("CEntityInstance") }, { "class_ptr", (void*)pEntity } }, "SDKClass", nullptr); + g_pluginManager.ExecuteEvent("core", "OnEntitySpawned", { entity }, {}); +} + +void CEntityListener::OnEntityParentChanged(CEntityInstance* pEntity, CEntityInstance* pNewParent) +{ + ClassData* entity = new ClassData({ { "should_mark_freeable", true }, { "class_name", std::string("CEntityInstance") }, { "class_ptr", (void*)pEntity } }, "SDKClass", nullptr); + ClassData* pentity = new ClassData({ { "should_mark_freeable", true }, { "class_name", std::string("CEntityInstance") }, { "class_ptr", (void*)pNewParent } }, "SDKClass", nullptr); + g_pluginManager.ExecuteEvent("core", "OnEntityParentChanged", { entity, pentity }, {}); +} + +void EntityAllowHammerID(CEntityInstance* pEntity) +{ + Plat_WriteMemory((*(void***)pEntity)[g_GameData.GetOffset("GetHammerUniqueID")], (uint8_t*)"\xB0\x01", 2); +} + +void CEntityListener::OnEntityCreated(CEntityInstance* pEntity) +{ + ExecuteOnce(EntityAllowHammerID(pEntity)); + + ClassData* entity = new ClassData({ { "should_mark_freeable", true }, { "class_name", std::string("CEntityInstance") }, { "class_ptr", (void*)pEntity } }, "SDKClass", nullptr); + g_pluginManager.ExecuteEvent("core", "OnEntityCreated", { entity }, {}); + + if (std::string(pEntity->GetClassname()) == "cs_gamerules") + gameRules = schema::GetProp<void*>(pEntity, "CCSGameRulesProxy", "m_pGameRules"); +} + +void CEntityListener::OnEntityDeleted(CEntityInstance* pEntity) +{ + ClassData* entity = new ClassData({ { "should_mark_freeable", true }, { "class_name", std::string("CEntityInstance") }, { "class_ptr", (void*)pEntity } }, "SDKClass", nullptr); + g_pluginManager.ExecuteEvent("core", "OnEntityDeleted", { entity }, {}); + + if (entKeyVal.find(pEntity) != entKeyVal.end()) { + delete (CEntityKeyValues*)entKeyVal[pEntity]; + entKeyVal.erase(pEntity); + } +} \ No newline at end of file diff --git a/src/entities/system.cpp b/src/entities/system.cpp new file mode 100644 index 000000000..1831db286 --- /dev/null +++ b/src/entities/system.cpp @@ -0,0 +1,71 @@ +#include "system.h" +#include <memory/gamedata/gamedata.h> +#include <public/entity2/entitykeyvalues.h> +#include <swiftly-ext/core.h> + +typedef void (*CBaseEntity_DispatchSpawn)(void*, void*); +typedef void (*UTIL_Remove)(void*); +typedef void* (*UTIL_CreateEntityByName)(const char*, int); +typedef void (*CEntityInstance_AcceptInput)(void*, const char*, void*, void*, variant_t*, int); + +extern std::map<void*, void*> entKeyVal; +void* gameRules = nullptr; + +CGameEntitySystem* GameEntitySystem() +{ + return g_pGameEntitySystem; +} + +EXT_API void* swiftly_GameEntitySystem() +{ + return (void*)GameEntitySystem(); +} + +void EntitySystem::Initialize() +{ + SH_ADD_HOOK_MEMFUNC(INetworkServerService, StartupServer, g_pNetworkServerService, this, &EntitySystem::StartupServer, true); +} + +void EntitySystem::Shutdown() +{ + SH_REMOVE_HOOK_MEMFUNC(INetworkServerService, StartupServer, g_pNetworkServerService, this, &EntitySystem::StartupServer, true); + + g_pGameEntitySystem->RemoveListenerEntity(&g_entityListener); +} + +bool bDone = false; +void EntitySystem::StartupServer(const GameSessionConfiguration_t& config, ISource2WorldSession*, const char*) +{ + if (bDone) return; + + g_pGameEntitySystem = ((CGameResourceService*)g_pGameResourceService)->GetGameEntitySystem(); + g_pEntitySystem = g_pGameEntitySystem; + + bDone = true; + + g_pGameEntitySystem->AddListenerEntity(&g_entityListener); +} + +void EntitySystem::Spawn(void* entity, void* keyvalues) +{ + g_GameData.FetchSignature<CBaseEntity_DispatchSpawn>("CBaseEntity_DispatchSpawn")(entity, keyvalues); + + if (entKeyVal.find(entity) != entKeyVal.end()) delete (CEntityKeyValues*)entKeyVal[entity]; + entKeyVal[entity] = keyvalues; +} + +void EntitySystem::Despawn(void* entity) +{ + g_GameData.FetchSignature<UTIL_Remove>("UTIL_Remove")(entity); +} + +void* EntitySystem::CreateByName(const char* name) +{ + return g_GameData.FetchSignature<UTIL_CreateEntityByName>("UTIL_CreateEntityByName")(name, -1); +} + +void EntitySystem::AcceptInput(void* entity, std::string input, void* activator, void* caller, std::string value, int outputID) +{ + variant_t variantValue = variant_t(value.c_str()); + g_GameData.FetchSignature<CEntityInstance_AcceptInput>("CEntityInstance_AcceptInput")(entity, input.c_str(), activator, caller, &variantValue, outputID); +} \ No newline at end of file diff --git a/src/entities/system.h b/src/entities/system.h new file mode 100644 index 000000000..0f80074d0 --- /dev/null +++ b/src/entities/system.h @@ -0,0 +1,47 @@ +#ifndef _entity_system_h +#define _entity_system_h + +#include <core/entrypoint.h> +#include <memory/gamedata/gamedata.h> + +#include <public/entity2/entitysystem.h> + +SH_DECL_EXTERN3_void(INetworkServerService, StartupServer, SH_NOATTRIB, 0, const GameSessionConfiguration_t&, ISource2WorldSession*, const char*); + +class CGameResourceService +{ +public: + CGameEntitySystem* GetGameEntitySystem() + { + return *reinterpret_cast<CGameEntitySystem**>((uintptr_t)(this) + g_GameData.GetOffset("GameEntitySystem")); + } +}; + +class EntitySystem +{ +public: + void Initialize(); + void Shutdown(); + + void StartupServer(const GameSessionConfiguration_t& config, ISource2WorldSession*, const char*); + + void Spawn(void* entity, void* keyvalues); + void Despawn(void* entity); + void* CreateByName(const char* name); + void AcceptInput(void* entity, std::string input, void* activator, void* caller, std::string value, int outputID); +}; + +class CEntityListener : public IEntityListener +{ + void OnEntityCreated(CEntityInstance* pEntity) override; + void OnEntitySpawned(CEntityInstance* pEntity) override; + void OnEntityDeleted(CEntityInstance* pEntity) override; + void OnEntityParentChanged(CEntityInstance* pEntity, CEntityInstance* pNewParent) override; +}; + +extern CEntityListener g_entityListener; +extern EntitySystem g_entSystem; + +extern void* gameRules; + +#endif \ No newline at end of file diff --git a/src/extensions/extension.cpp b/src/extensions/extension.cpp new file mode 100644 index 000000000..63c823d3f --- /dev/null +++ b/src/extensions/extension.cpp @@ -0,0 +1,119 @@ +#include "extension.h" + +#include <core/entrypoint.h> +#include <filesystem/files/files.h> +#include <plugins/manager.h> +#include <swiftly-ext/pluginkind.h> + +typedef void* (*GetExtensionCls)(); + +Extension::Extension(std::string name) +{ + m_name = name; +} + +Extension::~Extension() +{ +} + +std::string Extension::GetName() +{ + return m_name; +} + +bool Extension::LoadExtension(bool late) +{ +#ifdef _WIN32 + m_hModule = dlmount(GeneratePath(std::string("addons/swiftly/extensions/win64/") + m_name + ".dll").c_str()); +#else + m_hModule = dlopen(GeneratePath(std::string("addons/swiftly/extensions/linuxsteamrt64/") + m_name + ".so").c_str(), RTLD_NOW); + + if (!m_hModule) { + std::string err = dlerror(); + PRINTF("Failed to load extension: %s\n", err.c_str()); + m_errored = true; + m_error = err; + return false; +} +#endif + + void* fnGetClass = reinterpret_cast<void*>(dlsym(m_hModule, "GetExtensionClass")); + if (!fnGetClass) { + PRINT("Failed to load extension: GetExtensionClass is not present.\n"); + m_errored = true; + m_error = "GetExtensionClass is not present"; + return false; + } + + m_api = (SwiftlyExt*)(reinterpret_cast<GetExtensionCls>(fnGetClass)()); + + std::string err; + bool res = m_api->Load(err, g_SHPtr, g_SMAPI, late); + loaded = res; + if (!res) { + PRINT("An error has occured while trying to load the extension.\n"); + PRINTF("Extension: %s.\n", m_name.c_str()); + PRINTF("Error: %s\n", err.c_str()); + dlclose(m_hModule); + m_hModule = nullptr; + m_api = nullptr; + m_errored = true; + m_error = err; + return false; + } + return true; +} + +bool Extension::UnloadExtension() +{ + for (auto plugin : g_pluginManager.GetPluginsList()) + if (plugin->GetPluginState() == PluginState_t::Started) { + std::string error = ""; + if (!this->GetAPI()->OnPluginUnload(plugin->GetName(), plugin->GetContext(), (PluginKind_t)plugin->GetKind(), error)) { + PRINTF("An error has occured while trying to unload the extension from plugin '%s'.\n", plugin->GetName().c_str()); + PRINTF("Extension: %s.\n", m_name.c_str()); + PRINTF("Error: %s.\n", error.c_str()); + m_errored = true; + m_error = error; + return false; + } + } + + std::string err; + bool res = m_api->Unload(err); + if (!res) { + PRINT("An error has occured while trying to unload the extension.\n"); + PRINTF("Extension: %s.\n", m_name.c_str()); + PRINTF("Error: %s\n", err.c_str()); + m_errored = true; + m_error = err; + loaded = true; + return false; + } + + dlclose(m_hModule); + m_hModule = nullptr; + m_api = nullptr; + loaded = false; + return true; +} + +SwiftlyExt* Extension::GetAPI() +{ + return m_api; +} + +bool Extension::IsLoaded() +{ + return loaded; +} + +std::string Extension::GetError() +{ + return m_error; +} + +bool Extension::HasError() +{ + return m_errored; +} \ No newline at end of file diff --git a/src/extensions/extension.h b/src/extensions/extension.h new file mode 100644 index 000000000..04b133e03 --- /dev/null +++ b/src/extensions/extension.h @@ -0,0 +1,36 @@ +#ifndef _core_extensions_ext_h +#define _core_extensions_ext_h + +#include <string> +#include <swiftly-ext/extension.h> +#include <metamod_oslink.h> + +#ifndef _WIN32 +#include <dlfcn.h> +#endif + +class Extension +{ +private: + std::string m_name; + std::string m_error; + bool m_errored = false; + HINSTANCE m_hModule; + SwiftlyExt* m_api; + bool loaded = false; +public: + Extension(std::string name); + ~Extension(); + + std::string GetName(); + SwiftlyExt* GetAPI(); + bool IsLoaded(); + + std::string GetError(); + bool HasError(); + + bool LoadExtension(bool late); + bool UnloadExtension(); +}; + +#endif \ No newline at end of file diff --git a/src/extensions/manager.cpp b/src/extensions/manager.cpp new file mode 100644 index 000000000..7f87bc293 --- /dev/null +++ b/src/extensions/manager.cpp @@ -0,0 +1,93 @@ +#include "manager.h" +#include <filesystem/files/files.h> + +extern bool alreadyStarted; + +void ExtensionManager::LoadExtensions() +{ + std::string baseDir = std::string("addons/swiftly/extensions/") + WIN_LINUX("win64", "linuxsteamrt64"); + if (!Files::ExistsPath(baseDir)) + Files::CreateDirectory(baseDir); + + std::vector<std::string> extensions = Files::FetchFileNames(baseDir); + for (std::string extension : extensions) + { + if (extension.find("disabled") != std::string::npos) + continue; + + extension = replace(extension, baseDir, ""); + std::string extension_name = replace(replace(extension, WIN_LINUX("\\", "/"), ""), WIN_LINUX(".dll", ".so"), ""); + + LoadExtension(extension_name); + } + + all_loaded = true; + for (Extension* extension : exts) + if (extension->IsLoaded()) + extension->GetAPI()->AllExtensionsLoaded(); +} + +void ExtensionManager::UnloadExtensions() +{ + std::vector<std::string> extensionNames; + for (Extension* extension : exts) + extensionNames.push_back(extension->GetName()); + + for (std::string extension_name : extensionNames) + UnloadExtension(extension_name); + + all_loaded = false; +} + +bool ExtensionManager::ExtensionExists(std::string ext_name) +{ + return (extsMap.find(ext_name) != extsMap.end()); +} + +void ExtensionManager::LoadExtension(std::string ext_name) +{ + if (ExtensionExists(ext_name)) return; + + Extension* ext = new Extension(ext_name); + if (!ext->LoadExtension(all_loaded)) { + delete ext; + return; + } + + exts.push_back(ext); + extsMap[ext_name] = ext; + + if (all_loaded) + ext->GetAPI()->AllExtensionsLoaded(); + if (alreadyStarted) + ext->GetAPI()->AllPluginsLoaded(); +} + +void ExtensionManager::UnloadExtension(std::string ext_name) +{ + if (!ExtensionExists(ext_name)) return; + + Extension* ext = extsMap[ext_name]; + if (!ext) return; + + if (!ext->UnloadExtension()) return; + + auto it = std::find(exts.begin(), exts.end(), ext); + if (it != exts.end()) + exts.erase(it); + + delete ext; + extsMap.erase(ext_name); +} + +Extension* ExtensionManager::FetchExtension(std::string ext_name) +{ + if (!ExtensionExists(ext_name)) return nullptr; + + return extsMap[ext_name]; +} + +std::vector<Extension*> ExtensionManager::GetExtensionsList() +{ + return this->exts; +} \ No newline at end of file diff --git a/src/extensions/manager.h b/src/extensions/manager.h new file mode 100644 index 000000000..9dfa10d5a --- /dev/null +++ b/src/extensions/manager.h @@ -0,0 +1,30 @@ +#ifndef _core_extensions_manager_h +#define _core_extensions_manager_h + +#include "extension.h" +#include <vector> + +class ExtensionManager +{ +private: + std::vector<Extension*> exts; + std::map<std::string, Extension*> extsMap; + + bool all_loaded = false; +public: + void LoadExtensions(); + void UnloadExtensions(); + + bool ExtensionExists(std::string ext_name); + + void LoadExtension(std::string ext_name); + void UnloadExtension(std::string ext_name); + + Extension* FetchExtension(std::string ext_name); + + std::vector<Extension*> GetExtensionsList(); +}; + +extern ExtensionManager extManager; + +#endif \ No newline at end of file diff --git a/src/filesystem/files/files.cpp b/src/filesystem/files/files.cpp new file mode 100644 index 000000000..b78592c48 --- /dev/null +++ b/src/filesystem/files/files.cpp @@ -0,0 +1,217 @@ +#include "files.h" +#include <public/tier0/platform.h> +#include <ctime> + +std::string GeneratePath(std::string path) +{ + return string_format("%s%scsgo%s%s", Plat_GetGameDirectory(), WIN_LINUX("\\", "/"), WIN_LINUX("\\", "/"), path.c_str()); +} + +std::string GetRelativePath(std::string path) +{ + return replace(path, string_format("%s%scsgo%s", Plat_GetGameDirectory(), WIN_LINUX("\\", "/"), WIN_LINUX("\\", "/")), ""); +} + +std::string Files::Read(std::string path) +{ + path = GeneratePath(path); + if (!std::filesystem::exists(path)) + return ""; + + auto fp = std::fopen(path.c_str(), "rb"); + std::string s; + std::fseek(fp, 0u, SEEK_END); + auto size = std::ftell(fp); + std::fseek(fp, 0u, SEEK_SET); + s.resize(size); + std::fread(&s[0], 1u, size, fp); + std::fclose(fp); + return s; +} + +std::string Files::getBase(std::string filePath) +{ + std::vector<std::string> v = explode(filePath, "/"); + v.pop_back(); + return implode(v, "/"); +} + +void Files::Delete(std::string path) +{ + path = GeneratePath(path); + if (!std::filesystem::exists(path)) + return; + + std::filesystem::remove(path); +} + +void Files::Append(std::string path, std::string content, bool hasdate) +{ + if (!Files::ExistsPath(Files::getBase(path)) && Files::getBase(path) != "") std::filesystem::create_directories(Files::getBase(GeneratePath(path))); + + time_t now = time(0); + tm* ltm = localtime(&now); + + char date[32]; + +#if GCC_COMPILER +#pragma GCC diagnostic push +#pragma GCC diagnostic ignored "-Wformat-truncation" +#endif + if (hasdate) + snprintf(date, sizeof(date), "[%02d/%02d/%04d - %02d:%02d:%02d] ", ltm->tm_mday, ltm->tm_mon + 1, ltm->tm_year + 1900, ltm->tm_hour, ltm->tm_min, ltm->tm_sec); +#if GCC_COMPILER +#pragma GCC diagnostic pop +#endif + std::ofstream File(GeneratePath(path), std::ios_base::app); + File << (hasdate ? date : "") << content << std::endl; + File.close(); +} + +void Files::Write(std::string path, std::string content, bool hasdate) +{ + if (!Files::ExistsPath(Files::getBase(path)) && Files::getBase(path) != "") std::filesystem::create_directories(Files::getBase(GeneratePath(path))); + time_t now = time(0); + tm* ltm = localtime(&now); + + char date[32]; + +#if GCC_COMPILER +#pragma GCC diagnostic push +#pragma GCC diagnostic ignored "-Wformat-truncation" +#endif + if (hasdate) + snprintf(date, sizeof(date), "[%02d/%02d/%04d - %02d:%02d:%02d] ", ltm->tm_mday, ltm->tm_mon + 1, ltm->tm_year + 1900, ltm->tm_hour, ltm->tm_min, ltm->tm_sec); +#if GCC_COMPILER +#pragma GCC diagnostic pop +#endif + + std::ofstream File(GeneratePath(path), std::ios_base::trunc); + File << (hasdate ? date : "") << content << std::endl; + File.close(); +} + +bool Files::ExistsPath(std::string path) +{ + path = GeneratePath(path); + return std::filesystem::exists(path); +} + +bool Files::IsDirectory(std::string path) +{ + path = GeneratePath(path); + return std::filesystem::is_directory(path); +} + +bool Files::CreateDirectory(std::string path) +{ + path = GeneratePath(path); + return std::filesystem::create_directory(path); +} + +std::vector<std::string> Files::FetchFileNames(std::string path) +{ + std::vector<std::string> files; + if (!ExistsPath(path)) + return files; + if (!IsDirectory(path)) + return files; + + path = GeneratePath(path); + for (const auto& entry : std::filesystem::directory_iterator(path)) + { + if (entry.is_directory()) + { + std::vector<std::string> fls = Files::FetchFileNames(GetRelativePath(entry.path().string())); + for (auto fl : fls) + files.push_back(fl); + } + else + files.push_back(GetRelativePath(entry.path().string())); + } + return files; +} + +std::vector<std::string> Files::FetchDirectories(std::string path) +{ + std::vector<std::string> directories; + if (!ExistsPath(path)) + return directories; + if (!IsDirectory(path)) + return directories; + + path = GeneratePath(path); + for (const auto& entry : std::filesystem::directory_iterator(path)) + if (entry.is_directory()) + directories.push_back(GetRelativePath(entry.path().string())); + + return directories; +} + +bool Files::Compress(std::string filePath, std::string outputPath) +{ + filePath = GeneratePath(filePath); + outputPath = GeneratePath(outputPath); + + std::ifstream inFile(filePath, std::ios_base::binary); + std::ofstream outFile(outputPath, std::ios_base::binary); + + if (!inFile || !outFile) + { + PRINT("Couldn't create read and write streams.\n"); + return false; + } + + std::vector<char> inBuffer((std::istreambuf_iterator<char>(inFile)), std::istreambuf_iterator<char>()); + inFile.close(); + + unsigned int outSize = inBuffer.size() * 1.01 + 600; + std::vector<char> outBuffer(outSize); + + int result = BZ2_bzBuffToBuffCompress(outBuffer.data(), &outSize, inBuffer.data(), inBuffer.size(), 9, 0, 30); + + if (result != BZ_OK) + { + PRINTF("Compression failed. Error code: %d\n", result); + return false; + } + + outFile.write(outBuffer.data(), outSize); + outFile.close(); + + return true; +} + +bool Files::Decompress(std::string filePath, std::string outputPath) +{ + filePath = GeneratePath(filePath); + outputPath = GeneratePath(outputPath); + + std::ifstream inFile(filePath, std::ios_base::binary); + std::ofstream outFile(outputPath, std::ios_base::binary); + + if (!inFile || !outFile) + { + PRINT("Couldn't create read and write streams.\n"); + return false; + } + + std::vector<char> inBuffer((std::istreambuf_iterator<char>(inFile)), std::istreambuf_iterator<char>()); + inFile.close(); + + unsigned int outSize = inBuffer.size() * 10; + std::vector<char> outBuffer(outSize); + + int result = BZ2_bzBuffToBuffDecompress(outBuffer.data(), &outSize, inBuffer.data(), inBuffer.size(), 0, 0); + + if (result != BZ_OK) + { + PRINTF("Decompression failed. Error code: %d\n", result); + return false; + } + + outFile.write(outBuffer.data(), outSize); + outFile.close(); + + return true; +} diff --git a/src/filesystem/files/files.h b/src/filesystem/files/files.h new file mode 100644 index 000000000..e0093f643 --- /dev/null +++ b/src/filesystem/files/files.h @@ -0,0 +1,31 @@ +#ifndef _files_h +#define _files_h + +#include <utils/common.h> +#include <utils/utils.h> + +#include <filesystem> +#include <fstream> +#include <sstream> +#include <vector> +#include <bzlib.h> + +std::string GeneratePath(std::string path); + +namespace Files +{ + std::string Read(std::string path); + void Append(std::string path, std::string content, bool hasdate = true); + void Write(std::string path, std::string content, bool hasdate = true); + void Delete(std::string path); + std::string getBase(std::string filePath); + bool ExistsPath(std::string path); + bool IsDirectory(std::string path); + std::vector<std::string> FetchFileNames(std::string path); + std::vector<std::string> FetchDirectories(std::string path); + bool CreateDirectory(std::string path); + bool Compress(std::string filePath, std::string outputPath); + bool Decompress(std::string filePath, std::string outputPath); +}; + +#endif \ No newline at end of file diff --git a/src/filesystem/logs/log.cpp b/src/filesystem/logs/log.cpp new file mode 100644 index 000000000..6b420553a --- /dev/null +++ b/src/filesystem/logs/log.cpp @@ -0,0 +1,39 @@ +#include "log.h" +#include <filesystem/files/files.h> +#include <server/configuration/configuration.h> +#include <core/entrypoint.h> +#include <time.h> + +std::string Log::GenerateLogName() +{ + std::string loggingMode = g_Config.FetchValue<std::string>("core.logging.mode"); + if (loggingMode == "daily") + { + time_t now = time(0); + tm* ltm = localtime(&now); + return string_format("%s_%02d-%02d-%d.log", this->m_path.c_str(), ltm->tm_mday, ltm->tm_mon + 1, ltm->tm_year + 1900).c_str(); + } + else if (loggingMode == "map") + return string_format("%s_%s.log", this->m_path.c_str(), engine->GetServerGlobals()->mapname.ToCStr()); + else + return string_format("%s.log", this->m_path.c_str()); +} + +void Log::WriteLog(LogType_t logType, std::string str) +{ + auto GetLogPrefix = [logType]() + { + if (logType == LogType_t::Debug) + return "Debug"; + else if (logType == LogType_t::Error) + return "Error"; + else if (logType == LogType_t::Warning) + return "Warning"; + else if (logType == LogType_t::Common) + return "Common"; + else + return "Unknown"; + }; + + Files::Append(GenerateLogName(), string_format("[%s] %s", GetLogPrefix(), str.c_str())); +} diff --git a/src/filesystem/logs/log.h b/src/filesystem/logs/log.h new file mode 100644 index 000000000..0e1d3700b --- /dev/null +++ b/src/filesystem/logs/log.h @@ -0,0 +1,24 @@ +#ifndef _log_h +#define _log_h + +#include <string> + +#include <types/LogType.h> + +class Log +{ +private: + std::string m_path; + +public: + Log() = default; + Log(std::string path) + { + this->m_path = "addons/swiftly/logs/" + path; + } + + void WriteLog(LogType_t logType, std::string str); + std::string GenerateLogName(); +}; + +#endif \ No newline at end of file diff --git a/src/filesystem/logs/logger.cpp b/src/filesystem/logs/logger.cpp new file mode 100644 index 000000000..d3954b5ed --- /dev/null +++ b/src/filesystem/logs/logger.cpp @@ -0,0 +1,36 @@ +#include "logger.h" +#include <filesystem/files/files.h> + +Log* Logger::FetchLogger(std::string key) +{ + if (m_Loggers.find(key) == m_Loggers.end()) + return nullptr; + + return m_Loggers[key]; +} + +void Logger::AddLogger(std::string key, bool plugin) +{ + if (g_Config.FetchValue<bool>("core.logging.enabled") == false) + return; + if (FetchLogger(key)) + return; + + if (!Files::ExistsPath("addons/swiftly/logs")) + Files::CreateDirectory("addons/swiftly/logs"); + if (!Files::ExistsPath("addons/swiftly/logs/plugins")) + Files::CreateDirectory("addons/swiftly/logs/plugins"); + + m_Loggers.insert({ key, new Log((plugin ? "plugins/" : "") + key) }); +} + +void Logger::RemoveLogger(std::string key) +{ + if (g_Config.FetchValue<bool>("core.logging.enabled") == false) + return; + if (!FetchLogger(key)) + return; + + delete m_Loggers[key]; + m_Loggers.erase(key); +} \ No newline at end of file diff --git a/src/filesystem/logs/logger.h b/src/filesystem/logs/logger.h new file mode 100644 index 000000000..906a2e526 --- /dev/null +++ b/src/filesystem/logs/logger.h @@ -0,0 +1,23 @@ +#ifndef _logger_h +#define _logger_h + +#include <map> +#include <string> +#include <server/configuration/configuration.h> + +#include "log.h" + +class Logger +{ +private: + std::map<std::string, Log*> m_Loggers; + +public: + Log* FetchLogger(std::string key); + void AddLogger(std::string key, bool plugin); + void RemoveLogger(std::string key); +}; + +extern Logger g_Logger; + +#endif \ No newline at end of file diff --git a/src/memory/encoders/json.cpp b/src/memory/encoders/json.cpp new file mode 100644 index 000000000..1a73aa2aa --- /dev/null +++ b/src/memory/encoders/json.cpp @@ -0,0 +1,48 @@ +#include "json.h" +#include <utils/common.h> +#include <utils/utils.h> + +std::map<rapidjson::ParseErrorCode, const char*> errorCodes = { + { rapidjson::ParseErrorCode::kParseErrorNone , "No error."}, + { rapidjson::ParseErrorCode::kParseErrorDocumentEmpty , "The document is empty."}, + { rapidjson::ParseErrorCode::kParseErrorDocumentRootNotSingular , "The document root must not be followed by other values."}, + { rapidjson::ParseErrorCode::kParseErrorValueInvalid , "Invalid value."}, + { rapidjson::ParseErrorCode::kParseErrorObjectMissName , "Missing a name for object member."}, + { rapidjson::ParseErrorCode::kParseErrorObjectMissColon , "Missing a colon after a name of object member."}, + { rapidjson::ParseErrorCode::kParseErrorObjectMissCommaOrCurlyBracket , "Missing a comma or '}' after an object member."}, + { rapidjson::ParseErrorCode::kParseErrorArrayMissCommaOrSquareBracket , "Missing a comma or ']' after an array element."}, + { rapidjson::ParseErrorCode::kParseErrorStringUnicodeEscapeInvalidHex , "Incorrect hex digit after \\u escape in string."}, + { rapidjson::ParseErrorCode::kParseErrorStringUnicodeSurrogateInvalid , "The surrogate pair in string is invalid."}, + { rapidjson::ParseErrorCode::kParseErrorStringEscapeInvalid , "Invalid escape character in string."}, + { rapidjson::ParseErrorCode::kParseErrorStringMissQuotationMark , "Missing a closing quotation mark in string."}, + { rapidjson::ParseErrorCode::kParseErrorStringInvalidEncoding , "Invalid encoding in string."}, + { rapidjson::ParseErrorCode::kParseErrorNumberTooBig , "Number too big to be stored in double."}, + { rapidjson::ParseErrorCode::kParseErrorNumberMissFraction , "Miss fraction part in number."}, + { rapidjson::ParseErrorCode::kParseErrorNumberMissExponent , "Miss exponent in number."}, + { rapidjson::ParseErrorCode::kParseErrorTermination , "Terminate parsing due to Handler error."}, + { rapidjson::ParseErrorCode::kParseErrorUnspecificSyntaxError , "Unspecific syntax error."} +}; + +const char* GetParseError_En(rapidjson::ParseErrorCode parseErrorCode) { + if(errorCodes.find(parseErrorCode) != errorCodes.end()) return errorCodes[parseErrorCode]; + else return "Unknown error."; +} + +std::string encoders::json::ToString(rapidjson::Value& j) +{ + rapidjson::StringBuffer buffer; + rapidjson::Writer<rapidjson::StringBuffer> writer(buffer); + j.Accept(writer); + return buffer.GetString(); +} + +rapidjson::Document encoders::json::FromString(std::string str, std::string path) +{ + rapidjson::Document doc; + rapidjson::ParseResult parseResult = doc.Parse(str.c_str()); + if (!parseResult) { + PLUGIN_PRINTF("json::FromString", string_format("An error as occured while trying to parse %s:\nError: %s.", path == "" ? "json string" : path.c_str(), GetParseError_En(parseResult.Code()))); + doc.SetObject(); + } + return doc; +} \ No newline at end of file diff --git a/src/memory/encoders/json.h b/src/memory/encoders/json.h new file mode 100644 index 000000000..b16a4df2f --- /dev/null +++ b/src/memory/encoders/json.h @@ -0,0 +1,14 @@ +#ifndef _encoders_json_h +#define _encoders_json_h + +#include <string> +#include <rapidjson/json.hpp> + +namespace encoders { + namespace json { + std::string ToString(rapidjson::Value& j); + rapidjson::Document FromString(std::string str, std::string path = ""); + } +} + +#endif \ No newline at end of file diff --git a/src/memory/gamedata/gamedata.cpp b/src/memory/gamedata/gamedata.cpp new file mode 100644 index 000000000..7549dc730 --- /dev/null +++ b/src/memory/gamedata/gamedata.cpp @@ -0,0 +1,315 @@ +#include "gamedata.h" + +#include <core/entrypoint.h> +#include <memory/encoders/json.h> +#include <filesystem/files/files.h> +#include <utils/utils.h> +#include <utils/common.h> +#include <sdk/game.h> +#include <utils/platform/platform.h> +#include <server/configuration/configuration.h> +#include <dynlibutils/module.h> +#include <swiftly-ext/core.h> + +#define HAS_MEMBER(DOCUMENT, MEMBER_NAME, MEMBER_PATH) \ + if (!DOCUMENT.HasMember(MEMBER_NAME)) \ + { \ + OffsetsError(string_format("The field \"%s\" doesn't exists.", MEMBER_PATH)); \ + continue; \ + } + +#define IS_NUMBER(DOCUMENT, MEMBER_NAME, MEMBER_PATH) \ + if (!DOCUMENT[MEMBER_NAME].IsInt()) \ + { \ + OffsetsError(string_format("The field \"%s\" is not a number.", MEMBER_PATH)); \ + continue; \ + } + +#define IS_STRING(DOCUMENT, MEMBER_NAME, MEMBER_PATH) \ + if (!DOCUMENT[MEMBER_NAME].IsString()) \ + { \ + SignaturesError(string_format("The field \"%s\" is not a string.", MEMBER_PATH)); \ + continue; \ + } + +DynLibUtils::CModule DetermineModuleByLibrary(std::string library) { + if (library == "server") + return DynLibUtils::CModule(server); + else if (library == "engine2") + return DynLibUtils::CModule(engine); + else + return DynLibUtils::CModule(library); +} + +void SignaturesError(std::string text) +{ + if (!g_SMAPI) + return; + + PLUGIN_PRINTF("Signatures", "%s\n", text.c_str()); +} + +void OffsetsError(std::string text) +{ + if (!g_SMAPI) + return; + + PLUGIN_PRINTF("Offsets", "%s\n", text.c_str()); +} + +void PatchesError(std::string text) +{ + if (!g_SMAPI) + return; + + PLUGIN_PRINTF("Patches", "%s\n", text.c_str()); +} + +void GameData::LoadGameData() +{ + std::string game_name = GetGameName(); + + if (game_name == "unknown") { + PRINT("Unknown game detected, not loading any game data.\n"); + return; + } + + LoadSignatures(game_name); + LoadOffsets(game_name); + LoadPatches(game_name); +} + +void* GameData::FetchRawSignature(std::string name) +{ + if (!ExistsSignature(name)) return nullptr; + + return signatures[name]; +} + +bool GameData::ExistsSignature(std::string name) +{ + return signatures.find(name) != signatures.end(); +} + +void GameData::LoadSignatures(std::string game_folder) +{ + auto files = Files::FetchFileNames("addons/swiftly/gamedata/" + game_folder); + for (auto file : files) { + if (!ends_with(file, "signatures.json")) continue; + + auto j = encoders::json::FromString(Files::Read(file), file); + if (!j.IsObject()) { + SignaturesError(string_format("'%s' needs to contain an object.\n", file.c_str())); + continue; + } + + for (auto it = j.MemberBegin(); it != j.MemberEnd(); ++it) { + std::string name = it->name.GetString(); + + if (signatures.find(name) != signatures.end()) { + SignaturesError(string_format("The signature for '%s' has been already loaded.", name.c_str())); + continue; + } + + HAS_MEMBER(it->value, "lib", string_format("%s.lib", name.c_str())); + HAS_MEMBER(it->value, "windows", string_format("%s.windows", name.c_str())); + HAS_MEMBER(it->value, "linux", string_format("%s.linux", name.c_str())); + + IS_STRING(it->value, "lib", string_format("%s.lib", name.c_str())); + IS_STRING(it->value, "windows", string_format("%s.windows", name.c_str())); + IS_STRING(it->value, "linux", string_format("%s.linux", name.c_str())); + + std::string lib = it->value["lib"].GetString(); + std::string rawSig = it->value[WIN_LINUX("windows", "linux")].GetString(); + SignaturesError(string_format("Searching for \"%s\"...", rawSig.c_str())); + + DynLibUtils::CModule module = DetermineModuleByLibrary(lib); + void* sig = nullptr; + if (rawSig.at(0) == '@') sig = module.GetFunctionByName((rawSig.c_str() + 1)).RCast<void*>(); + else sig = module.FindPattern(rawSig).RCast<void*>(); + + if (!sig) + { + SignaturesError(string_format("Couldn't find the signature for '%s' (Library '%s').", name.c_str(), lib.c_str())); + continue; + } + + SignaturesError(string_format("Found function '%s' (Library '%s') pointing at %p.", name.c_str(), lib.c_str(), sig)); + + signatures.insert({ name, sig }); + } + } + SignaturesError(string_format("Succesfully loaded %02d signatures.", signatures.size())); +} + +void GameData::LoadOffsets(std::string game_folder) +{ + auto files = Files::FetchFileNames("addons/swiftly/gamedata/" + game_folder); + for (auto file : files) { + if (!ends_with(file, "offsets.json")) continue; + + auto j = encoders::json::FromString(Files::Read(file), file); + if (!j.IsObject()) { + OffsetsError(string_format("'%s' needs to contain an object.\n", file.c_str())); + continue; + } + + for (auto it = j.MemberBegin(); it != j.MemberEnd(); ++it) { + std::string name = it->name.GetString(); + + if (offsets.find(name) != offsets.end()) { + OffsetsError(string_format("The offsets for '%s' has been already loaded.", name.c_str())); + continue; + } + + HAS_MEMBER(it->value, "windows", string_format("%s.windows", name.c_str())) + HAS_MEMBER(it->value, "linux", string_format("%s.linux", name.c_str())) + + IS_NUMBER(it->value, "windows", string_format("%s.windows", name.c_str())) + IS_NUMBER(it->value, "linux", string_format("%s.linux", name.c_str())) + + offsets.insert({ name, it->value[WIN_LINUX("windows", "linux")].GetInt() }); + } + } + + OffsetsError(string_format("Succesfully loaded %02d offsets.", offsets.size())); +} + +int GameData::GetOffset(std::string name) +{ + if (offsets.find(name) == offsets.end()) return -1; + return offsets[name]; +} + +int HexStringToUint8Array(const char* hexString, uint8_t* byteArray, size_t maxBytes) +{ + if (!hexString) + return -1; + + size_t hexStringLength = strlen(hexString); + size_t byteCount = hexStringLength / 4; + + if (hexStringLength % 4 != 0 || byteCount == 0 || byteCount > maxBytes) + return -1; + + for (size_t i = 0; i < hexStringLength; i += 4) + { + if (sscanf(hexString + i, "\\x%2hhX", &byteArray[i / 4]) != 1) + return -1; + } + + byteArray[byteCount] = '\0'; + + return byteCount; +} + +byte* HexToByte(const char* src, size_t& length) +{ + if (!src || strlen(src) <= 0) + return nullptr; + + length = strlen(src) / 4; + uint8_t* dest = new uint8_t[length]; + int byteCount = HexStringToUint8Array(src, dest, length); + if (byteCount <= 0) + return nullptr; + + return (byte*)dest; +} + +void GameData::LoadPatches(std::string game_folder) +{ + auto files = Files::FetchFileNames("addons/swiftly/gamedata/" + game_folder); + for (auto file : files) { + if (!ends_with(file, "patches.json")) continue; + + auto j = encoders::json::FromString(Files::Read(file), file); + if (!j.IsObject()) { + PatchesError(string_format("'%s' needs to contain an object.\n", file.c_str())); + continue; + } + + for (auto it = j.MemberBegin(); it != j.MemberEnd(); ++it) { + std::string name = it->name.GetString(); + + if (patches.find(name) != patches.end()) { + PatchesError(string_format("The patch for '%s' has been already loaded.", name.c_str())); + continue; + } + + HAS_MEMBER(it->value, "signature", string_format("%s.signature", name.c_str())); + HAS_MEMBER(it->value, "windows", string_format("%s.windows", name.c_str())); + HAS_MEMBER(it->value, "linux", string_format("%s.linux", name.c_str())); + + IS_STRING(it->value, "signature", string_format("%s.signature", name.c_str())); + IS_STRING(it->value, "windows", string_format("%s.windows", name.c_str())); + IS_STRING(it->value, "linux", string_format("%s.linux", name.c_str())); + + std::string signature = it->value["signature"].GetString(); + if (!ExistsSignature(signature)) + { + PatchesError(string_format("%s: Signature '%s' does not exists in signatures file.\n", name.c_str(), signature.c_str())); + continue; + } + + patches.insert({ name, std::string(it->value[WIN_LINUX("windows", "linux")].GetString()) }); + patches_signatures.insert({ name, signature }); + } + } + + PatchesError(string_format("Succesfully loaded %02d patches.", patches.size())); +} + +void GameData::PerformPatch(std::string patch_name) +{ + if (patches.find(patch_name) == patches.end()) + { + PLUGIN_PRINTF("Patch", "Invalid patch name: \"%s\".\n", patch_name.c_str()); + return; + } + + if (patches.at(patch_name) == "") return; + + void* patchAddress = FetchRawSignature(patches_signatures[patch_name]); + + size_t iLength = 0; + byte* patch = HexToByte(("\\x" + replace(patches.at(patch_name), " ", "\\x")).c_str(), iLength); + + Plat_WriteMemory(patchAddress, patch, iLength); + PLUGIN_PRINTF("Patch", "Patched \"%s\" using signature \"%s\".\n", patch_name.c_str(), patches_signatures[patch_name].c_str()); +} + +void GameData::PerformPatches() +{ + if (g_Config.HasKey("core.patches_to_perform")) + { + std::vector<std::string> patchesToPerform = explode(g_Config.FetchValue<std::string>("core.patches_to_perform"), " "); + + uint32_t patchesPerformed = 0; + for (std::string& patchName : patchesToPerform) + { + if (patchName == "") + continue; + + PerformPatch(patchName); + ++patchesPerformed; + } + + PLUGIN_PRINTF("Patch", "Patches performed: %02d.\n", patchesPerformed); + } +} + +EXT_API int swiftly_GetOffset(const char* name) +{ + return g_GameData.GetOffset(name); +} + +EXT_API void* swiftly_GetSignature(const char* name) +{ + return g_GameData.FetchRawSignature(name); +} + +EXT_API void* swiftly_AccessVTable(const char* module, const char* vTableName) +{ + return DetermineModuleByLibrary(module).GetVirtualTableByName(vTableName).RCast<void*>(); +} \ No newline at end of file diff --git a/src/memory/gamedata/gamedata.h b/src/memory/gamedata/gamedata.h new file mode 100644 index 000000000..e1d84290b --- /dev/null +++ b/src/memory/gamedata/gamedata.h @@ -0,0 +1,42 @@ +#ifndef _memory_gamedata_gamedata_h +#define _memory_gamedata_gamedata_h + +#include <map> +#include <string> + +class GameData { +private: + std::map<std::string, void*> signatures; + + std::map<std::string, std::string> patches; + std::map<std::string, std::string> patches_signatures; + + std::map<std::string, int> offsets; +public: + void LoadGameData(); + + void LoadSignatures(std::string game_folder); + + template <typename T> + T FetchSignature(std::string name) + { + if (!ExistsSignature(name)) + return nullptr; + + return reinterpret_cast<T>(signatures[name]); + } + + void* FetchRawSignature(std::string name); + bool ExistsSignature(std::string name); + + void LoadPatches(std::string game_folder); + void PerformPatch(std::string patch_name); + void PerformPatches(); + + void LoadOffsets(std::string game_folder); + int GetOffset(std::string name); +}; + +extern GameData g_GameData; + +#endif \ No newline at end of file diff --git a/src/memory/hooks/functions.cpp b/src/memory/hooks/functions.cpp new file mode 100644 index 000000000..ca5bb224a --- /dev/null +++ b/src/memory/hooks/functions.cpp @@ -0,0 +1,164 @@ +#include "functions.h" +#include "manager.h" + +#include <utils/common.h> +#include <embedder/src/Embedder.h> +#include <memory/gamedata/gamedata.h> + +#include <dyncall/dyncall.h> + +DCCallVM* functionCallVM = dcNewCallVM(4096); + +FunctionHook::FunctionHook(std::string signature_name, dyno::CallbackType callbackType, dyno::CallbackHandler handler, std::string function_args, char function_return) +{ + void* signature = g_GameData.FetchRawSignature(signature_name); + if (!signature) return; + + m_callbackType = callbackType; + m_handler = handler; + m_pfn = nullptr; + m_signature_name = signature_name; + m_function_args = function_args; + m_function_return = function_return; + + g_hookManager.AddToQueue(this); +} + +FunctionHook::FunctionHook(const char* signature_name, dyno::CallbackType callbackType, dyno::CallbackHandler handler, std::string function_args, char function_return) +{ + m_callbackType = callbackType; + m_handler = handler; + m_pfn = nullptr; + m_signature_name = signature_name; + m_function_args = function_args; + m_function_return = function_return; + + g_hookManager.AddToQueue(this); +} + +FunctionHook::FunctionHook(void* signature_name, dyno::CallbackType callbackType, dyno::CallbackHandler handler, std::string function_args, char function_return) +{ + m_callbackType = callbackType; + m_handler = handler; + m_pfn = signature_name; + m_signature_name = ""; + m_function_args = function_args; + m_function_return = function_return; + + g_hookManager.AddToQueue(this); +} + +void FunctionHook::Initialize() +{ + if (m_pfn == nullptr && m_signature_name != "") { + m_pfn = g_GameData.FetchRawSignature(m_signature_name); + } + if (!m_pfn) return; + + dyno::IHookManager& manager = dyno::IHookManager::Get(); + hookFunc = manager.hookDetour(m_pfn, [this] { return new DEFAULT_CALLCONV(GetDataObjectList(m_function_args), GetDataObject(m_function_return)); }).get(); + + hookFunc->addCallback(m_callbackType, m_handler); +} + +FunctionHook::~FunctionHook() +{ + Disable(); + if (!m_pfn) return; + + dyno::IHookManager& manager = dyno::IHookManager::Get(); + manager.unhookDetour(m_pfn); +} + +void FunctionHook::Enable() +{ + if (!m_pfn) return; + if (enabled) return; + + enabled = true; + hookFunc->addCallback(m_callbackType, m_handler); +} + +void FunctionHook::Disable() +{ + if (!m_pfn) return; + if (!enabled) return; + + enabled = false; + hookFunc->removeCallback(m_callbackType, m_handler); +} + +std::any FunctionHook::Call(std::vector<std::any> arguments) +{ + if (!m_pfn) return nullptr; + + dcReset(functionCallVM); + dcMode(functionCallVM, DC_CALL_C_DEFAULT); + + for (int i = 0; i < arguments.size(); i++) { + if (m_function_args.size() <= i) + break; + + if (m_function_args.at(i) == 'p') { + if (arguments[i].type() == typeid(std::string)) { + dcArgPointer(functionCallVM, (void*)strtol(std::any_cast<std::string>(arguments[i]).c_str(), nullptr, 16)); + } + else if (arguments[i].type() == typeid(ClassData*)) { + dcArgPointer(functionCallVM, std::any_cast<ClassData*>(arguments[i])->GetDataOr<void*>("ptr", nullptr)); + } + } + else if (m_function_args.at(i) == 'f') + dcArgFloat(functionCallVM, std::any_cast<float>(arguments[i])); + else if (m_function_args.at(i) == 'b') + dcArgBool(functionCallVM, std::any_cast<bool>(arguments[i])); + else if (m_function_args.at(i) == 'd') + dcArgDouble(functionCallVM, std::any_cast<double>(arguments[i])); + else if (m_function_args.at(i) == 'i') + dcArgInt(functionCallVM, std::any_cast<int>(arguments[i])); + else if (m_function_args.at(i) == 'u') + dcArgLong(functionCallVM, std::any_cast<uint32_t>(arguments[i])); + else if (m_function_args.at(i) == 's') + dcArgPointer(functionCallVM, (void*)std::any_cast<std::string>(arguments[i]).c_str()); + else if (m_function_args.at(i) == 'I') + dcArgLongLong(functionCallVM, std::any_cast<int64_t>(arguments[i])); + else if (m_function_args.at(i) == 'U') + dcArgLongLong(functionCallVM, std::any_cast<uint64_t>(arguments[i])); + else + { + PRINTF("Invalid Data Type: '%c'.\n", m_function_args.at(i)); + break; + } + } + + std::any retval = nullptr; + if (m_function_return == 'p') + retval = new ClassData({ { "ptr", (void*)dcCallPointer(functionCallVM, m_pfn) }, { "should_mark_freeable", true } }, "Memory", nullptr); + else if (m_function_return == 'f') + retval = (float)dcCallFloat(functionCallVM, m_pfn); + else if (m_function_return == 'b') + retval = (bool)dcCallBool(functionCallVM, m_pfn); + else if (m_function_return == 'd') + retval = (double)dcCallDouble(functionCallVM, m_pfn); + else if (m_function_return == 'i') + retval = (int)dcCallInt(functionCallVM, m_pfn); + else if (m_function_return == 'u') + retval = (uint32_t)dcCallInt(functionCallVM, m_pfn); + else if (m_function_return == 's') + retval = std::string((const char*)dcCallPointer(functionCallVM, m_pfn)); + else if (m_function_return == 'I') + retval = (int64_t)dcCallLongLong(functionCallVM, m_pfn); + else if (m_function_return == 'U') + retval = (uint64_t)dcCallLongLong(functionCallVM, m_pfn); + else if (m_function_return == 'v') + { + dcCallVoid(functionCallVM, m_pfn); + retval = nullptr; + } + else + { + PRINTF("Invalid return type: '%c'.\n", m_function_return); + retval = nullptr; + } + + return retval; +} \ No newline at end of file diff --git a/src/memory/hooks/functions.h b/src/memory/hooks/functions.h new file mode 100644 index 000000000..87cca8802 --- /dev/null +++ b/src/memory/hooks/functions.h @@ -0,0 +1,50 @@ +#ifndef _memory_hooks_functions_h +#define _memory_hooks_functions_h + +#include <string> +#include <vector> +#include <any> + +#include <dynohook/core.h> +#include <dynohook/os.h> +#include <dynohook/ihook.h> +#include <dynohook/imanager.h> + +#if DYNO_PLATFORM_WINDOWS +#include <dynohook/conventions/x64_windows_call.h> +#define DEFAULT_CALLCONV dyno::x64WindowsCall +#else +#include <dynohook/conventions/x64_systemV_call.h> +#define DEFAULT_CALLCONV dyno::x64SystemVcall +#endif + +#include <utils/utils.h> + +dyno::DataObject GetDataObject(char arg); +std::vector<dyno::DataObject> GetDataObjectList(std::string args); + +class FunctionHook +{ +private: + void* m_pfn; + dyno::IHook* hookFunc; + dyno::CallbackType m_callbackType; + dyno::CallbackHandler m_handler; + std::string m_function_args; + std::string m_signature_name; + char m_function_return; + bool enabled = true; +public: + FunctionHook(std::string signature_name, dyno::CallbackType callbackType, dyno::CallbackHandler handler, std::string function_args, char function_return); + FunctionHook(const char* signature_name, dyno::CallbackType callbackType, dyno::CallbackHandler handler, std::string function_args, char function_return); + FunctionHook(void* signature_name, dyno::CallbackType callbackType, dyno::CallbackHandler handler, std::string function_args, char function_return); + ~FunctionHook(); + + void Initialize(); + void Enable(); + void Disable(); + + std::any Call(std::vector<std::any> arguments); +}; + +#endif \ No newline at end of file diff --git a/src/memory/hooks/manager.cpp b/src/memory/hooks/manager.cpp new file mode 100644 index 000000000..72b9ae5f6 --- /dev/null +++ b/src/memory/hooks/manager.cpp @@ -0,0 +1,113 @@ +#include "manager.h" + +#include <swiftly-ext/core.h> + +dyno::DataObject GetDataObject(char arg) +{ + if (arg == 'p') + return dyno::DataObject(dyno::DataType::Pointer); + else if (arg == 'f') + return dyno::DataObject(dyno::DataType::Float); + else if (arg == 'b') + return dyno::DataObject(dyno::DataType::Bool); + else if (arg == 'd') + return dyno::DataObject(dyno::DataType::Double); + else if (arg == 'i') + return dyno::DataObject(dyno::DataType::Int32); + else if (arg == 'u') + return dyno::DataObject(dyno::DataType::UInt32); + else if (arg == 's') + return dyno::DataObject(dyno::DataType::String); + else if (arg == 'I') + return dyno::DataObject(dyno::DataType::Int64); + else if (arg == 'U') + return dyno::DataObject(dyno::DataType::UInt64); + else if (arg == 'v') + return dyno::DataObject(dyno::DataType::Void); + else + return dyno::DataObject(dyno::DataType::Pointer); +} + +std::vector<dyno::DataObject> GetDataObjectList(std::string args) +{ + std::vector<dyno::DataObject> data; + for (int i = 0; i < args.size(); i++) data.push_back(GetDataObject(args.at(i))); + return data; +} + +void HookManager::Initialize() +{ + for (auto hook : funchookQueue) + hook->Initialize(); + + initialized = true; +} + +void HookManager::Shutdown() +{ + for (auto hook : funchookQueue) + hook->Disable(); +} + +void HookManager::AddToQueue(FunctionHook* hook) +{ + if (initialized) hook->Initialize(); + funchookQueue.push_back(hook); +} + +void HookManager::AddToQueue(VFunctionHook* hook) +{ + if (initialized) hook->Initialize(); + vfunchookQueue.push_back(hook); +} + +EXT_API void* swiftly_FunctionHook_Init(const char* sig, bool cbtype, void* cb, const char* func_args, char return_val) +{ + return new FunctionHook(std::string(sig), (dyno::CallbackType)cbtype, reinterpret_cast<dyno::CallbackHandler>(cb), func_args, return_val); +} + +EXT_API void* swiftly_FunctionHook_InitPtr(void* sig, bool cbtype, void* cb, const char* func_args, char return_val) +{ + return new FunctionHook(sig, (dyno::CallbackType)cbtype, reinterpret_cast<dyno::CallbackHandler>(cb), func_args, return_val); +} + +EXT_API void swiftly_FunctionHook_Destroy(void* ptr) +{ + FunctionHook* fhook = (FunctionHook*)ptr; + delete fhook; +} + +EXT_API void swiftly_FunctionHook_Enable(void* ptr) +{ + FunctionHook* fhook = (FunctionHook*)ptr; + fhook->Enable(); +} + +EXT_API void swiftly_FunctionHook_Disable(void* ptr) +{ + FunctionHook* fhook = (FunctionHook*)ptr; + fhook->Disable(); +} + +EXT_API void* swiftly_VFunctionHook_Init(const char* lib, const char* vtable, const char* offset, bool cbtype, void* func, const char* function_args, char return_val) +{ + return new VFunctionHook(lib, vtable, offset, (dyno::CallbackType)cbtype, reinterpret_cast<dyno::CallbackHandler>(func), function_args, return_val); +} + +EXT_API void swiftly_VFunctionHook_Destroy(void* ptr) +{ + VFunctionHook* vhook = (VFunctionHook*)ptr; + delete vhook; +} + +EXT_API void swiftly_VFunctionHook_Enable(void* ptr) +{ + VFunctionHook* vhook = (VFunctionHook*)ptr; + vhook->Enable(); +} + +EXT_API void swiftly_VFunctionHook_Disable(void* ptr) +{ + VFunctionHook* vhook = (VFunctionHook*)ptr; + vhook->Disable(); +} \ No newline at end of file diff --git a/src/memory/hooks/manager.h b/src/memory/hooks/manager.h new file mode 100644 index 000000000..a454e5cd0 --- /dev/null +++ b/src/memory/hooks/manager.h @@ -0,0 +1,25 @@ +#ifndef _memory_hooks_manager_h +#define _memory_hooks_manager_h + +#include "vfunctions.h" +#include "functions.h" + +#include <vector> + +class HookManager +{ +private: + std::vector<FunctionHook*> funchookQueue; + std::vector<VFunctionHook*> vfunchookQueue; + bool initialized = false; +public: + void Initialize(); + void Shutdown(); + + void AddToQueue(FunctionHook* hook); + void AddToQueue(VFunctionHook* hook); +}; + +extern HookManager g_hookManager; + +#endif \ No newline at end of file diff --git a/src/memory/hooks/vfunctions.cpp b/src/memory/hooks/vfunctions.cpp new file mode 100644 index 000000000..889e6e108 --- /dev/null +++ b/src/memory/hooks/vfunctions.cpp @@ -0,0 +1,147 @@ +#include "vfunctions.h" + +#include <memory/gamedata/gamedata.h> +#include <dynlibutils/module.h> +#include <utils/common.h> +#include <embedder/src/Embedder.h> + +#include <dyncall/dyncall.h> + +DCCallVM* vfunctionCallVM = dcNewCallVM(4096); + +DynLibUtils::CModule DetermineModuleByLibrary(std::string library); + +VFunctionHook::VFunctionHook(std::string library, std::string vtable, std::string offsetName, dyno::CallbackType callbackType, dyno::CallbackHandler handler, std::string function_args, char function_return) +{ + m_library = library; + m_vtable = vtable; + m_offsetName = offsetName; + m_pvtable = nullptr; + m_ioffset = 0; + m_callbackType = callbackType; + m_handler = handler; + m_function_args = function_args; + m_function_return = function_return; +} + +VFunctionHook::~VFunctionHook() +{ + Disable(); + if (!m_pvtable) return; + + dyno::IHookManager& manager = dyno::IHookManager::Get(); + manager.unhookVirtual(m_pvtable, m_ioffset); +} + +void VFunctionHook::Initialize() +{ + auto module = DetermineModuleByLibrary(m_library); + auto vtable = module.GetVirtualTableByName(m_vtable); + if (!vtable) return; + + int offset = g_GameData.GetOffset(m_offsetName); + if (offset == -1) return; + + m_pvtable = vtable; + m_ioffset = offset; + + dyno::IHookManager& manager = dyno::IHookManager::Get(); + hookFunc = manager.hookVirtual(m_pvtable, m_ioffset, [this] { return new DEFAULT_CALLCONV(GetDataObjectList(m_function_args), GetDataObject(m_function_return)); }).get(); + + hookFunc->addCallback(m_callbackType, m_handler); +} + +void VFunctionHook::Enable() +{ + if (enabled) return; + if (!m_pvtable) return; + + enabled = true; + hookFunc->addCallback(m_callbackType, m_handler); +} + +void VFunctionHook::Disable() +{ + if (!enabled) return; + if (!m_pvtable) return; + + enabled = false; + hookFunc->removeCallback(m_callbackType, m_handler); +} + +std::any VFunctionHook::Call(std::vector<std::any> arguments) +{ + if (!m_pvtable) return nullptr; + + void* m_pfn = reinterpret_cast<void**>(m_pvtable)[m_ioffset]; + + dcReset(vfunctionCallVM); + dcMode(vfunctionCallVM, DC_CALL_C_DEFAULT); + + for (int i = 0; i < arguments.size(); i++) { + if (m_function_args.size() <= i) + break; + + if (m_function_args.at(i) == 'p') { + if (arguments[i].type() == typeid(std::string)) { + dcArgPointer(vfunctionCallVM, (void*)strtol(std::any_cast<std::string>(arguments[i]).c_str(), nullptr, 16)); + } + else if (arguments[i].type() == typeid(ClassData*)) { + dcArgPointer(vfunctionCallVM, std::any_cast<ClassData*>(arguments[i])->GetDataOr<void*>("ptr", nullptr)); + } + } + else if (m_function_args.at(i) == 'f') + dcArgFloat(vfunctionCallVM, std::any_cast<float>(arguments[i])); + else if (m_function_args.at(i) == 'b') + dcArgBool(vfunctionCallVM, std::any_cast<bool>(arguments[i])); + else if (m_function_args.at(i) == 'd') + dcArgDouble(vfunctionCallVM, std::any_cast<double>(arguments[i])); + else if (m_function_args.at(i) == 'i') + dcArgInt(vfunctionCallVM, std::any_cast<int>(arguments[i])); + else if (m_function_args.at(i) == 'u') + dcArgLong(vfunctionCallVM, std::any_cast<uint32_t>(arguments[i])); + else if (m_function_args.at(i) == 's') + dcArgPointer(vfunctionCallVM, (void*)std::any_cast<std::string>(arguments[i]).c_str()); + else if (m_function_args.at(i) == 'I') + dcArgLongLong(vfunctionCallVM, std::any_cast<int64_t>(arguments[i])); + else if (m_function_args.at(i) == 'U') + dcArgLongLong(vfunctionCallVM, std::any_cast<uint64_t>(arguments[i])); + else + { + PRINTF("Invalid Data Type: '%c'.\n", m_function_args.at(i)); + break; + } + } + + std::any retval = nullptr; + if (m_function_return == 'p') + retval = new ClassData({ { "ptr", (void*)dcCallPointer(vfunctionCallVM, m_pfn) }, { "should_mark_freeable", true } }, "Memory", nullptr); + else if (m_function_return == 'f') + retval = (float)dcCallFloat(vfunctionCallVM, m_pfn); + else if (m_function_return == 'b') + retval = (bool)dcCallBool(vfunctionCallVM, m_pfn); + else if (m_function_return == 'd') + retval = (double)dcCallDouble(vfunctionCallVM, m_pfn); + else if (m_function_return == 'i') + retval = (int)dcCallInt(vfunctionCallVM, m_pfn); + else if (m_function_return == 'u') + retval = (uint32_t)dcCallInt(vfunctionCallVM, m_pfn); + else if (m_function_return == 's') + retval = std::string((const char*)dcCallPointer(vfunctionCallVM, m_pfn)); + else if (m_function_return == 'I') + retval = (int64_t)dcCallLongLong(vfunctionCallVM, m_pfn); + else if (m_function_return == 'U') + retval = (uint64_t)dcCallLongLong(vfunctionCallVM, m_pfn); + else if (m_function_return == 'v') + { + dcCallVoid(vfunctionCallVM, m_pfn); + retval = nullptr; + } + else + { + PRINTF("Invalid return type: '%c'.\n", m_function_return); + retval = nullptr; + } + + return retval; +} \ No newline at end of file diff --git a/src/memory/hooks/vfunctions.h b/src/memory/hooks/vfunctions.h new file mode 100644 index 000000000..3270f3e49 --- /dev/null +++ b/src/memory/hooks/vfunctions.h @@ -0,0 +1,53 @@ +#ifndef _memory_hooks_vfunctions_h +#define _memory_hooks_vfunctions_h + +#include <string> +#include <vector> +#include <any> + +#include <dynohook/core.h> +#include <dynohook/os.h> +#include <dynohook/ihook.h> +#include <dynohook/imanager.h> + +#include <memory/virtual/virtual.h> + +#if DYNO_PLATFORM_WINDOWS +#include <dynohook/conventions/x64_windows_call.h> +#define DEFAULT_CALLCONV dyno::x64WindowsCall +#else +#include <dynohook/conventions/x64_systemV_call.h> +#define DEFAULT_CALLCONV dyno::x64SystemVcall +#endif + +#include <utils/utils.h> + +dyno::DataObject GetDataObject(char arg); +std::vector<dyno::DataObject> GetDataObjectList(std::string args); + +class VFunctionHook +{ +private: + void* m_pvtable; + int m_ioffset; + std::string m_library; + std::string m_vtable; + std::string m_offsetName; + dyno::IHook* hookFunc; + dyno::CallbackType m_callbackType; + dyno::CallbackHandler m_handler; + std::string m_function_args; + char m_function_return; + bool enabled = true; +public: + VFunctionHook(std::string library, std::string vtable, std::string offsetName, dyno::CallbackType callbackType, dyno::CallbackHandler handler, std::string function_args, char function_return); + ~VFunctionHook(); + + void Initialize(); + void Enable(); + void Disable(); + + std::any Call(std::vector<std::any> arguments); +}; + +#endif \ No newline at end of file diff --git a/src/memory/virtual/virtual.h b/src/memory/virtual/virtual.h new file mode 100644 index 000000000..022631bc1 --- /dev/null +++ b/src/memory/virtual/virtual.h @@ -0,0 +1,12 @@ +#ifndef _memory_virtual_virtual_h +#define _memory_virtual_virtual_h + +template <typename T, typename... Args> +constexpr T CallVFunc(int index, void *pThis, Args... args) noexcept +{ + return reinterpret_cast<T (*)(void *, Args...)>(reinterpret_cast<void ***>(pThis)[0][index])(pThis, args...); +} + +#define CALL_VIRTUAL(retType, idx, ...) CallVFunc<retType>(idx, __VA_ARGS__) + +#endif \ No newline at end of file diff --git a/src/network/database/DBDriver.h b/src/network/database/DBDriver.h new file mode 100644 index 000000000..09ee5845d --- /dev/null +++ b/src/network/database/DBDriver.h @@ -0,0 +1,19 @@ +#ifndef _dbdriver_h +#define _dbdriver_h + +#include "IDatabase.h" +#include <vector> +#include <string> + +class DBDriver +{ +private: + std::vector<IDatabase*> databases; +public: + virtual IDatabase* RegisterDatabase(); + virtual std::string GetKind(); + + std::vector<IDatabase*> GetDatabases() { return databases; } +}; + +#endif \ No newline at end of file diff --git a/src/network/database/DatabaseManager.cpp b/src/network/database/DatabaseManager.cpp new file mode 100644 index 000000000..491b627df --- /dev/null +++ b/src/network/database/DatabaseManager.cpp @@ -0,0 +1,89 @@ +#include "DatabaseManager.h" +#include <core/entrypoint.h> +#include <filesystem/files/files.h> +#include "DBDriver.h" +#include <swiftly-ext/core.h> +#include <rapidjson/json.hpp> + +std::vector<DBDriver*> dbDrivers; + +void DatabasesError(std::string error) +{ + if (!g_SMAPI) + return; + + PLUGIN_PRINTF("Databases", "Error: %s\n", error.c_str()); +} + +void WriteJSONFile(std::string path, rapidjson::Value& j); + +void DatabaseManager::LoadDatabases() +{ + bool modified = false; + rapidjson::Document databasesConfigFile; + databasesConfigFile.Parse(Files::Read(databasesPath).c_str()); + if (databasesConfigFile.HasParseError()) + return DatabasesError(string_format("A parsing error has been detected.\nError (offset %u): %s\n", (unsigned)databasesConfigFile.GetErrorOffset(), GetParseError_En(databasesConfigFile.GetParseError()))); + + if (!databasesConfigFile.IsObject()) + return DatabasesError("Databases file needs to be an object."); + + for (auto itr = databasesConfigFile.MemberBegin(); itr != databasesConfigFile.MemberEnd(); ++itr) + { + if (!itr->value.IsObject()) + { + DatabasesError(string_format("Database connection \"%s\" needs to be an object.", itr->name.GetString())); + continue; + } + + if (!itr->value.HasMember("kind")) { + modified = true; + itr->value.AddMember(rapidjson::Value().SetString("kind", databasesConfigFile.GetAllocator()), rapidjson::Value().SetString("mysql", databasesConfigFile.GetAllocator()), databasesConfigFile.GetAllocator()); + } + + const char* connectionName = itr->name.GetString(); + std::map<std::string, std::string> connection_details; + + for (auto it = itr->value.MemberBegin(); it != itr->value.MemberEnd(); ++it) + { + if (it->value.IsNumber()) connection_details.insert({ it->name.GetString(), std::to_string(it->value.GetInt64()) }); + else if (it->value.IsString()) connection_details.insert({ it->name.GetString(), it->value.GetString() }); + } + + IDatabase* db = nullptr; + + for (auto driver : dbDrivers) { + if (driver->GetKind() == connection_details["kind"]) { + db = driver->RegisterDatabase(); + break; + } + } + + if (!db) { + PLUGIN_PRINTF("Database", "Invalid database kind for \"%s\": %s.\n", connectionName, connection_details["kind"].c_str()); + continue; + } + + db->SetConnectionConfig(connection_details); + databases.insert({ connectionName, db }); + } + + if (modified) { + WriteJSONFile("addons/swiftly/configs/databases.json", databasesConfigFile); + } + + PLUGIN_PRINTF("Database", "%d databases have been succesfully loaded.\n", databases.size()); +} + +IDatabase* DatabaseManager::GetDatabase(std::string name) +{ + if (databases.find(name) == databases.end()) + return nullptr; + + return databases.at(name); +} + +EXT_API void swiftly_RegisterDBDriver(void* driverPtr) +{ + dbDrivers.push_back((DBDriver*)driverPtr); +} \ No newline at end of file diff --git a/src/network/database/DatabaseManager.h b/src/network/database/DatabaseManager.h new file mode 100644 index 000000000..166c3d3bd --- /dev/null +++ b/src/network/database/DatabaseManager.h @@ -0,0 +1,20 @@ +#ifndef _databasemanager_h +#define _databasemanager_h + +#include <map> +#include "IDatabase.h" + +class DatabaseManager +{ +private: + const char* databasesPath = "addons/swiftly/configs/databases.json"; + std::map<std::string, IDatabase*> databases; + +public: + void LoadDatabases(); + IDatabase* GetDatabase(std::string name); +}; + +extern DatabaseManager g_dbManager; + +#endif \ No newline at end of file diff --git a/src/network/database/IDatabase.h b/src/network/database/IDatabase.h new file mode 100644 index 000000000..b609f1ebb --- /dev/null +++ b/src/network/database/IDatabase.h @@ -0,0 +1,41 @@ +#ifndef _idatabase_h +#define _idatabase_h + +#include <map> +#include <string> +#include <vector> +#include <any> + +struct DatabaseQueryQueue +{ + std::any query; + std::string requestID; +}; + +class IDatabase +{ +public: + virtual void SetConnectionConfig(std::map<std::string, std::string> connection_details) = 0; + + virtual bool Connect() = 0; + virtual void Close(bool setError) = 0; + + virtual std::string GetVersion() = 0; + virtual std::string GetKind() = 0; + + virtual bool IsConnected() = 0; + + virtual bool HasError() = 0; + virtual std::string GetError() = 0; + + virtual std::vector<std::map<std::string, std::any>> Query(std::any query) = 0; + + // Mostly used in SQL-kind databases (MariaDB/MySQL, SQLite, MSSQL) + virtual std::string EscapeValue(std::string query) = 0; + + virtual void AddQueryQueue(DatabaseQueryQueue data) = 0; + + virtual const char* ProvideQueryBuilderTable() = 0; +}; + +#endif \ No newline at end of file diff --git a/src/network/usermessages/usermessage.cpp b/src/network/usermessages/usermessage.cpp new file mode 100644 index 000000000..b1bd61e00 --- /dev/null +++ b/src/network/usermessages/usermessage.cpp @@ -0,0 +1,950 @@ +#include "usermessage.h" + +#include "networkbasetypes.pb.h" +#include <sdk/components/CSingleRecipientFilter.h> + +#ifdef GetMessage +#undef GetMessage +#endif + +#define GETCHECK_FIELD(return_value) \ + if (!this->msgBuffer) \ + return return_value; \ + const google::protobuf::FieldDescriptor *field = this->msgBuffer->GetDescriptor()->FindFieldByName(pszFieldName); \ + if (!field) \ + { \ + return return_value; \ + } + +#define CHECK_FIELD_NOT_REPEATED(return_value) \ + if (field->label() == google::protobuf::FieldDescriptor::LABEL_REPEATED) \ + { \ + return return_value; \ + } + +#define CHECK_FIELD_TYPE_VOID(type) \ + if (field->cpp_type() != google::protobuf::FieldDescriptor::CPPTYPE_##type) \ + { \ + return; \ + } + +#define CHECK_FIELD_TYPE(type, return_value) \ + if (field->cpp_type() != google::protobuf::FieldDescriptor::CPPTYPE_##type) \ + { \ + return return_value; \ + } + +#define CHECK_FIELD_TYPE2_VOID(type1, type2) \ + google::protobuf::FieldDescriptor::CppType fieldType = field->cpp_type(); \ + if (fieldType != google::protobuf::FieldDescriptor::CPPTYPE_##type1 && fieldType != google::protobuf::FieldDescriptor::CPPTYPE_##type2) \ + { \ + return; \ + } + +#define CHECK_FIELD_TYPE2(type1, type2, return_value) \ + google::protobuf::FieldDescriptor::CppType fieldType = field->cpp_type(); \ + if (fieldType != google::protobuf::FieldDescriptor::CPPTYPE_##type1 && fieldType != google::protobuf::FieldDescriptor::CPPTYPE_##type2) \ + { \ + return return_value; \ + } + +#define CHECK_FIELD_REPEATED(return_value) \ + if (field->label() != google::protobuf::FieldDescriptor::LABEL_REPEATED) \ + { \ + return return_value; \ + } + +#define CHECK_REPEATED_ELEMENT_VOID(idx) \ + int elemCount = this->msgBuffer->GetReflection()->FieldSize(*this->msgBuffer, field); \ + if (elemCount == 0 || idx >= elemCount || idx < 0) \ + { \ + return; \ + } + +#define CHECK_REPEATED_ELEMENT(idx, return_value) \ + int elemCount = this->msgBuffer->GetReflection()->FieldSize(*this->msgBuffer, field); \ + if (elemCount == 0 || idx >= elemCount || idx < 0) \ + { \ + return return_value; \ + } + +UserMessage::UserMessage(std::string msgname) +{ + this->msgid = INVALID_MESSAGE_ID; + + auto msg = g_pNetworkMessages->FindNetworkMessagePartial(msgname.c_str()); + if (!msg) + return; + + NetMessageInfo_t* msginfo = msg->GetNetMessageInfo(); + if (!msginfo) + return; + + this->msgid = msginfo->m_MessageId; + this->msgBuffer = msg->AllocateMessage()->ToPB<google::protobuf::Message>(); + this->internalMsg = msg; +} + +UserMessage::UserMessage(INetworkMessageInternal* msg, CNetMessage* data, uint64_t* cls) +{ + this->msgid = INVALID_MESSAGE_ID; + + if (!msg || !data) return; + + NetMessageInfo_t* msginfo = msg->GetNetMessageInfo(); + if (!msginfo) + return; + + this->msgid = msginfo->m_MessageId; + this->msgBuffer = data->ToPB<google::protobuf::Message>(); + this->internalMsg = msg; + this->clients = cls; +} + +UserMessage::UserMessage(google::protobuf::Message* msg) +{ + this->msgBuffer = (CNetMessagePB<google::protobuf::Message> *)msg; +} + +UserMessage::~UserMessage() +{ +} + +bool UserMessage::IsValidMessage() +{ + return (this->msgid != INVALID_MESSAGE_ID); +} + +std::string UserMessage::GetMessageName() +{ + if (this->msgid == INVALID_MESSAGE_ID) + return ""; + + if (!this->internalMsg) + return ""; + + return this->internalMsg->GetUnscopedName(); +} + +int UserMessage::GetMessageID() +{ + return this->msgid; +} +bool UserMessage::HasField(std::string pszFieldName) +{ + if (!this->msgBuffer) + return false; + + GETCHECK_FIELD(false); + CHECK_FIELD_NOT_REPEATED(false); + return this->msgBuffer->GetReflection()->HasField(*this->msgBuffer, field); +} +int32_t UserMessage::GetInt32(std::string pszFieldName) +{ + GETCHECK_FIELD(0); + CHECK_FIELD_TYPE(INT32, 0); + CHECK_FIELD_NOT_REPEATED(0); + + return this->msgBuffer->GetReflection()->GetInt32(*this->msgBuffer, field); +} +void UserMessage::SetInt32(std::string pszFieldName, int32_t value) +{ + GETCHECK_FIELD(); + CHECK_FIELD_TYPE_VOID(INT32); + CHECK_FIELD_NOT_REPEATED(); + + this->msgBuffer->GetReflection()->SetInt32(this->msgBuffer, field, value); +} +int32_t UserMessage::GetRepeatedInt32(std::string pszFieldName, int index) +{ + GETCHECK_FIELD(0); + CHECK_FIELD_TYPE(INT32, 0); + CHECK_FIELD_REPEATED(0); + CHECK_REPEATED_ELEMENT(index, 0); + + return this->msgBuffer->GetReflection()->GetRepeatedInt32(*this->msgBuffer, field, index); +} + +void UserMessage::SetRepeatedInt32(std::string pszFieldName, int index, int32_t value) +{ + GETCHECK_FIELD(); + CHECK_FIELD_TYPE_VOID(INT32); + CHECK_FIELD_REPEATED(); + CHECK_REPEATED_ELEMENT_VOID(index); + + this->msgBuffer->GetReflection()->SetRepeatedInt32(this->msgBuffer, field, index, value); +} +void UserMessage::AddInt32(std::string pszFieldName, int32_t value) +{ + GETCHECK_FIELD(); + CHECK_FIELD_TYPE_VOID(INT32); + CHECK_FIELD_REPEATED(); + + this->msgBuffer->GetReflection()->AddInt32(this->msgBuffer, field, value); +} +int64_t UserMessage::GetInt64(std::string pszFieldName) +{ + GETCHECK_FIELD(0); + CHECK_FIELD_TYPE(INT64, 0); + CHECK_FIELD_NOT_REPEATED(0); + + return this->msgBuffer->GetReflection()->GetInt64(*this->msgBuffer, field); +} +void UserMessage::SetInt64(std::string pszFieldName, int64_t value) +{ + GETCHECK_FIELD(); + CHECK_FIELD_TYPE_VOID(INT64); + CHECK_FIELD_NOT_REPEATED(); + + this->msgBuffer->GetReflection()->SetInt64(this->msgBuffer, field, value); +} +int64_t UserMessage::GetRepeatedInt64(std::string pszFieldName, int index) +{ + GETCHECK_FIELD(0); + CHECK_FIELD_TYPE(INT64, 0); + CHECK_FIELD_REPEATED(0); + CHECK_REPEATED_ELEMENT(index, 0); + + return this->msgBuffer->GetReflection()->GetRepeatedInt64(*this->msgBuffer, field, index); +} +void UserMessage::SetRepeatedInt64(std::string pszFieldName, int index, int64_t value) +{ + GETCHECK_FIELD(); + CHECK_FIELD_TYPE_VOID(INT64); + CHECK_FIELD_REPEATED(); + CHECK_REPEATED_ELEMENT_VOID(index); + + this->msgBuffer->GetReflection()->SetRepeatedInt64(this->msgBuffer, field, index, value); +} +void UserMessage::AddInt64(std::string pszFieldName, int64_t value) +{ + GETCHECK_FIELD(); + CHECK_FIELD_TYPE_VOID(INT64); + CHECK_FIELD_REPEATED(); + + this->msgBuffer->GetReflection()->AddInt64(this->msgBuffer, field, value); +} +uint32_t UserMessage::GetUInt32(std::string pszFieldName) +{ + GETCHECK_FIELD(0); + CHECK_FIELD_TYPE(UINT32, 0); + CHECK_FIELD_NOT_REPEATED(0); + + return this->msgBuffer->GetReflection()->GetUInt32(*this->msgBuffer, field); +} +void UserMessage::SetUInt32(std::string pszFieldName, uint32_t value) +{ + GETCHECK_FIELD(); + CHECK_FIELD_TYPE_VOID(UINT32); + CHECK_FIELD_NOT_REPEATED(); + + this->msgBuffer->GetReflection()->SetUInt32(this->msgBuffer, field, value); +} +uint32_t UserMessage::GetRepeatedUInt32(std::string pszFieldName, int index) +{ + GETCHECK_FIELD(0); + CHECK_FIELD_TYPE(UINT32, 0); + CHECK_FIELD_REPEATED(0); + CHECK_REPEATED_ELEMENT(index, 0); + + return this->msgBuffer->GetReflection()->GetRepeatedUInt32(*this->msgBuffer, field, index); +} +void UserMessage::SetRepeatedUInt32(std::string pszFieldName, int index, uint32_t value) +{ + GETCHECK_FIELD(); + CHECK_FIELD_TYPE_VOID(UINT32); + CHECK_FIELD_REPEATED(); + CHECK_REPEATED_ELEMENT_VOID(index); + + this->msgBuffer->GetReflection()->SetRepeatedUInt32(this->msgBuffer, field, index, value); +} +void UserMessage::AddUInt32(std::string pszFieldName, uint32_t value) +{ + GETCHECK_FIELD(); + CHECK_FIELD_TYPE_VOID(UINT32); + CHECK_FIELD_REPEATED(); + + this->msgBuffer->GetReflection()->AddUInt32(this->msgBuffer, field, value); +} +uint64_t UserMessage::GetUInt64(std::string pszFieldName) +{ + GETCHECK_FIELD(0); + CHECK_FIELD_TYPE(UINT64, 0); + CHECK_FIELD_NOT_REPEATED(0); + + return this->msgBuffer->GetReflection()->GetUInt64(*this->msgBuffer, field); +} +void UserMessage::SetUInt64(std::string pszFieldName, uint64_t value) +{ + GETCHECK_FIELD(); + CHECK_FIELD_TYPE_VOID(UINT64); + CHECK_FIELD_NOT_REPEATED(); + + this->msgBuffer->GetReflection()->SetUInt64(this->msgBuffer, field, value); +} +uint64_t UserMessage::GetRepeatedUInt64(std::string pszFieldName, int index) +{ + GETCHECK_FIELD(0); + CHECK_FIELD_TYPE(UINT64, 0); + CHECK_FIELD_REPEATED(0); + CHECK_REPEATED_ELEMENT(index, 0); + + return this->msgBuffer->GetReflection()->GetRepeatedUInt64(*this->msgBuffer, field, index); +} +void UserMessage::SetRepeatedUInt64(std::string pszFieldName, int index, uint64_t value) +{ + GETCHECK_FIELD(); + CHECK_FIELD_TYPE_VOID(UINT64); + CHECK_FIELD_REPEATED(); + CHECK_REPEATED_ELEMENT_VOID(index); + + this->msgBuffer->GetReflection()->SetRepeatedUInt64(this->msgBuffer, field, index, value); +} +void UserMessage::AddUInt64(std::string pszFieldName, uint64_t value) +{ + GETCHECK_FIELD(); + CHECK_FIELD_TYPE_VOID(UINT64); + CHECK_FIELD_REPEATED(); + + this->msgBuffer->GetReflection()->AddUInt64(this->msgBuffer, field, value); +} +int64_t UserMessage::GetInt64OrUnsigned(std::string pszFieldName) +{ + GETCHECK_FIELD(0); + CHECK_FIELD_TYPE2(INT64, UINT64, 0); + CHECK_FIELD_NOT_REPEATED(0); + + if (fieldType == google::protobuf::FieldDescriptor::CPPTYPE_UINT64) + return (int64_t)this->msgBuffer->GetReflection()->GetUInt64(*this->msgBuffer, field); + else + return this->msgBuffer->GetReflection()->GetInt64(*this->msgBuffer, field); +} +void UserMessage::SetInt64OrUnsigned(std::string pszFieldName, int64_t value) +{ + GETCHECK_FIELD(); + CHECK_FIELD_TYPE2_VOID(INT64, UINT64); + CHECK_FIELD_NOT_REPEATED(); + + if (fieldType == google::protobuf::FieldDescriptor::CPPTYPE_UINT64) + { + this->msgBuffer->GetReflection()->SetUInt64(this->msgBuffer, field, (uint64_t)value); + } + else + { + this->msgBuffer->GetReflection()->SetInt64(this->msgBuffer, field, value); + } +} +int64_t UserMessage::GetRepeatedInt64OrUnsigned(std::string pszFieldName, int index) +{ + GETCHECK_FIELD(0); + CHECK_FIELD_TYPE2(INT64, UINT64, 0); + CHECK_FIELD_REPEATED(0); + CHECK_REPEATED_ELEMENT(index, 0); + + if (fieldType == google::protobuf::FieldDescriptor::CPPTYPE_UINT64) + return (int64_t)this->msgBuffer->GetReflection()->GetRepeatedUInt64(*this->msgBuffer, field, index); + else + return this->msgBuffer->GetReflection()->GetRepeatedInt64(*this->msgBuffer, field, index); +} +void UserMessage::SetRepeatedInt64OrUnsigned(std::string pszFieldName, int index, int64_t value) +{ + GETCHECK_FIELD(); + CHECK_FIELD_TYPE2_VOID(INT64, UINT64); + CHECK_FIELD_REPEATED(); + CHECK_REPEATED_ELEMENT_VOID(index); + + if (fieldType == google::protobuf::FieldDescriptor::CPPTYPE_UINT64) + { + this->msgBuffer->GetReflection()->SetRepeatedUInt64(this->msgBuffer, field, index, (uint64_t)value); + } + else + { + this->msgBuffer->GetReflection()->SetRepeatedInt64(this->msgBuffer, field, index, value); + } +} +void UserMessage::AddInt64OrUnsigned(std::string pszFieldName, int64_t value) +{ + GETCHECK_FIELD(); + CHECK_FIELD_TYPE2_VOID(INT64, UINT64); + CHECK_FIELD_REPEATED(); + + if (fieldType == google::protobuf::FieldDescriptor::CPPTYPE_UINT64) + { + this->msgBuffer->GetReflection()->AddUInt64(this->msgBuffer, field, (uint64_t)value); + } + else + { + this->msgBuffer->GetReflection()->AddInt64(this->msgBuffer, field, value); + } +} +bool UserMessage::GetBool(std::string pszFieldName) +{ + GETCHECK_FIELD(false); + CHECK_FIELD_TYPE(BOOL, false); + CHECK_FIELD_NOT_REPEATED(false); + + return this->msgBuffer->GetReflection()->GetBool(*this->msgBuffer, field); +} +void UserMessage::SetBool(std::string pszFieldName, bool value) +{ + GETCHECK_FIELD(); + CHECK_FIELD_TYPE_VOID(BOOL); + CHECK_FIELD_NOT_REPEATED(); + + this->msgBuffer->GetReflection()->SetBool(this->msgBuffer, field, value); +} +bool UserMessage::GetRepeatedBool(std::string pszFieldName, int index) +{ + GETCHECK_FIELD(false); + CHECK_FIELD_TYPE(BOOL, false); + CHECK_FIELD_REPEATED(false); + CHECK_REPEATED_ELEMENT(index, false); + + return this->msgBuffer->GetReflection()->GetRepeatedBool(*this->msgBuffer, field, index); +} +void UserMessage::SetRepeatedBool(std::string pszFieldName, int index, bool value) +{ + GETCHECK_FIELD(); + CHECK_FIELD_TYPE_VOID(BOOL); + CHECK_FIELD_REPEATED(); + CHECK_REPEATED_ELEMENT_VOID(index); + + this->msgBuffer->GetReflection()->SetRepeatedBool(this->msgBuffer, field, index, value); +} +void UserMessage::AddBool(std::string pszFieldName, bool value) +{ + GETCHECK_FIELD(); + CHECK_FIELD_TYPE_VOID(BOOL); + CHECK_FIELD_REPEATED(); + + this->msgBuffer->GetReflection()->AddBool(this->msgBuffer, field, value); +} +float UserMessage::GetFloat(std::string pszFieldName) +{ + GETCHECK_FIELD(0); + CHECK_FIELD_TYPE(FLOAT, 0); + CHECK_FIELD_NOT_REPEATED(0); + + return this->msgBuffer->GetReflection()->GetFloat(*this->msgBuffer, field); +} +void UserMessage::SetFloat(std::string pszFieldName, float value) +{ + GETCHECK_FIELD(); + CHECK_FIELD_TYPE_VOID(FLOAT); + CHECK_FIELD_NOT_REPEATED(); + + this->msgBuffer->GetReflection()->SetFloat(this->msgBuffer, field, value); +} +float UserMessage::GetRepeatedFloat(std::string pszFieldName, int index) +{ + GETCHECK_FIELD(0); + CHECK_FIELD_TYPE(FLOAT, 0); + CHECK_FIELD_REPEATED(0); + CHECK_REPEATED_ELEMENT(index, 0); + + return this->msgBuffer->GetReflection()->GetRepeatedFloat(*this->msgBuffer, field, index); +} +void UserMessage::SetRepeatedFloat(std::string pszFieldName, int index, float value) +{ + GETCHECK_FIELD(); + CHECK_FIELD_TYPE_VOID(FLOAT); + CHECK_FIELD_REPEATED(); + CHECK_REPEATED_ELEMENT_VOID(index); + + this->msgBuffer->GetReflection()->SetRepeatedFloat(this->msgBuffer, field, index, value); +} +void UserMessage::AddFloat(std::string pszFieldName, float value) +{ + GETCHECK_FIELD(); + CHECK_FIELD_TYPE_VOID(FLOAT); + CHECK_FIELD_REPEATED(); + + this->msgBuffer->GetReflection()->AddFloat(this->msgBuffer, field, value); +} +double UserMessage::GetDouble(std::string pszFieldName) +{ + GETCHECK_FIELD(0); + CHECK_FIELD_TYPE(DOUBLE, 0); + CHECK_FIELD_NOT_REPEATED(0); + + return this->msgBuffer->GetReflection()->GetDouble(*this->msgBuffer, field); +} +void UserMessage::SetDouble(std::string pszFieldName, double value) +{ + GETCHECK_FIELD(); + CHECK_FIELD_TYPE_VOID(DOUBLE); + CHECK_FIELD_NOT_REPEATED(); + + this->msgBuffer->GetReflection()->SetDouble(this->msgBuffer, field, value); +} +double UserMessage::GetRepeatedDouble(std::string pszFieldName, int index) +{ + GETCHECK_FIELD(0); + CHECK_FIELD_TYPE(DOUBLE, 0); + CHECK_FIELD_REPEATED(0); + CHECK_REPEATED_ELEMENT(index, 0); + + return this->msgBuffer->GetReflection()->GetRepeatedDouble(*this->msgBuffer, field, index); +} +void UserMessage::SetRepeatedDouble(std::string pszFieldName, int index, double value) +{ + GETCHECK_FIELD(); + CHECK_FIELD_TYPE_VOID(DOUBLE); + CHECK_FIELD_REPEATED(); + CHECK_REPEATED_ELEMENT_VOID(index); + + this->msgBuffer->GetReflection()->SetRepeatedDouble(this->msgBuffer, field, index, value); +} +void UserMessage::AddDouble(std::string pszFieldName, double value) +{ + GETCHECK_FIELD(); + CHECK_FIELD_TYPE_VOID(DOUBLE); + CHECK_FIELD_REPEATED(); + + this->msgBuffer->GetReflection()->AddDouble(this->msgBuffer, field, value); +} +float UserMessage::GetFloatOrDouble(std::string pszFieldName) +{ + GETCHECK_FIELD(0); + CHECK_FIELD_TYPE2(FLOAT, DOUBLE, 0); + CHECK_FIELD_NOT_REPEATED(0); + + if (fieldType == google::protobuf::FieldDescriptor::CPPTYPE_DOUBLE) + return (float)this->msgBuffer->GetReflection()->GetDouble(*this->msgBuffer, field); + else + return this->msgBuffer->GetReflection()->GetFloat(*this->msgBuffer, field); +} +void UserMessage::SetFloatOrDouble(std::string pszFieldName, float value) +{ + GETCHECK_FIELD(); + CHECK_FIELD_TYPE2_VOID(FLOAT, DOUBLE); + CHECK_FIELD_NOT_REPEATED(); + + if (fieldType == google::protobuf::FieldDescriptor::CPPTYPE_DOUBLE) + this->msgBuffer->GetReflection()->SetDouble(this->msgBuffer, field, (double)value); + else + this->msgBuffer->GetReflection()->SetFloat(this->msgBuffer, field, value); +} +float UserMessage::GetRepeatedFloatOrDouble(std::string pszFieldName, int index) +{ + GETCHECK_FIELD(0); + CHECK_FIELD_TYPE2(FLOAT, DOUBLE, 0); + CHECK_FIELD_REPEATED(0); + CHECK_REPEATED_ELEMENT(index, 0); + + if (fieldType == google::protobuf::FieldDescriptor::CPPTYPE_DOUBLE) + return (float)this->msgBuffer->GetReflection()->GetRepeatedDouble(*this->msgBuffer, field, index); + else + return this->msgBuffer->GetReflection()->GetRepeatedFloat(*this->msgBuffer, field, index); +} +void UserMessage::SetRepeatedFloatOrDouble(std::string pszFieldName, int index, float value) +{ + GETCHECK_FIELD(); + CHECK_FIELD_TYPE2_VOID(FLOAT, DOUBLE); + CHECK_FIELD_REPEATED(); + CHECK_REPEATED_ELEMENT_VOID(index); + + if (fieldType == google::protobuf::FieldDescriptor::CPPTYPE_DOUBLE) + this->msgBuffer->GetReflection()->SetRepeatedDouble(this->msgBuffer, field, index, (double)value); + else + this->msgBuffer->GetReflection()->SetRepeatedFloat(this->msgBuffer, field, index, value); +} +void UserMessage::AddFloatOrDouble(std::string pszFieldName, float value) +{ + GETCHECK_FIELD(); + CHECK_FIELD_TYPE2_VOID(FLOAT, DOUBLE); + CHECK_FIELD_REPEATED(); + + if (fieldType == google::protobuf::FieldDescriptor::CPPTYPE_DOUBLE) + this->msgBuffer->GetReflection()->AddDouble(this->msgBuffer, field, (double)value); + else + this->msgBuffer->GetReflection()->AddFloat(this->msgBuffer, field, value); +} +std::string UserMessage::GetString(std::string pszFieldName) +{ + GETCHECK_FIELD(""); + CHECK_FIELD_TYPE(STRING, ""); + CHECK_FIELD_NOT_REPEATED(""); + + return this->msgBuffer->GetReflection()->GetString(*this->msgBuffer, field); +} +void UserMessage::SetString(std::string pszFieldName, const char* value) +{ + GETCHECK_FIELD(); + CHECK_FIELD_TYPE_VOID(STRING); + CHECK_FIELD_NOT_REPEATED(); + + this->msgBuffer->GetReflection()->SetString(this->msgBuffer, field, value); +} +std::string UserMessage::GetRepeatedString(std::string pszFieldName, int index) +{ + GETCHECK_FIELD(""); + CHECK_FIELD_TYPE(STRING, ""); + CHECK_FIELD_REPEATED(""); + CHECK_REPEATED_ELEMENT(index, ""); + + return this->msgBuffer->GetReflection()->GetRepeatedString(*this->msgBuffer, field, index); +} +void UserMessage::SetRepeatedString(std::string pszFieldName, int index, const char* value) +{ + GETCHECK_FIELD(); + CHECK_FIELD_TYPE_VOID(STRING); + CHECK_FIELD_REPEATED(); + CHECK_REPEATED_ELEMENT_VOID(index); + + this->msgBuffer->GetReflection()->SetRepeatedString(this->msgBuffer, field, index, value); +} +void UserMessage::AddString(std::string pszFieldName, const char* value) +{ + GETCHECK_FIELD(); + CHECK_FIELD_TYPE_VOID(STRING); + CHECK_FIELD_REPEATED(); + + this->msgBuffer->GetReflection()->AddString(this->msgBuffer, field, value); +} +Color UserMessage::GetColor(std::string pszFieldName) +{ + GETCHECK_FIELD(Color(0, 0, 0, 0)); + CHECK_FIELD_TYPE(MESSAGE, Color(0, 0, 0, 0)); + CHECK_FIELD_NOT_REPEATED(Color(0, 0, 0, 0)); + + const CMsgRGBA* msgRGBA = (const CMsgRGBA*)&this->msgBuffer->GetReflection()->GetMessage(*this->msgBuffer, field); + + return Color(msgRGBA->r(), msgRGBA->g(), msgRGBA->b(), msgRGBA->a()); +} +void UserMessage::SetColor(std::string pszFieldName, const Color& value) +{ + GETCHECK_FIELD(); + CHECK_FIELD_TYPE_VOID(MESSAGE); + CHECK_FIELD_NOT_REPEATED(); + + CMsgRGBA* msgRGBA = (CMsgRGBA*)this->msgBuffer->GetReflection()->MutableMessage(this->msgBuffer, field); + msgRGBA->set_r(value.r()); + msgRGBA->set_g(value.g()); + msgRGBA->set_b(value.b()); + msgRGBA->set_a(value.a()); +} +Color UserMessage::GetRepeatedColor(std::string pszFieldName, int index) +{ + GETCHECK_FIELD(Color(0, 0, 0, 0)); + CHECK_FIELD_TYPE(MESSAGE, Color(0, 0, 0, 0)); + CHECK_FIELD_REPEATED(Color(0, 0, 0, 0)); + CHECK_REPEATED_ELEMENT(index, Color(0, 0, 0, 0)); + + const CMsgRGBA& msgRGBA = (const CMsgRGBA&)this->msgBuffer->GetReflection()->GetRepeatedMessage(*this->msgBuffer, field, index); + return Color(msgRGBA.r(), msgRGBA.g(), msgRGBA.b(), msgRGBA.a()); +} +void UserMessage::SetRepeatedColor(std::string pszFieldName, int index, const Color& value) +{ + GETCHECK_FIELD(); + CHECK_FIELD_TYPE_VOID(MESSAGE); + CHECK_FIELD_REPEATED(); + CHECK_REPEATED_ELEMENT_VOID(index); + + CMsgRGBA* msgRGBA = (CMsgRGBA*)this->msgBuffer->GetReflection()->MutableRepeatedMessage(this->msgBuffer, field, index); + msgRGBA->set_r(value.r()); + msgRGBA->set_g(value.g()); + msgRGBA->set_b(value.b()); + msgRGBA->set_a(value.a()); +} +void UserMessage::AddColor(std::string pszFieldName, const Color& value) +{ + GETCHECK_FIELD(); + CHECK_FIELD_TYPE_VOID(MESSAGE); + CHECK_FIELD_REPEATED(); + + CMsgRGBA* msgRGBA = (CMsgRGBA*)this->msgBuffer->GetReflection()->AddMessage(this->msgBuffer, field); + msgRGBA->set_r(value.r()); + msgRGBA->set_g(value.g()); + msgRGBA->set_b(value.b()); + msgRGBA->set_a(value.a()); +} +Vector2D UserMessage::GetVector2D(std::string pszFieldName) +{ + GETCHECK_FIELD(Vector2D(0, 0)); + CHECK_FIELD_TYPE(MESSAGE, Vector2D(0, 0)); + CHECK_FIELD_NOT_REPEATED(Vector2D(0, 0)); + + const CMsgVector2D* msgVec2d = (const CMsgVector2D*)&this->msgBuffer->GetReflection()->GetMessage(*this->msgBuffer, field); + return Vector2D(msgVec2d->x(), msgVec2d->y()); +} +void UserMessage::SetVector2D(std::string pszFieldName, Vector2D& vec) +{ + GETCHECK_FIELD(); + CHECK_FIELD_TYPE_VOID(MESSAGE); + CHECK_FIELD_NOT_REPEATED(); + + CMsgVector2D* msgVec2d = (CMsgVector2D*)this->msgBuffer->GetReflection()->MutableMessage(this->msgBuffer, field); + msgVec2d->set_x(vec.x); + msgVec2d->set_y(vec.y); +} +Vector2D UserMessage::GetRepeatedVector2D(std::string pszFieldName, int index) +{ + GETCHECK_FIELD(Vector2D(0, 0)); + CHECK_FIELD_TYPE(MESSAGE, Vector2D(0, 0)); + CHECK_FIELD_REPEATED(Vector2D(0, 0)); + CHECK_REPEATED_ELEMENT(index, Vector2D(0, 0)); + + const CMsgVector2D& msgVec2d = (const CMsgVector2D&)this->msgBuffer->GetReflection()->GetRepeatedMessage(*this->msgBuffer, field, index); + return Vector2D(msgVec2d.x(), msgVec2d.y()); +} +void UserMessage::SetRepeatedVector2D(std::string pszFieldName, int index, Vector2D& vec) +{ + GETCHECK_FIELD(); + CHECK_FIELD_TYPE_VOID(MESSAGE); + CHECK_FIELD_REPEATED(); + CHECK_REPEATED_ELEMENT_VOID(index); + + CMsgVector2D* msgVec2d = (CMsgVector2D*)this->msgBuffer->GetReflection()->MutableRepeatedMessage(this->msgBuffer, field, index); + msgVec2d->set_x(vec.x); + msgVec2d->set_y(vec.y); +} +void UserMessage::AddVector2D(std::string pszFieldName, Vector2D& vec) +{ + GETCHECK_FIELD(); + CHECK_FIELD_TYPE_VOID(MESSAGE); + CHECK_FIELD_REPEATED(); + + CMsgVector2D* msgVec2d = (CMsgVector2D*)this->msgBuffer->GetReflection()->AddMessage(this->msgBuffer, field); + msgVec2d->set_x(vec.x); + msgVec2d->set_y(vec.y); +} +Vector UserMessage::GetVector(std::string pszFieldName) +{ + GETCHECK_FIELD(Vector(0, 0, 0)); + CHECK_FIELD_TYPE(MESSAGE, Vector(0, 0, 0)); + CHECK_FIELD_NOT_REPEATED(Vector(0, 0, 0)); + + const CMsgVector* msgVec = (const CMsgVector*)&this->msgBuffer->GetReflection()->GetMessage(*this->msgBuffer, field); + return Vector(msgVec->x(), msgVec->y(), msgVec->z()); +} +void UserMessage::SetVector(std::string pszFieldName, Vector& vec) +{ + GETCHECK_FIELD(); + CHECK_FIELD_TYPE_VOID(MESSAGE); + CHECK_FIELD_NOT_REPEATED(); + + CMsgVector* msgVec = (CMsgVector*)this->msgBuffer->GetReflection()->MutableMessage(this->msgBuffer, field); + msgVec->set_x(vec.x); + msgVec->set_y(vec.y); + msgVec->set_z(vec.z); +} +Vector UserMessage::GetRepeatedVector(std::string pszFieldName, int index) +{ + GETCHECK_FIELD(Vector(0, 0, 0)); + CHECK_FIELD_TYPE(MESSAGE, Vector(0, 0, 0)); + CHECK_FIELD_REPEATED(Vector(0, 0, 0)); + CHECK_REPEATED_ELEMENT(index, Vector(0, 0, 0)); + + const CMsgVector& msgVec = (const CMsgVector&)this->msgBuffer->GetReflection()->GetRepeatedMessage(*this->msgBuffer, field, index); + return Vector(msgVec.x(), msgVec.y(), msgVec.z()); +} +void UserMessage::SetRepeatedVector(std::string pszFieldName, int index, Vector& vec) +{ + GETCHECK_FIELD(); + CHECK_FIELD_TYPE_VOID(MESSAGE); + CHECK_FIELD_REPEATED(); + CHECK_REPEATED_ELEMENT_VOID(index); + + CMsgVector* msgVec = (CMsgVector*)this->msgBuffer->GetReflection()->MutableRepeatedMessage(this->msgBuffer, field, index); + msgVec->set_x(vec.x); + msgVec->set_y(vec.y); + msgVec->set_z(vec.z); +} +void UserMessage::AddVector(std::string pszFieldName, Vector& vec) +{ + GETCHECK_FIELD(); + CHECK_FIELD_TYPE_VOID(MESSAGE); + CHECK_FIELD_REPEATED(); + + CMsgVector* msgVec = (CMsgVector*)this->msgBuffer->GetReflection()->AddMessage(this->msgBuffer, field); + msgVec->set_x(vec.x); + msgVec->set_y(vec.y); + msgVec->set_z(vec.z); +} +QAngle UserMessage::GetQAngle(std::string pszFieldName) +{ + GETCHECK_FIELD(QAngle(0, 0, 0)); + CHECK_FIELD_TYPE(MESSAGE, QAngle(0, 0, 0)); + CHECK_FIELD_NOT_REPEATED(QAngle(0, 0, 0)); + + const CMsgQAngle* msgAng = (const CMsgQAngle*)&this->msgBuffer->GetReflection()->GetMessage(*this->msgBuffer, field); + return QAngle(msgAng->x(), msgAng->y(), msgAng->z()); +} +void UserMessage::SetQAngle(std::string pszFieldName, QAngle& vec) +{ + GETCHECK_FIELD(); + CHECK_FIELD_TYPE_VOID(MESSAGE); + CHECK_FIELD_NOT_REPEATED(); + + CMsgQAngle* msgAng = (CMsgQAngle*)this->msgBuffer->GetReflection()->MutableMessage(this->msgBuffer, field); + msgAng->set_x(vec.x); + msgAng->set_y(vec.y); + msgAng->set_z(vec.z); +} +QAngle UserMessage::GetRepeatedQAngle(std::string pszFieldName, int index) +{ + GETCHECK_FIELD(QAngle(0, 0, 0)); + CHECK_FIELD_TYPE(MESSAGE, QAngle(0, 0, 0)); + CHECK_FIELD_REPEATED(QAngle(0, 0, 0)); + CHECK_REPEATED_ELEMENT(index, QAngle(0, 0, 0)); + + const CMsgQAngle& msgAng = (const CMsgQAngle&)this->msgBuffer->GetReflection()->GetRepeatedMessage(*this->msgBuffer, field, index); + return QAngle(msgAng.x(), msgAng.y(), msgAng.z()); +} +void UserMessage::SetRepeatedQAngle(std::string pszFieldName, int index, QAngle& vec) +{ + GETCHECK_FIELD(); + CHECK_FIELD_TYPE_VOID(MESSAGE); + CHECK_FIELD_REPEATED(); + CHECK_REPEATED_ELEMENT_VOID(index); + + CMsgQAngle* msgAng = (CMsgQAngle*)this->msgBuffer->GetReflection()->MutableRepeatedMessage(this->msgBuffer, field, index); + msgAng->set_x(vec.x); + msgAng->set_y(vec.y); + msgAng->set_z(vec.z); +} +void UserMessage::AddQAngle(std::string pszFieldName, QAngle& vec) +{ + GETCHECK_FIELD(); + CHECK_FIELD_TYPE_VOID(MESSAGE); + CHECK_FIELD_REPEATED(); + + CMsgQAngle* msgAng = (CMsgQAngle*)this->msgBuffer->GetReflection()->AddMessage(this->msgBuffer, field); + msgAng->set_x(vec.x); + msgAng->set_y(vec.y); + msgAng->set_z(vec.z); +} + +UserMessage UserMessage::GetUMessage(std::string pszFieldName) +{ + GETCHECK_FIELD(UserMessage("")); + CHECK_FIELD_TYPE(MESSAGE, UserMessage("")); + CHECK_FIELD_NOT_REPEATED(UserMessage("")); + + auto msg = this->msgBuffer->GetReflection()->MutableMessage(this->msgBuffer, field); + return UserMessage(msg); +} + +UserMessage UserMessage::GetRepeatedMessage(std::string pszFieldName, int index) +{ + GETCHECK_FIELD(UserMessage("")); + CHECK_FIELD_TYPE(MESSAGE, UserMessage("")); + CHECK_FIELD_REPEATED(UserMessage("")); + CHECK_REPEATED_ELEMENT(index, UserMessage("")); + + return UserMessage(this->msgBuffer->GetReflection()->MutableRepeatedMessage(this->msgBuffer, field, index)); +} + +UserMessage UserMessage::AddMessage(std::string pszFieldName) +{ + GETCHECK_FIELD(UserMessage("")); + CHECK_FIELD_TYPE(MESSAGE, UserMessage("")); + CHECK_FIELD_REPEATED(UserMessage("")); + + return UserMessage(this->msgBuffer->GetReflection()->AddMessage(this->msgBuffer, field)); +} + +void UserMessage::RemoveRepeatedFieldValue(std::string pszFieldName, int index) +{ + GETCHECK_FIELD(); + CHECK_FIELD_REPEATED(); + CHECK_REPEATED_ELEMENT_VOID(index); + + const google::protobuf::Reflection* pReflection = this->msgBuffer->GetReflection(); + for (int i = index; i < elemCount - 1; ++i) + pReflection->SwapElements(this->msgBuffer, field, i, i + 1); + + pReflection->RemoveLast(this->msgBuffer, field); +} + +int UserMessage::GetRepeatedFieldCount(std::string pszFieldName) +{ + const google::protobuf::FieldDescriptor* field = this->msgBuffer->GetDescriptor()->FindFieldByName(pszFieldName); + if (!field) + return -1; + + if (field->label() != google::protobuf::FieldDescriptor::LABEL_REPEATED) + return -1; + + return this->msgBuffer->GetReflection()->FieldSize(*this->msgBuffer, field); +} + +void UserMessage::AddClient(int playerId) +{ + if (!this->clients) return; + + uint64_t newcls = *this->clients; + if (newcls & ((uint64_t)1 << playerId)) + newcls |= ((uint64_t)1 << playerId); + + memcpy(this->clients, &newcls, sizeof(newcls)); +} + +void UserMessage::RemoveClient(int playerId) +{ + if (!this->clients) return; + + uint64_t newcls = *this->clients; + if (newcls & ((uint64_t)1 << playerId)) + newcls &= ~((uint64_t)1 << playerId); + + memcpy(this->clients, &newcls, sizeof(newcls)); +} + +void UserMessage::ClearClients() +{ + if (!this->clients) return; + + uint64_t newcls = 0; + memcpy(this->clients, &newcls, sizeof(newcls)); +} + +void UserMessage::AddClients() +{ + if (!this->clients) return; + + uint64_t newcls = 0; + for (int i = 0; i < 64; i++) + newcls |= ((uint64_t)1 << i); + + memcpy(this->clients, &newcls, sizeof(newcls)); +} + +std::vector<int> UserMessage::GetClients() +{ + std::vector<int> clns; + if (!this->clients) return clns; + + uint64_t cls = *this->clients; + for (int i = 0; i < 64; i++) + if (cls & ((uint64_t)1 << i)) + clns.push_back(i); + + return clns; +} + +void UserMessage::SendToPlayer(int playerId) +{ + if (!this->internalMsg) + return; + + if (!this->msgBuffer) + return; + + CSingleRecipientFilter filter(playerId); + g_pGameEventSystem->PostEventAbstract(-1, false, &filter, this->internalMsg, this->msgBuffer, 0); +} + +void UserMessage::SendToAllPlayers() +{ + if (!this->internalMsg) + return; + + if (!this->msgBuffer) + return; + + CBroadcastRecipientFilter* filter = new CBroadcastRecipientFilter; + g_pGameEventSystem->PostEventAbstract(-1, false, filter, this->internalMsg, this->msgBuffer, 0); + delete filter; +} \ No newline at end of file diff --git a/src/network/usermessages/usermessage.h b/src/network/usermessages/usermessage.h new file mode 100644 index 000000000..2aa28907b --- /dev/null +++ b/src/network/usermessages/usermessage.h @@ -0,0 +1,132 @@ +#ifndef _network_messages_message_h +#define _network_messages_message_h + +#include <core/entrypoint.h> +#include <string> +#include <vector> + +#define INVALID_MESSAGE_ID -1 + +class UserMessage +{ +private: + int msgid = INVALID_MESSAGE_ID; + INetworkMessageInternal* internalMsg = nullptr; + uint64_t* clients = nullptr; + +public: + CNetMessagePB<google::protobuf::Message>* msgBuffer = nullptr; + + UserMessage(std::string msgname); + UserMessage(INetworkMessageInternal* msg, CNetMessage* data, uint64_t* cls); + UserMessage(google::protobuf::Message* msg); + ~UserMessage(); + + bool IsValidMessage(); + std::string GetMessageName(); + int GetMessageID(); + + bool HasField(std::string pszFieldName); + + int32_t GetInt32(std::string pszFieldName); + void SetInt32(std::string pszFieldName, int32_t value); + int32_t GetRepeatedInt32(std::string pszFieldName, int index); + void SetRepeatedInt32(std::string pszFieldName, int index, int32_t value); + void AddInt32(std::string pszFieldName, int32_t value); + + int64_t GetInt64(std::string pszFieldName); + void SetInt64(std::string pszFieldName, int64_t value); + int64_t GetRepeatedInt64(std::string pszFieldName, int index); + void SetRepeatedInt64(std::string pszFieldName, int index, int64_t value); + void AddInt64(std::string pszFieldName, int64_t value); + + uint32_t GetUInt32(std::string pszFieldName); + void SetUInt32(std::string pszFieldName, uint32_t value); + uint32_t GetRepeatedUInt32(std::string pszFieldName, int index); + void SetRepeatedUInt32(std::string pszFieldName, int index, uint32_t value); + void AddUInt32(std::string pszFieldName, uint32_t value); + + uint64_t GetUInt64(std::string pszFieldName); + void SetUInt64(std::string pszFieldName, uint64_t value); + uint64_t GetRepeatedUInt64(std::string pszFieldName, int index); + void SetRepeatedUInt64(std::string pszFieldName, int index, uint64_t value); + void AddUInt64(std::string pszFieldName, uint64_t value); + + int64_t GetInt64OrUnsigned(std::string pszFieldName); + void SetInt64OrUnsigned(std::string pszFieldName, int64_t value); + int64_t GetRepeatedInt64OrUnsigned(std::string pszFieldName, int index); + void SetRepeatedInt64OrUnsigned(std::string pszFieldName, int index, int64_t value); + void AddInt64OrUnsigned(std::string pszFieldName, int64_t value); + + bool GetBool(std::string pszFieldName); + void SetBool(std::string pszFieldName, bool value); + bool GetRepeatedBool(std::string pszFieldName, int index); + void SetRepeatedBool(std::string pszFieldName, int index, bool value); + void AddBool(std::string pszFieldName, bool value); + + float GetFloat(std::string pszFieldName); + void SetFloat(std::string pszFieldName, float value); + float GetRepeatedFloat(std::string pszFieldName, int index); + void SetRepeatedFloat(std::string pszFieldName, int index, float value); + void AddFloat(std::string pszFieldName, float value); + + double GetDouble(std::string pszFieldName); + void SetDouble(std::string pszFieldName, double value); + double GetRepeatedDouble(std::string pszFieldName, int index); + void SetRepeatedDouble(std::string pszFieldName, int index, double value); + void AddDouble(std::string pszFieldName, double value); + + float GetFloatOrDouble(std::string pszFieldName); + void SetFloatOrDouble(std::string pszFieldName, float value); + float GetRepeatedFloatOrDouble(std::string pszFieldName, int index); + void SetRepeatedFloatOrDouble(std::string pszFieldName, int index, float value); + void AddFloatOrDouble(std::string pszFieldName, float value); + + std::string GetString(std::string pszFieldName); + void SetString(std::string pszFieldName, const char* value); + std::string GetRepeatedString(std::string pszFieldName, int index); + void SetRepeatedString(std::string pszFieldName, int index, const char* value); + void AddString(std::string pszFieldName, const char* value); + + Color GetColor(std::string pszFieldName); + void SetColor(std::string pszFieldName, const Color& value); + Color GetRepeatedColor(std::string pszFieldName, int index); + void SetRepeatedColor(std::string pszFieldName, int index, const Color& value); + void AddColor(std::string pszFieldName, const Color& value); + + Vector2D GetVector2D(std::string pszFieldName); + void SetVector2D(std::string pszFieldName, Vector2D& vec); + Vector2D GetRepeatedVector2D(std::string pszFieldName, int index); + void SetRepeatedVector2D(std::string pszFieldName, int index, Vector2D& vec); + void AddVector2D(std::string pszFieldName, Vector2D& vec); + + Vector GetVector(std::string pszFieldName); + void SetVector(std::string pszFieldName, Vector& vec); + Vector GetRepeatedVector(std::string pszFieldName, int index); + void SetRepeatedVector(std::string pszFieldName, int index, Vector& vec); + void AddVector(std::string pszFieldName, Vector& vec); + + QAngle GetQAngle(std::string pszFieldName); + void SetQAngle(std::string pszFieldName, QAngle& vec); + QAngle GetRepeatedQAngle(std::string pszFieldName, int index); + void SetRepeatedQAngle(std::string pszFieldName, int index, QAngle& vec); + void AddQAngle(std::string pszFieldName, QAngle& vec); + + UserMessage GetUMessage(std::string pszFieldName); + UserMessage GetRepeatedMessage(std::string pszFieldName, int index); + UserMessage AddMessage(std::string pszFieldName); + + void RemoveRepeatedFieldValue(std::string pszFieldName, int index); + int GetRepeatedFieldCount(std::string pszFieldName); + + void AddClient(int playerId); + void RemoveClient(int playerId); + void ClearClients(); + void AddClients(); + std::vector<int> GetClients(); + + void SendToPlayer(int playerId); + void SendToAllPlayers(); +}; + +#endif \ No newline at end of file diff --git a/src/network/usermessages/usermessages.cpp b/src/network/usermessages/usermessages.cpp new file mode 100644 index 000000000..d3c72ff78 --- /dev/null +++ b/src/network/usermessages/usermessages.cpp @@ -0,0 +1,57 @@ +#include "usermessages.h" +#include "usermessage.h" + +#include <sdk/components/CServerSideClient.h> +#include <memory/gamedata/gamedata.h> +#include <utils/memory.h> +#include <plugins/manager.h> + +#include <dynlibutils/module.h> + +DynLibUtils::CModule DetermineModuleByLibrary(std::string library); + +SH_DECL_EXTERN8_void(IGameEventSystem, PostEventAbstract, SH_NOATTRIB, 0, CSplitScreenSlot, bool, int, const uint64*, INetworkMessageInternal*, const CNetMessage*, unsigned long, NetChannelBufType_t) +SH_DECL_MANUALHOOK2(FilterMessage, 0, 0, 0, bool, const CNetMessage*, INetChannel*); + +int hookID = -1; + +void UserMessages::Initialize() +{ + SH_ADD_HOOK_MEMFUNC(IGameEventSystem, PostEventAbstract, g_pGameEventSystem, this, &UserMessages::PostEvent, false); + + DynLibUtils::CModule eng = DetermineModuleByLibrary("engine2"); + void* serverSideClientVTable = FindVirtTable(&eng, "CServerSideClient", g_GameData.GetOffset("INetworkMessageProcessingPreFilter")); + + hookID = SH_ADD_MANUALDVPHOOK(FilterMessage, serverSideClientVTable, SH_MEMBER(this, &UserMessages::FilterMessage), false); +} + +bool UserMessages::FilterMessage(const CNetMessage* cMsg, INetChannel* netchan) +{ + auto client = META_IFACEPTR(CServerSideClient); + if (!client) RETURN_META_VALUE(MRES_IGNORED, true); + + UserMessage um(cMsg->GetNetMessage(), const_cast<CNetMessage*>(cMsg), (uint64_t*)0); + ClassData umobj({ { "um_ptr", &um } }, "UserMessage", nullptr); + auto result = g_pluginManager.ExecuteEvent("core", "OnUserMessageReceive", { client->GetPlayerSlot().Get(), &umobj }, {}); + if (result != EventResult::Continue) + RETURN_META_VALUE(MRES_SUPERCEDE, true); + + RETURN_META_VALUE(MRES_IGNORED, true); +} + +void UserMessages::Destroy() +{ + SH_REMOVE_HOOK_MEMFUNC(IGameEventSystem, PostEventAbstract, g_pGameEventSystem, this, &UserMessages::PostEvent, false); + + SH_REMOVE_HOOK_ID(hookID); + hookID = -1; +} + +void UserMessages::PostEvent(CSplitScreenSlot nSlot, bool bLocalOnly, int nClientCount, const uint64* clients, INetworkMessageInternal* pEvent, const CNetMessage* pData, unsigned long nSize, NetChannelBufType_t bufType) +{ + UserMessage um(pEvent, const_cast<CNetMessage*>(pData), (uint64_t*)(const_cast<uint64*>(clients))); + ClassData umobj({ { "um_ptr", &um } }, "UserMessage", nullptr); + + if (g_pluginManager.ExecuteEvent("core", "OnUserMessageSend", { &umobj, bufType == BUF_RELIABLE }, {}) == EventResult::Stop) + RETURN_META(MRES_SUPERCEDE); +} \ No newline at end of file diff --git a/src/network/usermessages/usermessages.h b/src/network/usermessages/usermessages.h new file mode 100644 index 000000000..1e66a9c2a --- /dev/null +++ b/src/network/usermessages/usermessages.h @@ -0,0 +1,15 @@ +#ifndef _usermessages_manager_h +#define _usermessages_manager_h + +#include <core/entrypoint.h> + +class UserMessages { +public: + void Initialize(); + void Destroy(); + + void PostEvent(CSplitScreenSlot nSlot, bool bLocalOnly, int nClientCount, const uint64* clients, INetworkMessageInternal* pEvent, const CNetMessage* pData, unsigned long nSize, NetChannelBufType_t bufType); + bool FilterMessage(const CNetMessage* cMsg, INetChannel* netchan); +}; + +#endif \ No newline at end of file diff --git a/src/plugins/manager.cpp b/src/plugins/manager.cpp new file mode 100644 index 000000000..8b36cba28 --- /dev/null +++ b/src/plugins/manager.cpp @@ -0,0 +1,220 @@ +#include "manager.h" + +#include <utils/utils.h> +#include <filesystem/files/files.h> +#include <extensions/manager.h> +#include <server/menus/MenuManager.h> +#include <swiftly-ext/core.h> + +bool alreadyStarted = false; + +bool PluginsManager::PluginExists(std::string plugin_name) +{ + return (pluginsMap.find(plugin_name) != pluginsMap.end()); +} + +void PluginsManager::LoadPlugins(std::string directory) +{ + std::string baseDir = "addons/swiftly/plugins" + directory; + if (!Files::ExistsPath(baseDir)) + Files::CreateDirectory(baseDir); + + std::vector<std::string> plugins = Files::FetchDirectories(baseDir); + for (std::string folder : plugins) + { + // Skips over disabled + if (folder.find("disabled") != std::string::npos) + continue; + + auto directory_name = explode(folder, WIN_LINUX("\\", "/")).back(); + + if (directory_name.find("[") != std::string::npos) + LoadPlugins(directory + "/" + directory_name); + else + { + folder = replace(folder, baseDir, ""); + std::string plugin_name = replace(folder, WIN_LINUX("\\", "/"), ""); + + pluginBasePaths[plugin_name] = baseDir; + + LoadPlugin(plugin_name); + } + } +} + +void PluginsManager::UnloadPlugins() +{ + std::vector<std::string> pluginNames; + for (PluginObject* plugin : pluginsList) + pluginNames.push_back(plugin->GetName()); + + for (std::string plugin_name : pluginNames) + UnloadPlugin(plugin_name); +} + +void PluginsManager::LoadPlugin(std::string plugin_name) +{ + if (PluginExists(plugin_name)) + return; + + std::vector<std::string> files = Files::FetchFileNames(pluginBasePaths[plugin_name] + "/" + plugin_name); + if (files.size() == 0) + return; + + ContextKinds ct; + + for (std::string file : files) + { + if (ends_with(file, ".lua")) + { + ct = ContextKinds::Lua; + break; + } + else if (ends_with(file, ".js")) + { + ct = ContextKinds::JavaScript; + break; + } + } + + if ((int)ct == 0) + { + PRINTF("We couldn't determine a kind for the following plugin: %s\n", plugin_name.c_str()); + return; + } + + pluginsList.push_back(new PluginObject(plugin_name, ct)); + pluginsMap.insert({ plugin_name, pluginsList.back() }); +} + +void PluginsManager::UnloadPlugin(std::string plugin_name) +{ + if (!PluginExists(plugin_name)) + return; + + auto plugin = pluginsMap.at(plugin_name); + + for (auto it = pluginsList.begin(); it != pluginsList.end(); ++it) + { + if ((*it)->GetName() == plugin_name) + pluginsList.erase(it); + } + + pluginsMap.erase(plugin_name); +} + +void PluginsManager::StartPlugins() +{ + for (PluginObject* plugin : pluginsList) + if (!StartPlugin(plugin->GetName())) + StopPlugin(plugin->GetName(), true); + + ExecuteEvent("core", "OnAllPluginsLoaded", std::vector<std::any>{}, {}); + alreadyStarted = true; + + for (auto extension : extManager.GetExtensionsList()) + if (extension->IsLoaded()) + extension->GetAPI()->AllPluginsLoaded(); +} + +EventResult PluginsManager::ExecuteEvent(std::string invokedBy, std::string eventName, std::vector<std::any> eventPayload, ClassData* eventObject) +{ + for (std::size_t i = 0; i < pluginsList.size(); i++) + { + EventResult result = pluginsList[i]->TriggerEvent(invokedBy, eventName, eventPayload, eventObject); + if (result != EventResult::Continue) + return result; + } + + return EventResult::Continue; +} + +EventResult PluginsManager::ExecuteEventJSON(std::string invokedBy, std::string eventName, std::string eventPayload, ClassData* eventObject) +{ + for (std::size_t i = 0; i < pluginsList.size(); i++) + { + EventResult result = pluginsList[i]->TriggerEventJSON(invokedBy, eventName, eventPayload, eventObject); + if (result != EventResult::Continue) + return result; + } + + return EventResult::Continue; +} + +void PluginsManager::StopPlugins(bool destroyStates) +{ + for (PluginObject* plugin : pluginsList) + StopPlugin(plugin->GetName(), destroyStates); +} + +bool PluginsManager::StartPlugin(std::string plugin_name) +{ + if (!PluginExists(plugin_name)) + return false; + + PluginObject* plugin = pluginsMap.at(plugin_name); + if (plugin->GetPluginState() == PluginState_t::Started) + return true; + + if (!plugin->LoadScriptingEnvironment()) + return false; + if (!plugin->ExecuteStart()) + return false; + plugin->SetPluginState(PluginState_t::Started); + + if (alreadyStarted) + { + plugin->TriggerEvent("core", "OnAllPluginsLoaded", std::vector<std::any>{}, {}); + } + + return true; +} + +void PluginsManager::StopPlugin(std::string plugin_name, bool destroyStates) +{ + if (!PluginExists(plugin_name)) + return; + + PluginObject* plugin = pluginsMap.at(plugin_name); + if (plugin->GetPluginState() == PluginState_t::Stopped) + return; + + if (!plugin->ExecuteStop()) + return; + + if (destroyStates) + { + plugin->DestroyScriptingEnvironment(); + plugin->SetPluginState(PluginState_t::Stopped); + } + g_MenuManager.UnregisterPluginMenus(plugin_name); +} + +PluginObject* PluginsManager::FetchPlugin(std::string name) +{ + if (!PluginExists(name)) + return nullptr; + + return pluginsMap[name]; +} + +std::vector<PluginObject*> PluginsManager::GetPluginsList() +{ + return pluginsList; +} + +std::string PluginsManager::GetPluginBasePath(std::string plugin_name) +{ + if (pluginBasePaths.find(plugin_name) == pluginBasePaths.end()) + return "addons/swiftly/plugins"; + return pluginBasePaths[plugin_name]; +} + +EXT_API int swiftly_TriggerEvent(const char* ext_name, const char* evName, void* args, void* eventReturn) +{ + ClassData data({ { "plugin_name", std::string(ext_name) } }, "Event", nullptr); + auto result = g_pluginManager.ExecuteEvent(ext_name, evName, *(std::vector<std::any>*)args, &data); + *reinterpret_cast<std::any*>(eventReturn) = data.GetData<std::any>("event_return"); + + return (int)result; +} \ No newline at end of file diff --git a/src/plugins/manager.h b/src/plugins/manager.h new file mode 100644 index 000000000..830daf8db --- /dev/null +++ b/src/plugins/manager.h @@ -0,0 +1,47 @@ +#ifndef _plugins_manager_h +#define _plugins_manager_h + +#include "object.h" + +#include <vector> +#include <string> +#include <map> +#include <optional> +#include <any> + +#include <types/EventResult.h> + +class PluginsManager +{ +private: + std::vector<PluginObject*> pluginsList; + std::map<std::string, PluginObject*> pluginsMap; + std::map<std::string, std::string> pluginBasePaths; +public: + std::string GetPluginBasePath(std::string plugin_name); + + bool PluginExists(std::string plugin_name); + + void LoadPlugins(std::string directory); + void UnloadPlugins(); + + void LoadPlugin(std::string plugin_name); + void UnloadPlugin(std::string plugin_name); + + void StartPlugins(); + void StopPlugins(bool destroyStates); + + bool StartPlugin(std::string plugin_name); + void StopPlugin(std::string plugin_name, bool destroyStates); + + PluginObject* FetchPlugin(std::string name); + + std::vector<PluginObject*> GetPluginsList(); + + EventResult ExecuteEvent(std::string invokedBy, std::string eventName, std::vector<std::any> eventPayload, ClassData* eventObject); + EventResult ExecuteEventJSON(std::string invokedBy, std::string eventName, std::string eventPayload, ClassData* eventObject); +}; + +extern PluginsManager g_pluginManager; + +#endif \ No newline at end of file diff --git a/src/plugins/object.cpp b/src/plugins/object.cpp new file mode 100644 index 000000000..7564a86fd --- /dev/null +++ b/src/plugins/object.cpp @@ -0,0 +1,381 @@ +#include "object.h" +#include "manager.h" + +#include <utils/common.h> +#include <utils/utils.h> +#include <filesystem/files/files.h> +#include <scripting/core.h> +#include <server/commands/manager.h> +#include <tools/crashreporter/callstack.h> +#include <tools/resourcemonitor/monitor.h> + +#include <extensions/manager.h> + +PluginObject::PluginObject(std::string m_name, ContextKinds m_kind) +{ + name = m_name; + kind = m_kind; +} + +PluginObject::~PluginObject() +{ + if (eventFunctionPtr) + { + delete eventFunctionPtr; + } +} + +void PluginObject::RegisterEventHandlerJSON(EValue* functionPtr) +{ + if (!functionPtr->isFunction()) + return; + + eventFunctionPtrJSON = functionPtr; +} + +void PluginObject::RegisterEventHandler(EValue* functionPtr) +{ + if (!functionPtr->isFunction()) + return; + + eventFunctionPtr = functionPtr; +} + +void PluginObject::RegisterEventHandling(std::string eventName) +{ + if (eventHandlers.find(eventName) == eventHandlers.end()) { + eventHandlers.insert(eventName); + } +} + +void PluginObject::UnregisterEventHandling(std::string eventName) +{ + auto it = eventHandlers.find(eventName); + if (it != eventHandlers.end()) + eventHandlers.erase(it); +} + +EventResult PluginObject::TriggerEvent(std::string invokedBy, std::string eventName, std::vector<std::any> eventPayload, ClassData* eventObject) +{ + if (GetPluginState() == PluginState_t::Stopped && eventName != "OnPluginStart" && eventName != "OnAllPluginsLoaded") + return EventResult::Continue; + + if (!eventFunctionPtr) + return EventResult::Continue; + + if (eventHandlers.find(eventName) == eventHandlers.end()) + return EventResult::Continue; + + uint64_t stackid = g_callStack.RegisterPluginCallstack(GetName(), string_format("Event: %s(invokedBy=\"%s\",payloadSize=%d,event=%p)", eventName.c_str(), invokedBy.c_str(), eventPayload.size(), (void*)eventObject)); + std::string eventResmon = "event:" + eventName; + g_ResourceMonitor.StartTime(GetName(), eventResmon); + + EventResult response = EventResult::Continue; + try + { + if (!eventObject) { + ClassData tmpObject({ { "plugin_name", invokedBy } }, "Event", ctx); + eventObject = &tmpObject; + } + auto value = (*eventFunctionPtr)(eventObject, eventName, eventPayload); + if (value.isNumber()) + { + int result = value.cast<int>(); + if (result < (int)EventResult::Continue || result >(int)EventResult::Stop) + response = EventResult::Continue; + else + response = (EventResult)result; + } + } + catch (EException& e) + { + PRINTF("An error has occured while trying to execute event '%s' in plugin '%s'.\nError: %s", eventName.c_str(), GetName().c_str(), e.what()); + response = EventResult::Continue; + } + + g_ResourceMonitor.StopTime(GetName(), eventResmon); + g_callStack.UnregisterPluginCallstack(GetName(), stackid); + + return response; +} + +EventResult PluginObject::TriggerEventJSON(std::string invokedBy, std::string eventName, std::string eventPayload, ClassData* eventObject) +{ + if (GetPluginState() == PluginState_t::Stopped && eventName != "OnPluginStart" && eventName != "OnAllPluginsLoaded") + return EventResult::Continue; + + if (!eventFunctionPtr) + return EventResult::Continue; + + if (eventHandlers.find(eventName) == eventHandlers.end()) + return EventResult::Continue; + + uint64_t stackid = g_callStack.RegisterPluginCallstack(GetName(), string_format("Event: %s(invokedBy=\"%s\",payload=\"%s\",event=%p)", eventName.c_str(), invokedBy.c_str(), eventPayload.c_str(), (void*)eventObject)); + std::string eventResmon = "event:" + eventName; + g_ResourceMonitor.StartTime(GetName(), eventResmon); + + EventResult response = EventResult::Continue; + try + { + if (!eventObject) { + ClassData tmpObject({ { "plugin_name", invokedBy } }, "Event", ctx); + eventObject = &tmpObject; + } + auto value = (*eventFunctionPtrJSON)(eventObject, eventName, eventPayload); + if (value.isNumber()) + { + int result = value.cast<int>(); + if (result < (int)EventResult::Continue || result >(int)EventResult::Stop) + response = EventResult::Continue; + else + response = (EventResult)result; + } + } + catch (EException& e) + { + PRINTF("An error has occured while trying to execute event '%s' in plugin '%s'.\nError: %s", eventName.c_str(), GetName().c_str(), e.what()); + response = EventResult::Continue; + } + + g_ResourceMonitor.StopTime(GetName(), eventResmon); + g_callStack.UnregisterPluginCallstack(GetName(), stackid); + + return response; +} + +std::string PluginObject::GetName() +{ + return name; +} + +PluginState_t PluginObject::GetPluginState() +{ + return state; +} + +void PluginObject::SetPluginState(PluginState_t state) +{ + this->state = state; +} + +std::string PluginObject::GetLoadError() +{ + return loadError; +} + +void PluginObject::SetLoadError(std::string error) +{ + loadError = error; +} + +int64_t PluginObject::GetMemoryUsage() +{ + if (GetPluginState() == PluginState_t::Stopped) + return 0; + return ctx->GetMemoryUsage(); +} + +std::string PluginObject::GetAuthor() +{ + if (GetPluginState() == PluginState_t::Stopped) + return ""; + + auto func = EValue::getGlobal(ctx, "GetPluginAuthor"); + return func().cast<std::string>(); +} + +std::string PluginObject::GetWebsite() +{ + if (GetPluginState() == PluginState_t::Stopped) + return ""; + + auto func = EValue::getGlobal(ctx, "GetPluginWebsite"); + return func().cast<std::string>(); +} + +std::string PluginObject::GetVersion() +{ + if (GetPluginState() == PluginState_t::Stopped) + return ""; + + auto func = EValue::getGlobal(ctx, "GetPluginVersion"); + return func().cast<std::string>(); +} + +std::string PluginObject::GetPlName() +{ + if (GetPluginState() == PluginState_t::Stopped) + return ""; + + auto func = EValue::getGlobal(ctx, "GetPluginName"); + return func().cast<std::string>(); +} + +bool PluginObject::LoadScriptingEnvironment() +{ + SetLoadError(""); + ctx = new EContext(kind); + + std::string fileExt = GetKind() == ContextKinds::Lua ? ".lua" : ".js"; + + SetupScriptingEnvironment(*this, ctx); + + for (Extension* ext : extManager.GetExtensionsList()) + if (ext->IsLoaded()) { + std::string error = ""; + if (!ext->GetAPI()->OnPluginLoad(GetName(), ctx, (PluginKind_t)GetKind(), error)) { + PRINTF("Failed to load plugin '%s'.\n", GetName().c_str()); + PRINTF("Error: %s.\n", error.c_str()); + SetLoadError(error); + return false; + } + } + + std::vector<std::string> scriptingFiles = Files::FetchFileNames("addons/swiftly/bin/scripting"); + std::sort(scriptingFiles.begin(), scriptingFiles.end()); + for (std::string file : scriptingFiles) + { + if (ends_with(file, fileExt)) + { + try + { + int loadStatus = ctx->RunFile(GeneratePath(file)); + + if (loadStatus != 0) + { + std::string error = EException(ctx->GetState(), ctx->GetKind(), loadStatus).what(); + PRINTF("Failed to load plugin file '%s'.\n", file.c_str()); + PRINTF("Error: %s\n", error.c_str()); + + SetLoadError(error); + return false; + } + } + catch (EException& e) + { + std::string error = e.what(); + PRINTF("Failed to load plugin file '%s'.\n", file.c_str()); + PRINTF("Error: %s\n", error.c_str()); + + SetLoadError(error); + return false; + } + } + } + + std::vector<std::string> files = Files::FetchFileNames(g_pluginManager.GetPluginBasePath(GetName()) + "/" + GetName()); + for (std::string file : files) + { + if (ends_with(file, fileExt)) + { + try + { + int loadStatus = ctx->RunFile(GeneratePath(file)); + + if (loadStatus != 0) + { + std::string error = EException(ctx->GetState(), ctx->GetKind(), loadStatus).what(); + PRINTF("Failed to load plugin file '%s'.\n", file.c_str()); + PRINTF("Error: %s\n", error.c_str()); + + SetLoadError(error); + return false; + } + } + catch (EException& e) + { + std::string error = e.what(); + PRINTF("Failed to load plugin file '%s'.\n", file.c_str()); + PRINTF("Error: %s\n", error.c_str()); + + SetLoadError(error); + return false; + } + } + } + + return true; +} + +void PluginObject::DestroyScriptingEnvironment() +{ + std::vector<std::string> commandNames = g_commandsManager.FetchCommandsByPlugin(GetName()); + for (std::string command : commandNames) + g_commandsManager.UnregisterCommand(command); + + eventHandlers.clear(); + delete ctx; +} + +bool PluginObject::ExecuteStart() +{ + auto PluginAuthor = EValue::getGlobal(ctx, "GetPluginAuthor"); + if (!PluginAuthor.isFunction()) + { + PRINTF("Failed to load plugin '%s'.\n", GetName().c_str()); + PRINT("Error: Mandatory function 'GetPluginAuthor' is not defined.\n"); + SetLoadError("Mandatory function 'GetPluginAuthor' is not defined."); + return false; + } + + auto PluginWebsite = EValue::getGlobal(ctx, "GetPluginWebsite"); + if (!PluginWebsite.isFunction()) + { + PRINTF("Failed to load plugin '%s'.\n", GetName().c_str()); + PRINT("Error: Mandatory function 'GetPluginWebsite' is not defined.\n"); + SetLoadError("Mandatory function 'GetPluginWebsite' is not defined."); + return false; + } + + auto PluginVersion = EValue::getGlobal(ctx, "GetPluginVersion"); + if (!PluginVersion.isFunction()) + { + PRINTF("Failed to load plugin '%s'.\n", GetName().c_str()); + PRINT("Error: Mandatory function 'GetPluginVersion' is not defined.\n"); + SetLoadError("Mandatory function 'GetPluginVersion' is not defined."); + return false; + } + + auto PluginName = EValue::getGlobal(ctx, "GetPluginName"); + if (!PluginName.isFunction()) + { + PRINTF("Failed to load plugin '%s'.\n", GetName().c_str()); + PRINT("Error: Mandatory function 'GetPluginName' is not defined.\n"); + SetLoadError("Mandatory function 'GetPluginName' is not defined."); + return false; + } + + TriggerEvent("core", "OnPluginStart", std::vector<std::any>{}, {}); + + if (GetLoadError() != "") + return false; + + return true; +} + +bool PluginObject::ExecuteStop() +{ + for (Extension* ext : extManager.GetExtensionsList()) + if (ext->IsLoaded()) { + std::string error = ""; + if (!ext->GetAPI()->OnPluginUnload(GetName(), ctx, (PluginKind_t)GetKind(), error)) { + PRINTF("Failed to unload plugin '%s'.\n", GetName().c_str()); + PRINTF("Error: %s.\n", error.c_str()); + return false; + } + } + + TriggerEvent("core", "OnPluginStop", std::vector<std::any>{}, {}); + + return true; +} + +ContextKinds PluginObject::GetKind() +{ + return kind; +} + +EContext* PluginObject::GetContext() +{ + return ctx; +} \ No newline at end of file diff --git a/src/plugins/object.h b/src/plugins/object.h new file mode 100644 index 000000000..7c2de59b9 --- /dev/null +++ b/src/plugins/object.h @@ -0,0 +1,66 @@ +#ifndef _plugins_object_h +#define _plugins_object_h + +#include <set> +#include <string> +#include <any> +#include <vector> +#include <optional> + +#include <embedder/src/Embedder.h> +#include <types/PluginState.h> +#include <types/EventResult.h> + +class PluginObject +{ +private: + std::string name; + PluginState_t state = PluginState_t::Stopped; + std::string loadError = ""; + + EContext* ctx = nullptr; + ContextKinds kind; + + std::set<std::string> eventHandlers; + EValue* eventFunctionPtr = nullptr; + EValue* eventFunctionPtrJSON = nullptr; + +public: + PluginObject(std::string m_name, ContextKinds m_kind); + PluginObject() = default; + ~PluginObject(); + + std::string GetName(); + + ContextKinds GetKind(); + + PluginState_t GetPluginState(); + void SetPluginState(PluginState_t state); + + std::string GetLoadError(); + void SetLoadError(std::string error); + + bool LoadScriptingEnvironment(); + void DestroyScriptingEnvironment(); + bool ExecuteStart(); + bool ExecuteStop(); + + int64_t GetMemoryUsage(); + + std::string GetAuthor(); + std::string GetWebsite(); + std::string GetVersion(); + std::string GetPlName(); + + EventResult TriggerEvent(std::string invokedBy, std::string eventName, std::vector<std::any> eventPayload, ClassData* eventObject); + EventResult TriggerEventJSON(std::string invokedBy, std::string eventName, std::string eventPayload, ClassData* eventObject); + + void RegisterEventHandler(EValue* functionPtr); + void RegisterEventHandlerJSON(EValue* functionPtr); + void RegisterEventHandling(std::string eventName); + void UnregisterEventHandling(std::string eventName); + + EContext* GetContext(); +}; + +#endif \ No newline at end of file diff --git a/src/scripting/core.cpp b/src/scripting/core.cpp new file mode 100644 index 000000000..5dbe49cbe --- /dev/null +++ b/src/scripting/core.cpp @@ -0,0 +1,83 @@ +#include "core.h" + +#include <utils/common.h> +#include <utils/utils.h> +#include <core/entrypoint.h> +#include <sdk/game.h> + +#include <tools/crashreporter/callstack.h> +#include <tools/resourcemonitor/monitor.h> + +std::string FetchPluginName(EContext* state); +std::map<std::string, EContext*> pluginNamesMap = {}; +std::map<EContext*, std::string> pluginNamesMap2 = {}; + +std::string FetchPluginName(EContext* state) +{ + return pluginNamesMap2[state]; +} + +extern "C" { + LUALIB_API int luaopen_rapidjson(lua_State* L); +} + +void SetupScriptingEnvironment(PluginObject plugin, EContext* ctx) +{ + if (pluginNamesMap.find(plugin.GetName()) == pluginNamesMap.end()) { + pluginNamesMap.insert({ plugin.GetName(), ctx }); + pluginNamesMap2.insert({ ctx, plugin.GetName() }); + } + else { + EContext* st = pluginNamesMap[plugin.GetName()]; + pluginNamesMap2.erase(st); + + pluginNamesMap2.insert({ ctx, plugin.GetName() }); + pluginNamesMap[plugin.GetName()] = ctx; + } + + if (ctx->GetKind() == ContextKinds::Lua) ctx->RegisterLuaLib("json", luaopen_rapidjson); + + ADD_FUNCTION_NS(ctx->GetKind() == ContextKinds::Lua ? "_G" : "console", ctx->GetKind() == ContextKinds::Lua ? "print" : "log", [](FunctionContext* context) -> void { + std::string prefix = TerminalProcessColor(string_format("[Swiftly] %s[%s]{DEFAULT} ", GetTerminalStringColor(FetchPluginName(context->GetPluginContext())).c_str(), ("plugin:" + FetchPluginName(context->GetPluginContext())).c_str())); + + std::vector<std::string> outputArr; + + for (int i = 0; i < context->GetArgumentsCount(); i++) { + if (i > 0) outputArr.push_back("\t"); + outputArr.push_back(TerminalProcessColor(context->GetArgumentAsString(i))); + } + + std::vector<std::string> processingNewLines = explode(implode(outputArr, ""), "\n"); + for (const std::string str : processingNewLines) + { + if (str.size() == 0) + continue; + + std::string final_string = TerminalProcessColor(string_format("%s%s{DEFAULT}{BGDEFAULT}\n", prefix.c_str(), str.c_str())); + META_CONPRINT(final_string.c_str()); + } + }); + + ADD_FUNCTION("GetCurrentPluginName", [](FunctionContext* context) -> void { + context->SetReturn(FetchPluginName(context->GetPluginContext())); + }); + + ADD_FUNCTION("GetGameName", [](FunctionContext* context) -> void { + context->SetReturn(GetGameName()); + }); + + for (auto classLoader : loaderClasses) { + classLoader->ExecuteLoad(plugin, ctx); + } + + ADD_FUNCTION("OnFunctionContextRegister", [](FunctionContext* context) -> void { + std::string function_call = replace(context->GetFunctionKey(), " ", "::"); + context->temporaryData.push_back(g_callStack.RegisterPluginCallstack(FetchPluginName(context->GetPluginContext()), function_call)); + g_ResourceMonitor.StartTime("core", replace(context->GetFunctionKey(), " ", "::")); + }); + + ADD_FUNCTION("OnFunctionContextUnregister", [](FunctionContext* context) -> void { + g_ResourceMonitor.StopTime("core", replace(context->GetFunctionKey(), " ", "::")); + g_callStack.UnregisterPluginCallstack(FetchPluginName(context->GetPluginContext()), context->temporaryData[0]); + }); +} \ No newline at end of file diff --git a/src/scripting/core.h b/src/scripting/core.h new file mode 100644 index 000000000..b66ff045f --- /dev/null +++ b/src/scripting/core.h @@ -0,0 +1,37 @@ +#ifndef _scripting_core_h +#define _scripting_core_h + +#include <core/entrypoint.h> +#include <plugins/manager.h> +#include <embedder/src/Embedder.h> + +#include <functional> +#include "stack.h" + +std::string FetchPluginName(EContext* ctx); +#define FetchPluginByState(state) g_pluginManager.FetchPlugin(FetchPluginName(state)) +#define LoadScriptingComponent(component_name, component_func) ClassLoader sc_##component_name(component_func); + +void SetupScriptingEnvironment(PluginObject plugin, EContext* ctx); + +class ClassLoader; +extern std::vector<ClassLoader*> loaderClasses; + +class ClassLoader +{ +private: + std::function<void(PluginObject, EContext*)> m_loadFunction; +public: + ClassLoader(std::function<void(PluginObject, EContext*)> loadFunction) : m_loadFunction(loadFunction) { + loaderClasses.push_back(this); + } + + void ExecuteLoad(PluginObject plugin, EContext* state) + { + m_loadFunction(plugin, state); + } +}; + +EValue MakeSDKClassInstance(std::string className, void* ptr, EContext* context); + +#endif \ No newline at end of file diff --git a/src/scripting/engine/convars.cpp b/src/scripting/engine/convars.cpp new file mode 100644 index 000000000..69f61a66b --- /dev/null +++ b/src/scripting/engine/convars.cpp @@ -0,0 +1,139 @@ +#include <scripting/core.h> + +#include <engine/convars/manager.h> + +LoadScriptingComponent(convars, [](PluginObject plugin, EContext* ctx) -> void { + ADD_CLASS("Convars"); + + ADD_CLASS_FUNCTION("Convars", "Convars", [](FunctionContext* context, ClassData* data) -> void {}); + + ADD_CLASS_FUNCTION("Convars", "AddFlags", [](FunctionContext* context, ClassData* data) -> void { + std::string cvarname = context->GetArgumentOr<std::string>(0, ""); + if(cvarname == "") return; + + ConVarRefAbstract cvar(cvarname.c_str()); + if(!cvar.IsValidRef()) return; + + int64_t flags = context->GetArgumentOr<int64_t>(1, 0); + cvar.AddFlags(flags); + }); + + ADD_CLASS_FUNCTION("Convars", "RemoveFlags", [](FunctionContext* context, ClassData* data) -> void { + std::string cvarname = context->GetArgumentOr<std::string>(0, ""); + if(cvarname == "") return; + + ConVarRefAbstract cvar(cvarname.c_str()); + if(!cvar.IsValidRef()) return; + + int64_t flags = context->GetArgumentOr<int64_t>(1, 0); + cvar.RemoveFlags(flags); + }); + + ADD_CLASS_FUNCTION("Convars", "GetFlags", [](FunctionContext* context, ClassData* data) -> void { + std::string cvarname = context->GetArgumentOr<std::string>(0, ""); + if(cvarname == "") return context->SetReturn(0); + + ConVarRefAbstract cvar(cvarname.c_str()); + if(!cvar.IsValidRef()) return context->SetReturn(0); + + context->SetReturn(cvar.GetFlags()); + }); + + ADD_CLASS_FUNCTION("Convars", "HasFlags", [](FunctionContext* context, ClassData* data) -> void { + std::string cvarname = context->GetArgumentOr<std::string>(0, ""); + if(cvarname == "") return context->SetReturn(false); + + ConVarRefAbstract cvar(cvarname.c_str()); + if(!cvar.IsValidRef()) return context->SetReturn(false); + + int64_t flags = context->GetArgumentOr<int64_t>(1, 0); + context->SetReturn(cvar.IsFlagSet(flags)); + }); + + ADD_CLASS_FUNCTION("Convars", "Exists", [](FunctionContext* context, ClassData* data) -> void { + std::string cvarname = context->GetArgumentOr<std::string>(0, ""); + if(cvarname == "") return context->SetReturn(false); + + ConVarRefAbstract cvar(cvarname.c_str()); + context->SetReturn(cvar.IsValidRef()); + }); + + ADD_CLASS_FUNCTION("Convars", "ExistsFake", [](FunctionContext* context, ClassData* data) -> void { + std::string cvarname = context->GetArgumentOr<std::string>(0, ""); + if(cvarname == "") return context->SetReturn(false); + + ConVarRefAbstract cvar(cvarname.c_str()); + context->SetReturn(cvar.IsValidRef()); + }); + + ADD_CLASS_FUNCTION("Convars", "Get", [](FunctionContext* context, ClassData* data) -> void { + std::string cvarname = context->GetArgumentOr<std::string>(0, ""); + if(cvarname == "") return; + + context->SetReturn(g_cvarManager.GetConvarValue(cvarname)); + }); + + ADD_CLASS_FUNCTION("Convars", "GetType", [](FunctionContext* context, ClassData* data) -> void { + std::string cvarname = context->GetArgumentOr<std::string>(0, ""); + if(cvarname == "") return context->SetReturn((int)(EConVarType::EConVarType_Invalid)); + + context->SetReturn((int)(g_cvarManager.GetConvarType(cvarname))); + }); + + ADD_CLASS_FUNCTION("Convars", "Set", [](FunctionContext* context, ClassData* data) -> void { + std::string cvarname = context->GetArgumentOr<std::string>(0, ""); + if(cvarname == "") return; + + std::string value = context->GetArgumentOr<std::string>(1, ""); + + ConVarRefAbstract cvar(cvarname.c_str()); + if(!cvar.IsValidRef()) return; + + cvar.SetString(value.c_str()); + }); + + ADD_CLASS_FUNCTION("Convars", "CreateFake", [](FunctionContext* context, ClassData* data) -> void { + std::string cvarname = context->GetArgumentOr<std::string>(0, ""); + if(cvarname == "") return; + + int type = context->GetArgumentOr<int>(1, -1); + if(type == -1) return; + + std::any defaultValue = context->GetArgument<std::any>(2); + + g_cvarManager.CreateConvar(cvarname, (EConVarType)type, "Swiftly Fake Convar", FCVAR_NONE, defaultValue, false, nullptr, false, nullptr); + }); + + ADD_CLASS_FUNCTION("Convars", "Create", [](FunctionContext* context, ClassData* data) -> void { + std::string cvarname = context->GetArgumentOr<std::string>(0, ""); + if(cvarname == "") return; + + std::string description = context->GetArgumentOr<std::string>(1, ""); + if(description == "") return; + + int type = context->GetArgumentOr<int>(2, -1); + if(type == -1) return; + + int flags = context->GetArgumentOr<int>(3, 0); + + std::any defaultValue = context->GetArgument<std::any>(4); + std::any minValue = context->GetArgument<std::any>(5); + std::any maxValue = context->GetArgument<std::any>(6); + + g_cvarManager.CreateConvar(cvarname, (EConVarType)type, description, flags, defaultValue, minValue.has_value(), minValue, maxValue.has_value(), maxValue); + }); + + ADD_CLASS_FUNCTION("Convars", "DeleteFake", [](FunctionContext* context, ClassData* data) -> void { + std::string cvarname = context->GetArgumentOr<std::string>(0, ""); + if(cvarname == "") return; + + g_cvarManager.DeleteConvar(cvarname); + }); + + ADD_CLASS_FUNCTION("Convars", "Delete", [](FunctionContext* context, ClassData* data) -> void { + std::string cvarname = context->GetArgumentOr<std::string>(0, ""); + if(cvarname == "") return; + + g_cvarManager.DeleteConvar(cvarname); + }); +}) \ No newline at end of file diff --git a/src/scripting/engine/entities.cpp b/src/scripting/engine/entities.cpp new file mode 100644 index 000000000..c1791fb6d --- /dev/null +++ b/src/scripting/engine/entities.cpp @@ -0,0 +1,26 @@ +#include <scripting/core.h> + +#include <entities/system.h> + +LoadScriptingComponent(entities, [](PluginObject plugin, EContext* ctx) -> void { + ADD_FUNCTION("CreateEntityByName", [](FunctionContext* context) -> void { + std::string class_name = context->GetArgumentOr<std::string>(0, ""); + if(class_name == "") return context->SetReturn(MakeSDKClassInstance("CEntityInstance", nullptr, context->GetPluginContext())); + + context->SetReturn(MakeSDKClassInstance("CEntityInstance", g_entSystem.CreateByName(class_name.c_str()), context->GetPluginContext())); + }); + + ADD_FUNCTION("FindEntitiesByClassname", [](FunctionContext* context) -> void { + std::string class_name = context->GetArgumentOr<std::string>(0, ""); + std::vector<EValue> entities; + if(class_name != "") { + CEntityIdentity* pEntity = g_pEntitySystem->m_EntityList.m_pFirstActiveEntity; + + for (; pEntity; pEntity = pEntity->m_pNext) + if (pEntity->m_designerName.String() == class_name) + entities.push_back(MakeSDKClassInstance("CEntityInstance", pEntity->m_pInstance, context->GetPluginContext())); + } + + context->SetReturn(entities); + }); +}) \ No newline at end of file diff --git a/src/scripting/engine/events.cpp b/src/scripting/engine/events.cpp new file mode 100644 index 000000000..a828470df --- /dev/null +++ b/src/scripting/engine/events.cpp @@ -0,0 +1,202 @@ +#include <scripting/core.h> +#include <memory/gamedata/gamedata.h> +#include <sdk/game.h> + +extern std::map<std::string, std::string> gameEventsRegister; + +typedef IGameEventListener2* (*GetLegacyGameEventListener)(CPlayerSlot slot); + +LoadScriptingComponent(events, [](PluginObject plugin, EContext* ctx) -> void { + ADD_FUNCTION("AddGlobalEvents", [](FunctionContext* context) -> void { + if (context->GetArgumentsCount() != 1) return; + + auto func = context->GetArgument<EValue>(0); + if (!func.isFunction()) return; + + auto plugin = g_pluginManager.FetchPlugin(FetchPluginName(context->GetPluginContext())); + if (!plugin) return; + + plugin->RegisterEventHandler(new EValue(func)); + }); + + ADD_FUNCTION("AddGlobalEventsJSON", [](FunctionContext* context) -> void { + if (context->GetArgumentsCount() != 1) return; + + auto func = context->GetArgument<EValue>(0); + if (!func.isFunction()) return; + + auto plugin = g_pluginManager.FetchPlugin(FetchPluginName(context->GetPluginContext())); + if (!plugin) return; + + plugin->RegisterEventHandlerJSON(new EValue(func)); + }); + + ADD_FUNCTION("RegisterEventHandlerPlugin", [](FunctionContext* context) -> void { + if (context->GetArgumentsCount() != 1) return; + + auto event_name = context->GetArgumentOr<std::string>(0, ""); + + auto plugin = g_pluginManager.FetchPlugin(FetchPluginName(context->GetPluginContext())); + if (!plugin) return; + + plugin->RegisterEventHandling(event_name); + }); + + ADD_FUNCTION("RemoveEventHandlerPlugin", [](FunctionContext* context) -> void { + if (context->GetArgumentsCount() != 1) return; + + auto event_name = context->GetArgumentOr<std::string>(0, ""); + + auto plugin = g_pluginManager.FetchPlugin(FetchPluginName(context->GetPluginContext())); + if (!plugin) return; + + plugin->UnregisterEventHandling(event_name); + }); + + ADD_FUNCTION("TriggerEventInternal", [](FunctionContext* context) -> void { + if (context->GetArgumentsCount() != 2) return; + + auto event_name = context->GetArgumentOr<std::string>(0, ""); + auto event_data = context->GetArgumentOr<std::string>(1, "[]"); + + auto evObject = MAKE_CLASS_INSTANCE("Event", { { "plugin_name", FetchPluginName(context->GetPluginContext()) } }).cast<ClassData*>(); + + std::vector<std::any> returnValues; + + returnValues.push_back((int)g_pluginManager.ExecuteEventJSON(FetchPluginName(context->GetPluginContext()), event_name, event_data, evObject)); + returnValues.push_back(evObject); + + context->SetReturn(returnValues); + }); + + ADD_CLASS("Event"); + + ADD_CLASS_FUNCTION("Event", "Event", [](FunctionContext* context, ClassData* data) -> void { + if (context->GetArgumentOr<std::string>(0, "") == "") return; + std::string event_name = context->GetArgument<std::string>(0); + + for (auto it = gameEventsRegister.begin(); it != gameEventsRegister.end(); ++it) { + if (it->second == event_name) { + auto gameEvent = g_gameEventManager->CreateEvent(it->first.c_str()); + data->SetData("event_data", gameEvent); + data->SetData("should_free", true); + break; + } + } + }); + + ADD_CLASS_FUNCTION("Event", "~Event", [](FunctionContext* context, ClassData* data) -> void { + if (data->GetDataOr<bool>("should_free", false) && data->GetDataOr<IGameEvent*>("event_data", nullptr)) { + g_gameEventManager->FreeEvent(data->GetData<IGameEvent*>("event_data")); + } + }); + + ADD_CLASS_FUNCTION("Event", "GetInvokingPlugin", [](FunctionContext* context, ClassData* data) -> void { + context->SetReturn(data->GetDataOr<std::string>("plugin_name", "unknown")); + }); + + ADD_CLASS_FUNCTION("Event", "IsGameEvent", [](FunctionContext* context, ClassData* data) -> void { + context->SetReturn(data->HasData("event_data")); + }); + + ADD_CLASS_FUNCTION("Event", "SetBool", [](FunctionContext* context, ClassData* data) -> void { + if (!data->HasData("event_data")) return; + data->GetData<IGameEvent*>("event_data")->SetBool(context->GetArgumentOr<std::string>(0, "").c_str(), context->GetArgumentOr<bool>(1, false)); + }); + + ADD_CLASS_FUNCTION("Event", "SetInt", [](FunctionContext* context, ClassData* data) -> void { + if (!data->HasData("event_data")) return; + data->GetData<IGameEvent*>("event_data")->SetInt(context->GetArgumentOr<std::string>(0, "").c_str(), context->GetArgumentOr<int>(1, 0)); + }); + + ADD_CLASS_FUNCTION("Event", "SetUint64", [](FunctionContext* context, ClassData* data) -> void { + if (!data->HasData("event_data")) return; + data->GetData<IGameEvent*>("event_data")->SetUint64(context->GetArgumentOr<std::string>(0, "").c_str(), context->GetArgumentOr<uint64_t>(1, 0)); + }); + + ADD_CLASS_FUNCTION("Event", "SetFloat", [](FunctionContext* context, ClassData* data) -> void { + if (!data->HasData("event_data")) return; + data->GetData<IGameEvent*>("event_data")->SetFloat(context->GetArgumentOr<std::string>(0, "").c_str(), context->GetArgumentOr<float>(1, 0.0f)); + }); + + ADD_CLASS_FUNCTION("Event", "SetString", [](FunctionContext* context, ClassData* data) -> void { + if (!data->HasData("event_data")) return; + data->GetData<IGameEvent*>("event_data")->SetString(context->GetArgumentOr<std::string>(0, "").c_str(), context->GetArgumentOr<std::string>(1, "").c_str()); + }); + + ADD_CLASS_FUNCTION("Event", "GetBool", [](FunctionContext* context, ClassData* data) -> void { + if (!data->HasData("event_data") || !data->GetData<IGameEvent*>("event_data")->HasKey(context->GetArgumentOr<std::string>(0, "").c_str())) { + context->SetReturn(false); + return; + } + context->SetReturn(data->GetData<IGameEvent*>("event_data")->GetBool(context->GetArgumentOr<std::string>(0, "").c_str())); + }); + + ADD_CLASS_FUNCTION("Event", "GetInt", [](FunctionContext* context, ClassData* data) -> void { + if (!data->HasData("event_data") || !data->GetData<IGameEvent*>("event_data")->HasKey(context->GetArgumentOr<std::string>(0, "").c_str())) { + context->SetReturn(0); + return; + } + context->SetReturn(data->GetData<IGameEvent*>("event_data")->GetInt(context->GetArgumentOr<std::string>(0, "").c_str())); + }); + + ADD_CLASS_FUNCTION("Event", "GetUint64", [](FunctionContext* context, ClassData* data) -> void { + if (!data->HasData("event_data") || !data->GetData<IGameEvent*>("event_data")->HasKey(context->GetArgumentOr<std::string>(0, "").c_str())) { + context->SetReturn(0); + return; + } + context->SetReturn(data->GetData<IGameEvent*>("event_data")->GetUint64(context->GetArgumentOr<std::string>(0, "").c_str())); + }); + + ADD_CLASS_FUNCTION("Event", "GetFloat", [](FunctionContext* context, ClassData* data) -> void { + if (!data->HasData("event_data") || !data->GetData<IGameEvent*>("event_data")->HasKey(context->GetArgumentOr<std::string>(0, "").c_str())) { + context->SetReturn(0.0f); + return; + } + context->SetReturn(data->GetData<IGameEvent*>("event_data")->GetFloat(context->GetArgumentOr<std::string>(0, "").c_str())); + }); + + ADD_CLASS_FUNCTION("Event", "GetString", [](FunctionContext* context, ClassData* data) -> void { + if (!data->HasData("event_data") || !data->GetData<IGameEvent*>("event_data")->HasKey(context->GetArgumentOr<std::string>(0, "").c_str())) { + context->SetReturn(""); + return; + } + context->SetReturn(data->GetData<IGameEvent*>("event_data")->GetString(context->GetArgumentOr<std::string>(0, "").c_str())); + }); + + ADD_CLASS_FUNCTION("Event", "FireEvent", [](FunctionContext* context, ClassData* data) -> void { + if (!data->HasData("event_data")) return; + + g_gameEventManager->FireEvent(data->GetData<IGameEvent*>("event_data"), context->GetArgumentOr<bool>(0, false)); + }); + + ADD_CLASS_FUNCTION("Event", "FireEventToClient", [](FunctionContext* context, ClassData* data) -> void { + if (!data->HasData("event_data")) return; + + int slot = context->GetArgumentOr<int>(0, -1); + if (slot < 0 || slot >= GetMaxGameClients()) return; + + IGameEventListener2* playerListener = g_GameData.FetchSignature<GetLegacyGameEventListener>("LegacyGameEventListener")(slot); + playerListener->FireGameEvent(data->GetData<IGameEvent*>("event_data")); + }); + + ADD_CLASS_FUNCTION("Event", "SetReturn", [](FunctionContext* context, ClassData* data) -> void { + if (context->GetArgumentsCount() < 1) return; + + data->SetData("event_return", context->GetArgument<std::any>(0)); + }); + + ADD_CLASS_FUNCTION("Event", "GetReturn", [](FunctionContext* context, ClassData* data) -> void { + if (data->HasData("event_return")) context->SetReturn(data->GetData<std::any>("event_return")); + }); + + ADD_CLASS_FUNCTION("Event", "SetNoBroadcast", [](FunctionContext* context, ClassData* data) -> void { + data->SetData("dontBroadcast", context->GetArgumentOr<bool>(0, false)); + }); + + ADD_CLASS_FUNCTION("Event", "GetNoBroadcast", [](FunctionContext* context, ClassData* data) -> void { + context->SetReturn(data->GetDataOr<bool>("dontBroadcast", false)); + }); + + if (ctx->GetKind() == ContextKinds::JavaScript) ADD_VARIABLE("_G", "PEvent", EValue::getGlobal(ctx, "Event")); +}) \ No newline at end of file diff --git a/src/scripting/engine/gameevents.cpp b/src/scripting/engine/gameevents.cpp new file mode 100644 index 000000000..44579ab5b --- /dev/null +++ b/src/scripting/engine/gameevents.cpp @@ -0,0 +1,137 @@ +#include <memory/hooks/functions.h> + +#include <plugins/manager.h> +#include <sdk/schema.h> +#include <sdk/components/CTakeDamageInfo.h> + +#include "ehandle.h" + +dyno::ReturnAction CCSPlayerPawnBase_PostThinkPre(dyno::CallbackType type, dyno::IHook& hook) +{ + void* _this = hook.getArgument<void*>(0); + if (!_this) return dyno::ReturnAction::Ignored; + + CHandle<CEntityInstance> originalController = schema::GetProp<CHandle<CEntityInstance>>(_this, "CCSPlayerPawnBase", "m_hOriginalController"); + if (!originalController) return dyno::ReturnAction::Ignored; + + auto playerid = originalController.GetEntryIndex() - 1; + + if (g_pluginManager.ExecuteEvent("core", "OnPlayerPostThink", std::vector<std::any>{ playerid }, {}) == EventResult::Stop) + return dyno::ReturnAction::Supercede; + + return dyno::ReturnAction::Ignored; +} + +FunctionHook CCSPlayerPawnBase_PostThink("CCSPlayerPawnBase_PostThink", dyno::CallbackType::Pre, CCSPlayerPawnBase_PostThinkPre, "p", 'v'); + +bool OnClientChat(int playerid, std::string text, bool teamonly) +{ + ClassData data({ { "plugin_name", "core" } }, "Event", nullptr); + g_pluginManager.ExecuteEvent("core", "OnClientChat", { playerid, text, teamonly }, &data); + + bool response = true; + try + { + response = std::any_cast<bool>(data.GetData<std::any>("event_return")); + } + catch (std::bad_any_cast& e) + { + response = true; + } + + return response; +} + +void OnClientConvarQuery(int playerid, std::string convar_name, std::string convar_value) +{ + g_pluginManager.ExecuteEvent("core", "OnClientConvarQuery", { playerid, convar_name, convar_value }, {}); +} + +dyno::ReturnAction Hook_CGameRules_TerminateRound(dyno::CallbackType type, dyno::IHook& hook) +{ + ClassData data({ { "plugin_name", "core" } }, "Event", nullptr); + g_pluginManager.ExecuteEvent("core", "OnTerminateRound", std::vector<std::any>{ hook.getArgument<float>(1), hook.getArgument<uint32_t>(2) }, & data); + + bool response = true; + try + { + response = std::any_cast<bool>(data.GetData<std::any>("event_return")); + } + catch (std::bad_any_cast& e) + { + response = true; + } + + if (!response) return dyno::ReturnAction::Supercede; + + return dyno::ReturnAction::Ignored; +} + +FunctionHook CGameRules_TerminateRound("CGameRules_TerminateRound", dyno::CallbackType::Pre, Hook_CGameRules_TerminateRound, "pfuIu", 'v'); + +dyno::ReturnAction Hook_CEntityIdentity_AcceptInput(dyno::CallbackType type, dyno::IHook& hook) +{ + ClassData data({ { "plugin_name", "core" } }, "Event", nullptr); + ClassData* ThisPlayer = new ClassData({ { "should_mark_freeable", true }, { "class_name", std::string("CEntityInstance") }, { "class_ptr", (void*)(hook.getArgument<CEntityIdentity*>(0)->m_pInstance) } }, "SDKClass", nullptr); + ClassData* Activator = new ClassData({ { "should_mark_freeable", true }, { "class_name", std::string("CEntityInstance") }, { "class_ptr", (void*)(hook.getArgument<CEntityInstance*>(2)) } }, "SDKClass", nullptr); + ClassData* Caller = new ClassData({ { "should_mark_freeable", true }, { "class_name", std::string("CEntityInstance") }, { "class_ptr", (void*)(hook.getArgument<CEntityInstance*>(3)) } }, "SDKClass", nullptr); + + g_pluginManager.ExecuteEvent("core", "OnEntityAcceptInput", { ThisPlayer, hook.getArgument<CUtlSymbolLarge*>(1)->String(), Activator, Caller, hook.getArgument<variant_t*>(4)->ToString(), hook.getArgument<int>(5) }, &data); + + bool response = true; + try + { + response = std::any_cast<bool>(data.GetData<std::any>("event_return")); + } + catch (std::bad_any_cast& e) + { + response = true; + } + + if (!response) return dyno::ReturnAction::Supercede; + + return dyno::ReturnAction::Ignored; +} + +FunctionHook CEntityIdentity_AcceptInput("CEntityIdentity_AcceptInput", dyno::CallbackType::Pre, Hook_CEntityIdentity_AcceptInput, "pppppi", 'v'); + +dyno::ReturnAction Hook_CBaseEntity_TakeDamage(dyno::CallbackType type, dyno::IHook& hook) +{ + void* _this = hook.getArgument<void*>(0); + CTakeDamageInfo* info = hook.getArgument<CTakeDamageInfo*>(1); + + CHandle<CEntityInstance> playerController = schema::GetProp<CHandle<CEntityInstance>>(_this, "CBasePlayerPawn", "m_hController"); + if (!playerController) return dyno::ReturnAction::Ignored; + + int playerid = playerController.GetEntryIndex() - 1; + int attackerid = -1; + + auto attackerPawn = info->m_hAttacker; + if (attackerPawn) { + CHandle<CEntityInstance> attackerController = schema::GetProp<CHandle<CEntityInstance>>(attackerPawn.Get(), "CBasePlayerPawn", "m_hController"); + if (attackerController) attackerid = attackerController.GetEntryIndex() - 1; + } + + ClassData data({ { "plugin_name", "core" } }, "Event", nullptr); + ClassData* damageinfo = new ClassData({ { "should_mark_freeable", true }, { "class_name", std::string("CTakeDamageInfo") }, { "class_ptr", (void*)info } }, "SDKClass", nullptr); + ClassData* Inflictor = new ClassData({ { "should_mark_freeable", true }, { "class_name", std::string("CBaseEntity") }, { "class_ptr", (void*)(info->m_hInflictor.Get()) } }, "SDKClass", nullptr); + ClassData* Ability = new ClassData({ { "should_mark_freeable", true }, { "class_name", std::string("CBaseEntity") }, { "class_ptr", (void*)(info->m_hAbility.Get()) } }, "SDKClass", nullptr); + + g_pluginManager.ExecuteEvent("core", "OnPlayerDamage", { playerid, attackerid, damageinfo, Inflictor, Ability }, &data); + + bool response = true; + try + { + response = std::any_cast<bool>(data.GetData<std::any>("event_return")); + } + catch (std::bad_any_cast& e) + { + response = true; + } + + if (!response) return dyno::ReturnAction::Supercede; + + return dyno::ReturnAction::Ignored; +} + +FunctionHook CBaseEntity_TakeDamage("CBaseEntity_TakeDamage", dyno::CallbackType::Pre, Hook_CBaseEntity_TakeDamage, "pp", 'v'); \ No newline at end of file diff --git a/src/scripting/engine/precacher.cpp b/src/scripting/engine/precacher.cpp new file mode 100644 index 000000000..9943b9ca5 --- /dev/null +++ b/src/scripting/engine/precacher.cpp @@ -0,0 +1,15 @@ +#include <scripting/core.h> +#include <engine/precacher/precacher.h> + +void PrecacheItems(FunctionContext* context, ClassData* data) { + g_precacher.AddItem(context->GetArgumentOr<std::string>(0, "")); +} + +LoadScriptingComponent(precacher, [](PluginObject plugin, EContext* ctx) -> void { + ADD_CLASS("Precacher"); + + ADD_CLASS_FUNCTION("Precacher", "Precacher", [](FunctionContext*, ClassData*) -> void {}); + ADD_CLASS_FUNCTION("Precacher", "PrecacheModel", PrecacheItems); + ADD_CLASS_FUNCTION("Precacher", "PrecacheSound", PrecacheItems); + ADD_CLASS_FUNCTION("Precacher", "PrecacheItem", PrecacheItems); +}) \ No newline at end of file diff --git a/src/scripting/engine/server.cpp b/src/scripting/engine/server.cpp new file mode 100644 index 000000000..5ab898c57 --- /dev/null +++ b/src/scripting/engine/server.cpp @@ -0,0 +1,75 @@ +#include <scripting/core.h> + +#include <sdk/game.h> +#include <utils/utils.h> +#include <entities/system.h> + +#include <public/steam/isteamgameserver.h> + +bool is_number(const std::string &s) { + return !s.empty() && std::all_of(s.begin(), s.end(), ::isdigit); +} + +typedef void (*CGameRules_TerminateRound)(void*, float, uint32_t, int64_t, uint32_t); + +LoadScriptingComponent(server, [](PluginObject plugin, EContext* ctx) -> void { + ADD_CLASS("Server"); + + ADD_CLASS_FUNCTION("Server", "Server", [](FunctionContext* context, ClassData* data) -> void {}); + + ADD_CLASS_FUNCTION("Server", "GetMap", [](FunctionContext* context, ClassData* data) -> void { + if(!engine->GetServerGlobals()) return context->SetReturn("unknown_map"); + + context->SetReturn(engine->GetServerGlobals()->mapname.ToCStr()); + }); + + ADD_CLASS_FUNCTION("Server", "IsMapValid", [](FunctionContext* context, ClassData* data) -> void { + std::string map_name = context->GetArgumentOr<std::string>(0, ""); + context->SetReturn((is_number(map_name) || (engine->IsMapValid(map_name.c_str()) == 1))); + }); + + ADD_CLASS_FUNCTION("Server", "ChangeMap", [](FunctionContext* context, ClassData* data) -> void { + std::string map_name = context->GetArgumentOr<std::string>(0, ""); + bool workshop = context->GetArgumentOr<bool>(1, false); + + engine->ServerCommand(string_format("%s %s", workshop ? "host_workshop_map" : "changelevel", map_name.c_str()).c_str()); + }); + + ADD_CLASS_FUNCTION("Server", "GetMaxPlayers", [](FunctionContext* context, ClassData* data) -> void { + if(!engine->GetServerGlobals()) return context->SetReturn(GetMaxGameClients()); + context->SetReturn(engine->GetServerGlobals()->maxClients); + }); + + ADD_CLASS_FUNCTION("Server", "Execute", [](FunctionContext* context, ClassData* data) -> void { + std::string command = context->GetArgumentOr<std::string>(0, ""); + if(command == "") return; + + engine->ServerCommand(command.c_str()); + }); + + ADD_CLASS_FUNCTION("Server", "GetCurrentTime", [](FunctionContext* context, ClassData* data) -> void { + if(!engine->GetServerGlobals()) return context->SetReturn(0.0f); + context->SetReturn(engine->GetServerGlobals()->curtime); + }); + + ADD_CLASS_FUNCTION("Server", "GetTickCount", [](FunctionContext* context, ClassData* data) -> void { + if(!engine->GetServerGlobals()) return context->SetReturn(0); + context->SetReturn(engine->GetServerGlobals()->tickcount); + }); + + ADD_CLASS_FUNCTION("Server", "TerminateRound", [](FunctionContext* context, ClassData* data) -> void { + if(!gameRules) return; + + float delay = context->GetArgumentOr<float>(0, 0.0f); + int reason = context->GetArgumentOr<int>(1, 0); + + g_GameData.FetchSignature<CGameRules_TerminateRound>("CGameRules_TerminateRound")(gameRules, delay, reason, 0, 0); + }); + + ADD_CLASS_FUNCTION("Server", "GetIP", [](FunctionContext* context, ClassData* data) -> void { + if(!g_SteamAPI.SteamGameServer()) return context->SetReturn("0.0.0.0"); + + auto ip_addr = g_SteamAPI.SteamGameServer()->GetPublicIP(); + context->SetReturn(string_format("%d.%d.%d.%d", (ip_addr.m_unIPv4 >> 24) & 0xFF, (ip_addr.m_unIPv4 >> 16) & 0xFF, (ip_addr.m_unIPv4 >> 8) & 0xFF, ip_addr.m_unIPv4 & 0xff)); + }); +}); \ No newline at end of file diff --git a/src/scripting/engine/vgui.cpp b/src/scripting/engine/vgui.cpp new file mode 100644 index 000000000..a3479b877 --- /dev/null +++ b/src/scripting/engine/vgui.cpp @@ -0,0 +1,102 @@ +#include <scripting/core.h> + +#include <engine/vgui/vgui.h> +#include <server/player/manager.h> + +LoadScriptingComponent(vgui, [](PluginObject plugin, EContext* ctx) -> void { + ADD_CLASS("VGUI"); + + ADD_CLASS_FUNCTION("VGUI", "VGUI", [](FunctionContext* context, ClassData* data) -> void {}); + + ADD_CLASS_FUNCTION("VGUI", "ShowText", [](FunctionContext* context, ClassData* data) -> void { + int playerid = context->GetArgumentOr<int>(0, -1); + if(playerid == -1) return context->SetReturn(0); + + ClassData* cdata = context->GetArgumentOr<ClassData*>(1, nullptr); + if(!cdata) return context->SetReturn(0); + if(!cdata->HasData("Color_ptr")) return context->SetReturn(0); + Color color = cdata->GetData<Color>("Color_ptr"); + + std::string text = context->GetArgumentOr<std::string>(2, ""); + + float x = context->GetArgumentOr<float>(3, 0.0); + float y = context->GetArgumentOr<float>(4, 0.0); + + if(x < 0.0) x = 0.0; + if(x > 1.0) x = 1.0; + + if(y < 0.0) y = 0.0; + if(y > 1.0) y = 1.0; + + std::string font_name = context->GetArgumentOr<std::string>(5, "Sans Serif"); + bool background = context->GetArgumentOr<bool>(6, false); + + Player* player = g_playerManager.GetPlayer(playerid); + if(!player) return context->SetReturn(0); + + uint64_t textID = g_VGUI.RegisterScreenText(); + ScreenText* txt = g_VGUI.GetScreenText(textID); + + txt->Create(color, font_name, 35, background); + txt->SetupViewForPlayer(player); + txt->SetText(text); + txt->SetPosition(x, y); + + context->SetReturn(textID); + }); + + ADD_CLASS_FUNCTION("VGUI", "RemoveText", [](FunctionContext* context, ClassData* data) -> void { + uint64_t textID = context->GetArgumentOr<uint64_t>(0, 0); + if(textID == 0) return; + + ScreenText* text = g_VGUI.GetScreenText(textID); + if(!text) return; + + g_VGUI.DeleteScreenText(textID); + }); + + ADD_CLASS_FUNCTION("VGUI", "SetTextMessage", [](FunctionContext* context, ClassData* data) -> void { + uint64_t textID = context->GetArgumentOr<uint64_t>(0, 0); + if(textID == 0) return; + + ScreenText* text = g_VGUI.GetScreenText(textID); + if(!text) return; + + std::string str = context->GetArgumentOr<std::string>(1, ""); + text->SetText(str); + }); + + ADD_CLASS_FUNCTION("VGUI", "SetTextPosition", [](FunctionContext* context, ClassData* data) -> void { + uint64_t textID = context->GetArgumentOr<uint64_t>(0, 0); + if(textID == 0) return; + + ScreenText* text = g_VGUI.GetScreenText(textID); + if(!text) return; + + float x = context->GetArgumentOr<float>(1, 0.0); + float y = context->GetArgumentOr<float>(1, 0.0); + + if(x < 0.0) x = 0.0; + if(x > 1.0) x = 1.0; + + if(y < 0.0) y = 0.0; + if(y > 1.0) y = 1.0; + + text->SetPosition(x, y); + }); + + ADD_CLASS_FUNCTION("VGUI", "SetTextColor", [](FunctionContext* context, ClassData* data) -> void { + uint64_t textID = context->GetArgumentOr<uint64_t>(0, 0); + if(textID == 0) return; + + ScreenText* text = g_VGUI.GetScreenText(textID); + if(!text) return; + + ClassData* cdata = context->GetArgumentOr<ClassData*>(1, nullptr); + if(!cdata) return; + if(!cdata->HasData("Color_ptr")) return; + + Color value = cdata->GetData<Color>("Color_ptr"); + text->SetColor(value); + }); +}) \ No newline at end of file diff --git a/src/scripting/entities/weapons.cpp b/src/scripting/entities/weapons.cpp new file mode 100644 index 000000000..e1283f1fe --- /dev/null +++ b/src/scripting/entities/weapons.cpp @@ -0,0 +1,392 @@ +#include <vector> +#include <set> +#include <public/tier1/KeyValues.h> + +#include <scripting/core.h> +#include <memory/gamedata/gamedata.h> +#include <memory/virtual/virtual.h> +#include <entities/system.h> +#include <utils/utils.h> + +#include "ehandle.h" +#include <sdk/schema.h> +#include <server/player/manager.h> + +typedef void (*GiveNamedItem_t)(void*, const char*, int, int, int, int); + +std::set<uint16_t> paintkitsFallbackCheck; + +void* GetWeaponServices(int playerid) { + auto player = g_playerManager.GetPlayer(playerid); + if(!player) return nullptr; + + void* pawn = player->GetPawn(); + if(!pawn) return nullptr; + + void* weaponServices = schema::GetProp<void*>(pawn, "CBasePlayerPawn", "m_pWeaponServices"); + if(!weaponServices) return nullptr; + + return weaponServices; +} + +void DropWeapon(void* weaponServices, void* weapon) +{ + if(!weaponServices) return; + if(!weapon) return; + + CALL_VIRTUAL(void, g_GameData.GetOffset("CCSPlayer_WeaponServices_DropWeapon"), weaponServices, weapon, nullptr, nullptr); +} + +void RemoveWeapon(void* weaponServices, void* weapon) +{ + if(!weaponServices) return; + if(!weapon) return; + + DropWeapon(weaponServices, weapon); + g_entSystem.Despawn(weapon); +} + +std::vector<void*> GetWeapons(int playerid) { + std::vector<void*> weapons; + + void* weaponServices = GetWeaponServices(playerid); + if(!weaponServices) return weapons; + + CUtlVector<CHandle<CEntityInstance>>* weaponsVec = schema::GetPropPtr<CUtlVector<CHandle<CEntityInstance>>>(weaponServices, "CPlayer_WeaponServices", "m_hMyWeapons"); + if(!weaponsVec) return weapons; + + FOR_EACH_VEC(*weaponsVec, i) + { + CHandle<CEntityInstance>& weaponHandle = (*weaponsVec)[i]; + if (!weaponHandle.IsValid()) + continue; + + weapons.push_back(weaponHandle.Get()); + } + + return weapons; +} + +LoadScriptingComponent(weapons, [](PluginObject plugin, EContext* ctx) -> void { + ADD_CLASS("WeaponManager"); + ADD_CLASS("Weapon"); + + ADD_CLASS_FUNCTION("WeaponManager", "GiveWeapon", [](FunctionContext* context, ClassData* data) -> void { + int playerid = data->GetDataOr<int>("playerid", -1); + if(playerid == -1) return; + + std::string weapon_name = context->GetArgumentOr<std::string>(0, ""); + if(weapon_name == "") return; + + auto player = g_playerManager.GetPlayer(playerid); + if(!player) return; + + void* pawn = player->GetPawn(); + if(!pawn) return; + + void* itemServices = schema::GetProp<void*>(pawn, "CBasePlayerPawn", "m_pItemServices"); + if(!itemServices) return; + + g_GameData.FetchSignature<GiveNamedItem_t>("GiveNamedItem")(itemServices, weapon_name.c_str(), 0, 0, 0, 0); + }); + + ADD_CLASS_FUNCTION("WeaponManager", "RemoveWeapons", [](FunctionContext* context, ClassData* data) -> void { + int playerid = data->GetDataOr<int>("playerid", -1); + if(playerid == -1) return; + + void* weaponService = GetWeaponServices(playerid); + if(!weaponService) return; + + auto weapons = GetWeapons(playerid); + + for(void* weapon : weapons) + RemoveWeapon(weaponService, weapon); + }); + + ADD_CLASS_FUNCTION("WeaponManager", "DropWeapons", [](FunctionContext* context, ClassData* data) -> void { + int playerid = data->GetDataOr<int>("playerid", -1); + if(playerid == -1) return; + + void* weaponService = GetWeaponServices(playerid); + if(!weaponService) return; + + auto weapons = GetWeapons(playerid); + + for(void* weapon : weapons) + DropWeapon(weaponService, weapon); + }); + + ADD_CLASS_FUNCTION("WeaponManager", "GetWeapons", [](FunctionContext* context, ClassData* data) -> void { + int playerid = data->GetDataOr<int>("playerid", -1); + if(playerid == -1) return; + + auto weapons = GetWeapons(playerid); + + std::vector<EValue> scriptWeapons; + for(void* weapon : weapons) + scriptWeapons.push_back(MAKE_CLASS_INSTANCE("Weapon", { { "playerid", playerid }, { "ptr", weapon } })); + + context->SetReturn(scriptWeapons); + }); + + ADD_CLASS_FUNCTION("WeaponManager", "RemoveByClassname", [](FunctionContext* context, ClassData* data) -> void { + int playerid = data->GetDataOr<int>("playerid", -1); + if(playerid == -1) return; + + std::string class_name = context->GetArgumentOr<std::string>(0, ""); + if(class_name == "") return; + + void* weaponService = GetWeaponServices(playerid); + if(!weaponService) return; + + auto weapons = GetWeapons(playerid); + + for(void* weapon : weapons) + if(((CEntityInstance*)weapon)->GetClassname() == class_name) + RemoveWeapon(weaponService, weapon); + }); + + ADD_CLASS_FUNCTION("WeaponManager", "RemoveBySlot", [](FunctionContext* context, ClassData* data) -> void { + int playerid = data->GetDataOr<int>("playerid", -1); + if(playerid == -1) return; + + int slot = context->GetArgumentOr<int>(0, -1); + if(slot == -1) return; + + void* weaponService = GetWeaponServices(playerid); + if(!weaponService) return; + + auto weapons = GetWeapons(playerid); + + for(void* weapon : weapons) { + void* vdata = schema::GetVData(weapon); + int gear_slot = schema::GetProp<int>(vdata, "CCSWeaponBaseVData", "m_GearSlot"); + if(gear_slot == slot) { + RemoveWeapon(weaponService, weapon); + } + } + }); + + ADD_CLASS_FUNCTION("WeaponManager", "GetFirstInSlot", [](FunctionContext* context, ClassData* data) -> void { + int playerid = data->GetDataOr<int>("playerid", -1); + if(playerid == -1) return; + + int slot = context->GetArgumentOr<int>(0, -1); + if(slot == -1) return; + + void* weaponService = GetWeaponServices(playerid); + if(!weaponService) return; + + auto weapons = GetWeapons(playerid); + + void* weaponptr = nullptr; + for(void* weapon : weapons) { + void* vdata = schema::GetVData(weapon); + int gear_slot = schema::GetProp<int>(vdata, "CCSWeaponBaseVData", "m_GearSlot"); + if(gear_slot == slot) { + weaponptr = weapon; + break; + } + } + + context->SetReturn(MAKE_CLASS_INSTANCE("Weapon", { { "playerid", playerid }, { "ptr", weaponptr } })); + }); + + ADD_CLASS_FUNCTION("WeaponManager", "GetInSlot", [](FunctionContext* context, ClassData* data) -> void { + int playerid = data->GetDataOr<int>("playerid", -1); + if(playerid == -1) return; + + int slot = context->GetArgumentOr<int>(0, -1); + if(slot == -1) return; + + void* weaponService = GetWeaponServices(playerid); + if(!weaponService) return; + + auto weapons = GetWeapons(playerid); + + std::vector<EValue> scriptWeapons; + for(void* weapon : weapons) { + void* vdata = schema::GetVData(weapon); + int gear_slot = schema::GetProp<int>(vdata, "CCSWeaponBaseVData", "m_GearSlot"); + if(gear_slot == slot) { + scriptWeapons.push_back(MAKE_CLASS_INSTANCE("Weapon", { { "playerid", playerid }, { "ptr", weapon } })); + } + } + + context->SetReturn(scriptWeapons); + }); + + ADD_CLASS_FUNCTION("WeaponManager", "RemoveByItemDefinition", [](FunctionContext* context, ClassData* data) -> void { + int playerid = data->GetDataOr<int>("playerid", -1); + if(playerid == -1) return; + + int itemid = context->GetArgumentOr<int>(0, -1); + if(itemid == -1) return; + + void* weaponService = GetWeaponServices(playerid); + if(!weaponService) return; + + auto weapons = GetWeapons(playerid); + + for(void* weapon : weapons) { + void* attrContainer = schema::GetPropPtr<void>(weapon, "CEconEntity", "m_AttributeManager"); + if(!attrContainer) continue; + + void* item = schema::GetPropPtr<void>(attrContainer, "CAttributeContainer", "m_Item"); + if(!item) continue; + + int itemidx = schema::GetProp<int>(item, "CEconItemView", "m_iItemDefinitionIndex"); + if(itemidx == itemid) { + RemoveWeapon(weaponService, weapon); + } + } + }); + + ADD_CLASS_FUNCTION("Weapon", "Weapon", [](FunctionContext* context, ClassData* data) -> void { + int playerid = context->GetArgumentOr<int>(0, -1); + if(playerid == -1) return; + + data->SetData("playerid", playerid); + + auto classData = context->GetArgumentOr<ClassData*>(1, nullptr); + if(classData) { + if(classData->HasData("class_name")) { + data->SetData("ptr", classData->GetData<void*>("class_ptr")); + } else if(classData->HasData("ptr")) { + data->SetData("ptr", classData->GetData<void*>("ptr")); + } else data->SetData("ptr", (void*)nullptr); + } else { + auto strptr = context->GetArgumentOr<std::string>(1, ""); + if(starts_with(strptr, "0x")) { + data->SetData("ptr", (void*)StringToPtr(strptr)); + } else data->SetData("ptr", (void*)nullptr); + } + }); + + ADD_CLASS_FUNCTION("Weapon", "GetCBasePlayerWeapon", [](FunctionContext* context, ClassData* data) -> void { + context->SetReturn(MakeSDKClassInstance("CBasePlayerWeapon", data->GetData<void*>("ptr"), context->GetPluginContext())); + }); + + ADD_CLASS_FUNCTION("Weapon", "GetCCSWeaponBase", [](FunctionContext* context, ClassData* data) -> void { + context->SetReturn(MakeSDKClassInstance("CCSWeaponBase", data->GetData<void*>("ptr"), context->GetPluginContext())); + }); + + ADD_CLASS_FUNCTION("Weapon", "GetCBasePlayerWeaponVData", [](FunctionContext* context, ClassData* data) -> void { + context->SetReturn(MakeSDKClassInstance("CBasePlayerWeaponVData", data->GetData<void*>("ptr"), context->GetPluginContext())); + }); + + ADD_CLASS_FUNCTION("Weapon", "GetCCSWeaponBaseVData", [](FunctionContext* context, ClassData* data) -> void { + context->SetReturn(MakeSDKClassInstance("CCSWeaponBaseVData", data->GetData<void*>("ptr"), context->GetPluginContext())); + }); + + ADD_CLASS_FUNCTION("Weapon", "Drop", [](FunctionContext* context, ClassData* data) -> void { + int playerid = data->GetDataOr<int>("playerid", -1); + if(playerid == -1) return; + + void* weaponService = GetWeaponServices(playerid); + if(!weaponService) return; + + void* weapon = data->GetData<void*>("ptr"); + + DropWeapon(weaponService, weapon); + }); + + ADD_CLASS_FUNCTION("Weapon", "Remove", [](FunctionContext* context, ClassData* data) -> void { + int playerid = data->GetDataOr<int>("playerid", -1); + if(playerid == -1) return; + + void* weaponService = GetWeaponServices(playerid); + if(!weaponService) return; + + void* weapon = data->GetData<void*>("ptr"); + + RemoveWeapon(weaponService, weapon); + }); + + ADD_CLASS_FUNCTION("Weapon", "SetDefaultAttributes", [](FunctionContext* context, ClassData* data) -> void { + if(paintkitsFallbackCheck.size() == 0) { + KeyValues kv("scripts/items/items_game.txt"); + kv.LoadFromFile(g_pFullFileSystem, "scripts/items/items_game.txt", "GAME"); + + for (KeyValues *sub = kv.GetFirstSubKey(); sub != nullptr; sub = sub->GetNextKey()) { + if(!strcmp(sub->GetName(), "paint_kits")) { + for (KeyValues *sub2 = sub->GetFirstSubKey(); sub2 != nullptr; sub2 = sub2->GetNextKey()) { + if(strcmp(sub2->GetString("composite_material_path", ""), "") != 0 && !sub2->GetBool("use_legacy_model", false)) { + paintkitsFallbackCheck.insert(V_StringToUint16(sub2->GetName(), 0)); + } + } + } + } + } + + void* weapon = data->GetData<void*>("ptr"); + if(!weapon) return; + + int playerid = data->GetDataOr<int>("playerid", -1); + if(playerid == -1) return; + + auto player = g_playerManager.GetPlayer(playerid); + if(!player) return; + + void* pawn = player->GetPlayerPawn(); + if(!pawn) return; + + void* attrContainer = schema::GetPropPtr<void>(weapon, "CEconEntity", "m_AttributeManager"); + if(!attrContainer) return; + + void* item = schema::GetPropPtr<void>(attrContainer, "CAttributeContainer", "m_Item"); + if(!item) return; + + schema::SetProp(item, "CEconItemView", "m_iItemIDHigh", (uint32_t)-1); + + void* vdata = schema::GetVData(weapon); + int gear_slot = schema::GetProp<int>(vdata, "CCSWeaponBaseVData", "m_GearSlot"); + if(gear_slot == 0x2) { + schema::SetProp(item, "CEconItemView", "m_iEntityQuality", 3); + } + + int fallbackPaintKit = schema::GetProp<int>(weapon, "CEconEntity", "m_nFallbackPaintKit"); + bool legacy = (paintkitsFallbackCheck.find(fallbackPaintKit) == paintkitsFallbackCheck.end()); + + void* bodyComponent = schema::GetProp<void*>(weapon, "CBaseEntity", "m_CBodyComponent"); + if(bodyComponent) { + void* sceneNode = schema::GetProp<void*>(bodyComponent, "CBodyComponent", "m_pSceneNode"); + if(sceneNode) { + void* skeletonInstance = CALL_VIRTUAL(void*, g_GameData.GetOffset("CGameSceneNode_GetSkeletonInstance"), sceneNode); + if(skeletonInstance) { + void* modelState = schema::GetPropPtr<void>(skeletonInstance, "CSkeletonInstance", "m_modelState"); + if(modelState) { + uint64_t meshGroupMask = schema::GetProp<uint64_t>(modelState, "CModelState", "m_MeshGroupMask"); + if(meshGroupMask != (legacy ? 2 : 1)) schema::SetProp<uint64_t>(modelState, "CModelState", "m_MeshGroupMask", (legacy ? 2 : 1)); + } + } + } + } + + void* vmServices = schema::GetProp<void*>(pawn, "CCSPlayerPawnBase", "m_pViewModelServices"); + if(!vmServices) return; + + CHandle<CEntityInstance>* viewmodelHandles = schema::GetPropPtr<CHandle<CEntityInstance>>(vmServices, "CCSPlayer_ViewModelServices", "m_hViewModel"); + if (!viewmodelHandles) return; + + CEntityInstance* viewmodel = viewmodelHandles[0]; + if(!viewmodel) return; + + void* vmbodyComponent = schema::GetProp<void*>(viewmodel, "CBaseEntity", "m_CBodyComponent"); + if(vmbodyComponent) { + void* vmsceneNode = schema::GetProp<void*>(vmbodyComponent, "CBodyComponent", "m_pSceneNode"); + if(vmsceneNode) { + void* vmskeletonInstance = CALL_VIRTUAL(void*, g_GameData.GetOffset("CGameSceneNode_GetSkeletonInstance"), vmsceneNode); + if(vmskeletonInstance) { + void* vmmodelState = schema::GetPropPtr<void>(vmskeletonInstance, "CSkeletonInstance", "m_modelState"); + if(vmmodelState) { + uint64_t meshGroupMask = schema::GetProp<uint64_t>(vmmodelState, "CModelState", "m_MeshGroupMask"); + if(meshGroupMask != (legacy ? 2 : 1)) schema::SetProp<uint64_t>(vmmodelState, "CModelState", "m_MeshGroupMask", (legacy ? 2 : 1)); + } + } + } + } + + SetStateChanged((uintptr_t)vmbodyComponent, "CBaseEntity", "m_CBodyComponent", 0); + }); +}) \ No newline at end of file diff --git a/src/scripting/filesystem/files.cpp b/src/scripting/filesystem/files.cpp new file mode 100644 index 000000000..a3c672efd --- /dev/null +++ b/src/scripting/filesystem/files.cpp @@ -0,0 +1,102 @@ +#include <scripting/core.h> +#include <filesystem/files/files.h> + +LoadScriptingComponent(files, [](PluginObject plugin, EContext* ctx) -> void { + ADD_CLASS("Files"); + + ADD_CLASS_FUNCTION("Files", "Files", [](FunctionContext* context, ClassData* data) -> void {}); + + ADD_CLASS_FUNCTION("Files", "Append", [](FunctionContext* context, ClassData* data) -> void { + std::string path = context->GetArgumentOr<std::string>(0, ""); + if(path == "") return; + std::string content = context->GetArgumentOr<std::string>(1, ""); + bool hasdate = context->GetArgumentOr<bool>(2, false); + + Files::Append(path, content, hasdate); + }); + + ADD_CLASS_FUNCTION("Files", "Write", [](FunctionContext* context, ClassData* data) -> void { + std::string path = context->GetArgumentOr<std::string>(0, ""); + if(path == "") return; + std::string content = context->GetArgumentOr<std::string>(1, ""); + bool hasdate = context->GetArgumentOr<bool>(2, false); + + Files::Write(path, content, hasdate); + }); + + ADD_CLASS_FUNCTION("Files", "Read", [](FunctionContext* context, ClassData* data) -> void { + std::string path = context->GetArgumentOr<std::string>(0, ""); + if(path == "") return; + + context->SetReturn(Files::Read(path)); + }); + + ADD_CLASS_FUNCTION("Files", "Delete", [](FunctionContext* context, ClassData* data) -> void { + std::string path = context->GetArgumentOr<std::string>(0, ""); + if(path == "") return; + + Files::Delete(path); + }); + + ADD_CLASS_FUNCTION("Files", "GetBase", [](FunctionContext* context, ClassData* data) -> void { + std::string path = context->GetArgumentOr<std::string>(0, ""); + if(path == "") return; + + context->SetReturn(Files::getBase(path)); + }); + + ADD_CLASS_FUNCTION("Files", "ExistsPath", [](FunctionContext* context, ClassData* data) -> void { + std::string path = context->GetArgumentOr<std::string>(0, ""); + if(path == "") return; + + context->SetReturn(Files::ExistsPath(path)); + }); + + ADD_CLASS_FUNCTION("Files", "IsDirectory", [](FunctionContext* context, ClassData* data) -> void { + std::string path = context->GetArgumentOr<std::string>(0, ""); + if(path == "") return; + + context->SetReturn(Files::IsDirectory(path)); + }); + + ADD_CLASS_FUNCTION("Files", "FetchFileNames", [](FunctionContext* context, ClassData* data) -> void { + std::string path = context->GetArgumentOr<std::string>(0, ""); + if(path == "") return; + + context->SetReturn(Files::FetchFileNames(path)); + }); + + ADD_CLASS_FUNCTION("Files", "FetchDirectories", [](FunctionContext* context, ClassData* data) -> void { + std::string path = context->GetArgumentOr<std::string>(0, ""); + if(path == "") return; + + context->SetReturn(Files::FetchDirectories(path)); + }); + + ADD_CLASS_FUNCTION("Files", "CreateDirectory", [](FunctionContext* context, ClassData* data) -> void { + std::string path = context->GetArgumentOr<std::string>(0, ""); + if(path == "") return; + + context->SetReturn(Files::CreateDirectory(path)); + }); + + ADD_CLASS_FUNCTION("Files", "Compress", [](FunctionContext* context, ClassData* data) -> void { + std::string path = context->GetArgumentOr<std::string>(0, ""); + if(path == "") return; + + std::string output = context->GetArgumentOr<std::string>(1, ""); + if(output == "") return; + + context->SetReturn(Files::Compress(path, output)); + }); + + ADD_CLASS_FUNCTION("Files", "Decompress", [](FunctionContext* context, ClassData* data) -> void { + std::string path = context->GetArgumentOr<std::string>(0, ""); + if(path == "") return; + + std::string output = context->GetArgumentOr<std::string>(1, ""); + if(output == "") return; + + context->SetReturn(Files::Decompress(path, output)); + }); +}) \ No newline at end of file diff --git a/src/scripting/filesystem/logger.cpp b/src/scripting/filesystem/logger.cpp new file mode 100644 index 000000000..ada8ca2fc --- /dev/null +++ b/src/scripting/filesystem/logger.cpp @@ -0,0 +1,26 @@ +#include <scripting/core.h> +#include <filesystem/logs/logger.h> + +LoadScriptingComponent(logger, [](PluginObject plugin, EContext* ctx) -> void { + ADD_CLASS("Logger"); + + ADD_CLASS_FUNCTION("Logger", "Logger", [](FunctionContext* context, ClassData* data) -> void { + std::string plugin_name = FetchPluginName(context->GetPluginContext()); + data->SetData("plugin_name", plugin_name); + g_Logger.AddLogger(plugin_name, true); + }); + + ADD_CLASS_FUNCTION("Logger", "Write", [](FunctionContext* context, ClassData* data) -> void { + std::string plugin_name = data->GetData<std::string>("plugin_name"); + + int level = context->GetArgumentOr<int>(0, -1); + if(level < 1 || level > 4) return; + + std::string message = context->GetArgumentOr<std::string>(1, ""); + + auto logger = g_Logger.FetchLogger(plugin_name); + if(!logger) return; + + logger->WriteLog((LogType_t)level, message); + }); +}) \ No newline at end of file diff --git a/src/scripting/memory/hooks.cpp b/src/scripting/memory/hooks.cpp new file mode 100644 index 000000000..e035e8481 --- /dev/null +++ b/src/scripting/memory/hooks.cpp @@ -0,0 +1,519 @@ +#include <scripting/core.h> + +#include <memory/hooks/manager.h> +#include <utils/common.h> +#include <plugins/manager.h> + +#include "ehandle.h" + +/* + Args List Convention + - p -> Pointer + - b -> Boolean + - f -> Float + - d -> Double + - i -> Integer 32-bit + - u -> Unsigned Integer 32-bit + - s -> const char* + - I -> Integer 64-bit + - U -> Unsigned Integer 64-bit + - v -> Void +*/ + +struct Hook +{ + void* hookPtrPre; + void* hookPtrPost; + std::string argsList; + char retType; + std::string id; + bool isVirtual; +}; + +struct EntityIOConnectionDesc_t +{ + string_t m_targetDesc; + string_t m_targetInput; + string_t m_valueOverride; + CEntityHandle m_hTarget; + EntityIOTargetType_t m_nTargetType; + int32 m_nTimesToFire; + float m_flDelay; +}; + +struct EntityIOConnection_t : EntityIOConnectionDesc_t +{ + bool m_bMarkedForRemoval; + EntityIOConnection_t* m_pNext; +}; + +struct EntityIOOutputDesc_t +{ + const char* m_pName; + uint32 m_nFlags; + uint32 m_nOutputOffset; +}; + +class CEntityIOOutput +{ +public: + void* vtable; + EntityIOConnection_t* m_pConnections; + EntityIOOutputDesc_t* m_pDesc; +}; + +std::map<dyno::IHook*, std::vector<Hook>> hooksList; +std::map<std::string, dyno::IHook*> hooksMap; +std::map<uint64_t, std::vector<std::string>> outputHooksList; + +dyno::ReturnAction HookCallback(dyno::CallbackType type, dyno::IHook& hook) { + dyno::IHook* hptr = &hook; + std::string callbackType = (type == dyno::CallbackType::Pre ? "Pre" : "Post"); + if (hooksList.find(hptr) == hooksList.end()) + return dyno::ReturnAction::Ignored; + + ClassData ev({ { "plugin_name", "core" }, { "hook_ptr", hptr } }, "Event", nullptr); + for (auto hk : hooksList[hptr]) + { + if (g_pluginManager.ExecuteEvent("core", "hook:" + callbackType + ":" + hk.id, {}, &ev) != EventResult::Continue) { + return dyno::ReturnAction::Supercede; + } + } + + return dyno::ReturnAction::Ignored; +} + +dyno::ReturnAction Hook_FireOutputInternal(dyno::CallbackType type, dyno::IHook& hook) { + CEntityIOOutput* pThis = hook.getArgument<CEntityIOOutput*>(0); + CEntityInstance* pActivator = hook.getArgument<CEntityInstance*>(1); + CEntityInstance* pCaller = hook.getArgument<CEntityInstance*>(2); + float delay = hook.getArgument<float>(4); + + std::vector searchOutputs{ + ((uint64_t)hash_32_fnv1a_const("*") << 32 | hash_32_fnv1a_const(pThis->m_pDesc->m_pName)), + ((uint64_t)hash_32_fnv1a_const("*") << 32 | hash_32_fnv1a_const("*")) + }; + + if (pCaller) + { + searchOutputs.push_back(((uint64_t)hash_32_fnv1a_const(pCaller->GetClassname()) << 32 | hash_32_fnv1a_const(pThis->m_pDesc->m_pName))); + searchOutputs.push_back(((uint64_t)hash_32_fnv1a_const(pCaller->GetClassname()) << 32 | hash_32_fnv1a_const("*"))); + } + + std::vector<std::string> hookIds; + + if (pCaller) + for (auto output : searchOutputs) + for (auto hookid : outputHooksList[output]) + hookIds.push_back(hookid); + + if (hookIds.size() > 0) + { + ClassData ev({ { "plugin_name", "core" } }, "Event", nullptr); + ClassData* entIOOutput = new ClassData({ { "class_name", std::string("CEntityIOOutput") }, { "class_ptr", (void*)pThis }, { "should_mark_freeable", true } }, "SDKClass", nullptr); + ClassData* Activator = new ClassData({ { "class_name", std::string("CEntityInstance") }, { "class_ptr", (void*)pActivator }, { "should_mark_freeable", true } }, "SDKClass", nullptr); + ClassData* Caller = new ClassData({ { "class_name", std::string("CEntityInstance") }, { "class_ptr", (void*)pCaller }, { "should_mark_freeable", true } }, "SDKClass", nullptr); + for (auto id : hookIds) + { + auto result = g_pluginManager.ExecuteEvent("core", std::string("hook:") + (type == dyno::CallbackType::Pre ? "Pre" : "Post") + ":" + id, { + entIOOutput, + pThis->m_pDesc->m_pName, + Activator, + Caller, + delay + }, &ev); + if (result != EventResult::Continue) + { + return dyno::ReturnAction::Supercede; + } + } + } + + return dyno::ReturnAction::Ignored; +} + +FunctionHook FireOutputInternalPre("FireOutputInternal", dyno::CallbackType::Pre, Hook_FireOutputInternal, "ppppf", 'v'); +FunctionHook FireOutputInternalPost("FireOutputInternal", dyno::CallbackType::Post, Hook_FireOutputInternal, "ppppf", 'v'); + +LoadScriptingComponent(hooks, [](PluginObject plugin, EContext* ctx) -> void { + ADD_CLASS("Hooks"); + + ADD_CLASS_FUNCTION("Hooks", "Hooks", [](FunctionContext* context, ClassData* data) -> void { + data->SetData("hooks_arr", std::vector<Hook>{}); + }); + + ADD_CLASS_FUNCTION("Hooks", "~Hooks", [](FunctionContext* context, ClassData* data) -> void { + std::vector<Hook> hookArr = data->GetData<std::vector<Hook>>("hooks_arr"); + + for (auto hk : hookArr) { + auto hksMap = hooksMap[hk.id]; + if (hksMap) { + for (auto it = hooksList[hksMap].begin(); it != hooksList[hksMap].end(); ++it) { + if ((*it).id == hk.id) { + hooksList[hksMap].erase(it); + break; + } + } + } + + hooksMap.erase(hk.id); + + if (!hk.isVirtual) { + delete ((FunctionHook*)hk.hookPtrPre); + delete ((FunctionHook*)hk.hookPtrPost); + } + else { + delete ((VFunctionHook*)hk.hookPtrPre); + delete ((VFunctionHook*)hk.hookPtrPost); + } + } + }); + + ADD_CLASS_FUNCTION("Hooks", "Add", [](FunctionContext* context, ClassData* data) -> void { + auto classData = context->GetArgumentOr<ClassData*>(0, nullptr); + if (!classData) return; + + void* ptr = classData->GetDataOr<void*>("ptr", nullptr); + if (!ptr) return; + + std::string args_list = context->GetArgumentOr<std::string>(1, ""); + char ret_type = context->GetArgumentOr<std::string>(2, "v").at(0); + + std::string id = get_uuid(); + Hook hk = { + new FunctionHook(ptr, dyno::CallbackType::Pre, HookCallback, args_list, ret_type), + new FunctionHook(ptr, dyno::CallbackType::Post, HookCallback, args_list, ret_type), + args_list, + ret_type, + id, + false + }; + + std::vector<Hook> hookArr = data->GetData<std::vector<Hook>>("hooks_arr"); + hookArr.push_back(hk); + data->SetData("hooks_arr", hookArr); + + context->SetReturn(id); + }); + + ADD_CLASS_FUNCTION("Hooks", "AddVirtual", [](FunctionContext* context, ClassData* data) -> void { + std::string library = context->GetArgumentOr<std::string>(0, ""); + std::string vtable_name = context->GetArgumentOr<std::string>(1, ""); + std::string offset = context->GetArgumentOr<std::string>(2, ""); + + std::string args_list = context->GetArgumentOr<std::string>(3, ""); + char ret_type = context->GetArgumentOr<std::string>(4, "v").at(0); + + std::string id = get_uuid(); + Hook hk = { + new VFunctionHook(library, vtable_name, offset, dyno::CallbackType::Pre, HookCallback, args_list, ret_type), + new VFunctionHook(library, vtable_name, offset, dyno::CallbackType::Post, HookCallback, args_list, ret_type), + args_list, + ret_type, + id, + true + }; + + std::vector<Hook> hookArr = data->GetData<std::vector<Hook>>("hooks_arr"); + hookArr.push_back(hk); + data->SetData("hooks_arr", hookArr); + + context->SetReturn(id); + }); + + ADD_CLASS_FUNCTION("Hooks", "Call", [](FunctionContext* context, ClassData* data) -> void { + std::string hookID = context->GetArgumentOr<std::string>(0, ""); + if (hookID == "") return; + + std::vector<std::any> hookPayload = context->GetArgumentOr<std::vector<std::any>>(1, std::vector<std::any>{}); + if (hooksMap.find(hookID) == hooksMap.end()) return; + + auto hook = hooksMap[hookID]; + if (hooksList.find(hook) == hooksList.end()) return; + if (hooksList[hook].size() <= 0) return; + + auto hk = hooksList[hook][0]; + + if (!hk.isVirtual) { + context->SetReturn(((FunctionHook*)hk.hookPtrPre)->Call(hookPayload)); + } + else { + context->SetReturn(((VFunctionHook*)hk.hookPtrPre)->Call(hookPayload)); + } + }); + + ADD_CLASS_FUNCTION("Hooks", "AddEntityOutputHook", [](FunctionContext* context, ClassData* data) -> void { + std::string classname = context->GetArgumentOr<std::string>(0, ""); + std::string output = context->GetArgumentOr<std::string>(1, ""); + + std::string id = get_uuid(); + uint64_t outputKey = ((uint64_t)hash_32_fnv1a_const(classname.c_str()) << 32 | hash_32_fnv1a_const(output.c_str())); + + if (outputHooksList.find(outputKey) == outputHooksList.end()) + outputHooksList.insert({ outputKey, {} }); + + outputHooksList[outputKey].push_back(id); + context->SetReturn(id); + }); + + ADD_CLASS_FUNCTION("Event", "IsHook", [](FunctionContext* context, ClassData* data) -> void { + context->SetReturn(data->HasData("hook_ptr")); + }); + + ADD_CLASS_FUNCTION("Event", "GetHookBool", [](FunctionContext* context, ClassData* data) -> void { + if (!data->HasData("hook_ptr")) return context->SetReturn(false); + + int index = context->GetArgumentOr<int>(0, 0); + context->SetReturn(data->GetData<dyno::IHook*>("hook_ptr")->getArgument<bool>(index)); + }); + + ADD_CLASS_FUNCTION("Event", "GetHookInt", [](FunctionContext* context, ClassData* data) -> void { + if (!data->HasData("hook_ptr")) return context->SetReturn(0); + + int index = context->GetArgumentOr<int>(0, 0); + context->SetReturn(data->GetData<dyno::IHook*>("hook_ptr")->getArgument<int>(index)); + }); + + ADD_CLASS_FUNCTION("Event", "GetHookUint64", [](FunctionContext* context, ClassData* data) -> void { + if (!data->HasData("hook_ptr")) return context->SetReturn(0); + + int index = context->GetArgumentOr<int>(0, 0); + context->SetReturn(data->GetData<dyno::IHook*>("hook_ptr")->getArgument<uint64_t>(index)); + }); + + ADD_CLASS_FUNCTION("Event", "GetHookFloat", [](FunctionContext* context, ClassData* data) -> void { + if (!data->HasData("hook_ptr")) return context->SetReturn(0.0); + + int index = context->GetArgumentOr<int>(0, 0); + context->SetReturn(data->GetData<dyno::IHook*>("hook_ptr")->getArgument<float>(index)); + }); + + ADD_CLASS_FUNCTION("Event", "GetHookString", [](FunctionContext* context, ClassData* data) -> void { + if (!data->HasData("hook_ptr")) return context->SetReturn(""); + + int index = context->GetArgumentOr<int>(0, 0); + context->SetReturn(std::string(data->GetData<dyno::IHook*>("hook_ptr")->getArgument<const char*>(index))); + }); + + ADD_CLASS_FUNCTION("Event", "GetHookPointer", [](FunctionContext* context, ClassData* data) -> void { + if (!data->HasData("hook_ptr")) return context->SetReturn(MAKE_CLASS_INSTANCE("Memory", { { "ptr", nullptr } })); + + int index = context->GetArgumentOr<int>(0, 0); + context->SetReturn(MAKE_CLASS_INSTANCE("Memory", { { "ptr", data->GetData<dyno::IHook*>("hook_ptr")->getArgument<void*>(index) } })); + }); + + ADD_CLASS_FUNCTION("Event", "GetHookDouble", [](FunctionContext* context, ClassData* data) -> void { + if (!data->HasData("hook_ptr")) return context->SetReturn(0.0); + + int index = context->GetArgumentOr<int>(0, 0); + context->SetReturn(data->GetData<dyno::IHook*>("hook_ptr")->getArgument<double>(index)); + }); + + ADD_CLASS_FUNCTION("Event", "GetHookUInt", [](FunctionContext* context, ClassData* data) -> void { + if (!data->HasData("hook_ptr")) return context->SetReturn(0); + + int index = context->GetArgumentOr<int>(0, 0); + context->SetReturn(data->GetData<dyno::IHook*>("hook_ptr")->getArgument<uint32_t>(index)); + }); + + ADD_CLASS_FUNCTION("Event", "GetHookInt64", [](FunctionContext* context, ClassData* data) -> void { + if (!data->HasData("hook_ptr")) return context->SetReturn(0); + + int index = context->GetArgumentOr<int>(0, 0); + context->SetReturn(data->GetData<dyno::IHook*>("hook_ptr")->getArgument<int64_t>(index)); + }); + + ADD_CLASS_FUNCTION("Event", "GetHookInt64", [](FunctionContext* context, ClassData* data) -> void { + if (!data->HasData("hook_ptr")) return context->SetReturn(0); + + int index = context->GetArgumentOr<int>(0, 0); + context->SetReturn(data->GetData<dyno::IHook*>("hook_ptr")->getArgument<int64_t>(index)); + }); + + ADD_CLASS_FUNCTION("Event", "GetHookReturn", [](FunctionContext* context, ClassData* data) -> void { + if (!data->HasData("hook_ptr")) return context->SetReturn(nullptr); + + auto hookPtr = data->GetData<dyno::IHook*>("hook_ptr"); + + if (hooksList.find(hookPtr) == hooksList.end()) + return context->SetReturn(nullptr); + + if (hooksList[hookPtr].size() <= 0) + return context->SetReturn(nullptr); + + Hook hk = hooksList[hookPtr][0]; + if (hk.retType == 0) + return context->SetReturn(nullptr); + + if (hk.retType == 'p') + return context->SetReturn(MAKE_CLASS_INSTANCE("Memory", { { "ptr", hookPtr->getReturn<void*>() } })); + else if (hk.retType == 'f') + return context->SetReturn(hookPtr->getReturn<float>()); + else if (hk.retType == 'b') + return context->SetReturn(hookPtr->getReturn<bool>()); + else if (hk.retType == 'd') + return context->SetReturn(hookPtr->getReturn<double>()); + else if (hk.retType == 'i') + return context->SetReturn(hookPtr->getReturn<int32_t>()); + else if (hk.retType == 'u') + return context->SetReturn(hookPtr->getReturn<uint32_t>()); + else if (hk.retType == 's') + return context->SetReturn(std::string(hookPtr->getReturn<const char*>())); + else if (hk.retType == 'I') + return context->SetReturn(hookPtr->getReturn<int64_t>()); + else if (hk.retType == 'U') + return context->SetReturn(hookPtr->getReturn<uint64_t>()); + else + { + PRINTF("Invalid argument in return value: '%c'.\n", hk.retType); + return context->SetReturn(nullptr); + } + }); + + ADD_CLASS_FUNCTION("Event", "SetHookBool", [](FunctionContext* context, ClassData* data) -> void { + if (!data->HasData("hook_ptr")) return; + + auto hookPtr = data->GetData<dyno::IHook*>("hook_ptr"); + int index = context->GetArgumentOr<int>(0, 0); + bool value = context->GetArgumentOr<bool>(1, false); + + hookPtr->setArgument(index, value); + }); + + ADD_CLASS_FUNCTION("Event", "SetHookInt", [](FunctionContext* context, ClassData* data) -> void { + if (!data->HasData("hook_ptr")) return; + + auto hookPtr = data->GetData<dyno::IHook*>("hook_ptr"); + int index = context->GetArgumentOr<int>(0, 0); + int value = context->GetArgumentOr<int>(1, 0); + + hookPtr->setArgument(index, value); + }); + + ADD_CLASS_FUNCTION("Event", "SetHookUint64", [](FunctionContext* context, ClassData* data) -> void { + if (!data->HasData("hook_ptr")) return; + + auto hookPtr = data->GetData<dyno::IHook*>("hook_ptr"); + int index = context->GetArgumentOr<int>(0, 0); + uint64_t value = context->GetArgumentOr<uint64_t>(1, 0); + + hookPtr->setArgument(index, value); + }); + + ADD_CLASS_FUNCTION("Event", "SetHookFloat", [](FunctionContext* context, ClassData* data) -> void { + if (!data->HasData("hook_ptr")) return; + + auto hookPtr = data->GetData<dyno::IHook*>("hook_ptr"); + int index = context->GetArgumentOr<int>(0, 0); + float value = context->GetArgumentOr<float>(1, 0.0f); + + hookPtr->setArgument(index, value); + }); + + ADD_CLASS_FUNCTION("Event", "SetHookString", [](FunctionContext* context, ClassData* data) -> void { + if (!data->HasData("hook_ptr")) return; + + auto hookPtr = data->GetData<dyno::IHook*>("hook_ptr"); + int index = context->GetArgumentOr<int>(0, 0); + std::string value = context->GetArgumentOr<std::string>(1, ""); + + hookPtr->setArgument(index, value.c_str()); + }); + + ADD_CLASS_FUNCTION("Event", "SetHookPointer", [](FunctionContext* context, ClassData* data) -> void { + if (!data->HasData("hook_ptr")) return; + + auto hookPtr = data->GetData<dyno::IHook*>("hook_ptr"); + int index = context->GetArgumentOr<int>(0, 0); + ClassData* value = context->GetArgumentOr<ClassData*>(1, nullptr); + if (!value) return; + + void* mem = value->GetDataOr<void*>("ptr", nullptr); + + hookPtr->setArgument(index, mem); + }); + + ADD_CLASS_FUNCTION("Event", "SetHookDouble", [](FunctionContext* context, ClassData* data) -> void { + if (!data->HasData("hook_ptr")) return; + + auto hookPtr = data->GetData<dyno::IHook*>("hook_ptr"); + int index = context->GetArgumentOr<int>(0, 0); + double value = context->GetArgumentOr<double>(1, 0.0f); + + hookPtr->setArgument(index, value); + }); + + ADD_CLASS_FUNCTION("Event", "SetHookUInt", [](FunctionContext* context, ClassData* data) -> void { + if (!data->HasData("hook_ptr")) return; + + auto hookPtr = data->GetData<dyno::IHook*>("hook_ptr"); + int index = context->GetArgumentOr<int>(0, 0); + uint32_t value = context->GetArgumentOr<uint32_t>(1, 0); + + hookPtr->setArgument(index, value); + }); + + ADD_CLASS_FUNCTION("Event", "SetHookInt64", [](FunctionContext* context, ClassData* data) -> void { + if (!data->HasData("hook_ptr")) return; + + auto hookPtr = data->GetData<dyno::IHook*>("hook_ptr"); + int index = context->GetArgumentOr<int>(0, 0); + int64_t value = context->GetArgumentOr<int64_t>(1, 0); + + hookPtr->setArgument(index, value); + }); + + ADD_CLASS_FUNCTION("Event", "SetHookReturn", [](FunctionContext* context, ClassData* data) -> void { + if (!data->HasData("hook_ptr")) return; + + auto hookPtr = data->GetData<dyno::IHook*>("hook_ptr"); + std::any value = context->GetArgumentOr<std::any>(0, 0); + + if (!value.has_value()) + return; + + try + { + if (value.type() == typeid(const char*)) + return hookPtr->setReturn(std::any_cast<const char*>(value)); + else if (value.type() == typeid(std::string)) + return hookPtr->setReturn(std::any_cast<std::string>(value).c_str()); + else if (value.type() == typeid(uint64)) + return hookPtr->setReturn(std::any_cast<uint64>(value)); + else if (value.type() == typeid(uint32)) + return hookPtr->setReturn(std::any_cast<uint32>(value)); + else if (value.type() == typeid(unsigned long)) + return hookPtr->setReturn(std::any_cast<unsigned long>(value)); + else if (value.type() == typeid(uint16)) + return hookPtr->setReturn(std::any_cast<uint16>(value)); + else if (value.type() == typeid(uint8)) + return hookPtr->setReturn(std::any_cast<uint8>(value)); + else if (value.type() == typeid(int64)) + return hookPtr->setReturn(std::any_cast<int64>(value)); + else if (value.type() == typeid(int32)) + return hookPtr->setReturn(std::any_cast<int32>(value)); + else if (value.type() == typeid(long)) + return hookPtr->setReturn(std::any_cast<long>(value)); + else if (value.type() == typeid(int16)) + return hookPtr->setReturn(std::any_cast<int16>(value)); + else if (value.type() == typeid(int8)) + return hookPtr->setReturn(std::any_cast<int8>(value)); + else if (value.type() == typeid(bool)) + return hookPtr->setReturn(std::any_cast<bool>(value)); + else if (value.type() == typeid(float)) + return hookPtr->setReturn(std::any_cast<float>(value)); + else if (value.type() == typeid(ClassData*)) + return hookPtr->setReturn(std::any_cast<ClassData*>(value)->GetDataOr<void*>("ptr", nullptr)); + else if (value.type() == typeid(double)) + return hookPtr->setReturn(std::any_cast<double>(value)); + else if (value.type() == typeid(std::nullptr_t)) + return hookPtr->setReturn(0); + else + PRINTF("Unknown Data Type: %s\n", value.type().name()); + } + catch (std::bad_any_cast& err) + { + PRINTF("Invalid casting: %s\n", err.what()); + } + }); +}); \ No newline at end of file diff --git a/src/scripting/memory/keyvalues/centitykeyvalues.cpp b/src/scripting/memory/keyvalues/centitykeyvalues.cpp new file mode 100644 index 000000000..7d2898adc --- /dev/null +++ b/src/scripting/memory/keyvalues/centitykeyvalues.cpp @@ -0,0 +1,254 @@ +#include <scripting/core.h> + +#include <public/entity2/entitykeyvalues.h> +#include <utils/utils.h> + +LoadScriptingComponent(memory_centitykeyvalues, [](PluginObject plugin, EContext* ctx) -> void { + ADD_CLASS("CEntityKeyValues"); + + ADD_CLASS_FUNCTION("CEntityKeyValues", "CEntityKeyValues", [](FunctionContext* context, ClassData* data) -> void { + data->SetData("centitykeyvalues_ptr", (void*)(new CEntityKeyValues())); + }); + + ADD_CLASS_FUNCTION("CEntityKeyValues", "GetBool", [](FunctionContext* context, ClassData* data) -> void { + std::string key = context->GetArgumentOr<std::string>(0, ""); + if(key == "") return context->SetReturn(false); + + context->SetReturn(((CEntityKeyValues*)(data->GetData<void*>("centitykeyvalues_ptr")))->GetBool(key.c_str())); + }); + + ADD_CLASS_FUNCTION("CEntityKeyValues", "GetInt", [](FunctionContext* context, ClassData* data) -> void { + std::string key = context->GetArgumentOr<std::string>(0, ""); + if(key == "") return context->SetReturn(0); + + context->SetReturn(((CEntityKeyValues*)(data->GetData<void*>("centitykeyvalues_ptr")))->GetInt(key.c_str())); + }); + + ADD_CLASS_FUNCTION("CEntityKeyValues", "GetUint", [](FunctionContext* context, ClassData* data) -> void { + std::string key = context->GetArgumentOr<std::string>(0, ""); + if(key == "") return context->SetReturn(0); + + context->SetReturn(((CEntityKeyValues*)(data->GetData<void*>("centitykeyvalues_ptr")))->GetUint(key.c_str())); + }); + + ADD_CLASS_FUNCTION("CEntityKeyValues", "GetInt64", [](FunctionContext* context, ClassData* data) -> void { + std::string key = context->GetArgumentOr<std::string>(0, ""); + if(key == "") return context->SetReturn(0); + + context->SetReturn(((CEntityKeyValues*)(data->GetData<void*>("centitykeyvalues_ptr")))->GetInt64(key.c_str())); + }); + + ADD_CLASS_FUNCTION("CEntityKeyValues", "GetUint64", [](FunctionContext* context, ClassData* data) -> void { + std::string key = context->GetArgumentOr<std::string>(0, ""); + if(key == "") return context->SetReturn(0); + + context->SetReturn(((CEntityKeyValues*)(data->GetData<void*>("centitykeyvalues_ptr")))->GetUint64(key.c_str())); + }); + + ADD_CLASS_FUNCTION("CEntityKeyValues", "GetFloat", [](FunctionContext* context, ClassData* data) -> void { + std::string key = context->GetArgumentOr<std::string>(0, ""); + if(key == "") return context->SetReturn(0.0); + + context->SetReturn(((CEntityKeyValues*)(data->GetData<void*>("centitykeyvalues_ptr")))->GetFloat(key.c_str())); + }); + + ADD_CLASS_FUNCTION("CEntityKeyValues", "GetDouble", [](FunctionContext* context, ClassData* data) -> void { + std::string key = context->GetArgumentOr<std::string>(0, ""); + if(key == "") return context->SetReturn(0.0); + + context->SetReturn(((CEntityKeyValues*)(data->GetData<void*>("centitykeyvalues_ptr")))->GetDouble(key.c_str())); + }); + + ADD_CLASS_FUNCTION("CEntityKeyValues", "GetString", [](FunctionContext* context, ClassData* data) -> void { + std::string key = context->GetArgumentOr<std::string>(0, ""); + if(key == "") return context->SetReturn(""); + + context->SetReturn(std::string(((CEntityKeyValues*)(data->GetData<void*>("centitykeyvalues_ptr")))->GetString(key.c_str()))); + }); + + ADD_CLASS_FUNCTION("CEntityKeyValues", "GetPtr", [](FunctionContext* context, ClassData* data) -> void { + std::string key = context->GetArgumentOr<std::string>(0, ""); + if(key == "") return context->SetReturn("0x0"); + + context->SetReturn(string_format("%p", ((CEntityKeyValues*)(data->GetData<void*>("centitykeyvalues_ptr")))->GetPtr(key.c_str()))); + }); + + ADD_CLASS_FUNCTION("CEntityKeyValues", "GetStringToken", [](FunctionContext* context, ClassData* data) -> void { + std::string key = context->GetArgumentOr<std::string>(0, ""); + if(key == "") return context->SetReturn(0); + + context->SetReturn(((CEntityKeyValues*)(data->GetData<void*>("centitykeyvalues_ptr")))->GetStringToken(key.c_str()).GetHashCode()); + }); + + ADD_CLASS_FUNCTION("CEntityKeyValues", "GetVector", [](FunctionContext* context, ClassData* data) -> void { + std::string key = context->GetArgumentOr<std::string>(0, ""); + if(key == "") return context->SetReturn(MAKE_CLASS_INSTANCE("Vector", { { "vector_ptr", Vector(0.0,0.0,0.0) } })); + + context->SetReturn(MAKE_CLASS_INSTANCE("Vector", { { "vector_ptr", ((CEntityKeyValues*)(data->GetData<void*>("centitykeyvalues_ptr")))->GetVector(key.c_str()) } })); + }); + + ADD_CLASS_FUNCTION("CEntityKeyValues", "GetVector2D", [](FunctionContext* context, ClassData* data) -> void { + std::string key = context->GetArgumentOr<std::string>(0, ""); + if(key == "") return context->SetReturn(MAKE_CLASS_INSTANCE("Vector2D", { { "Vector2D_ptr", Vector2D(0.0,0.0) } })); + + context->SetReturn(MAKE_CLASS_INSTANCE("Vector2D", { { "Vector2D_ptr", ((CEntityKeyValues*)(data->GetData<void*>("centitykeyvalues_ptr")))->GetVector2D(key.c_str()) } })); + }); + + ADD_CLASS_FUNCTION("CEntityKeyValues", "GetVector4D", [](FunctionContext* context, ClassData* data) -> void { + std::string key = context->GetArgumentOr<std::string>(0, ""); + if(key == "") return context->SetReturn(MAKE_CLASS_INSTANCE("Vector4D", { { "Vector4D_ptr", Vector4D(0.0,0.0,0.0,0.0) } })); + + context->SetReturn(MAKE_CLASS_INSTANCE("Vector4D", { { "Vector4D_ptr", ((CEntityKeyValues*)(data->GetData<void*>("centitykeyvalues_ptr")))->GetVector4D(key.c_str()) } })); + }); + + ADD_CLASS_FUNCTION("CEntityKeyValues", "GetColor", [](FunctionContext* context, ClassData* data) -> void { + std::string key = context->GetArgumentOr<std::string>(0, ""); + if(key == "") return context->SetReturn(MAKE_CLASS_INSTANCE("Color", { { "Color_ptr", Color(0,0,0,0) } })); + + context->SetReturn(MAKE_CLASS_INSTANCE("Color", { { "Color_ptr", ((CEntityKeyValues*)(data->GetData<void*>("centitykeyvalues_ptr")))->GetColor(key.c_str()) } })); + }); + + ADD_CLASS_FUNCTION("CEntityKeyValues", "GetQAngle", [](FunctionContext* context, ClassData* data) -> void { + std::string key = context->GetArgumentOr<std::string>(0, ""); + if(key == "") return context->SetReturn(MAKE_CLASS_INSTANCE("QAngle", { { "QAngle_ptr", QAngle(0.0,0.0,0.0) } })); + + context->SetReturn(MAKE_CLASS_INSTANCE("QAngle", { { "QAngle_ptr", ((CEntityKeyValues*)(data->GetData<void*>("centitykeyvalues_ptr")))->GetQAngle(key.c_str()) } })); + }); + + ADD_CLASS_FUNCTION("CEntityKeyValues", "SetBool", [](FunctionContext* context, ClassData* data) -> void { + std::string key = context->GetArgumentOr<std::string>(0, ""); + if(key == "") return; + + bool value = context->GetArgumentOr<bool>(1, false); + + ((CEntityKeyValues*)(data->GetData<void*>("centitykeyvalues_ptr")))->SetBool(key.c_str(), value); + }); + + ADD_CLASS_FUNCTION("CEntityKeyValues", "SetInt", [](FunctionContext* context, ClassData* data) -> void { + std::string key = context->GetArgumentOr<std::string>(0, ""); + if(key == "") return; + + int value = context->GetArgumentOr<int>(1, 0); + ((CEntityKeyValues*)(data->GetData<void*>("centitykeyvalues_ptr")))->SetInt(key.c_str(), value); + }); + + ADD_CLASS_FUNCTION("CEntityKeyValues", "SetUint", [](FunctionContext* context, ClassData* data) -> void { + std::string key = context->GetArgumentOr<std::string>(0, ""); + if(key == "") return; + + uint32_t value = context->GetArgumentOr<uint32_t>(1, 0); + ((CEntityKeyValues*)(data->GetData<void*>("centitykeyvalues_ptr")))->SetUint(key.c_str(), value); + }); + + ADD_CLASS_FUNCTION("CEntityKeyValues", "SetInt64", [](FunctionContext* context, ClassData* data) -> void { + std::string key = context->GetArgumentOr<std::string>(0, ""); + if(key == "") return; + + int64_t value = context->GetArgumentOr<int64_t>(1, 0); + ((CEntityKeyValues*)(data->GetData<void*>("centitykeyvalues_ptr")))->SetInt64(key.c_str(), value); + }); + + ADD_CLASS_FUNCTION("CEntityKeyValues", "SetUint64", [](FunctionContext* context, ClassData* data) -> void { + std::string key = context->GetArgumentOr<std::string>(0, ""); + if(key == "") return; + + uint64_t value = context->GetArgumentOr<uint64_t>(1, 0); + ((CEntityKeyValues*)(data->GetData<void*>("centitykeyvalues_ptr")))->SetUint64(key.c_str(), value); + }); + + ADD_CLASS_FUNCTION("CEntityKeyValues", "SetFloat", [](FunctionContext* context, ClassData* data) -> void { + std::string key = context->GetArgumentOr<std::string>(0, ""); + if(key == "") return; + + float value = context->GetArgumentOr<float>(1, 0.0); + ((CEntityKeyValues*)(data->GetData<void*>("centitykeyvalues_ptr")))->SetFloat(key.c_str(), value); + }); + + ADD_CLASS_FUNCTION("CEntityKeyValues", "SetDouble", [](FunctionContext* context, ClassData* data) -> void { + std::string key = context->GetArgumentOr<std::string>(0, ""); + if(key == "") return; + + double value = context->GetArgumentOr<double>(1, 0.0); + ((CEntityKeyValues*)(data->GetData<void*>("centitykeyvalues_ptr")))->SetDouble(key.c_str(), value); + }); + + ADD_CLASS_FUNCTION("CEntityKeyValues", "SetString", [](FunctionContext* context, ClassData* data) -> void { + std::string key = context->GetArgumentOr<std::string>(0, ""); + if(key == "") return; + + std::string value = context->GetArgumentOr<std::string>(1, ""); + ((CEntityKeyValues*)(data->GetData<void*>("centitykeyvalues_ptr")))->SetString(key.c_str(), value.c_str()); + }); + + ADD_CLASS_FUNCTION("CEntityKeyValues", "SetPtr", [](FunctionContext* context, ClassData* data) -> void { + std::string key = context->GetArgumentOr<std::string>(0, ""); + if(key == "") return; + + std::string value = context->GetArgumentOr<std::string>(1, "0x0"); + ((CEntityKeyValues*)(data->GetData<void*>("centitykeyvalues_ptr")))->SetPtr(key.c_str(), StringToPtr(value)); + }); + + ADD_CLASS_FUNCTION("CEntityKeyValues", "SetStringToken", [](FunctionContext* context, ClassData* data) -> void { + std::string key = context->GetArgumentOr<std::string>(0, ""); + if(key == "") return; + + uint32_t value = context->GetArgumentOr<uint32_t>(1, 0); + ((CEntityKeyValues*)(data->GetData<void*>("centitykeyvalues_ptr")))->SetStringToken(key.c_str(), CUtlStringToken(value)); + }); + + ADD_CLASS_FUNCTION("CEntityKeyValues", "SetVector", [](FunctionContext* context, ClassData* data) -> void { + std::string key = context->GetArgumentOr<std::string>(0, ""); + if(key == "") return; + + ClassData* cdata = context->GetArgumentOr<ClassData*>(1, nullptr); + if(!cdata) return; + Vector value = cdata->GetData<Vector>("vector_ptr"); + + ((CEntityKeyValues*)(data->GetData<void*>("centitykeyvalues_ptr")))->SetVector(key.c_str(), value); + }); + + ADD_CLASS_FUNCTION("CEntityKeyValues", "SetVector2D", [](FunctionContext* context, ClassData* data) -> void { + std::string key = context->GetArgumentOr<std::string>(0, ""); + if(key == "") return; + + ClassData* cdata = context->GetArgumentOr<ClassData*>(1, nullptr); + if(!cdata) return; + Vector2D value = cdata->GetData<Vector2D>("Vector2D_ptr"); + + ((CEntityKeyValues*)(data->GetData<void*>("centitykeyvalues_ptr")))->SetVector2D(key.c_str(), value); + }); + + ADD_CLASS_FUNCTION("CEntityKeyValues", "SetVector4D", [](FunctionContext* context, ClassData* data) -> void { + std::string key = context->GetArgumentOr<std::string>(0, ""); + if(key == "") return; + + ClassData* cdata = context->GetArgumentOr<ClassData*>(1, nullptr); + if(!cdata) return; + Vector4D value = cdata->GetData<Vector4D>("Vector4D_ptr"); + + ((CEntityKeyValues*)(data->GetData<void*>("centitykeyvalues_ptr")))->SetVector4D(key.c_str(), value); + }); + + ADD_CLASS_FUNCTION("CEntityKeyValues", "SetColor", [](FunctionContext* context, ClassData* data) -> void { + std::string key = context->GetArgumentOr<std::string>(0, ""); + if(key == "") return; + + ClassData* cdata = context->GetArgumentOr<ClassData*>(1, nullptr); + if(!cdata) return; + Color value = cdata->GetData<Color>("Color_ptr"); + + ((CEntityKeyValues*)(data->GetData<void*>("centitykeyvalues_ptr")))->SetColor(key.c_str(), value); + }); + + ADD_CLASS_FUNCTION("CEntityKeyValues", "SetQAngle", [](FunctionContext* context, ClassData* data) -> void { + std::string key = context->GetArgumentOr<std::string>(0, ""); + if(key == "") return; + + ClassData* cdata = context->GetArgumentOr<ClassData*>(1, nullptr); + if(!cdata) return; + QAngle value = cdata->GetData<QAngle>("QAngle_ptr"); + + ((CEntityKeyValues*)(data->GetData<void*>("centitykeyvalues_ptr")))->SetQAngle(key.c_str(), value); + }); + +}) \ No newline at end of file diff --git a/src/scripting/memory/memory.cpp b/src/scripting/memory/memory.cpp new file mode 100644 index 000000000..6cd931bee --- /dev/null +++ b/src/scripting/memory/memory.cpp @@ -0,0 +1,377 @@ +#include <scripting/core.h> +#include <dynlibutils/module.h> + +#include <memory/gamedata/gamedata.h> +#include <utils/utils.h> + +DynLibUtils::CModule DetermineModuleByLibrary(std::string library); + +LoadScriptingComponent(memory, [](PluginObject plugin, EContext* ctx) -> void { + ADD_CLASS("Memory"); + + ADD_CLASS_FUNCTION("Memory", "Memory", [](FunctionContext* context, ClassData* data) -> void { + auto classData = context->GetArgumentOr<ClassData*>(0, nullptr); + if(classData) { + if(classData->HasData("ptr")) { + data->SetData("ptr", classData->GetData<void*>("ptr")); + } + } else { + auto strptr = context->GetArgumentOr<std::string>(0, ""); + if(starts_with(strptr, "0x")) { + data->SetData("ptr", (void*)StringToPtr(strptr)); + } else { + data->SetData("ptr", nullptr); + } + } + }); + + ADD_CLASS_FUNCTION("Memory", "~Memory", [](FunctionContext* context, ClassData* data) -> void { + if(data->HasData("should_free")) { + if(data->GetData<bool>("should_free")) { + free(data->GetData<void*>("ptr")); + } + } + }); + + ADD_CLASS_FUNCTION("Memory", "Allocate", [](FunctionContext* context, ClassData* data) -> void { + uint64_t size = context->GetArgumentOr<uint64_t>(0, 0); + if(size == 0) return; + + if(data->HasData("should_free") && data->GetData<bool>("should_free")) { + free(data->GetData<void*>("ptr")); + } + + data->SetData("ptr", malloc(size)); + data->SetData("should_free", true); + }); + + ADD_CLASS_FUNCTION("Memory", "Deallocate", [](FunctionContext* context, ClassData* data) -> void { + if(data->HasData("should_free") && data->GetData<bool>("should_free")) { + free(data->GetData<void*>("ptr")); + data->SetData("should_free", false); + data->SetData("ptr", nullptr); + } + }); + + ADD_CLASS_FUNCTION("Memory", "GetPtr", [](FunctionContext* context, ClassData* data) -> void { + context->SetReturn(string_format("%p", data->GetData<void*>("ptr"))); + }); + + ADD_CLASS_FUNCTION("Memory", "IsValid", [](FunctionContext* context, ClassData* data) -> void { + context->SetReturn(data->GetData<void*>("ptr") != nullptr); + }); + + ADD_CLASS_FUNCTION("Memory", "LoadFromAddress", [](FunctionContext* context, ClassData* data) -> void { + + auto classData = context->GetArgumentOr<ClassData*>(0, nullptr); + if(classData) { + if(classData->HasData("ptr")) { + if(data->HasData("should_free") && data->GetData<bool>("should_free")) { + free(data->GetData<void*>("ptr")); + data->SetData("should_free", false); + data->SetData("ptr", nullptr); + } + + data->SetData("ptr", classData->GetData<void*>("ptr")); + } + } else { + auto strptr = context->GetArgumentOr<std::string>(0, ""); + if(starts_with(strptr, "0x")) { + if(data->HasData("should_free") && data->GetData<bool>("should_free")) { + free(data->GetData<void*>("ptr")); + data->SetData("should_free", false); + data->SetData("ptr", nullptr); + } + + data->SetData("ptr", (void*)StringToPtr(strptr)); + } + } + }); + + ADD_CLASS_FUNCTION("Memory", "LoadFromSignatureName", [](FunctionContext* context, ClassData* data) -> void { + auto signame = context->GetArgumentOr<std::string>(0, ""); + if(signame == "") return; + + if(data->HasData("should_free") && data->GetData<bool>("should_free")) { + free(data->GetData<void*>("ptr")); + data->SetData("should_free", false); + data->SetData("ptr", nullptr); + } + data->SetData("ptr", g_GameData.FetchRawSignature(signame)); + }); + + ADD_CLASS_FUNCTION("Memory", "LoadFromSignatureName", [](FunctionContext* context, ClassData* data) -> void { + auto md = context->GetArgumentOr<std::string>(0, ""); + if(md == "") return; + auto signature = context->GetArgumentOr<std::string>(1, ""); + if(signature == "") return; + + void* sig = nullptr; + auto mod = DetermineModuleByLibrary(md); + + if (signature.at(0) == '@') sig = mod.GetFunctionByName((signature.c_str() + 1)).RCast<void*>(); + else sig = mod.FindPattern(signature).RCast<void*>(); + + if(!sig) return; + + if(data->HasData("should_free") && data->GetData<bool>("should_free")) { + free(data->GetData<void*>("ptr")); + data->SetData("should_free", false); + data->SetData("ptr", nullptr); + } + data->SetData("ptr", sig); + }); + + ADD_CLASS_FUNCTION("Memory", "AddOffsetByName", [](FunctionContext* context, ClassData* data) -> void { + std::string offsetName = context->GetArgumentOr<std::string>(0, ""); + if(offsetName == "") return; + + auto offset = g_GameData.GetOffset(offsetName); + uintptr_t ptr = (uintptr_t)data->GetData<void*>("ptr"); + ptr += offset; + data->SetData("ptr", (void*)ptr); + }); + + ADD_CLASS_FUNCTION("Memory", "RemoveOffsetByName", [](FunctionContext* context, ClassData* data) -> void { + std::string offsetName = context->GetArgumentOr<std::string>(0, ""); + if(offsetName == "") return; + + auto offset = g_GameData.GetOffset(offsetName); + uintptr_t ptr = (uintptr_t)data->GetData<void*>("ptr"); + ptr -= offset; + data->SetData("ptr", (void*)ptr); + }); + + ADD_CLASS_FUNCTION("Memory", "AddOffset", [](FunctionContext* context, ClassData* data) -> void { + int64_t offset = context->GetArgumentOr<int64_t>(0, 0); + if(offset == 0) return; + + uintptr_t ptr = (uintptr_t)data->GetData<void*>("ptr"); + ptr += offset; + data->SetData("ptr", (void*)ptr); + }); + + ADD_CLASS_FUNCTION("Memory", "RemoveOffset", [](FunctionContext* context, ClassData* data) -> void { + int64_t offset = context->GetArgumentOr<int64_t>(0, 0); + if(offset == 0) return; + + uintptr_t ptr = (uintptr_t)data->GetData<void*>("ptr"); + ptr -= offset; + data->SetData("ptr", (void*)ptr); + }); + + ADD_CLASS_FUNCTION("Memory", "AccessVTableFromOffset", [](FunctionContext* context, ClassData* data) -> void { + std::string offsetName = context->GetArgumentOr<std::string>(0, ""); + if(offsetName == "") return; + + auto offset = g_GameData.GetOffset(offsetName); + data->SetData("ptr", ((void***)data->GetData<void*>("ptr"))[0][offset]); + data->SetData("accessed_vtable", true); + }); + + ADD_CLASS_FUNCTION("Memory", "AccessIndexFromOffset", [](FunctionContext* context, ClassData* data) -> void { + std::string offsetName = context->GetArgumentOr<std::string>(0, ""); + if(offsetName == "") return; + + auto offset = g_GameData.GetOffset(offsetName); + data->SetData("ptr", ((void**)data->GetData<void*>("ptr"))[offset]); + }); + + ADD_CLASS_FUNCTION("Memory", "AccessVTable", [](FunctionContext* context, ClassData* data) -> void { + int64_t offset = context->GetArgumentOr<int64_t>(0, 0); + if(offset == 0) return; + + data->SetData("ptr", ((void***)data->GetData<void*>("ptr"))[0][offset]); + data->SetData("accessed_vtable", true); + }); + + ADD_CLASS_FUNCTION("Memory", "AccessIndex", [](FunctionContext* context, ClassData* data) -> void { + int64_t offset = context->GetArgumentOr<int64_t>(0, 0); + if(offset == 0) return; + + data->SetData("ptr", ((void**)data->GetData<void*>("ptr"))[offset]); + }); + + ADD_CLASS_FUNCTION("Memory", "AccessedVTable", [](FunctionContext* context, ClassData* data) -> void { + context->SetReturn(data->GetDataOr<bool>("accessed_vtable", false)); + }); + + ADD_CLASS_FUNCTION("Memory", "Clear", [](FunctionContext* context, ClassData* data) -> void { + data->SetData("ptr", (void*)nullptr); + }); + + ADD_CLASS_FUNCTION("Memory", "Dereference", [](FunctionContext* context, ClassData* data) -> void { + data->SetData("ptr", *(void**)data->GetData<void*>("ptr")); + }); + + ADD_CLASS_FUNCTION("Memory", "SetBool", [](FunctionContext* context, ClassData* data) -> void { + void* m_ptr = data->GetData<void*>("ptr"); + bool value = context->GetArgumentOr<bool>(0, false); + *((bool*)(m_ptr)) = value; + }); + + ADD_CLASS_FUNCTION("Memory", "SetInt", [](FunctionContext* context, ClassData* data) -> void { + void* m_ptr = data->GetData<void*>("ptr"); + int value = context->GetArgumentOr<int>(0, 0); + *((int*)(m_ptr)) = value; + }); + + ADD_CLASS_FUNCTION("Memory", "SetInt64", [](FunctionContext* context, ClassData* data) -> void { + void* m_ptr = data->GetData<void*>("ptr"); + int64_t value = context->GetArgumentOr<int64_t>(0, 0); + *((int64_t*)(m_ptr)) = value; + }); + + ADD_CLASS_FUNCTION("Memory", "SetUint", [](FunctionContext* context, ClassData* data) -> void { + void* m_ptr = data->GetData<void*>("ptr"); + uint32_t value = context->GetArgumentOr<uint32_t>(0, 0); + *((uint32_t*)(m_ptr)) = value; + }); + + ADD_CLASS_FUNCTION("Memory", "SetUint64", [](FunctionContext* context, ClassData* data) -> void { + void* m_ptr = data->GetData<void*>("ptr"); + uint64_t value = context->GetArgumentOr<uint64_t>(0, 0); + *((uint64_t*)(m_ptr)) = value; + }); + + ADD_CLASS_FUNCTION("Memory", "SetFloat", [](FunctionContext* context, ClassData* data) -> void { + void* m_ptr = data->GetData<void*>("ptr"); + float value = context->GetArgumentOr<float>(0, 0.0); + *((float*)(m_ptr)) = value; + }); + + ADD_CLASS_FUNCTION("Memory", "SetDouble", [](FunctionContext* context, ClassData* data) -> void { + void* m_ptr = data->GetData<void*>("ptr"); + double value = context->GetArgumentOr<double>(0, 0.0); + *((double*)(m_ptr)) = value; + }); + + ADD_CLASS_FUNCTION("Memory", "SetVector", [](FunctionContext* context, ClassData* data) -> void { + void* m_ptr = data->GetData<void*>("ptr"); + ClassData* cdata = context->GetArgumentOr<ClassData*>(0, nullptr); + if(!cdata) return; + Vector value = cdata->GetData<Vector>("vector_ptr"); + + *((Vector*)(m_ptr)) = value; + }); + + ADD_CLASS_FUNCTION("Memory", "SetVector2D", [](FunctionContext* context, ClassData* data) -> void { + void* m_ptr = data->GetData<void*>("ptr"); + ClassData* cdata = context->GetArgumentOr<ClassData*>(0, nullptr); + if(!cdata) return; + Vector2D value = cdata->GetData<Vector2D>("Vector2D_ptr"); + + *((Vector2D*)(m_ptr)) = value; + }); + + ADD_CLASS_FUNCTION("Memory", "SetVector4D", [](FunctionContext* context, ClassData* data) -> void { + void* m_ptr = data->GetData<void*>("ptr"); + ClassData* cdata = context->GetArgumentOr<ClassData*>(0, nullptr); + if(!cdata) return; + Vector4D value = cdata->GetData<Vector4D>("Vector4D_ptr"); + + *((Vector4D*)(m_ptr)) = value; + }); + + ADD_CLASS_FUNCTION("Memory", "SetColor", [](FunctionContext* context, ClassData* data) -> void { + void* m_ptr = data->GetData<void*>("ptr"); + ClassData* cdata = context->GetArgumentOr<ClassData*>(0, nullptr); + if(!cdata) return; + Color value = cdata->GetData<Color>("Color_ptr"); + + *((Color*)(m_ptr)) = value; + }); + + ADD_CLASS_FUNCTION("Memory", "SetQAngle", [](FunctionContext* context, ClassData* data) -> void { + void* m_ptr = data->GetData<void*>("ptr"); + ClassData* cdata = context->GetArgumentOr<ClassData*>(0, nullptr); + if(!cdata) return; + QAngle value = cdata->GetData<QAngle>("QAngle_ptr"); + + *((QAngle*)(m_ptr)) = value; + }); + + ADD_CLASS_FUNCTION("Memory", "GetBool", [](FunctionContext* context, ClassData* data) -> void { + void* m_ptr = data->GetData<void*>("ptr"); + if(!m_ptr) return context->SetReturn(false); + + context->SetReturn(*((bool*)(m_ptr))); + }); + + ADD_CLASS_FUNCTION("Memory", "GetInt", [](FunctionContext* context, ClassData* data) -> void { + void* m_ptr = data->GetData<void*>("ptr"); + if(!m_ptr) return context->SetReturn(0); + + context->SetReturn(*((int*)(m_ptr))); + }); + + ADD_CLASS_FUNCTION("Memory", "GetInt64", [](FunctionContext* context, ClassData* data) -> void { + void* m_ptr = data->GetData<void*>("ptr"); + if(!m_ptr) return context->SetReturn(0); + + context->SetReturn(*((int64_t*)(m_ptr))); + }); + + ADD_CLASS_FUNCTION("Memory", "GetUint", [](FunctionContext* context, ClassData* data) -> void { + void* m_ptr = data->GetData<void*>("ptr"); + if(!m_ptr) return context->SetReturn(0); + + context->SetReturn(*((uint32_t*)(m_ptr))); + }); + + ADD_CLASS_FUNCTION("Memory", "GetUint64", [](FunctionContext* context, ClassData* data) -> void { + void* m_ptr = data->GetData<void*>("ptr"); + if(!m_ptr) return context->SetReturn(0); + + context->SetReturn(*((uint64_t*)(m_ptr))); + }); + + ADD_CLASS_FUNCTION("Memory", "GetFloat", [](FunctionContext* context, ClassData* data) -> void { + void* m_ptr = data->GetData<void*>("ptr"); + if(!m_ptr) return context->SetReturn(0.0); + + context->SetReturn(*((float*)(m_ptr))); + }); + + ADD_CLASS_FUNCTION("Memory", "GetDouble", [](FunctionContext* context, ClassData* data) -> void { + void* m_ptr = data->GetData<void*>("ptr"); + if(!m_ptr) return context->SetReturn(0.0); + + context->SetReturn(*((double*)(m_ptr))); + }); + + ADD_CLASS_FUNCTION("Memory", "GetVector", [](FunctionContext* context, ClassData* data) -> void { + void* m_ptr = data->GetData<void*>("ptr"); + if(!m_ptr) return context->SetReturn(MAKE_CLASS_INSTANCE("Vector", { { "vector_ptr", Vector(0.0,0.0,0.0) } })); + + context->SetReturn(MAKE_CLASS_INSTANCE("Vector", { { "vector_ptr", *((Vector*)(m_ptr)) } })); + }); + + ADD_CLASS_FUNCTION("Memory", "GetVector2D", [](FunctionContext* context, ClassData* data) -> void { + void* m_ptr = data->GetData<void*>("ptr"); + if(!m_ptr) return context->SetReturn(MAKE_CLASS_INSTANCE("Vector2D", { { "Vector2D_ptr", Vector2D(0.0,0.0) } })); + + context->SetReturn(MAKE_CLASS_INSTANCE("Vector2D", { { "Vector2D_ptr", *((Vector2D*)(m_ptr)) } })); + }); + + ADD_CLASS_FUNCTION("Memory", "GetVector4D", [](FunctionContext* context, ClassData* data) -> void { + void* m_ptr = data->GetData<void*>("ptr"); + if(!m_ptr) return context->SetReturn(MAKE_CLASS_INSTANCE("Vector4D", { { "Vector4D_ptr", Vector4D(0.0,0.0,0.0,0.0) } })); + + context->SetReturn(MAKE_CLASS_INSTANCE("Vector4D", { { "Vector4D_ptr", *((Vector4D*)(m_ptr)) } })); + }); + + ADD_CLASS_FUNCTION("Memory", "GetColor", [](FunctionContext* context, ClassData* data) -> void { + void* m_ptr = data->GetData<void*>("ptr"); + if(!m_ptr) return context->SetReturn(MAKE_CLASS_INSTANCE("Color", { { "Color_ptr", Color(0,0,0,0) } })); + + context->SetReturn(MAKE_CLASS_INSTANCE("Color", { { "Color_ptr", *((Color*)(m_ptr)) } })); + }); + + ADD_CLASS_FUNCTION("Memory", "GetQAngle", [](FunctionContext* context, ClassData* data) -> void { + void* m_ptr = data->GetData<void*>("ptr"); + if(!m_ptr) return context->SetReturn(MAKE_CLASS_INSTANCE("QAngle", { { "QAngle_ptr", QAngle(0.0,0.0,0.0) } })); + + context->SetReturn(MAKE_CLASS_INSTANCE("QAngle", { { "QAngle_ptr", *((QAngle*)(m_ptr)) } })); + }); +}) \ No newline at end of file diff --git a/src/scripting/network/database.cpp b/src/scripting/network/database.cpp new file mode 100644 index 000000000..371b12653 --- /dev/null +++ b/src/scripting/network/database.cpp @@ -0,0 +1,145 @@ +#include <scripting/core.h> + +#include <network/database/DatabaseManager.h> + +#include <utils/common.h> +#include <utils/utils.h> + +void Query(IDatabase* db, std::string query, EValue callback, EContext* L) +{ + if (db->GetKind() != "mysql" && db->GetKind() != "sqlite") { + PLUGIN_PRINT("Database - Query", "This function is supporting only SQL databases.\n"); + return; + } + std::string uuid = get_uuid(); + + EValue databaseRequestsQueue = EValue::getGlobal(L, "databaseRequestsQueue"); + if (databaseRequestsQueue.isTable()) + databaseRequestsQueue.setProperty(uuid, EValue(callback)); + + DatabaseQueryQueue queue = { + query, + uuid, + }; + db->AddQueryQueue(queue); +} + +LoadScriptingComponent(database, [](PluginObject plugin, EContext* ctx) -> void { + ADD_CLASS("Database"); + + ADD_CLASS_FUNCTION("Database", "Database", [](FunctionContext* context, ClassData* data) -> void { + std::string connection_name = context->GetArgumentOr<std::string>(0, "default_connection"); + auto db = g_dbManager.GetDatabase(connection_name); + if (!db && connection_name != "default_connection") { + PRINTF("Database connection \"%s\" doesn't exists inside the database configurations. Automatically falling back to \"default_connection\".\n", connection_name.c_str()); + db = g_dbManager.GetDatabase("default_connection"); + } + + if (!db->Connect()) { + PRINTF("An error has occured while trying to connect to database \"%s\":\nError: %s\n", connection_name.c_str(), db->GetError().c_str()); + } + + data->SetData("connection_name", connection_name); + data->SetData("db", db); + }); + + ADD_CLASS_FUNCTION("Database", "IsConnected", [](FunctionContext* context, ClassData* data) -> void { + IDatabase* db = data->GetData<IDatabase*>("db"); + if (!db) return context->SetReturn(false); + + context->SetReturn(db->IsConnected()); + }); + + ADD_CLASS_FUNCTION("Database", "EscapeString", [](FunctionContext* context, ClassData* data) -> void { + IDatabase* db = data->GetData<IDatabase*>("db"); + std::string str = context->GetArgumentOr<std::string>(0, ""); + + if (!db || !db->IsConnected()) return context->SetReturn(str); + + context->SetReturn(db->EscapeValue(str)); + }); + + ADD_CLASS_FUNCTION("Database", "GetVersion", [](FunctionContext* context, ClassData* data) -> void { + IDatabase* db = data->GetData<IDatabase*>("db"); + if (!db || !db->IsConnected()) return context->SetReturn(""); + + context->SetReturn(db->GetVersion()); + }); + + ADD_CLASS_FUNCTION("Database", "Query", [](FunctionContext* context, ClassData* data) -> void { + IDatabase* db = data->GetData<IDatabase*>("db"); + if (!db || !db->IsConnected()) return; + + std::string query = context->GetArgumentOr<std::string>(0, ""); + if (query == "") return; + + EValue callback = context->GetArgument<EValue>(1); + + Query(db, query, callback, context->GetPluginContext()); + }); + + ADD_CLASS_FUNCTION("Database", "QueryParams", [](FunctionContext* context, ClassData* data) -> void { + IDatabase* db = data->GetData<IDatabase*>("db"); + if (!db || !db->IsConnected()) return; + + std::string query = context->GetArgumentOr<std::string>(0, ""); + if (query == "") return; + + std::map<EValue, EValue> params = context->GetArgumentOr<std::map<EValue, EValue>>(1, std::map<EValue, EValue>{}); + EValue callback = context->GetArgument<EValue>(2); + + bool has_ats = (query.find_first_of("@") != std::string::npos); + bool has_brace = (query.find_first_of("{") != std::string::npos); + bool has_bracket = (query.find_first_of("[") != std::string::npos); + + for (auto it = params.begin(); it != params.end(); ++it) + { + EValue first = *(EValue*)(&(it->first)); + std::string key = first.isString() ? first.cast<std::string>() : first.tostring(); + std::string value = db->EscapeValue(it->second.isString() ? it->second.cast<std::string>() : it->second.tostring()); + + if (has_ats) + query = replace(query, "@" + key, value); + + if (has_brace) + query = replace(query, "{" + key + "}", value); + + if (has_bracket) + query = replace(query, "[" + key + "]", value); + } + + Query(db, query, callback, context->GetPluginContext()); + }); + + ADD_CLASS_FUNCTION("Database", "ExecuteQB", [](FunctionContext* context, ClassData* data) -> void { + IDatabase* db = data->GetData<IDatabase*>("db"); + if (!db || !db->IsConnected()) return; + + std::string query = context->GetArgumentOr<std::string>(0, ""); + if (query == "") return; + + EValue callback = context->GetArgument<EValue>(1); + + std::string uuid = get_uuid(); + + EValue databaseRequestsQueue = EValue::getGlobal(context->GetPluginContext(), "databaseRequestsQueue"); + if (databaseRequestsQueue.isTable()) { + databaseRequestsQueue.setProperty(uuid, EValue(callback)); + } + + DatabaseQueryQueue queue = { + query, + uuid, + }; + db->AddQueryQueue(queue); + }); + + ADD_CLASS_FUNCTION("Database", "QueryBuilder", [](FunctionContext* context, ClassData* data) -> void { + IDatabase* db = data->GetData<IDatabase*>("db"); + if (!db || !db->IsConnected()) return context->SetReturn(nullptr); + + EContext* L = context->GetPluginContext(); + EValue global = EValue::getGlobal(L, db->ProvideQueryBuilderTable()); + context->SetReturn(global(data)); + }); +}) \ No newline at end of file diff --git a/src/scripting/network/usermessage.cpp b/src/scripting/network/usermessage.cpp new file mode 100644 index 000000000..b821f81aa --- /dev/null +++ b/src/scripting/network/usermessage.cpp @@ -0,0 +1,618 @@ +#include <scripting/core.h> + +#include <network/usermessages/usermessage.h> + +LoadScriptingComponent(usermessage, [](PluginObject plugin, EContext* ctx) -> void { + ADD_CLASS("UserMessage"); + + ADD_CLASS_FUNCTION("UserMessage", "UserMessage", [](FunctionContext* context, ClassData* data) -> void { + auto classData = context->GetArgumentOr<ClassData*>(0, nullptr); + if(classData) { + if(classData->HasData("um_ptr")) { + data->SetData("um_ptr", classData->GetData<UserMessage*>("um_ptr")); + } + } else { + auto strptr = context->GetArgumentOr<std::string>(0, ""); + if(strptr == "") return; + data->SetData("um_ptr", new UserMessage(strptr)); + } + }); + + ADD_CLASS_FUNCTION("UserMessage", "~UserMessage", [](FunctionContext* context, ClassData* data) -> void { + if(data->HasData("um_ptr")) { + delete data->GetData<UserMessage*>("um_ptr"); + } + }); + + ADD_CLASS_FUNCTION("UserMessage", "IsValidMessage", [](FunctionContext* context, ClassData* data) -> void { + context->SetReturn(data->GetData<UserMessage*>("um_ptr")->IsValidMessage()); + }); + + ADD_CLASS_FUNCTION("UserMessage", "GetMessageName", [](FunctionContext* context, ClassData* data) -> void { + context->SetReturn(data->GetData<UserMessage*>("um_ptr")->GetMessageName()); + }); + + ADD_CLASS_FUNCTION("UserMessage", "GetMessageID", [](FunctionContext* context, ClassData* data) -> void { + context->SetReturn(data->GetData<UserMessage*>("um_ptr")->GetMessageID()); + }); + + ADD_CLASS_FUNCTION("UserMessage", "HasField", [](FunctionContext* context, ClassData* data) -> void { + std::string field_name = context->GetArgumentOr<std::string>(0, ""); + context->SetReturn(data->GetData<UserMessage*>("um_ptr")->HasField(field_name)); + }); + + ADD_CLASS_FUNCTION("UserMessage", "GetInt32", [](FunctionContext* context, ClassData* data) -> void { + std::string field_name = context->GetArgumentOr<std::string>(0, ""); + if(field_name == "") return; + + context->SetReturn(data->GetData<UserMessage*>("um_ptr")->GetInt32(field_name)); + }); + + ADD_CLASS_FUNCTION("UserMessage", "SetInt32", [](FunctionContext* context, ClassData* data) -> void { + std::string field_name = context->GetArgumentOr<std::string>(0, ""); + if(field_name == "") return; + + int32_t value = context->GetArgumentOr<int>(1, 0); + + data->GetData<UserMessage*>("um_ptr")->SetInt32(field_name, value); + }); + + ADD_CLASS_FUNCTION("UserMessage", "GetRepeatedInt32", [](FunctionContext* context, ClassData* data) -> void { + std::string field_name = context->GetArgumentOr<std::string>(0, ""); + if(field_name == "") return; + + int index = context->GetArgumentOr<int>(1, 0); + + context->SetReturn(data->GetData<UserMessage*>("um_ptr")->GetRepeatedInt32(field_name, index)); + }); + + ADD_CLASS_FUNCTION("UserMessage", "SetRepeatedInt32", [](FunctionContext* context, ClassData* data) -> void { + std::string field_name = context->GetArgumentOr<std::string>(0, ""); + if(field_name == "") return; + + int32_t index = context->GetArgumentOr<int>(1, 0); + int32_t value = context->GetArgumentOr<int>(2, 0); + + data->GetData<UserMessage*>("um_ptr")->SetRepeatedInt32(field_name, index, value); + }); + + ADD_CLASS_FUNCTION("UserMessage", "AddInt32", [](FunctionContext* context, ClassData* data) -> void { + std::string field_name = context->GetArgumentOr<std::string>(0, ""); + if(field_name == "") return; + + int32_t value = context->GetArgumentOr<int>(1, 0); + + data->GetData<UserMessage*>("um_ptr")->AddInt32(field_name, value); + }); + + ADD_CLASS_FUNCTION("UserMessage", "GetInt64", [](FunctionContext* context, ClassData* data) -> void { + std::string field_name = context->GetArgumentOr<std::string>(0, ""); + if(field_name == "") return; + context->SetReturn(data->GetData<UserMessage*>("um_ptr")->GetInt64(field_name)); + }); + + ADD_CLASS_FUNCTION("UserMessage", "SetInt64", [](FunctionContext* context, ClassData* data) -> void { + std::string field_name = context->GetArgumentOr<std::string>(0, ""); + if(field_name == "") return; + int64_t value = context->GetArgumentOr<int>(1, (int)0); + data->GetData<UserMessage*>("um_ptr")->SetInt64(field_name, value); + }); + + ADD_CLASS_FUNCTION("UserMessage", "GetRepeatedInt64", [](FunctionContext* context, ClassData* data) -> void { + std::string field_name = context->GetArgumentOr<std::string>(0, ""); + if(field_name == "") return; + int index = context->GetArgumentOr<int>(1, 0); + context->SetReturn(data->GetData<UserMessage*>("um_ptr")->GetRepeatedInt64(field_name, index)); + }); + + ADD_CLASS_FUNCTION("UserMessage", "SetRepeatedInt64", [](FunctionContext* context, ClassData* data) -> void { + std::string field_name = context->GetArgumentOr<std::string>(0, ""); + if(field_name == "") return; + int index = context->GetArgumentOr<int>(1, 0); + int64_t value = context->GetArgumentOr<int>(2, (int)0); + data->GetData<UserMessage*>("um_ptr")->SetRepeatedInt64(field_name, index, value); + }); + + ADD_CLASS_FUNCTION("UserMessage", "AddInt64", [](FunctionContext* context, ClassData* data) -> void { + std::string field_name = context->GetArgumentOr<std::string>(0, ""); + if(field_name == "") return; + int64_t value = context->GetArgumentOr<int>(1, (int)0); + data->GetData<UserMessage*>("um_ptr")->AddInt64(field_name, value); + }); + + ADD_CLASS_FUNCTION("UserMessage", "GetUInt32", [](FunctionContext* context, ClassData* data) -> void { + std::string field_name = context->GetArgumentOr<std::string>(0, ""); + if(field_name == "") return; + context->SetReturn(data->GetData<UserMessage*>("um_ptr")->GetUInt32(field_name)); + }); + + ADD_CLASS_FUNCTION("UserMessage", "SetUInt32", [](FunctionContext* context, ClassData* data) -> void { + std::string field_name = context->GetArgumentOr<std::string>(0, ""); + if(field_name == "") return; + uint32_t value = context->GetArgumentOr<int>(1, (int)0); + data->GetData<UserMessage*>("um_ptr")->SetUInt32(field_name, value); + }); + + ADD_CLASS_FUNCTION("UserMessage", "GetRepeatedUInt32", [](FunctionContext* context, ClassData* data) -> void { + std::string field_name = context->GetArgumentOr<std::string>(0, ""); + if(field_name == "") return; + int index = context->GetArgumentOr<int>(1, 0); + context->SetReturn(data->GetData<UserMessage*>("um_ptr")->GetRepeatedUInt32(field_name, index)); + }); + + ADD_CLASS_FUNCTION("UserMessage", "SetRepeatedUInt32", [](FunctionContext* context, ClassData* data) -> void { + std::string field_name = context->GetArgumentOr<std::string>(0, ""); + if(field_name == "") return; + int index = context->GetArgumentOr<int>(1, 0); + uint32_t value = context->GetArgumentOr<int>(2, (int)0); + data->GetData<UserMessage*>("um_ptr")->SetRepeatedUInt32(field_name, index, value); + }); + + ADD_CLASS_FUNCTION("UserMessage", "AddUInt32", [](FunctionContext* context, ClassData* data) -> void { + std::string field_name = context->GetArgumentOr<std::string>(0, ""); + if(field_name == "") return; + uint32_t value = context->GetArgumentOr<int>(1, (int)0); + data->GetData<UserMessage*>("um_ptr")->AddUInt32(field_name, value); + }); + + ADD_CLASS_FUNCTION("UserMessage", "GetUInt64", [](FunctionContext* context, ClassData* data) -> void { + std::string field_name = context->GetArgumentOr<std::string>(0, ""); + if(field_name == "") return; + context->SetReturn(data->GetData<UserMessage*>("um_ptr")->GetUInt64(field_name)); + }); + + ADD_CLASS_FUNCTION("UserMessage", "SetUInt64", [](FunctionContext* context, ClassData* data) -> void { + std::string field_name = context->GetArgumentOr<std::string>(0, ""); + if(field_name == "") return; + uint64_t value = context->GetArgumentOr<uint64_t>(1, (uint64_t)0); + data->GetData<UserMessage*>("um_ptr")->SetUInt64(field_name, value); + }); + + ADD_CLASS_FUNCTION("UserMessage", "GetRepeatedUInt64", [](FunctionContext* context, ClassData* data) -> void { + std::string field_name = context->GetArgumentOr<std::string>(0, ""); + if(field_name == "") return; + int index = context->GetArgumentOr<int>(1, 0); + context->SetReturn(data->GetData<UserMessage*>("um_ptr")->GetRepeatedUInt64(field_name, index)); + }); + + ADD_CLASS_FUNCTION("UserMessage", "SetRepeatedUInt64", [](FunctionContext* context, ClassData* data) -> void { + std::string field_name = context->GetArgumentOr<std::string>(0, ""); + if(field_name == "") return; + int index = context->GetArgumentOr<int>(1, 0); + uint64_t value = context->GetArgumentOr<uint64_t>(2, (uint64_t)0); + data->GetData<UserMessage*>("um_ptr")->SetRepeatedUInt64(field_name, index, value); + }); + + ADD_CLASS_FUNCTION("UserMessage", "AddUInt64", [](FunctionContext* context, ClassData* data) -> void { + std::string field_name = context->GetArgumentOr<std::string>(0, ""); + if(field_name == "") return; + uint64_t value = context->GetArgumentOr<uint64_t>(1, (uint64_t)0); + data->GetData<UserMessage*>("um_ptr")->AddUInt64(field_name, value); + }); + + ADD_CLASS_FUNCTION("UserMessage", "GetInt64OrUnsigned", [](FunctionContext* context, ClassData* data) -> void { + std::string field_name = context->GetArgumentOr<std::string>(0, ""); + if(field_name == "") return; + context->SetReturn(data->GetData<UserMessage*>("um_ptr")->GetInt64OrUnsigned(field_name)); + }); + + ADD_CLASS_FUNCTION("UserMessage", "SetInt64OrUnsigned", [](FunctionContext* context, ClassData* data) -> void { + std::string field_name = context->GetArgumentOr<std::string>(0, ""); + if(field_name == "") return; + int64_t value = context->GetArgumentOr<int>(1, (int)0); + data->GetData<UserMessage*>("um_ptr")->SetInt64OrUnsigned(field_name, value); + }); + + ADD_CLASS_FUNCTION("UserMessage", "GetRepeatedInt64OrUnsigned", [](FunctionContext* context, ClassData* data) -> void { + std::string field_name = context->GetArgumentOr<std::string>(0, ""); + if(field_name == "") return; + int index = context->GetArgumentOr<int>(1, 0); + context->SetReturn(data->GetData<UserMessage*>("um_ptr")->GetRepeatedInt64OrUnsigned(field_name, index)); + }); + + ADD_CLASS_FUNCTION("UserMessage", "SetRepeatedInt64OrUnsigned", [](FunctionContext* context, ClassData* data) -> void { + std::string field_name = context->GetArgumentOr<std::string>(0, ""); + if(field_name == "") return; + int index = context->GetArgumentOr<int>(1, 0); + int64_t value = context->GetArgumentOr<int>(2, (int)0); + data->GetData<UserMessage*>("um_ptr")->SetRepeatedInt64OrUnsigned(field_name, index, value); + }); + + ADD_CLASS_FUNCTION("UserMessage", "AddInt64OrUnsigned", [](FunctionContext* context, ClassData* data) -> void { + std::string field_name = context->GetArgumentOr<std::string>(0, ""); + if(field_name == "") return; + int64_t value = context->GetArgumentOr<int>(1, (int)0); + data->GetData<UserMessage*>("um_ptr")->AddInt64OrUnsigned(field_name, value); + }); + + ADD_CLASS_FUNCTION("UserMessage", "GetBool", [](FunctionContext* context, ClassData* data) -> void { + std::string field_name = context->GetArgumentOr<std::string>(0, ""); + if(field_name == "") return; + context->SetReturn(data->GetData<UserMessage*>("um_ptr")->GetBool(field_name)); + }); + + ADD_CLASS_FUNCTION("UserMessage", "SetBool", [](FunctionContext* context, ClassData* data) -> void { + std::string field_name = context->GetArgumentOr<std::string>(0, ""); + if(field_name == "") return; + bool value = context->GetArgumentOr<bool>(1, (bool)0); + data->GetData<UserMessage*>("um_ptr")->SetBool(field_name, value); + }); + + ADD_CLASS_FUNCTION("UserMessage", "GetRepeatedBool", [](FunctionContext* context, ClassData* data) -> void { + std::string field_name = context->GetArgumentOr<std::string>(0, ""); + if(field_name == "") return; + int index = context->GetArgumentOr<int>(1, 0); + context->SetReturn(data->GetData<UserMessage*>("um_ptr")->GetRepeatedBool(field_name, index)); + }); + + ADD_CLASS_FUNCTION("UserMessage", "SetRepeatedBool", [](FunctionContext* context, ClassData* data) -> void { + std::string field_name = context->GetArgumentOr<std::string>(0, ""); + if(field_name == "") return; + int index = context->GetArgumentOr<int>(1, 0); + bool value = context->GetArgumentOr<bool>(2, (bool)0); + data->GetData<UserMessage*>("um_ptr")->SetRepeatedBool(field_name, index, value); + }); + + ADD_CLASS_FUNCTION("UserMessage", "AddBool", [](FunctionContext* context, ClassData* data) -> void { + std::string field_name = context->GetArgumentOr<std::string>(0, ""); + if(field_name == "") return; + bool value = context->GetArgumentOr<bool>(1, (bool)0); + data->GetData<UserMessage*>("um_ptr")->AddBool(field_name, value); + }); + + ADD_CLASS_FUNCTION("UserMessage", "GetFloat", [](FunctionContext* context, ClassData* data) -> void { + std::string field_name = context->GetArgumentOr<std::string>(0, ""); + if(field_name == "") return; + context->SetReturn(data->GetData<UserMessage*>("um_ptr")->GetFloat(field_name)); + }); + + ADD_CLASS_FUNCTION("UserMessage", "SetFloat", [](FunctionContext* context, ClassData* data) -> void { + std::string field_name = context->GetArgumentOr<std::string>(0, ""); + if(field_name == "") return; + float value = context->GetArgumentOr<float>(1, (float)0); + data->GetData<UserMessage*>("um_ptr")->SetFloat(field_name, value); + }); + + ADD_CLASS_FUNCTION("UserMessage", "GetRepeatedFloat", [](FunctionContext* context, ClassData* data) -> void { + std::string field_name = context->GetArgumentOr<std::string>(0, ""); + if(field_name == "") return; + int index = context->GetArgumentOr<int>(1, 0); + context->SetReturn(data->GetData<UserMessage*>("um_ptr")->GetRepeatedFloat(field_name, index)); + }); + + ADD_CLASS_FUNCTION("UserMessage", "SetRepeatedFloat", [](FunctionContext* context, ClassData* data) -> void { + std::string field_name = context->GetArgumentOr<std::string>(0, ""); + if(field_name == "") return; + int index = context->GetArgumentOr<int>(1, 0); + float value = context->GetArgumentOr<float>(2, (float)0); + data->GetData<UserMessage*>("um_ptr")->SetRepeatedFloat(field_name, index, value); + }); + + ADD_CLASS_FUNCTION("UserMessage", "AddFloat", [](FunctionContext* context, ClassData* data) -> void { + std::string field_name = context->GetArgumentOr<std::string>(0, ""); + if(field_name == "") return; + float value = context->GetArgumentOr<float>(1, (float)0); + data->GetData<UserMessage*>("um_ptr")->AddFloat(field_name, value); + }); + + ADD_CLASS_FUNCTION("UserMessage", "GetDouble", [](FunctionContext* context, ClassData* data) -> void { + std::string field_name = context->GetArgumentOr<std::string>(0, ""); + if(field_name == "") return; + context->SetReturn(data->GetData<UserMessage*>("um_ptr")->GetDouble(field_name)); + }); + + ADD_CLASS_FUNCTION("UserMessage", "SetDouble", [](FunctionContext* context, ClassData* data) -> void { + std::string field_name = context->GetArgumentOr<std::string>(0, ""); + if(field_name == "") return; + double value = context->GetArgumentOr<double>(1, (double)0); + data->GetData<UserMessage*>("um_ptr")->SetDouble(field_name, value); + }); + + ADD_CLASS_FUNCTION("UserMessage", "GetRepeatedDouble", [](FunctionContext* context, ClassData* data) -> void { + std::string field_name = context->GetArgumentOr<std::string>(0, ""); + if(field_name == "") return; + int index = context->GetArgumentOr<int>(1, 0); + context->SetReturn(data->GetData<UserMessage*>("um_ptr")->GetRepeatedDouble(field_name, index)); + }); + + ADD_CLASS_FUNCTION("UserMessage", "SetRepeatedDouble", [](FunctionContext* context, ClassData* data) -> void { + std::string field_name = context->GetArgumentOr<std::string>(0, ""); + if(field_name == "") return; + int index = context->GetArgumentOr<int>(1, 0); + double value = context->GetArgumentOr<double>(2, (double)0); + data->GetData<UserMessage*>("um_ptr")->SetRepeatedDouble(field_name, index, value); + }); + + ADD_CLASS_FUNCTION("UserMessage", "AddDouble", [](FunctionContext* context, ClassData* data) -> void { + std::string field_name = context->GetArgumentOr<std::string>(0, ""); + if(field_name == "") return; + double value = context->GetArgumentOr<double>(1, (double)0); + data->GetData<UserMessage*>("um_ptr")->AddDouble(field_name, value); + }); + + ADD_CLASS_FUNCTION("UserMessage", "GetFloatOrDouble", [](FunctionContext* context, ClassData* data) -> void { + std::string field_name = context->GetArgumentOr<std::string>(0, ""); + if(field_name == "") return; + context->SetReturn(data->GetData<UserMessage*>("um_ptr")->GetFloatOrDouble(field_name)); + }); + + ADD_CLASS_FUNCTION("UserMessage", "SetFloatOrDouble", [](FunctionContext* context, ClassData* data) -> void { + std::string field_name = context->GetArgumentOr<std::string>(0, ""); + if(field_name == "") return; + float value = context->GetArgumentOr<float>(1, (float)0); + data->GetData<UserMessage*>("um_ptr")->SetFloatOrDouble(field_name, value); + }); + + ADD_CLASS_FUNCTION("UserMessage", "GetRepeatedFloatOrDouble", [](FunctionContext* context, ClassData* data) -> void { + std::string field_name = context->GetArgumentOr<std::string>(0, ""); + if(field_name == "") return; + int index = context->GetArgumentOr<int>(1, 0); + context->SetReturn(data->GetData<UserMessage*>("um_ptr")->GetRepeatedFloatOrDouble(field_name, index)); + }); + + ADD_CLASS_FUNCTION("UserMessage", "SetRepeatedFloatOrDouble", [](FunctionContext* context, ClassData* data) -> void { + std::string field_name = context->GetArgumentOr<std::string>(0, ""); + if(field_name == "") return; + int index = context->GetArgumentOr<int>(1, 0); + float value = context->GetArgumentOr<float>(2, (float)0); + data->GetData<UserMessage*>("um_ptr")->SetRepeatedFloatOrDouble(field_name, index, value); + }); + + ADD_CLASS_FUNCTION("UserMessage", "AddFloatOrDouble", [](FunctionContext* context, ClassData* data) -> void { + std::string field_name = context->GetArgumentOr<std::string>(0, ""); + if(field_name == "") return; + float value = context->GetArgumentOr<float>(1, (float)0); + data->GetData<UserMessage*>("um_ptr")->AddFloatOrDouble(field_name, value); + }); + + ADD_CLASS_FUNCTION("UserMessage", "GetString", [](FunctionContext* context, ClassData* data) -> void { + std::string field_name = context->GetArgumentOr<std::string>(0, ""); + if(field_name == "") return; + context->SetReturn(data->GetData<UserMessage*>("um_ptr")->GetString(field_name)); + }); + + ADD_CLASS_FUNCTION("UserMessage", "SetString", [](FunctionContext* context, ClassData* data) -> void { + std::string field_name = context->GetArgumentOr<std::string>(0, ""); + if(field_name == "") return; + std::string value = context->GetArgumentOr<std::string>(1, ""); + data->GetData<UserMessage*>("um_ptr")->SetString(field_name, value.c_str()); + }); + + ADD_CLASS_FUNCTION("UserMessage", "GetRepeatedString", [](FunctionContext* context, ClassData* data) -> void { + std::string field_name = context->GetArgumentOr<std::string>(0, ""); + if(field_name == "") return; + int index = context->GetArgumentOr<int>(1, 0); + context->SetReturn(data->GetData<UserMessage*>("um_ptr")->GetRepeatedString(field_name, index)); + }); + + ADD_CLASS_FUNCTION("UserMessage", "SetRepeatedString", [](FunctionContext* context, ClassData* data) -> void { + std::string field_name = context->GetArgumentOr<std::string>(0, ""); + if(field_name == "") return; + int index = context->GetArgumentOr<int>(1, 0); + std::string value = context->GetArgumentOr<std::string>(2, ""); + data->GetData<UserMessage*>("um_ptr")->SetRepeatedString(field_name, index, value.c_str()); + }); + + ADD_CLASS_FUNCTION("UserMessage", "AddString", [](FunctionContext* context, ClassData* data) -> void { + std::string field_name = context->GetArgumentOr<std::string>(0, ""); + if(field_name == "") return; + std::string value = context->GetArgumentOr<std::string>(1, ""); + data->GetData<UserMessage*>("um_ptr")->AddString(field_name, value.c_str()); + }); + + ADD_CLASS_FUNCTION("UserMessage", "GetColor", [](FunctionContext* context, ClassData* data) -> void { + std::string field_name = context->GetArgumentOr<std::string>(0, ""); + if(field_name == "") return; + context->SetReturn(data->GetData<UserMessage*>("um_ptr")->GetColor(field_name)); + }); + + ADD_CLASS_FUNCTION("UserMessage", "SetColor", [](FunctionContext* context, ClassData* data) -> void { + std::string field_name = context->GetArgumentOr<std::string>(0, ""); + if(field_name == "") return; + Color value = context->GetArgumentOr<Color>(1, Color(255,255,255,255)); + data->GetData<UserMessage*>("um_ptr")->SetColor(field_name, value); + }); + + ADD_CLASS_FUNCTION("UserMessage", "GetRepeatedColor", [](FunctionContext* context, ClassData* data) -> void { + std::string field_name = context->GetArgumentOr<std::string>(0, ""); + if(field_name == "") return; + int index = context->GetArgumentOr<int>(1, 0); + context->SetReturn(data->GetData<UserMessage*>("um_ptr")->GetRepeatedColor(field_name, index)); + }); + + ADD_CLASS_FUNCTION("UserMessage", "SetRepeatedColor", [](FunctionContext* context, ClassData* data) -> void { + std::string field_name = context->GetArgumentOr<std::string>(0, ""); + if(field_name == "") return; + int index = context->GetArgumentOr<int>(1, 0); + Color value = context->GetArgumentOr<Color>(2, Color(255,255,255,255)); + data->GetData<UserMessage*>("um_ptr")->SetRepeatedColor(field_name, index, value); + }); + + ADD_CLASS_FUNCTION("UserMessage", "AddColor", [](FunctionContext* context, ClassData* data) -> void { + std::string field_name = context->GetArgumentOr<std::string>(0, ""); + if(field_name == "") return; + Color value = context->GetArgumentOr<Color>(1, Color(255,255,255,255)); + data->GetData<UserMessage*>("um_ptr")->AddColor(field_name, value); + }); + + ADD_CLASS_FUNCTION("UserMessage", "GetVector2D", [](FunctionContext* context, ClassData* data) -> void { + std::string field_name = context->GetArgumentOr<std::string>(0, ""); + if(field_name == "") return; + context->SetReturn(data->GetData<UserMessage*>("um_ptr")->GetVector2D(field_name)); + }); + + ADD_CLASS_FUNCTION("UserMessage", "SetVector2D", [](FunctionContext* context, ClassData* data) -> void { + std::string field_name = context->GetArgumentOr<std::string>(0, ""); + if(field_name == "") return; + Vector2D value = context->GetArgumentOr<Vector2D>(1, Vector2D(0.0,0.0)); + data->GetData<UserMessage*>("um_ptr")->SetVector2D(field_name, value); + }); + + ADD_CLASS_FUNCTION("UserMessage", "GetRepeatedVector2D", [](FunctionContext* context, ClassData* data) -> void { + std::string field_name = context->GetArgumentOr<std::string>(0, ""); + if(field_name == "") return; + int index = context->GetArgumentOr<int>(1, 0); + context->SetReturn(data->GetData<UserMessage*>("um_ptr")->GetRepeatedVector2D(field_name, index)); + }); + + ADD_CLASS_FUNCTION("UserMessage", "SetRepeatedVector2D", [](FunctionContext* context, ClassData* data) -> void { + std::string field_name = context->GetArgumentOr<std::string>(0, ""); + if(field_name == "") return; + int index = context->GetArgumentOr<int>(1, 0); + Vector2D value = context->GetArgumentOr<Vector2D>(2, Vector2D(0.0,0.0)); + data->GetData<UserMessage*>("um_ptr")->SetRepeatedVector2D(field_name, index, value); + }); + + ADD_CLASS_FUNCTION("UserMessage", "AddVector2D", [](FunctionContext* context, ClassData* data) -> void { + std::string field_name = context->GetArgumentOr<std::string>(0, ""); + if(field_name == "") return; + Vector2D value = context->GetArgumentOr<Vector2D>(1, Vector2D(0.0,0.0)); + data->GetData<UserMessage*>("um_ptr")->AddVector2D(field_name, value); + }); + + ADD_CLASS_FUNCTION("UserMessage", "GetVector", [](FunctionContext* context, ClassData* data) -> void { + std::string field_name = context->GetArgumentOr<std::string>(0, ""); + if(field_name == "") return; + context->SetReturn(data->GetData<UserMessage*>("um_ptr")->GetVector(field_name)); + }); + + ADD_CLASS_FUNCTION("UserMessage", "SetVector", [](FunctionContext* context, ClassData* data) -> void { + std::string field_name = context->GetArgumentOr<std::string>(0, ""); + if(field_name == "") return; + Vector value = context->GetArgumentOr<Vector>(1, Vector(0.0,0.0,0.0)); + data->GetData<UserMessage*>("um_ptr")->SetVector(field_name, value); + }); + + ADD_CLASS_FUNCTION("UserMessage", "GetRepeatedVector", [](FunctionContext* context, ClassData* data) -> void { + std::string field_name = context->GetArgumentOr<std::string>(0, ""); + if(field_name == "") return; + int index = context->GetArgumentOr<int>(1, 0); + context->SetReturn(data->GetData<UserMessage*>("um_ptr")->GetRepeatedVector(field_name, index)); + }); + + ADD_CLASS_FUNCTION("UserMessage", "SetRepeatedVector", [](FunctionContext* context, ClassData* data) -> void { + std::string field_name = context->GetArgumentOr<std::string>(0, ""); + if(field_name == "") return; + int index = context->GetArgumentOr<int>(1, 0); + Vector value = context->GetArgumentOr<Vector>(2, Vector(0.0,0.0,0.0)); + data->GetData<UserMessage*>("um_ptr")->SetRepeatedVector(field_name, index, value); + }); + + ADD_CLASS_FUNCTION("UserMessage", "AddVector", [](FunctionContext* context, ClassData* data) -> void { + std::string field_name = context->GetArgumentOr<std::string>(0, ""); + if(field_name == "") return; + Vector value = context->GetArgumentOr<Vector>(1, Vector(0.0,0.0,0.0)); + data->GetData<UserMessage*>("um_ptr")->AddVector(field_name, value); + }); + + ADD_CLASS_FUNCTION("UserMessage", "GetQAngle", [](FunctionContext* context, ClassData* data) -> void { + std::string field_name = context->GetArgumentOr<std::string>(0, ""); + if(field_name == "") return; + context->SetReturn(data->GetData<UserMessage*>("um_ptr")->GetQAngle(field_name)); + }); + + ADD_CLASS_FUNCTION("UserMessage", "SetQAngle", [](FunctionContext* context, ClassData* data) -> void { + std::string field_name = context->GetArgumentOr<std::string>(0, ""); + if(field_name == "") return; + QAngle value = context->GetArgumentOr<QAngle>(1, QAngle(0.0,0.0,0.0)); + data->GetData<UserMessage*>("um_ptr")->SetQAngle(field_name, value); + }); + + ADD_CLASS_FUNCTION("UserMessage", "GetRepeatedQAngle", [](FunctionContext* context, ClassData* data) -> void { + std::string field_name = context->GetArgumentOr<std::string>(0, ""); + if(field_name == "") return; + int index = context->GetArgumentOr<int>(1, 0); + context->SetReturn(data->GetData<UserMessage*>("um_ptr")->GetRepeatedQAngle(field_name, index)); + }); + + ADD_CLASS_FUNCTION("UserMessage", "SetRepeatedQAngle", [](FunctionContext* context, ClassData* data) -> void { + std::string field_name = context->GetArgumentOr<std::string>(0, ""); + if(field_name == "") return; + int index = context->GetArgumentOr<int>(1, 0); + QAngle value = context->GetArgumentOr<QAngle>(2, QAngle(0.0,0.0,0.0)); + data->GetData<UserMessage*>("um_ptr")->SetRepeatedQAngle(field_name, index, value); + }); + + ADD_CLASS_FUNCTION("UserMessage", "AddQAngle", [](FunctionContext* context, ClassData* data) -> void { + std::string field_name = context->GetArgumentOr<std::string>(0, ""); + if(field_name == "") return; + QAngle value = context->GetArgumentOr<QAngle>(1, QAngle(0.0,0.0,0.0)); + data->GetData<UserMessage*>("um_ptr")->AddQAngle(field_name, value); + }); + + ADD_CLASS_FUNCTION("UserMessage", "GetUMessage", [](FunctionContext* context, ClassData* data) -> void { + std::string field_name = context->GetArgumentOr<std::string>(0, ""); + if(field_name == "") return; + + context->SetReturn(MAKE_CLASS_INSTANCE("UserMessage", { { "um_ptr", new UserMessage(data->GetData<UserMessage*>("um_ptr")->GetUMessage(field_name)) } })); + }); + + ADD_CLASS_FUNCTION("UserMessage", "GetRepeatedMessage", [](FunctionContext* context, ClassData* data) -> void { + std::string field_name = context->GetArgumentOr<std::string>(0, ""); + if(field_name == "") return; + + int index = context->GetArgumentOr<int>(1, 0); + + context->SetReturn(MAKE_CLASS_INSTANCE("UserMessage", { { "um_ptr", new UserMessage(data->GetData<UserMessage*>("um_ptr")->GetRepeatedMessage(field_name, index)) } })); + }); + + ADD_CLASS_FUNCTION("UserMessage", "AddMessage", [](FunctionContext* context, ClassData* data) -> void { + std::string field_name = context->GetArgumentOr<std::string>(0, ""); + if(field_name == "") return; + + context->SetReturn(MAKE_CLASS_INSTANCE("UserMessage", { { "um_ptr", new UserMessage(data->GetData<UserMessage*>("um_ptr")->AddMessage(field_name)) } })); + }); + + ADD_CLASS_FUNCTION("UserMessage", "RemoveRepeatedFieldValue", [](FunctionContext* context, ClassData* data) -> void { + std::string field_name = context->GetArgumentOr<std::string>(0, ""); + if(field_name == "") return; + int index = context->GetArgumentOr<int>(1, 0); + + data->GetData<UserMessage*>("um_ptr")->RemoveRepeatedFieldValue(field_name, index); + }); + + ADD_CLASS_FUNCTION("UserMessage", "GetRepeatedFieldCount", [](FunctionContext* context, ClassData* data) -> void { + std::string field_name = context->GetArgumentOr<std::string>(0, ""); + if(field_name == "") return; + + context->SetReturn(data->GetData<UserMessage*>("um_ptr")->GetRepeatedFieldCount(field_name)); + }); + + ADD_CLASS_FUNCTION("UserMessage", "AddClient", [](FunctionContext* context, ClassData* data) -> void { + int playerid = context->GetArgumentOr<int>(0, -1); + if(playerid == -1) return; + + data->GetData<UserMessage*>("um_ptr")->AddClient(playerid); + }); + + ADD_CLASS_FUNCTION("UserMessage", "RemoveClient", [](FunctionContext* context, ClassData* data) -> void { + int playerid = context->GetArgumentOr<int>(0, -1); + if(playerid == -1) return; + + data->GetData<UserMessage*>("um_ptr")->RemoveClient(playerid); + }); + + ADD_CLASS_FUNCTION("UserMessage", "ClearClients", [](FunctionContext* context, ClassData* data) -> void { + data->GetData<UserMessage*>("um_ptr")->ClearClients(); + }); + + ADD_CLASS_FUNCTION("UserMessage", "AddClients", [](FunctionContext* context, ClassData* data) -> void { + data->GetData<UserMessage*>("um_ptr")->AddClients(); + }); + + ADD_CLASS_FUNCTION("UserMessage", "GetClients", [](FunctionContext* context, ClassData* data) -> void { + data->GetData<UserMessage*>("um_ptr")->GetClients(); + }); + + ADD_CLASS_FUNCTION("UserMessage", "SendToPlayer", [](FunctionContext* context, ClassData* data) -> void { + int playerid = context->GetArgumentOr<int>(0, -1); + if(playerid == -1) return; + + data->GetData<UserMessage*>("um_ptr")->SendToPlayer(playerid); + }); + + ADD_CLASS_FUNCTION("UserMessage", "SendToAllPlayers", [](FunctionContext* context, ClassData* data) -> void { + data->GetData<UserMessage*>("um_ptr")->SendToAllPlayers(); + }); + +}) \ No newline at end of file diff --git a/src/scripting/player/manager.cpp b/src/scripting/player/manager.cpp new file mode 100644 index 000000000..7087b3bbe --- /dev/null +++ b/src/scripting/player/manager.cpp @@ -0,0 +1,34 @@ +#include <scripting/core.h> + +#include <server/player/manager.h> + +LoadScriptingComponent(playermanager, [](PluginObject plugin, EContext* ctx) -> void { + ADD_CLASS("PlayerManager"); + + ADD_CLASS_FUNCTION("PlayerManager", "PlayerManager", [](FunctionContext* context, ClassData* data) -> void {}); + + ADD_CLASS_FUNCTION("PlayerManager", "GetPlayerCount", [](FunctionContext* context, ClassData* data) -> void { + context->SetReturn(g_playerManager.GetPlayers()); + }); + + ADD_CLASS_FUNCTION("PlayerManager", "GetPlayerCap", [](FunctionContext* context, ClassData* data) -> void { + context->SetReturn(g_playerManager.GetPlayerCap()); + }); + + ADD_CLASS_FUNCTION("PlayerManager", "SendMsg", [](FunctionContext* context, ClassData* data) -> void { + int destination = context->GetArgumentOr<int>(0, -1); + if(destination == -1) return; + + std::string text = context->GetArgumentOr<std::string>(1, ""); + + for (int i = 0; i < g_playerManager.GetPlayerCap(); i++) + { + Player* player = g_playerManager.GetPlayer(i); + if (!player) continue; + if (player->IsFakeClient()) continue; + if (!player->GetController()) continue; + + player->SendMsg(destination, text.c_str()); + } + }); +}) \ No newline at end of file diff --git a/src/scripting/player/player.cpp b/src/scripting/player/player.cpp new file mode 100644 index 000000000..e3a065a8f --- /dev/null +++ b/src/scripting/player/player.cpp @@ -0,0 +1,476 @@ +#include <scripting/core.h> + +#include <sdk/game.h> +#include <server/player/manager.h> +#include <server/commands/manager.h> +#include <utils/utils.h> +#include <utils/common.h> +#include <memory/gamedata/gamedata.h> +#include <memory/virtual/virtual.h> +#include <engine/convars/query.h> +#include <server/configuration/configuration.h> +#include <sdk/schema.h> + +#include "network_connection.pb.h" + +typedef void (*CBasePlayerController_SetPawn)(void*, void*, bool, bool); + +LoadScriptingComponent(player, [](PluginObject plugin, EContext* ctx) -> void { + ADD_FUNCTION("GetPlayer", [](FunctionContext* context) -> void { + int playerid = context->GetArgumentOr<int>(0, -1); + if (playerid < 0 || playerid >= GetMaxGameClients()) return; + + auto player = g_playerManager.GetPlayer(playerid); + if (!player) return; + + context->SetReturn(player->GetPlayerObject()); + }); + + ADD_CLASS("Player"); + + ADD_CLASS_FUNCTION("Player", "CBaseEntity", [](FunctionContext* context, ClassData* data) -> void { + int playerid = data->GetData<int>("playerid"); + + Player* player = g_playerManager.GetPlayer(playerid); + if (!player) return context->SetReturn(MakeSDKClassInstance("CBaseEntity", nullptr, context->GetPluginContext())); + + context->SetReturn(MakeSDKClassInstance("CBaseEntity", player->GetPlayerPawn(), context->GetPluginContext())); + }); + + ADD_CLASS_FUNCTION("Player", "CBasePlayerController", [](FunctionContext* context, ClassData* data) -> void { + int playerid = data->GetData<int>("playerid"); + + Player* player = g_playerManager.GetPlayer(playerid); + if (!player) return context->SetReturn(MakeSDKClassInstance("CBasePlayerController", nullptr, context->GetPluginContext())); + + context->SetReturn(MakeSDKClassInstance("CBasePlayerController", player->GetController(), context->GetPluginContext())); + }); + + ADD_CLASS_FUNCTION("Player", "CBasePlayerPawn", [](FunctionContext* context, ClassData* data) -> void { + int playerid = data->GetData<int>("playerid"); + + Player* player = g_playerManager.GetPlayer(playerid); + if (!player) return context->SetReturn(MakeSDKClassInstance("CBasePlayerPawn", nullptr, context->GetPluginContext())); + + context->SetReturn(MakeSDKClassInstance("CBasePlayerPawn", player->GetPawn(), context->GetPluginContext())); + }); + + ADD_CLASS_FUNCTION("Player", "CCSPlayerController", [](FunctionContext* context, ClassData* data) -> void { + int playerid = data->GetData<int>("playerid"); + + Player* player = g_playerManager.GetPlayer(playerid); + if (!player) return context->SetReturn(MakeSDKClassInstance("CCSPlayerController", nullptr, context->GetPluginContext())); + + context->SetReturn(MakeSDKClassInstance("CCSPlayerController", player->GetController(), context->GetPluginContext())); + }); + + ADD_CLASS_FUNCTION("Player", "CCSPlayerPawn", [](FunctionContext* context, ClassData* data) -> void { + int playerid = data->GetData<int>("playerid"); + + Player* player = g_playerManager.GetPlayer(playerid); + if (!player) return context->SetReturn(MakeSDKClassInstance("CCSPlayerPawn", nullptr, context->GetPluginContext())); + + context->SetReturn(MakeSDKClassInstance("CCSPlayerPawn", player->GetPlayerPawn(), context->GetPluginContext())); + }); + + ADD_CLASS_FUNCTION("Player", "CCSPlayerPawnBase", [](FunctionContext* context, ClassData* data) -> void { + int playerid = data->GetData<int>("playerid"); + + Player* player = g_playerManager.GetPlayer(playerid); + if (!player) return context->SetReturn(MakeSDKClassInstance("CCSPlayerPawnBase", nullptr, context->GetPluginContext())); + + context->SetReturn(MakeSDKClassInstance("CCSPlayerPawnBase", player->GetPlayerPawn(), context->GetPluginContext())); + }); + + ADD_CLASS_FUNCTION("Player", "Drop", [](FunctionContext* context, ClassData* data) -> void { + int playerid = data->GetData<int>("playerid"); + + Player* player = g_playerManager.GetPlayer(playerid); + if (!player) return; + + int reason = context->GetArgumentOr<int>(0, -1); + if (reason == -1) return; + + std::string str_reason = context->GetArgumentOr<std::string>(1, ""); + + if (!engine) return; + + engine->DisconnectClient(CPlayerSlot(playerid), (ENetworkDisconnectionReason)reason, str_reason == "" ? nullptr : str_reason.c_str()); + }); + + ADD_CLASS_FUNCTION("Player", "GetChatTag", [](FunctionContext* context, ClassData* data) -> void { + int playerid = data->GetData<int>("playerid"); + + Player* player = g_playerManager.GetPlayer(playerid); + if (!player) return context->SetReturn(""); + + context->SetReturn(player->GetInternalVar("tag")); + }); + + ADD_CLASS_FUNCTION("Player", "GetChatTagColor", [](FunctionContext* context, ClassData* data) -> void { + int playerid = data->GetData<int>("playerid"); + + Player* player = g_playerManager.GetPlayer(playerid); + if (!player) return context->SetReturn(""); + + context->SetReturn(player->GetInternalVar("tagcolor")); + }); + + ADD_CLASS_FUNCTION("Player", "GetNameColor", [](FunctionContext* context, ClassData* data) -> void { + int playerid = data->GetData<int>("playerid"); + + Player* player = g_playerManager.GetPlayer(playerid); + if (!player) return context->SetReturn(""); + + context->SetReturn(player->GetInternalVar("namecolor")); + }); + + ADD_CLASS_FUNCTION("Player", "GetChatColor", [](FunctionContext* context, ClassData* data) -> void { + int playerid = data->GetData<int>("playerid"); + + Player* player = g_playerManager.GetPlayer(playerid); + if (!player) return context->SetReturn(""); + + context->SetReturn(player->GetInternalVar("chatcolor")); + }); + + ADD_CLASS_FUNCTION("Player", "SetChatTag", [](FunctionContext* context, ClassData* data) -> void { + int playerid = data->GetData<int>("playerid"); + + Player* player = g_playerManager.GetPlayer(playerid); + if (!player) return; + + std::string value = context->GetArgumentOr<std::string>(0, ""); + + player->SetInternalVar("tag", value); + }); + + ADD_CLASS_FUNCTION("Player", "SetChatTagColor", [](FunctionContext* context, ClassData* data) -> void { + int playerid = data->GetData<int>("playerid"); + + Player* player = g_playerManager.GetPlayer(playerid); + if (!player) return; + + std::string value = context->GetArgumentOr<std::string>(0, ""); + + player->SetInternalVar("tagcolor", value); + }); + + ADD_CLASS_FUNCTION("Player", "SetNameColor", [](FunctionContext* context, ClassData* data) -> void { + int playerid = data->GetData<int>("playerid"); + + Player* player = g_playerManager.GetPlayer(playerid); + if (!player) return; + + std::string value = context->GetArgumentOr<std::string>(0, ""); + + player->SetInternalVar("namecolor", value); + }); + + ADD_CLASS_FUNCTION("Player", "SetChatColor", [](FunctionContext* context, ClassData* data) -> void { + int playerid = data->GetData<int>("playerid"); + + Player* player = g_playerManager.GetPlayer(playerid); + if (!player) return; + + std::string value = context->GetArgumentOr<std::string>(0, ""); + + player->SetInternalVar("chatcolor", value); + }); + + ADD_CLASS_FUNCTION("Player", "ExecuteCommand", [](FunctionContext* context, ClassData* data) -> void { + int playerid = data->GetData<int>("playerid"); + std::string cmd = context->GetArgumentOr<std::string>(0, ""); + if (cmd == "") return; + + if (starts_with(cmd, "sw_")) + { + CCommand tokenizedArgs; + tokenizedArgs.Tokenize(cmd.c_str()); + + std::vector<std::string> cmdString = TokenizeCommand(cmd); + cmdString.erase(cmdString.begin()); + + std::string commandName = replace(tokenizedArgs[0], "sw_", ""); + + Command* command = g_commandsManager.FetchCommand(commandName); + if (command) + command->Execute(playerid, cmdString, true, "sw_"); + } + else + engine->ClientCommand(playerid, cmd.c_str()); + }); + + ADD_CLASS_FUNCTION("Player", "GetConvar", [](FunctionContext* context, ClassData* data) -> void { + int playerid = data->GetData<int>("playerid"); + std::string cvarname = context->GetArgumentOr<std::string>(0, ""); + + if (!engine) return context->SetReturn(""); + + context->SetReturn(engine->GetClientConVarValue(CPlayerSlot(playerid), cvarname.c_str())); + }); + + ADD_CLASS_FUNCTION("Player", "SetConvar", [](FunctionContext* context, ClassData* data) -> void { + int playerid = data->GetData<int>("playerid"); + + std::string cvar_name = context->GetArgumentOr<std::string>(0, ""); + std::string cvar_value = context->GetArgumentOr<std::string>(1, ""); + + auto player = g_playerManager.GetPlayer(playerid); + if (!player) return; + + player->SetClientConvar(cvar_name, cvar_value); + }); + + ADD_CLASS_FUNCTION("Player", "GetIPAddress", [](FunctionContext* context, ClassData* data) -> void { + int playerid = data->GetData<int>("playerid"); + + auto player = g_playerManager.GetPlayer(playerid); + if (!player) return context->SetReturn("0.0.0.0"); + + context->SetReturn(player->GetIPAddress()); + }); + + ADD_CLASS_FUNCTION("Player", "GetSlot", [](FunctionContext* context, ClassData* data) -> void { + int playerid = data->GetData<int>("playerid"); + context->SetReturn(playerid); + }); + + ADD_CLASS_FUNCTION("Player", "GetSteamID", [](FunctionContext* context, ClassData* data) -> void { + int playerid = data->GetData<int>("playerid"); + + Player* player = g_playerManager.GetPlayer(playerid); + if (!player) return context->SetReturn(0); + + context->SetReturn(player->GetSteamID()); + }); + + ADD_CLASS_FUNCTION("Player", "GetSteamID2", [](FunctionContext* context, ClassData* data) -> void { + int playerid = data->GetData<int>("playerid"); + + Player* player = g_playerManager.GetPlayer(playerid); + if (!player) return context->SetReturn("STEAM_0:0:000000000"); + + uint64_t steamid = player->GetSteamID(); + + if (steamid == 0) + return context->SetReturn("STEAM_0:0:000000000"); + + static const uint64_t base = 76561197960265728; + context->SetReturn(string_format("STEAM_0:%d:%llu", (steamid - base) & 1, (steamid - base) / 2)); + }); + + ADD_CLASS_FUNCTION("Player", "HideMenu", [](FunctionContext* context, ClassData* data) -> void { + int playerid = data->GetData<int>("playerid"); + + Player* player = g_playerManager.GetPlayer(playerid); + + if (!player) return; + if (!player->menu_renderer->HasMenuShown()) return; + + player->menu_renderer->HideMenu(); + }); + + ADD_CLASS_FUNCTION("Player", "IsFakeClient", [](FunctionContext* context, ClassData* data) -> void { + int playerid = data->GetData<int>("playerid"); + + Player* player = g_playerManager.GetPlayer(playerid); + if (!player) return context->SetReturn(true); + + context->SetReturn(player->IsFakeClient()); + }); + + ADD_CLASS_FUNCTION("Player", "IsFirstSpawn", [](FunctionContext* context, ClassData* data) -> void { + int playerid = data->GetData<int>("playerid"); + + Player* player = g_playerManager.GetPlayer(playerid); + if (!player) return context->SetReturn(false); + + context->SetReturn(player->IsFirstSpawn()); + }); + + ADD_CLASS_FUNCTION("Player", "Kill", [](FunctionContext* context, ClassData* data) -> void { + int playerid = data->GetData<int>("playerid"); + + Player* player = g_playerManager.GetPlayer(playerid); + if (!player) return; + + void* pawn = player->GetPawn(); + CALL_VIRTUAL(void, g_GameData.GetOffset("CBasePlayerPawn_CommitSuicide"), pawn, false, true); + }); + + ADD_CLASS_FUNCTION("Player", "Respawn", [](FunctionContext* context, ClassData* data) -> void { + int playerid = data->GetData<int>("playerid"); + + Player* player = g_playerManager.GetPlayer(playerid); + if (!player) return context->SetReturn(false); + + void* controller = player->GetController(); + void* pawn = player->GetPlayerPawn(); + if (!pawn) return; + + g_GameData.FetchSignature<CBasePlayerController_SetPawn>("CBasePlayerController_SetPawn")(controller, pawn, true, false); + CALL_VIRTUAL(void, g_GameData.GetOffset("CCSPlayerController_Respawn"), controller); + }); + + ADD_CLASS_FUNCTION("Player", "SendMsg", [](FunctionContext* context, ClassData* data) -> void { + int playerid = data->GetData<int>("playerid"); + + auto player = g_playerManager.GetPlayer(playerid); + if (!player) return; + + int messageType = context->GetArgumentOr<int>(0, 0); + std::string message = context->GetArgumentOr<std::string>(1, ""); + + player->SendMsg(messageType, message.c_str()); + }); + + ADD_CLASS_FUNCTION("Player", "SwitchTeam", [](FunctionContext* context, ClassData* data) -> void { + int playerid = data->GetData<int>("playerid"); + auto player = g_playerManager.GetPlayer(playerid); + if (!player) return; + + int team = context->GetArgumentOr<int>(0, -1); + if (team == -1) return; + + player->SwitchTeam(team); + }); + + ADD_CLASS_FUNCTION("Player", "ChangeTeam", [](FunctionContext* context, ClassData* data) -> void { + int playerid = data->GetData<int>("playerid"); + auto player = g_playerManager.GetPlayer(playerid); + if (!player) return; + + int team = context->GetArgumentOr<int>(0, -1); + if (team == -1) return; + + player->ChangeTeam(team); + }); + + ADD_CLASS_FUNCTION("Player", "ShowMenu", [](FunctionContext* context, ClassData* data) -> void { + int playerid = data->GetData<int>("playerid"); + auto player = g_playerManager.GetPlayer(playerid); + if (!player) return; + + std::string menuid = context->GetArgumentOr<std::string>(0, ""); + if (player->menu_renderer->HasMenuShown()) return; + + player->menu_renderer->ShowMenu(menuid); + }); + + ADD_CLASS_FUNCTION("Player", "GetVar", [](FunctionContext* context, ClassData* data) -> void { + int playerid = data->GetData<int>("playerid"); + auto player = g_playerManager.GetPlayer(playerid); + if (!player) return context->SetReturn(nullptr); + + std::string key = context->GetArgumentOr<std::string>(0, ""); + if (key == "") return context->SetReturn(nullptr); + + context->SetReturn(player->GetInternalVar(key)); + }); + + ADD_CLASS_FUNCTION("Player", "SetVar", [](FunctionContext* context, ClassData* data) -> void { + int playerid = data->GetData<int>("playerid"); + auto player = g_playerManager.GetPlayer(playerid); + if (!player) return; + + std::string key = context->GetArgumentOr<std::string>(0, ""); + if (key == "") return; + + std::any value = context->GetArgumentOr<std::any>(1, nullptr); + player->SetInternalVar(key, value); + }); + + ADD_CLASS_FUNCTION("Player", "SetListening", [](FunctionContext* context, ClassData* data) -> void { + int playerid = data->GetData<int>("playerid"); + auto player = g_playerManager.GetPlayer(playerid); + if (!player) return; + + int otherid = context->GetArgumentOr<int>(0, -1); + if (!g_playerManager.GetPlayer(otherid)) return; + + int listenOverride = context->GetArgumentOr<int>(0, 0); + + player->SetListen(CPlayerSlot(otherid), listenOverride); + }); + + ADD_CLASS_FUNCTION("Player", "GetVoiceFlags", [](FunctionContext* context, ClassData* data) -> void { + int playerid = data->GetData<int>("playerid"); + auto player = g_playerManager.GetPlayer(playerid); + if (!player) return context->SetReturn(0); + + context->SetReturn(player->GetVoiceFlags()); + }); + + ADD_CLASS_FUNCTION("Player", "SetVoiceFlags", [](FunctionContext* context, ClassData* data) -> void { + int playerid = data->GetData<int>("playerid"); + auto player = g_playerManager.GetPlayer(playerid); + if (!player) return; + + int flags = context->GetArgumentOr<int>(0, 0); + player->SetVoiceFlags(flags); + }); + + ADD_CLASS_FUNCTION("Player", "GetConnectedTime", [](FunctionContext* context, ClassData* data) -> void { + int playerid = data->GetData<int>("playerid"); + auto player = g_playerManager.GetPlayer(playerid); + if (!player) return context->SetReturn(0); + + context->SetReturn(player->GetConnectedTime()); + }); + + ADD_CLASS_FUNCTION("Player", "GetWeaponManager", [](FunctionContext* context, ClassData* data) -> void { + int playerid = data->GetData<int>("playerid"); + + context->SetReturn(MAKE_CLASS_INSTANCE("WeaponManager", { { "playerid", playerid } })); + }); + + ADD_CLASS_FUNCTION("Player", "QueryConvar", [](FunctionContext* context, ClassData* data) -> void { + int playerid = data->GetData<int>("playerid"); + auto player = g_playerManager.GetPlayer(playerid); + if (!player) return; + + std::string cvar_name = context->GetArgumentOr<std::string>(0, ""); + g_convarQuery.QueryCvarClient(CPlayerSlot(playerid), cvar_name); + }); + + ADD_CLASS_FUNCTION("Player", "PerformMenuAction", [](FunctionContext* context, ClassData* data) -> void { + int playerid = data->GetData<int>("playerid"); + auto player = g_playerManager.GetPlayer(playerid); + if (!player) return; + + std::string action = context->GetArgumentOr<std::string>(0, ""); + int value = context->GetArgumentOr<int>(0, 0); + + if (action == "useOption") { + if (!player->menu_renderer->HasMenuShown()) return; + if (player->menu_renderer->GetMenu()->GetItemsOnPage(player->menu_renderer->GetPage()) < value) return; + while (player->menu_renderer->GetSelection() != value - 1) + player->menu_renderer->MoveSelection(); + + player->menu_renderer->PerformMenuAction(g_Config.FetchValue<std::string>("core.menu.buttons.use")); + } + else if (action == "scrollToOption") { + if (!player->menu_renderer->HasMenuShown()) return; + if (player->menu_renderer->GetMenu()->GetItemsOnPage(player->menu_renderer->GetPage()) < value) return; + + while (player->menu_renderer->GetSelection() != value - 1) + player->menu_renderer->MoveSelection(); + } + }); + + ADD_CLASS_FUNCTION("Player", "IsValid", [](FunctionContext* context, ClassData* data) -> void { + int playerid = data->GetData<int>("playerid"); + auto player = g_playerManager.GetPlayer(playerid); + if (!player) return context->SetReturn(false); + + void* controller = player->GetController(); + if (!controller) return context->SetReturn(false); + if (schema::GetProp<bool>(controller, "CBasePlayerController", "m_bIsHLTV")) return context->SetReturn(false); + if (schema::GetProp<bool>(controller, "CBasePlayerController", "m_iConnected") != 0x0) return context->SetReturn(false); + + void* pawn = player->GetPawn(); + context->SetReturn(pawn != nullptr); + }); + +}) \ No newline at end of file diff --git a/src/scripting/sdk/baseclasses.cpp b/src/scripting/sdk/baseclasses.cpp new file mode 100644 index 000000000..8bb2f0fab --- /dev/null +++ b/src/scripting/sdk/baseclasses.cpp @@ -0,0 +1,576 @@ +#include <scripting/core.h> + +#include <utils/utils.h> + +LoadScriptingComponent(baseclasses, [](PluginObject plugin, EContext* ctx) -> void { + ADD_CLASS("Vector"); + ADD_CLASS("Vector2D"); + ADD_CLASS("Vector4D"); + ADD_CLASS("QAngle"); + ADD_CLASS("Color"); + + bool isLua = ctx->GetKind() == ContextKinds::Lua; + + ADD_CLASS_FUNCTION("Vector", "Vector", [](FunctionContext* context, ClassData* data) -> void { + float x = context->GetArgumentOr<float>(0, 0.0f); + float y = context->GetArgumentOr<float>(1, 0.0f); + float z = context->GetArgumentOr<float>(2, 0.0f); + data->SetData("vector_ptr", Vector(x, y, z)); + }); + + ADD_CLASS_MEMBER("Vector", "x", [](FunctionContext* context, ClassData* data) -> void { + Vector* vec = data->GetDataPtr<Vector>("vector_ptr"); + if (!vec) return context->SetReturn(0.0f); + context->SetReturn(vec->x); + }, [](FunctionContext* context, ClassData* data) -> void { + Vector* vec = data->GetDataPtr<Vector>("vector_ptr"); + if (!vec) return; + vec->x = context->GetArgumentOr<float>(0, 0.0f); + }); + + ADD_CLASS_MEMBER("Vector", "y", [](FunctionContext* context, ClassData* data) -> void { + Vector* vec = data->GetDataPtr<Vector>("vector_ptr"); + if (!vec) return context->SetReturn(0.0f); + context->SetReturn(vec->y); + }, [](FunctionContext* context, ClassData* data) -> void { + Vector* vec = data->GetDataPtr<Vector>("vector_ptr"); + if (!vec) return; + vec->y = context->GetArgumentOr<float>(0, 0.0f); + }); + + ADD_CLASS_MEMBER("Vector", "z", [](FunctionContext* context, ClassData* data) -> void { + Vector* vec = data->GetDataPtr<Vector>("vector_ptr"); + if (!vec) return context->SetReturn(0.0f); + context->SetReturn(vec->z); + }, [](FunctionContext* context, ClassData* data) -> void { + Vector* vec = data->GetDataPtr<Vector>("vector_ptr"); + if (!vec) return; + vec->z = context->GetArgumentOr<float>(0, 0.0f); + }); + + ADD_CLASS_FUNCTION("Vector", "GetPtr", [](FunctionContext* context, ClassData* data) -> void { + Vector* vec = data->GetDataPtr<Vector>("vector_ptr"); + context->SetReturn(string_format("%p", vec)); + }); + + ADD_CLASS_FUNCTION("Vector", isLua ? "__len" : "length", [](FunctionContext* context, ClassData* data) -> void { + Vector* vec = data->GetDataPtr<Vector>("vector_ptr"); + context->SetReturn(FastSqrt(vec->x * vec->x + vec->y * vec->y + vec->z * vec->z)); + }); + + ADD_CLASS_FUNCTION("Vector", isLua ? "__eq" : "equal", [](FunctionContext* context, ClassData* data) -> void { + Vector vec = data->GetData<Vector>("vector_ptr"); + + auto otherVecData = context->GetArgumentOr<ClassData*>(0, nullptr); + if (!otherVecData) return context->SetReturn(false); + if (!otherVecData->HasData("vector_ptr")) return context->SetReturn(false); + + Vector otherVec = otherVecData->GetData<Vector>("vector_ptr"); + + context->SetReturn(vec == otherVec); + }); + + ADD_CLASS_FUNCTION("Vector", isLua ? "__tostring" : "toString", [](FunctionContext* context, ClassData* data) -> void { + Vector* vec = data->GetDataPtr<Vector>("vector_ptr"); + context->SetReturn(string_format("Vector(%f,%f,%f)", vec->x, vec->y, vec->z)); + }); + + ADD_CLASS_FUNCTION("Vector", isLua ? "__add" : "add", [](FunctionContext* context, ClassData* data) -> void { + Vector vec = data->GetData<Vector>("vector_ptr"); + + auto otherVecData = context->GetArgumentOr<ClassData*>(0, nullptr); + if (!otherVecData) return context->SetReturn(data); + if (!otherVecData->HasData("vector_ptr")) return context->SetReturn(data); + + Vector otherVec = otherVecData->GetData<Vector>("vector_ptr"); + + data->SetData("vector_ptr", vec + otherVec); + context->SetReturn(data); + }); + + ADD_CLASS_FUNCTION("Vector", isLua ? "__unm" : "unm", [](FunctionContext* context, ClassData* data) -> void { + Vector vec = data->GetData<Vector>("vector_ptr"); + + data->SetData("vector_ptr", -vec); + context->SetReturn(data); + }); + + ADD_CLASS_FUNCTION("Vector", isLua ? "__sub" : "sub", [](FunctionContext* context, ClassData* data) -> void { + Vector vec = data->GetData<Vector>("vector_ptr"); + + auto otherVecData = context->GetArgumentOr<ClassData*>(0, nullptr); + if (!otherVecData) return context->SetReturn(data); + if (!otherVecData->HasData("vector_ptr")) return context->SetReturn(data); + + Vector otherVec = otherVecData->GetData<Vector>("vector_ptr"); + + data->SetData("vector_ptr", vec - otherVec); + context->SetReturn(data); + }); + + ADD_CLASS_FUNCTION("Vector", isLua ? "__mul" : "mul", [](FunctionContext* context, ClassData* data) -> void { + Vector vec = data->GetData<Vector>("vector_ptr"); + + auto otherVecData = context->GetArgumentOr<ClassData*>(0, nullptr); + if (!otherVecData) return context->SetReturn(data); + if (!otherVecData->HasData("vector_ptr")) return context->SetReturn(data); + + Vector otherVec = otherVecData->GetData<Vector>("vector_ptr"); + + data->SetData("vector_ptr", vec * otherVec); + context->SetReturn(data); + }); + + ADD_CLASS_FUNCTION("Vector", isLua ? "__div" : "div", [](FunctionContext* context, ClassData* data) -> void { + Vector vec = data->GetData<Vector>("vector_ptr"); + + auto otherVecData = context->GetArgumentOr<ClassData*>(0, nullptr); + if (!otherVecData) return context->SetReturn(data); + if (!otherVecData->HasData("vector_ptr")) return context->SetReturn(data); + + Vector otherVec = otherVecData->GetData<Vector>("vector_ptr"); + + data->SetData("vector_ptr", vec / otherVec); + context->SetReturn(data); + }); + + ADD_CLASS_FUNCTION("Vector2D", "Vector2D", [](FunctionContext* context, ClassData* data) -> void { + float x = context->GetArgumentOr<float>(0, 0.0f); + float y = context->GetArgumentOr<float>(1, 0.0f); + data->SetData("Vector2D_ptr", Vector2D(x, y)); + }); + + ADD_CLASS_MEMBER("Vector2D", "x", [](FunctionContext* context, ClassData* data) -> void { + Vector2D* vec = data->GetDataPtr<Vector2D>("Vector2D_ptr"); + if (!vec) return context->SetReturn(0.0f); + context->SetReturn(vec->x); + }, [](FunctionContext* context, ClassData* data) -> void { + Vector2D* vec = data->GetDataPtr<Vector2D>("Vector2D_ptr"); + if (!vec) return; + vec->x = context->GetArgumentOr<float>(0, 0.0f); + }); + + ADD_CLASS_MEMBER("Vector2D", "y", [](FunctionContext* context, ClassData* data) -> void { + Vector2D* vec = data->GetDataPtr<Vector2D>("Vector2D_ptr"); + if (!vec) return context->SetReturn(0.0f); + context->SetReturn(vec->y); + }, [](FunctionContext* context, ClassData* data) -> void { + Vector2D* vec = data->GetDataPtr<Vector2D>("Vector2D_ptr"); + if (!vec) return; + vec->y = context->GetArgumentOr<float>(0, 0.0f); + }); + + ADD_CLASS_FUNCTION("Vector2D", "GetPtr", [](FunctionContext* context, ClassData* data) -> void { + Vector2D* vec = data->GetDataPtr<Vector2D>("Vector2D_ptr"); + context->SetReturn(string_format("%p", vec)); + }); + + ADD_CLASS_FUNCTION("Vector2D", isLua ? "__len" : "length", [](FunctionContext* context, ClassData* data) -> void { + Vector2D* vec = data->GetDataPtr<Vector2D>("Vector2D_ptr"); + context->SetReturn(FastSqrt(vec->x * vec->x + vec->y * vec->y)); + }); + + ADD_CLASS_FUNCTION("Vector2D", isLua ? "__eq" : "equal", [](FunctionContext* context, ClassData* data) -> void { + Vector2D vec = data->GetData<Vector2D>("Vector2D_ptr"); + + auto otherVecData = context->GetArgumentOr<ClassData*>(0, nullptr); + if (!otherVecData) return context->SetReturn(false); + if (!otherVecData->HasData("Vector2D_ptr")) return context->SetReturn(false); + + Vector2D otherVec = otherVecData->GetData<Vector2D>("Vector2D_ptr"); + + context->SetReturn(vec == otherVec); + }); + + ADD_CLASS_FUNCTION("Vector2D", isLua ? "__tostring" : "toString", [](FunctionContext* context, ClassData* data) -> void { + Vector2D* vec = data->GetDataPtr<Vector2D>("Vector2D_ptr"); + context->SetReturn(string_format("Vector2D(%f,%f)", vec->x, vec->y)); + }); + + ADD_CLASS_FUNCTION("Vector2D", isLua ? "__add" : "add", [](FunctionContext* context, ClassData* data) -> void { + Vector2D vec = data->GetData<Vector2D>("Vector2D_ptr"); + + auto otherVecData = context->GetArgumentOr<ClassData*>(0, nullptr); + if (!otherVecData) return context->SetReturn(data); + if (!otherVecData->HasData("Vector2D_ptr")) return context->SetReturn(data); + + Vector2D otherVec = otherVecData->GetData<Vector2D>("Vector2D_ptr"); + + data->SetData("Vector2D_ptr", vec + otherVec); + context->SetReturn(data); + }); + + ADD_CLASS_FUNCTION("Vector2D", isLua ? "__unm" : "unm", [](FunctionContext* context, ClassData* data) -> void { + Vector2D vec = data->GetData<Vector2D>("Vector2D_ptr"); + + data->SetData("Vector2D_ptr", -vec); + context->SetReturn(data); + }); + + ADD_CLASS_FUNCTION("Vector2D", isLua ? "__sub" : "sub", [](FunctionContext* context, ClassData* data) -> void { + Vector2D vec = data->GetData<Vector2D>("Vector2D_ptr"); + + auto otherVecData = context->GetArgumentOr<ClassData*>(0, nullptr); + if (!otherVecData) return context->SetReturn(data); + if (!otherVecData->HasData("Vector2D_ptr")) return context->SetReturn(data); + + Vector2D otherVec = otherVecData->GetData<Vector2D>("Vector2D_ptr"); + + data->SetData("Vector2D_ptr", vec - otherVec); + context->SetReturn(data); + }); + + ADD_CLASS_FUNCTION("Vector2D", isLua ? "__mul" : "mul", [](FunctionContext* context, ClassData* data) -> void { + Vector2D vec = data->GetData<Vector2D>("Vector2D_ptr"); + + auto otherVecData = context->GetArgumentOr<ClassData*>(0, nullptr); + if (!otherVecData) return context->SetReturn(data); + if (!otherVecData->HasData("Vector2D_ptr")) return context->SetReturn(data); + + Vector2D otherVec = otherVecData->GetData<Vector2D>("Vector2D_ptr"); + + data->SetData("Vector2D_ptr", vec * otherVec); + context->SetReturn(data); + }); + + ADD_CLASS_FUNCTION("Vector2D", isLua ? "__div" : "div", [](FunctionContext* context, ClassData* data) -> void { + Vector2D vec = data->GetData<Vector2D>("Vector2D_ptr"); + + auto otherVecData = context->GetArgumentOr<ClassData*>(0, nullptr); + if (!otherVecData) return context->SetReturn(data); + if (!otherVecData->HasData("Vector2D_ptr")) return context->SetReturn(data); + + Vector2D otherVec = otherVecData->GetData<Vector2D>("Vector2D_ptr"); + + data->SetData("Vector2D_ptr", vec / otherVec); + context->SetReturn(data); + }); + + ADD_CLASS_FUNCTION("Vector4D", "Vector4D", [](FunctionContext* context, ClassData* data) -> void { + float x = context->GetArgumentOr<float>(0, 0.0f); + float y = context->GetArgumentOr<float>(1, 0.0f); + float z = context->GetArgumentOr<float>(2, 0.0f); + float w = context->GetArgumentOr<float>(3, 0.0f); + data->SetData("Vector4D_ptr", Vector4D(x, y, z, w)); + }); + + ADD_CLASS_MEMBER("Vector4D", "x", [](FunctionContext* context, ClassData* data) -> void { + Vector4D* vec = data->GetDataPtr<Vector4D>("Vector4D_ptr"); + if (!vec) return context->SetReturn(0.0f); + context->SetReturn(vec->x); + }, [](FunctionContext* context, ClassData* data) -> void { + Vector4D* vec = data->GetDataPtr<Vector4D>("Vector4D_ptr"); + if (!vec) return; + vec->x = context->GetArgumentOr<float>(0, 0.0f); + }); + + ADD_CLASS_MEMBER("Vector4D", "y", [](FunctionContext* context, ClassData* data) -> void { + Vector4D* vec = data->GetDataPtr<Vector4D>("Vector4D_ptr"); + if (!vec) return context->SetReturn(0.0f); + context->SetReturn(vec->y); + }, [](FunctionContext* context, ClassData* data) -> void { + Vector4D* vec = data->GetDataPtr<Vector4D>("Vector4D_ptr"); + if (!vec) return; + vec->y = context->GetArgumentOr<float>(0, 0.0f); + }); + + ADD_CLASS_MEMBER("Vector4D", "z", [](FunctionContext* context, ClassData* data) -> void { + Vector4D* vec = data->GetDataPtr<Vector4D>("Vector4D_ptr"); + if (!vec) return context->SetReturn(0.0f); + context->SetReturn(vec->z); + }, [](FunctionContext* context, ClassData* data) -> void { + Vector4D* vec = data->GetDataPtr<Vector4D>("Vector4D_ptr"); + if (!vec) return; + vec->z = context->GetArgumentOr<float>(0, 0.0f); + }); + + ADD_CLASS_MEMBER("Vector4D", "w", [](FunctionContext* context, ClassData* data) -> void { + Vector4D* vec = data->GetDataPtr<Vector4D>("Vector4D_ptr"); + if (!vec) return context->SetReturn(0.0f); + context->SetReturn(vec->w); + }, [](FunctionContext* context, ClassData* data) -> void { + Vector4D* vec = data->GetDataPtr<Vector4D>("Vector4D_ptr"); + if (!vec) return; + vec->w = context->GetArgumentOr<float>(0, 0.0f); + }); + + ADD_CLASS_FUNCTION("Vector4D", "GetPtr", [](FunctionContext* context, ClassData* data) -> void { + Vector4D* vec = data->GetDataPtr<Vector4D>("Vector4D_ptr"); + context->SetReturn(string_format("%p", vec)); + }); + + ADD_CLASS_FUNCTION("Vector4D", isLua ? "__len" : "length", [](FunctionContext* context, ClassData* data) -> void { + Vector4D* vec = data->GetDataPtr<Vector4D>("Vector4D_ptr"); + context->SetReturn(FastSqrt(vec->x * vec->x + vec->y * vec->y + vec->z * vec->z + vec->w * vec->w)); + }); + + ADD_CLASS_FUNCTION("Vector4D", isLua ? "__eq" : "equal", [](FunctionContext* context, ClassData* data) -> void { + Vector4D vec = data->GetData<Vector4D>("Vector4D_ptr"); + + auto otherVecData = context->GetArgumentOr<ClassData*>(0, nullptr); + if (!otherVecData) return context->SetReturn(false); + if (!otherVecData->HasData("Vector4D_ptr")) return context->SetReturn(false); + + Vector4D otherVec = otherVecData->GetData<Vector4D>("Vector4D_ptr"); + + context->SetReturn(vec == otherVec); + }); + + ADD_CLASS_FUNCTION("Vector4D", isLua ? "__tostring" : "toString", [](FunctionContext* context, ClassData* data) -> void { + Vector4D* vec = data->GetDataPtr<Vector4D>("Vector4D_ptr"); + context->SetReturn(string_format("Vector4D(%f,%f,%f,%f)", vec->x, vec->y, vec->z, vec->w)); + }); + + ADD_CLASS_FUNCTION("Vector4D", isLua ? "__add" : "add", [](FunctionContext* context, ClassData* data) -> void { + Vector4D vec = data->GetData<Vector4D>("Vector4D_ptr"); + + auto otherVecData = context->GetArgumentOr<ClassData*>(0, nullptr); + if (!otherVecData) return context->SetReturn(data); + if (!otherVecData->HasData("Vector4D_ptr")) return context->SetReturn(data); + + Vector4D otherVec = otherVecData->GetData<Vector4D>("Vector4D_ptr"); + + data->SetData("Vector4D_ptr", vec + otherVec); + context->SetReturn(data); + }); + + ADD_CLASS_FUNCTION("Vector4D", isLua ? "__unm" : "unm", [](FunctionContext* context, ClassData* data) -> void { + Vector4D vec = data->GetData<Vector4D>("Vector4D_ptr"); + + data->SetData("Vector4D_ptr", -vec); + context->SetReturn(data); + }); + + ADD_CLASS_FUNCTION("Vector4D", isLua ? "__sub" : "sub", [](FunctionContext* context, ClassData* data) -> void { + Vector4D vec = data->GetData<Vector4D>("Vector4D_ptr"); + + auto otherVecData = context->GetArgumentOr<ClassData*>(0, nullptr); + if (!otherVecData) return context->SetReturn(data); + if (!otherVecData->HasData("Vector4D_ptr")) return context->SetReturn(data); + + Vector4D otherVec = otherVecData->GetData<Vector4D>("Vector4D_ptr"); + + data->SetData("Vector4D_ptr", vec - otherVec); + context->SetReturn(data); + }); + + ADD_CLASS_FUNCTION("Vector4D", isLua ? "__mul" : "mul", [](FunctionContext* context, ClassData* data) -> void { + Vector4D vec = data->GetData<Vector4D>("Vector4D_ptr"); + + auto otherVecData = context->GetArgumentOr<ClassData*>(0, nullptr); + if (!otherVecData) return context->SetReturn(data); + if (!otherVecData->HasData("Vector4D_ptr")) return context->SetReturn(data); + + Vector4D otherVec = otherVecData->GetData<Vector4D>("Vector4D_ptr"); + + data->SetData("Vector4D_ptr", vec * otherVec); + context->SetReturn(data); + }); + + ADD_CLASS_FUNCTION("Vector4D", isLua ? "__div" : "div", [](FunctionContext* context, ClassData* data) -> void { + Vector4D vec = data->GetData<Vector4D>("Vector4D_ptr"); + + auto otherVecData = context->GetArgumentOr<ClassData*>(0, nullptr); + if (!otherVecData) return context->SetReturn(data); + if (!otherVecData->HasData("Vector4D_ptr")) return context->SetReturn(data); + + Vector4D otherVec = otherVecData->GetData<Vector4D>("Vector4D_ptr"); + + vec.x /= otherVec.x; + vec.y /= otherVec.y; + vec.z /= otherVec.z; + vec.w /= otherVec.w; + + data->SetData("Vector4D_ptr", vec); + context->SetReturn(data); + }); + + ADD_CLASS_FUNCTION("QAngle", "QAngle", [](FunctionContext* context, ClassData* data) -> void { + float x = context->GetArgumentOr<float>(0, 0.0f); + float y = context->GetArgumentOr<float>(1, 0.0f); + float z = context->GetArgumentOr<float>(2, 0.0f); + data->SetData("QAngle_ptr", QAngle(x, y, z)); + }); + + ADD_CLASS_MEMBER("QAngle", "x", [](FunctionContext* context, ClassData* data) -> void { + QAngle* vec = data->GetDataPtr<QAngle>("QAngle_ptr"); + if (!vec) return context->SetReturn(0.0f); + context->SetReturn(vec->x); + }, [](FunctionContext* context, ClassData* data) -> void { + QAngle* vec = data->GetDataPtr<QAngle>("QAngle_ptr"); + if (!vec) return; + vec->x = context->GetArgumentOr<float>(0, 0.0f); + }); + + ADD_CLASS_MEMBER("QAngle", "y", [](FunctionContext* context, ClassData* data) -> void { + QAngle* vec = data->GetDataPtr<QAngle>("QAngle_ptr"); + if (!vec) return context->SetReturn(0.0f); + context->SetReturn(vec->y); + }, [](FunctionContext* context, ClassData* data) -> void { + QAngle* vec = data->GetDataPtr<QAngle>("QAngle_ptr"); + if (!vec) return; + vec->y = context->GetArgumentOr<float>(0, 0.0f); + }); + + ADD_CLASS_MEMBER("QAngle", "z", [](FunctionContext* context, ClassData* data) -> void { + QAngle* vec = data->GetDataPtr<QAngle>("QAngle_ptr"); + if (!vec) return context->SetReturn(0.0f); + context->SetReturn(vec->z); + }, [](FunctionContext* context, ClassData* data) -> void { + QAngle* vec = data->GetDataPtr<QAngle>("QAngle_ptr"); + if (!vec) return; + vec->z = context->GetArgumentOr<float>(0, 0.0f); + }); + + ADD_CLASS_FUNCTION("QAngle", "GetPtr", [](FunctionContext* context, ClassData* data) -> void { + QAngle* vec = data->GetDataPtr<QAngle>("QAngle_ptr"); + context->SetReturn(string_format("%p", vec)); + }); + + ADD_CLASS_FUNCTION("QAngle", isLua ? "__len" : "length", [](FunctionContext* context, ClassData* data) -> void { + QAngle* vec = data->GetDataPtr<QAngle>("QAngle_ptr"); + context->SetReturn(FastSqrt(vec->x * vec->x + vec->y * vec->y + vec->z * vec->z)); + }); + + ADD_CLASS_FUNCTION("QAngle", isLua ? "__eq" : "equal", [](FunctionContext* context, ClassData* data) -> void { + QAngle vec = data->GetData<QAngle>("QAngle_ptr"); + + auto otherVecData = context->GetArgumentOr<ClassData*>(0, nullptr); + if (!otherVecData) return context->SetReturn(false); + if (!otherVecData->HasData("QAngle_ptr")) return context->SetReturn(false); + + QAngle otherVec = otherVecData->GetData<QAngle>("QAngle_ptr"); + + context->SetReturn(vec == otherVec); + }); + + ADD_CLASS_FUNCTION("QAngle", isLua ? "__tostring" : "toString", [](FunctionContext* context, ClassData* data) -> void { + QAngle* vec = data->GetDataPtr<QAngle>("QAngle_ptr"); + context->SetReturn(string_format("QAngle(%f,%f,%f)", vec->x, vec->y, vec->z)); + }); + + ADD_CLASS_FUNCTION("QAngle", isLua ? "__add" : "add", [](FunctionContext* context, ClassData* data) -> void { + QAngle vec = data->GetData<QAngle>("QAngle_ptr"); + + auto otherVecData = context->GetArgumentOr<ClassData*>(0, nullptr); + if (!otherVecData) return context->SetReturn(data); + if (!otherVecData->HasData("QAngle_ptr")) return context->SetReturn(data); + + QAngle otherVec = otherVecData->GetData<QAngle>("QAngle_ptr"); + + data->SetData("QAngle_ptr", vec + otherVec); + context->SetReturn(data); + }); + + ADD_CLASS_FUNCTION("QAngle", isLua ? "__unm" : "unm", [](FunctionContext* context, ClassData* data) -> void { + QAngle vec = data->GetData<QAngle>("QAngle_ptr"); + + data->SetData("QAngle_ptr", -vec); + context->SetReturn(data); + }); + + ADD_CLASS_FUNCTION("QAngle", isLua ? "__sub" : "sub", [](FunctionContext* context, ClassData* data) -> void { + QAngle vec = data->GetData<QAngle>("QAngle_ptr"); + + auto otherVecData = context->GetArgumentOr<ClassData*>(0, nullptr); + if (!otherVecData) return context->SetReturn(data); + if (!otherVecData->HasData("QAngle_ptr")) return context->SetReturn(data); + + QAngle otherVec = otherVecData->GetData<QAngle>("QAngle_ptr"); + + data->SetData("QAngle_ptr", vec - otherVec); + context->SetReturn(data); + }); + + ADD_CLASS_FUNCTION("QAngle", isLua ? "__mul" : "mul", [](FunctionContext* context, ClassData* data) -> void { + QAngle vec = data->GetData<QAngle>("QAngle_ptr"); + + auto otherVecData = context->GetArgumentOr<ClassData*>(0, nullptr); + if (!otherVecData) return context->SetReturn(data); + if (!otherVecData->HasData("QAngle_ptr")) return context->SetReturn(data); + + QAngle otherVec = otherVecData->GetData<QAngle>("QAngle_ptr"); + + vec.x /= otherVec.x; + vec.y /= otherVec.y; + vec.z /= otherVec.z; + + data->SetData("QAngle_ptr", vec); + context->SetReturn(data); + }); + + ADD_CLASS_FUNCTION("QAngle", isLua ? "__div" : "div", [](FunctionContext* context, ClassData* data) -> void { + QAngle vec = data->GetData<QAngle>("QAngle_ptr"); + + auto otherVecData = context->GetArgumentOr<ClassData*>(0, nullptr); + if (!otherVecData) return context->SetReturn(data); + if (!otherVecData->HasData("QAngle_ptr")) return context->SetReturn(data); + + QAngle otherVec = otherVecData->GetData<QAngle>("QAngle_ptr"); + + vec.x /= otherVec.x; + vec.y /= otherVec.y; + vec.z /= otherVec.z; + + data->SetData("QAngle_ptr", vec); + context->SetReturn(data); + }); + + ADD_CLASS_FUNCTION("Color", "Color", [](FunctionContext* context, ClassData* data) -> void { + int r = context->GetArgumentOr<int>(0, 0); + int g = context->GetArgumentOr<int>(1, 0); + int b = context->GetArgumentOr<int>(2, 0); + int a = context->GetArgumentOr<int>(3, 0); + data->SetData("Color_ptr", Color(r, g, b, a)); + }); + + ADD_CLASS_MEMBER("Color", "r", [](FunctionContext* context, ClassData* data) -> void { + Color* vec = data->GetDataPtr<Color>("Color_ptr"); + if (!vec) return context->SetReturn(0); + context->SetReturn(vec->r()); + }, [](FunctionContext* context, ClassData* data) -> void { + Color* vec = data->GetDataPtr<Color>("Color_ptr"); + if (!vec) return; + vec->SetColor(context->GetArgumentOr<int>(0, 0), vec->g(), vec->b(), vec->a()); + }); + + ADD_CLASS_MEMBER("Color", "g", [](FunctionContext* context, ClassData* data) -> void { + Color* vec = data->GetDataPtr<Color>("Color_ptr"); + if (!vec) return context->SetReturn(0); + context->SetReturn(vec->g()); + }, [](FunctionContext* context, ClassData* data) -> void { + Color* vec = data->GetDataPtr<Color>("Color_ptr"); + if (!vec) return; + vec->SetColor(vec->r(), context->GetArgumentOr<int>(0, 0), vec->b(), vec->a()); + }); + + ADD_CLASS_MEMBER("Color", "b", [](FunctionContext* context, ClassData* data) -> void { + Color* vec = data->GetDataPtr<Color>("Color_ptr"); + if (!vec) return context->SetReturn(0); + context->SetReturn(vec->b()); + }, [](FunctionContext* context, ClassData* data) -> void { + Color* vec = data->GetDataPtr<Color>("Color_ptr"); + if (!vec) return; + vec->SetColor(vec->r(), vec->g(), context->GetArgumentOr<int>(0, 0), vec->a()); + }); + + ADD_CLASS_MEMBER("Color", "a", [](FunctionContext* context, ClassData* data) -> void { + Color* vec = data->GetDataPtr<Color>("Color_ptr"); + if (!vec) return context->SetReturn(0); + context->SetReturn(vec->a()); + }, [](FunctionContext* context, ClassData* data) -> void { + Color* vec = data->GetDataPtr<Color>("Color_ptr"); + if (!vec) return; + vec->SetColor(vec->r(), vec->g(), vec->b(), context->GetArgumentOr<int>(0, 0)); + }); + + ADD_CLASS_FUNCTION("Color", isLua ? "__tostring" : "toString", [](FunctionContext* context, ClassData* data) -> void { + Color* vec = data->GetDataPtr<Color>("Color_ptr"); + context->SetReturn(string_format("Color(%d,%d,%d,%d)", vec->r(), vec->g(), vec->b(), vec->a())); + }); + + ADD_CLASS_FUNCTION("Color", "GetPtr", [](FunctionContext* context, ClassData* data) -> void { + Color* vec = data->GetDataPtr<Color>("Color_ptr"); + context->SetReturn(string_format("%p", vec)); + }); +}) \ No newline at end of file diff --git a/src/scripting/sdk/chandle.cpp b/src/scripting/sdk/chandle.cpp new file mode 100644 index 000000000..e9eeea9d1 --- /dev/null +++ b/src/scripting/sdk/chandle.cpp @@ -0,0 +1,62 @@ +#include <scripting/core.h> +#include "ehandle.h" + +#include <utils/utils.h> + +LoadScriptingComponent(chandle, [](PluginObject plugin, EContext* ctx) -> void { + ADD_CLASS("CHandle"); + + ADD_CLASS_FUNCTION("CHandle", "CHandle", [](FunctionContext* context, ClassData* data) -> void { + auto classData = context->GetArgumentOr<ClassData*>(0, nullptr); + if(classData) { + if(classData->HasData("chandle_ptr")) { + data->SetData("chandle_ptr", classData->GetData<void*>("chandle_ptr")); + } else if(classData->HasData("ptr")) { + data->SetData("chandle_ptr", classData->GetData<void*>("ptr")); + } else data->SetData("chandle_ptr", (void*)nullptr); + } else { + auto strptr = context->GetArgumentOr<std::string>(0, ""); + if(starts_with(strptr, "0x")) { + data->SetData("chandle_ptr", (void*)StringToPtr(strptr)); + } else data->SetData("chandle_ptr", (void*)nullptr); + } + }); + + ADD_CLASS_FUNCTION("CHandle", "GetPtr", [](FunctionContext* context, ClassData* data) -> void { + CHandle<CEntityInstance>* m_Handle = (CHandle<CEntityInstance>*)data->GetData<void*>("chandle_ptr"); + context->SetReturn(PtrToString(m_Handle->Get())); + }); + + ADD_CLASS_FUNCTION("CHandle", "SetPtr", [](FunctionContext* context, ClassData* data) -> void { + std::string ptr = context->GetArgumentOr<std::string>(0, ""); + if (!starts_with(ptr, "0x")) return; + + CHandle<CEntityInstance>* m_Handle = (CHandle<CEntityInstance>*)data->GetData<void*>("chandle_ptr"); + m_Handle->Set((CEntityInstance*)strtol(ptr.c_str(), nullptr, 16)); + }); + + ADD_CLASS_FUNCTION("CHandle", "GetHandlePtr", [](FunctionContext* context, ClassData* data) -> void { + context->SetReturn(PtrToString(data->GetData<void*>("chandle_ptr"))); + }); + + ADD_CLASS_FUNCTION("CHandle", "IsValid", [](FunctionContext* context, ClassData* data) -> void { + CHandle<CEntityInstance>* m_Handle = (CHandle<CEntityInstance>*)data->GetDataOr<void*>("chandle_ptr", nullptr); + if(!m_Handle) return context->SetReturn(false); + + context->SetReturn(m_Handle->IsValid()); + }); + + ADD_CLASS_FUNCTION("CHandle", "GetEntryIndex", [](FunctionContext* context, ClassData* data) -> void { + CHandle<CEntityInstance>* m_Handle = (CHandle<CEntityInstance>*)data->GetDataOr<void*>("chandle_ptr", nullptr); + if(!m_Handle) return context->SetReturn(0); + + context->SetReturn(m_Handle->GetEntryIndex()); + }); + + ADD_CLASS_FUNCTION("CHandle", "GetSerialNumber", [](FunctionContext* context, ClassData* data) -> void { + CHandle<CEntityInstance>* m_Handle = (CHandle<CEntityInstance>*)data->GetDataOr<void*>("chandle_ptr", nullptr); + if(!m_Handle) return context->SetReturn(0); + + context->SetReturn(m_Handle->GetSerialNumber()); + }); +}) \ No newline at end of file diff --git a/src/scripting/sdk/checktransmit.cpp b/src/scripting/sdk/checktransmit.cpp new file mode 100644 index 000000000..0fb704263 --- /dev/null +++ b/src/scripting/sdk/checktransmit.cpp @@ -0,0 +1,86 @@ +#include <scripting/core.h> +#include <public/iservernetworkable.h> +#include <sdk/schema.h> + +#include "ehandle.h" +#include <sdk/game.h> +#include <utils/utils.h> + +#include <map> + +LoadScriptingComponent(checktransmit, [](PluginObject plugin, EContext* ctx) -> void { + ADD_CLASS("CCheckTransmitInfo"); + + ADD_CLASS_FUNCTION("CCheckTransmitInfo", "CCheckTransmitInfo", [](FunctionContext* context, ClassData* data) -> void { + auto classData = context->GetArgumentOr<ClassData*>(0, nullptr); + if(classData) { + if(classData->HasData("transmit_ptr")) { + data->SetData("transmit_ptr", classData->GetData<void*>("class_ptr")); + } else if(classData->HasData("ptr")) { + data->SetData("transmit_ptr", classData->GetData<void*>("ptr")); + } else data->SetData("transmit_ptr", (void*)nullptr); + } else { + auto strptr = context->GetArgumentOr<std::string>(0, ""); + if(starts_with(strptr, "0x")) { + data->SetData("transmit_ptr", (void*)StringToPtr(strptr)); + } else data->SetData("transmit_ptr", (void*)nullptr); + } + }); + + ADD_CLASS_FUNCTION("CCheckTransmitInfo", "GetPlayers", [](FunctionContext* context, ClassData* data) -> void { + std::map<int, int> player_entindex; + + for (int i = 0; i < GetMaxGameClients(); i++) { + CEntityInstance* controller = g_pEntitySystem->GetEntityInstance(CEntityIndex(i + 1)); + if(!controller) continue; + + CHandle<CEntityInstance> pawnHandle = schema::GetProp<CHandle<CEntityInstance>>(controller, "CCSPlayerController", "m_hPlayerPawn"); + if (!pawnHandle) continue; + + player_entindex.insert({ i, pawnHandle->m_pEntity->m_EHandle.GetEntryIndex() }); + } + + context->SetReturn(player_entindex); + }); + + ADD_CLASS_FUNCTION("CCheckTransmitInfo", "GetEntities", [](FunctionContext* context, ClassData* data) -> void { + std::vector<int> entities_list; + CCheckTransmitInfo* m_ptr = (CCheckTransmitInfo*)data->GetData<void*>("transmit_ptr"); + + for (int i = 0; i < MAX_EDICTS; i++) + if (m_ptr->m_pTransmitEntity->IsBitSet(i)) + entities_list.push_back(i); + + context->SetReturn(entities_list); + }); + + ADD_CLASS_FUNCTION("CCheckTransmitInfo", "SetEntities", [](FunctionContext* context, ClassData* data) -> void { + std::vector<int> entities_list = context->GetArgumentOr<std::vector<int>>(0, {}); + CCheckTransmitInfo* m_ptr = (CCheckTransmitInfo*)data->GetData<void*>("transmit_ptr"); + + m_ptr->m_pTransmitEntity->ClearAll(); + for (int i = 0; i < entities_list.size(); i++) + m_ptr->m_pTransmitEntity->Set(entities_list[i]); + }); + + ADD_CLASS_FUNCTION("CCheckTransmitInfo", "AddEntityIndex", [](FunctionContext* context, ClassData* data) -> void { + int entindex = context->GetArgumentOr<int>(0, 0); + CCheckTransmitInfo* m_ptr = (CCheckTransmitInfo*)data->GetData<void*>("transmit_ptr"); + + if(!m_ptr->m_pTransmitEntity->IsBitSet(entindex)) + m_ptr->m_pTransmitEntity->Set(entindex); + }); + + ADD_CLASS_FUNCTION("CCheckTransmitInfo", "RemoveEntityIndex", [](FunctionContext* context, ClassData* data) -> void { + int entindex = context->GetArgumentOr<int>(0, 0); + CCheckTransmitInfo* m_ptr = (CCheckTransmitInfo*)data->GetData<void*>("transmit_ptr"); + + if(m_ptr->m_pTransmitEntity->IsBitSet(entindex)) + m_ptr->m_pTransmitEntity->Clear(entindex); + }); + + ADD_CLASS_FUNCTION("CCheckTransmitInfo", "Clear", [](FunctionContext* context, ClassData* data) -> void { + CCheckTransmitInfo* m_ptr = (CCheckTransmitInfo*)data->GetData<void*>("transmit_ptr"); + m_ptr->m_pTransmitEntity->ClearAll(); + }); +}) \ No newline at end of file diff --git a/src/scripting/sdk/coretypes.cpp b/src/scripting/sdk/coretypes.cpp new file mode 100644 index 000000000..5465a5d75 --- /dev/null +++ b/src/scripting/sdk/coretypes.cpp @@ -0,0 +1,296 @@ +#include <scripting/core.h> +#include <sdk/game.h> + +#include <types/PluginState.h> +#include <types/EventResult.h> +#include <types/LogType.h> +#include <types/GamePhase.h> + +LoadScriptingComponent(coretypes, [](PluginObject plugin, EContext* ctx) -> void { + ADD_VARIABLES("PluginState_t", { + { "Started", ENGINE_VALUE((uint64_t)PluginState_t::Started) }, + { "Stopped", ENGINE_VALUE((uint64_t)PluginState_t::Stopped) }, + }); + + ADD_VARIABLES("RoundEndReason_t", { + { "Unknown", ENGINE_VALUE((uint64_t)0) }, + { "TargetBombed", ENGINE_VALUE((uint64_t)0x1) }, + { "TerroristsEscaped", ENGINE_VALUE((uint64_t)0x4) }, + { "CTsPreventEscape", ENGINE_VALUE((uint64_t)0x5) }, + { "EscapingTerroristsNeutralized", ENGINE_VALUE((uint64_t)0x6) }, + { "BombDefused", ENGINE_VALUE((uint64_t)0x7) }, + { "CTsWin", ENGINE_VALUE((uint64_t)0x8) }, + { "TerroristsWin", ENGINE_VALUE((uint64_t)0x9) }, + { "RoundDraw", ENGINE_VALUE((uint64_t)0xA) }, + { "AllHostageRescued", ENGINE_VALUE((uint64_t)0xB) }, + { "TargetSaved", ENGINE_VALUE((uint64_t)0xC) }, + { "HostagesNotRescued", ENGINE_VALUE((uint64_t)0xD) }, + { "TerroristsNotEscaped", ENGINE_VALUE((uint64_t)0xE) }, + { "GameCommencing", ENGINE_VALUE((uint64_t)0x10) }, + { "TerroristsSurrender", ENGINE_VALUE((uint64_t)0x11) }, + { "CTsSurrender", ENGINE_VALUE((uint64_t)0x12) }, + { "TerroristsPlanted", ENGINE_VALUE((uint64_t)0x13) }, + { "CTsReachedHostage", ENGINE_VALUE((uint64_t)0x14) }, + { "SurvivalWin", ENGINE_VALUE((uint64_t)0x15) }, + { "SurvivalDraw", ENGINE_VALUE((uint64_t)0x16) }, + }); + + ADD_VARIABLES("Team", { + { "None", ENGINE_VALUE(CS_TEAM_NONE) }, + { "Spectator", ENGINE_VALUE(CS_TEAM_SPECTATOR) }, + { "T", ENGINE_VALUE(CS_TEAM_T) }, + { "CT", ENGINE_VALUE(CS_TEAM_CT) }, + }); + + ADD_VARIABLES("EventResult", { + { "Continue", ENGINE_VALUE((uint64_t)EventResult::Continue) }, + { "Stop", ENGINE_VALUE((uint64_t)EventResult::Stop) }, + { "Handled", ENGINE_VALUE((uint64_t)EventResult::Handled) }, + }); + + ADD_VARIABLES("MessageType", { + { "Notify", ENGINE_VALUE(HUD_PRINTNOTIFY) }, + { "Console", ENGINE_VALUE(HUD_PRINTCONSOLE) }, + { "Chat", ENGINE_VALUE(HUD_PRINTTALK) }, + { "Center", ENGINE_VALUE(HUD_PRINTCENTER) }, + }); + + ADD_VARIABLES("DisconnectReason", { + { "Invalid", ENGINE_VALUE((uint64_t)0) }, + { "Shutdown", ENGINE_VALUE((uint64_t)1) }, + { "DisconnectByUser", ENGINE_VALUE((uint64_t)2) }, + { "DisconnectByServer", ENGINE_VALUE((uint64_t)3) }, + { "Lost", ENGINE_VALUE((uint64_t)4) }, + { "Overflow", ENGINE_VALUE((uint64_t)5) }, + { "SteamBanned", ENGINE_VALUE((uint64_t)6) }, + { "SteamInUse", ENGINE_VALUE((uint64_t)7) }, + { "SteamTicket", ENGINE_VALUE((uint64_t)8) }, + { "SteamLogon", ENGINE_VALUE((uint64_t)9) }, + { "SteamAuthCancelled", ENGINE_VALUE((uint64_t)10) }, + { "SteamAuthAlreadyUsed", ENGINE_VALUE((uint64_t)11) }, + { "SteamAuthInvalid", ENGINE_VALUE((uint64_t)12) }, + { "SteamVacBanned", ENGINE_VALUE((uint64_t)13) }, + { "SteamLoggedInElsewhere", ENGINE_VALUE((uint64_t)14) }, + { "SteamVacCheckTimedout", ENGINE_VALUE((uint64_t)15) }, + { "SteamDropped", ENGINE_VALUE((uint64_t)16) }, + { "SteamOwnership", ENGINE_VALUE((uint64_t)17) }, + { "ServerInfoOverflow", ENGINE_VALUE((uint64_t)18) }, + { "TickMsgOverflow", ENGINE_VALUE((uint64_t)19) }, + { "StringTableMsgOverflow", ENGINE_VALUE((uint64_t)20) }, + { "DeltaentMsgOverflow", ENGINE_VALUE((uint64_t)21) }, + { "TempentMsgOverflow", ENGINE_VALUE((uint64_t)22) }, + { "SoundsMsgOverflow", ENGINE_VALUE((uint64_t)23) }, + { "SnapshotOverflow", ENGINE_VALUE((uint64_t)24) }, + { "SnapshotError", ENGINE_VALUE((uint64_t)25) }, + { "ReliableOverflow", ENGINE_VALUE((uint64_t)26) }, + { "BadDeltaTick", ENGINE_VALUE((uint64_t)27) }, + { "NoMoreSplits", ENGINE_VALUE((uint64_t)28) }, + { "Timedout", ENGINE_VALUE((uint64_t)29) }, + { "Disconnected", ENGINE_VALUE((uint64_t)30) }, + { "LeavingSplit", ENGINE_VALUE((uint64_t)31) }, + { "DifferentClassTables", ENGINE_VALUE((uint64_t)32) }, + { "BadRelayPassword", ENGINE_VALUE((uint64_t)33) }, + { "BadSpectatorPassword", ENGINE_VALUE((uint64_t)34) }, + { "HLTVRestricted", ENGINE_VALUE((uint64_t)35) }, + { "NoSpectators", ENGINE_VALUE((uint64_t)36) }, + { "HLTVUnavailable", ENGINE_VALUE((uint64_t)37) }, + { "HLTVStop", ENGINE_VALUE((uint64_t)38) }, + { "Kicked", ENGINE_VALUE((uint64_t)39) }, + { "BanAdded", ENGINE_VALUE((uint64_t)40) }, + { "KickBanAdded", ENGINE_VALUE((uint64_t)41) }, + { "HLTVDirect", ENGINE_VALUE((uint64_t)42) }, + { "PureServerClientExtra", ENGINE_VALUE((uint64_t)43) }, + { "PureServerMismatch", ENGINE_VALUE((uint64_t)44) }, + { "UserCmd", ENGINE_VALUE((uint64_t)45) }, + { "RejectedByGame", ENGINE_VALUE((uint64_t)46) }, + { "MessageParseError", ENGINE_VALUE((uint64_t)47) }, + { "InvalidMessageError", ENGINE_VALUE((uint64_t)48) }, + { "BadServerPassword", ENGINE_VALUE((uint64_t)49) }, + { "DirectConnectReservation", ENGINE_VALUE((uint64_t)50) }, + { "ConnectionFailure", ENGINE_VALUE((uint64_t)51) }, + { "NoPeerGroupHandlers", ENGINE_VALUE((uint64_t)52) }, + { "Reconnection", ENGINE_VALUE((uint64_t)53) }, + { "LoopShutdown", ENGINE_VALUE((uint64_t)54) }, + { "LoopDeactivate", ENGINE_VALUE((uint64_t)55) }, + { "HostEndGame", ENGINE_VALUE((uint64_t)56) }, + { "LoopLevelLoadActivate", ENGINE_VALUE((uint64_t)57) }, + { "CreateServerFailed", ENGINE_VALUE((uint64_t)58) }, + { "Exiting", ENGINE_VALUE((uint64_t)59) }, + { "RequestHostStateIdle", ENGINE_VALUE((uint64_t)60) }, + { "RequestHostStateHLTVRelay", ENGINE_VALUE((uint64_t)61) }, + { "ClientConsistencyFail", ENGINE_VALUE((uint64_t)62) }, + { "UnableToCRCMap", ENGINE_VALUE((uint64_t)63) }, + { "ClientNoMap", ENGINE_VALUE((uint64_t)64) }, + { "ClientDifferentMap", ENGINE_VALUE((uint64_t)65) }, + { "ServerRequiresSteam", ENGINE_VALUE((uint64_t)66) }, + { "SteamDenyMisc", ENGINE_VALUE((uint64_t)67) }, + { "SteamDenyBadAnticheat", ENGINE_VALUE((uint64_t)68) }, + { "ServerShutdown", ENGINE_VALUE((uint64_t)69) }, + { "ReplayIncompatible", ENGINE_VALUE((uint64_t)71) }, + { "ConnectRequestTimedOut", ENGINE_VALUE((uint64_t)72) }, + { "ServerIncompatible", ENGINE_VALUE((uint64_t)73) }, + { "LocalProblemManyRelays", ENGINE_VALUE((uint64_t)74) }, + { "LocalProblemHostedServerPrimaryRelay", ENGINE_VALUE((uint64_t)75) }, + { "LocalProblemNetworkConfig", ENGINE_VALUE((uint64_t)76) }, + { "LocalProblemOther", ENGINE_VALUE((uint64_t)77) }, + { "RemoteTimeout", ENGINE_VALUE((uint64_t)79) }, + { "RemoteTimeoutConnecting", ENGINE_VALUE((uint64_t)80) }, + { "RemoteOther", ENGINE_VALUE((uint64_t)81) }, + { "RemoteBadCrypt", ENGINE_VALUE((uint64_t)82) }, + { "RemoteCertNotTrusted", ENGINE_VALUE((uint64_t)83) }, + { "Unusual", ENGINE_VALUE((uint64_t)84) }, + { "InternalError", ENGINE_VALUE((uint64_t)85) }, + { "RejectBadChallenge", ENGINE_VALUE((uint64_t)128) }, + { "RejectNoLobby", ENGINE_VALUE((uint64_t)129) }, + { "RejectBackgroundMap", ENGINE_VALUE((uint64_t)130) }, + { "RejectSinglePlayer", ENGINE_VALUE((uint64_t)131) }, + { "RejectHiddenGame", ENGINE_VALUE((uint64_t)132) }, + { "RejectLanRestrict", ENGINE_VALUE((uint64_t)133) }, + { "RejectBadPassword", ENGINE_VALUE((uint64_t)134) }, + { "RejectServerFull", ENGINE_VALUE((uint64_t)135) }, + { "RejectInvalidReservation", ENGINE_VALUE((uint64_t)136) }, + { "RejectFailedChannel", ENGINE_VALUE((uint64_t)137) }, + { "RejectConnectFromLobby", ENGINE_VALUE((uint64_t)138) }, + { "RejectReservedForLobby", ENGINE_VALUE((uint64_t)139) }, + { "RejectInvalidKeyLength", ENGINE_VALUE((uint64_t)140) }, + { "RejectOldProtocol", ENGINE_VALUE((uint64_t)141) }, + { "RejectNewProtocol", ENGINE_VALUE((uint64_t)142) }, + { "RejectInvalidConnection", ENGINE_VALUE((uint64_t)143) }, + { "RejectInvalidCertLen", ENGINE_VALUE((uint64_t)144) }, + { "RejectInvalidSteamCertLen", ENGINE_VALUE((uint64_t)145) }, + { "RejectSteam", ENGINE_VALUE((uint64_t)146) }, + { "RejectServerAuthDisabled", ENGINE_VALUE((uint64_t)147) }, + { "RejectServerCDKeyAuthInvalid", ENGINE_VALUE((uint64_t)148) }, + { "RejectBanned", ENGINE_VALUE((uint64_t)149) }, + { "KickedTeamKilling", ENGINE_VALUE((uint64_t)150) }, + { "KickedTKStart", ENGINE_VALUE((uint64_t)151) }, + { "KickedUntrustedAccount", ENGINE_VALUE((uint64_t)152) }, + { "KickedConvictedAccount", ENGINE_VALUE((uint64_t)153) }, + { "KickedCompetitiveCooldown", ENGINE_VALUE((uint64_t)154) }, + { "KickedTeamHurting", ENGINE_VALUE((uint64_t)155) }, + { "KickedHostageKilling", ENGINE_VALUE((uint64_t)156) }, + { "KickedVotedOff", ENGINE_VALUE((uint64_t)157) }, + { "KickedIdle", ENGINE_VALUE((uint64_t)158) }, + { "KickedSuicide", ENGINE_VALUE((uint64_t)159) }, + { "KickedNoSteamLogin", ENGINE_VALUE((uint64_t)160) }, + { "KickedNoSteamTicket", ENGINE_VALUE((uint64_t)161) }, + { "KickedInputAutomation", ENGINE_VALUE((uint64_t)162) }, + { "KickedVACNetAbnormalBehavior", ENGINE_VALUE((uint64_t)163) } + }); + + ADD_VARIABLES("CollisionGroup", { + { "COLLISION_GROUP_ALWAYS", ENGINE_VALUE((uint64_t)BuiltInCollisionGroup_t::COLLISION_GROUP_ALWAYS) }, + { "COLLISION_GROUP_NONPHYSICAL", ENGINE_VALUE((uint64_t)BuiltInCollisionGroup_t::COLLISION_GROUP_NONPHYSICAL) }, + { "COLLISION_GROUP_TRIGGER", ENGINE_VALUE((uint64_t)BuiltInCollisionGroup_t::COLLISION_GROUP_TRIGGER) }, + { "COLLISION_GROUP_CONDITIONALLY_SOLID", ENGINE_VALUE((uint64_t)BuiltInCollisionGroup_t::COLLISION_GROUP_CONDITIONALLY_SOLID) }, + { "COLLISION_GROUP_FIRST_USER", ENGINE_VALUE((uint64_t)BuiltInCollisionGroup_t::COLLISION_GROUP_FIRST_USER) }, + { "COLLISION_GROUPS_MAX_ALLOWED", ENGINE_VALUE((uint64_t)BuiltInCollisionGroup_t::COLLISION_GROUPS_MAX_ALLOWED) }, + { "COLLISION_GROUP_DEFAULT", ENGINE_VALUE((uint64_t)StandardCollisionGroups_t::COLLISION_GROUP_DEFAULT) }, + { "COLLISION_GROUP_DEBRIS", ENGINE_VALUE((uint64_t)StandardCollisionGroups_t::COLLISION_GROUP_DEBRIS) }, + { "COLLISION_GROUP_INTERACTIVE_DEBRIS", ENGINE_VALUE((uint64_t)StandardCollisionGroups_t::COLLISION_GROUP_INTERACTIVE_DEBRIS) }, + { "COLLISION_GROUP_INTERACTIVE", ENGINE_VALUE((uint64_t)StandardCollisionGroups_t::COLLISION_GROUP_INTERACTIVE) }, + { "COLLISION_GROUP_PLAYER", ENGINE_VALUE((uint64_t)StandardCollisionGroups_t::COLLISION_GROUP_PLAYER) }, + { "COLLISION_GROUP_BREAKABLE_GLASS", ENGINE_VALUE((uint64_t)StandardCollisionGroups_t::COLLISION_GROUP_BREAKABLE_GLASS) }, + { "COLLISION_GROUP_VEHICLE", ENGINE_VALUE((uint64_t)StandardCollisionGroups_t::COLLISION_GROUP_VEHICLE) }, + { "COLLISION_GROUP_PLAYER_MOVEMENT", ENGINE_VALUE((uint64_t)StandardCollisionGroups_t::COLLISION_GROUP_PLAYER_MOVEMENT) }, + { "COLLISION_GROUP_NPC", ENGINE_VALUE((uint64_t)StandardCollisionGroups_t::COLLISION_GROUP_NPC) }, + { "COLLISION_GROUP_IN_VEHICLE", ENGINE_VALUE((uint64_t)StandardCollisionGroups_t::COLLISION_GROUP_IN_VEHICLE) }, + { "COLLISION_GROUP_WEAPON", ENGINE_VALUE((uint64_t)StandardCollisionGroups_t::COLLISION_GROUP_WEAPON) }, + { "COLLISION_GROUP_VEHICLE_CLIP", ENGINE_VALUE((uint64_t)StandardCollisionGroups_t::COLLISION_GROUP_VEHICLE_CLIP) }, + { "COLLISION_GROUP_PROJECTILE", ENGINE_VALUE((uint64_t)StandardCollisionGroups_t::COLLISION_GROUP_PROJECTILE) }, + { "COLLISION_GROUP_DOOR_BLOCKER", ENGINE_VALUE((uint64_t)StandardCollisionGroups_t::COLLISION_GROUP_DOOR_BLOCKER) }, + { "COLLISION_GROUP_PASSABLE_DOOR", ENGINE_VALUE((uint64_t)StandardCollisionGroups_t::COLLISION_GROUP_PASSABLE_DOOR) }, + { "COLLISION_GROUP_DISSOLVING", ENGINE_VALUE((uint64_t)StandardCollisionGroups_t::COLLISION_GROUP_DISSOLVING) }, + { "COLLISION_GROUP_PUSHAWAY", ENGINE_VALUE((uint64_t)StandardCollisionGroups_t::COLLISION_GROUP_PUSHAWAY) }, + { "COLLISION_GROUP_NPC_ACTOR", ENGINE_VALUE((uint64_t)StandardCollisionGroups_t::COLLISION_GROUP_NPC_ACTOR) }, + { "COLLISION_GROUP_NPC_SCRIPTED", ENGINE_VALUE((uint64_t)StandardCollisionGroups_t::COLLISION_GROUP_NPC_SCRIPTED) }, + { "COLLISION_GROUP_PZ_CLIP", ENGINE_VALUE((uint64_t)StandardCollisionGroups_t::COLLISION_GROUP_PZ_CLIP) }, + { "COLLISION_GROUP_PROPS", ENGINE_VALUE((uint64_t)StandardCollisionGroups_t::COLLISION_GROUP_PROPS) }, + { "LAST_SHARED_COLLISION_GROUP", ENGINE_VALUE((uint64_t)StandardCollisionGroups_t::LAST_SHARED_COLLISION_GROUP) } + }); + + ADD_VARIABLES("EConVarType", { + { "EConVarType_Invalid", ENGINE_VALUE((uint64_t)EConVarType::EConVarType_Invalid) }, + { "EConVarType_Bool", ENGINE_VALUE((uint64_t)EConVarType::EConVarType_Bool) }, + { "EConVarType_Int16", ENGINE_VALUE((uint64_t)EConVarType::EConVarType_Int16) }, + { "EConVarType_UInt16", ENGINE_VALUE((uint64_t)EConVarType::EConVarType_UInt16) }, + { "EConVarType_Int32", ENGINE_VALUE((uint64_t)EConVarType::EConVarType_Int32) }, + { "EConVarType_UInt32", ENGINE_VALUE((uint64_t)EConVarType::EConVarType_UInt32) }, + { "EConVarType_Int64", ENGINE_VALUE((uint64_t)EConVarType::EConVarType_Int64) }, + { "EConVarType_UInt64", ENGINE_VALUE((uint64_t)EConVarType::EConVarType_UInt64) }, + { "EConVarType_Float32", ENGINE_VALUE((uint64_t)EConVarType::EConVarType_Float32) }, + { "EConVarType_Float64", ENGINE_VALUE((uint64_t)EConVarType::EConVarType_Float64) }, + { "EConVarType_String", ENGINE_VALUE((uint64_t)EConVarType::EConVarType_String) }, + { "EConVarType_Color", ENGINE_VALUE((uint64_t)EConVarType::EConVarType_Color) }, + { "EConVarType_Vector2", ENGINE_VALUE((uint64_t)EConVarType::EConVarType_Vector2) }, + { "EConVarType_Vector3", ENGINE_VALUE((uint64_t)EConVarType::EConVarType_Vector3) }, + { "EConVarType_Vector4", ENGINE_VALUE((uint64_t)EConVarType::EConVarType_Vector4) }, + { "EConVarType_Qangle", ENGINE_VALUE((uint64_t)EConVarType::EConVarType_Qangle) } + }); + + ADD_VARIABLES("GamePhase", { + { "GAMEPHASE_WARMUP_ROUND", ENGINE_VALUE((uint64_t)GamePhase::GAMEPHASE_WARMUP_ROUND) }, + { "GAMEPHASE_PLAYING_STANDARD", ENGINE_VALUE((uint64_t)GamePhase::GAMEPHASE_PLAYING_STANDARD) }, + { "GAMEPHASE_PLAYING_FIRST_HALF", ENGINE_VALUE((uint64_t)GamePhase::GAMEPHASE_PLAYING_FIRST_HALF) }, + { "GAMEPHASE_PLAYING_SECOND_HALF", ENGINE_VALUE((uint64_t)GamePhase::GAMEPHASE_PLAYING_SECOND_HALF) }, + { "GAMEPHASE_HALFTIME", ENGINE_VALUE((uint64_t)GamePhase::GAMEPHASE_HALFTIME) }, + { "GAMEPHASE_MATCH_ENDED", ENGINE_VALUE((uint64_t)GamePhase::GAMEPHASE_MATCH_ENDED) }, + { "GAMEPHASE_MAX", ENGINE_VALUE((uint64_t)GamePhase::GAMEPHASE_MAX) } + }); + + ADD_VARIABLES("ConvarFlags", { + { "FCVAR_LINKED_CONCOMMAND", ENGINE_VALUE((uint64_t)FCVAR_LINKED_CONCOMMAND) }, + { "FCVAR_DEVELOPMENTONLY", ENGINE_VALUE((uint64_t)FCVAR_DEVELOPMENTONLY) }, + { "FCVAR_GAMEDLL", ENGINE_VALUE((uint64_t)FCVAR_GAMEDLL) }, + { "FCVAR_CLIENTDLL", ENGINE_VALUE((uint64_t)FCVAR_CLIENTDLL) }, + { "FCVAR_HIDDEN", ENGINE_VALUE((uint64_t)FCVAR_HIDDEN) }, + { "FCVAR_PROTECTED", ENGINE_VALUE((uint64_t)FCVAR_PROTECTED) }, + { "FCVAR_SPONLY", ENGINE_VALUE((uint64_t)FCVAR_SPONLY) }, + { "FCVAR_ARCHIVE", ENGINE_VALUE((uint64_t)FCVAR_ARCHIVE) }, + { "FCVAR_NOTIFY", ENGINE_VALUE((uint64_t)FCVAR_NOTIFY) }, + { "FCVAR_USERINFO", ENGINE_VALUE((uint64_t)FCVAR_USERINFO) }, + { "FCVAR_REFERENCE", ENGINE_VALUE((uint64_t)FCVAR_REFERENCE) }, + { "FCVAR_UNLOGGED", ENGINE_VALUE((uint64_t)FCVAR_UNLOGGED) }, + { "FCVAR_INITIAL_SETVALUE", ENGINE_VALUE((uint64_t)FCVAR_INITIAL_SETVALUE) }, + { "FCVAR_REPLICATED", ENGINE_VALUE((uint64_t)FCVAR_REPLICATED) }, + { "FCVAR_CHEAT", ENGINE_VALUE((uint64_t)FCVAR_CHEAT) }, + { "FCVAR_PER_USER", ENGINE_VALUE((uint64_t)FCVAR_PER_USER) }, + { "FCVAR_DEMO", ENGINE_VALUE((uint64_t)FCVAR_DEMO) }, + { "FCVAR_DONTRECORD", ENGINE_VALUE((uint64_t)FCVAR_DONTRECORD) }, + { "FCVAR_PERFORMING_CALLBACKS", ENGINE_VALUE((uint64_t)FCVAR_PERFORMING_CALLBACKS) }, + { "FCVAR_RELEASE", ENGINE_VALUE((uint64_t)FCVAR_RELEASE) }, + { "FCVAR_MENUBAR_ITEM", ENGINE_VALUE((uint64_t)FCVAR_MENUBAR_ITEM) }, + { "FCVAR_COMMANDLINE_ENFORCED", ENGINE_VALUE((uint64_t)FCVAR_COMMANDLINE_ENFORCED) }, + { "FCVAR_NOT_CONNECTED", ENGINE_VALUE((uint64_t)FCVAR_NOT_CONNECTED) }, + { "FCVAR_VCONSOLE_FUZZY_MATCHING", ENGINE_VALUE((uint64_t)FCVAR_VCONSOLE_FUZZY_MATCHING) }, + { "FCVAR_SERVER_CAN_EXECUTE", ENGINE_VALUE((uint64_t)FCVAR_SERVER_CAN_EXECUTE) }, + { "FCVAR_CLIENT_CAN_EXECUTE", ENGINE_VALUE((uint64_t)FCVAR_CLIENT_CAN_EXECUTE) }, + { "FCVAR_SERVER_CANNOT_QUERY", ENGINE_VALUE((uint64_t)FCVAR_SERVER_CANNOT_QUERY) }, + { "FCVAR_VCONSOLE_SET_FOCUS", ENGINE_VALUE((uint64_t)FCVAR_VCONSOLE_SET_FOCUS) }, + { "FCVAR_CLIENTCMD_CAN_EXECUTE", ENGINE_VALUE((uint64_t)FCVAR_CLIENTCMD_CAN_EXECUTE) }, + { "FCVAR_EXECUTE_PER_TICK", ENGINE_VALUE((uint64_t)FCVAR_EXECUTE_PER_TICK) }, + { "FCVAR_DEFENSIVE", ENGINE_VALUE((uint64_t)FCVAR_DEFENSIVE) } + }); + + ADD_VARIABLES("ListenOverride", { + { "Listen_Default", ENGINE_VALUE((uint64_t)0) }, + { "Listen_Mute", ENGINE_VALUE((uint64_t)1) }, + { "Listen_Hear", ENGINE_VALUE((uint64_t)2) } + }); + + ADD_VARIABLES("VoiceFlagValue", { + { "Speak_Normal", ENGINE_VALUE((uint64_t)0) }, + { "Speak_Muted", ENGINE_VALUE((uint64_t)1 << 0) }, + { "Speak_All", ENGINE_VALUE((uint64_t)1 << 1) }, + { "Speak_ListenAll", ENGINE_VALUE((uint64_t)1 << 2) }, + { "Speak_Team", ENGINE_VALUE((uint64_t)1 << 3) }, + { "Speak_ListenTeam", ENGINE_VALUE((uint64_t)1 << 4) } + }); + + ADD_VARIABLES("LogType_t", { + { "Debug", ENGINE_VALUE((uint64_t)LogType_t::Debug) }, + { "Warning", ENGINE_VALUE((uint64_t)LogType_t::Warning) }, + { "Error", ENGINE_VALUE((uint64_t)LogType_t::Error) }, + { "Common", ENGINE_VALUE((uint64_t)LogType_t::Common) } + }); +}) \ No newline at end of file diff --git a/src/scripting/sdk/schema.cpp b/src/scripting/sdk/schema.cpp new file mode 100644 index 000000000..23eadfeb1 --- /dev/null +++ b/src/scripting/sdk/schema.cpp @@ -0,0 +1,345 @@ +#include <scripting/core.h> + +#include <entities/system.h> +#include <engine/precacher/precacher.h> +#include <memory/virtual/virtual.h> +#include <memory/gamedata/gamedata.h> +#include <sdk/schema.h> +#include <sdk/access.h> +#include <sdk/game.h> +#include <sdk/components/CTakeDamageInfo.h> +#include <sdk/components/CPlayerPawnComponent.h> +#include <sdk/components/EmitSound_t.h> +#include <sdk/components/CSingleRecipientFilter.h> +#include <utils/common.h> +#include <utils/utils.h> + +#include "ehandle.h" + +typedef void (*CAttributeList_SetOrAddAttributeValueByName_t)(void*, const char*, float); +typedef void (*CBaseModelEntity_SetBodygroup_t)(void*, const char*, ...); +typedef void (*CBaseModelEntity_SetModel_t)(void*, const char*); +typedef void (*CBaseEntity_TakeDamage)(void*, CTakeDamageInfo*); +typedef SndOpEventGuid_t(*CBaseEntity_EmitSoundFilter)(IRecipientFilter& filter, CEntityIndex ent, const EmitSound_t& params); +typedef void (*CBaseEntity_EmitSoundParams)(void*, const char*, int, float, float); + +std::set<uint64_t> classFuncs = { + ((uint64_t)hash_32_fnv1a_const("CBaseEntity") << 32 | hash_32_fnv1a_const("EHandle")), + ((uint64_t)hash_32_fnv1a_const("CBaseEntity") << 32 | hash_32_fnv1a_const("Spawn")), + ((uint64_t)hash_32_fnv1a_const("CBaseEntity") << 32 | hash_32_fnv1a_const("Despawn")), + ((uint64_t)hash_32_fnv1a_const("CBaseEntity") << 32 | hash_32_fnv1a_const("AcceptInput")), + ((uint64_t)hash_32_fnv1a_const("CBaseEntity") << 32 | hash_32_fnv1a_const("GetClassname")), + ((uint64_t)hash_32_fnv1a_const("CBaseEntity") << 32 | hash_32_fnv1a_const("GetVData")), + ((uint64_t)hash_32_fnv1a_const("CBaseEntity") << 32 | hash_32_fnv1a_const("Teleport")), + ((uint64_t)hash_32_fnv1a_const("CBaseEntity") << 32 | hash_32_fnv1a_const("EmitSound")), + ((uint64_t)hash_32_fnv1a_const("CBaseEntity") << 32 | hash_32_fnv1a_const("EmitSoundFromEntity")), + ((uint64_t)hash_32_fnv1a_const("CBaseEntity") << 32 | hash_32_fnv1a_const("TakeDamage")), + ((uint64_t)hash_32_fnv1a_const("CBaseEntity") << 32 | hash_32_fnv1a_const("CollisionRulesChanged")), + ((uint64_t)hash_32_fnv1a_const("CBaseModelEntity") << 32 | hash_32_fnv1a_const("SetModel")), + ((uint64_t)hash_32_fnv1a_const("CBaseModelEntity") << 32 | hash_32_fnv1a_const("SetSolidType")), + ((uint64_t)hash_32_fnv1a_const("CBaseModelEntity") << 32 | hash_32_fnv1a_const("SetBodygroup")), + ((uint64_t)hash_32_fnv1a_const("CAttributeList") << 32 | hash_32_fnv1a_const("SetOrAddAttributeValueByName")), + ((uint64_t)hash_32_fnv1a_const("CBasePlayerController") << 32 | hash_32_fnv1a_const("EntityIndex")), + ((uint64_t)hash_32_fnv1a_const("CGameSceneNode") << 32 | hash_32_fnv1a_const("GetSkeletonInstance")), + ((uint64_t)hash_32_fnv1a_const("CPlayerPawnComponent") << 32 | hash_32_fnv1a_const("GetPawn")), +}; + +std::set<std::string> skipFunctions = { + "__call", + "call", + "__tostring", + "toString", + "ToPtr", + "IsValid" +}; + +void DummyGetSetSDK(FunctionContext* context, ClassData* data) {} +EValue MakeSDKClassInstance(std::string className, void* ptr, EContext* context) +{ + return MAKE_CLASS_INSTANCE("SDKClass", { { "class_name", className }, { "class_ptr", ptr } }); +} + +EValue AccessSDK(void* ptr, std::string className, std::string fieldName, uint64_t path, EContext* state); +void UpdateSDK(void* ptr, std::string className, std::string fieldName, EValue value, EContext* state); + +void SchemaCallback(PluginObject plugin, EContext* ctx) { + ADD_CLASS("SDKClass"); + + ADD_FUNCTION("IsSDKClass", [](FunctionContext* context) -> void { + context->SetReturn(sch::IsClassLoaded(context->GetArgumentOr<std::string>(0, "").c_str())); + }); + + ADD_FUNCTION("GenerateSDKFactory", [](FunctionContext* context) -> void { + void* ptr = nullptr; + auto classData = context->GetArgumentOr<ClassData*>(1, nullptr); + if (classData) { + if (classData->HasData("class_name")) { + ptr = classData->GetData<void*>("class_ptr"); + } + else if (classData->HasData("ptr")) { + ptr = classData->GetData<void*>("ptr"); + } + else ptr = (void*)nullptr; + } + else { + auto strptr = context->GetArgumentOr<std::string>(1, ""); + if (starts_with(strptr, "0x")) { + ptr = (void*)StringToPtr(strptr); + } + else ptr = (void*)nullptr; + } + + EValue ent = MakeSDKClassInstance(context->GetArgument<std::string>(0), ptr, context->GetPluginContext()); + context->SetReturn(ent); + }); + + ADD_CLASS_FUNCTION("SDKClass", ctx->GetKind() == ContextKinds::Lua ? "__tostring" : "toString", [](FunctionContext* context, ClassData* data) -> void { + if (!data->HasData("class_ptr")) data->SetData("class_ptr", (void*)nullptr); + context->SetReturn(string_format("%s(ptr=%p)", data->GetData<std::string>("class_name").c_str(), data->GetData<void*>("class_ptr"))); + }); + + ADD_CLASS_FUNCTION("SDKClass", "IsValid", [](FunctionContext* context, ClassData* data) -> void { + context->SetReturn(data->GetData<void*>("class_ptr") != nullptr); + }); + + ADD_CLASS_FUNCTION("SDKClass", "ToPtr", [](FunctionContext* context, ClassData* data) -> void { + context->SetReturn(string_format("%p", data->GetData<void*>("class_ptr"))); + }); + + ADD_CLASS_FUNCTION("SDKClass", "EHandle", [](FunctionContext* context, ClassData* data) -> void { + CEntityInstance* instance = (CEntityInstance*)data->GetData<void*>("class_ptr"); + context->SetReturn(MakeSDKClassInstance("CBaseEntity", instance->m_pEntity->m_EHandle.Get(), context->GetPluginContext())); + }); + + ADD_CLASS_FUNCTION("SDKClass", "Spawn", [](FunctionContext* context, ClassData* data) -> void { + void* instance = data->GetData<void*>("class_ptr"); + ClassData* keyvals = context->GetArgumentOr<ClassData*>(0, nullptr); + + if (keyvals && keyvals->HasData("centitykeyvalues_ptr")) { + g_entSystem.Spawn(instance, (void*)keyvals->GetData<CEntityKeyValues*>("centitykeyvalues_ptr")); + return; + } + + g_entSystem.Spawn(instance, nullptr); + }); + + ADD_CLASS_FUNCTION("SDKClass", "Despawn", [](FunctionContext* context, ClassData* data) -> void { + void* instance = data->GetData<void*>("class_ptr"); + g_entSystem.Despawn(instance); + }); + + ADD_CLASS_FUNCTION("SDKClass", "AcceptInput", [](FunctionContext* context, ClassData* data) -> void { + void* instance = data->GetData<void*>("class_ptr"); + std::string input = context->GetArgumentOr<std::string>(0, ""); + ClassData* activator = context->GetArgumentOr<ClassData*>(1, nullptr); + ClassData* caller = context->GetArgumentOr<ClassData*>(2, nullptr); + std::string value = context->GetArgumentOr<std::string>(3, ""); + int outputID = context->GetArgumentOr<int>(4, 0); + + void* activatorptr = nullptr; + void* callerptr = nullptr; + + if (activator && activator->HasData("class_ptr")) + activatorptr = activator->GetData<void*>("class_ptr"); + if (caller && caller->HasData("class_ptr")) + callerptr = caller->GetData<void*>("class_ptr"); + + g_entSystem.AcceptInput(instance, input, activatorptr, callerptr, value, outputID); + }); + + ADD_CLASS_FUNCTION("SDKClass", "GetClassname", [](FunctionContext* context, ClassData* data) -> void { + CEntityInstance* instance = (CEntityInstance*)data->GetData<void*>("class_ptr"); + context->SetReturn(instance->GetClassname()); + }); + + ADD_CLASS_FUNCTION("SDKClass", "GetVData", [](FunctionContext* context, ClassData* data) -> void { + void* instance = data->GetData<void*>("class_ptr"); + context->SetReturn(MakeSDKClassInstance("CEntitySubclassVDataBase", schema::GetVData(instance), context->GetPluginContext())); + }); + + ADD_CLASS_FUNCTION("SDKClass", "Teleport", [](FunctionContext* context, ClassData* data) -> void { + void* instance = data->GetData<void*>("class_ptr"); + ClassData* pos = context->GetArgumentOr<ClassData*>(0, nullptr); + ClassData* ang = context->GetArgumentOr<ClassData*>(1, nullptr); + ClassData* vel = context->GetArgumentOr<ClassData*>(2, nullptr); + + Vector po(0.0, 0.0, 0.0); + Vector ve(0.0, 0.0, 0.0); + QAngle an(0.0, 0.0, 0.0); + + if (pos && pos->HasData("vector_ptr")) + po = pos->GetDataOr<Vector>("vector_ptr", po); + if (ang && ang->HasData("vector_ptr")) + an = ang->GetDataOr<QAngle>("QAngle_ptr", an); + if (vel && vel->HasData("vector_ptr")) + ve = vel->GetDataOr<Vector>("vector_ptr", ve); + + CALL_VIRTUAL(void, g_GameData.GetOffset("CBaseEntity_Teleport"), instance, &po, &an, &ve); + }); + + ADD_CLASS_FUNCTION("SDKClass", "EmitSound", [](FunctionContext* context, ClassData* data) -> void { + CEntityInstance* instance = (CEntityInstance*)data->GetData<void*>("class_ptr"); + std::string sound_name = context->GetArgumentOr<std::string>(0, ""); + float pitch = context->GetArgumentOr<float>(1, 0.0f); + float volume = context->GetArgumentOr<float>(2, 0.0f); + + EmitSound_t params; + params.m_pSoundName = sound_name.c_str(); + params.m_flVolume = volume; + params.m_nPitch = pitch; + + CBaseEntity_EmitSoundFilter filter = g_GameData.FetchSignature<CBaseEntity_EmitSoundFilter>("CBaseEntity_EmitSoundFilter"); + + for (int i = 1; i <= GetMaxGameClients(); i++) { + auto controllerPtr = g_pEntitySystem->GetEntityInstance(CEntityIndex(i)); + if (controllerPtr == instance) { + CSingleRecipientFilter playerfilter(i - 1); + filter(playerfilter, instance->m_pEntity->m_EHandle.GetEntryIndex(), params); + } + else { + CHandle<CEntityInstance> pawnHandle = schema::GetProp<CHandle<CEntityInstance>>(instance, "CCSPlayerController", "m_hPlayerPawn"); + if (pawnHandle.Get() == instance) { + CSingleRecipientFilter playerfilter(i - 1); + filter(playerfilter, instance->m_pEntity->m_EHandle.GetEntryIndex(), params); + } + } + } + }); + + ADD_CLASS_FUNCTION("SDKClass", "EmitSoundFromEntity", [](FunctionContext* context, ClassData* data) -> void { + void* instance = data->GetData<void*>("class_ptr"); + std::string sound_name = context->GetArgumentOr<std::string>(0, ""); + float pitch = context->GetArgumentOr<float>(1, 0.0f); + float volume = context->GetArgumentOr<float>(2, 0.0f); + float delay = context->GetArgumentOr<float>(3, 0.0f); + + g_GameData.FetchSignature<CBaseEntity_EmitSoundParams>("CBaseEntity_EmitSoundParams")(instance, sound_name.c_str(), pitch, volume, delay); + }); + + ADD_CLASS_FUNCTION("SDKClass", "TakeDamage", [](FunctionContext* context, ClassData* data) -> void { + ClassData* attacker = context->GetArgumentOr<ClassData*>(0, nullptr); + ClassData* inflictor = context->GetArgumentOr<ClassData*>(1, nullptr); + ClassData* ability = context->GetArgumentOr<ClassData*>(2, nullptr); + int damageType = context->GetArgumentOr<int>(3, 0); + float damage = context->GetArgumentOr<float>(4, 0.0f); + + void* pinflictor = nullptr; + void* pability = nullptr; + void* pattacker = nullptr; + + if (inflictor && inflictor->HasData("class_name")) + pinflictor = inflictor->GetData<void*>("class_ptr"); + if (ability && ability->HasData("class_name")) + pability = ability->GetData<void*>("class_ptr"); + if (ability && attacker->HasData("class_name")) + pattacker = attacker->GetData<void*>("class_ptr"); + + if (!pinflictor) pinflictor = pattacker; + + void* instance = data->GetData<void*>("class_ptr"); + + CTakeDamageInfo info(pinflictor, pattacker, pability, damage, damageType); + g_GameData.FetchSignature<CBaseEntity_TakeDamage>("CBaseEntity_TakeDamage")(instance, &info); + }); + + ADD_CLASS_FUNCTION("SDKClass", "CollisionRulesChanged", [](FunctionContext* context, ClassData* data) -> void { + void* instance = data->GetData<void*>("class_ptr"); + CALL_VIRTUAL(void, g_GameData.GetOffset("CollisionRulesChanged"), instance); + }); + + ADD_CLASS_FUNCTION("SDKClass", "SetModel", [](FunctionContext* context, ClassData* data) -> void { + std::string model = context->GetArgumentOr<std::string>(0, ""); + if (model == "") return; + + if (!g_precacher.HasModelInList(model)) { + g_precacher.AddItem(model); + PLUGIN_PRINTF("Precacher", "Model '%s' was not precached before and it was added to the list.\n", model.c_str()); + PLUGIN_PRINTF("Precacher", "It may work on the second map change if the model is valid.\n"); + } + + void* instance = data->GetData<void*>("class_ptr"); + g_GameData.FetchSignature<CBaseModelEntity_SetModel_t>("CBaseModelEntity_SetModel")(instance, model.c_str()); + }); + + ADD_CLASS_FUNCTION("SDKClass", "SetSolidType", [](FunctionContext* context, ClassData* data) -> void { + int solidID = context->GetArgumentOr<uint8_t>(0, 0); + if (solidID < 0) return; + + void* instance = data->GetData<void*>("class_ptr"); + void* collision = schema::GetPropPtr<void>(instance, "CBaseModelEntity", "m_Collision"); + schema::SetProp(collision, "m_nSolidType", "m_nSolidType", solidID); + CALL_VIRTUAL(void, g_GameData.GetOffset("CollisionRulesChanged"), instance); + }); + + ADD_CLASS_FUNCTION("SDKClass", "SetBodygroup", [](FunctionContext* context, ClassData* data) -> void { + void* instance = data->GetData<void*>("class_ptr"); + std::string str = context->GetArgumentOr<std::string>(0, ""); + uint64_t value = context->GetArgumentOr<uint64_t>(1, 0); + g_GameData.FetchSignature<CBaseModelEntity_SetBodygroup_t>("CBaseModelEntity_SetBodygroup")(instance, str.c_str(), value); + }); + + ADD_CLASS_FUNCTION("SDKClass", "SetOrAddAttributeValueByName", [](FunctionContext* context, ClassData* data) -> void { + void* instance = data->GetData<void*>("class_ptr"); + std::string str = context->GetArgumentOr<std::string>(0, ""); + float value = context->GetArgumentOr<float>(1, 0.0f); + g_GameData.FetchSignature<CAttributeList_SetOrAddAttributeValueByName_t>("CAttributeList_SetOrAddAttributeValueByName")(instance, str.c_str(), value); + }); + + ADD_CLASS_FUNCTION("SDKClass", "EntityIndex", [](FunctionContext* context, ClassData* data) -> void { + CEntityInstance* instance = (CEntityInstance*)data->GetData<void*>("class_ptr"); + context->SetReturn(instance->GetEntityIndex().Get()); + }); + + ADD_CLASS_FUNCTION("SDKClass", "GetSkeletonInstance", [](FunctionContext* context, ClassData* data) -> void { + void* instance = data->GetData<void*>("class_ptr"); + context->SetReturn(MakeSDKClassInstance("CSkeletonInstance", CALL_VIRTUAL(void*, g_GameData.GetOffset("CGameSceneNode_GetSkeletonInstance"), instance), context->GetPluginContext())); + }); + + ADD_CLASS_FUNCTION("SDKClass", "GetPawn", [](FunctionContext* context, ClassData* data) -> void { + CPlayerPawnComponent* instance = (CPlayerPawnComponent*)data->GetData<void*>("class_ptr"); + context->SetReturn(MakeSDKClassInstance("CBasePlayerPawn", instance->m_pPawn, context->GetPluginContext())); + }); + + auto fields = g_sdk.GetProcessedFieldNames(); + for (auto it = fields.begin(); it != fields.end(); ++it) ADD_CLASS_MEMBER("SDKClass", *it, DummyGetSetSDK, DummyGetSetSDK); + + ADD_CLASS_MEMBER_PRE("SDKClass", ".*", [](FunctionContext* context, ClassData* data) -> void { + std::string className = data->GetData<std::string>("class_name"); + std::string fieldName = explode(context->GetFunctionKey(), " ").back(); + if (skipFunctions.find(fieldName) != skipFunctions.end()) return; + uint64_t path = ((uint64_t)hash_32_fnv1a_const(className.c_str()) << 32 | hash_32_fnv1a_const(fieldName.c_str())); + + void* instance = data->GetData<void*>("class_ptr"); + if (!instance) { + /* TODO: Crash Reporter - Report crash prevention */ + return context->StopExecution(); + } + context->SetReturn(AccessSDK(data->GetData<void*>("class_ptr"), className, fieldName, path, context->GetPluginContext())); + context->StopExecution(); + }, [](FunctionContext* context, ClassData* data) -> void { + std::string className = data->GetData<std::string>("class_name"); + std::string fieldName = explode(context->GetFunctionKey(), " ").back(); + + UpdateSDK(data->GetData<void*>("class_ptr"), className, fieldName, context->GetArgument<EValue>(0), context->GetPluginContext()); + context->StopExecution(); + }); + + ADD_CLASS_FUNCTION_PRE("SDKClass", ".*", [](FunctionContext* context, ClassData* data) -> void { + std::string function_name = explode(context->GetFunctionKey(), " ").back(); + if (skipFunctions.find(function_name) != skipFunctions.end()) return; + + std::string className = data->GetData<std::string>("class_name"); + uint64_t path = ((uint64_t)hash_32_fnv1a_const(className.c_str()) << 32 | hash_32_fnv1a_const(function_name.c_str())); + if (classFuncs.find(path) != classFuncs.end()) { + void* instance = data->GetData<void*>("class_ptr"); + if (!instance) { + /* TODO: Crash Reporter - Report crash prevention */ + return context->StopExecution(); + } + return; + } + context->StopExecution(); + }); +} + +LoadScriptingComponent(schema, SchemaCallback) \ No newline at end of file diff --git a/src/scripting/sdk/schema_access.cpp b/src/scripting/sdk/schema_access.cpp new file mode 100644 index 000000000..bdfd69630 --- /dev/null +++ b/src/scripting/sdk/schema_access.cpp @@ -0,0 +1,793 @@ +#include <scripting/core.h> + +#include <utils/common.h> +#include <utils/utils.h> +#include <public/mathlib/vector.h> + +#include <sdk/game.h> +#include <sdk/access.h> +#include <sdk/schema.h> +#include <public/tier1/utlstringtoken.h> + +#include "ehandle.h" + +extern bool followServerGuidelines; + +EValue AccessSDK(void* ptr, std::string className, std::string fieldName, uint64_t path, EContext* state) +{ + if (followServerGuidelines && g_sdk.IsFieldBlocked(fieldName)) + { + PRINTF("Getting or setting %s::%s is not permitted due to %s Server Guidelines violation.\nTo get or set this value, switch to false the \"core.Follow%sServerGuidelines\" field.\nNote: Using non-compliant field values can result in a GSLT ban.\nNote: We are not providing any kind of support for people which are using these fields.\n", className.c_str(), fieldName.c_str(), str_toupper(GetGameName()).c_str(), str_toupper(GetGameName()).c_str()); + return EValue(state); + } + + if (!g_sdk.ExistsField(path)) return EValue(state); + + std::string field = g_sdk.GetFieldName(path); + + switch (g_sdk.GetFieldType(path)) + { + case Bool: + return EValue(state, schema::GetProp<bool>(ptr, className.c_str(), field.c_str())); + case Int8: + return EValue(state, schema::GetProp<int8_t>(ptr, className.c_str(), field.c_str())); + case Int16: + return EValue(state, schema::GetProp<int16_t>(ptr, className.c_str(), field.c_str())); + case Int32: + return EValue(state, schema::GetProp<int32_t>(ptr, className.c_str(), field.c_str())); + case Int64: + return EValue(state, schema::GetProp<int64_t>(ptr, className.c_str(), field.c_str())); + case UInt8: + return EValue(state, schema::GetProp<uint8_t>(ptr, className.c_str(), field.c_str())); + case UInt16: + return EValue(state, schema::GetProp<uint16_t>(ptr, className.c_str(), field.c_str())); + case UInt32: + return EValue(state, schema::GetProp<uint32_t>(ptr, className.c_str(), field.c_str())); + case UInt64: + return EValue(state, schema::GetProp<uint64_t>(ptr, className.c_str(), field.c_str())); + case Float: + return EValue(state, schema::GetProp<float>(ptr, className.c_str(), field.c_str())); + case Double: + return EValue(state, schema::GetProp<double>(ptr, className.c_str(), field.c_str())); + case Parent: + return MakeSDKClassInstance(field, ptr, state); + case StringToken: + return EValue(state, schema::GetProp<CUtlStringToken>(ptr, className.c_str(), field.c_str()).GetHashCode()); + case StringSymbolLarge: + return EValue(state, std::string(schema::GetProp<CUtlSymbolLarge>(ptr, className.c_str(), field.c_str()).String())); + case StringUtl: + return EValue(state, std::string(schema::GetProp<CUtlString>(ptr, className.c_str(), field.c_str()).Get())); + case String: + return EValue(state, std::string(schema::GetPropPtr<char>(ptr, className.c_str(), field.c_str()))); + case Class: + return MakeSDKClassInstance(g_sdk.GetFieldClass(path), schema::GetSchemaPtr(ptr, className.c_str(), field.c_str()), state); + case SDKCHandle: + return MakeSDKClassInstance(g_sdk.GetFieldClass(path), (void*)(schema::GetProp<CHandle<CEntityInstance>>(ptr, className.c_str(), field.c_str()).Get()), state); + case EntityIndex: + return EValue(state, schema::GetProp<CEntityIndex>(ptr, className.c_str(), field.c_str()).Get()); + case SColor: + return MAKE_CLASS_INSTANCE_CTX(state, "Color", { { "Color_ptr", schema::GetProp<Color>(ptr, className.c_str(), field.c_str()) } }); + case SQAngle: + return MAKE_CLASS_INSTANCE_CTX(state, "QAngle", { { "QAngle_ptr", schema::GetProp<QAngle>(ptr, className.c_str(), field.c_str()) } }); + case SVector: + return MAKE_CLASS_INSTANCE_CTX(state, "Vector", { { "vector_ptr", schema::GetProp<Vector>(ptr, className.c_str(), field.c_str()) } }); + case SVector2D: + return MAKE_CLASS_INSTANCE_CTX(state, "Vector2D", { { "Vector2D_ptr", schema::GetProp<Vector2D>(ptr, className.c_str(), field.c_str()) } }); + case SVector4D: + return MAKE_CLASS_INSTANCE_CTX(state, "Vector4D", { { "Vector4D_ptr", schema::GetProp<Vector4D>(ptr, className.c_str(), field.c_str()) } }); + case ClassPointer: + return MakeSDKClassInstance(g_sdk.GetFieldClass(path), *(void**)schema::GetSchemaPtr(ptr, className.c_str(), field.c_str()), state); + case RawListEntityIndex: { + CEntityIndex* outValue = schema::GetPropPtr<CEntityIndex>(ptr, className.c_str(), field.c_str()); + std::vector<int> ret; + for (uint32_t i = 0; i < g_sdk.GetFieldSize(path); i++) + ret.push_back(outValue[i].Get()); + + return EValue(state, ret); + } + case StringSymbolLargeArray: { + CUtlSymbolLarge* outValue = schema::GetPropPtr<CUtlSymbolLarge>(ptr, className.c_str(), field.c_str()); + std::vector<std::string> ret; + for (uint32_t i = 0; i < g_sdk.GetFieldSize(path); i++) + ret.push_back(outValue[i].String()); + + return EValue(state, ret); + } + case StringTokenArray: { + CUtlStringToken* outValue = schema::GetPropPtr<CUtlStringToken>(ptr, className.c_str(), field.c_str()); + std::vector<uint32_t> ret; + for (uint32_t i = 0; i < g_sdk.GetFieldSize(path); i++) + ret.push_back(outValue[i].GetHashCode()); + + return EValue(state, ret); + } + case StringUtlArray: { + CUtlString* outValue = schema::GetPropPtr<CUtlString>(ptr, className.c_str(), field.c_str()); + std::vector<std::string> ret; + for (uint32_t i = 0; i < g_sdk.GetFieldSize(path); i++) + ret.push_back(outValue[i].Get()); + + return EValue(state, ret); + } + case Int8Array: { + int8_t* outValue = schema::GetPropPtr<int8_t>(ptr, className.c_str(), field.c_str()); + std::vector<int8_t> ret; + for (uint32_t i = 0; i < g_sdk.GetFieldSize(path); i++) + ret.push_back(outValue[i]); + + return EValue(state, ret); + } + case Int16Array: { + int16_t* outValue = schema::GetPropPtr<int16_t>(ptr, className.c_str(), field.c_str()); + std::vector<int16_t> ret; + for (uint32_t i = 0; i < g_sdk.GetFieldSize(path); i++) + ret.push_back(outValue[i]); + + return EValue(state, ret); + } + case Int32Array: { + int32_t* outValue = schema::GetPropPtr<int32_t>(ptr, className.c_str(), field.c_str()); + std::vector<int32_t> ret; + for (uint32_t i = 0; i < g_sdk.GetFieldSize(path); i++) + ret.push_back(outValue[i]); + + return EValue(state, ret); + } + case Int64Array: { + int64_t* outValue = schema::GetPropPtr<int64_t>(ptr, className.c_str(), field.c_str()); + std::vector<int64_t> ret; + for (uint32_t i = 0; i < g_sdk.GetFieldSize(path); i++) + ret.push_back(outValue[i]); + + return EValue(state, ret); + } + case UInt8Array: { + uint8_t* outValue = schema::GetPropPtr<uint8_t>(ptr, className.c_str(), field.c_str()); + std::vector<uint8_t> ret; + for (uint32_t i = 0; i < g_sdk.GetFieldSize(path); i++) + ret.push_back(outValue[i]); + + return EValue(state, ret); + } + case UInt16Array: { + uint16_t* outValue = schema::GetPropPtr<uint16_t>(ptr, className.c_str(), field.c_str()); + std::vector<uint16_t> ret; + for (uint32_t i = 0; i < g_sdk.GetFieldSize(path); i++) + ret.push_back(outValue[i]); + + return EValue(state, ret); + } + case UInt32Array: { + uint32_t* outValue = schema::GetPropPtr<uint32_t>(ptr, className.c_str(), field.c_str()); + std::vector<uint32_t> ret; + for (uint32_t i = 0; i < g_sdk.GetFieldSize(path); i++) + ret.push_back(outValue[i]); + + return EValue(state, ret); + } + case UInt64Array: { + uint64_t* outValue = schema::GetPropPtr<uint64_t>(ptr, className.c_str(), field.c_str()); + std::vector<uint64_t> ret; + for (uint32_t i = 0; i < g_sdk.GetFieldSize(path); i++) + ret.push_back(outValue[i]); + + return EValue(state, ret); + } + case FloatArray: { + float* outValue = schema::GetPropPtr<float>(ptr, className.c_str(), field.c_str()); + std::vector<float> ret; + for (uint32_t i = 0; i < g_sdk.GetFieldSize(path); i++) + ret.push_back(outValue[i]); + + return EValue(state, ret); + } + case DoubleArray: { + double* outValue = schema::GetPropPtr<double>(ptr, className.c_str(), field.c_str()); + std::vector<double> ret; + for (uint32_t i = 0; i < g_sdk.GetFieldSize(path); i++) + ret.push_back(outValue[i]); + + return EValue(state, ret); + } + case BoolArray: { + bool* outValue = schema::GetPropPtr<bool>(ptr, className.c_str(), field.c_str()); + std::vector<bool> ret; + for (uint32_t i = 0; i < g_sdk.GetFieldSize(path); i++) + ret.push_back(outValue[i]); + + return EValue(state, ret); + } + case SColorArray: { + Color* outValue = schema::GetPropPtr<Color>(ptr, className.c_str(), field.c_str()); + std::vector<EValue> ret; + for (uint32_t i = 0; i < g_sdk.GetFieldSize(path); i++) + ret.push_back(MAKE_CLASS_INSTANCE_CTX(state, "Color", { { "Color_ptr", outValue[i] } })); + + return EValue(state, ret); + } + case SQAngleArray: { + QAngle* outValue = schema::GetPropPtr<QAngle>(ptr, className.c_str(), field.c_str()); + std::vector<EValue> ret; + for (uint32_t i = 0; i < g_sdk.GetFieldSize(path); i++) + ret.push_back(MAKE_CLASS_INSTANCE_CTX(state, "QAngle", { { "QAngle_ptr", outValue[i] } })); + + return EValue(state, ret); + } + case SVectorArray: { + Vector* outValue = schema::GetPropPtr<Vector>(ptr, className.c_str(), field.c_str()); + std::vector<EValue> ret; + for (uint32_t i = 0; i < g_sdk.GetFieldSize(path); i++) + ret.push_back(MAKE_CLASS_INSTANCE_CTX(state, "Vector", { { "vector_ptr", outValue[i] } })); + + return EValue(state, ret); + } + case SVector2DArray: { + Vector2D* outValue = schema::GetPropPtr<Vector2D>(ptr, className.c_str(), field.c_str()); + std::vector<EValue> ret; + for (uint32_t i = 0; i < g_sdk.GetFieldSize(path); i++) + ret.push_back(MAKE_CLASS_INSTANCE_CTX(state, "Vector2D", { { "Vector2D_ptr", outValue[i] } })); + + return EValue(state, ret); + } + case SVector4DArray: { + Vector4D* outValue = schema::GetPropPtr<Vector4D>(ptr, className.c_str(), field.c_str()); + std::vector<EValue> ret; + for (uint32_t i = 0; i < g_sdk.GetFieldSize(path); i++) + ret.push_back(MAKE_CLASS_INSTANCE_CTX(state, "Vector4D", { { "Vector4D_ptr", outValue[i] } })); + + return EValue(state, ret); + } + case ClassArray: { + void** outValue = schema::GetPropPtr<void*>(ptr, className.c_str(), field.c_str()); + std::vector<EValue> ret; + for (uint32_t i = 0; i < g_sdk.GetFieldSize(path); i++) + ret.push_back(MakeSDKClassInstance(g_sdk.GetFieldClass(path), outValue[i], state)); + + return EValue(state, ret); + } + case CHandleArray: { + CHandle<CEntityInstance>* outValue = schema::GetPropPtr<CHandle<CEntityInstance>>(ptr, className.c_str(), field.c_str()); + std::vector<EValue> ret; + for (uint32_t i = 0; i < g_sdk.GetFieldSize(path); i++) + ret.push_back(MakeSDKClassInstance(g_sdk.GetFieldClass(path), (void*)outValue[i].Get(), state)); + + return EValue(state, ret); + } + case CHandleCUtlVector: { + CUtlVector<CHandle<CEntityInstance>>* vec = schema::GetPropPtr<CUtlVector<CHandle<CEntityInstance>>>(ptr, className.c_str(), field.c_str()); + std::vector<EValue> ret; + for (int i = 0; i < vec->Count(); i++) + ret.push_back(MakeSDKClassInstance(g_sdk.GetFieldClass(path), (void*)(vec->Element(i).Get()), state)); + + return EValue(state, ret); + } + case StringSymbolLargeCUtlVector: { + CUtlVector<CUtlSymbolLarge>* outValue = schema::GetPropPtr<CUtlVector<CUtlSymbolLarge>>(ptr, className.c_str(), field.c_str()); + std::vector<std::string> ret; + for (int i = 0; i < outValue->Count(); i++) + ret.push_back(outValue->Element(i).String()); + + return EValue(state, ret); + } + case StringTokenCUtlVector: { + CUtlVector<CUtlStringToken>* outValue = schema::GetPropPtr<CUtlVector<CUtlStringToken>>(ptr, className.c_str(), field.c_str()); + std::vector<uint32_t> ret; + for (int i = 0; i < outValue->Count(); i++) + ret.push_back(outValue->Element(i).GetHashCode()); + + return EValue(state, ret); + } + case StringUtlCUtlVector: { + CUtlVector<CUtlString>* outValue = schema::GetPropPtr<CUtlVector<CUtlString>>(ptr, className.c_str(), field.c_str()); + std::vector<std::string> ret; + for (int i = 0; i < outValue->Count(); i++) + ret.push_back(outValue->Element(i).Get()); + + return EValue(state, ret); + } + case Int8CUtlVector: { + CUtlVector<int8_t>* vec = schema::GetPropPtr<CUtlVector<int8_t>>(ptr, className.c_str(), field.c_str()); + std::vector<int8_t> ret; + for (int i = 0; i < vec->Count(); i++) + ret.push_back(vec->Element(i)); + + return EValue(state, ret); + } + case Int16CUtlVector: { + CUtlVector<int16_t>* vec = schema::GetPropPtr<CUtlVector<int16_t>>(ptr, className.c_str(), field.c_str()); + std::vector<int16_t> ret; + for (int i = 0; i < vec->Count(); i++) + ret.push_back(vec->Element(i)); + + return EValue(state, ret); + } + case Int32CUtlVector: { + CUtlVector<int32_t>* vec = schema::GetPropPtr<CUtlVector<int32_t>>(ptr, className.c_str(), field.c_str()); + std::vector<int32_t> ret; + for (int i = 0; i < vec->Count(); i++) + ret.push_back(vec->Element(i)); + + return EValue(state, ret); + } + case Int64CUtlVector: { + CUtlVector<int64_t>* vec = schema::GetPropPtr<CUtlVector<int64_t>>(ptr, className.c_str(), field.c_str()); + std::vector<int64_t> ret; + for (int i = 0; i < vec->Count(); i++) + ret.push_back(vec->Element(i)); + + return EValue(state, ret); + } + case UInt8CUtlVector: { + CUtlVector<uint8_t>* vec = schema::GetPropPtr<CUtlVector<uint8_t>>(ptr, className.c_str(), field.c_str()); + std::vector<uint8_t> ret; + for (int i = 0; i < vec->Count(); i++) + ret.push_back(vec->Element(i)); + + return EValue(state, ret); + } + case UInt16CUtlVector: { + CUtlVector<uint16_t>* vec = schema::GetPropPtr<CUtlVector<uint16_t>>(ptr, className.c_str(), field.c_str()); + std::vector<uint16_t> ret; + for (int i = 0; i < vec->Count(); i++) + ret.push_back(vec->Element(i)); + + return EValue(state, ret); + } + case UInt32CUtlVector: { + CUtlVector<uint32_t>* vec = schema::GetPropPtr<CUtlVector<uint32_t>>(ptr, className.c_str(), field.c_str()); + std::vector<uint32_t> ret; + for (int i = 0; i < vec->Count(); i++) + ret.push_back(vec->Element(i)); + + return EValue(state, ret); + } + case UInt64CUtlVector: { + CUtlVector<uint64_t>* vec = schema::GetPropPtr<CUtlVector<uint64_t>>(ptr, className.c_str(), field.c_str()); + std::vector<uint64_t> ret; + for (int i = 0; i < vec->Count(); i++) + ret.push_back(vec->Element(i)); + + return EValue(state, ret); + } + case FloatCUtlVector: { + CUtlVector<float>* vec = schema::GetPropPtr<CUtlVector<float>>(ptr, className.c_str(), field.c_str()); + std::vector<float> ret; + for (int i = 0; i < vec->Count(); i++) + ret.push_back(vec->Element(i)); + + return EValue(state, ret); + } + case DoubleCUtlVector: { + CUtlVector<double>* vec = schema::GetPropPtr<CUtlVector<double>>(ptr, className.c_str(), field.c_str()); + std::vector<double> ret; + for (int i = 0; i < vec->Count(); i++) + ret.push_back(vec->Element(i)); + + return EValue(state, ret); + } + case SColorCUtlVector: { + CUtlVector<Color>* vec = schema::GetPropPtr<CUtlVector<Color>>(ptr, className.c_str(), field.c_str()); + std::vector<EValue> ret; + for (int i = 0; i < vec->Count(); i++) + ret.push_back(MAKE_CLASS_INSTANCE_CTX(state, "Color", { { "Color_ptr", vec->Element(i) } })); + + return EValue(state, ret); + } + case SQAngleCUtlVector: { + CUtlVector<QAngle>* vec = schema::GetPropPtr<CUtlVector<QAngle>>(ptr, className.c_str(), field.c_str()); + std::vector<EValue> ret; + for (int i = 0; i < vec->Count(); i++) + ret.push_back(MAKE_CLASS_INSTANCE_CTX(state, "QAngle", { { "QAngle_ptr", vec->Element(i) } })); + + return EValue(state, ret); + } + case SVectorCUtlVector: { + CUtlVector<Vector>* vec = schema::GetPropPtr<CUtlVector<Vector>>(ptr, className.c_str(), field.c_str()); + std::vector<EValue> ret; + for (int i = 0; i < vec->Count(); i++) + ret.push_back(MAKE_CLASS_INSTANCE_CTX(state, "Vector", { { "vector_ptr", vec->Element(i) } })); + + return EValue(state, ret); + } + case SVector2DCUtlVector: { + CUtlVector<Vector2D>* vec = schema::GetPropPtr<CUtlVector<Vector2D>>(ptr, className.c_str(), field.c_str()); + std::vector<EValue> ret; + for (int i = 0; i < vec->Count(); i++) + ret.push_back(MAKE_CLASS_INSTANCE_CTX(state, "Vector2D", { { "Vector2D_ptr", vec->Element(i) } })); + + return EValue(state, ret); + } + case SVector4DCUtlVector: { + CUtlVector<Vector4D>* vec = schema::GetPropPtr<CUtlVector<Vector4D>>(ptr, className.c_str(), field.c_str()); + std::vector<EValue> ret; + for (int i = 0; i < vec->Count(); i++) + ret.push_back(MAKE_CLASS_INSTANCE_CTX(state, "Vector4D", { { "Vector4D_ptr", vec->Element(i) } })); + + return EValue(state, ret); + } + case BoolCUtlVector: { + CUtlVector<bool>* vec = schema::GetPropPtr<CUtlVector<bool>>(ptr, className.c_str(), field.c_str()); + std::vector<bool> ret; + for (int i = 0; i < vec->Count(); i++) + ret.push_back(vec->Element(i)); + + return EValue(state, ret); + } + } + + return EValue(state, fieldName); +} + +void UpdateSDK(void* ptr, std::string className, std::string fieldName, EValue value, EContext* state) +{ + if (followServerGuidelines && g_sdk.IsFieldBlocked(fieldName)) + { + PRINTF("Getting or setting %s::%s is not permitted due to %s Server Guidelines violation.\nTo get or set this value, switch to false the \"core.Follow%sServerGuidelines\" field.\nNote: Using non-compliant field values can result in a GSLT ban.\nNote: We are not providing any kind of support for people which are using these fields.\n", className.c_str(), fieldName.c_str(), str_toupper(GetGameName()).c_str(), str_toupper(GetGameName()).c_str()); + return; + } + + uint64 path = ((uint64_t)hash_32_fnv1a_const(className.c_str()) << 32 | hash_32_fnv1a_const(fieldName.c_str())); + if (!g_sdk.ExistsField(path)) return; + + std::string field = g_sdk.GetFieldName(path); + + switch (g_sdk.GetFieldType(path)) + { + case Bool: + return schema::SetProp(ptr, className.c_str(), field.c_str(), value.cast<bool>()); + case Int8: + return schema::SetProp(ptr, className.c_str(), field.c_str(), value.cast<int8_t>()); + case Int16: + return schema::SetProp(ptr, className.c_str(), field.c_str(), value.cast<int16_t>()); + case Int32: + return schema::SetProp(ptr, className.c_str(), field.c_str(), value.cast<int32_t>()); + case Int64: + return schema::SetProp(ptr, className.c_str(), field.c_str(), value.cast<int64_t>()); + case UInt8: + return schema::SetProp(ptr, className.c_str(), field.c_str(), value.cast<uint8_t>()); + case UInt16: + return schema::SetProp(ptr, className.c_str(), field.c_str(), value.cast<uint16_t>()); + case UInt32: + return schema::SetProp(ptr, className.c_str(), field.c_str(), value.cast<uint32_t>()); + case UInt64: + return schema::SetProp(ptr, className.c_str(), field.c_str(), value.cast<uint64_t>()); + case Float: + return schema::SetProp(ptr, className.c_str(), field.c_str(), value.cast<float>()); + case Double: + return schema::SetProp(ptr, className.c_str(), field.c_str(), value.cast<double>()); + case StringToken: + return schema::SetProp(ptr, className.c_str(), field.c_str(), CUtlStringToken(value.cast<uint32_t>())); + case StringSymbolLarge: + return schema::SetProp(ptr, className.c_str(), field.c_str(), CUtlSymbolLarge(strdup(value.cast<std::string>().c_str()))); + case StringUtl: + return schema::SetProp(ptr, className.c_str(), field.c_str(), CUtlString(strdup(value.cast<std::string>().c_str()))); + case String: + return schema::WriteSchemaPtrValue(ptr, className.c_str(), field.c_str(), reinterpret_cast<byte*>(const_cast<char*>(value.cast<std::string>().c_str())), g_sdk.GetFieldSize(path)); + case EntityIndex: + return schema::SetProp(ptr, className.c_str(), field.c_str(), CEntityIndex(value.cast<int>())); + case SColor: + return schema::SetProp(ptr, className.c_str(), field.c_str(), value.cast<ClassData*>()->GetData<Color>("Color_ptr")); + case SQAngle: + return schema::SetProp(ptr, className.c_str(), field.c_str(), value.cast<ClassData*>()->GetData<QAngle>("QAngle_ptr")); + case SVector: + return schema::SetProp(ptr, className.c_str(), field.c_str(), value.cast<ClassData*>()->GetData<Vector>("vector_ptr")); + case SVector2D: + return schema::SetProp(ptr, className.c_str(), field.c_str(), value.cast<ClassData*>()->GetData<Vector2D>("Vector2D_ptr")); + case SVector4D: + return schema::SetProp(ptr, className.c_str(), field.c_str(), value.cast<ClassData*>()->GetData<Vector4D>("Vector4D_ptr")); + case RawListEntityIndex: { + auto val = schema::GetPropPtr<CEntityIndex>(ptr, className.c_str(), field.c_str()); + auto ret = value.cast<std::vector<int>>(); + for (uint32_t i = 0; i < g_sdk.GetFieldSize(path); i++) + val[i] = CEntityIndex(ret[i]); + + SetStateChanged((uintptr_t)ptr, className.c_str(), field.c_str(), 0); + return; + } + case StringSymbolLargeArray: { + auto val = schema::GetPropPtr<CUtlSymbolLarge>(ptr, className.c_str(), field.c_str()); + auto ret = value.cast<std::vector<std::string>>(); + for (uint32_t i = 0; i < g_sdk.GetFieldSize(path); i++) { + val[i] = CUtlSymbolLarge(ret[i].c_str()); + } + + SetStateChanged((uintptr_t)ptr, className.c_str(), field.c_str(), 0); + return; + } + case StringTokenArray: { + auto val = schema::GetPropPtr<CUtlStringToken>(ptr, className.c_str(), field.c_str()); + auto ret = value.cast<std::vector<uint32_t>>(); + for (uint32_t i = 0; i < g_sdk.GetFieldSize(path); i++) + val[i] = CUtlStringToken(ret[i]); + + SetStateChanged((uintptr_t)ptr, className.c_str(), field.c_str(), 0); + return; + } + case StringUtlArray: { + auto val = schema::GetPropPtr<CUtlString>(ptr, className.c_str(), field.c_str()); + auto ret = value.cast<std::vector<std::string>>(); + for (uint32_t i = 0; i < g_sdk.GetFieldSize(path); i++) + val[i] = CUtlString(ret[i].c_str()); + + SetStateChanged((uintptr_t)ptr, className.c_str(), field.c_str(), 0); + return; + } + case Int8Array: { + auto outValue = schema::GetPropPtr<int8_t>(ptr, className.c_str(), field.c_str()); + auto ret = value.cast<std::vector<int8_t>>(); + for (uint32_t i = 0; i < g_sdk.GetFieldSize(path); i++) + outValue[i] = ret[i]; + + SetStateChanged((uintptr_t)ptr, className.c_str(), field.c_str(), 0); + return; + } + case Int16Array: { + auto outValue = schema::GetPropPtr<int16_t>(ptr, className.c_str(), field.c_str()); + auto ret = value.cast<std::vector<int16_t>>(); + for (uint32_t i = 0; i < g_sdk.GetFieldSize(path); i++) + outValue[i] = ret[i]; + + SetStateChanged((uintptr_t)ptr, className.c_str(), field.c_str(), 0); + return; + } + case Int32Array: { + auto outValue = schema::GetPropPtr<int32_t>(ptr, className.c_str(), field.c_str()); + auto ret = value.cast<std::vector<int32_t>>(); + for (uint32_t i = 0; i < g_sdk.GetFieldSize(path); i++) + outValue[i] = ret[i]; + + SetStateChanged((uintptr_t)ptr, className.c_str(), field.c_str(), 0); + return; + } + case Int64Array: { + auto outValue = schema::GetPropPtr<int64_t>(ptr, className.c_str(), field.c_str()); + auto ret = value.cast<std::vector<int64_t>>(); + for (uint32_t i = 0; i < g_sdk.GetFieldSize(path); i++) + outValue[i] = ret[i]; + + SetStateChanged((uintptr_t)ptr, className.c_str(), field.c_str(), 0); + return; + } + case UInt8Array: { + auto outValue = schema::GetPropPtr<uint8_t>(ptr, className.c_str(), field.c_str()); + auto ret = value.cast<std::vector<uint8_t>>(); + for (uint32_t i = 0; i < g_sdk.GetFieldSize(path); i++) + outValue[i] = ret[i]; + + SetStateChanged((uintptr_t)ptr, className.c_str(), field.c_str(), 0); + return; + } + case UInt16Array: { + auto outValue = schema::GetPropPtr<uint16_t>(ptr, className.c_str(), field.c_str()); + auto ret = value.cast<std::vector<uint16_t>>(); + for (uint32_t i = 0; i < g_sdk.GetFieldSize(path); i++) + outValue[i] = ret[i]; + + SetStateChanged((uintptr_t)ptr, className.c_str(), field.c_str(), 0); + return; + } + case UInt32Array: { + auto outValue = schema::GetPropPtr<uint32_t>(ptr, className.c_str(), field.c_str()); + auto ret = value.cast<std::vector<uint32_t>>(); + for (uint32_t i = 0; i < g_sdk.GetFieldSize(path); i++) + outValue[i] = ret[i]; + + SetStateChanged((uintptr_t)ptr, className.c_str(), field.c_str(), 0); + return; + } + case UInt64Array: { + auto outValue = schema::GetPropPtr<uint64_t>(ptr, className.c_str(), field.c_str()); + auto ret = value.cast<std::vector<uint64_t>>(); + for (uint32_t i = 0; i < g_sdk.GetFieldSize(path); i++) + outValue[i] = ret[i]; + + SetStateChanged((uintptr_t)ptr, className.c_str(), field.c_str(), 0); + return; + } + case FloatArray: { + auto outValue = schema::GetPropPtr<float>(ptr, className.c_str(), field.c_str()); + auto ret = value.cast<std::vector<float>>(); + for (uint32_t i = 0; i < g_sdk.GetFieldSize(path); i++) + outValue[i] = ret[i]; + + SetStateChanged((uintptr_t)ptr, className.c_str(), field.c_str(), 0); + return; + } + case DoubleArray: { + auto outValue = schema::GetPropPtr<double>(ptr, className.c_str(), field.c_str()); + auto ret = value.cast<std::vector<double>>(); + for (uint32_t i = 0; i < g_sdk.GetFieldSize(path); i++) + outValue[i] = ret[i]; + + SetStateChanged((uintptr_t)ptr, className.c_str(), field.c_str(), 0); + return; + } + case SDKCHandle: { + if(!value.isInstance<ClassData*>()) return; + + auto outVal = schema::GetPropPtr<CHandle<CEntityInstance>>(ptr, className.c_str(), field.c_str()); + outVal->Set((CEntityInstance*)(value.cast<ClassData*>()->GetDataOr<void*>("class_ptr", nullptr))); + + SetStateChanged((uintptr_t)ptr, className.c_str(), field.c_str(), 0); + return; + } + case CHandleArray: { + auto outValue = schema::GetPropPtr<CHandle<CEntityInstance>>(ptr, className.c_str(), field.c_str()); + auto ret = value.cast<std::vector<EValue>>(); + for (uint32_t i = 0; i < g_sdk.GetFieldSize(path); i++) { + if(!ret[i].isInstance<ClassData*>()) continue; + outValue[i].Set((CEntityInstance*)(ret[i].cast<ClassData*>()->GetDataOr<void*>("class_ptr", nullptr))); + } + + SetStateChanged((uintptr_t)ptr, className.c_str(), field.c_str(), 0); + return; + } + case CHandleCUtlVector: { + auto ret = value.cast<std::vector<EValue>>(); + + auto m_key = sch::GetOffset(className.c_str(), field.c_str()); + + SetStateChanged((uintptr_t)ptr, className, field, 0); + + CUtlVector<CHandle<CEntityInstance>>* vec = reinterpret_cast<CUtlVector<CHandle<CEntityInstance>> *>((uintptr_t)(ptr)+m_key); + FOR_EACH_VEC(*vec, i) { + if(!ret[i].isInstance<ClassData*>()) continue; + vec->Element(i).Set((CEntityInstance*)(ret[i].cast<ClassData*>()->GetDataOr<void*>("class_ptr", nullptr))); + } + + SetStateChanged((uintptr_t)ptr, className, field, 0); + + return; + } + case BoolArray: { + auto outValue = schema::GetPropPtr<bool>(ptr, className.c_str(), field.c_str()); + auto ret = value.cast<std::vector<bool>>(); + for (uint32_t i = 0; i < g_sdk.GetFieldSize(path); i++) + outValue[i] = ret[i]; + + SetStateChanged((uintptr_t)ptr, className.c_str(), field.c_str(), 0); + return; + } + case SColorArray: { + auto outValue = schema::GetPropPtr<Color>(ptr, className.c_str(), field.c_str()); + auto ret = value.cast<std::vector<EValue>>(); + for (uint32_t i = 0; i < g_sdk.GetFieldSize(path); i++) { + if(!ret[i].isInstance<ClassData*>()) continue; + outValue[i] = ret[i].cast<ClassData*>()->GetDataOr<Color>("Color_ptr", outValue[i]); + } + + SetStateChanged((uintptr_t)ptr, className.c_str(), field.c_str(), 0); + return; + } + case SQAngleArray: { + auto outValue = schema::GetPropPtr<QAngle>(ptr, className.c_str(), field.c_str()); + auto ret = value.cast<std::vector<EValue>>(); + for (uint32_t i = 0; i < g_sdk.GetFieldSize(path); i++) { + if(!ret[i].isInstance<ClassData*>()) continue; + outValue[i] = ret[i].cast<ClassData*>()->GetDataOr<QAngle>("QAngle_ptr", outValue[i]); + } + + SetStateChanged((uintptr_t)ptr, className.c_str(), field.c_str(), 0); + return; + } + case SVectorArray: { + auto outValue = schema::GetPropPtr<Vector>(ptr, className.c_str(), field.c_str()); + auto ret = value.cast<std::vector<EValue>>(); + for (uint32_t i = 0; i < g_sdk.GetFieldSize(path); i++) { + if(!ret[i].isInstance<ClassData*>()) continue; + outValue[i] = ret[i].cast<ClassData*>()->GetDataOr<Vector>("vector_ptr", outValue[i]); + } + + SetStateChanged((uintptr_t)ptr, className.c_str(), field.c_str(), 0); + return; + } + case SVector2DArray: { + auto outValue = schema::GetPropPtr<Vector2D>(ptr, className.c_str(), field.c_str()); + auto ret = value.cast<std::vector<EValue>>(); + for (uint32_t i = 0; i < g_sdk.GetFieldSize(path); i++) { + if(!ret[i].isInstance<ClassData*>()) continue; + outValue[i] = ret[i].cast<ClassData*>()->GetDataOr<Vector2D>("Vector2D_ptr", outValue[i]); + } + + SetStateChanged((uintptr_t)ptr, className.c_str(), field.c_str(), 0); + return; + } + case SVector4DArray: { + auto outValue = schema::GetPropPtr<Vector4D>(ptr, className.c_str(), field.c_str()); + auto ret = value.cast<std::vector<EValue>>(); + for (uint32_t i = 0; i < g_sdk.GetFieldSize(path); i++) { + if(!ret[i].isInstance<ClassData*>()) continue; + outValue[i] = ret[i].cast<ClassData*>()->GetDataOr<Vector4D>("Vector4D_ptr", outValue[i]); + } + + SetStateChanged((uintptr_t)ptr, className.c_str(), field.c_str(), 0); + return; + } + case StringSymbolLargeCUtlVector: { + std::vector<CUtlSymbolLarge> newValues; + auto val = value.cast<std::vector<std::string>>(); + for (auto elem : val) + newValues.push_back(CUtlSymbolLarge(elem.c_str())); + + return schema::SetPropCUtlVector(ptr, className.c_str(), field.c_str(), newValues); + } + case StringTokenCUtlVector: { + std::vector<CUtlStringToken> newValues; + auto val = value.cast<std::vector<uint32_t>>(); + for (auto elem : val) + newValues.push_back(CUtlStringToken(elem)); + + return schema::SetPropCUtlVector(ptr, className.c_str(), field.c_str(), newValues); + } + case StringUtlCUtlVector: { + std::vector<CUtlString> newValues; + auto val = value.cast<std::vector<std::string>>(); + for (auto elem : val) + newValues.push_back(CUtlString(elem.c_str())); + + return schema::SetPropCUtlVector(ptr, className.c_str(), field.c_str(), newValues); + } + case Int8CUtlVector: + return schema::SetPropCUtlVector(ptr, className.c_str(), field.c_str(), value.cast<std::vector<int8_t>>()); + case Int16CUtlVector: + return schema::SetPropCUtlVector(ptr, className.c_str(), field.c_str(), value.cast<std::vector<int16_t>>()); + case Int32CUtlVector: + return schema::SetPropCUtlVector(ptr, className.c_str(), field.c_str(), value.cast<std::vector<int32_t>>()); + case Int64CUtlVector: + return schema::SetPropCUtlVector(ptr, className.c_str(), field.c_str(), value.cast<std::vector<int64_t>>()); + case UInt8CUtlVector: + return schema::SetPropCUtlVector(ptr, className.c_str(), field.c_str(), value.cast<std::vector<uint8_t>>()); + case UInt16CUtlVector: + return schema::SetPropCUtlVector(ptr, className.c_str(), field.c_str(), value.cast<std::vector<uint16_t>>()); + case UInt32CUtlVector: + return schema::SetPropCUtlVector(ptr, className.c_str(), field.c_str(), value.cast<std::vector<uint32_t>>()); + case UInt64CUtlVector: + return schema::SetPropCUtlVector(ptr, className.c_str(), field.c_str(), value.cast<std::vector<uint64_t>>()); + case FloatCUtlVector: + return schema::SetPropCUtlVector(ptr, className.c_str(), field.c_str(), value.cast<std::vector<float>>()); + case DoubleCUtlVector: + return schema::SetPropCUtlVector(ptr, className.c_str(), field.c_str(), value.cast<std::vector<double>>()); + case SColorCUtlVector: { + std::vector<Color> newValues; + auto val = value.cast<std::vector<EValue>>(); + for (auto elem : val) + newValues.push_back(elem.cast<ClassData*>()->GetData<Color>("Color_ptr")); + + return schema::SetPropCUtlVector(ptr, className.c_str(), field.c_str(), newValues); + } + case SQAngleCUtlVector: { + std::vector<QAngle> newValues; + auto val = value.cast<std::vector<EValue>>(); + for (auto elem : val) + newValues.push_back(elem.cast<ClassData*>()->GetData<QAngle>("QAngle_ptr")); + + return schema::SetPropCUtlVector(ptr, className.c_str(), field.c_str(), newValues); + } + case SVectorCUtlVector: { + std::vector<Vector> newValues; + auto val = value.cast<std::vector<EValue>>(); + for (auto elem : val) + newValues.push_back(elem.cast<ClassData*>()->GetData<Vector>("vector_ptr")); + + return schema::SetPropCUtlVector(ptr, className.c_str(), field.c_str(), newValues); + } + case SVector2DCUtlVector: { + std::vector<Vector2D> newValues; + auto val = value.cast<std::vector<EValue>>(); + for (auto elem : val) + newValues.push_back(elem.cast<ClassData*>()->GetData<Vector2D>("Vector2D_ptr")); + + return schema::SetPropCUtlVector(ptr, className.c_str(), field.c_str(), newValues); + } + case SVector4DCUtlVector: { + std::vector<Vector4D> newValues; + auto val = value.cast<std::vector<EValue>>(); + for (auto elem : val) + newValues.push_back(elem.cast<ClassData*>()->GetData<Vector4D>("Vector4D_ptr")); + + return schema::SetPropCUtlVector(ptr, className.c_str(), field.c_str(), newValues); + } + case BoolCUtlVector: + return schema::SetPropCUtlVector(ptr, className.c_str(), field.c_str(), value.cast<std::vector<bool>>()); + } +} \ No newline at end of file diff --git a/src/scripting/sdk/types.cpp b/src/scripting/sdk/types.cpp new file mode 100644 index 000000000..af6d8a9c8 --- /dev/null +++ b/src/scripting/sdk/types.cpp @@ -0,0 +1,47 @@ +#include <scripting/core.h> + +#include <sdk/access.h> + +void DummyGetSetType(FunctionContext* context, ClassData* data) {} + +LoadScriptingComponent(sdktypes, [](PluginObject plugin, EContext* ctx) -> void { + ADD_FUNCTION("IsTypeClass", [](FunctionContext* context) -> void { + auto types = g_sdk.GetSDKTypes(); + context->SetReturn(types.find(context->GetArgumentOr<std::string>(0, "")) != types.end()); + }); + + ADD_FUNCTION("GenerateTypeFactory", [](FunctionContext* context) -> void { + context->SetReturn(MAKE_CLASS_INSTANCE("SDKType", { { "class_name", context->GetArgument<std::string>(0) } })); + }); + + auto types = g_sdk.GetSDKTypes(); + + ADD_CLASS("SDKType"); + + for (auto it = types.begin(); it != types.end(); ++it) { + for (auto it2 = it->second.begin(); it2 != it->second.end(); ++it2) { + ADD_CLASS_MEMBER("SDKType", it2->first, DummyGetSetType, DummyGetSetType); + } + } + + ADD_CLASS_MEMBER_PRE("SDKType", ".*", [](FunctionContext* context, ClassData* data) -> void { + auto class_name = data->GetData<std::string>("class_name"); + std::string member_name = str_split(context->GetFunctionKey(), " ")[1]; + + auto types = g_sdk.GetSDKTypes(); + + if (types.find(class_name) == types.end()) { + context->StopExecution(); + return context->SetReturn(0); + } + if (types[class_name].find(member_name) == types[class_name].end()) { + context->StopExecution(); + return context->SetReturn(0); + } + + context->StopExecution(); + context->SetReturn(types[class_name][member_name]); + }, [](FunctionContext* context, ClassData* data) -> void { + context->StopExecution(); + }); +}) \ No newline at end of file diff --git a/src/scripting/server/commands.cpp b/src/scripting/server/commands.cpp new file mode 100644 index 000000000..790640b0b --- /dev/null +++ b/src/scripting/server/commands.cpp @@ -0,0 +1,77 @@ +#include <scripting/core.h> + +#include <server/commands/manager.h> + +LoadScriptingComponent(commands, [](PluginObject plugin, EContext* ctx) -> void { + ADD_CLASS("Commands"); + + ADD_CLASS_FUNCTION("Commands", "Commands", [](FunctionContext* context, ClassData* data) -> void {}); + + ADD_CLASS_FUNCTION("Commands", "Register", [](FunctionContext* context, ClassData* data) -> void { + std::string commandName = context->GetArgumentOr<std::string>(0, ""); + if(commandName == "") return; + + EValue func = context->GetArgument<EValue>(1); + if(!func.isFunction()) return; + + EValue* funcPtr = new EValue(func); + if (funcPtr->m_ref == func.m_ref && func.getContext()->GetKind() == ContextKinds::Lua) func.MarkNoFree(); + + Command* command = new Command(FetchPluginName(context->GetPluginContext()), funcPtr, commandName); + g_commandsManager.RegisterCommand(command->GetPluginName(), commandName, command); + }); + + ADD_CLASS_FUNCTION("Commands", "Unregister", [](FunctionContext* context, ClassData* data) -> void { + std::string commandName = context->GetArgumentOr<std::string>(0, ""); + if(commandName == "") return; + + g_commandsManager.UnregisterCommand(commandName); + }); + + ADD_CLASS_FUNCTION("Commands", "RegisterRawAlias", [](FunctionContext* context, ClassData* data) -> void { + std::string commandName = context->GetArgumentOr<std::string>(0, ""); + if(commandName == "") return; + + std::string aliasName = context->GetArgumentOr<std::string>(1, ""); + if(aliasName == "") return; + + Command* command = g_commandsManager.FetchCommand(commandName); + if (!command) return; + + g_commandsManager.RegisterCommand(command->GetPluginName(), aliasName, command, true); + }); + + ADD_CLASS_FUNCTION("Commands", "RegisterAlias", [](FunctionContext* context, ClassData* data) -> void { + std::string commandName = context->GetArgumentOr<std::string>(0, ""); + if(commandName == "") return; + + std::string aliasName = context->GetArgumentOr<std::string>(1, ""); + if(aliasName == "") return; + + Command* command = g_commandsManager.FetchCommand(commandName); + if (!command) return; + + g_commandsManager.RegisterCommand(command->GetPluginName(), aliasName, command); + }); + + ADD_CLASS_FUNCTION("Commands", "UnregisterAlias", [](FunctionContext* context, ClassData* data) -> void { + std::string commandName = context->GetArgumentOr<std::string>(0, ""); + if(commandName == "") return; + + g_commandsManager.UnregisterCommand(commandName); + }); + + ADD_CLASS_FUNCTION("Commands", "GetAllCommands", [](FunctionContext* context, ClassData* data) -> void { + std::vector<std::string> cmdsList; + + auto cmds = g_commandsManager.GetCommands(); + for (auto it = cmds.begin(); it != cmds.end(); ++it) + cmdsList.push_back(it->first); + + context->SetReturn(cmdsList); + }); + + ADD_CLASS_FUNCTION("Commands", "GetCommands", [](FunctionContext* context, ClassData* data) -> void { + context->SetReturn(g_commandsManager.FetchCommandsByPlugin(FetchPluginName(context->GetPluginContext()))); + }); +}) \ No newline at end of file diff --git a/src/scripting/server/configuration.cpp b/src/scripting/server/configuration.cpp new file mode 100644 index 000000000..2833c92ca --- /dev/null +++ b/src/scripting/server/configuration.cpp @@ -0,0 +1,140 @@ +#include <scripting/core.h> +#include <utils/common.h> +#include <utils/utils.h> + +#include <memory/encoders/json.h> +#include <filesystem/files/files.h> +#include <server/configuration/configuration.h> +#include <rapidjson/json.hpp> + +void WriteJSONFile(std::string path, rapidjson::Value& j); + +void ParseAndFillConfiguration(rapidjson::Value& initDoc, rapidjson::Value& config, rapidjson::MemoryPoolAllocator<rapidjson::CrtAllocator>& allocator, bool& wasEdited) +{ + for (auto it = initDoc.MemberBegin(); it != initDoc.MemberEnd(); ++it) + { + const char* key = it->name.GetString(); + if (!config.HasMember(key)) + { + config.AddMember(it->name, initDoc[key], allocator); + wasEdited = true; + } + else if (config[key].IsObject() && initDoc[key].IsObject()) + { + ParseAndFillConfiguration(initDoc[key], config[key], allocator, wasEdited); + } + } +} + +LoadScriptingComponent(configuration, [](PluginObject plugin, EContext* ctx) -> void { + ADD_CLASS("Configuration"); + + ADD_CLASS_FUNCTION("Configuration", "Configuration", [](FunctionContext* context, ClassData* data) -> void {}); + + ADD_CLASS_FUNCTION("Configuration", "Exists", [](FunctionContext* context, ClassData* data) -> void { + std::string key = context->GetArgumentOr<std::string>(0, ""); + if(key == "") return context->SetReturn(false); + + std::map<std::string, std::any> config = g_Config.FetchPluginConfiguration(); + context->SetReturn(config.find(key) != config.end()); + }); + + ADD_CLASS_FUNCTION("Configuration", "Reload", [](FunctionContext* context, ClassData* data) -> void { + std::string key = context->GetArgumentOr<std::string>(0, ""); + if(key == "") return; + + g_Config.LoadPluginConfig(key); + }); + + ADD_CLASS_FUNCTION("Configuration", "FetchArraySize", [](FunctionContext* context, ClassData* data) -> void { + std::string key = context->GetArgumentOr<std::string>(0, ""); + if(key == "") return context->SetReturn(0); + + std::map<std::string, unsigned int> arraySizes = g_Config.FetchConfigArraySizes(); + + if (arraySizes.find(key) == arraySizes.end()) return context->SetReturn(0); + + context->SetReturn(arraySizes[key]); + }); + + ADD_CLASS_FUNCTION("Configuration", "Fetch", [](FunctionContext* context, ClassData* data) -> void { + std::string key = context->GetArgumentOr<std::string>(0, ""); + if(key == "") return context->SetReturn(nullptr); + + std::map<std::string, std::any> config = g_Config.FetchPluginConfiguration(); + context->SetReturn(config[key]); + }); + + ADD_CLASS_FUNCTION("Configuration", "Create", [](FunctionContext* context, ClassData* data) -> void { + std::string configurationKey = context->GetArgumentOr<std::string>(0, ""); + if(configurationKey == "") return; + + EValue table = context->GetArgument<EValue>(1); + EContext* L = context->GetPluginContext(); + if (!table.isTable()) return; + + rapidjson::Document doc(rapidjson::kObjectType); + + std::string jsonResult = ""; + if(L->GetKind() == ContextKinds::Lua) { + EValue rapidJsonTable = EValue::getGlobal(L, "json"); + if (!rapidJsonTable["encode"].isFunction()) + return; + + EValue encodedResult(L); + try + { + encodedResult = rapidJsonTable["encode"](table); + } + catch (EException& e) + { + PLUGIN_PRINTF("Configuration - Create", "An error has occured: %s\n", e.what()); + return; + } + + if (encodedResult.isNull()) + return; + + jsonResult = encodedResult.cast<std::string>(); + } else if(L->GetKind() == ContextKinds::JavaScript) { + jsonResult = EValue(L, JS_JSONStringify(L->GetJSState(), table.pushJS(), JS_NULL, JS_NULL)).cast<std::string>(); + } + + doc.Parse(jsonResult.c_str()); + if (Files::ExistsPath("addons/swiftly/configs/plugins/" + configurationKey + ".json")) + { + std::string key = replace(configurationKey, "/", "."); + key = replace(configurationKey, "\\", "."); + + if (g_Config.HasKey(key)) + { + rapidjson::Document configFile = encoders::json::FromString("addons/swiftly/configs/plugins/" + configurationKey + ".json", "addons/swiftly/configs/plugins/" + configurationKey + ".json"); + if (configFile.HasParseError()) return; + + bool wasEdited = false; + + ParseAndFillConfiguration(doc, configFile, configFile.GetAllocator(), wasEdited); + + if (wasEdited) + { + WriteJSONFile("addons/swiftly/configs/plugins/" + configurationKey + ".json", configFile); + g_Config.LoadPluginConfig(configurationKey); + } + } + else + g_Config.LoadPluginConfig(configurationKey); + } + else + { + rapidjson::StringBuffer buffer; + rapidjson::PrettyWriter<rapidjson::StringBuffer> writer(buffer); + + doc.Accept(writer); + std::string content = buffer.GetString(); + + Files::Write("addons/swiftly/configs/plugins/" + configurationKey + ".json", content, false); + g_Config.LoadPluginConfig(configurationKey); + } + }); + +}) \ No newline at end of file diff --git a/src/scripting/server/menus.cpp b/src/scripting/server/menus.cpp new file mode 100644 index 000000000..4163644e4 --- /dev/null +++ b/src/scripting/server/menus.cpp @@ -0,0 +1,36 @@ +#include <scripting/core.h> + +#include <server/configuration/configuration.h> +#include <server/menus/MenuManager.h> + +LoadScriptingComponent(menus, [](PluginObject plugin, EContext* ctx) -> void { + ADD_CLASS("Menus"); + + ADD_CLASS_FUNCTION("Menus", "Menus", [](FunctionContext* context, ClassData* data) -> void {}); + + ADD_CLASS_FUNCTION("Menus", "Register", [](FunctionContext* context, ClassData* data) -> void { + std::string menuid = context->GetArgumentOr<std::string>(0, ""); + std::string title = context->GetArgumentOr<std::string>(1, ""); + std::string color = context->GetArgumentOr<std::string>(2, ""); + std::vector<std::pair<std::string, std::string>> options = context->GetArgumentOr<std::vector<std::pair<std::string, std::string>>>(3, std::vector<std::pair<std::string, std::string>>{}); + std::string menuKind = context->GetArgumentOr<std::string>(4, g_Config.FetchValue<std::string>("core.menu.kind")); + + g_MenuManager.RegisterMenu(FetchPluginName(context->GetPluginContext()), menuid, title, color, options, false, menuKind); + }); + + ADD_CLASS_FUNCTION("Menus", "RegisterTemporary", [](FunctionContext* context, ClassData* data) -> void { + std::string menuid = context->GetArgumentOr<std::string>(0, ""); + std::string title = context->GetArgumentOr<std::string>(1, ""); + std::string color = context->GetArgumentOr<std::string>(2, ""); + std::vector<std::pair<std::string, std::string>> options = context->GetArgumentOr<std::vector<std::pair<std::string, std::string>>>(3, std::vector<std::pair<std::string, std::string>>{}); + std::string menuKind = context->GetArgumentOr<std::string>(4, g_Config.FetchValue<std::string>("core.menu.kind")); + + g_MenuManager.RegisterMenu(FetchPluginName(context->GetPluginContext()), menuid, title, color, options, true, menuKind); + }); + + ADD_CLASS_FUNCTION("Menus", "Unregister", [](FunctionContext* context, ClassData* data) -> void { + std::string menuid = context->GetArgumentOr<std::string>(0, ""); + + g_MenuManager.UnregisterMenu(menuid); + }); +}) \ No newline at end of file diff --git a/src/scripting/server/translations.cpp b/src/scripting/server/translations.cpp new file mode 100644 index 000000000..0903a23a3 --- /dev/null +++ b/src/scripting/server/translations.cpp @@ -0,0 +1,9 @@ +#include <scripting/core.h> + +#include <server/translations/translations.h> + +LoadScriptingComponent(translations, [](PluginObject plugin, EContext* ctx) -> void { + ADD_FUNCTION("FetchTranslation", [](FunctionContext* context) -> void { + context->SetReturn(g_translations.FetchTranslation(context->GetArgumentOr<std::string>(0, ""), context->GetArgumentOr<int>(1, -1))); + }); +}) \ No newline at end of file diff --git a/src/scripting/server/utils.cpp b/src/scripting/server/utils.cpp new file mode 100644 index 000000000..e5e5b555d --- /dev/null +++ b/src/scripting/server/utils.cpp @@ -0,0 +1,148 @@ +#include <scripting/core.h> + +#include <sstream> + +#include <core/entrypoint.h> +#include <tools/crashreporter/callstack.h> +#include <plugins/manager.h> +#include <entities/system.h> + +#include <utils/utils.h> +#include <utils/common.h> +#include <texttable/TextTable.h> +#include <sdk/schema.h> + +LoadScriptingComponent(utils, [](PluginObject plugin, EContext* ctx) -> void { + ADD_FUNCTION("AddTimeout", [](FunctionContext* context) -> void { + int64_t delay = context->GetArgumentOr<int64_t>(0, 0); + EValue callback = context->GetArgument<EValue>(1); + + if (!callback.isFunction()) return; + EValue* cb = new EValue(callback); + EContext* ctx = context->GetPluginContext(); + + g_Plugin.RegisterTimeout(delay, [cb, ctx]() -> void { + auto pl = FetchPluginByState(ctx); + if (pl == nullptr) return; + if (cb->getContext() != pl->GetContext()) { + cb->MarkNoFree(); + delete cb; + return; + } + + if (!cb->isFunction()) { + delete cb; + return; + } + + try { + cb->operator()(); + } + catch (EException& e) + { + PLUGIN_PRINTF("RegisterTimeout", "An error has occured while trying to execute the timeout callback: %s\n", e.what()); + } + delete cb; + }); + }); + + ADD_FUNCTION("GetPluginPath", [](FunctionContext* context) -> void { + std::string plugin_name = context->GetArgumentOr<std::string>(0, ""); + auto plugin = g_pluginManager.FetchPlugin(plugin_name); + if (!plugin) return context->SetReturn(""); + + context->SetReturn(string_format("%s/%s", g_pluginManager.GetPluginBasePath(plugin_name).c_str(), plugin->GetName().c_str())); + }); + + ADD_FUNCTION("GetTime", [](FunctionContext* context) -> void { + context->SetReturn(GetTime()); + }); + + ADD_FUNCTION("IsWindows", [](FunctionContext* context) -> void { + context->SetReturn(WIN_LINUX(true, false)); + }); + + ADD_FUNCTION("IsLinux", [](FunctionContext* context) -> void { + context->SetReturn(WIN_LINUX(false, true)); + }); + + ADD_FUNCTION("GetOS", [](FunctionContext* context) -> void { + context->SetReturn(WIN_LINUX("Windows", "Linux")); + }); + + ADD_FUNCTION("StateUpdate", [](FunctionContext* context) -> void { + void* entityPtr = nullptr; + auto classData = context->GetArgumentOr<ClassData*>(0, nullptr); + if (classData) { + if (classData->HasData("class_name")) { + entityPtr = classData->GetData<void*>("class_ptr"); + } + else if (classData->HasData("ptr")) { + entityPtr = classData->GetData<void*>("ptr"); + } + } + else { + auto strptr = context->GetArgumentOr<std::string>(0, ""); + if (starts_with(strptr, "0x")) { + entityPtr = (void*)StringToPtr(strptr); + } + else entityPtr = (void*)nullptr; + } + + std::string className = context->GetArgumentOr<std::string>(1, ""); + std::string fieldName = context->GetArgumentOr<std::string>(2, ""); + + SetStateChanged((uintptr_t)entityPtr, className, fieldName, 0); + }); + + ADD_FUNCTION("GetUserMessage", [](FunctionContext* context) -> void { + auto classData = context->GetArgumentOr<ClassData*>(0, nullptr); + context->SetReturn(classData); + }); + + ADD_FUNCTION("GetPluginState", [](FunctionContext* context) -> void { + std::string plugin_name = context->GetArgumentOr<std::string>(0, ""); + if (!g_pluginManager.PluginExists(plugin_name)) return context->SetReturn((int)PluginState_t::Stopped); + auto plugin = g_pluginManager.FetchPlugin(plugin_name); + if (!plugin) return context->SetReturn((int)PluginState_t::Stopped); + + context->SetReturn((int)plugin->GetPluginState()); + }); + + ADD_FUNCTION("GetCCSGameRules", [](FunctionContext* context) -> void { + context->SetReturn(MakeSDKClassInstance("CCSGameRules", gameRules, context->GetPluginContext())); + }); + + ADD_FUNCTION("CreateTextTable", [](FunctionContext* context) -> void { + std::vector<std::vector<std::string>> data = context->GetArgumentOr<std::vector<std::vector<std::string>>>(0, {}); + TextTable tbl('-', '|', '+'); + + for (auto vec : data) { + for (std::string str : vec) { + tbl.add(" " + str + " "); + } + + tbl.endOfRow(); + } + + std::stringstream outputTable; + outputTable << tbl; + context->SetReturn(outputTable.str()); + }); + + ADD_FUNCTION("RegisterCallstack", [](FunctionContext* context) -> void { + std::string plugin_name = context->GetArgumentOr<std::string>(0, ""); + std::string stackmsg = context->GetArgumentOr<std::string>(1, ""); + + if (plugin_name == "" || stackmsg == "") return context->SetReturn(0); + context->SetReturn(g_callStack.RegisterPluginCallstack(plugin_name, stackmsg)); + }); + + ADD_FUNCTION("UnregisterCallstack", [](FunctionContext* context) -> void { + std::string plugin_name = context->GetArgumentOr<std::string>(0, ""); + uint64_t stackid = context->GetArgumentOr<uint64_t>(1, 0); + if (stackid == 0) return; + + g_callStack.UnregisterPluginCallstack(plugin_name, stackid); + }); +}) \ No newline at end of file diff --git a/src/scripting/stack.cpp b/src/scripting/stack.cpp new file mode 100644 index 000000000..54b53dec4 --- /dev/null +++ b/src/scripting/stack.cpp @@ -0,0 +1,209 @@ +#include "core.h" +#include "stack.h" + +#include <utils/common.h> +#include <utils/utils.h> + +std::vector<EValue> emptyTable; + +EValue SerializeData(std::any data, EContext* state) +{ + std::any value = data; + + if (!value.has_value()) + return EValue(state, nullptr); + + try + { + if (value.type() == typeid(const char*)) { + auto val = std::any_cast<const char*>(value); + if (val == nullptr) return EValue(state, std::string("")); + return EValue(state, std::string(val)); + } + else if (value.type() == typeid(char*)) { + auto val = std::any_cast<char*>(value); + if (val == nullptr) return EValue(state, std::string("")); + return EValue(state, std::string(val)); + } + else if (value.type() == typeid(std::string)) { + std::string val = std::any_cast<std::string>(value); + if (starts_with(val, "JSON⇚") && ends_with(val, "⇛")) { + std::string json = explode(explode(val, "⇚")[1], "⇛")[0]; + + if (state->GetKind() == ContextKinds::Lua) { + EValue rapidJsonTable = EValue::getGlobal(state, "json"); + if (!rapidJsonTable["decode"].isFunction()) + return EValue(state, emptyTable); + + EValue decodedResult(state); + try + { + decodedResult = rapidJsonTable["decode"](json); + } + catch (EException& e) + { + PLUGIN_PRINTF("SerializeData", "An error has occured: %s\n", e.what()); + return EValue(state, emptyTable); + } + + if (decodedResult.isNull()) + return EValue(state, emptyTable); + + return decodedResult; + } + else if (state->GetKind() == ContextKinds::JavaScript) { + return EValue(state, JS_ParseJSON((JSContext*)state->GetState(), json.c_str(), json.length(), "SerializeData")); + } + else return EValue(state, nullptr); + } + else return EValue(state, val); + } + else if (value.type() == typeid(uint64_t)) + return EValue(state, std::any_cast<uint64_t>(value)); + else if (value.type() == typeid(uint32_t)) + return EValue(state, std::any_cast<uint32_t>(value)); + else if (value.type() == typeid(uint16_t)) + return EValue(state, std::any_cast<uint16_t>(value)); + else if (value.type() == typeid(uint8_t)) + return EValue(state, std::any_cast<uint8_t>(value)); + else if (value.type() == typeid(int64_t)) + return EValue(state, std::any_cast<int64_t>(value)); + else if (value.type() == typeid(int32_t)) + return EValue(state, std::any_cast<int32_t>(value)); + else if (value.type() == typeid(int16_t)) + return EValue(state, std::any_cast<int16_t>(value)); + else if (value.type() == typeid(int8_t)) + return EValue(state, std::any_cast<int8_t>(value)); + else if (value.type() == typeid(bool)) + return EValue(state, std::any_cast<bool>(value)); + else if (value.type() == typeid(float)) + return EValue(state, std::any_cast<float>(value)); + else if (value.type() == typeid(double)) + return EValue(state, std::any_cast<double>(value)); + else if (value.type() == typeid(std::nullptr_t)) + return EValue(state, nullptr); + else if (value.type() == typeid(EValue)) + return std::any_cast<EValue>(value); + else if (value.type() == typeid(Vector)) + return EValue(state, std::any_cast<Vector>(value)); + else if (value.type() == typeid(Vector2D)) + return EValue(state, std::any_cast<Vector2D>(value)); + else if (value.type() == typeid(Vector4D)) + return EValue(state, std::any_cast<Vector4D>(value)); + else if (value.type() == typeid(Color)) + return EValue(state, std::any_cast<Color>(value)); + else if (value.type() == typeid(QAngle)) + return EValue(state, std::any_cast<QAngle>(value)); + else if (value.type() == typeid(ClassData*)) { + ClassData* data = std::any_cast<ClassData*>(value); + EValue val(state, data); + if (data->HasData("should_mark_freeable")) MarkDeleteOnGC(data); + return val; + } + else if (value.type() == typeid(std::vector<std::string>)) + { + if (state->GetKind() == ContextKinds::Lua) { + std::vector<std::string> tmpval = std::any_cast<std::vector<std::string>>(value); + std::string tbl = tmpval[0]; + + EValue load = EValue::getGlobal(state, "load"); + try + { + EValue loadReturnValue = load(tbl); + if (!loadReturnValue.isFunction()) + return EValue(state, emptyTable); + + EValue loadFuncRetVal = loadReturnValue(); + if (!loadFuncRetVal.isTable()) + return EValue(state, emptyTable); + + return loadFuncRetVal; + } + catch (EException& e) + { + PRINTF("Exception: %s\n", e.what()); + return EValue(state, emptyTable); + } + } + else { + PRINT("Cannot convert Lua table to JS object.\n"); + return EValue(state); + } + } + else if (value.type() == typeid(std::vector<std::any>)) + { + return EValue(state, std::any_cast<std::vector<std::any>>(value)); + } + else + { + PRINTF("Unknown Data Type: %s\n", value.type().name()); + return EValue(state, nullptr); + } + } + catch (std::bad_any_cast& err) + { + PRINTF("Invalid casting: %s\n", err.what()); + return EValue(state, nullptr); + } + + return EValue(state, nullptr); +} + +std::any DeserializeSerpent(EValue ref, EContext* state) +{ + EValue serpentDump = EValue::getGlobal(state, "serpent")["dump"]; + EValue serpentDumpReturnValue = serpentDump(ref); + + std::vector<std::string> tmptbl; + tmptbl.push_back(serpentDumpReturnValue.cast<std::string>()); + + return tmptbl; +} + +std::any DeserializeData(EValue ref, EContext* state) +{ + if (ref.isBool()) + return ref.cast<bool>(); + else if (ref.isNull()) + return nullptr; + else if (ref.isNumber()) + return ref.cast<int64_t>(); + else if (ref.isString()) + return ref.cast<std::string>(); + else if (ref.isInstance<ClassData*>()) + return ref.cast<ClassData*>(); + else if (ref.isTable()) + { + if (state->GetKind() == ContextKinds::Lua) { + EValue rapidJsonTable = EValue::getGlobal(state, "json"); + if (!rapidJsonTable["encode"].isFunction()) + return DeserializeSerpent(ref, state); + + EValue encodedResult(state); + try + { + encodedResult = rapidJsonTable["encode"](ref); + } + catch (EException& e) + { + return DeserializeSerpent(ref, state); + } + + if (encodedResult.isNull()) + return DeserializeSerpent(ref, state); + + return string_format("JSON⇚%s⇛", encodedResult.cast<std::string>().c_str()); + } + else if (state->GetKind() == ContextKinds::JavaScript) { + auto retval = JS_JSONStringify(state->GetJSState(), ref.pushJS(), JS_NULL, JS_NULL); + if (JS_IsException(retval)) { + return std::vector<std::string>{}; + } + + return string_format("JSON⇚%s⇛", EValue(state, retval).cast<std::string>().c_str()); + } + else return nullptr; + } + else + return nullptr; +} \ No newline at end of file diff --git a/src/scripting/stack.h b/src/scripting/stack.h new file mode 100644 index 000000000..b4f59fc7d --- /dev/null +++ b/src/scripting/stack.h @@ -0,0 +1,215 @@ +#pragma once + +#include <any> +#include <embedder/src/Embedder.h> +#include <core/entrypoint.h> + +std::any DeserializeData(EValue ref, EContext* state); +EValue SerializeData(std::any data, EContext* state); + +template<class T> +struct Stack; + +template<> +struct Stack<std::any> +{ + static void pushLua(EContext* ctx, std::any value) + { + SerializeData(value, ctx).pushLua(); + } + + static JSValue pushJS(EContext* ctx, std::any value) + { + return JS_DupValue(ctx->GetJSState(), SerializeData(value, ctx).pushJS()); + } + + static std::any getLua(EContext* ctx, int ref) + { + return DeserializeData(EValue(ctx, ref, false), ctx); + } + + static std::any getJS(EContext* ctx, JSValue value) + { + return DeserializeData(EValue(ctx, value), ctx); + } + + static bool isLuaInstance(EContext* ctx, int ref) + { + return true; + } + + static bool isJSInstance(EContext* ctx, JSValue value) + { + return true; + } +}; + +template<> +struct Stack<Vector> +{ + static void pushLua(EContext* ctx, Vector value) + { + MAKE_CLASS_INSTANCE_CTX(ctx, "Vector", { { "vector_ptr", value } }).pushLua(); + } + + static JSValue pushJS(EContext* ctx, Vector value) + { + return JS_DupValue(ctx->GetJSState(), MAKE_CLASS_INSTANCE_CTX(ctx, "Vector", { { "vector_ptr", value } }).pushJS()); + } + + static Vector getLua(EContext* ctx, int ref) + { + return EValue(ctx, ref, false).cast<ClassData*>()->GetData<Vector>("vector_ptr"); + } + + static Vector getJS(EContext* ctx, JSValue value) + { + return EValue(ctx, value).cast<ClassData*>()->GetData<Vector>("vector_ptr"); + } + + static bool isLuaInstance(EContext* ctx, int ref) + { + return EValue(ctx, ref, false).cast<ClassData*>()->HasData("vector_ptr"); + } + + static bool isJSInstance(EContext* ctx, JSValue value) + { + return EValue(ctx, value).cast<ClassData*>()->HasData("vector_ptr"); + } +}; + +template<> +struct Stack<Vector2D> +{ + static void pushLua(EContext* ctx, Vector2D value) + { + MAKE_CLASS_INSTANCE_CTX(ctx, "Vector2D", { { "Vector2D_ptr", value } }).pushLua(); + } + + static JSValue pushJS(EContext* ctx, Vector2D value) + { + return JS_DupValue(ctx->GetJSState(), MAKE_CLASS_INSTANCE_CTX(ctx, "Vector2D", { { "Vector2D_ptr", value } }).pushJS()); + } + + static Vector2D getLua(EContext* ctx, int ref) + { + return EValue(ctx, ref, false).cast<ClassData*>()->GetData<Vector2D>("Vector2D_ptr"); + } + + static Vector2D getJS(EContext* ctx, JSValue value) + { + return EValue(ctx, value).cast<ClassData*>()->GetData<Vector2D>("Vector2D_ptr"); + } + + static bool isLuaInstance(EContext* ctx, int ref) + { + return EValue(ctx, ref, false).cast<ClassData*>()->HasData("Vector2D_ptr"); + } + + static bool isJSInstance(EContext* ctx, JSValue value) + { + return EValue(ctx, value).cast<ClassData*>()->HasData("Vector2D_ptr"); + } +}; + +template<> +struct Stack<Vector4D> +{ + static void pushLua(EContext* ctx, Vector4D value) + { + MAKE_CLASS_INSTANCE_CTX(ctx, "Vector4D", { { "Vector4D_ptr", value } }).pushLua(); + } + + static JSValue pushJS(EContext* ctx, Vector4D value) + { + return JS_DupValue(ctx->GetJSState(), MAKE_CLASS_INSTANCE_CTX(ctx, "Vector4D", { { "Vector4D_ptr", value } }).pushJS()); + } + + static Vector4D getLua(EContext* ctx, int ref) + { + return EValue(ctx, ref, false).cast<ClassData*>()->GetData<Vector4D>("Vector4D_ptr"); + } + + static Vector4D getJS(EContext* ctx, JSValue value) + { + return EValue(ctx, value).cast<ClassData*>()->GetData<Vector4D>("Vector4D_ptr"); + } + + static bool isLuaInstance(EContext* ctx, int ref) + { + return EValue(ctx, ref, false).cast<ClassData*>()->HasData("Vector4D_ptr"); + } + + static bool isJSInstance(EContext* ctx, JSValue value) + { + return EValue(ctx, value).cast<ClassData*>()->HasData("Vector4D_ptr"); + } +}; + +template<> +struct Stack<Color> +{ + static void pushLua(EContext* ctx, Color value) + { + MAKE_CLASS_INSTANCE_CTX(ctx, "Color", { { "Color_ptr", value } }).pushLua(); + } + + static JSValue pushJS(EContext* ctx, Color value) + { + return JS_DupValue(ctx->GetJSState(), MAKE_CLASS_INSTANCE_CTX(ctx, "Color", { { "Color_ptr", value } }).pushJS()); + } + + static Color getLua(EContext* ctx, int ref) + { + return EValue(ctx, ref, false).cast<ClassData*>()->GetData<Color>("Color_ptr"); + } + + static Color getJS(EContext* ctx, JSValue value) + { + return EValue(ctx, value).cast<ClassData*>()->GetData<Color>("Color_ptr"); + } + + static bool isLuaInstance(EContext* ctx, int ref) + { + return EValue(ctx, ref, false).cast<ClassData*>()->HasData("Color_ptr"); + } + + static bool isJSInstance(EContext* ctx, JSValue value) + { + return EValue(ctx, value).cast<ClassData*>()->HasData("Color_ptr"); + } +}; + +template<> +struct Stack<QAngle> +{ + static void pushLua(EContext* ctx, QAngle value) + { + MAKE_CLASS_INSTANCE_CTX(ctx, "QAngle", { { "QAngle_ptr", value } }).pushLua(); + } + + static JSValue pushJS(EContext* ctx, QAngle value) + { + return JS_DupValue(ctx->GetJSState(), MAKE_CLASS_INSTANCE_CTX(ctx, "QAngle", { { "QAngle_ptr", value } }).pushJS()); + } + + static QAngle getLua(EContext* ctx, int ref) + { + return EValue(ctx, ref, false).cast<ClassData*>()->GetData<QAngle>("QAngle_ptr"); + } + + static QAngle getJS(EContext* ctx, JSValue value) + { + return EValue(ctx, value).cast<ClassData*>()->GetData<QAngle>("QAngle_ptr"); + } + + static bool isLuaInstance(EContext* ctx, int ref) + { + return EValue(ctx, ref, false).cast<ClassData*>()->HasData("QAngle_ptr"); + } + + static bool isJSInstance(EContext* ctx, JSValue value) + { + return EValue(ctx, value).cast<ClassData*>()->HasData("QAngle_ptr"); + } +}; diff --git a/src/sdk/access.cpp b/src/sdk/access.cpp new file mode 100644 index 000000000..74e4af83f --- /dev/null +++ b/src/sdk/access.cpp @@ -0,0 +1,144 @@ +#include "access.h" +#include "game.h" + +#include <filesystem/files/files.h> +#include <memory/encoders/json.h> +#include "schema.h" + +#include <rapidjson/json.hpp> + +#include <swiftly-ext/core.h> + +extern std::set<uint32_t> structCache; +void PopulateClassData(const char* className, uint32_t classOffset); + +void SDKAccess::LoadSDKData() +{ + std::string game_name = GetGameName(); + if (game_name == "unknown") { + PRINT("Unknown game detected, not loading any SDK data.\n"); + return; + } + + std::string gamedata_path = string_format("addons/swiftly/gamedata/%s/", game_name.c_str()); + auto j = encoders::json::FromString(Files::Read(gamedata_path + "sdk.json"), gamedata_path + "sdk.json"); + if (!j.IsObject()) return; + + for (auto it = j.MemberBegin(); it != j.MemberEnd(); ++it) + { + std::string className = it->name.GetString(); + uint32_t classOffset = hash_32_fnv1a_const(className.c_str()); + PopulateClassData(className.c_str(), classOffset); + classes.insert(className); + + if (it->value.IsObject()) { + for (auto it2 = it->value.MemberBegin(); it2 != it->value.MemberEnd(); ++it2) + { + std::string fieldName = it2->name.GetString(); + + if (it2->value.IsObject()) { + if (!it2->value.HasMember("field") || !it2->value.HasMember("type")) continue; + if (!it2->value["field"].IsString() || !it2->value["type"].IsUint()) continue; + + uint64_t key = ((uint64_t)hash_32_fnv1a_const(className.c_str()) << 32 | hash_32_fnv1a_const(fieldName.c_str())); + + processedFieldNames.insert(fieldName); + fieldNames.insert({ key, it2->value["field"].GetString() }); + fieldTypes.insert({ key, (SDKFieldType_t)(it2->value["type"].GetUint()) }); + if (it2->value.HasMember("size") && it2->value["size"].IsUint()) fieldSizes.insert({ key, it2->value["size"].GetUint() }); + if (it2->value.HasMember("classname") && it2->value["classname"].IsString()) fieldClass.insert({ key, it2->value["classname"].GetString() }); + } + } + } + } + + PRINTF("Succesfully loaded %lld SDK fields and %lld classes.\n", fieldNames.size(), classes.size()); + + j = encoders::json::FromString(Files::Read(gamedata_path + "sdk_types.json"), gamedata_path + "sdk_types.json"); + if (!j.IsObject()) return; + + for (auto it = j.MemberBegin(); it != j.MemberEnd(); ++it) + { + std::string typeName = it->name.GetString(); + if (sdktypes.find(typeName) == sdktypes.end()) sdktypes.insert({ typeName, {} }); + + if (it->value.IsObject()) { + for (auto it2 = it->value.MemberBegin(); it2 != it->value.MemberEnd(); ++it2) + { + std::string fieldName = it2->name.GetString(); + int64_t value = it2->value.GetInt64(); + sdktypes[typeName].insert({ fieldName, value }); + } + } + } + + PRINTF("Succesfully loaded %lld SDK types.\n", sdktypes.size()); + + j = encoders::json::FromString(Files::Read(gamedata_path + "blocked_fields_by_guidelines.json"), gamedata_path + "blocked_fields_by_guidelines.json"); + if (!j.IsArray()) return; + + for (auto it = j.Begin(); it != j.End(); ++it) + { + if (!it->IsString()) continue; + std::string fieldName = it->GetString(); + blockedFields.insert(fieldName); + } + + PRINTF("Succesfully loaded %lld blocked SDK types.\n", blockedFields.size()); +} + +std::set<std::string> SDKAccess::GetClasses() +{ + return classes; +} + +std::map<std::string, std::map<std::string, int64_t>> SDKAccess::GetSDKTypes() +{ + return sdktypes; +} + +std::string SDKAccess::GetFieldName(uint64_t path) +{ + return fieldNames[path]; +} + +SDKFieldType_t SDKAccess::GetFieldType(uint64_t path) +{ + return fieldTypes[path]; +} + +std::string SDKAccess::GetFieldClass(uint64_t path) +{ + return fieldClass[path]; +} + +uint32_t SDKAccess::GetFieldSize(uint64_t path) +{ + return fieldSizes[path]; +} + +bool SDKAccess::ExistsField(uint64_t path) +{ + return (fieldNames.find(path) != fieldNames.end()); +} + +std::set<std::string> SDKAccess::GetProcessedFieldNames() +{ + return processedFieldNames; +} + +bool SDKAccess::IsFieldBlocked(std::string field) +{ + return blockedFields.find(field) != blockedFields.end(); +} + +EXT_API void* swiftly_GetSDKPtr(void* ptr, const char* className, const char* fieldName) +{ + auto m_key = sch::GetOffset(className, fieldName); + return (void*)((uintptr_t)ptr + m_key); +} + +EXT_API void swiftly_SetStateChanged(void* ptr, const char* className, const char* fieldName, int extraOffset) +{ + SetStateChanged((uintptr_t)ptr, className, fieldName, extraOffset); +} \ No newline at end of file diff --git a/src/sdk/access.h b/src/sdk/access.h new file mode 100644 index 000000000..fa48564fa --- /dev/null +++ b/src/sdk/access.h @@ -0,0 +1,110 @@ +#ifndef _sdk_access_h +#define _sdk_access_h + +#include <map> +#include <vector> +#include <string> +#include <set> + +enum SDKFieldType_t : uint32_t +{ + Int8 = 0, + Int16, + Int32, + Int64, + UInt8, + UInt16, + UInt32, + UInt64, + Float, + Double, + Bool, + Parent, + StringToken, + StringSymbolLarge, + StringUtl, + String, + Class, + SDKCHandle, + EntityIndex, + SColor, + SQAngle, + SVector, + SVector2D, + SVector4D, + ClassPointer, + RawListEntityIndex, + + StringSymbolLargeArray, + StringTokenArray, + StringUtlArray, + Int8Array, + Int16Array, + Int32Array, + Int64Array, + UInt8Array, + UInt16Array, + UInt32Array, + UInt64Array, + FloatArray, + DoubleArray, + BoolArray, + SColorArray, + SQAngleArray, + SVectorArray, + SVector2DArray, + SVector4DArray, + ClassArray, + CHandleArray, + + CHandleCUtlVector, + StringSymbolLargeCUtlVector, + StringTokenCUtlVector, + StringUtlCUtlVector, + Int8CUtlVector, + Int16CUtlVector, + Int32CUtlVector, + Int64CUtlVector, + UInt8CUtlVector, + UInt16CUtlVector, + UInt32CUtlVector, + UInt64CUtlVector, + FloatCUtlVector, + DoubleCUtlVector, + SColorCUtlVector, + SQAngleCUtlVector, + SVectorCUtlVector, + SVector2DCUtlVector, + SVector4DCUtlVector, + BoolCUtlVector, +}; + +class SDKAccess { +private: + std::map<uint64_t, std::string> fieldNames; + std::map<uint64_t, SDKFieldType_t> fieldTypes; + std::map<uint64_t, uint64_t> fieldSizes; + std::map<uint64_t, std::string> fieldClass; + std::map<std::string, std::map<std::string, int64_t>> sdktypes; + std::set<std::string> classes; + std::set<std::string> processedFieldNames; + std::set<std::string> blockedFields; + +public: + void LoadSDKData(); + + std::string GetFieldName(uint64_t path); + SDKFieldType_t GetFieldType(uint64_t path); + std::string GetFieldClass(uint64_t path); + uint32_t GetFieldSize(uint64_t path); + std::set<std::string> GetProcessedFieldNames(); + std::set<std::string> GetClasses(); + std::map<std::string, std::map<std::string, int64_t>> GetSDKTypes(); + + bool IsFieldBlocked(std::string field); + bool ExistsField(uint64_t path); +}; + +extern SDKAccess g_sdk; + +#endif \ No newline at end of file diff --git a/src/sdk/components/CPlayerPawnComponent.h b/src/sdk/components/CPlayerPawnComponent.h new file mode 100644 index 000000000..d9105b3d7 --- /dev/null +++ b/src/sdk/components/CPlayerPawnComponent.h @@ -0,0 +1,15 @@ + +class CBasePlayerPawn +{ +}; + +class CPlayerPawnComponent +{ +public: + virtual ~CPlayerPawnComponent() = 0; + +private: + [[maybe_unused]] unsigned char __pad0008[0x28]; // 0x8 +public: + CBasePlayerPawn* m_pPawn; // 0x30 +}; \ No newline at end of file diff --git a/src/sdk/components/CServerSideClient.h b/src/sdk/components/CServerSideClient.h new file mode 100644 index 000000000..718c513ca --- /dev/null +++ b/src/sdk/components/CServerSideClient.h @@ -0,0 +1,62 @@ +#ifndef _serversideclient_h +#define _serversideclient_h + +#include <public/playerslot.h> +#include <steam/steamclientpublic.h> +#include <utlstring.h> +#include <inetchannel.h> + +#include "networkbasetypes.pb.h" + +class CServerSideClient : public INetworkMessageProcessingPreFilter +{ +public: + virtual ~CServerSideClient() = 0; + + INetChannel* GetNetChannel() const { return m_NetChannel; }; + CPlayerSlot GetPlayerSlot() const { return m_nClientSlot; }; + CEntityIndex GetEntityIndex() const { return m_nEntityIndex; }; + CPlayerUserId GetUserID() const { return m_UserID; }; + int GetSignonState() const { return m_nSignonState; } + CSteamID GetClientSteamID() const { return m_SteamID; } + const char* GetClientName() const { return m_Name; }; + bool IsConnected() const { return m_nSignonState >= SIGNONSTATE_CONNECTED; }; + bool IsSpawned() const { return m_nSignonState >= SIGNONSTATE_NEW; }; + bool IsActive() const { return m_nSignonState == SIGNONSTATE_FULL; }; + bool IsFakeClient() const { return m_bFakePlayer; }; + bool IsHLTV() const { return m_bIsHLTV; } + bool IsFullyAuthenticated() { return m_bFullyAuthenticated; } + const netadr_t* GetRemoteAddress() const { return &m_NetAdr0; } + +private: + [[maybe_unused]] void* m_pVT1; // INetworkMessageProcessingPreFilter + [[maybe_unused]] char pad1[0x30]; +#ifdef __linux__ + [[maybe_unused]] char pad2[0x10]; +#endif + CUtlString m_Name; // 64 | 80 + CPlayerSlot m_nClientSlot; // 72 | 88 + CEntityIndex m_nEntityIndex; // 76 | 92 + [[maybe_unused]] char pad3[0x8]; + INetChannel* m_NetChannel; // 88 | 104 + [[maybe_unused]] char pad4[0x4]; + int32_t m_nSignonState; // 100 | 116 + [[maybe_unused]] char pad5[0x38]; + bool m_bFakePlayer; // 160 | 176 + [[maybe_unused]] char pad6[0x7]; + CPlayerUserId m_UserID; // 168 | 184 + [[maybe_unused]] char pad7[0x1]; + CSteamID m_SteamID; // 171 | 187 + [[maybe_unused]] char pad8[0x19]; + netadr_t m_NetAdr0; // 204 | 220 + [[maybe_unused]] char pad9[0x14]; + netadr_t m_NetAdr1; // 236 | 252 + [[maybe_unused]] char pad10[0x22]; + bool m_bIsHLTV; // 282 | 298 + [[maybe_unused]] char pad11[0x19]; + int m_nDeltaTick; // 308 | 324 + [[maybe_unused]] char pad12[0x882]; + bool m_bFullyAuthenticated; // 2490 | 2506 +}; + +#endif \ No newline at end of file diff --git a/src/sdk/components/CSingleRecipientFilter.h b/src/sdk/components/CSingleRecipientFilter.h new file mode 100644 index 000000000..ae072bdb8 --- /dev/null +++ b/src/sdk/components/CSingleRecipientFilter.h @@ -0,0 +1,102 @@ +#include <public/irecipientfilter.h> + +class CRecipientFilter : public IRecipientFilter +{ +public: + CRecipientFilter(NetChannelBufType_t nBufType = BUF_RELIABLE, bool bInitMessage = false) : m_nBufType(nBufType), m_bInitMessage(bInitMessage) {} + + ~CRecipientFilter() override {} + + NetChannelBufType_t GetNetworkBufType(void) const override + { + return m_nBufType; + } + + bool IsInitMessage(void) const override + { + return m_bInitMessage; + } + + int GetRecipientCount(void) const override + { + return m_Recipients.Count(); + } + + CPlayerSlot GetRecipientIndex(int slot) const override + { + if (slot < 0 || slot >= GetRecipientCount()) + { + return CPlayerSlot(-1); + } + + return m_Recipients[slot]; + } + + void AddRecipient(CPlayerSlot slot) + { + if (m_Recipients.Find(slot) != m_Recipients.InvalidIndex()) + return; + + m_Recipients.AddToTail(slot); + } + + void AddAllPlayers() + { + m_Recipients.RemoveAll(); + + for (int i = 0; i <= engine->GetServerGlobals()->maxClients; i++) + if(engine->IsClientFullyAuthenticated(i)) + AddRecipient(i); + } + + void RemoveRecipient(CPlayerSlot slot) + { + if (m_Recipients.Find(slot) == m_Recipients.InvalidIndex()) + return; + + m_Recipients.FindAndRemove(slot); + } + +private: + // Can't copy this unless we explicitly do it! + CRecipientFilter(CRecipientFilter const& source) + { + Assert(0); + } + + NetChannelBufType_t m_nBufType; + bool m_bInitMessage; + CUtlVectorFixed<CPlayerSlot, 64> m_Recipients; +}; + +class CBroadcastRecipientFilter : public CRecipientFilter +{ +public: + CBroadcastRecipientFilter(void) + { + AddAllPlayers(); + } +}; + +class CSingleRecipientFilter : public CRecipientFilter +{ +public: + CSingleRecipientFilter(int iRecipient, bool bReliable = true, bool bInitMessage = false) : m_bReliable(bReliable), m_bInitMessage(bInitMessage), m_iRecipient(iRecipient) {} + + ~CSingleRecipientFilter() override {} + + bool IsReliable(void) const { return m_bReliable; } + + bool IsInitMessage(void) const override { return m_bInitMessage; } + + NetChannelBufType_t GetNetworkBufType(void) const override { return m_bReliable ? BUF_RELIABLE : BUF_UNRELIABLE; } + + int GetRecipientCount(void) const override { return 1; } + + CPlayerSlot GetRecipientIndex(int slot) const override { return CPlayerSlot(m_iRecipient); } + +private: + bool m_bReliable; + bool m_bInitMessage; + int m_iRecipient; +}; diff --git a/src/sdk/components/CTakeDamageInfo.h b/src/sdk/components/CTakeDamageInfo.h new file mode 100644 index 000000000..9b3c539e9 --- /dev/null +++ b/src/sdk/components/CTakeDamageInfo.h @@ -0,0 +1,128 @@ +#include <memory/gamedata/gamedata.h> +#include <public/mathlib/vector.h> +#include "ehandle.h" + +class CTakeDamageInfo; +typedef void (*CTakeDamageInfo_Constructor)(void*, void*, void*, void*, Vector*, Vector*, float, int, int, void*); + +enum DDamageTypes_t : uint32_t +{ + DMG_GENERIC = 0x0, + DMG_CRUSH = 0x1, + DMG_BULLET = 0x2, + DMG_SLASH = 0x4, + DMG_BURN = 0x8, + DMG_VEHICLE = 0x10, + DMG_FALL = 0x20, + DMG_BLAST = 0x40, + DMG_CLUB = 0x80, + DMG_SHOCK = 0x100, + DMG_SONIC = 0x200, + DMG_ENERGYBEAM = 0x400, + DMG_DROWN = 0x4000, + DMG_POISON = 0x8000, + DMG_RADIATION = 0x10000, + DMG_DROWNRECOVER = 0x20000, + DMG_ACID = 0x40000, + DMG_PHYSGUN = 0x100000, + DMG_DISSOLVE = 0x200000, + DMG_BLAST_SURFACE = 0x400000, + DMG_BUCKSHOT = 0x1000000, + DMG_LASTGENERICFLAG = 0x1000000, + DMG_HEADSHOT = 0x2000000, + DMG_DANGERZONE = 0x4000000, +}; + +enum TTakeDamageFlags_t : uint32_t +{ + DFLAG_NONE = 0x0, + DFLAG_SUPPRESS_HEALTH_CHANGES = 0x1, + DFLAG_SUPPRESS_PHYSICS_FORCE = 0x2, + DFLAG_SUPPRESS_EFFECTS = 0x4, + DFLAG_PREVENT_DEATH = 0x8, + DFLAG_FORCE_DEATH = 0x10, + DFLAG_ALWAYS_GIB = 0x20, + DFLAG_NEVER_GIB = 0x40, + DFLAG_REMOVE_NO_RAGDOLL = 0x80, + DFLAG_SUPPRESS_DAMAGE_MODIFICATION = 0x100, + DFLAG_ALWAYS_FIRE_DAMAGE_EVENTS = 0x200, + DFLAG_RADIUS_DMG = 0x400, + DMG_LASTDFLAG = 0x400, + DFLAG_IGNORE_ARMOR = 0x800, +}; + +struct AttackerInfo_t +{ + bool m_bNeedInit; + bool m_bIsPawn; + bool m_bIsWorld; + CHandle<CEntityInstance> m_hAttackerPawn; + uint16_t m_nAttackerPlayerSlot; + int m_iTeamChecked; + int m_nTeam; +}; + +struct CTakeDamageInfoContainer +{ + CTakeDamageInfo* pInfo; +}; + +class CTakeDamageInfo +{ +private: + [[maybe_unused]] unsigned char __pad0000[0x8]; + +public: + CTakeDamageInfo(void* pInflictor, void* pAttacker, void* pAbility, float flDamage, int bitsDamageType) + { + Vector vec3_origin(0.0, 0.0, 0.0); + g_GameData.FetchSignature<CTakeDamageInfo_Constructor>("CTakeDamageInfo_Constructor")(this, pInflictor, pAttacker, pAbility, &vec3_origin, &vec3_origin, flDamage, bitsDamageType, 0, nullptr); + } + + Vector m_vecDamageForce; + Vector m_vecDamagePosition; + Vector m_vecReportedPosition; + Vector m_vecDamageDirection; + CHandle<CEntityInstance> m_hInflictor; + CHandle<CEntityInstance> m_hAttacker; + CHandle<CEntityInstance> m_hAbility; + float m_flDamage; + float m_flTotalledDamage; + float m_flTotalledDamageAbsorbed; + DDamageTypes_t m_bitsDamageType; + int32_t m_iDamageCustom; + uint8_t m_iAmmoType; + +private: + [[maybe_unused]] uint8_t __pad0059[0xf]; + +public: + float m_flOriginalDamage; + bool m_bShouldBleed; + bool m_bShouldSpark; + +private: + [[maybe_unused]] uint8_t __pad006e[0x2]; + +public: + float m_flDamageAbsorbed; + +private: + [[maybe_unused]] uint8_t __pad0074[0x8]; + +public: + TTakeDamageFlags_t m_nDamageFlags; + +private: + [[maybe_unused]] uint8_t __pad0084[0x4]; + +public: + int32_t m_nNumObjectsPenetrated; + float m_flFriendlyFireDamageReductionRatio; + uint64_t m_hScriptInstance; + AttackerInfo_t m_AttackerInfo; + bool m_bInTakeDamageFlow; + +private: + [[maybe_unused]] uint8_t __pad00ad[0x4]; +}; \ No newline at end of file diff --git a/src/sdk/components/EmitSound_t.h b/src/sdk/components/EmitSound_t.h new file mode 100644 index 000000000..dd4caa9d7 --- /dev/null +++ b/src/sdk/components/EmitSound_t.h @@ -0,0 +1,73 @@ +#include "soundflags.h" +#include <mathlib/vector.h> +#include <public/entity2/entityidentity.h> + +typedef uint32_t SoundEventGuid_t; +struct SndOpEventGuid_t +{ + SoundEventGuid_t m_nGuid; + uint64_t m_hStackHash; +}; + +enum gender_t : uint8_t +{ + GENDER_NONE = 0x0, + GENDER_MALE = 0x1, + GENDER_FEMALE = 0x2, + GENDER_NAMVET = 0x3, + GENDER_TEENGIRL = 0x4, + GENDER_BIKER = 0x5, + GENDER_MANAGER = 0x6, + GENDER_GAMBLER = 0x7, + GENDER_PRODUCER = 0x8, + GENDER_COACH = 0x9, + GENDER_MECHANIC = 0xA, + GENDER_CEDA = 0xB, + GENDER_CRAWLER = 0xC, + GENDER_UNDISTRACTABLE = 0xD, + GENDER_FALLEN = 0xE, + GENDER_RIOT_CONTROL = 0xF, + GENDER_CLOWN = 0x10, + GENDER_JIMMY = 0x11, + GENDER_HOSPITAL_PATIENT = 0x12, + GENDER_BRIDE = 0x13, + GENDER_LAST = 0x14, +}; + +struct EmitSound_t +{ + EmitSound_t() : m_nChannel(0), + m_pSoundName(0), + m_flVolume(1.0f), + m_SoundLevel(SNDLVL_NONE), + m_nFlags(0), + m_nPitch(100), + m_pOrigin(0), + m_flSoundTime(0.0f), + m_pflSoundDuration(0), + m_bEmitCloseCaption(true), + m_bWarnOnMissingCloseCaption(false), + m_bWarnOnDirectWaveReference(false), + m_nSpeakerEntity(-1), + m_UtlVecSoundOrigin(), + m_nForceGuid(0), + m_SpeakerGender(GENDER_NONE) + { + } + int m_nChannel; + const char *m_pSoundName; + float m_flVolume; + soundlevel_t m_SoundLevel; + int m_nFlags; + int m_nPitch; + const Vector *m_pOrigin; + float m_flSoundTime; + float *m_pflSoundDuration; + bool m_bEmitCloseCaption; + bool m_bWarnOnMissingCloseCaption; + bool m_bWarnOnDirectWaveReference; + CEntityIndex m_nSpeakerEntity; + CUtlVector<Vector, CUtlMemory<Vector, int>> m_UtlVecSoundOrigin; + SoundEventGuid_t m_nForceGuid; + gender_t m_SpeakerGender; +}; \ No newline at end of file diff --git a/src/sdk/components/EntityCheckTransmit.h b/src/sdk/components/EntityCheckTransmit.h new file mode 100644 index 000000000..9f17ab51e --- /dev/null +++ b/src/sdk/components/EntityCheckTransmit.h @@ -0,0 +1,21 @@ +#ifndef _sdk_entity_checktransmit_h +#define _sdk_entity_checktransmit_h + +#include <core/entrypoint.h> + +class EntityCheckTransmit +{ +public: + CBitVec<MAX_EDICTS>* m_pTransmitEntity; // 0 + CBitVec<MAX_EDICTS>* m_pUnkBitVec; // 8 + CBitVec<MAX_EDICTS>* m_pUnkBitVec2; // 16 + CBitVec<MAX_EDICTS>* m_pUnkBitVec3; // 24 + CBitVec<MAX_EDICTS>* m_pTransmitAlways; // 32 + CUtlVector<int> m_unk40; // 40 + vis_info_t* m_VisInfo; // 64 + [[maybe_unused]] byte m_unk72[0x200]; // 72 + CEntityIndex m_nClientEntityIndex; // 584 + bool m_bFullUpdate; // 588 +}; + +#endif \ No newline at end of file diff --git a/src/sdk/game.cpp b/src/sdk/game.cpp new file mode 100644 index 000000000..8a1563b82 --- /dev/null +++ b/src/sdk/game.cpp @@ -0,0 +1,25 @@ +#include "game.h" + +#include <swiftly-ext/core.h> + +std::string GetGameName() +{ +#if SOURCE_ENGINE == SE_CS2 + return "cs2"; +#else + return "unknown"; +#endif +} + +int GetMaxGameClients() +{ +#if SOURCE_ENGINE == SE_CS2 + return 64; +#else + return 64; +#endif +} + +EXT_API const char* swiftly_GetGameName() { + return GetGameName().c_str(); +} \ No newline at end of file diff --git a/src/sdk/game.h b/src/sdk/game.h new file mode 100644 index 000000000..0c8e3561d --- /dev/null +++ b/src/sdk/game.h @@ -0,0 +1,19 @@ +#ifndef _sdk_game_h +#define _sdk_game_h + +#include <string> + +#define CS_TEAM_NONE 0 +#define CS_TEAM_SPECTATOR 1 +#define CS_TEAM_T 2 +#define CS_TEAM_CT 3 + +#define HUD_PRINTNOTIFY 1 +#define HUD_PRINTCONSOLE 2 +#define HUD_PRINTTALK 3 +#define HUD_PRINTCENTER 4 + +std::string GetGameName(); +int GetMaxGameClients(); + +#endif \ No newline at end of file diff --git a/src/sdk/schema.cpp b/src/sdk/schema.cpp new file mode 100644 index 000000000..bf4c15a63 --- /dev/null +++ b/src/sdk/schema.cpp @@ -0,0 +1,168 @@ +#include "schema.h" + +#include <memory/virtual/virtual.h> + +#include <utils/utils.h> +#include <utils/platform/platform.h> +#include <ehandle.h> + +extern CSchemaSystem* g_pSchemaSystem2; + +std::map<uint64_t, int32_t> offsetsCache; +std::map<uint64_t, bool> networkedCache; +std::set<uint32_t> structCache; +std::set<uint32_t> isClassLoaded; + +static bool IsFieldNetworked(SchemaClassFieldData_t& field) +{ + static auto networkEnabled = hash_32_fnv1a_const("MNetworkEnable"); + for (int i = 0; i < field.m_nStaticMetadataCount; i++) + if (networkEnabled == hash_32_fnv1a_const(field.m_pStaticMetadata[i].m_pszName)) + return true; + + return false; +} + +bool IsStandardLayoutClass(SchemaClassInfoData_t *classData) { + { + auto pClass = classData; + int classesWithFields = 0; + do { + classesWithFields += ((pClass->m_nSize > 1) || (pClass->m_nFieldCount != 0)) ? 1 : 0; + + if(classesWithFields > 1) return false; + + pClass = (pClass->m_pBaseClasses == nullptr) ? nullptr : pClass->m_pBaseClasses->m_pClass; + } while(pClass != nullptr); + } + + auto fields = classData->m_pFields; + auto fieldsCount = classData->m_nFieldCount; + for(uint16_t i = 0; i < fieldsCount; i++) { + auto fieldType = fields[i].m_pType; + if(fieldType->m_eTypeCategory == SchemaTypeCategory_t::SCHEMA_TYPE_DECLARED_CLASS) { + CSchemaType_DeclaredClass* fClass = reinterpret_cast<CSchemaType_DeclaredClass*>(fieldType); + if(fClass->m_pClassInfo && !IsStandardLayoutClass(fClass->m_pClassInfo)) return false; + } + } + + return true; +} + +void PopulateClassData(const char* className, uint32_t classOffset) +{ + CSchemaSystemTypeScope* pType = g_pSchemaSystem2->FindTypeScopeForModule(MODULE_PREFIX "server" MODULE_EXT); + if(!pType) return; + + auto classData = pType->FindDeclaredClass(className).Get(); + + if(!classData) return; + + isClassLoaded.insert(classOffset); + + if(structCache.find(classOffset) == structCache.end()) + if(IsStandardLayoutClass(classData)) + structCache.insert(classOffset); + + short fieldsSize = classData->m_nFieldCount; + SchemaClassFieldData_t* pFields = classData->m_pFields; + + for(short i = 0; i < fieldsSize; i++) { + auto field = pFields[i]; + uint64_t offsetKey = ((uint64_t) classOffset) << 32 | hash_32_fnv1a_const(field.m_pszName); + + offsetsCache.insert({ offsetKey, field.m_nSingleInheritanceOffset }); + networkedCache.insert({ offsetKey, IsFieldNetworked(field) }); + } +} + +int32_t sch::FindChainOffset(const char* className) +{ + return sch::GetOffset(className, "__m_pChainEntity"); +} + +int32_t sch::GetOffset(const char* className, const char* memberName) +{ + uint32_t classOffset = hash_32_fnv1a_const(className); + uint64_t fullOffset = ((uint64_t) classOffset) << 32 | hash_32_fnv1a_const(memberName); + + return offsetsCache[fullOffset]; +} + +int32_t sch::GetOffset(uint64_t path) +{ + return offsetsCache[path]; +} + +bool sch::IsNetworked(const char* className, const char* memberName) +{ + uint32_t classOffset = hash_32_fnv1a_const(className); + uint64_t fullOffset = ((uint64_t) classOffset) << 32 | hash_32_fnv1a_const(memberName); + + return networkedCache[fullOffset]; +} + +bool sch::IsNetworked(uint64_t path) +{ + return networkedCache[path]; +} + +bool sch::IsStruct(const char* cName) +{ + return structCache.find(hash_32_fnv1a_const(cName)) != structCache.end(); +} + +bool sch::IsClassLoaded(const char* cName) +{ + return isClassLoaded.find(hash_32_fnv1a_const(cName)) != isClassLoaded.end(); +} + +void SetStateChanged(uintptr_t entityPtr, std::string className, std::string fieldName, int extraOffset) +{ + const char* cName = className.c_str(); + const char* fName = fieldName.c_str(); + + if ((void*)entityPtr == nullptr) return; + if (!sch::IsNetworked(cName, fName)) return; + + auto m_key = sch::GetOffset(cName, fName); + auto m_chain = sch::FindChainOffset(cName); + + if (m_chain) { + entityPtr += m_chain; + CEntityInstance* pEntity = *reinterpret_cast<CEntityInstance**>(entityPtr); + if (pEntity && (pEntity->m_pEntity->m_flags & EF_IS_CONSTRUCTION_IN_PROGRESS) == 0) + pEntity->NetworkStateChanged(m_key + extraOffset, -1, *reinterpret_cast<ChangeAccessorFieldPathIndex_t*>(entityPtr + 32)); + } + else { + auto isStruct = sch::IsStruct(cName); + if (isStruct) + CALL_VIRTUAL(void, 1, (void*)entityPtr, m_key + extraOffset, 0xFFFFFFFF, 0xFFFF); + else + reinterpret_cast<CEntityInstance*>(entityPtr)->NetworkStateChanged(m_key + extraOffset); + } +} + +void* schema::GetSchemaPtr(void* ptr, const char* className, const char* fieldName) +{ + auto m_key = sch::GetOffset(className, fieldName); + + return reinterpret_cast<void*>((uintptr_t)(ptr)+m_key); +} + +void schema::WriteSchemaPtrValue(void* ptr, const char* className, const char* fieldName, byte* value, int size) +{ + const auto m_key = sch::GetOffset(className, fieldName); + + void* fieldPtr = reinterpret_cast<std::add_pointer_t<void>>((uintptr_t)(ptr)+m_key); + + Plat_WriteMemory(fieldPtr, value, size); + + SetStateChanged((uintptr_t)ptr, className, fieldName, 0); +} + +void* schema::GetVData(void* instance) +{ + void* subclassPtr = schema::GetPropPtr<void>(instance, "CBaseEntity", "m_nSubclassID"); + return *(void**)((uintptr_t)subclassPtr + 4); +} \ No newline at end of file diff --git a/src/sdk/schema.h b/src/sdk/schema.h new file mode 100644 index 000000000..5aff18923 --- /dev/null +++ b/src/sdk/schema.h @@ -0,0 +1,82 @@ +#ifndef _sdk_schema_h +#define _sdk_schema_h + +#include <stdint.h> +#include <string> +#include <map> +#include <set> +#include <memory/gamedata/gamedata.h> +#include <schemasystem/schemasystem.h> +#include <vector> + +extern void* gameRules; + +#ifdef GetProp +#undef GetProp +#endif + +#ifdef SetProp +#undef SetProp +#endif + +void SetStateChanged(uintptr_t entityPtr, std::string className, std::string fieldName, int extraOffset); + +namespace sch +{ + int32_t FindChainOffset(const char* className); + + int32_t GetOffset(const char* className, const char* memberName); + int32_t GetOffset(uint64_t path); + + bool IsNetworked(const char* className, const char* memberName); + bool IsNetworked(uint64_t path); + + bool IsStruct(const char* cName); + bool IsClassLoaded(const char* cName); +}; + +namespace schema +{ + template<class T> + T GetProp(void* entity, const char* className, const char* fieldName) + { + return *(T*)((uintptr_t)entity + sch::GetOffset(className, fieldName)); + } + + template<class T> + T* GetPropPtr(void* entity, const char* className, const char* fieldName) + { + return (T*)((uintptr_t)entity + sch::GetOffset(className, fieldName)); + } + + void* GetSchemaPtr(void* ptr, const char* className, const char* fieldName); + void WriteSchemaPtrValue(void* ptr, const char* className, const char* fieldName, byte* value, int size); + void* GetVData(void* instance); + + template<class T> + void SetProp(void* ptr, const char* className, const char* fieldName, T value) + { + auto m_key = sch::GetOffset(className, fieldName); + + *reinterpret_cast<std::add_pointer_t<T>>((uintptr_t)(ptr)+m_key) = value; + + if (gameRules != ptr) SetStateChanged((uintptr_t)ptr, className, fieldName, 0); + } + + template <typename T> + void SetPropCUtlVector(void* ptr, const char* className, const char* fieldName, std::vector<T> value) + { + auto m_key = sch::GetOffset(className, fieldName); + + SetStateChanged((uintptr_t)ptr, className, fieldName, 0); + + CUtlVector<T>* vec = reinterpret_cast<CUtlVector<T> *>((uintptr_t)(ptr)+m_key); + vec->Purge(); + for (auto elem : value) + vec->AddToTail(elem); + + SetStateChanged((uintptr_t)ptr, className, fieldName, 0); + } +}; + +#endif \ No newline at end of file diff --git a/src/server/chat/chat.cpp b/src/server/chat/chat.cpp new file mode 100644 index 000000000..19a0085da --- /dev/null +++ b/src/server/chat/chat.cpp @@ -0,0 +1,185 @@ +#include "chat.h" + +#include <iomanip> +#include <ctime> +#include <sstream> + +#include <network/usermessages/usermessage.h> +#include <filesystem/files/files.h> +#include <utils/common.h> +#include <utils/utils.h> +#include <rapidjson/json.hpp> +#include <sdk/schema.h> +#include <server/player/manager.h> + +extern std::map<std::string, std::string> colors; + +SH_DECL_EXTERN8_void(IGameEventSystem, PostEventAbstract, SH_NOATTRIB, 0, CSplitScreenSlot, bool, int, const uint64*, INetworkMessageInternal*, const CNetMessage*, unsigned long, NetChannelBufType_t) + +void ChatProcessor::Initialize() +{ + SH_ADD_HOOK_MEMFUNC(IGameEventSystem, PostEventAbstract, g_pGameEventSystem, this, &ChatProcessor::PostEvent, false); +} + +void ChatProcessor::Shutdown() +{ + SH_REMOVE_HOOK_MEMFUNC(IGameEventSystem, PostEventAbstract, g_pGameEventSystem, this, &ChatProcessor::PostEvent, false); +} + +void ChatError(std::string text) +{ + if (!g_SMAPI) + return; + + PLUGIN_PRINTF("Chat Processor", "%s\n", text.c_str()); +} + +void ChatProcessor::LoadMessages() +{ + this->placeholders.clear(); + rapidjson::Document chatFile; + + chatFile.Parse(Files::Read("addons/swiftly/configs/chat.json").c_str()); + if (chatFile.HasParseError()) + return ChatError(string_format("A parsing error has been detected.\nError (offset %u): %s\n", (unsigned)chatFile.GetErrorOffset(), GetParseError_En(chatFile.GetParseError()))); + + if (chatFile.IsArray()) + return ChatError("Chat file cannot be an array."); + + for (auto it = chatFile.MemberBegin(); it != chatFile.MemberEnd(); ++it) + { + std::string key = it->name.GetString(); + if (!it->value.IsString()) + { + ChatError(string_format("The field \"%s\" is not a string.", key.c_str())); + continue; + } + std::string value = it->value.GetString(); + if (value.empty()) + { + continue; + } + this->placeholders[key] = value; + } +} + +std::map<std::string, std::string> textMessageReplacements = { + { "\n", "\u2029" }, + { " ", "" }, + { "", "" }, + { "", "" }, + { "", "" }, + { "", "" }, + { "", "" }, + { "", "" }, + { "", "" }, + { "", "" }, + { "", "" }, + { "", "" }, + { "", "" }, + { "", "" }, +}; + +std::string getCurrentTime() { + std::time_t now = std::time(nullptr); + std::tm* localTime = std::localtime(&now); + + std::ostringstream oss; + oss << std::setw(2) << std::setfill('0') << localTime->tm_hour << ":" + << std::setw(2) << std::setfill('0') << localTime->tm_min; + + return oss.str(); +} +std::string getCompTeammateColorString(void* controller) +{ + switch (schema::GetProp<int>(controller, "CCSPlayerController", "m_iCompTeammateColor")) + { + case -2: + return "{GREY}"; + break; + // case -1: // IN MY CASE WAS YELLOW PROBABLY IS RANDOMLY? + // return "{YELLOW}"; + // break; + case 0: + return "{BLUE}"; + break; + case 1: + return "{GREEN}"; + break; + case 2: + return "{YELLOW}"; + break; + case 3: + return "{ORANGE}"; + break; + case 4: + return "{PURPLE}"; + break; + case 5: + return "{RED}"; + break; + default: + return "{DEFAULT}"; + break; + } +} + +std::string formatPlayerMessage(Player* player, void* controller, std::string placeholder, std::string message, bool isRadio = false) +{ + for (auto it = textMessageReplacements.begin(); it != textMessageReplacements.end(); ++it) + message = replace(message, it->first, it->second); + + std::string name = player->GetName(); + + for (auto it = colors.begin(); it != colors.end(); ++it) + { + message = replace(message, it->first, ""); + message = replace(message, str_tolower(it->first), ""); + name = replace(name, it->first, ""); + name = replace(name, str_tolower(it->first), ""); + } + + std::map<std::string, std::string> replacements = { + {"{NAME}", string_format("%s%s{default}", std::any_cast<std::string>(player->GetInternalVar("namecolor")).empty() ? "{teamcolor}" : std::any_cast<std::string>(player->GetInternalVar("namecolor")).c_str(), name.c_str())}, + {"{TAG}", string_format("%s%s{default}", std::any_cast<std::string>(player->GetInternalVar("tagcolor")).empty() ? "{default}" : std::any_cast<std::string>(player->GetInternalVar("tagcolor")).c_str(), std::any_cast<std::string>(player->GetInternalVar("tag")).c_str())}, + {"{LOCATION}", isRadio ? "%s2" : "%s3"}, + {"{TIME}", getCurrentTime().c_str()}, + {"{COMP_COLOR}", getCompTeammateColorString(controller).c_str()}, + {"{MESSAGE}", string_format("%s%s", std::any_cast<std::string>(player->GetInternalVar("chatcolor")).c_str(), message.c_str())}, + }; + for (auto it = replacements.begin(); it != replacements.end(); ++it) + placeholder = replace(placeholder, it->first, it->second); + + return ProcessColor(" " + placeholder, schema::GetProp<int>(controller, "CBaseEntity", "m_iTeamNum")); +} + +void ChatProcessor::PostEvent(CSplitScreenSlot nSlot, bool bLocalOnly, int nClientCount, const uint64* clients, INetworkMessageInternal* pEvent, const CNetMessage* pData, unsigned long nSize, NetChannelBufType_t bufType) +{ + if (pEvent->GetNetMessageInfo()->m_MessageId == 118) { + UserMessage um(pEvent, (CNetMessage*)pData, (uint64_t*)clients); + Player* player = g_playerManager.GetPlayer(um.GetInt32("entityindex") - 1); + if (!player) return; + + void* controller = player->GetController(); + if (!controller) return; + + std::string key = um.GetString("messagename"); + auto it = this->placeholders.find(key); + if (it != this->placeholders.end()) { + um.SetString("messagename", formatPlayerMessage(player, controller, it->second.c_str(), um.GetString("param2")).c_str()); + } + } + else if (pEvent->GetNetMessageInfo()->m_MessageId == 322) { + UserMessage um(pEvent, (CNetMessage*)pData, (uint64_t*)clients); + Player* player = g_playerManager.GetPlayer(um.GetInt32("client")); + if (!player) return; + + void* controller = player->GetController(); + if (!controller) return; + + auto it = this->placeholders.find(um.GetRepeatedString("params", 2)); + if (it != this->placeholders.end()) { + um.SetString("msg_name", formatPlayerMessage(player, controller, it->second.c_str(), um.GetRepeatedString("params", 2), true).c_str()); + } + } +} \ No newline at end of file diff --git a/src/server/chat/chat.h b/src/server/chat/chat.h new file mode 100644 index 000000000..2ecb8e081 --- /dev/null +++ b/src/server/chat/chat.h @@ -0,0 +1,23 @@ +#ifndef _chat_processor_h +#define _chat_processor_h + +#include <core/entrypoint.h> +#include <utils/utils.h> +#include <map> +#include <string> + +class ChatProcessor +{ +private: + std::map<std::string, std::string> placeholders; +public: + void Initialize(); + void Shutdown(); + void LoadMessages(); + + void PostEvent(CSplitScreenSlot nSlot, bool bLocalOnly, int nClientCount, const uint64* clients, INetworkMessageInternal* pEvent, const CNetMessage* pData, unsigned long nSize, NetChannelBufType_t bufType); +}; + +extern ChatProcessor g_chatProcessor; + +#endif \ No newline at end of file diff --git a/src/server/commands/command.cpp b/src/server/commands/command.cpp new file mode 100644 index 000000000..74aa2e3f9 --- /dev/null +++ b/src/server/commands/command.cpp @@ -0,0 +1,50 @@ +#include "command.h" + +#include <utils/common.h> +#include <plugins/manager.h> +#include <tools/crashreporter/callstack.h> +#include <tools/resourcemonitor/monitor.h> +#include <utils/utils.h> + +Command::Command(std::string plugin_name, EValue* functionPtr, std::string name) +{ + m_funcPtr = functionPtr; + m_pluginName = plugin_name; + m_commandName = name; +} + +Command::~Command() +{ + auto plugin = g_pluginManager.FetchPlugin(m_pluginName); + if (!plugin) return; + + delete m_funcPtr; +} + +void Command::Execute(int slot, std::vector<std::string> args, bool silent, std::string prefix) +{ + if (!m_funcPtr) return; + + if (!m_funcPtr->isFunction()) return; + + uint64_t stackid = g_callStack.RegisterPluginCallstack(m_pluginName, string_format("Command::Execute(command_name=\"%s\",slot=%d,args=\"%s\",silent=%d,prefix=\"%s\")", m_commandName.c_str(), slot, implode(args, " ").c_str(), silent, prefix.c_str())); + std::string cmdResmon = "command:" + m_commandName; + g_ResourceMonitor.StartTime(m_pluginName, cmdResmon); + + try { + EValue command = *m_funcPtr; + int argc = args.size(); + command(slot, args, argc, silent, prefix); + } + catch (EException& e) { + PRINTF("An error has occured while executing command '%s'.\n", m_commandName.c_str()); + PRINTF("%s\n", e.what()); + } + g_ResourceMonitor.StopTime(m_pluginName, cmdResmon); + g_callStack.UnregisterPluginCallstack(m_pluginName, stackid); +} + +std::string Command::GetPluginName() +{ + return m_pluginName; +} \ No newline at end of file diff --git a/src/server/commands/command.h b/src/server/commands/command.h new file mode 100644 index 000000000..47802f227 --- /dev/null +++ b/src/server/commands/command.h @@ -0,0 +1,22 @@ +#ifndef _server_commands_command_h +#define _server_commands_command_h + +#include <embedder/src/Embedder.h> +#include <vector> +#include <string> + +class Command +{ +private: + EValue* m_funcPtr; + std::string m_pluginName; + std::string m_commandName; +public: + Command(std::string plugin_name, EValue* functionPtr, std::string name); + ~Command(); + + void Execute(int slot, std::vector<std::string> args, bool silent, std::string prefix); + std::string GetPluginName(); +}; + +#endif \ No newline at end of file diff --git a/src/server/commands/manager.cpp b/src/server/commands/manager.cpp new file mode 100644 index 000000000..673e78df2 --- /dev/null +++ b/src/server/commands/manager.cpp @@ -0,0 +1,265 @@ +#include "manager.h" + +#include <server/configuration/configuration.h> +#include <server/player/manager.h> + +#include <utils/utils.h> +#include <utils/common.h> +#include <public/tier1/strtools.h> + +static void commandsCallback(const CCommandContext& context, const CCommand& args); +std::map<std::string, ConCommand*> conCommandCreated; + +std::set<std::string> commandPrefixes; +std::set<std::string> silentCommandPrefixes; + +SH_DECL_EXTERN3_void(ICvar, DispatchConCommand, SH_NOATTRIB, 0, ConCommandRef, const CCommandContext&, const CCommand&); + +void CommandsManager::Initialize() +{ + SH_ADD_HOOK_MEMFUNC(ICvar, DispatchConCommand, g_pCVar, this, &CommandsManager::DispatchConCommand, false); +} + +void CommandsManager::Shutdown() +{ + SH_REMOVE_HOOK_MEMFUNC(ICvar, DispatchConCommand, g_pCVar, this, &CommandsManager::DispatchConCommand, false); +} + +bool OnClientCommand(int playerid, std::string command); +bool OnClientChat(int playerid, std::string text, bool teamonly); + +void CommandsManager::DispatchConCommand(ConCommandRef cmd, const CCommandContext& ctx, const CCommand& args) +{ + CPlayerSlot slot = ctx.GetPlayerSlot(); + + if (slot.Get() != -1) + { + if (!OnClientCommand(slot.Get(), args.GetCommandString())) RETURN_META(MRES_SUPERCEDE); + + std::string command = args.Arg(0); + if (command == "say" || command == "say_team") + { + Player* player = g_playerManager.GetPlayer(slot); + if (!player) return; + + void* controller = player->GetController(); + + bool teamonly = (command == "say_team"); + + auto text = args[1]; + if (strlen(text) == 0) RETURN_META(MRES_SUPERCEDE); + + if (controller) + { + IGameEvent* pEvent = g_gameEventManager->CreateEvent("player_chat"); + + if (pEvent) + { + pEvent->SetBool("teamonly", teamonly); + pEvent->SetInt("userid", slot.Get()); + pEvent->SetString("text", text); + + g_gameEventManager->FireEvent(pEvent, true); + } + } + + int handleCommandReturn = HandleCommand(slot.Get(), text); + if (handleCommandReturn == 2 || !OnClientChat(slot.Get(), text, teamonly)) RETURN_META(MRES_SUPERCEDE); + } + } +} + +// @returns 1 - command is not silent +// @returns 2 - command is silent +// @returns -1 - invalid controller +// @returns 0 - is not command +int CommandsManager::HandleCommand(int playerid, std::string text) +{ + if (text == "" || text.size() == 0) + return -1; + + Player* player = g_playerManager.GetPlayer(playerid); + if (player == nullptr) + return -1; + + if (commandPrefixes.size() == 0) commandPrefixes = explodeToSet(g_Config.FetchValue<std::string>("core.commandPrefixes"), " "); + if (silentCommandPrefixes.size() == 0) silentCommandPrefixes = explodeToSet(g_Config.FetchValue<std::string>("core.commandSilentPrefixes"), " "); + + bool isCommand = false; + bool isSilentCommand = false; + std::string selectedPrefix = ""; + + if (commandPrefixes.size() > 0) { + for (auto it = commandPrefixes.begin(); it != commandPrefixes.end(); ++it) { + std::string prefix = *it; + auto strPrefix = text.substr(0, prefix.size()); + + if (prefix == strPrefix) { + isCommand = true; + selectedPrefix = prefix; + break; + } + } + } + + if (!isCommand && silentCommandPrefixes.size() > 0) { + for (auto it = silentCommandPrefixes.begin(); it != silentCommandPrefixes.end(); ++it) { + std::string prefix = *it; + auto strPrefix = text.substr(0, prefix.size()); + + if (prefix == strPrefix) { + isSilentCommand = true; + selectedPrefix = prefix; + break; + } + } + } + + if (isCommand || isSilentCommand) + { + CCommand tokenizedArgs; + tokenizedArgs.Tokenize(text.c_str()); + + std::vector<std::string> cmdString = TokenizeCommand(text); + cmdString.erase(cmdString.begin()); + + if (tokenizedArgs.ArgC() < 1) + return 0; + + std::string commandName = tokenizedArgs[0]; + if (commandName.size() < 1) + return 0; + + commandName.erase(0, selectedPrefix.size()); + + if (player->menu_renderer->HasMenuShown() && g_Config.FetchValue<std::string>("core.menu.inputMode") == "chat") { + if (commandName == "1" || commandName == "2" || commandName == "3" || commandName == "4" || + commandName == "5" || commandName == "6" || commandName == "7" || commandName == "8" || commandName == "9") { + int value = V_StringToUint32(commandName.c_str(), 1); + if (value > player->menu_renderer->GetMenu()->GetItemsOnPage(player->menu_renderer->GetPage())) return 2; + + while (player->menu_renderer->GetSelection() != value - 1) { + player->menu_renderer->MoveSelection(); + } + + player->menu_renderer->PerformMenuAction(g_Config.FetchValue<std::string>("core.menu.buttons.use")); + return 2; + } + } + + Command* cmd = FetchCommand(commandName); + if (cmd == nullptr) + return 0; + + try { + cmd->Execute(playerid, cmdString, isSilentCommand, selectedPrefix); + } + catch (std::exception& e) { + PLUGIN_PRINTF("Commands Manager", "An error has occured while trying to execute command '%s'.\n", commandName.c_str()); + PLUGIN_PRINTF("Commands Manager", "%s\n", e.what()); + } + } + + if (isCommand) + return 1; + else if (isSilentCommand) + return 2; + else + return 0; +} + +Command* CommandsManager::FetchCommand(std::string cmd_name) +{ + if (commands.find(cmd_name) == commands.end()) return nullptr; + return commands[cmd_name]; +} + +void CommandsManager::RegisterCommand(std::string plugin_name, std::string cmd, Command* command, bool registerRaw) +{ + if (!registerRaw) + { + if (commands.find(cmd) != commands.end()) + return; + + commands.insert({ cmd, command }); + commandAliases.insert({ cmd, {} }); + + if (commandsByPlugin.find(plugin_name) == commandsByPlugin.end()) + commandsByPlugin.insert({ plugin_name, {} }); + + commandsByPlugin[plugin_name].push_back(cmd); + + cmd = "sw_" + cmd; + } + + if (conCommandCreated.find(cmd) == conCommandCreated.end()) + conCommandCreated.insert({ cmd, new ConCommand(cmd.c_str(), commandsCallback, "Swiftly Command", (1 << 25) | (1 << 0) | (1 << 24)) }); +} + +void CommandsManager::UnregisterCommand(std::string cmd) +{ + if (commands.find(cmd) == commands.end()) + return; + + Command* command = FetchCommand(cmd); + std::string plugin = command->GetPluginName(); + + delete command; + commands.erase(cmd); + + std::vector<std::string> aliases = commandAliases.at(cmd); + for (std::string alias : aliases) + UnregisterCommand(alias); + + commandAliases.erase(cmd); + + auto cmdIterator = std::find(commandsByPlugin[plugin].begin(), commandsByPlugin[plugin].end(), cmd); + if (cmdIterator != commandsByPlugin[plugin].end()) + commandsByPlugin[plugin].erase(cmdIterator); + + if (conCommandCreated.find(cmd) != conCommandCreated.end()) { + delete conCommandCreated.at(cmd); + conCommandCreated.erase(cmd); + } + if (conCommandCreated.find("sw_" + cmd) != conCommandCreated.end()) { + delete conCommandCreated.at("sw_" + cmd); + conCommandCreated.erase("sw_" + cmd); + } +} + +std::vector<std::string> CommandsManager::FetchCommandsByPlugin(std::string plugin_name) +{ + if (commandsByPlugin.find(plugin_name) == commandsByPlugin.end()) + return {}; + return commandsByPlugin.at(plugin_name); +} + +std::map<std::string, Command*> CommandsManager::GetCommands() +{ + return commands; +} + +static void commandsCallback(const CCommandContext& context, const CCommand& args) +{ + CCommand tokenizedArgs; + tokenizedArgs.Tokenize(args.GetCommandString()); + + std::string commandName = (starts_with(tokenizedArgs[0], "sw_") ? (tokenizedArgs[0] + 3) : tokenizedArgs[0]); + + std::vector<std::string> argsplit = TokenizeCommand(args.GetCommandString()); + argsplit.erase(argsplit.begin()); + + if (g_commandsManager.FetchCommand(commandName) == nullptr) return; + + Command* command = g_commandsManager.FetchCommand(commandName); + if (!command) return; + + command->Execute(context.GetPlayerSlot().Get(), argsplit, true, "sw_"); +} + +std::string GenerateCommandDefaultPrefix() { + if (commandPrefixes.size() == 0 && silentCommandPrefixes.size() == 0) return "sw_"; + + if (commandPrefixes.size() == 0) return (*silentCommandPrefixes.begin()); + else return (*commandPrefixes.begin()); +} \ No newline at end of file diff --git a/src/server/commands/manager.h b/src/server/commands/manager.h new file mode 100644 index 000000000..d9b8d004a --- /dev/null +++ b/src/server/commands/manager.h @@ -0,0 +1,39 @@ +#ifndef _server_commands_h +#define _server_commands_h + +#include <map> +#include <string> +#include <vector> +#include <set> + +#include "command.h" +#include <core/entrypoint.h> + +std::string GenerateCommandDefaultPrefix(); + +class CommandsManager +{ +private: + std::map<std::string, Command *> commands; + std::map<std::string, std::vector<std::string>> commandAliases; + std::map<std::string, std::vector<std::string>> commandsByPlugin; + +public: + void Initialize(); + void Shutdown(); + + int HandleCommand(int playerid, std::string text); + + Command* FetchCommand(std::string cmd_name); + void RegisterCommand(std::string plugin_name, std::string cmd, Command *command, bool registerRaw = false); + void UnregisterCommand(std::string cmd); + + std::vector<std::string> FetchCommandsByPlugin(std::string plugin_name); + std::map<std::string, Command *> GetCommands(); + + void DispatchConCommand(ConCommandRef cmd, const CCommandContext& ctx, const CCommand& args); +}; + +extern CommandsManager g_commandsManager; + +#endif \ No newline at end of file diff --git a/src/server/configuration/configuration.cpp b/src/server/configuration/configuration.cpp new file mode 100644 index 000000000..f64d1f690 --- /dev/null +++ b/src/server/configuration/configuration.cpp @@ -0,0 +1,676 @@ +#include "configuration.h" + +#include <filesystem/files/files.h> +#include <core/entrypoint.h> +#include <utils/utils.h> +#include <utils/common.h> +#include <memory/encoders/json.h> +#include <sdk/game.h> +#include <cstddef> + +#include <swiftly-ext/core.h> + +bool followServerGuidelines = true; + +bool ConfigurationError(std::string configuration_file, std::string error) +{ + if (!g_SMAPI) + return false; + + PLUGIN_PRINTF("Configurations", "Error: %s: %s\n", configuration_file.c_str(), error.c_str()); + return false; +} + +void WriteJSONFile(std::string path, rapidjson::Value& j) +{ + rapidjson::StringBuffer buffer; + rapidjson::PrettyWriter<rapidjson::StringBuffer> writer(buffer); + + j.Accept(writer); + std::string content = buffer.GetString(); + + Files::Write(path, content, false); +} + +rapidjson::Value& GetJSONDoc(rapidjson::Document& doc, std::string key, rapidjson::Value& defaultValue, bool& wasCreated) +{ + rapidjson::Value* currentDoc = &doc; + auto keys = explode(key, "."); + + while (keys.size() > 1) + { + std::string key = keys[0]; + keys.erase(keys.begin()); + + if (!currentDoc->HasMember(key.c_str())) + currentDoc->AddMember(rapidjson::Value().SetString(key.c_str(), doc.GetAllocator()), rapidjson::Value(rapidjson::kObjectType), doc.GetAllocator()); + else if (!currentDoc->operator[](key.c_str()).IsObject()) + currentDoc->operator[](key.c_str()).SetObject(); + + currentDoc = &currentDoc->operator[](key.c_str()); + } + + if (!currentDoc->HasMember(keys[0].c_str())) + { + currentDoc->AddMember(rapidjson::Value().SetString(keys[0].c_str(), doc.GetAllocator()), defaultValue, doc.GetAllocator()); + wasCreated = true; + } + + return currentDoc->operator[](keys[0].c_str()); +} + +template <class T> +void RegisterConfiguration(bool& wasCreated, rapidjson::Document& document, std::string configFilePath, std::string config_prefix, std::string key, T default_value) +{ + rapidjson::Value defaultValue; + + if constexpr (std::is_same<T, std::string>::value) + defaultValue.SetString(default_value.c_str(), document.GetAllocator()); + else if constexpr (std::is_same<T, const char*>::value) + defaultValue.SetString(default_value, document.GetAllocator()); + else if constexpr (std::is_same<T, bool>::value) + defaultValue.SetBool(default_value); + else if constexpr (std::is_same<T, uint64_t>::value) + defaultValue.SetUint64(default_value); + else if constexpr (std::is_same<T, uint32_t>::value) + defaultValue.SetUint(default_value); + else if constexpr (std::is_same<T, uint16_t>::value) + defaultValue.SetUint(default_value); + else if constexpr (std::is_same<T, uint8_t>::value) + defaultValue.SetUint(default_value); + else if constexpr (std::is_same<T, int64_t>::value) + defaultValue.SetInt64(default_value); + else if constexpr (std::is_same<T, int32_t>::value) + defaultValue.SetInt(default_value); + else if constexpr (std::is_same<T, int16_t>::value) + defaultValue.SetInt(default_value); + else if constexpr (std::is_same<T, int8_t>::value) + defaultValue.SetInt(default_value); + else if constexpr (std::is_same<T, float>::value) + defaultValue.SetFloat(default_value); + else if constexpr (std::is_same<T, double>::value) + defaultValue.SetDouble(default_value); + + rapidjson::Value& jsonDoc = GetJSONDoc(document, key, defaultValue, wasCreated); + + if constexpr (std::is_same<T, std::string>::value) + { + if (!jsonDoc.IsString()) + { + jsonDoc = defaultValue; + wasCreated = true; + } + + g_Config.SetValue(config_prefix + "." + key, std::string(jsonDoc.GetString())); + } + else if constexpr (std::is_same<T, const char*>::value) + { + if (!jsonDoc.IsString()) + { + jsonDoc = defaultValue; + wasCreated = true; + } + + g_Config.SetValue(config_prefix + "." + key, std::string(jsonDoc.GetString())); + } + else if constexpr (std::is_same<T, bool>::value) + { + if (!jsonDoc.IsBool()) + { + jsonDoc = defaultValue; + wasCreated = true; + } + + g_Config.SetValue(config_prefix + "." + key, jsonDoc.GetBool()); + } + else if constexpr (std::is_same<T, uint64_t>::value) + { + if (!jsonDoc.IsUint64()) + { + jsonDoc = defaultValue; + wasCreated = true; + } + g_Config.SetValue(config_prefix + "." + key, jsonDoc.GetUint64()); + } + else if constexpr (std::is_same<T, uint32_t>::value) + { + if (!jsonDoc.IsUint()) + { + jsonDoc = defaultValue; + wasCreated = true; + } + + g_Config.SetValue(config_prefix + "." + key, jsonDoc.GetUint()); + } + else if constexpr (std::is_same<T, uint16_t>::value) + { + if (!jsonDoc.IsUint()) + { + jsonDoc = defaultValue; + wasCreated = true; + } + + g_Config.SetValue(config_prefix + "." + key, jsonDoc.GetUint()); + } + else if constexpr (std::is_same<T, uint8_t>::value) + { + if (!jsonDoc.IsUint()) + { + jsonDoc = defaultValue; + wasCreated = true; + } + + g_Config.SetValue(config_prefix + "." + key, jsonDoc.GetUint()); + } + else if constexpr (std::is_same<T, int64_t>::value) + { + if (!jsonDoc.IsInt64()) + { + jsonDoc = defaultValue; + wasCreated = true; + } + + g_Config.SetValue(config_prefix + "." + key, jsonDoc.GetInt64()); + } + else if constexpr (std::is_same<T, int32_t>::value) + { + if (!jsonDoc.IsInt()) + { + jsonDoc = defaultValue; + wasCreated = true; + } + + g_Config.SetValue(config_prefix + "." + key, jsonDoc.GetInt()); + } + else if constexpr (std::is_same<T, int16_t>::value) + { + if (!jsonDoc.IsInt()) + { + jsonDoc = defaultValue; + wasCreated = true; + } + + g_Config.SetValue(config_prefix + "." + key, jsonDoc.GetInt()); + } + else if constexpr (std::is_same<T, int8_t>::value) + { + if (!jsonDoc.IsInt()) + { + jsonDoc = defaultValue; + wasCreated = true; + } + + g_Config.SetValue(config_prefix + "." + key, jsonDoc.GetInt()); + } + else if constexpr (std::is_same<T, float>::value) + { + if (!jsonDoc.IsFloat()) + { + jsonDoc = defaultValue; + wasCreated = true; + } + + g_Config.SetValue(config_prefix + "." + key, jsonDoc.GetFloat()); + } + else if constexpr (std::is_same<T, double>::value) + { + if (!jsonDoc.IsDouble()) + { + jsonDoc = defaultValue; + wasCreated = true; + } + + g_Config.SetValue(config_prefix + "." + key, jsonDoc.GetDouble()); + } +} + +template <class T> +void RegisterConfigurationVector(bool& wasCreated, rapidjson::Document& document, std::string configFilePath, std::string config_prefix, std::string key, std::vector<T> default_value, bool shouldImplode, std::string delimiter) +{ + rapidjson::Value defaultValue(rapidjson::kArrayType); + + for (const T& val : default_value) + { + rapidjson::Value defVal; + + if constexpr (std::is_same<T, std::string>::value) + defVal.SetString(val.c_str(), document.GetAllocator()); + else if constexpr (std::is_same<T, const char*>::value) + defVal.SetString(val, document.GetAllocator()); + else if constexpr (std::is_same<T, bool>::value) + defVal.SetBool(val); + else if constexpr (std::is_same<T, uint64_t>::value) + defVal.SetUint64(val); + else if constexpr (std::is_same<T, uint32_t>::value) + defVal.SetUint(val); + else if constexpr (std::is_same<T, uint16_t>::value) + defVal.SetUint(val); + else if constexpr (std::is_same<T, uint8_t>::value) + defVal.SetUint(val); + else if constexpr (std::is_same<T, int64_t>::value) + defVal.SetInt64(val); + else if constexpr (std::is_same<T, int32_t>::value) + defVal.SetInt(val); + else if constexpr (std::is_same<T, int16_t>::value) + defVal.SetInt(val); + else if constexpr (std::is_same<T, int8_t>::value) + defVal.SetInt(val); + else if constexpr (std::is_same<T, float>::value) + defVal.SetFloat(val); + else if constexpr (std::is_same<T, double>::value) + defVal.SetDouble(val); + + defaultValue.PushBack(defVal, document.GetAllocator()); + } + + rapidjson::Value& jsonDoc = GetJSONDoc(document, key, defaultValue, wasCreated); + + if (!jsonDoc.IsArray()) + { + jsonDoc = defaultValue; + wasCreated = true; + } + + std::vector<T> result; + + auto arr = jsonDoc.GetArray(); + + for (rapidjson::SizeType i = 0; i < arr.Size(); i++) + { + if constexpr (std::is_same<T, std::string>::value) + { + if (!arr[i].IsString()) + { + ConfigurationError(configFilePath + ".json", string_format("The field \"%s[%d]\" is not a string.\n", key.c_str(), i)); + continue; + } + + result.push_back(std::string(arr[i].GetString())); + } + else if constexpr (std::is_same<T, const char*>::value) + { + if (!arr[i].IsString()) + { + ConfigurationError(configFilePath + ".json", string_format("The field \"%s[%d]\" is not a string.\n", key.c_str(), i)); + continue; + } + + result.push_back(arr[i].GetString()); + } + else if constexpr (std::is_same<T, bool>::value) + { + if (!arr[i].IsBool()) + { + ConfigurationError(configFilePath + ".json", string_format("The field \"%s[%d]\" is not a boolean.\n", key.c_str(), i)); + continue; + } + result.push_back(arr[i].GetBool()); + } + else if constexpr (std::is_same<T, uint64_t>::value) + { + if (!arr[i].IsInt64()) + { + ConfigurationError(configFilePath + ".json", string_format("The field \"%s[%d]\" is not an unsigned integer (64-bit).\n", key.c_str(), i)); + continue; + } + result.push_back(arr[i].GetUint64()); + } + else if constexpr (std::is_same<T, uint32_t>::value) + { + if (!arr[i].IsInt()) + { + ConfigurationError(configFilePath + ".json", string_format("The field \"%s[%d]\" is not an unsigned integer (32-bit).\n", key.c_str(), i)); + continue; + } + result.push_back(arr[i].GetUint()); + } + else if constexpr (std::is_same<T, uint16_t>::value) + { + if (!arr[i].IsInt()) + { + ConfigurationError(configFilePath + ".json", string_format("The field \"%s[%d]\" is not an unsigned integer (16-bit).\n", key.c_str(), i)); + continue; + } + result.push_back((uint16_t)arr[i].GetUint()); + } + else if constexpr (std::is_same<T, uint8_t>::value) + { + if (!arr[i].IsInt()) + { + ConfigurationError(configFilePath + ".json", string_format("The field \"%s[%d]\" is not an unsigned integer (8-bit).\n", key.c_str(), i)); + continue; + } + result.push_back((uint8_t)arr[i].GetUint()); + } + else if constexpr (std::is_same<T, int64_t>::value) + { + if (!arr[i].IsInt64()) + { + ConfigurationError(configFilePath + ".json", string_format("The field \"%s[%d]\" is not an integer (64-bit).\n", key.c_str(), i)); + continue; + } + result.push_back(arr[i].GetInt64()); + } + else if constexpr (std::is_same<T, int32_t>::value) + { + if (!arr[i].IsInt()) + { + ConfigurationError(configFilePath + ".json", string_format("The field \"%s[%d]\" is not an integer (32-bit).\n", key.c_str(), i)); + continue; + } + result.push_back(arr[i].GetInt()); + } + else if constexpr (std::is_same<T, int16_t>::value) + { + if (!arr[i].IsInt()) + { + ConfigurationError(configFilePath + ".json", string_format("The field \"%s[%d]\" is not an integer (16-bit).\n", key.c_str(), i)); + continue; + } + result.push_back((int16_t)arr[i].GetInt()); + } + else if constexpr (std::is_same<T, int8_t>::value) + { + if (!arr[i].IsInt()) + { + ConfigurationError(configFilePath + ".json", string_format("The field \"%s[%d]\" is not an integer (8-bit).\n", key.c_str(), i)); + continue; + } + result.push_back((int8_t)arr[i].GetInt()); + } + else if constexpr (std::is_same<T, float>::value) + { + if (!arr[i].IsFloat()) + { + ConfigurationError(configFilePath + ".json", string_format("The field \"%s[%d]\" is not a float.\n", key.c_str(), i)); + continue; + } + result.push_back(arr[i].GetFloat()); + } + else if constexpr (std::is_same<T, double>::value) + { + if (!arr[i].IsFloat()) + { + ConfigurationError(configFilePath + ".json", string_format("The field \"%s[%d]\" is not a double.\n", key.c_str(), i)); + continue; + } + result.push_back(arr[i].GetDouble()); + } + else + { + ConfigurationError(configFilePath + ".json", string_format("Invalid data type: %s.\n", typeid(T).name())); + return; + } + } + + if (shouldImplode) + { + std::vector<std::string> implodeArr; + for (const T& val : result) + { + if constexpr (std::is_same<T, std::string>::value) + implodeArr.push_back(val); + else if constexpr (std::is_same<T, const char*>::value) + implodeArr.push_back(std::string(val)); + else + implodeArr.push_back(std::to_string(val)); + } + + g_Config.SetValue(config_prefix + "." + key, implode(implodeArr, delimiter)); + } + else + g_Config.SetValue(config_prefix + "." + key, result); +} + +bool Configuration::LoadConfiguration() +{ + auto coreConfigFile = encoders::json::FromString(Files::Read("addons/swiftly/configs/core.json"), "addons/swiftly/configs/core.json"); + if (!coreConfigFile.IsObject()) { + return ConfigurationError("core.json", "Core configuration file needs to be an object."); + } + + bool wasEdited = false; + + RegisterConfiguration(wasEdited, coreConfigFile, "core", "core", "logging.enabled", true); + RegisterConfiguration(wasEdited, coreConfigFile, "core", "core", "logging.mode", std::string("daily")); + RegisterConfiguration(wasEdited, coreConfigFile, "core", "core", "logging.save_core_messages", false); + + std::string loggingMode = coreConfigFile["logging"]["mode"].GetString(); + if (loggingMode != "daily" && loggingMode != "map" && loggingMode != "permanent") { + return ConfigurationError("core.json", "The field \"logging.mode\" needs to be: \"daily\" or \"map\"."); + } + + RegisterConfigurationVector<std::string>(wasEdited, coreConfigFile, "core", "core", "commandPrefixes", { "!" }, true, " "); + RegisterConfigurationVector<std::string>(wasEdited, coreConfigFile, "core", "core", "commandSilentPrefixes", { "/" }, true, " "); + RegisterConfigurationVector<std::string>(wasEdited, coreConfigFile, "core", "core", "patches_to_perform", {}, true, " "); + + if (GetGameName() == "cs2") RegisterConfiguration(wasEdited, coreConfigFile, "core", "core", "CS2ServerGuidelines", "https://blog.counter-strike.net/index.php/server_guidelines/"); + RegisterConfiguration(wasEdited, coreConfigFile, "core", "core", string_format("Follow%sServerGuidelines", str_toupper(GetGameName()).c_str()), true); + + followServerGuidelines = FetchValue<bool>(string_format("core.Follow%sServerGuidelines", str_toupper(GetGameName()).c_str())); + + RegisterConfiguration(wasEdited, coreConfigFile, "core", "core", "console_filtering", true); + + RegisterConfiguration(wasEdited, coreConfigFile, "core", "core", "language", "en"); + RegisterConfiguration(wasEdited, coreConfigFile, "core", "core", "use_player_language", true); + + RegisterConfiguration(wasEdited, coreConfigFile, "core", "core", "menu.navigation_prefix", "➤"); + + RegisterConfiguration(wasEdited, coreConfigFile, "core", "core", "menu.sound.use.name", "Vote.Cast.Yes"); + RegisterConfiguration(wasEdited, coreConfigFile, "core", "core", "menu.sound.use.volume", 0.75); + + RegisterConfiguration(wasEdited, coreConfigFile, "core", "core", "menu.sound.scroll.name", "UI.ContractType"); + RegisterConfiguration(wasEdited, coreConfigFile, "core", "core", "menu.sound.scroll.volume", 0.75); + + RegisterConfiguration(wasEdited, coreConfigFile, "core", "core", "menu.sound.exit.name", "Vote.Failed"); + RegisterConfiguration(wasEdited, coreConfigFile, "core", "core", "menu.sound.exit.volume", 0.75); + + RegisterConfiguration(wasEdited, coreConfigFile, "core", "core", "menu.buttons.use", "e"); + RegisterConfiguration(wasEdited, coreConfigFile, "core", "core", "menu.buttons.scroll", "shift"); + RegisterConfiguration(wasEdited, coreConfigFile, "core", "core", "menu.buttons.exit.option", false); + RegisterConfiguration(wasEdited, coreConfigFile, "core", "core", "menu.buttons.exit.button", "tab"); + + RegisterConfiguration(wasEdited, coreConfigFile, "core", "core", "menu.kind", "screen"); + RegisterConfigurationVector<std::string>(wasEdited, coreConfigFile, "core", "core", "menu.available_kinds", { "screen", "center" }, true, " "); + + RegisterConfigurationVector<std::string>(wasEdited, coreConfigFile, "core", "core", "menu.available_inputmodes", { "chat", "button" }, true, " "); + RegisterConfiguration(wasEdited, coreConfigFile, "core", "core", "menu.inputMode", "button"); + + RegisterConfiguration(wasEdited, coreConfigFile, "core", "core", "menu.kind_settings.center.itemsPerPage", 7); + + RegisterConfiguration(wasEdited, coreConfigFile, "core", "core", "menu.kind_settings.screen.mode", "compatibility"); + + RegisterConfiguration<float>(wasEdited, coreConfigFile, "core", "core", "menu.kind_settings.screen.modes.compatibility.x", 0.14); + RegisterConfiguration<float>(wasEdited, coreConfigFile, "core", "core", "menu.kind_settings.screen.modes.compatibility.y", 0.68); + RegisterConfiguration(wasEdited, coreConfigFile, "core", "core", "menu.kind_settings.screen.modes.compatibility.fontSize", 35); + RegisterConfiguration(wasEdited, coreConfigFile, "core", "core", "menu.kind_settings.screen.modes.compatibility.font", "Sans Serif"); + + RegisterConfiguration<float>(wasEdited, coreConfigFile, "core", "core", "menu.kind_settings.screen.modes.normal.x", 0.0); + RegisterConfiguration<float>(wasEdited, coreConfigFile, "core", "core", "menu.kind_settings.screen.modes.normal.y", 0.68); + RegisterConfiguration(wasEdited, coreConfigFile, "core", "core", "menu.kind_settings.screen.modes.normal.fontSize", 35); + RegisterConfiguration(wasEdited, coreConfigFile, "core", "core", "menu.kind_settings.screen.modes.normal.font", "Sans Serif"); + + RegisterConfiguration(wasEdited, coreConfigFile, "core", "core", "menu.kind_settings.screen.drawBackground", true); + RegisterConfiguration(wasEdited, coreConfigFile, "core", "core", "menu.kind_settings.screen.itemsPerPage", 9); + + RegisterConfiguration<float>(wasEdited, coreConfigFile, "core", "core", "vgui.textBackground.paddingX", 0.1); + RegisterConfiguration<float>(wasEdited, coreConfigFile, "core", "core", "vgui.textBackground.paddingY", 0.1); + + RegisterConfiguration(wasEdited, coreConfigFile, "core", "core", "vgui.textBackground.textSize", 35); + + if (wasEdited) { + WriteJSONFile("addons/swiftly/configs/core.json", coreConfigFile); + } + + loaded = true; + + return true; +} + +void Configuration::SetArraySize(std::string key, unsigned int size) +{ + configArraySizes.insert({ key, size }); +} + +template <typename T> +void Configuration::SetValue(std::string key, T value) +{ + if (config.find(key) == config.end()) + config.insert({ key, value }); + else + config[key] = value; +} + +template <typename T> +void Configuration::SetPluginValue(std::string key, T value) +{ + pluginConfig.insert_or_assign(key, value); +} + +void Configuration::ClearPluginConfig() +{ + pluginConfig.clear(); +} + +bool Configuration::IsConfigurationLoaded() +{ + return loaded; +} + +std::map<std::string, std::any>& Configuration::FetchPluginConfiguration() { + return pluginConfig; +} + +std::map<std::string, std::any>& Configuration::FetchConfiguration() { + return config; +} + +std::map<std::string, unsigned int> Configuration::FetchConfigArraySizes() { + return configArraySizes; +} + +bool Configuration::HasKey(std::string key) { + return config.find(key) != config.end(); +} + +void LoadConfigPart(std::string key, rapidjson::Value& document); + +void LoadValue(const char* key, const char* keyname, rapidjson::Value& value, std::string separator = ".") +{ + std::string k = key + separator + keyname; + if (value.IsBool()) + g_Config.SetPluginValue(k, value.GetBool()); + else if (value.IsString()) + g_Config.SetPluginValue(k, std::string(value.GetString())); + else if (value.IsDouble()) + g_Config.SetPluginValue(k, value.GetDouble()); + else if (value.IsFloat()) + g_Config.SetPluginValue(k, value.GetFloat()); + else if (value.IsInt64()) + g_Config.SetPluginValue(k, value.GetInt64()); + else if (value.IsInt()) + g_Config.SetPluginValue(k, value.GetInt()); + else if (value.IsUint64()) + g_Config.SetPluginValue(k, value.GetUint64()); + else if (value.IsUint()) + g_Config.SetPluginValue(k, value.GetUint()); + else if (value.IsNull()) + g_Config.SetPluginValue(k, nullptr); + else if (value.IsObject()) { + g_Config.SetPluginValue(k, string_format("JSON⇚%s⇛", encoders::json::ToString(value).c_str())); + LoadConfigPart(k, value); + } + else if (value.IsArray()) + { + g_Config.SetPluginValue(k, string_format("JSON⇚%s⇛", encoders::json::ToString(value).c_str())); + g_Config.SetArraySize(k, value.Size()); + for (size_t i = 0; i < value.Size(); i++) + { + g_Config.SetPluginValue(string_format("%s[%d]", k.c_str(), i).c_str(), nullptr); + LoadValue(k.c_str(), string_format("[%d]", i).c_str(), value[i], ""); + } + } +} + +void LoadConfigPart(std::string key, rapidjson::Value& document) +{ + for (auto it = document.MemberBegin(); it != document.MemberEnd(); ++it) + { + std::string keyname = it->name.GetString(); + LoadValue(key.c_str(), keyname.c_str(), it->value); + } +} + +void Configuration::LoadPluginConfigurations() +{ + std::vector<std::string> configFiles = Files::FetchFileNames("addons/swiftly/configs/plugins"); + for (const std::string configFilePath : configFiles) + { + std::string configFileName = explode(configFilePath, string_format("addons/swiftly/configs/plugins%s", WIN_LINUX("\\", "/")))[1]; + if (!ends_with(configFileName, ".json")) + continue; + + configFileName = replace(configFileName, "\\", "."); + configFileName = replace(configFileName, "/", "."); + + auto configurationFile = encoders::json::FromString(Files::Read(configFilePath), configFilePath); + if (!configurationFile.IsObject()) + { + ConfigurationError(configFileName, "Configuration file needs to be an object."); + continue; + } + + std::string main_key = explode(configFileName, ".json")[0]; + rapidjson::Value& root = configurationFile; + + g_Config.SetPluginValue(main_key, encoders::json::ToString(root)); + LoadConfigPart(main_key, root); + } +} + +void Configuration::LoadPluginConfig(std::string key) +{ + std::string configFilePath = "addons/swiftly/configs/plugins" + std::string(WIN_LINUX("\\", "/")) + key + ".json"; + std::string configFileName = key + ".json"; + if (Files::Read(configFilePath).size() == 0) + return; + + key = replace(key, "/", "."); + key = replace(key, "\\", "."); + + std::vector<std::string> toRemoveKeys; + for (std::map<std::string, std::any>::iterator it = this->config.begin(); it != this->config.end(); ++it) + if (starts_with(it->first, key + ".")) + toRemoveKeys.push_back(it->first); + toRemoveKeys.push_back(key); + + for (std::string k : toRemoveKeys) + this->config.erase(k); + + auto configurationFile = encoders::json::FromString(Files::Read(configFilePath), configFilePath); + if (!configurationFile.IsObject()) + { + ConfigurationError(configFileName, "Configuration file needs to be an object."); + return; + } + + configFileName = replace(configFileName, "/", "."); + configFileName = replace(configFileName, "\\", "."); + std::string main_key = explode(configFileName, ".json")[0]; + + rapidjson::Value& root = configurationFile; + + g_Config.SetPluginValue(main_key, encoders::json::ToString(root)); + LoadConfigPart(main_key, root); +} + +EXT_API void* swiftly_GetConfigurationValue(const char* key) +{ + auto& config = g_Config.FetchConfiguration(); + if (config.find(key) != config.end()) return (void*)&(config[key]); + + auto& pluginConfig = g_Config.FetchPluginConfiguration(); + if (pluginConfig.find(key) != pluginConfig.end()) return (void*)&(pluginConfig[key]); + + return nullptr; +} \ No newline at end of file diff --git a/src/server/configuration/configuration.h b/src/server/configuration/configuration.h new file mode 100644 index 000000000..c1925bf74 --- /dev/null +++ b/src/server/configuration/configuration.h @@ -0,0 +1,61 @@ +#ifndef _server_configuration_configuration_h +#define _server_configuration_configuration_h + +#include <string> +#include <map> +#include <any> + +#include <rapidjson/json.hpp> + +class Configuration +{ +private: + std::map<std::string, std::any> config; + std::map<std::string, std::any> pluginConfig; + std::map<std::string, unsigned int> configArraySizes; + bool loaded = false; + +public: + bool LoadConfiguration(); + bool IsConfigurationLoaded(); + + void LoadPluginConfigurations(); + + std::map<std::string, std::any>& FetchPluginConfiguration(); + std::map<std::string, std::any>& FetchConfiguration(); + std::map<std::string, unsigned int> FetchConfigArraySizes(); + + void SetArraySize(std::string key, unsigned int size); + + template <typename T> + T FetchValue(std::string key); + + template <typename T> + void SetValue(std::string key, T value); + + template <typename T> + void SetPluginValue(std::string key, T value); + + bool HasKey(std::string key); + void LoadPluginConfig(std::string key); + void ClearPluginConfig(); +}; + +extern Configuration g_Config; + +template <typename T> +T Configuration::FetchValue(std::string key) +{ + if (config.find(key) == config.end()) + return 0; + + try { + return std::any_cast<T>(config[key]); + } + catch (std::bad_any_cast& e) { + fprintf(stdout, "%s: %s\n", key.c_str(), e.what()); + return (T)0; + } +} + +#endif \ No newline at end of file diff --git a/src/server/menus/Menu.h b/src/server/menus/Menu.h new file mode 100644 index 000000000..1d365d158 --- /dev/null +++ b/src/server/menus/Menu.h @@ -0,0 +1,29 @@ +#ifndef _server_menus_menu_h +#define _server_menus_menu_h + +#include <string> +#include <map> +#include <vector> +#include <public/Color.h> +#include <server/translations/translations.h> +#include <server/commands/manager.h> + +class Menu +{ +public: + virtual std::string GetID() = 0; + virtual void ProcessOptions() = 0; + virtual std::string GeneratedItems(int playerid, int page) = 0; + virtual std::string GenerateFooter(int page) = 0; + virtual void RegeneratePage(int playerid, int page, int selected) = 0; + + virtual std::string GetCommandFromOption(int page, int selected) = 0; + virtual int GetItemsOnPage(int page) = 0; + virtual bool IsTemporary() = 0; + + virtual Color GetColor() = 0; + virtual bool RenderEachTick() = 0; + virtual std::string GetKind() = 0; +}; + +#endif \ No newline at end of file diff --git a/src/server/menus/MenuManager.cpp b/src/server/menus/MenuManager.cpp new file mode 100644 index 000000000..8d3fe2b54 --- /dev/null +++ b/src/server/menus/MenuManager.cpp @@ -0,0 +1,77 @@ +#include "MenuManager.h" + +#include <server/player/manager.h> +#include <server/configuration/configuration.h> + +std::map<std::string, bool> scheduledForDelete; + +void MenuManager::RegisterMenu(std::string plugin_name, std::string id, std::string title, std::string color, std::vector<std::pair<std::string, std::string>> options, bool temporary, std::string kind) +{ + if (this->menu_ids.find(id) != this->menu_ids.end()) + return; + if (options.size() <= 0) + return; + + if (kind != "screen" && kind != "center") kind = g_Config.FetchValue<std::string>("core.menu.kind"); + + Menu* menu = nullptr; + if (kind == "screen") { + menu = new ScreenMenu(id, title, color, options, temporary); + } + else if (kind == "center") { + menu = new CenterMenu(id, title, color, options, temporary); + } + if (!menu) return; + + this->menu_ids.insert(std::make_pair(id, menu)); + if (this->menu_id_by_plugin.find(plugin_name) == this->menu_id_by_plugin.end()) + this->menu_id_by_plugin.insert({ plugin_name, {} }); + + this->menu_id_by_plugin[plugin_name].push_back(id); +} + +void MenuManager::UnregisterMenu(std::string id) +{ + if (this->menu_ids.find(id) == this->menu_ids.end()) + return; + if (scheduledForDelete.find(id) != scheduledForDelete.end()) + return; + + scheduledForDelete.insert({ id, true }); + for (uint16_t i = 0; i < g_playerManager.GetPlayerCap(); i++) + { + Player* player = g_playerManager.GetPlayer(i); + if (!player) + continue; + if (player->IsFakeClient()) + continue; + if (!player->menu_renderer->HasMenuShown()) + continue; + + if (player->menu_renderer->GetMenu()->GetID() == id) + player->menu_renderer->HideMenu(); + } + + delete this->menu_ids[id]; + this->menu_ids.erase(id); + scheduledForDelete.erase(id); +} + +Menu* MenuManager::FetchMenu(std::string menu_id) +{ + if (this->menu_ids.find(menu_id) == this->menu_ids.end()) + return nullptr; + + return this->menu_ids[menu_id]; +} + +void MenuManager::UnregisterPluginMenus(std::string plugin_name) +{ + if (this->menu_id_by_plugin.find(plugin_name) == this->menu_id_by_plugin.end()) + return; + + for (std::string id : this->menu_id_by_plugin[plugin_name]) + this->UnregisterMenu(id); + + this->menu_id_by_plugin.erase(plugin_name); +} \ No newline at end of file diff --git a/src/server/menus/MenuManager.h b/src/server/menus/MenuManager.h new file mode 100644 index 000000000..8c5897431 --- /dev/null +++ b/src/server/menus/MenuManager.h @@ -0,0 +1,27 @@ +#ifndef _server_menus_manager_h +#define _server_menus_manager_h + +#include <string> +#include <map> +#include <vector> + +#include "kinds/ScreenMenu.h" +#include "kinds/CenterMenu.h" + +class MenuManager +{ +private: + std::map<std::string, Menu*> menu_ids; + std::map<std::string, std::vector<std::string>> menu_id_by_plugin; + +public: + void RegisterMenu(std::string plugin_name, std::string id, std::string title, std::string color, std::vector<std::pair<std::string, std::string>> options, bool temporary, std::string kind); + void UnregisterMenu(std::string id); + + Menu* FetchMenu(std::string menu_id); + void UnregisterPluginMenus(std::string plugin_name); +}; + +extern MenuManager g_MenuManager; + +#endif \ No newline at end of file diff --git a/src/server/menus/MenuRenderer.cpp b/src/server/menus/MenuRenderer.cpp new file mode 100644 index 000000000..fce0c8d0c --- /dev/null +++ b/src/server/menus/MenuRenderer.cpp @@ -0,0 +1,264 @@ +#include "MenuManager.h" +#include "MenuRenderer.h" + +#include <server/configuration/configuration.h> +#include <engine/vgui/vgui.h> +#include <memory/gamedata/gamedata.h> +#include <server/commands/manager.h> +#include <server/player/manager.h> +#include <utils/utils.h> +#include <sdk/components/EmitSound_t.h> +#include <sdk/components/CSingleRecipientFilter.h> + +typedef IGameEventListener2* (*GetLegacyGameEventListener)(CPlayerSlot slot); + +typedef SndOpEventGuid_t(*CBaseEntity_EmitSoundFilter)(IRecipientFilter& filter, CEntityIndex ent, const EmitSound_t& params); + +void EmitSoundFilter(int playerid, std::string sound_name, float pitch, float volume) +{ + auto player = g_playerManager.GetPlayer(playerid); + if (!player) return; + + CEntityInstance* instance = (CEntityInstance*)player->GetController(); + if (!instance) return; + + EmitSound_t params; + params.m_pSoundName = sound_name.c_str(); + params.m_flVolume = volume; + params.m_nPitch = pitch; + + CBaseEntity_EmitSoundFilter filter = g_GameData.FetchSignature<CBaseEntity_EmitSoundFilter>("CBaseEntity_EmitSoundFilter"); + + CSingleRecipientFilter playerfilter(playerid); + filter(playerfilter, instance->m_pEntity->m_EHandle.GetEntryIndex(), params); +} + +MenuRenderer::MenuRenderer(Player* player) +{ + m_player = player; + + CPlayerSlot slot = player->GetSlot(); + + centerMessageEvent = g_gameEventManager->CreateEvent("show_survival_respawn_status", true); + centerMessageEvent->SetUint64("duration", 1); + centerMessageEvent->SetInt("userid", slot.Get()); + + playerListener = g_GameData.FetchSignature<GetLegacyGameEventListener>("LegacyGameEventListener")(slot); + + menu = nullptr; +} + +MenuRenderer::~MenuRenderer() +{ + HideMenu(); + g_gameEventManager->FreeEvent(centerMessageEvent); +} + +void MenuRenderer::ShowMenu(std::string menu_id) +{ + if (menu != nullptr) return; + + Menu* m = g_MenuManager.FetchMenu(menu_id); + if (m == nullptr) return; + + menu = m; + page = 1; + selected = 0; + + menu->RegeneratePage(m_player->GetSlot(), page, selected); + + std::string kind = menu->GetKind(); + if (kind == "center") { + RenderMenu(); + } + else if (kind == "screen") { + menuTextID = g_VGUI.RegisterScreenText(); + + auto menuText = g_VGUI.GetScreenText(menuTextID); + + std::string menu_mode = g_Config.FetchValue<std::string>("core.menu.kind_settings.screen.mode"); + std::string font = g_Config.FetchValue<std::string>(string_format("core.menu.kind_settings.screen.modes.%s.font", menu_mode.c_str())); + + float posX = g_Config.FetchValue<float>(string_format("core.menu.kind_settings.screen.modes.%s.x", menu_mode.c_str())); + float posY = g_Config.FetchValue<float>(string_format("core.menu.kind_settings.screen.modes.%s.y", menu_mode.c_str())); + + int fontSize = g_Config.FetchValue<int>(string_format("core.menu.kind_settings.screen.modes.%s.fontSize", menu_mode.c_str())); + + bool hasBackground = g_Config.FetchValue<bool>("core.menu.kind_settings.screen.drawBackground"); + + menuText->Create(menu->GetColor(), font, fontSize, hasBackground, true); + menuText->SetupViewForPlayer(m_player); + RenderMenu(); + menuText->SetPosition(posX, posY); + } +} + +void MenuRenderer::HideMenu() +{ + if (menu == nullptr) return; + + page = 0; + selected = 0; + + std::string kind = menu->GetKind(); + if (menu->IsTemporary()) { + std::string menuID = menu->GetID(); + g_MenuManager.UnregisterMenu(menuID); + } + + menu = nullptr; + + if (kind == "center") { + if (centerMessageEvent) { + centerMessageEvent->SetString("loc_token", "Exiting..."); + playerListener->FireGameEvent(centerMessageEvent); + } + } + else if (kind == "screen") { + g_VGUI.DeleteScreenText(menuTextID); + + menuTextID = 0; + } +} + +bool MenuRenderer::HasMenuShown() +{ + return (menu != nullptr); +} + +Menu* MenuRenderer::GetMenu() +{ + return menu; +} + +int MenuRenderer::GetPage() +{ + return page; +} + +void MenuRenderer::SetPage(int pg) +{ + page = pg; + selected = 0; + menu->RegeneratePage(m_player->GetSlot(), page, selected); + RenderMenu(); +} + +int MenuRenderer::GetSelection() +{ + return selected; +} + +void MenuRenderer::MoveSelection() +{ + if (page == 0) + return; + + int itemsPerPage = menu->GetItemsOnPage(page); + ++selected; + if (itemsPerPage == selected) + selected = 0; + + menu->RegeneratePage(m_player->GetSlot(), page, selected); + RenderMenu(); +} + +void MenuRenderer::RenderMenu() { + if (!menu) return; + std::string kind = menu->GetKind(); + if (kind == "center") { + centerMessageEvent->SetString("loc_token", menu->GeneratedItems(m_player->GetSlot(), page).c_str()); + } + else if (kind == "screen") { + auto menuText = g_VGUI.GetScreenText(menuTextID); + if (!menuText) return; + + menuText->SetText(menu->GeneratedItems(m_player->GetSlot(), page)); + } +} + +void MenuRenderer::RenderMenuTick() +{ + if (!menu) return; + if (!menu->RenderEachTick()) return; + + std::string kind = menu->GetKind(); + if (kind == "center") { + playerListener->FireGameEvent(centerMessageEvent); + } +} + +bool MenuRenderer::ShouldRenderEachTick() +{ + if (!menu) return false; + return menu->RenderEachTick(); +} + +void MenuRenderer::PerformMenuAction(std::string button) +{ + if (!HasMenuShown()) + return; + + int playerid = m_player->GetSlot(); + + if (button == g_Config.FetchValue<std::string>("core.menu.buttons.scroll")) + { + EmitSoundFilter(playerid, g_Config.FetchValue<std::string>("core.menu.sound.scroll.name"), 1.0, g_Config.FetchValue<double>("core.menu.sound.scroll.volume")); + + MoveSelection(); + } + else if (!g_Config.FetchValue<bool>("core.menu.buttons.exit.option") && button == g_Config.FetchValue<std::string>("core.menu.buttons.exit.button")) + { + EmitSoundFilter(playerid, g_Config.FetchValue<std::string>("core.menu.sound.exit.name"), 1.0, g_Config.FetchValue<double>("core.menu.sound.exit.volume")); + + HideMenu(); + } + else if (button == g_Config.FetchValue<std::string>("core.menu.buttons.use")) + { + std::string cmd = GetMenu()->GetCommandFromOption(GetPage(), GetSelection()); + + if (cmd != "menuexit") + EmitSoundFilter(playerid, g_Config.FetchValue<std::string>("core.menu.sound.use.name"), 1.0, g_Config.FetchValue<double>("core.menu.sound.use.volume")); + + if (cmd == "menunext") + { + SetPage(GetPage() + 1); + } + else if (cmd == "menuback") + { + SetPage(GetPage() - 1); + } + else if (g_Config.FetchValue<bool>("core.menu.buttons.exit.option") && cmd == "menuexit") + { + EmitSoundFilter(playerid, g_Config.FetchValue<std::string>("core.menu.sound.exit.name"), 1.0, g_Config.FetchValue<double>("core.menu.sound.exit.volume")); + + HideMenu(); + } + else if (g_MenuManager.FetchMenu(cmd)) + { + HideMenu(); + ShowMenu(cmd); + } + else if (starts_with(cmd, "sw_")) + { + CCommand tokenizedArgs; + tokenizedArgs.Tokenize(cmd.c_str()); + + std::string commandName = (tokenizedArgs[0] + 3); + + std::vector<std::string> argsplit = TokenizeCommand(cmd.c_str()); + argsplit.erase(argsplit.begin()); + + if (g_commandsManager.FetchCommand(commandName) == nullptr) + return; + + Command* command = g_commandsManager.FetchCommand(commandName); + if (!command) + return; + + command->Execute(m_player->GetSlot(), argsplit, true, "sw_"); + } + else if (cmd != "") + m_player->PerformCommand(cmd); + } +} \ No newline at end of file diff --git a/src/server/menus/MenuRenderer.h b/src/server/menus/MenuRenderer.h new file mode 100644 index 000000000..d5a8ecfca --- /dev/null +++ b/src/server/menus/MenuRenderer.h @@ -0,0 +1,48 @@ +#ifndef _menus_menurenderer_h +#define _menus_menurenderer_h + +#include <string> +#include <public/igameevents.h> +#include "Menu.h" + +class Player; + +class MenuRenderer +{ +private: + Player* m_player; + + Menu* menu = nullptr; + int page = 0; + int selected = 0; + + // Screen Kind + uint64_t menuTextID = 0; + + // Center Kind + IGameEvent* centerMessageEvent = nullptr; + IGameEventListener2* playerListener = nullptr; + +public: + MenuRenderer(Player* player); + ~MenuRenderer(); + + void ShowMenu(std::string menu_id); + + void HideMenu(); + bool HasMenuShown(); + Menu* GetMenu(); + + int GetPage(); + void SetPage(int pg); + int GetSelection(); + void MoveSelection(); + + void PerformMenuAction(std::string button); + + bool ShouldRenderEachTick(); + void RenderMenu(); + void RenderMenuTick(); +}; + +#endif \ No newline at end of file diff --git a/src/server/menus/kinds/CenterMenu.cpp b/src/server/menus/kinds/CenterMenu.cpp new file mode 100644 index 000000000..8f0691a06 --- /dev/null +++ b/src/server/menus/kinds/CenterMenu.cpp @@ -0,0 +1,149 @@ +#include "CenterMenu.h" + +#include <utils/utils.h> +#include <server/configuration/configuration.h> + +#include <regex> + +CenterMenu::CenterMenu(std::string id, std::string title, std::string color, std::vector<std::pair<std::string, std::string>> options, bool tmp) +{ + this->id = id; + this->color = color; + this->options = options; + this->title = title; + this->temporary = tmp; + + ProcessOptions(); +} + +CenterMenu::~CenterMenu() +{ + this->id.clear(); + this->title.clear(); + this->color.clear(); + this->options.clear(); + this->processedOptions.clear(); +} + +std::string CenterMenu::GetID() +{ + return this->id; +} + +std::string CenterMenu::GetCommandFromOption(int page, int selected) +{ + if (page < 1) + return ""; + + return processedOptions[page - 1][selected].second; +} + +int CenterMenu::GetItemsOnPage(int page) +{ + if (page < 1) + return 0; + + return processedOptions[page - 1].size(); +} + +void CenterMenu::ProcessOptions() +{ + int pages = 0; + int processedItems = 0; + int totalProcessedItems = 0; + std::vector<std::pair<std::string, std::string>> tempmap; + + int reservedItems = g_Config.FetchValue<bool>("core.menu.buttons.exit.option") ? 3 : 2; + int allowedItems = g_Config.FetchValue<int>("core.menu.kind_settings.center.itemsPerPage") - reservedItems; + + for (const std::pair<std::string, std::string> entry : this->options) + { + ++processedItems; + ++totalProcessedItems; + tempmap.push_back({ entry.first, entry.second }); + if (processedItems == allowedItems) + { + if (options.size() - totalProcessedItems > 0) tempmap.push_back({ g_translations.FetchTranslation("core.menu.next"), "menunext" }); + if (pages != 0) tempmap.push_back({ g_translations.FetchTranslation("core.menu.back"), "menuback" }); + if (reservedItems == 3) tempmap.push_back({ g_translations.FetchTranslation("core.menu.exit"), "menuexit" }); + + processedItems = 0; + pages++; + this->processedOptions.push_back(tempmap); + tempmap.clear(); + } + } + + if (tempmap.size() > 0) + { + if (this->processedOptions.size() != 0) tempmap.push_back({ g_translations.FetchTranslation("core.menu.back"), "menuback" }); + if (reservedItems == 3) tempmap.push_back({ g_translations.FetchTranslation("core.menu.exit"), "menuexit" }); + + processedItems = 0; + this->processedOptions.push_back(tempmap); + tempmap.clear(); + } +} + +std::string CenterMenu::GeneratedItems(int playerid, int page) +{ + return this->generatedPages[playerid][page - 1]; +} + +void CenterMenu::RegeneratePage(int playerid, int page, int selected) +{ + if (this->generatedPages.find(playerid) == this->generatedPages.end()) + this->generatedPages.insert({ playerid, {} }); + + while (this->generatedPages[playerid].size() < page) + { + this->generatedPages[playerid].push_back(""); + } + + std::string stringPage = string_format("<div><font color=\"#%s\">&nbsp;&nbsp;&nbsp;%s</font></div><br/>", this->color.c_str(), this->title.c_str()); + for (int i = 0; i < processedOptions[page - 1].size(); i++) + stringPage += string_format("<div><font color=\"#%s\">%s%d. %s</font></div><br/>", (i == selected ? this->color.c_str() : "ffffff"), g_Config.FetchValue<std::string>("core.menu.inputMode") == "chat" ? "&nbsp;&nbsp;&nbsp;&nbsp;" : (i == selected ? (g_Config.FetchValue<std::string>("core.menu.navigation_prefix") + "&nbsp;").c_str() : "&nbsp;&nbsp;&nbsp;&nbsp;"), i + 1, processedOptions[page - 1][i].first.c_str()); + + std::string footer; + if (g_Config.FetchValue<std::string>("core.menu.inputMode") == "chat") { + footer = replace(g_translations.FetchTranslation("core.menu.input.chat"), "{PAGE}", std::to_string(page)); + footer = replace(footer, "{MAXPAGES}", std::to_string(processedOptions.size())); + footer = replace(footer, "{PREFIX}", GenerateCommandDefaultPrefix()); + } + else { + footer = replace(g_translations.FetchTranslation(g_Config.FetchValue<bool>("core.menu.buttons.exit.option") ? "core.menu.center.footer" : "core.menu.center.footer.nooption"), "{PAGE}", std::to_string(page)); + footer = replace(footer, "{MAXPAGES}", std::to_string(processedOptions.size())); + footer = replace(footer, "{CYCLE_BUTTON}", str_toupper(g_Config.FetchValue<std::string>("core.menu.buttons.scroll"))); + footer = replace(footer, "{USE_BUTTON}", str_toupper(g_Config.FetchValue<std::string>("core.menu.buttons.use"))); + footer = replace(footer, "{EXIT_BUTTON}", str_toupper(g_Config.FetchValue<std::string>("core.menu.buttons.exit.button"))); + } + + stringPage += string_format("<font class='fontSize-s'>%s</font>", footer.c_str()); + + this->generatedPages[playerid][page - 1] = stringPage; +} + +bool CenterMenu::IsTemporary() +{ + return this->temporary; +} + +Color CenterMenu::GetColor() +{ + return Color(0, 0, 0); +} + +std::string CenterMenu::GenerateFooter(int page) +{ + return ""; +} + +bool CenterMenu::RenderEachTick() +{ + return true; +} + +std::string CenterMenu::GetKind() +{ + return "center"; +} \ No newline at end of file diff --git a/src/server/menus/kinds/CenterMenu.h b/src/server/menus/kinds/CenterMenu.h new file mode 100644 index 000000000..8f39c5334 --- /dev/null +++ b/src/server/menus/kinds/CenterMenu.h @@ -0,0 +1,36 @@ +#ifndef _menus_kinds_center_h +#define _menus_kinds_center_h + +#include "../Menu.h" + +class CenterMenu : public Menu +{ +private: + std::string id; + std::string title; + std::string color; + std::vector<std::pair<std::string, std::string>> options; + std::vector<std::vector<std::pair<std::string, std::string>>> processedOptions; + bool temporary; + + std::map<int, std::vector<std::string>> generatedPages; +public: + CenterMenu(std::string id, std::string title, std::string color, std::vector<std::pair<std::string, std::string>> options, bool tmp); + ~CenterMenu(); + + std::string GetID(); + void ProcessOptions(); + std::string GeneratedItems(int playerid, int page); + std::string GenerateFooter(int page); + void RegeneratePage(int playerid, int page, int selected); + + std::string GetCommandFromOption(int page, int selected); + int GetItemsOnPage(int page); + bool IsTemporary(); + + Color GetColor(); + bool RenderEachTick(); + std::string GetKind(); +}; + +#endif \ No newline at end of file diff --git a/src/server/menus/kinds/ScreenMenu.cpp b/src/server/menus/kinds/ScreenMenu.cpp new file mode 100644 index 000000000..c22996513 --- /dev/null +++ b/src/server/menus/kinds/ScreenMenu.cpp @@ -0,0 +1,201 @@ +#include "ScreenMenu.h" + +#include <utils/utils.h> +#include <server/configuration/configuration.h> + +#include <regex> + +ScreenMenu::ScreenMenu(std::string id, std::string title, std::string color, std::vector<std::pair<std::string, std::string>> options, bool tmp) +{ + int r = 255, g = 255, b = 255, a = 255; + try { + r = std::stoi(color.substr(0, 2), nullptr, 16); + } + catch (std::exception& e) {} + + try { + g = std::stoi(color.substr(2, 2), nullptr, 16); + } + catch (std::exception& e) {} + + try { + b = std::stoi(color.substr(4, 2), nullptr, 16); + } + catch (std::exception& e) {} + + if (color.length() >= 8) { + try { + a = std::stoi(color.substr(6, 2), nullptr, 16); + } + catch (std::exception& e) {} + } + + this->id = id; + this->color.SetColor(r, g, b, a); + this->options = options; + this->title = title; + this->temporary = tmp; + + ProcessOptions(); +} + +ScreenMenu::~ScreenMenu() +{ + this->id.clear(); + this->title.clear(); + this->options.clear(); + this->processedOptions.clear(); +} + +std::string ScreenMenu::GetID() +{ + return this->id; +} + +std::string ScreenMenu::GetCommandFromOption(int page, int selected) +{ + if (page < 1) + return ""; + + return processedOptions[page - 1][selected].second; +} + +int ScreenMenu::GetItemsOnPage(int page) +{ + if (page < 1) + return 0; + + return processedOptions[page - 1].size(); +} + +std::string stringWithSplit(std::string text, int maxCharsPerRow) { + std::vector<std::string> result; + + auto splitted = explode(text, " "); + std::string tmp = ""; + for (std::string& str : splitted) { + if (tmp.size() + str.size() > maxCharsPerRow) { + result.push_back(tmp); + tmp = ""; + } + tmp += (str + " "); + } + if (tmp != "") result.push_back(tmp); + + return implode(result, "\n "); +} + +std::string RemoveHtmlTags(std::string input) { + std::regex pattern("<(/?)(div|font)[^>]*>"); + + return std::regex_replace(input, pattern, ""); +} + +void ScreenMenu::ProcessOptions() +{ + int pages = 0; + int processedItems = 0; + int totalProcessedItems = 0; + std::vector<std::pair<std::string, std::string>> tempmap; + + int reservedItems = g_Config.FetchValue<bool>("core.menu.buttons.exit.option") ? 3 : 2; + int allowedItems = g_Config.FetchValue<int>("core.menu.kind_settings.screen.itemsPerPage") - reservedItems; + + for (const std::pair<std::string, std::string> entry : this->options) + { + ++processedItems; + ++totalProcessedItems; + + tempmap.push_back({ stringWithSplit(RemoveHtmlTags(entry.first), 35), entry.second }); + + if (processedItems - (pages == 0 ? 1 : 0) == allowedItems) + { + tempmap[tempmap.size() - 1].first += "\n"; + if (options.size() - totalProcessedItems > 0) tempmap.push_back({ stringWithSplit(RemoveHtmlTags(g_translations.FetchTranslation("core.menu.next")), 35), "menunext" }); + if (pages != 0) tempmap.push_back({ stringWithSplit(RemoveHtmlTags(g_translations.FetchTranslation("core.menu.back")), 35), "menuback" }); + if (reservedItems == 3) tempmap.push_back({ stringWithSplit(RemoveHtmlTags(g_translations.FetchTranslation("core.menu.exit")), 35), "menuexit" }); + + processedItems = 0; + pages++; + this->processedOptions.push_back(tempmap); + tempmap.clear(); + } + } + + if (tempmap.size() > 0) + { + std::string padding = "\n"; + for (int i = 0; i < allowedItems - tempmap.size() + 2; i++) padding += "\n"; + tempmap[tempmap.size() - 1].first += padding; + + if (this->processedOptions.size() != 0) tempmap.push_back({ stringWithSplit(RemoveHtmlTags(g_translations.FetchTranslation("core.menu.back")), 35), "menuback" }); + if (reservedItems == 3) tempmap.push_back({ stringWithSplit(RemoveHtmlTags(g_translations.FetchTranslation("core.menu.exit")), 35), "menuexit" }); + + processedItems = 0; + this->processedOptions.push_back(tempmap); + tempmap.clear(); + } +} + +std::string ScreenMenu::GeneratedItems(int playerid, int page) +{ + return this->generatedPages[playerid][page - 1]; +} + +void ScreenMenu::RegeneratePage(int playerid, int page, int selected) +{ + if (this->generatedPages.find(playerid) == this->generatedPages.end()) + this->generatedPages.insert({ playerid, {} }); + + while (this->generatedPages[playerid].size() < page) + { + this->generatedPages[playerid].push_back(""); + } + + std::string stringPage = string_format(" %s\n", stringWithSplit(RemoveHtmlTags(this->title), 35).c_str()); + for (int i = 0; i < processedOptions[page - 1].size(); i++) { + stringPage += string_format("\n%s%d. %s", g_Config.FetchValue<std::string>("core.menu.inputMode") == "chat" ? " " : (i == selected ? (g_Config.FetchValue<std::string>("core.menu.navigation_prefix")).c_str() : " "), i + 1, processedOptions[page - 1][i].first.c_str()); + } + + stringPage += string_format("\n\n %s", GenerateFooter(page).c_str()); + + this->generatedPages[playerid][page - 1] = stringPage; +} + +bool ScreenMenu::IsTemporary() +{ + return this->temporary; +} + +Color ScreenMenu::GetColor() +{ + return this->color; +} + +std::string ScreenMenu::GenerateFooter(int page) +{ + if (g_Config.FetchValue<std::string>("core.menu.inputMode") == "chat") { + std::string footer = replace(g_translations.FetchTranslation("core.menu.input.chat"), "{PAGE}", std::to_string(page)); + footer = replace(footer, "{MAXPAGES}", std::to_string(processedOptions.size())); + footer = replace(footer, "{PREFIX}", GenerateCommandDefaultPrefix()); + return footer; + } + else { + std::string footer = replace(g_translations.FetchTranslation(g_Config.FetchValue<bool>("core.menu.buttons.exit.option") ? "core.menu.screen.footer" : "core.menu.screen.footer.nooption"), "{PAGE}", std::to_string(page)); + footer = replace(footer, "{MAXPAGES}", std::to_string(processedOptions.size())); + footer = replace(footer, "{CYCLE_BUTTON}", str_toupper(g_Config.FetchValue<std::string>("core.menu.buttons.scroll"))); + footer = replace(footer, "{USE_BUTTON}", str_toupper(g_Config.FetchValue<std::string>("core.menu.buttons.use"))); + footer = replace(footer, "{EXIT_BUTTON}", str_toupper(g_Config.FetchValue<std::string>("core.menu.buttons.exit.button"))); + return footer; + } +} + +bool ScreenMenu::RenderEachTick() +{ + return false; +} + +std::string ScreenMenu::GetKind() +{ + return "screen"; +} \ No newline at end of file diff --git a/src/server/menus/kinds/ScreenMenu.h b/src/server/menus/kinds/ScreenMenu.h new file mode 100644 index 000000000..5500cc057 --- /dev/null +++ b/src/server/menus/kinds/ScreenMenu.h @@ -0,0 +1,36 @@ +#ifndef _menus_kinds_screen_h +#define _menus_kinds_screen_h + +#include "../Menu.h" + +class ScreenMenu : public Menu +{ +private: + std::string id; + std::string title; + Color color; + std::vector<std::pair<std::string, std::string>> options; + std::vector<std::vector<std::pair<std::string, std::string>>> processedOptions; + bool temporary; + + std::map<int, std::vector<std::string>> generatedPages; +public: + ScreenMenu(std::string id, std::string title, std::string color, std::vector<std::pair<std::string, std::string>> options, bool tmp); + ~ScreenMenu(); + + std::string GetID(); + void ProcessOptions(); + std::string GeneratedItems(int playerid, int page); + std::string GenerateFooter(int page); + void RegeneratePage(int playerid, int page, int selected); + + std::string GetCommandFromOption(int page, int selected); + int GetItemsOnPage(int page); + bool IsTemporary(); + + Color GetColor(); + bool RenderEachTick(); + std::string GetKind(); +}; + +#endif \ No newline at end of file diff --git a/src/server/player/manager.cpp b/src/server/player/manager.cpp new file mode 100644 index 000000000..2ec36096e --- /dev/null +++ b/src/server/player/manager.cpp @@ -0,0 +1,154 @@ +#include "manager.h" + +#include <utils/utils.h> +#include <core/entrypoint.h> +#include <sdk/game.h> +#include <engine/vgui/vgui.h> + +#include <server/configuration/configuration.h> +#include <engine/convars/query.h> +#include <plugins/manager.h> + +SH_DECL_EXTERN3_void(IServerGameDLL, GameFrame, SH_NOATTRIB, 0, bool, bool, bool); +SH_DECL_EXTERN6(IServerGameClients, ClientConnect, SH_NOATTRIB, 0, bool, CPlayerSlot, const char*, uint64, const char*, bool, CBufferString*); +SH_DECL_EXTERN6_void(IServerGameClients, OnClientConnected, SH_NOATTRIB, 0, CPlayerSlot, const char*, uint64, const char*, const char*, bool); +SH_DECL_EXTERN5_void(IServerGameClients, ClientDisconnect, SH_NOATTRIB, 0, CPlayerSlot, ENetworkDisconnectionReason, const char*, uint64, const char*); + +uint64_t playerMask = 0; + +PlayerManager::PlayerManager() +{ + g_Players = new Player * [GetMaxGameClients()]; +} + +PlayerManager::~PlayerManager() +{ + for (int i = 0; i < GetMaxGameClients(); i++) { + if (g_Players[i]) { + delete g_Players[i]; + } + } + delete g_Players; +} + +Player* PlayerManager::GetPlayer(CPlayerSlot slot) +{ + return GetPlayer(slot.Get()); +} + +Player* PlayerManager::GetPlayer(int slot) +{ + if (slot < 0 || slot > GetMaxGameClients() - 1) return nullptr; + if ((playerMask & (1ULL << slot)) == 0) return nullptr; + + return g_Players[slot]; +} + +void PlayerManager::RegisterPlayer(CPlayerSlot slot, Player* player) +{ + int playerid = slot.Get(); + if (playerid < 0 || playerid >= GetMaxGameClients()) return; + + if (g_Players[playerid] != nullptr) return; + + g_Players[playerid] = player; + playerMask |= (1ULL << playerid); +} + +void PlayerManager::UnregisterPlayer(CPlayerSlot slot) +{ + int playerid = slot.Get(); + if (playerid < 0 || playerid >= GetMaxGameClients()) return; + + if ((playerMask & (1ULL << playerid)) != 0) return; + + delete g_Players[playerid]; + g_Players[playerid] = nullptr; + playerMask &= ~(1ULL << playerid); +} + +int PlayerManager::GetPlayers() +{ + int count = 0; + + for (int i = 0; i < GetMaxGameClients(); i++) + if (g_Players[i] != nullptr) + ++count; + + return count; +} + +int PlayerManager::GetPlayerCap() +{ + return GetMaxGameClients(); +} + +void PlayerManager::Initialize() +{ + SH_ADD_HOOK_MEMFUNC(IServerGameDLL, GameFrame, server, this, &PlayerManager::GameFrame, true); + SH_ADD_HOOK_MEMFUNC(IServerGameClients, ClientConnect, gameclients, this, &PlayerManager::ClientConnect, false); + SH_ADD_HOOK_MEMFUNC(IServerGameClients, OnClientConnected, gameclients, this, &PlayerManager::OnClientConnected, false); + SH_ADD_HOOK_MEMFUNC(IServerGameClients, ClientDisconnect, gameclients, this, &PlayerManager::ClientDisconnect, true); +} + +void PlayerManager::Shutdown() +{ + SH_REMOVE_HOOK_MEMFUNC(IServerGameDLL, GameFrame, server, this, &PlayerManager::GameFrame, true); + SH_REMOVE_HOOK_MEMFUNC(IServerGameClients, ClientConnect, gameclients, this, &PlayerManager::ClientConnect, false); + SH_REMOVE_HOOK_MEMFUNC(IServerGameClients, OnClientConnected, gameclients, this, &PlayerManager::OnClientConnected, false); + SH_REMOVE_HOOK_MEMFUNC(IServerGameClients, ClientDisconnect, gameclients, this, &PlayerManager::ClientDisconnect, true); +} + +void PlayerManager::GameFrame(bool a, bool b, bool c) +{ + for (int i = 0; i < GetPlayerCap(); i++) { + Player* player = GetPlayer(i); + if (player) player->Think(); + } +} + +bool PlayerManager::ClientConnect(CPlayerSlot slot, const char* pszName, uint64 xuid, const char* pszNetworkID, bool unk1, CBufferString* pRejectReason) +{ + std::string ip_address = explode(pszNetworkID, ":")[0]; + Player* player = new Player(false, slot.Get(), pszName, xuid, ip_address); + RegisterPlayer(slot, player); + + ClassData data({ { "plugin_name", "core" } }, "Event", nullptr); + g_pluginManager.ExecuteEvent("core", "OnClientConnect", { slot.Get() }, &data); + + bool response = true; + try + { + response = std::any_cast<bool>(data.GetData<std::any>("event_return")); + } + catch (std::bad_any_cast& e) + { + response = true; + } + + RETURN_META_VALUE(MRES_IGNORED, response); +} + +void PlayerManager::OnClientConnected(CPlayerSlot slot, const char* pszName, uint64 xuid, const char* pszNetworkID, const char* pszAddress, bool bFakePlayer) +{ + if (bFakePlayer) + { + Player* player = new Player(true, slot.Get(), pszName, xuid, "127.0.0.1"); + RegisterPlayer(slot, player); + } + else { + if (g_Config.FetchValue<bool>("core.use_player_language")) + g_convarQuery.QueryCvarClient(slot, "cl_language"); + } +} + +void PlayerManager::ClientDisconnect(CPlayerSlot slot, ENetworkDisconnectionReason reason, const char* pszName, uint64 xuid, const char* pszNetworkID) +{ + g_pluginManager.ExecuteEvent("core", "OnClientDisconnect", { slot.Get() }, nullptr); + + Player* player = GetPlayer(slot); + if (player) { + g_VGUI.Unregister(player); + UnregisterPlayer(slot); + } +} \ No newline at end of file diff --git a/src/server/player/manager.h b/src/server/player/manager.h new file mode 100644 index 000000000..bddad9747 --- /dev/null +++ b/src/server/player/manager.h @@ -0,0 +1,36 @@ +#ifndef _server_player_h +#define _server_player_h + +#include "player.h" + +#include <core/entrypoint.h> +#include <public/playerslot.h> + +class PlayerManager +{ +private: + Player** g_Players = nullptr; +public: + PlayerManager(); + ~PlayerManager(); + + Player* GetPlayer(CPlayerSlot slot); + Player* GetPlayer(int slot); + + void RegisterPlayer(CPlayerSlot slot, Player* player); + void UnregisterPlayer(CPlayerSlot slot); + int GetPlayers(); + int GetPlayerCap(); + + void Initialize(); + void Shutdown(); + + void GameFrame(bool a, bool b, bool c); + bool ClientConnect(CPlayerSlot slot, const char* pszName, uint64 xuid, const char* pszNetworkID, bool unk1, CBufferString* pRejectReason); + void OnClientConnected(CPlayerSlot slot, const char* pszName, uint64 xuid, const char* pszNetworkID, const char* pszAddress, bool bFakePlayer); + void ClientDisconnect(CPlayerSlot slot, ENetworkDisconnectionReason reason, const char* pszName, uint64 xuid, const char* pszNetworkID); +}; + +extern PlayerManager g_playerManager; + +#endif \ No newline at end of file diff --git a/src/server/player/player.cpp b/src/server/player/player.cpp new file mode 100644 index 000000000..07e698002 --- /dev/null +++ b/src/server/player/player.cpp @@ -0,0 +1,513 @@ +#include "player.h" +#include "ehandle.h" +#include <core/entrypoint.h> + +#include <entities/system.h> +#include <memory/virtual/virtual.h> +#include <memory/gamedata/gamedata.h> +#include <sdk/schema.h> +#include <sdk/game.h> +#include <utils/utils.h> +#include <sdk/components/CSingleRecipientFilter.h> +#include <server/configuration/configuration.h> +#include <engine/vgui/vgui.h> +#include <plugins/manager.h> + +#include "usermessages.pb.h" + +typedef IGameEventListener2* (*GetLegacyGameEventListener)(CPlayerSlot slot); +typedef void (*CCSPlayerController_SwitchTeam)(void*, unsigned int); + +std::map<std::string, std::string> colors = { + {"{DEFAULT}", "\x01"}, + {"{WHITE}", "\x01"}, + {"{DARKRED}", "\x02"}, + {"{LIGHTPURPLE}", "\x03"}, + {"{GREEN}", "\x04"}, + {"{OLIVE}", "\x05"}, + {"{LIME}", "\x06"}, + {"{RED}", "\x07"}, + {"{GRAY}", "\x08"}, + {"{GREY}", "\x08"}, + {"{LIGHTYELLOW}", "\x09"}, + {"{YELLOW}", "\x09"}, + {"{SILVER}", "\x0A"}, + {"{BLUEGREY}", "\x0A"}, + {"{LIGHTBLUE}", "\x0B"}, + {"{BLUE}", "\x0B"}, + {"{DARKBLUE}", "\x0C"}, + {"{PURPLE}", "\x0E"}, + {"{MAGENTA}", "\x0E"}, + {"{LIGHTRED}", "\x0F"}, + {"{GOLD}", "\x10"}, + {"{ORANGE}", "\x10"}, +}; + +const std::vector<std::string> key_buttons = { + "mouse1", + "space", + "ctrl", + "w", + "s", + "e", + "esc", + "a", + "d", + "a", + "d", + "mouse2", + "unknown_key_run", + "r", + "alt", + "alt", + "shift", + "unknown_key_speed", + "shift", + "unknown_key_hudzoom", + "unknown_key_weapon1", + "unknown_key_weapon2", + "unknown_key_bullrush", + "unknown_key_grenade1", + "unknown_key_grenade2", + "unknown_key_lookspin", + "unknown_key_26", + "unknown_key_27", + "unknown_key_28", + "unknown_key_29", + "unknown_key_30", + "unknown_key_31", + "unknown_key_32", + "tab", + "unknown_key_34", + "f", + "unknown_key_36", + "unknown_key_37", + "unknown_key_38", + "unknown_key_39", + "unknown_key_40", + "unknown_key_41", + "unknown_key_42", + "unknown_key_43", + "unknown_key_44", + "unknown_key_45", + "unknown_key_46", + "unknown_key_47", + "unknown_key_48", + "unknown_key_49", + "unknown_key_50", + "unknown_key_51", + "unknown_key_52", + "unknown_key_53", + "unknown_key_54", + "unknown_key_55", + "unknown_key_56", + "unknown_key_57", + "unknown_key_58", + "unknown_key_59", + "unknown_key_60", + "unknown_key_61", + "unknown_key_62", + "unknown_key_63", +}; + +std::string ProcessColor(std::string str, int team = CS_TEAM_CT) +{ + str = replace(str, "{TEAMCOLOR}", team == CS_TEAM_CT ? "{LIGHTBLUE}" : (team == CS_TEAM_T ? "{YELLOW}" : "{LIGHTPURPLE}")); + str = replace(str, "{teamcolor}", team == CS_TEAM_CT ? "{lightblue}" : (team == CS_TEAM_T ? "{yellow}" : "{lightpurple}")); + for (auto it = colors.begin(); it != colors.end(); ++it) + { + str = replace(str, it->first, it->second); + str = replace(str, str_tolower(it->first), it->second); + } + return str; +} + +Player::Player(bool m_isFakeClient, int m_slot, const char* m_name, uint64_t m_xuid, std::string ip_address) +{ + slot = m_slot; + isFakeClient = m_isFakeClient; + connectTime = time(0); + name = m_name; + xuid = m_xuid; + ip_address = ip_address; + + centerMessageEvent = g_gameEventManager->CreateEvent("show_survival_respawn_status", true); + + centerMessageEvent->SetUint64("duration", 1); + centerMessageEvent->SetInt("userid", slot); + + if (!isFakeClient) playerListener = g_GameData.FetchSignature<GetLegacyGameEventListener>("LegacyGameEventListener")(CPlayerSlot(slot)); + + SetInternalVar("tag", std::string("")); + SetInternalVar("tagcolor", std::string("{default}")); + SetInternalVar("namecolor", std::string("{teamcolor}")); + SetInternalVar("chatcolor", std::string("{default}")); + + menu_renderer = new MenuRenderer(this); +} + +Player::~Player() +{ + isFakeClient = true; + g_gameEventManager->FreeEvent(centerMessageEvent); + + if (playerObject) delete playerObject; + if (menu_renderer) delete menu_renderer; +} + +bool Player::IsFakeClient() +{ + return isFakeClient; +} + +int Player::GetSlot() +{ + return slot; +} + +uint32_t Player::GetConnectedTime() +{ + return (time(0) - connectTime); +} + +std::string Player::GetIPAddress() +{ + return ip_address; +} + +bool Player::IsFirstSpawn() { + return firstSpawn; +} + +void Player::SetFirstSpawn(bool value) { + firstSpawn = value; +} + +void* Player::GetController() +{ + CEntityInstance* controller = g_pEntitySystem->GetEntityInstance(CEntityIndex(slot + 1)); + if (!controller) return nullptr; + + return (void*)controller; +} + +void* Player::GetPawn() +{ + auto controller = GetController(); + if (!controller) return nullptr; + + CHandle<CEntityInstance> pawnHandle = schema::GetProp<CHandle<CEntityInstance>>(controller, "CBasePlayerController", "m_hPawn"); + return (void*)(pawnHandle.Get()); +} + +void* Player::GetPlayerPawn() +{ + auto controller = GetController(); + if (!controller) return nullptr; + + CHandle<CEntityInstance> pawnHandle = schema::GetProp<CHandle<CEntityInstance>>(controller, "CCSPlayerController", "m_hPlayerPawn"); + return (void*)(pawnHandle.Get()); +} + +const char* Player::GetName() +{ + auto controller = GetController(); + if (!controller) return name; + + return schema::GetPropPtr<char>(controller, "CBasePlayerController", "m_iszPlayerName"); +} + +uint64_t Player::GetSteamID() +{ + if (IsFakeClient()) return 0; + + auto controller = GetController(); + if (!controller) return xuid; + + return schema::GetProp<uint64_t>(controller, "CBasePlayerController", "m_steamID"); +} + +void Player::SendMsg(int dest, const char* msg, ...) +{ + auto controller = GetController(); + if (!controller) return; + if (IsFakeClient()) return; + + if (dest == HUD_PRINTTALK || dest == HUD_PRINTNOTIFY) + { + va_list args; + char buffer[4096]; + va_start(args, msg); + + uint32_t len = vsnprintf(buffer, sizeof(buffer), msg, args); + if (len >= sizeof(buffer)) + { + len = sizeof(buffer) - 1; + buffer[len] = '\0'; + } + va_end(args); + + std::string message(buffer); + if (message.size() != 0) + { + if (ends_with(message, "\n")) + message.pop_back(); + message += "\x01"; + + bool startsWithColor = (message.at(0) == '{'); + + message = ProcessColor(message, schema::GetProp<int>(controller, "CBaseEntity", "m_iTeamNum")); + + if (startsWithColor) + message = " " + message; + } + + INetworkMessageInternal* pNetMsg = g_pNetworkMessages->FindNetworkMessagePartial("TextMsg"); + auto data = pNetMsg->AllocateMessage()->ToPB<CUserMessageTextMsg>(); + + data->set_dest(dest); + data->add_param(message.c_str()); + + CSingleRecipientFilter filter(GetSlot()); + g_pGameEventSystem->PostEventAbstract(-1, false, &filter, pNetMsg, data, 0); + +#ifndef _WIN32 + delete data; +#endif + } + else if (dest == HUD_PRINTCENTER) + { + if (std::string(msg) == "") centerMessageEndTime = 0; + else { + centerMessageEndTime = GetTime() + 5000; + centerMessageEvent->SetString("loc_token", msg); + } + } + else if (dest == HUD_PRINTCONSOLE) + { + if (!g_SMAPI) + return; + + va_list args; + char buffer[1024]; + va_start(args, msg); + + uint32_t len = vsnprintf(buffer, sizeof(buffer), msg, args); + if (len >= sizeof(buffer)) + { + len = sizeof(buffer) - 1; + buffer[len] = '\0'; + } + va_end(args); + + std::string message(buffer); + if (message.size() != 0) + { + for (auto it = colors.begin(); it != colors.end(); ++it) + { + message = replace(message, it->first, ""); + message = replace(message, str_tolower(it->first), ""); + } + engine->ClientPrintf(GetSlot(), message.c_str()); + } + } +} + +void Player::Think() +{ + if (menu_renderer->ShouldRenderEachTick()) { + menu_renderer->RenderMenuTick(); + } + else if (centerMessageEndTime != 0) { + if (centerMessageEndTime >= GetTime()) { + if (centerMessageEvent && playerListener) { + playerListener->FireGameEvent(centerMessageEvent); + } + } + else { + centerMessageEndTime = 0; + } + } + + auto movementServices = schema::GetProp<void*>(GetPawn(), "CBasePlayerPawn", "m_pMovementServices"); + if (movementServices) { + void* buttons = schema::GetProp<void*>(movementServices, "CPlayer_MovementServices", "m_nButtons"); + if (buttons) { + uint64_t* states = schema::GetPropPtr<uint64_t>(buttons, "CInButtonState", "m_pButtonStates"); + SetButtons(states[0]); + } + } + + auto observerServices = schema::GetProp<void*>(GetPawn(), "CBasePlayerPawn", "m_pObserverServices"); + if (observerServices) { + CHandle<CEntityInstance> observerTarget = schema::GetProp<CHandle<CEntityInstance>>(observerServices, "CPlayer_ObserverServices", "m_hObserverTarget"); + g_VGUI.CheckRenderForPlayer(slot, this, observerTarget); + } +} + +void Player::SetButtons(uint64_t button) +{ + if (buttons != button) { + for (int i = 0; i < 64; i++) { + if ((buttons & (1ULL << i)) != 0 && (button & (1ULL << i)) == 0) { + if (g_Config.FetchValue<std::string>("core.menu.inputMode") != "chat") + menu_renderer->PerformMenuAction(key_buttons[i]); + + g_pluginManager.ExecuteEvent("core", "OnClientKeyStateChange", { slot, key_buttons[i], true }, {}); + } + else if ((buttons & (1ULL << i)) == 0 && (button & (1ULL << i)) != 0) { + g_pluginManager.ExecuteEvent("core", "OnClientKeyStateChange", { slot, key_buttons[i], false }, {}); + } + } + buttons = button; + } +} + +std::any Player::GetInternalVar(std::string name) +{ + if (internalVars.find(name) == internalVars.end()) + return nullptr; + + return internalVars[name]; +} + +void Player::SetInternalVar(std::string name, std::any value) +{ + internalVars[name] = value; +} + +void Player::SetListen(CPlayerSlot slot, int listen) +{ + m_listenMap[slot.Get()] = listen; +} + +void Player::SetVoiceFlags(int flags) +{ + m_voiceFlag = flags; +} + +int Player::GetVoiceFlags() +{ + return m_voiceFlag; +} + +int Player::GetListen(CPlayerSlot slot) +{ + return m_listenMap[slot.Get()]; +} + +void Player::PerformCommand(std::string command) +{ + engine->ClientCommand(CPlayerSlot(GetSlot()), command.c_str()); +} + +void Player::SwitchTeam(int team) +{ + void* playerController = GetController(); + if (!playerController) + return; + + if (team == CS_TEAM_SPECTATOR || team == CS_TEAM_NONE) + CALL_VIRTUAL(void, g_GameData.GetOffset("CCSPlayerController_ChangeTeam"), playerController, team); + else + g_GameData.FetchSignature<CCSPlayerController_SwitchTeam>("CCSPlayerController_SwitchTeam")(playerController, team); +} + +void Player::ChangeTeam(int team) +{ + void* playerController = GetController(); + if (!playerController) + return; + + CALL_VIRTUAL(void, g_GameData.GetOffset("CCSPlayerController_ChangeTeam"), playerController, team); +} + +Vector Player::GetCoords() +{ + void* pawn = GetPlayerPawn(); + if (!pawn) return Vector(0.0, 0.0, 0.0); + + void* bodyComponent = schema::GetProp<void*>(pawn, "CBaseEntity", "m_CBodyComponent"); + if (bodyComponent) return Vector(0.0, 0.0, 0.0); + + void* sceneNode = schema::GetProp<void*>(bodyComponent, "CBodyComponent", "m_pSceneNode"); + if (!sceneNode) return Vector(0.0, 0.0, 0.0); + + return schema::GetProp<Vector>(sceneNode, "CGameSceneNode", "m_vecAbsOrigin"); +} + +void Player::SetCoords(float x, float y, float z) +{ + return SetCoords(Vector(x, y, z)); +} + +void Player::SetCoords(Vector vec) +{ + auto instance = GetPawn(); + if (!instance) return; + + CALL_VIRTUAL(void, g_GameData.GetOffset("CBaseEntity_Teleport"), instance, &vec, nullptr, nullptr); +} + +void Player::SetClientConvar(std::string cmd, std::string val) +{ + INetworkMessageInternal* netmsg = g_pNetworkMessages->FindNetworkMessagePartial("SetConVar"); + auto msg = netmsg->AllocateMessage()->ToPB<CNETMsg_SetConVar>(); + CMsg_CVars_CVar* cvar = msg->mutable_convars()->add_cvars(); + cvar->set_name(cmd.c_str()); + cvar->set_value(val.c_str()); + + CSingleRecipientFilter filter(this->slot); + g_pGameEventSystem->PostEventAbstract(-1, false, &filter, netmsg, msg, 0); + +#ifndef _WIN32 + delete msg; +#endif +} + +void* Player::EnsureCustomView(int index) +{ + auto pawn = GetPlayerPawn(); + if (!pawn) return nullptr; + + if (schema::GetProp<uint32_t>(pawn, "CBaseEntity", "m_lifeState") == 2) { + auto controller = GetController(); + if (!controller) return nullptr; + if (schema::GetProp<bool>(controller, "CCSPlayerController", "m_bControllingBot")) return nullptr; + + auto observerServices = schema::GetProp<void*>(pawn, "CBasePlayerPawn", "m_pObserverServices"); + if (!observerServices) return nullptr; + + CHandle<CEntityInstance> observerTarget = schema::GetProp<CHandle<CEntityInstance>>(observerServices, "CPlayer_ObserverServices", "m_hObserverTarget"); + if (!observerTarget) return nullptr; + + auto observerController = schema::GetProp<CHandle<CEntityInstance>>(observerTarget.Get(), "CCSPlayerPawnBase", "m_hOriginalController"); + if (!observerController) return nullptr; + + CHandle<CEntityInstance> pawnHandle = schema::GetProp<CHandle<CEntityInstance>>(observerController, "CCSPlayerController", "m_hPlayerPawn"); + if (!pawnHandle) return nullptr; + pawn = (void*)(pawnHandle.Get()); + } + + if (!pawn) return nullptr; + + void* vmServices = schema::GetProp<void*>(pawn, "CCSPlayerPawnBase", "m_pViewModelServices"); + if (!vmServices) return nullptr; + + auto vmHandle = (void*)(schema::GetPropPtr<CHandle<CEntityInstance>>(vmServices, "CCSPlayer_ViewModelServices", "m_hViewModel")[index].Get()); + if (!vmHandle) { + vmHandle = g_entSystem.CreateByName("predicted_viewmodel"); + g_entSystem.Spawn(vmHandle, nullptr); + schema::GetPropPtr<CHandle<CEntityInstance>>(vmServices, "CCSPlayer_ViewModelServices", "m_hViewModel")[index].Set((CEntityInstance*)(vmHandle)); + schema::SetProp(vmHandle, "CBaseViewModel", "m_nViewModelIndex", index); + ((CEntityInstance*)pawn)->NetworkStateChanged(); + } + + return vmHandle; +} + +ClassData* Player::GetPlayerObject() +{ + if (playerObject == nullptr) playerObject = new ClassData({ { "playerid", GetSlot() } }, "Player", nullptr); + return playerObject; +} \ No newline at end of file diff --git a/src/server/player/player.h b/src/server/player/player.h new file mode 100644 index 000000000..5e41055b9 --- /dev/null +++ b/src/server/player/player.h @@ -0,0 +1,96 @@ +#ifndef _server_player_player_h +#define _server_player_player_h + +#include <string> +#include <any> +#include <map> + +#include <embedder/src/Embedder.h> + +#include <public/playerslot.h> +#include <public/mathlib/vector.h> +#include <public/igameevents.h> +#include <server/menus/MenuRenderer.h> +#include <ctime> + +class Player +{ +private: + int slot; + bool isFakeClient = false; + + time_t connectTime; + const char* name; + uint64_t xuid; + std::string ip_address = "0.0.0.0"; + + bool firstSpawn = true; + + int m_listenMap[66] = {}; + int m_voiceFlag = 0; + + ClassData* playerObject = nullptr; + + std::map<std::string, std::any> internalVars; + + IGameEventListener2* playerListener = nullptr; + + IGameEvent* centerMessageEvent = nullptr; + uint64_t centerMessageEndTime = 0; + std::string centerMessageText; + + uint64_t buttons; + +public: + MenuRenderer* menu_renderer = nullptr; + + Player(bool m_isFakeClient, int m_slot, const char* m_name, uint64_t m_xuid, std::string ip_address); + ~Player(); + + bool IsFakeClient(); + int GetSlot(); + uint32_t GetConnectedTime(); + std::string GetIPAddress(); + + void SendMsg(int dest, const char* msg, ...); + + const char* GetName(); + uint64_t GetSteamID(); + + void* GetController(); + void* GetPawn(); + void* GetPlayerPawn(); + + Vector GetCoords(); + void SetCoords(Vector vec); + void SetCoords(float x, float y, float z); + + void SwitchTeam(int team); + void ChangeTeam(int team); + + bool IsFirstSpawn(); + void SetFirstSpawn(bool value); + + void PerformCommand(std::string command); + void SetClientConvar(std::string cmd, std::string val); + + std::any GetInternalVar(std::string name); + void SetInternalVar(std::string name, std::any value); + + void SetListen(CPlayerSlot slot, int listen); + int GetListen(CPlayerSlot slot); + + void SetVoiceFlags(int flags); + int GetVoiceFlags(); + + void* EnsureCustomView(int index); + ClassData* GetPlayerObject(); + + void Think(); + + void SetButtons(uint64_t button); + + CPlayerBitVec m_selfMutes[64] = {}; +}; + +#endif \ No newline at end of file diff --git a/src/server/translations/translation.cpp b/src/server/translations/translation.cpp new file mode 100644 index 000000000..3fb3b837a --- /dev/null +++ b/src/server/translations/translation.cpp @@ -0,0 +1,17 @@ +#include "translation.h" + +void Translation::RegisterLanguage(std::string lang, std::string value) +{ + if (m_values.find(lang) != m_values.end()) + return; + + m_values.insert({lang, value}); +} + +std::string Translation::FetchLanguage(std::string lang) +{ + if (m_values.find(lang) == m_values.end()) + return "NO_TRANSLATION"; + + return m_values[lang]; +} \ No newline at end of file diff --git a/src/server/translations/translation.h b/src/server/translations/translation.h new file mode 100644 index 000000000..5c6010446 --- /dev/null +++ b/src/server/translations/translation.h @@ -0,0 +1,17 @@ +#ifndef _server_translations_translation_h +#define _server_translations_translation_h + +#include <map> +#include <string> + +class Translation +{ +private: + std::map<std::string, std::string> m_values; + +public: + void RegisterLanguage(std::string lang, std::string value); + std::string FetchLanguage(std::string lang); +}; + +#endif \ No newline at end of file diff --git a/src/server/translations/translations.cpp b/src/server/translations/translations.cpp new file mode 100644 index 000000000..61cce3656 --- /dev/null +++ b/src/server/translations/translations.cpp @@ -0,0 +1,122 @@ +#include "translations.h" + +#include <filesystem/files/files.h> +#include <utils/common.h> +#include <utils/utils.h> +#include <core/entrypoint.h> + +#include <memory/encoders/json.h> + +#include <server/player/manager.h> +#include <server/configuration/configuration.h> + +#include <rapidjson/json.hpp> + +#define HAS_MEMBER(DOCUMENT, MEMBER_NAME, MEMBER_PATH) \ + if (!DOCUMENT.HasMember(MEMBER_NAME)) \ + { \ + TranslationsError(string_format("The field \"%s\" doesn't exists.", MEMBER_PATH)); \ + continue; \ + } + +#define IS_STRING(DOCUMENT, MEMBER_NAME, MEMBER_PATH) \ + if (!DOCUMENT[MEMBER_NAME].IsString()) \ + { \ + TranslationsError(string_format("The field \"%s\" is not a string.", MEMBER_PATH)); \ + continue; \ + } + +#define IS_OBJECT(DOCUMENT, MEMBER_NAME, MEMBER_PATH) \ + if (!DOCUMENT[MEMBER_NAME].IsObject()) \ + { \ + TranslationsError(string_format("The field \"%s\" is not an object.", MEMBER_PATH)); \ + continue; \ + } + +void TranslationsError(std::string text) +{ + if (!g_SMAPI) + return; + + PLUGIN_PRINTF("Translations", "%s\n", text.c_str()); +} + +void Translations::LoadTranslations() +{ + m_translations.clear(); + + if (!Files::ExistsPath("addons/swiftly/translations")) + Files::CreateDirectory("addons/swiftly/translations"); + + std::vector<std::string> translationFiles = Files::FetchFileNames("addons/swiftly/translations"); + + for (const std::string &translationFilePath : translationFiles) + { + if (!ends_with(translationFilePath, ".json")) + continue; + if (!starts_with(translationFilePath, string_format("addons/swiftly/translations%stranslation.", WIN_LINUX("\\", "/")))) + continue; + + std::string translationFileName = explode(translationFilePath, string_format("addons/swiftly/translations%s", WIN_LINUX("\\", "/")))[1]; + std::string mainTranslationKey = explode(explode(translationFileName, ".json")[0], "translation.")[1]; + + auto transFile = encoders::json::FromString(Files::Read(translationFilePath), translationFilePath); + if (!transFile.IsObject()) + { + TranslationsError(string_format("Translation file \"%s\" needs to be an object.", translationFileName.c_str())); + continue; + } + + for (auto it = transFile.MemberBegin(); it != transFile.MemberEnd(); ++it) + { + std::string key = it->name.GetString(); + + IS_OBJECT(transFile, key.c_str(), string_format("%s.%s", mainTranslationKey.c_str(), key.c_str()).c_str()) + HAS_MEMBER(it->value, "en", string_format("%s.%s.en", mainTranslationKey.c_str(), key.c_str()).c_str()) + + Translation translation; + for (auto it2 = it->value.MemberBegin(); it2 != it->value.MemberEnd(); ++it2) + { + std::string transKey = it2->name.GetString(); + + IS_STRING(it->value, transKey.c_str(), string_format("%s.%s.%s", mainTranslationKey.c_str(), key.c_str(), transKey.c_str()).c_str()) + + std::string transVal = it2->value.GetString(); + translation.RegisterLanguage(transKey, transVal); + } + m_translations.insert({mainTranslationKey + "." + key, translation}); + } + } +} + +std::string Translations::FetchTranslation(std::string key, int playerid) +{ + Player* player = g_playerManager.GetPlayer(playerid); + if(player && g_Config.FetchValue<bool>("core.use_player_language")) { + std::string language = g_Config.FetchValue<std::string>("core.language"); + + try { + language = std::any_cast<std::string>(player->GetInternalVar("language")); + } catch(std::bad_any_cast& e) {} + + if (m_translations.find(key) == m_translations.end()) return key + "." + language; + + std::string translation = m_translations[key].FetchLanguage(language); + if (translation == "NO_TRANSLATION") { + translation = m_translations[key].FetchLanguage(g_Config.FetchValue<std::string>("core.language")); + if(translation == "NO_TRANSLATION") return key + "." + language; + else return translation; + } else return translation; + } else { + std::string language = g_Config.FetchValue<std::string>("core.language"); + + if (m_translations.find(key) == m_translations.end()) + return key + "." + language; + + std::string translation = m_translations[key].FetchLanguage(language); + if (translation == "NO_TRANSLATION") + return key + "." + language; + else + return translation; + } +} \ No newline at end of file diff --git a/src/server/translations/translations.h b/src/server/translations/translations.h new file mode 100644 index 000000000..f2cb5dbc8 --- /dev/null +++ b/src/server/translations/translations.h @@ -0,0 +1,20 @@ +#ifndef _server_translations_translations_h +#define _server_translations_translations_h + +#include "translation.h" +#include <map> +#include <string> + +class Translations +{ +private: + std::map<std::string, Translation> m_translations; + +public: + void LoadTranslations(); + std::string FetchTranslation(std::string key, int playerid = -1); +}; + +extern Translations g_translations; + +#endif \ No newline at end of file diff --git a/src/tools/crashreporter/callstack.cpp b/src/tools/crashreporter/callstack.cpp new file mode 100644 index 000000000..00f5b185b --- /dev/null +++ b/src/tools/crashreporter/callstack.cpp @@ -0,0 +1,37 @@ +#include "callstack.h" + +#include <swiftly-ext/core.h> + +uint64_t stackID = 0; + +uint64_t CallStackManager::RegisterPluginCallstack(std::string plugin_name, std::string stackMsg) +{ + ++stackID; + if (stackID % 2000000000 == 0) + stackID = 1; + + callStacks[plugin_name].insert_or_assign(stackID, stackMsg); + return stackID; +} + +void CallStackManager::UnregisterPluginCallstack(std::string plugin_name, uint64_t stackID) +{ + if (callStacks[plugin_name].find(stackID) == callStacks[plugin_name].end()) return; + + callStacks[plugin_name].erase(stackID); +} + +std::unordered_map<uint64_t, std::string> CallStackManager::GetPluginCallstack(std::string plugin_name) +{ + return callStacks[plugin_name]; +} + +EXT_API uint64_t swiftly_RegisterCallstack(const char* plugin_name, const char* stackmsg) +{ + return g_callStack.RegisterPluginCallstack(plugin_name, stackmsg); +} + +EXT_API void swiftly_UnregisterCallstack(const char* plugin_name, uint64_t stid) +{ + g_callStack.UnregisterPluginCallstack(plugin_name, stid); +} \ No newline at end of file diff --git a/src/tools/crashreporter/callstack.h b/src/tools/crashreporter/callstack.h new file mode 100644 index 000000000..600adf2c2 --- /dev/null +++ b/src/tools/crashreporter/callstack.h @@ -0,0 +1,21 @@ +#ifndef _tools_crashreporter_callstack_h +#define _tools_crashreporter_callstack_h + +#include <map> +#include <string> +#include <unordered_map> + +class CallStackManager +{ +private: + std::map<std::string, std::unordered_map<uint64_t, std::string>> callStacks; +public: + uint64_t RegisterPluginCallstack(std::string plugin_name, std::string stackMsg); + void UnregisterPluginCallstack(std::string plugin_name, uint64_t stackID); + + std::unordered_map<uint64_t, std::string> GetPluginCallstack(std::string plugin_name); +}; + +extern CallStackManager g_callStack; + +#endif \ No newline at end of file diff --git a/src/tools/crashreporter/crashreporter.cpp b/src/tools/crashreporter/crashreporter.cpp new file mode 100644 index 000000000..ab13c66e4 --- /dev/null +++ b/src/tools/crashreporter/crashreporter.cpp @@ -0,0 +1,256 @@ +#include "crashreporter.h" +#include "callstack.h" + +#include <vector> +#include <string> + +#include <filesystem/files/files.h> +#include <core/entrypoint.h> +#include <tier0/icommandline.h> +#include <plugins/manager.h> + +#ifndef GITHUB_SHA +#define GITHUB_SHA "LOCAL" +#endif + +void WriteCrashDump(std::vector<std::string> functionStack); + +std::string startup_cmd = "None"; + +const char* ws = " \t\n\r\f\v"; + +inline std::string& rtrim(std::string& s, const char* t = ws) +{ + s.erase(s.find_last_not_of(t) + 1); + return s; +} + +inline std::string& ltrim(std::string& s, const char* t = ws) +{ + s.erase(0, s.find_first_not_of(t)); + return s; +} + +inline std::string& trim(std::string& s, const char* t = ws) +{ + return ltrim(rtrim(s, t), t); +} + +#ifdef _WIN32 +#include <windows.h> +#include <tchar.h> +#include <dbghelp.h> + +LONG WINAPI CustomUnhandledExceptionFilter(EXCEPTION_POINTERS* pExceptionPointers); + +bool BeginCrashListener() { + if (!Files::ExistsPath("addons/swiftly/dumps")) + { + if (!Files::CreateDirectory("addons/swiftly/dumps")) + { + PLUGIN_PRINTF("Crash Listener", "Couldn't create dumps folder.\n"); + return false; + } + } + + startup_cmd = CommandLine()->GetCmdLine(); + std::vector<std::string> exp = explode(startup_cmd, " "); + std::vector<std::string> exp2; + for (std::size_t i = 1; i < exp.size(); i++) + { + std::string str = trim(exp[i]); + if (str.length() == 0) + continue; + if (exp2.size() > 0) + if (ends_with(exp2[exp2.size() - 1], "sv_setsteamaccount") || ends_with(exp2[exp2.size() - 1], "authkey") || ends_with(exp2[exp2.size() - 1], "ip")) + str = "REDACTED"; + + exp2.push_back(str); + } + startup_cmd = implode(exp2, " "); + + SetUnhandledExceptionFilter(CustomUnhandledExceptionFilter); + return true; +} + +void EndCrashListener() { + SetUnhandledExceptionFilter(NULL); +} + +LONG WINAPI CustomUnhandledExceptionFilter(EXCEPTION_POINTERS* pExceptionPointers) +{ + std::vector<std::string> functionStack; + + HANDLE hProcess = GetCurrentProcess(); + HANDLE hThread = GetCurrentThread(); + + SymInitialize(hProcess, NULL, TRUE); + + CONTEXT* context = pExceptionPointers->ContextRecord; + + STACKFRAME64 stackFrame = { 0 }; +#ifdef _M_X64 + DWORD machineType = IMAGE_FILE_MACHINE_AMD64; + stackFrame.AddrPC.Offset = context->Rip; + stackFrame.AddrPC.Mode = AddrModeFlat; + stackFrame.AddrFrame.Offset = context->Rbp; + stackFrame.AddrFrame.Mode = AddrModeFlat; + stackFrame.AddrStack.Offset = context->Rsp; + stackFrame.AddrStack.Mode = AddrModeFlat; +#else +#error "Platform not supported!" +#endif + + for (int frame = 0; frame < 64; ++frame) + { + if (!StackWalk64(machineType, hProcess, hThread, &stackFrame, context, + NULL, SymFunctionTableAccess64, SymGetModuleBase64, NULL)) + { + break; + } + + DWORD64 address = stackFrame.AddrPC.Offset; + if (address == 0) break; + + char buffer[sizeof(SYMBOL_INFO) + MAX_SYM_NAME] = {}; + SYMBOL_INFO* symbol = reinterpret_cast<SYMBOL_INFO*>(buffer); + symbol->SizeOfStruct = sizeof(SYMBOL_INFO); + symbol->MaxNameLen = MAX_SYM_NAME; + + std::string constructFunctionStr = ""; + DWORD64 displacement = 0; + if (SymFromAddr(hProcess, address, &displacement, symbol)) + { + constructFunctionStr += symbol->Name; + } + + IMAGEHLP_LINE64 line; + DWORD lineDisplacement = 0; + memset(&line, 0, sizeof(line)); + line.SizeOfStruct = sizeof(line); + + if (SymGetLineFromAddr64(hProcess, address, &lineDisplacement, &line)) + { + constructFunctionStr += (std::string(" -> ") + line.FileName + ":" + std::to_string(line.LineNumber - 2)); + } + + if (constructFunctionStr != "") functionStack.push_back(constructFunctionStr); + } + + SymCleanup(hProcess); + + WriteCrashDump(functionStack); + + return EXCEPTION_EXECUTE_HANDLER; +} + +#else +#include <backtrace.h> + +static int full_callback(void* data, uintptr_t pc, const char* filename, int lineno, const char* function) { + std::vector<std::string>& arr = *reinterpret_cast<std::vector<std::string>*>(data); + std::string constructFunctionStr = ""; + if (filename && function) { + constructFunctionStr += std::string(function) + " -> " + filename + ":" + std::to_string(lineno); + } + arr.push_back(constructFunctionStr); + return 0; +} + +static void error_callback(void*, const char* msg, int) { + std::cerr << "libbacktrace error: " << msg << std::endl; +} + +void signal_handler(int signumber) +{ + std::vector<std::string> functionStack; + + auto state = backtrace_create_state(nullptr, 1, error_callback, nullptr); + backtrace_full(state, 0, full_callback, error_callback, &functionStack); + + WriteCrashDump(functionStack); +} + +bool BeginCrashListener() { + if (!Files::ExistsPath("addons/swiftly/dumps")) + { + if (!Files::CreateDirectory("addons/swiftly/dumps")) + { + PLUGIN_PRINTF("Crash Listener", "Couldn't create dumps folder.\n"); + return false; + } + } + + startup_cmd = CommandLine()->GetCmdLine(); + std::vector<std::string> exp = explode(startup_cmd, " "); + std::vector<std::string> exp2; + for (std::size_t i = 1; i < exp.size(); i++) + { + std::string str = trim(exp[i]); + if (str.length() == 0) + continue; + if (exp2.size() > 0) + if (ends_with(exp2[exp2.size() - 1], "sv_setsteamaccount") || ends_with(exp2[exp2.size() - 1], "authkey") || ends_with(exp2[exp2.size() - 1], "ip")) + str = "REDACTED"; + + exp2.push_back(str); + } + startup_cmd = implode(exp2, " "); + + ::signal(SIGSEGV, &signal_handler); + + return true; +} + +void EndCrashListener() { + ::signal(SIGSEGV, SIG_DFL); +} +#endif + +std::string WritePluginsCallStack() +{ + std::string callstacks = ""; + for (auto plugin : g_pluginManager.GetPluginsList()) { + auto callstack = g_callStack.GetPluginCallstack(plugin->GetName()); + if (callstack.size() > 0) { + callstacks += string_format("Plugin %s:\n", plugin->GetName().c_str()); + for (auto it = callstack.begin(); it != callstack.end(); ++it) + callstacks += string_format(" - %s\n", it->second.c_str()); + + callstacks += "\n"; + } + } + return callstacks; +} + +bool crashed = false; + +void WriteCrashDump(std::vector<std::string> functionStack) +{ + if (crashed) return; + + crashed = true; + PLUGIN_PRINTF("Crash Reporter", "A crash has occured and a dump has been created:\n"); + + std::string file_path = string_format("addons/swiftly/dumps/crash.%s.log", get_uuid().c_str()); + if (Files::ExistsPath(file_path)) Files::Delete(file_path); + + TextTable backtraceTable('-', '|', '+'); + + backtraceTable.add(" ID "); + backtraceTable.add(" Data "); + backtraceTable.endOfRow(); + + for (int i = 0; i < functionStack.size(); i++) { + backtraceTable.add(string_format(" %02d. ", i + 1)); + backtraceTable.add(string_format(" %s ", functionStack[i].c_str())); + backtraceTable.endOfRow(); + + functionStack[i] = string_format("%02d. %s", i + 1, functionStack[i].c_str()); + } + + PrintTextTable("Crash Reporter", backtraceTable); + + Files::Append(file_path, string_format("================================\nCommand: %s\nMap: %s\nVersion: %s (%s)\n================================\n\n%s\n\n%s", startup_cmd.c_str(), engine->GetServerGlobals() ? engine->GetServerGlobals()->mapname.ToCStr() : "None", g_Plugin.GetVersion(), GITHUB_SHA, implode(functionStack, "\n").c_str(), WritePluginsCallStack().c_str()), false); + PLUGIN_PRINTF("Crash Reporter", "A dump log file has been created at: %s\n", file_path.c_str()); +} \ No newline at end of file diff --git a/src/tools/crashreporter/crashreporter.h b/src/tools/crashreporter/crashreporter.h new file mode 100644 index 000000000..1089c7b0e --- /dev/null +++ b/src/tools/crashreporter/crashreporter.h @@ -0,0 +1,7 @@ +#ifndef _tools_crashreporter_h +#define _tools_crashreporter_h + +bool BeginCrashListener(); +void EndCrashListener(); + +#endif \ No newline at end of file diff --git a/src/tools/resourcemonitor/monitor.cpp b/src/tools/resourcemonitor/monitor.cpp new file mode 100644 index 000000000..8b68d4739 --- /dev/null +++ b/src/tools/resourcemonitor/monitor.cpp @@ -0,0 +1,56 @@ +#include "monitor.h" + +void ResourceMonitor::Enable() +{ + resmonTimesTable.clear(); + m_status = true; +} + +void ResourceMonitor::Disable() +{ + m_status = false; + resmonTimesTable.clear(); +} + +bool ResourceMonitor::IsEnabled() +{ + return m_status; +} + +std::map<std::string, std::map<std::string, std::vector<float>>> ResourceMonitor::GetResmonTimeTables() +{ + return resmonTimesTable; +} + +void ResourceMonitor::RecordTime(std::string plugin_id, std::string key, float value) +{ + if (!m_status) return; + + if (resmonTimesTable.find(plugin_id) == resmonTimesTable.end()) + resmonTimesTable.insert({ plugin_id, {} }); + + if (resmonTimesTable[plugin_id].find(key) == resmonTimesTable[plugin_id].end()) + resmonTimesTable[plugin_id].insert({ key, {} }); + + resmonTimesTable[plugin_id][key].push_back(value); +} + +void ResourceMonitor::StartTime(std::string plugin_id, std::string key) +{ + if (!m_status) return; + + if (resmonTempTables.find(plugin_id) == resmonTempTables.end()) + resmonTempTables.insert({ plugin_id, {} }); + + resmonTempTables[plugin_id].insert_or_assign(key, std::chrono::high_resolution_clock::now()); +} + +void ResourceMonitor::StopTime(std::string plugin_id, std::string key) +{ + if (!m_status) return; + + if (resmonTempTables.find(plugin_id) == resmonTempTables.end()) return; + if (resmonTempTables[plugin_id].find(key) == resmonTempTables[plugin_id].end()) return; + + RecordTime(plugin_id, key, float(std::chrono::duration_cast<std::chrono::microseconds>(std::chrono::high_resolution_clock::now() - resmonTempTables[plugin_id][key]).count()) / 1000.0); +} \ No newline at end of file diff --git a/src/tools/resourcemonitor/monitor.h b/src/tools/resourcemonitor/monitor.h new file mode 100644 index 000000000..b9c6915ef --- /dev/null +++ b/src/tools/resourcemonitor/monitor.h @@ -0,0 +1,30 @@ +#ifndef _tools_resourcemonitor_monitor_h +#define _tools_resourcemonitor_monitor_h + +#include <map> +#include <string> +#include <vector> +#include <chrono> + +class ResourceMonitor +{ +private: + bool m_status = false; + std::map<std::string, std::map<std::string, std::vector<float>>> resmonTimesTable; + std::map<std::string, std::map<std::string, std::chrono::time_point<std::chrono::high_resolution_clock>>> resmonTempTables; +public: + void Enable(); + void Disable(); + bool IsEnabled(); + + void RecordTime(std::string plugin_id, std::string key, float value); + + void StartTime(std::string plugin_id, std::string key); + void StopTime(std::string plugin_id, std::string key); + + std::map<std::string, std::map<std::string, std::vector<float>>> GetResmonTimeTables(); +}; + +extern ResourceMonitor g_ResourceMonitor; + +#endif \ No newline at end of file diff --git a/src/types/EventResult.h b/src/types/EventResult.h new file mode 100644 index 000000000..fd8999684 --- /dev/null +++ b/src/types/EventResult.h @@ -0,0 +1,11 @@ +#pragma once + +enum class EventResult +{ + // Continues to process the event until the end + Continue = 0, + // Stops processing the event and stops calling the code following by it. + Stop = 1, + // Stops processing the event but calls the code followed by it. + Handled = 2, +}; \ No newline at end of file diff --git a/src/types/GamePhase.h b/src/types/GamePhase.h new file mode 100644 index 000000000..11ffc15be --- /dev/null +++ b/src/types/GamePhase.h @@ -0,0 +1,15 @@ +#ifndef _gamephase_h +#define _gamephase_h + +enum class GamePhase +{ + GAMEPHASE_WARMUP_ROUND, + GAMEPHASE_PLAYING_STANDARD, + GAMEPHASE_PLAYING_FIRST_HALF, + GAMEPHASE_PLAYING_SECOND_HALF, + GAMEPHASE_HALFTIME, + GAMEPHASE_MATCH_ENDED, + GAMEPHASE_MAX +}; + +#endif \ No newline at end of file diff --git a/src/types/LogType.h b/src/types/LogType.h new file mode 100644 index 000000000..93b423788 --- /dev/null +++ b/src/types/LogType.h @@ -0,0 +1,9 @@ +#pragma once + +enum class LogType_t +{ + Debug = 1, + Warning = 2, + Error = 3, + Common = 4, +}; \ No newline at end of file diff --git a/src/types/PluginState.h b/src/types/PluginState.h new file mode 100644 index 000000000..1467bc8c8 --- /dev/null +++ b/src/types/PluginState.h @@ -0,0 +1,10 @@ +#ifndef _pluginstate_h +#define _pluginstate_h + +enum class PluginState_t +{ + Started = 0, + Stopped = 1, +}; + +#endif \ No newline at end of file diff --git a/src/utils/common.h b/src/utils/common.h new file mode 100644 index 000000000..91bb0c030 --- /dev/null +++ b/src/utils/common.h @@ -0,0 +1,56 @@ +#ifndef _utils_common_h +#define _utils_common_h + +#include <string> + +#ifdef _WIN32 +#define __FUNCTION_NAME__ __FUNCTION__ +#else +#define __FUNCTION_NAME__ __FUNCTION__ +#endif + +#ifdef _WIN32 +#ifdef GetTickCount +#undef GetTickCount +#endif +#ifdef GetCurrentTime +#undef GetCurrentTime +#endif +#ifdef VOID +#undef VOID +#endif +#ifdef GetObject +#undef GetObject +#endif +#endif + +#ifdef _WIN32 +#define WIN_LINUX(win, linux) win +#else +#define WIN_LINUX(win, linux) linux +#endif + +#define PREFIX "[Swiftly]" + +#define GCC_COMPILER (defined(__GNUC__) && !defined(__clang__)) + +void PLUGIN_PRINT(std::string category, std::string str); +void PLUGIN_PRINTF(std::string category, std::string str, ...); + +#define PRINT(str) PLUGIN_PRINT(__FUNCTION_NAME__, str) +#define PRINTF(str, ...) PLUGIN_PRINTF(__FUNCTION_NAME__, str, __VA_ARGS__) +#define PRINTRET(FORMAT_STR, RET) \ + { \ + PRINT(FORMAT_STR); \ + return RET; \ + } +#define PRINTFRET(FORMAT_STR, RET, ...) \ + { \ + PRINTF(FORMAT_STR, __VA_ARGS__); \ + return RET; \ + } +#define CLIENT_PRINT(SLOT, CATEGORY, FORMAT_STR) g_SMAPI->ClientConPrint(SLOT, std::string(PREFIX).append(" [").append(CATEGORY).append("] ").append(FORMAT_STR).c_str()) +#define CLIENT_PRINTF(SLOT, CATEGORY, FORMAT_STR, ...) g_SMAPI->ClientConPrintf(SLOT, std::string(PREFIX).append(" [").append(CATEGORY).append("] ").append(FORMAT_STR).c_str(), __VA_ARGS__) + + +#endif \ No newline at end of file diff --git a/src/utils/memory.h b/src/utils/memory.h new file mode 100644 index 000000000..e177237ba --- /dev/null +++ b/src/utils/memory.h @@ -0,0 +1,8 @@ +#ifndef _utils_memory_h +#define _utils_memory_h + +#include <dynlibutils/module.h> + +DynLibUtils::CMemory FindVirtTable(DynLibUtils::CModule *_this, const std::string_view svTableName, int32_t offset = 0, bool bDecorated = false); + +#endif \ No newline at end of file diff --git a/src/utils/memory_linux.cpp b/src/utils/memory_linux.cpp new file mode 100644 index 000000000..1767a2078 --- /dev/null +++ b/src/utils/memory_linux.cpp @@ -0,0 +1,49 @@ +#ifndef _WIN32 +#include "memory.h" + +using namespace DynLibUtils; + +CMemory FindVirtTable(DynLibUtils::CModule *_this, const std::string_view svTableName, int32_t offset, bool bDecorated) +{ + if (svTableName.empty()) + return CMemory(); + + CModule::ModuleSections_t readOnlyData = _this->GetSectionByName(".rodata"), readOnlyRelocations = _this->GetSectionByName(".data.rel.ro"); + if (!readOnlyData.IsSectionValid() || !readOnlyRelocations.IsSectionValid()) + return CMemory(); + + std::string sDecoratedTableName(bDecorated ? svTableName : std::to_string(svTableName.length()) + std::string(svTableName)); + std::string sMask(sDecoratedTableName.length() + 1, 'x'); + + CMemory typeInfoName = _this->FindPattern(sDecoratedTableName.data(), sMask, nullptr, &readOnlyData); + if (!typeInfoName) + return CMemory(); + + CMemory referenceTypeName = _this->FindPattern(&typeInfoName, "xxxxxxxx", nullptr, &readOnlyRelocations); // Get reference to type name. + if (!referenceTypeName) + return CMemory(); + + CMemory typeInfo = referenceTypeName.Offset(-0x8); // Offset -0x8 to typeinfo. + + for (const auto& sectionName : { std::string_view(".data.rel.ro"), std::string_view(".data.rel.ro.local") }) + { + CModule::ModuleSections_t section = _this->GetSectionByName(sectionName); + if (!section.IsSectionValid()) + continue; + + CMemory reference; + while ((reference = _this->FindPattern(&typeInfo, "xxxxxxxx", reference, &section))) // Get reference typeinfo in vtable + { + if (reference.Offset(-0x8).GetValue<int64_t>() == offset) // Offset to this. + { + return reference.Offset(0x8); + } + + reference.OffsetSelf(0x8); + } + } + + return CMemory(); +} + +#endif \ No newline at end of file diff --git a/src/utils/memory_win.cpp b/src/utils/memory_win.cpp new file mode 100644 index 000000000..21b41bb8e --- /dev/null +++ b/src/utils/memory_win.cpp @@ -0,0 +1,43 @@ +#ifdef _WIN32 +#include "memory.h" + +using namespace DynLibUtils; + +CMemory FindVirtTable(DynLibUtils::CModule *_this, const std::string_view svTableName, int32_t offset, bool bDecorated) +{ + if(svTableName.empty()) + return CMemory(); + + CModule::ModuleSections_t runTimeData = _this->GetSectionByName(".data"), readOnlyData = _this->GetSectionByName(".rdata"); + if(!runTimeData.IsSectionValid() || !readOnlyData.IsSectionValid()) + return CMemory(); + + std::string sDecoratedTableName(bDecorated ? svTableName : ".?AV" + std::string(svTableName) + "@@"); + std::string sMask(sDecoratedTableName.length() + 1, 'x'); + + CMemory typeDescriptorName = _this->FindPattern(sDecoratedTableName.data(), sMask, nullptr, &runTimeData); + if (!typeDescriptorName) + return CMemory(); + + CMemory rttiTypeDescriptor = typeDescriptorName.Offset(-0x10); + const uintptr_t rttiTDRva = rttiTypeDescriptor - _this->GetModuleBase(); // The RTTI gets referenced by a 4-Byte RVA address. We need to scan for that address. + + CMemory reference; + while ((reference = _this->FindPattern(&rttiTDRva, "xxxx", reference, &readOnlyData))) // Get reference typeinfo in vtable + { + // Check if we got a RTTI Object Locator for this reference by checking if -0xC is 1, which is the 'signature' field which is always 1 on x64. + // Check that offset of this vtable is 0 + if (reference.Offset(-0xC).GetValue<int32_t>() == 1 && reference.Offset(-0x8).GetValue<int32_t>() == offset) + { + CMemory referenceOffset = reference.Offset(-0xC); + CMemory rttiCompleteObjectLocator = _this->FindPattern(&referenceOffset, "xxxxxxxx", nullptr, &readOnlyData); + if (rttiCompleteObjectLocator) + return rttiCompleteObjectLocator.Offset(0x8); + } + + reference.OffsetSelf(0x4); + } + + return CMemory(); +} +#endif \ No newline at end of file diff --git a/src/utils/platform/platform.h b/src/utils/platform/platform.h new file mode 100644 index 000000000..c7638db27 --- /dev/null +++ b/src/utils/platform/platform.h @@ -0,0 +1,39 @@ +#pragma once +#include <cstdint> +#include <metamod_oslink.h> + +#ifdef FASTCALL +#undef FASTCALL +#endif + +#if defined(_WIN32) +#define FASTCALL __fastcall +#define THISCALL __thiscall +#else +#define FASTCALL __attribute__((fastcall)) +#define THISCALL +#define strtok_s strtok_r +#endif + +struct Module +{ +#ifndef _WIN32 + void *pHandle; +#endif + uint8_t *pBase; + unsigned int nSize; +}; + +#ifndef _WIN32 +int GetModuleInformation(HINSTANCE module, void **base, size_t *length); +#endif + +#ifdef _WIN32 +#define MODULE_PREFIX "" +#define MODULE_EXT ".dll" +#else +#define MODULE_PREFIX "lib" +#define MODULE_EXT ".so" +#endif + +void Plat_WriteMemory(void *pPatchAddress, uint8_t *pPatch, int iPatchSize); \ No newline at end of file diff --git a/src/utils/platform/platform_linux.cpp b/src/utils/platform/platform_linux.cpp new file mode 100644 index 000000000..be294056c --- /dev/null +++ b/src/utils/platform/platform_linux.cpp @@ -0,0 +1,218 @@ +/** + * ============================================================================= + * CS2Fixes + * Copyright (C) 2023 Source2ZE + * ============================================================================= + * + * This program is free software; you can redistribute it and/or modify it under + * the terms of the GNU General Public License, version 3.0, as published by the + * Free Software Foundation. + * + * This program is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS + * FOR A PARTICULAR PURPOSE. See the GNU General Public License for more + * details. + * + * You should have received a copy of the GNU General Public License along with + * this program. If not, see <http://www.gnu.org/licenses/>. + */ + +#ifdef __linux__ +#include <dlfcn.h> +#include <libgen.h> +#include <stdio.h> +#include <string.h> +#include "sys/mman.h" +#include <locale> +#include <elf.h> +#include <link.h> +#include "dbg.h" +#include "platform.h" + +#define PAGE_SIZE 4096 +#define PAGE_ALIGN_UP(x) ((x + PAGE_SIZE - 1) & ~(PAGE_SIZE - 1)) + +struct ModuleInfo +{ + const char* path; // in + uint8_t* base; // out + uint size; // out +}; + +// https://github.com/alliedmodders/sourcemod/blob/master/core/logic/MemoryUtils.cpp#L502-L587 +int GetModuleInformation(HINSTANCE hModule, void** base, size_t* length) +{ + struct link_map* dlmap = (struct link_map*)hModule; + Dl_info info; + Elf64_Ehdr* file; + Elf64_Phdr* phdr; + uint16_t phdrCount; + + if (!dladdr((void*)dlmap->l_addr, &info)) + { + return 1; + } + + if (!info.dli_fbase || !info.dli_fname) + { + return 2; + } + + /* This is for our insane sanity checks :o */ + uintptr_t baseAddr = reinterpret_cast<uintptr_t>(info.dli_fbase); + file = reinterpret_cast<Elf64_Ehdr*>(baseAddr); + + /* Check ELF magic */ + if (memcmp(ELFMAG, file->e_ident, SELFMAG) != 0) + { + return 3; + } + + /* Check ELF version */ + if (file->e_ident[EI_VERSION] != EV_CURRENT) + { + return 4; + } + + /* Check ELF endianness */ + if (file->e_ident[EI_DATA] != ELFDATA2LSB) + { + return 5; + } + + /* Check ELF architecture */ + if (file->e_ident[EI_CLASS] != ELFCLASS64 || file->e_machine != EM_X86_64) + { + return 6; + } + + /* For our purposes, this must be a dynamic library/shared object */ + if (file->e_type != ET_DYN) + { + return 7; + } + + phdrCount = file->e_phnum; + phdr = reinterpret_cast<Elf64_Phdr*>(baseAddr + file->e_phoff); + + for (uint16_t i = 0; i < phdrCount; i++) + { + Elf64_Phdr& hdr = phdr[i]; + + /* We only really care about the segment with executable code */ + if (hdr.p_type == PT_LOAD && hdr.p_flags == (PF_X | PF_R)) + { + /* From glibc, elf/dl-load.c: + * c->mapend = ((ph->p_vaddr + ph->p_filesz + GLRO(dl_pagesize) - 1) + * & ~(GLRO(dl_pagesize) - 1)); + * + * In glibc, the segment file size is aligned up to the nearest page size and + * added to the virtual address of the segment. We just want the size here. + */ + // lib.memorySize = PAGE_ALIGN_UP(hdr.p_filesz); + *length = PAGE_ALIGN_UP(hdr.p_filesz); + *base = (void*)(baseAddr + hdr.p_paddr); + + break; + } + } + + return 0; +} + +static int parse_prot(const char* s) +{ + int prot = 0; + + for (; *s; s++) + { + switch (*s) + { + case '-': + break; + case 'r': + prot |= PROT_READ; + break; + case 'w': + prot |= PROT_WRITE; + break; + case 'x': + prot |= PROT_EXEC; + break; + case 's': + break; + case 'p': + break; + default: + break; + } + } + + return prot; +} + +static int get_prot(void* pAddr, size_t nSize) +{ + FILE* f = fopen("/proc/self/maps", "r"); + + uintptr_t nAddr = (uintptr_t)pAddr; + + char line[512]; + while (fgets(line, sizeof(line), f)) + { + char start[16]; + char end[16]; + char prot[16]; + + const char* src = line; + + char* dst = start; + while (*src != '-') + *dst++ = *src++; + *dst = 0; + + src++; // skip "-"" + + dst = end; + while (!isspace(*src)) + *dst++ = *src++; + *dst = 0; + + src++; // skip space + + dst = prot; + while (!isspace(*src)) + *dst++ = *src++; + *dst = 0; + + uintptr_t nStart = (uintptr_t)strtoul(start, nullptr, 16); + uintptr_t nEnd = (uintptr_t)strtoul(end, nullptr, 16); + + if (nStart < nAddr && nEnd >(nAddr + nSize)) + { + fclose(f); + return parse_prot(prot); + } + } + + fclose(f); + return 0; +} + +void Plat_WriteMemory(void* pPatchAddress, uint8_t* pPatch, int iPatchSize) +{ + int old_prot = get_prot(pPatchAddress, iPatchSize); + + uintptr_t page_size = sysconf(_SC_PAGESIZE); + uint8_t* align_addr = (uint8_t*)((uintptr_t)pPatchAddress & ~(page_size - 1)); + + uint8_t* end = (uint8_t*)pPatchAddress + iPatchSize; + uintptr_t align_size = end - align_addr; + + int result = mprotect(align_addr, align_size, PROT_READ | PROT_WRITE); + + memcpy(pPatchAddress, pPatch, iPatchSize); + + result = mprotect(align_addr, align_size, old_prot); +} +#endif \ No newline at end of file diff --git a/src/utils/platform/platform_win.cpp b/src/utils/platform/platform_win.cpp new file mode 100644 index 000000000..87971fd45 --- /dev/null +++ b/src/utils/platform/platform_win.cpp @@ -0,0 +1,10 @@ +#ifdef _WIN32 + +#include "platform.h" + +void Plat_WriteMemory(void *pPatchAddress, uint8_t *pPatch, int iPatchSize) +{ + WriteProcessMemory(GetCurrentProcess(), pPatchAddress, (void *)pPatch, iPatchSize, nullptr); +} + +#endif \ No newline at end of file diff --git a/src/utils/utils.cpp b/src/utils/utils.cpp new file mode 100644 index 000000000..5a858fcca --- /dev/null +++ b/src/utils/utils.cpp @@ -0,0 +1,303 @@ +#include "common.h" +#include "utils.h" +#include <core/entrypoint.h> +#include <chrono> +#include <random> +#include <cstddef> +#include <server/configuration/configuration.h> +#include <filesystem/logs/logger.h> +#include <sstream> + +const char* wws = " \t\n\r\f\v"; + +std::map<std::string, std::string> terminalColors = { + {"{DEFAULT}", WIN_LINUX("\033[38;2;255;255;255m", "\e[39m")}, + {"{WHITE}", WIN_LINUX("\033[38;2;255;255;255m", "\e[39m")}, + {"{DARKRED}", WIN_LINUX("\x1B[31m", "\e[31m")}, + {"{LIGHTPURPLE}", WIN_LINUX("\x1B[95m", "\e[95m")}, + {"{GREEN}", WIN_LINUX("\x1B[32m", "\e[32m")}, + {"{OLIVE}", WIN_LINUX("\x1B[33m", "\e[33m")}, + {"{LIME}", WIN_LINUX("\x1B[92m", "\e[92m")}, + {"{RED}", WIN_LINUX("\x1B[31m", "\e[31m")}, + {"{GRAY}", WIN_LINUX("\x1B[37m", "\e[37m")}, + {"{GREY}", WIN_LINUX("\x1B[37m", "\e[37m")}, + {"{LIGHTYELLOW}", WIN_LINUX("\x1B[93m", "\e[93m")}, + {"{YELLOW}", WIN_LINUX("\x1B[93m", "\e[93m")}, + {"{SILVER}", WIN_LINUX("\x1B[37m", "\e[37m")}, + {"{BLUEGREY}", WIN_LINUX("\x1B[94m", "\e[94m")}, + {"{LIGHTBLUE}", WIN_LINUX("\x1B[94m", "\e[94m")}, + {"{BLUE}", WIN_LINUX("\x1B[34m", "\e[34m")}, + {"{DARKBLUE}", WIN_LINUX("\x1B[34m", "\e[34m")}, + {"{PURPLE}", WIN_LINUX("\x1B[35m", "\e[35m")}, + {"{MAGENTA}", WIN_LINUX("\x1B[35m", "\e[35m")}, + {"{LIGHTRED}", WIN_LINUX("\x1B[91m", "\e[91m")}, + {"{GOLD}", WIN_LINUX("\x1B[93m", "\e[93m")}, + {"{ORANGE}", WIN_LINUX("\x1B[33m", "\e[33m")}, + + {"{BGDEFAULT}", WIN_LINUX("\x1B[40m", "\e[40m")}, + {"{BGDARKRED}", WIN_LINUX("\x1B[41m", "\e[41m")}, + {"{BGLIGHTPURPLE}", WIN_LINUX("\x1B[105m", "\e[105m")}, + {"{BGGREEN}", WIN_LINUX("\x1B[42m", "\e[42m")}, + {"{BGOLIVE}", WIN_LINUX("\x1B[43m", "\e[43m")}, + {"{BGLIME}", WIN_LINUX("\x1B[102m", "\e[102m")}, + {"{BGRED}", WIN_LINUX("\x1B[41m", "\e[41m")}, + {"{BGGRAY}", WIN_LINUX("\x1B[47m", "\e[47m")}, + {"{BGGREY}", WIN_LINUX("\x1B[47m", "\e[47m")}, + {"{BGLIGHTYELLOW}", WIN_LINUX("\x1B[103m", "\e[103m")}, + {"{BGYELLOW}", WIN_LINUX("\x1B[103m", "\e[103m")}, + {"{BGSILVER}", WIN_LINUX("\x1B[47m", "\e[47m")}, + {"{BGBLUEGREY}", WIN_LINUX("\x1B[104m", "\e[104m")}, + {"{BGLIGHTBLUE}", WIN_LINUX("\x1B[104m", "\e[104m")}, + {"{BGBLUE}", WIN_LINUX("\x1B[44m", "\e[44m")}, + {"{BGDARKBLUE}", WIN_LINUX("\x1B[44m", "\e[44m")}, + {"{BGPURPLE}", WIN_LINUX("\x1B[45m", "\e[45m")}, + {"{BGMAGENTA}", WIN_LINUX("\x1B[45m", "\e[45m")}, + {"{BGLIGHTRED}", WIN_LINUX("\x1B[101m", "\e[101m")}, + {"{BGGOLD}", WIN_LINUX("\x1B[103m", "\e[103m")}, + {"{BGORANGE}", WIN_LINUX("\x1B[43m", "\e[43m")}, +}; + +std::vector<std::string> terminalPrefixColors = { + "{DEFAULT}", + "{WHITE}", + "{DARKRED}", + "{LIGHTPURPLE}", + "{GREEN}", + "{OLIVE}", + "{LIME}", + "{RED}", + "{LIGHTYELLOW}", + "{YELLOW}", + "{BLUEGREY}", + "{LIGHTBLUE}", + "{BLUE}", + "{DARKBLUE}", + "{PURPLE}", + "{MAGENTA}", + "{LIGHTRED}", + "{GOLD}", + "{ORANGE}", +}; + +int UTIL_FormatArgs(char* buffer, int maxlength, const char* fmt, va_list params) +{ + int len = vsnprintf(buffer, maxlength, fmt, params); + + if (len >= maxlength) + { + len = maxlength - 1; + buffer[len] = '\0'; + } + + return len; +} + +std::string TerminalProcessColor(std::string str) +{ + for (auto it = terminalColors.begin(); it != terminalColors.end(); ++it) + { + str = replace(str, it->first, it->second); + str = replace(str, str_tolower(it->first), it->second); + } + return str; +} + +std::string GetTerminalStringColor(std::string plugin_name) +{ + auto hash = hash_64_fnv1a_const(plugin_name.c_str()); + uint64_t steps = (hash % terminalPrefixColors.size()); + return terminalColors[terminalPrefixColors[steps]]; +} + +void PLUGIN_PRINT(std::string category, std::string str) +{ + std::string final_string = string_format("%s %s[%s]%s ", PREFIX, GetTerminalStringColor(category).c_str(), category.c_str(), terminalColors.at("{DEFAULT}").c_str()); + auto splitted = explode(str, "\n"); + for (int i = 0; i < splitted.size(); i++) { + if (splitted[i] == "" && i + 1 == splitted.size()) break; + META_CONPRINTF("%s%s\n", final_string.c_str(), splitted[i].c_str()); + } + + if (g_Config.FetchValue<bool>("core.logging.save_core_messages")) { + if (g_Logger.FetchLogger("core")) { + str.pop_back(); + g_Logger.FetchLogger("core")->WriteLog(LogType_t::Common, "[" + category + "] " + str); + } + } +} + +void PLUGIN_PRINTF(std::string category, std::string str, ...) +{ + va_list ap; + char buffer[16384]; + + va_start(ap, str); + UTIL_FormatArgs(buffer, sizeof(buffer), str.c_str(), ap); + va_end(ap); + + std::string fstr = buffer; + + std::string final_prefix = string_format("%s %s[%s]%s ", PREFIX, GetTerminalStringColor(category).c_str(), category.c_str(), terminalColors.at("{DEFAULT}").c_str()); + auto splitted = explode(fstr, "\n"); + for (int i = 0; i < splitted.size(); i++) { + if (splitted[i] == "" && i + 1 == splitted.size()) break; + META_CONPRINTF("%s%s\n", final_prefix.c_str(), splitted[i].c_str()); + } + + if (g_Config.FetchValue<bool>("core.logging.save_core_messages")) { + if (g_Logger.FetchLogger("core")) { + std::string buf = buffer; + buf.pop_back(); + g_Logger.FetchLogger("core")->WriteLog(LogType_t::Common, "[" + category + "] " + buf); + } + } +} + +std::string replace(std::string str, const std::string from, const std::string to) +{ + if (from.empty()) + return str; + int start_pos = 0; + while ((start_pos = str.find(from, start_pos)) != std::string::npos) + { + str.replace(start_pos, from.length(), to); + start_pos += to.length(); + } + return str; +} + +std::vector<std::string> explode(std::string s, std::string delimiter) +{ + if (s.size() == 0) return {}; + int pos_start = 0, pos_end, delim_len = delimiter.length(); + std::string token; + std::vector<std::string> res; + + while ((pos_end = s.find(delimiter, pos_start)) != std::string::npos) + { + token = s.substr(pos_start, pos_end - pos_start); + pos_start = pos_end + delim_len; + res.push_back(token); + } + + res.push_back(s.substr(pos_start)); + return res; +} + +std::set<std::string> explodeToSet(std::string str, std::string delimiter) +{ + if (str.size() == 0) return {}; + int pos_start = 0, pos_end, delim_len = delimiter.length(); + std::string token; + std::set<std::string> res; + + while ((pos_end = str.find(delimiter, pos_start)) != std::string::npos) + { + token = str.substr(pos_start, pos_end - pos_start); + pos_start = pos_end + delim_len; + res.insert(token); + } + + res.insert(str.substr(pos_start)); + return res; +} + +std::string implode(std::vector<std::string> elements, std::string delimiter) +{ + std::string s; + for (std::vector<std::string>::iterator ii = elements.begin(); ii != elements.end(); ++ii) + { + s += (*ii); + if (ii + 1 != elements.end()) + s += delimiter; + } + return s; +} + +bool ends_with(std::string value, std::string ending) +{ + if (value.size() < ending.size()) + return false; + return std::equal(ending.rbegin(), ending.rend(), value.rbegin()); +} + +bool starts_with(std::string value, std::string starting) +{ + if (value.size() < starting.size()) + return false; + return std::equal(starting.begin(), starting.end(), value.begin()); +} + +uint64_t GetTime() +{ + return std::chrono::duration_cast<std::chrono::milliseconds>(std::chrono::system_clock::now().time_since_epoch()).count(); +} + +std::string str_tolower(std::string s) +{ + std::transform(s.begin(), s.end(), s.begin(), [](unsigned char c) + { return std::tolower(c); }); + return s; +} + +std::string str_toupper(std::string s) +{ + std::transform(s.begin(), s.end(), s.begin(), [](unsigned char c) + { return std::toupper(c); }); + return s; +} + +int32_t genrand() +{ + static std::random_device rd; + static std::mt19937 rng(rd()); + return std::uniform_int_distribution<int>(0, INT_MAX)(rng); +} + +std::string get_uuid() +{ + return string_format( + "%04x%04x-%04x-%04x-%04x-%04x%04x%04x", + (genrand() & 0xFFFF), (genrand() & 0xFFFF), + (genrand() & 0xFFFF), + ((genrand() & 0x0fff) | 0x4000), + (genrand() % 0x3fff + 0x8000), + (genrand() & 0xFFFF), (genrand() & 0xFFFF), (genrand() & 0xFFFF)); +} + +characterset_t cset{ "" }; + +std::vector<std::string> TokenizeCommand(std::string cmd) +{ + CCommand tokenizedArgs; + tokenizedArgs.Tokenize(cmd.c_str(), &cset); + + std::vector<std::string> cmdString; + for (int i = 0; i < tokenizedArgs.ArgC(); i++) + cmdString.push_back(tokenizedArgs[i]); + + return cmdString; +} + +void* StringToPtr(std::string str) +{ +#ifdef _WIN32 + return (void*)strtoll(str.c_str(), nullptr, 16); +#else + return (void*)strtol(str.c_str(), nullptr, 16); +#endif +} + +std::string PtrToString(void* ptr) +{ + return string_format("%p", ptr); +} + +void PrintTextTable(std::string category, TextTable table) +{ + std::stringstream outputTable; + outputTable << table; + std::vector<std::string> rows = explode(outputTable.str(), "\n"); + for (int i = 0; i < rows.size() - 1; i++) + PLUGIN_PRINTF(category, "%s\n", rows[i].c_str()); +} \ No newline at end of file diff --git a/src/utils/utils.h b/src/utils/utils.h new file mode 100644 index 000000000..5be7ae4f3 --- /dev/null +++ b/src/utils/utils.h @@ -0,0 +1,59 @@ +#ifndef _utils_utils_h +#define _utils_utils_h + +#include <string> +#include <vector> +#include <set> +#include <map> +#include <texttable/TextTable.h> + +constexpr uint32_t val_32_const = 0x811c9dc5; +constexpr uint32_t prime_32_const = 0x1000193; +constexpr uint64_t val_64_const = 0xcbf29ce484222325; +constexpr uint64_t prime_64_const = 0x100000001b3; + +inline constexpr uint32_t hash_32_fnv1a_const(const char* const str, const uint32_t value = val_32_const) noexcept +{ + return (str[0] == '\0') ? value : hash_32_fnv1a_const(&str[1], (value ^ uint32_t(str[0])) * prime_32_const); +} + +inline constexpr uint64_t hash_64_fnv1a_const(const char* const str, const uint64_t value = val_64_const) noexcept +{ + return (str[0] == '\0') ? value : hash_64_fnv1a_const(&str[1], (value ^ uint64_t(str[0])) * prime_64_const); +} + +std::string replace(std::string str, const std::string from, const std::string to); +std::vector<std::string> explode(std::string str, std::string delimiter); +std::set<std::string> explodeToSet(std::string str, std::string delimiter); +std::string implode(std::vector<std::string> elements, std::string delimiter); +std::string ProcessColor(std::string str, int team); +bool ends_with(std::string value, std::string ending); +bool starts_with(std::string value, std::string starting); +uint64_t GetTime(); +std::string str_tolower(std::string s); +std::string str_toupper(std::string s); +std::string get_uuid(); +std::string TerminalProcessColor(std::string str); +std::string GetTerminalStringColor(std::string plugin_name); +std::vector<std::string> TokenizeCommand(std::string cmd); +void PrintTextTable(std::string category, TextTable table); + +template <typename... Args> +std::string string_format(const std::string &format, Args... args) +{ + int size_s = snprintf(nullptr, 0, format.c_str(), args...) + 1; // Extra space for '\0' + if (size_s <= 0) + return ""; + + size_t size = static_cast<size_t>(size_s); + char* buf = new char[size]; + snprintf(buf, size, format.c_str(), args...); + std::string out = std::string(buf, buf + size - 1); // We don't want the '\0' inside + delete buf; + return out; +} + +void* StringToPtr(std::string str); +std::string PtrToString(void* ptr); + +#endif \ No newline at end of file diff --git a/vendor/bzip2/linuxsteamrt64/include/bz_version.h b/vendor/bzip2/linuxsteamrt64/include/bz_version.h new file mode 100644 index 000000000..4dd67658b --- /dev/null +++ b/vendor/bzip2/linuxsteamrt64/include/bz_version.h @@ -0,0 +1 @@ +#define BZ_VERSION "1.1.0" diff --git a/vendor/bzip2/linuxsteamrt64/include/bzlib.h b/vendor/bzip2/linuxsteamrt64/include/bzlib.h new file mode 100644 index 000000000..96e1b546d --- /dev/null +++ b/vendor/bzip2/linuxsteamrt64/include/bzlib.h @@ -0,0 +1,287 @@ + +/*-------------------------------------------------------------*/ +/*--- Public header file for the library. ---*/ +/*--- bzlib.h ---*/ +/*-------------------------------------------------------------*/ + +/* ------------------------------------------------------------------ + This file is part of bzip2/libbzip2, a program and library for + lossless, block-sorting data compression. + + bzip2/libbzip2 version 1.1.0 of 6 September 2010 + Copyright (C) 1996-2010 Julian Seward <jseward@acm.org> + + Please read the WARNING, DISCLAIMER and PATENTS sections in the + README file. + + This program is released under the terms of the license contained + in the file LICENSE. + ------------------------------------------------------------------ */ + + +#ifndef _BZLIB_H +#define _BZLIB_H + +#ifdef __cplusplus +extern "C" { +#endif + +#define BZ_RUN 0 +#define BZ_FLUSH 1 +#define BZ_FINISH 2 + +#define BZ_OK 0 +#define BZ_RUN_OK 1 +#define BZ_FLUSH_OK 2 +#define BZ_FINISH_OK 3 +#define BZ_STREAM_END 4 +#define BZ_SEQUENCE_ERROR (-1) +#define BZ_PARAM_ERROR (-2) +#define BZ_MEM_ERROR (-3) +#define BZ_DATA_ERROR (-4) +#define BZ_DATA_ERROR_MAGIC (-5) +#define BZ_IO_ERROR (-6) +#define BZ_UNEXPECTED_EOF (-7) +#define BZ_OUTBUFF_FULL (-8) +#define BZ_CONFIG_ERROR (-9) + +typedef + struct { + char *next_in; + unsigned int avail_in; + unsigned int total_in_lo32; + unsigned int total_in_hi32; + + char *next_out; + unsigned int avail_out; + unsigned int total_out_lo32; + unsigned int total_out_hi32; + + void *state; + + void *(*bzalloc)(void *,int,int); + void (*bzfree)(void *,void *); + void *opaque; + } + bz_stream; + + +#ifndef BZ_IMPORT +#define BZ_EXPORT +#endif + +#ifndef BZ_NO_STDIO +/* Need a definitition for FILE */ +#include <stdio.h> +#endif + +#ifdef _WIN32 +# include <windows.h> +# ifdef small + /* windows.h define small to char */ +# undef small +# endif +# ifndef WINAPI +# define WINAPI +# endif +# ifdef BZ_EXPORT +# define BZ_API(func) WINAPI func +# define BZ_EXTERN extern +# else + /* import windows dll dynamically */ +# define BZ_API(func) (WINAPI * func) +# define BZ_EXTERN +# endif +#else +# define BZ_API(func) func +#endif + +#ifndef BZ_EXTERN +#define BZ_EXTERN extern +#endif + +/*-- Core (low-level) library functions --*/ + +BZ_EXTERN int BZ_API(BZ2_bzCompressInit) ( + bz_stream* strm, + int blockSize100k, + int verbosity, + int workFactor + ); + +BZ_EXTERN int BZ_API(BZ2_bzCompress) ( + bz_stream* strm, + int action + ); + +BZ_EXTERN int BZ_API(BZ2_bzCompressEnd) ( + bz_stream* strm + ); + +BZ_EXTERN int BZ_API(BZ2_bzDecompressInit) ( + bz_stream *strm, + int verbosity, + int small + ); + +BZ_EXTERN int BZ_API(BZ2_bzDecompress) ( + bz_stream* strm + ); + +BZ_EXTERN int BZ_API(BZ2_bzDecompressEnd) ( + bz_stream *strm + ); + + + +/*-- High(er) level library functions --*/ + +#ifndef BZ_NO_STDIO +#define BZ_MAX_UNUSED 5000 + +typedef void BZFILE; + +BZ_EXTERN BZFILE* BZ_API(BZ2_bzReadOpen) ( + int* bzerror, + FILE* f, + int verbosity, + int small, + void* unused, + int nUnused + ); + +BZ_EXTERN void BZ_API(BZ2_bzReadClose) ( + int* bzerror, + BZFILE* b + ); + +BZ_EXTERN void BZ_API(BZ2_bzReadGetUnused) ( + int* bzerror, + BZFILE* b, + void** unused, + int* nUnused + ); + +BZ_EXTERN int BZ_API(BZ2_bzRead) ( + int* bzerror, + BZFILE* b, + void* buf, + int len + ); + +BZ_EXTERN BZFILE* BZ_API(BZ2_bzWriteOpen) ( + int* bzerror, + FILE* f, + int blockSize100k, + int verbosity, + int workFactor + ); + +BZ_EXTERN void BZ_API(BZ2_bzWrite) ( + int* bzerror, + BZFILE* b, + void* buf, + int len + ); + +BZ_EXTERN void BZ_API(BZ2_bzWriteClose) ( + int* bzerror, + BZFILE* b, + int abandon, + unsigned int* nbytes_in, + unsigned int* nbytes_out + ); + +BZ_EXTERN void BZ_API(BZ2_bzWriteClose64) ( + int* bzerror, + BZFILE* b, + int abandon, + unsigned int* nbytes_in_lo32, + unsigned int* nbytes_in_hi32, + unsigned int* nbytes_out_lo32, + unsigned int* nbytes_out_hi32 + ); +#endif + + +/*-- Utility functions --*/ + +BZ_EXTERN int BZ_API(BZ2_bzBuffToBuffCompress) ( + char* dest, + unsigned int* destLen, + char* source, + unsigned int sourceLen, + int blockSize100k, + int verbosity, + int workFactor + ); + +BZ_EXTERN int BZ_API(BZ2_bzBuffToBuffDecompress) ( + char* dest, + unsigned int* destLen, + char* source, + unsigned int sourceLen, + int small, + int verbosity + ); + + +/*-- + Code contributed by Yoshioka Tsuneo (tsuneo@rr.iij4u.or.jp) + to support better zlib compatibility. + This code is not _officially_ part of libbzip2 (yet); + I haven't tested it, documented it, or considered the + threading-safeness of it. + If this code breaks, please contact both Yoshioka and me. +--*/ + +BZ_EXTERN const char * BZ_API(BZ2_bzlibVersion) ( + void + ); + +#ifndef BZ_NO_STDIO +BZ_EXTERN BZFILE * BZ_API(BZ2_bzopen) ( + const char *path, + const char *mode + ); + +BZ_EXTERN BZFILE * BZ_API(BZ2_bzdopen) ( + int fd, + const char *mode + ); + +BZ_EXTERN int BZ_API(BZ2_bzread) ( + BZFILE* b, + void* buf, + int len + ); + +BZ_EXTERN int BZ_API(BZ2_bzwrite) ( + BZFILE* b, + void* buf, + int len + ); + +BZ_EXTERN int BZ_API(BZ2_bzflush) ( + BZFILE* b + ); + +BZ_EXTERN void BZ_API(BZ2_bzclose) ( + BZFILE* b + ); + +BZ_EXTERN const char * BZ_API(BZ2_bzerror) ( + BZFILE *b, + int *errnum + ); +#endif + +#ifdef __cplusplus +} +#endif + +#endif + +/*-------------------------------------------------------------*/ +/*--- end bzlib.h ---*/ +/*-------------------------------------------------------------*/ diff --git a/vendor/bzip2/linuxsteamrt64/include/bzlib_private.h b/vendor/bzip2/linuxsteamrt64/include/bzlib_private.h new file mode 100644 index 000000000..73f895057 --- /dev/null +++ b/vendor/bzip2/linuxsteamrt64/include/bzlib_private.h @@ -0,0 +1,507 @@ + +/*-------------------------------------------------------------*/ +/*--- Private header file for the library. ---*/ +/*--- bzlib_private.h ---*/ +/*-------------------------------------------------------------*/ + +/* ------------------------------------------------------------------ + This file is part of bzip2/libbzip2, a program and library for + lossless, block-sorting data compression. + + bzip2/libbzip2 version 1.1.0 of 6 September 2010 + Copyright (C) 1996-2010 Julian Seward <jseward@acm.org> + + Please read the WARNING, DISCLAIMER and PATENTS sections in the + README file. + + This program is released under the terms of the license contained + in the file LICENSE. + ------------------------------------------------------------------ */ + + +#ifndef _BZLIB_PRIVATE_H +#define _BZLIB_PRIVATE_H + +#include <stdlib.h> + +#ifndef BZ_NO_STDIO +#include <stdio.h> +#include <ctype.h> +#include <string.h> +#endif + +#include "bzlib.h" + + + +/*-- General stuff. --*/ + +typedef char Char; +typedef unsigned char Bool; +typedef unsigned char UChar; +typedef int Int32; +typedef unsigned int UInt32; +typedef short Int16; +typedef unsigned short UInt16; + +#define True ((Bool)1) +#define False ((Bool)0) + +#ifndef __GNUC__ +#define __inline__ /* */ +#endif + +#ifndef BZ_NO_STDIO + +extern void BZ2_bz__AssertH__fail ( int errcode ); +#define AssertH(cond,errcode) \ + { if (!(cond)) BZ2_bz__AssertH__fail ( errcode ); } + +#if BZ_DEBUG +#define AssertD(cond,msg) \ + { if (!(cond)) { \ + fprintf ( stderr, \ + "\n\nlibbzip2(debug build): internal error\n\t%s\n", msg );\ + exit(1); \ + }} +#else +#define AssertD(cond,msg) /* */ +#endif + +#define VPrintf0(zf) \ + fprintf(stderr,zf) +#define VPrintf1(zf,za1) \ + fprintf(stderr,zf,za1) +#define VPrintf2(zf,za1,za2) \ + fprintf(stderr,zf,za1,za2) +#define VPrintf3(zf,za1,za2,za3) \ + fprintf(stderr,zf,za1,za2,za3) +#define VPrintf4(zf,za1,za2,za3,za4) \ + fprintf(stderr,zf,za1,za2,za3,za4) +#define VPrintf5(zf,za1,za2,za3,za4,za5) \ + fprintf(stderr,zf,za1,za2,za3,za4,za5) + +#else + +extern void bz_internal_error ( int errcode ); +#define AssertH(cond,errcode) \ + { if (!(cond)) bz_internal_error ( errcode ); } +#define AssertD(cond,msg) do { } while (0) +#define VPrintf0(zf) do { } while (0) +#define VPrintf1(zf,za1) do { } while (0) +#define VPrintf2(zf,za1,za2) do { } while (0) +#define VPrintf3(zf,za1,za2,za3) do { } while (0) +#define VPrintf4(zf,za1,za2,za3,za4) do { } while (0) +#define VPrintf5(zf,za1,za2,za3,za4,za5) do { } while (0) + +#endif + + +#define BZALLOC(nnn) (strm->bzalloc)(strm->opaque,(nnn),1) +#define BZFREE(ppp) (strm->bzfree)(strm->opaque,(ppp)) + + +/*-- Header bytes. --*/ + +#define BZ_HDR_B 0x42 /* 'B' */ +#define BZ_HDR_Z 0x5a /* 'Z' */ +#define BZ_HDR_h 0x68 /* 'h' */ +#define BZ_HDR_0 0x30 /* '0' */ + +/*-- Constants for the back end. --*/ + +#define BZ_MAX_ALPHA_SIZE 258 +#define BZ_MAX_CODE_LEN 23 + +#define BZ_RUNA 0 +#define BZ_RUNB 1 + +#define BZ_N_GROUPS 6 +#define BZ_G_SIZE 50 +#define BZ_N_ITERS 4 + +#define BZ_MAX_SELECTORS (2 + (900000 / BZ_G_SIZE)) + + + +/*-- Stuff for randomising repetitive blocks. --*/ + +extern Int32 BZ2_rNums[512]; + +#define BZ_RAND_DECLS \ + Int32 rNToGo; \ + Int32 rTPos \ + +#define BZ_RAND_INIT_MASK \ + s->rNToGo = 0; \ + s->rTPos = 0 \ + +#define BZ_RAND_MASK ((s->rNToGo == 1) ? 1 : 0) + +#define BZ_RAND_UPD_MASK \ + if (s->rNToGo == 0) { \ + s->rNToGo = BZ2_rNums[s->rTPos]; \ + s->rTPos++; \ + if (s->rTPos == 512) s->rTPos = 0; \ + } \ + s->rNToGo--; + + + +/*-- Stuff for doing CRCs. --*/ + +extern UInt32 BZ2_crc32Table[256]; + +#define BZ_INITIALISE_CRC(crcVar) \ +{ \ + crcVar = 0xffffffffL; \ +} + +#define BZ_FINALISE_CRC(crcVar) \ +{ \ + crcVar = ~(crcVar); \ +} + +#define BZ_UPDATE_CRC(crcVar,cha) \ +{ \ + crcVar = (crcVar << 8) ^ \ + BZ2_crc32Table[(crcVar >> 24) ^ \ + ((UChar)cha)]; \ +} + + + +/*-- States and modes for compression. --*/ + +#define BZ_M_IDLE 1 +#define BZ_M_RUNNING 2 +#define BZ_M_FLUSHING 3 +#define BZ_M_FINISHING 4 + +#define BZ_S_OUTPUT 1 +#define BZ_S_INPUT 2 + +#define BZ_N_RADIX 2 +#define BZ_N_QSORT 12 +#define BZ_N_SHELL 18 +#define BZ_N_OVERSHOOT (BZ_N_RADIX + BZ_N_QSORT + BZ_N_SHELL + 2) + + + + +/*-- Structure holding all the compression-side stuff. --*/ + +typedef + struct { + /* pointer back to the struct bz_stream */ + bz_stream* strm; + + /* mode this stream is in, and whether inputting */ + /* or outputting data */ + Int32 mode; + Int32 state; + + /* remembers avail_in when flush/finish requested */ + UInt32 avail_in_expect; + + /* for doing the block sorting */ + UInt32* arr1; + UInt32* arr2; + UInt32* ftab; + Int32 origPtr; + + /* aliases for arr1 and arr2 */ + UInt32* ptr; + UChar* block; + UInt16* mtfv; + UChar* zbits; + + /* for deciding when to use the fallback sorting algorithm */ + Int32 workFactor; + + /* run-length-encoding of the input */ + UInt32 state_in_ch; + Int32 state_in_len; + BZ_RAND_DECLS; + + /* input and output limits and current posns */ + Int32 nblock; + Int32 nblockMAX; + Int32 numZ; + Int32 state_out_pos; + + /* map of bytes used in block */ + Int32 nInUse; + Bool inUse[256]; + UChar unseqToSeq[256]; + + /* the buffer for bit stream creation */ + UInt32 bsBuff; + Int32 bsLive; + + /* block and combined CRCs */ + UInt32 blockCRC; + UInt32 combinedCRC; + + /* misc administratium */ + Int32 verbosity; + Int32 blockNo; + Int32 blockSize100k; + + /* stuff for coding the MTF values */ + Int32 nMTF; + Int32 mtfFreq [BZ_MAX_ALPHA_SIZE]; + UChar selector [BZ_MAX_SELECTORS]; + UChar selectorMtf[BZ_MAX_SELECTORS]; + + UChar len [BZ_N_GROUPS][BZ_MAX_ALPHA_SIZE]; + Int32 code [BZ_N_GROUPS][BZ_MAX_ALPHA_SIZE]; + Int32 rfreq [BZ_N_GROUPS][BZ_MAX_ALPHA_SIZE]; + /* second dimension: only 3 needed; 4 makes index calculations faster */ + UInt32 len_pack[BZ_MAX_ALPHA_SIZE][4]; + + } + EState; + + + +/*-- externs for compression. --*/ + +extern void +BZ2_blockSort ( EState* ); + +extern void +BZ2_compressBlock ( EState*, Bool ); + +extern void +BZ2_bsInitWrite ( EState* ); + +extern void +BZ2_hbAssignCodes ( Int32*, UChar*, Int32, Int32, Int32 ); + +extern void +BZ2_hbMakeCodeLengths ( UChar*, Int32*, Int32, Int32 ); + + + +/*-- states for decompression. --*/ + +#define BZ_X_IDLE 1 +#define BZ_X_OUTPUT 2 + +#define BZ_X_MAGIC_1 10 +#define BZ_X_MAGIC_2 11 +#define BZ_X_MAGIC_3 12 +#define BZ_X_MAGIC_4 13 +#define BZ_X_BLKHDR_1 14 +#define BZ_X_BLKHDR_2 15 +#define BZ_X_BLKHDR_3 16 +#define BZ_X_BLKHDR_4 17 +#define BZ_X_BLKHDR_5 18 +#define BZ_X_BLKHDR_6 19 +#define BZ_X_BCRC_1 20 +#define BZ_X_BCRC_2 21 +#define BZ_X_BCRC_3 22 +#define BZ_X_BCRC_4 23 +#define BZ_X_RANDBIT 24 +#define BZ_X_ORIGPTR_1 25 +#define BZ_X_ORIGPTR_2 26 +#define BZ_X_ORIGPTR_3 27 +#define BZ_X_MAPPING_1 28 +#define BZ_X_MAPPING_2 29 +#define BZ_X_SELECTOR_1 30 +#define BZ_X_SELECTOR_2 31 +#define BZ_X_SELECTOR_3 32 +#define BZ_X_CODING_1 33 +#define BZ_X_CODING_2 34 +#define BZ_X_CODING_3 35 +#define BZ_X_MTF_1 36 +#define BZ_X_MTF_2 37 +#define BZ_X_MTF_3 38 +#define BZ_X_MTF_4 39 +#define BZ_X_MTF_5 40 +#define BZ_X_MTF_6 41 +#define BZ_X_ENDHDR_2 42 +#define BZ_X_ENDHDR_3 43 +#define BZ_X_ENDHDR_4 44 +#define BZ_X_ENDHDR_5 45 +#define BZ_X_ENDHDR_6 46 +#define BZ_X_CCRC_1 47 +#define BZ_X_CCRC_2 48 +#define BZ_X_CCRC_3 49 +#define BZ_X_CCRC_4 50 + + + +/*-- Constants for the fast MTF decoder. --*/ + +#define MTFA_SIZE 4096 +#define MTFL_SIZE 16 + + + +/*-- Structure holding all the decompression-side stuff. --*/ + +typedef + struct { + /* pointer back to the struct bz_stream */ + bz_stream* strm; + + /* state indicator for this stream */ + Int32 state; + + /* for doing the final run-length decoding */ + UChar state_out_ch; + Int32 state_out_len; + Bool blockRandomised; + BZ_RAND_DECLS; + + /* the buffer for bit stream reading */ + UInt32 bsBuff; + Int32 bsLive; + + /* misc administratium */ + Int32 blockSize100k; + Bool smallDecompress; + Int32 currBlockNo; + Int32 verbosity; + + /* for undoing the Burrows-Wheeler transform */ + Int32 origPtr; + UInt32 tPos; + Int32 k0; + Int32 unzftab[256]; + Int32 nblock_used; + Int32 cftab[257]; + Int32 cftabCopy[257]; + + /* for undoing the Burrows-Wheeler transform (FAST) */ + UInt32 *tt; + + /* for undoing the Burrows-Wheeler transform (SMALL) */ + UInt16 *ll16; + UChar *ll4; + + /* stored and calculated CRCs */ + UInt32 storedBlockCRC; + UInt32 storedCombinedCRC; + UInt32 calculatedBlockCRC; + UInt32 calculatedCombinedCRC; + + /* map of bytes used in block */ + Int32 nInUse; + Bool inUse[256]; + Bool inUse16[16]; + UChar seqToUnseq[256]; + + /* for decoding the MTF values */ + UChar mtfa [MTFA_SIZE]; + Int32 mtfbase[256 / MTFL_SIZE]; + UChar selector [BZ_MAX_SELECTORS]; + UChar selectorMtf[BZ_MAX_SELECTORS]; + UChar len [BZ_N_GROUPS][BZ_MAX_ALPHA_SIZE]; + + Int32 limit [BZ_N_GROUPS][BZ_MAX_ALPHA_SIZE]; + Int32 base [BZ_N_GROUPS][BZ_MAX_ALPHA_SIZE]; + Int32 perm [BZ_N_GROUPS][BZ_MAX_ALPHA_SIZE]; + Int32 minLens[BZ_N_GROUPS]; + + /* save area for scalars in the main decompress code */ + Int32 save_i; + Int32 save_j; + Int32 save_t; + Int32 save_alphaSize; + Int32 save_nGroups; + Int32 save_nSelectors; + Int32 save_EOB; + Int32 save_groupNo; + Int32 save_groupPos; + Int32 save_nextSym; + Int32 save_nblockMAX; + Int32 save_nblock; + Int32 save_es; + Int32 save_N; + Int32 save_curr; + Int32 save_zt; + Int32 save_zn; + Int32 save_zvec; + Int32 save_zj; + Int32 save_gSel; + Int32 save_gMinlen; + Int32* save_gLimit; + Int32* save_gBase; + Int32* save_gPerm; + + } + DState; + + + +/*-- Macros for decompression. --*/ + +#define BZ_GET_FAST(cccc) \ + /* c_tPos is unsigned, hence test < 0 is pointless. */ \ + if (s->tPos >= (UInt32)100000 * (UInt32)s->blockSize100k) return True; \ + s->tPos = s->tt[s->tPos]; \ + cccc = (UChar)(s->tPos & 0xff); \ + s->tPos >>= 8; + +#define BZ_GET_FAST_C(cccc) \ + /* c_tPos is unsigned, hence test < 0 is pointless. */ \ + if (c_tPos >= (UInt32)100000 * (UInt32)ro_blockSize100k) return True; \ + c_tPos = c_tt[c_tPos]; \ + cccc = (UChar)(c_tPos & 0xff); \ + c_tPos >>= 8; + +#define SET_LL4(i,n) \ + { if (((i) & 0x1) == 0) \ + s->ll4[(i) >> 1] = (s->ll4[(i) >> 1] & 0xf0) | (n); else \ + s->ll4[(i) >> 1] = (s->ll4[(i) >> 1] & 0x0f) | ((n) << 4); \ + } + +#define GET_LL4(i) \ + ((((UInt32)(s->ll4[(i) >> 1])) >> (((i) << 2) & 0x4)) & 0xF) + +#define SET_LL(i,n) \ + { s->ll16[i] = (UInt16)(n & 0x0000ffff); \ + SET_LL4(i, n >> 16); \ + } + +#define GET_LL(i) \ + (((UInt32)s->ll16[i]) | (GET_LL4(i) << 16)) + +#define BZ_GET_SMALL(cccc) \ + /* c_tPos is unsigned, hence test < 0 is pointless. */ \ + if (s->tPos >= (UInt32)100000 * (UInt32)s->blockSize100k) return True; \ + cccc = BZ2_indexIntoF ( s->tPos, s->cftab ); \ + s->tPos = GET_LL(s->tPos); + + +/*-- externs for decompression. --*/ + +extern Int32 +BZ2_indexIntoF ( Int32, Int32* ); + +extern Int32 +BZ2_decompress ( DState* ); + +extern void +BZ2_hbCreateDecodeTables ( Int32*, Int32*, Int32*, UChar*, + Int32, Int32, Int32 ); + + +#endif + + +/*-- BZ_NO_STDIO seems to make NULL disappear on some platforms. --*/ + +#ifdef BZ_NO_STDIO +#ifndef NULL +#define NULL 0 +#endif +#endif + + +/*-------------------------------------------------------------*/ +/*--- end bzlib_private.h ---*/ +/*-------------------------------------------------------------*/ diff --git a/vendor/bzip2/linuxsteamrt64/lib/libbz2.a b/vendor/bzip2/linuxsteamrt64/lib/libbz2.a new file mode 100644 index 0000000000000000000000000000000000000000..81f453e9987f18f4446c0fb2a3e1a075d45a8f78 GIT binary patch literal 370978 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 BGu{9I literal 0 HcmV?d00001 diff --git a/vendor/bzip2/win64/include/bz_version.h b/vendor/bzip2/win64/include/bz_version.h new file mode 100644 index 000000000..4dd67658b --- /dev/null +++ b/vendor/bzip2/win64/include/bz_version.h @@ -0,0 +1 @@ +#define BZ_VERSION "1.1.0" diff --git a/vendor/bzip2/win64/include/bzlib.h b/vendor/bzip2/win64/include/bzlib.h new file mode 100644 index 000000000..96e1b546d --- /dev/null +++ b/vendor/bzip2/win64/include/bzlib.h @@ -0,0 +1,287 @@ + +/*-------------------------------------------------------------*/ +/*--- Public header file for the library. ---*/ +/*--- bzlib.h ---*/ +/*-------------------------------------------------------------*/ + +/* ------------------------------------------------------------------ + This file is part of bzip2/libbzip2, a program and library for + lossless, block-sorting data compression. + + bzip2/libbzip2 version 1.1.0 of 6 September 2010 + Copyright (C) 1996-2010 Julian Seward <jseward@acm.org> + + Please read the WARNING, DISCLAIMER and PATENTS sections in the + README file. + + This program is released under the terms of the license contained + in the file LICENSE. + ------------------------------------------------------------------ */ + + +#ifndef _BZLIB_H +#define _BZLIB_H + +#ifdef __cplusplus +extern "C" { +#endif + +#define BZ_RUN 0 +#define BZ_FLUSH 1 +#define BZ_FINISH 2 + +#define BZ_OK 0 +#define BZ_RUN_OK 1 +#define BZ_FLUSH_OK 2 +#define BZ_FINISH_OK 3 +#define BZ_STREAM_END 4 +#define BZ_SEQUENCE_ERROR (-1) +#define BZ_PARAM_ERROR (-2) +#define BZ_MEM_ERROR (-3) +#define BZ_DATA_ERROR (-4) +#define BZ_DATA_ERROR_MAGIC (-5) +#define BZ_IO_ERROR (-6) +#define BZ_UNEXPECTED_EOF (-7) +#define BZ_OUTBUFF_FULL (-8) +#define BZ_CONFIG_ERROR (-9) + +typedef + struct { + char *next_in; + unsigned int avail_in; + unsigned int total_in_lo32; + unsigned int total_in_hi32; + + char *next_out; + unsigned int avail_out; + unsigned int total_out_lo32; + unsigned int total_out_hi32; + + void *state; + + void *(*bzalloc)(void *,int,int); + void (*bzfree)(void *,void *); + void *opaque; + } + bz_stream; + + +#ifndef BZ_IMPORT +#define BZ_EXPORT +#endif + +#ifndef BZ_NO_STDIO +/* Need a definitition for FILE */ +#include <stdio.h> +#endif + +#ifdef _WIN32 +# include <windows.h> +# ifdef small + /* windows.h define small to char */ +# undef small +# endif +# ifndef WINAPI +# define WINAPI +# endif +# ifdef BZ_EXPORT +# define BZ_API(func) WINAPI func +# define BZ_EXTERN extern +# else + /* import windows dll dynamically */ +# define BZ_API(func) (WINAPI * func) +# define BZ_EXTERN +# endif +#else +# define BZ_API(func) func +#endif + +#ifndef BZ_EXTERN +#define BZ_EXTERN extern +#endif + +/*-- Core (low-level) library functions --*/ + +BZ_EXTERN int BZ_API(BZ2_bzCompressInit) ( + bz_stream* strm, + int blockSize100k, + int verbosity, + int workFactor + ); + +BZ_EXTERN int BZ_API(BZ2_bzCompress) ( + bz_stream* strm, + int action + ); + +BZ_EXTERN int BZ_API(BZ2_bzCompressEnd) ( + bz_stream* strm + ); + +BZ_EXTERN int BZ_API(BZ2_bzDecompressInit) ( + bz_stream *strm, + int verbosity, + int small + ); + +BZ_EXTERN int BZ_API(BZ2_bzDecompress) ( + bz_stream* strm + ); + +BZ_EXTERN int BZ_API(BZ2_bzDecompressEnd) ( + bz_stream *strm + ); + + + +/*-- High(er) level library functions --*/ + +#ifndef BZ_NO_STDIO +#define BZ_MAX_UNUSED 5000 + +typedef void BZFILE; + +BZ_EXTERN BZFILE* BZ_API(BZ2_bzReadOpen) ( + int* bzerror, + FILE* f, + int verbosity, + int small, + void* unused, + int nUnused + ); + +BZ_EXTERN void BZ_API(BZ2_bzReadClose) ( + int* bzerror, + BZFILE* b + ); + +BZ_EXTERN void BZ_API(BZ2_bzReadGetUnused) ( + int* bzerror, + BZFILE* b, + void** unused, + int* nUnused + ); + +BZ_EXTERN int BZ_API(BZ2_bzRead) ( + int* bzerror, + BZFILE* b, + void* buf, + int len + ); + +BZ_EXTERN BZFILE* BZ_API(BZ2_bzWriteOpen) ( + int* bzerror, + FILE* f, + int blockSize100k, + int verbosity, + int workFactor + ); + +BZ_EXTERN void BZ_API(BZ2_bzWrite) ( + int* bzerror, + BZFILE* b, + void* buf, + int len + ); + +BZ_EXTERN void BZ_API(BZ2_bzWriteClose) ( + int* bzerror, + BZFILE* b, + int abandon, + unsigned int* nbytes_in, + unsigned int* nbytes_out + ); + +BZ_EXTERN void BZ_API(BZ2_bzWriteClose64) ( + int* bzerror, + BZFILE* b, + int abandon, + unsigned int* nbytes_in_lo32, + unsigned int* nbytes_in_hi32, + unsigned int* nbytes_out_lo32, + unsigned int* nbytes_out_hi32 + ); +#endif + + +/*-- Utility functions --*/ + +BZ_EXTERN int BZ_API(BZ2_bzBuffToBuffCompress) ( + char* dest, + unsigned int* destLen, + char* source, + unsigned int sourceLen, + int blockSize100k, + int verbosity, + int workFactor + ); + +BZ_EXTERN int BZ_API(BZ2_bzBuffToBuffDecompress) ( + char* dest, + unsigned int* destLen, + char* source, + unsigned int sourceLen, + int small, + int verbosity + ); + + +/*-- + Code contributed by Yoshioka Tsuneo (tsuneo@rr.iij4u.or.jp) + to support better zlib compatibility. + This code is not _officially_ part of libbzip2 (yet); + I haven't tested it, documented it, or considered the + threading-safeness of it. + If this code breaks, please contact both Yoshioka and me. +--*/ + +BZ_EXTERN const char * BZ_API(BZ2_bzlibVersion) ( + void + ); + +#ifndef BZ_NO_STDIO +BZ_EXTERN BZFILE * BZ_API(BZ2_bzopen) ( + const char *path, + const char *mode + ); + +BZ_EXTERN BZFILE * BZ_API(BZ2_bzdopen) ( + int fd, + const char *mode + ); + +BZ_EXTERN int BZ_API(BZ2_bzread) ( + BZFILE* b, + void* buf, + int len + ); + +BZ_EXTERN int BZ_API(BZ2_bzwrite) ( + BZFILE* b, + void* buf, + int len + ); + +BZ_EXTERN int BZ_API(BZ2_bzflush) ( + BZFILE* b + ); + +BZ_EXTERN void BZ_API(BZ2_bzclose) ( + BZFILE* b + ); + +BZ_EXTERN const char * BZ_API(BZ2_bzerror) ( + BZFILE *b, + int *errnum + ); +#endif + +#ifdef __cplusplus +} +#endif + +#endif + +/*-------------------------------------------------------------*/ +/*--- end bzlib.h ---*/ +/*-------------------------------------------------------------*/ diff --git a/vendor/bzip2/win64/include/bzlib_private.h b/vendor/bzip2/win64/include/bzlib_private.h new file mode 100644 index 000000000..73f895057 --- /dev/null +++ b/vendor/bzip2/win64/include/bzlib_private.h @@ -0,0 +1,507 @@ + +/*-------------------------------------------------------------*/ +/*--- Private header file for the library. ---*/ +/*--- bzlib_private.h ---*/ +/*-------------------------------------------------------------*/ + +/* ------------------------------------------------------------------ + This file is part of bzip2/libbzip2, a program and library for + lossless, block-sorting data compression. + + bzip2/libbzip2 version 1.1.0 of 6 September 2010 + Copyright (C) 1996-2010 Julian Seward <jseward@acm.org> + + Please read the WARNING, DISCLAIMER and PATENTS sections in the + README file. + + This program is released under the terms of the license contained + in the file LICENSE. + ------------------------------------------------------------------ */ + + +#ifndef _BZLIB_PRIVATE_H +#define _BZLIB_PRIVATE_H + +#include <stdlib.h> + +#ifndef BZ_NO_STDIO +#include <stdio.h> +#include <ctype.h> +#include <string.h> +#endif + +#include "bzlib.h" + + + +/*-- General stuff. --*/ + +typedef char Char; +typedef unsigned char Bool; +typedef unsigned char UChar; +typedef int Int32; +typedef unsigned int UInt32; +typedef short Int16; +typedef unsigned short UInt16; + +#define True ((Bool)1) +#define False ((Bool)0) + +#ifndef __GNUC__ +#define __inline__ /* */ +#endif + +#ifndef BZ_NO_STDIO + +extern void BZ2_bz__AssertH__fail ( int errcode ); +#define AssertH(cond,errcode) \ + { if (!(cond)) BZ2_bz__AssertH__fail ( errcode ); } + +#if BZ_DEBUG +#define AssertD(cond,msg) \ + { if (!(cond)) { \ + fprintf ( stderr, \ + "\n\nlibbzip2(debug build): internal error\n\t%s\n", msg );\ + exit(1); \ + }} +#else +#define AssertD(cond,msg) /* */ +#endif + +#define VPrintf0(zf) \ + fprintf(stderr,zf) +#define VPrintf1(zf,za1) \ + fprintf(stderr,zf,za1) +#define VPrintf2(zf,za1,za2) \ + fprintf(stderr,zf,za1,za2) +#define VPrintf3(zf,za1,za2,za3) \ + fprintf(stderr,zf,za1,za2,za3) +#define VPrintf4(zf,za1,za2,za3,za4) \ + fprintf(stderr,zf,za1,za2,za3,za4) +#define VPrintf5(zf,za1,za2,za3,za4,za5) \ + fprintf(stderr,zf,za1,za2,za3,za4,za5) + +#else + +extern void bz_internal_error ( int errcode ); +#define AssertH(cond,errcode) \ + { if (!(cond)) bz_internal_error ( errcode ); } +#define AssertD(cond,msg) do { } while (0) +#define VPrintf0(zf) do { } while (0) +#define VPrintf1(zf,za1) do { } while (0) +#define VPrintf2(zf,za1,za2) do { } while (0) +#define VPrintf3(zf,za1,za2,za3) do { } while (0) +#define VPrintf4(zf,za1,za2,za3,za4) do { } while (0) +#define VPrintf5(zf,za1,za2,za3,za4,za5) do { } while (0) + +#endif + + +#define BZALLOC(nnn) (strm->bzalloc)(strm->opaque,(nnn),1) +#define BZFREE(ppp) (strm->bzfree)(strm->opaque,(ppp)) + + +/*-- Header bytes. --*/ + +#define BZ_HDR_B 0x42 /* 'B' */ +#define BZ_HDR_Z 0x5a /* 'Z' */ +#define BZ_HDR_h 0x68 /* 'h' */ +#define BZ_HDR_0 0x30 /* '0' */ + +/*-- Constants for the back end. --*/ + +#define BZ_MAX_ALPHA_SIZE 258 +#define BZ_MAX_CODE_LEN 23 + +#define BZ_RUNA 0 +#define BZ_RUNB 1 + +#define BZ_N_GROUPS 6 +#define BZ_G_SIZE 50 +#define BZ_N_ITERS 4 + +#define BZ_MAX_SELECTORS (2 + (900000 / BZ_G_SIZE)) + + + +/*-- Stuff for randomising repetitive blocks. --*/ + +extern Int32 BZ2_rNums[512]; + +#define BZ_RAND_DECLS \ + Int32 rNToGo; \ + Int32 rTPos \ + +#define BZ_RAND_INIT_MASK \ + s->rNToGo = 0; \ + s->rTPos = 0 \ + +#define BZ_RAND_MASK ((s->rNToGo == 1) ? 1 : 0) + +#define BZ_RAND_UPD_MASK \ + if (s->rNToGo == 0) { \ + s->rNToGo = BZ2_rNums[s->rTPos]; \ + s->rTPos++; \ + if (s->rTPos == 512) s->rTPos = 0; \ + } \ + s->rNToGo--; + + + +/*-- Stuff for doing CRCs. --*/ + +extern UInt32 BZ2_crc32Table[256]; + +#define BZ_INITIALISE_CRC(crcVar) \ +{ \ + crcVar = 0xffffffffL; \ +} + +#define BZ_FINALISE_CRC(crcVar) \ +{ \ + crcVar = ~(crcVar); \ +} + +#define BZ_UPDATE_CRC(crcVar,cha) \ +{ \ + crcVar = (crcVar << 8) ^ \ + BZ2_crc32Table[(crcVar >> 24) ^ \ + ((UChar)cha)]; \ +} + + + +/*-- States and modes for compression. --*/ + +#define BZ_M_IDLE 1 +#define BZ_M_RUNNING 2 +#define BZ_M_FLUSHING 3 +#define BZ_M_FINISHING 4 + +#define BZ_S_OUTPUT 1 +#define BZ_S_INPUT 2 + +#define BZ_N_RADIX 2 +#define BZ_N_QSORT 12 +#define BZ_N_SHELL 18 +#define BZ_N_OVERSHOOT (BZ_N_RADIX + BZ_N_QSORT + BZ_N_SHELL + 2) + + + + +/*-- Structure holding all the compression-side stuff. --*/ + +typedef + struct { + /* pointer back to the struct bz_stream */ + bz_stream* strm; + + /* mode this stream is in, and whether inputting */ + /* or outputting data */ + Int32 mode; + Int32 state; + + /* remembers avail_in when flush/finish requested */ + UInt32 avail_in_expect; + + /* for doing the block sorting */ + UInt32* arr1; + UInt32* arr2; + UInt32* ftab; + Int32 origPtr; + + /* aliases for arr1 and arr2 */ + UInt32* ptr; + UChar* block; + UInt16* mtfv; + UChar* zbits; + + /* for deciding when to use the fallback sorting algorithm */ + Int32 workFactor; + + /* run-length-encoding of the input */ + UInt32 state_in_ch; + Int32 state_in_len; + BZ_RAND_DECLS; + + /* input and output limits and current posns */ + Int32 nblock; + Int32 nblockMAX; + Int32 numZ; + Int32 state_out_pos; + + /* map of bytes used in block */ + Int32 nInUse; + Bool inUse[256]; + UChar unseqToSeq[256]; + + /* the buffer for bit stream creation */ + UInt32 bsBuff; + Int32 bsLive; + + /* block and combined CRCs */ + UInt32 blockCRC; + UInt32 combinedCRC; + + /* misc administratium */ + Int32 verbosity; + Int32 blockNo; + Int32 blockSize100k; + + /* stuff for coding the MTF values */ + Int32 nMTF; + Int32 mtfFreq [BZ_MAX_ALPHA_SIZE]; + UChar selector [BZ_MAX_SELECTORS]; + UChar selectorMtf[BZ_MAX_SELECTORS]; + + UChar len [BZ_N_GROUPS][BZ_MAX_ALPHA_SIZE]; + Int32 code [BZ_N_GROUPS][BZ_MAX_ALPHA_SIZE]; + Int32 rfreq [BZ_N_GROUPS][BZ_MAX_ALPHA_SIZE]; + /* second dimension: only 3 needed; 4 makes index calculations faster */ + UInt32 len_pack[BZ_MAX_ALPHA_SIZE][4]; + + } + EState; + + + +/*-- externs for compression. --*/ + +extern void +BZ2_blockSort ( EState* ); + +extern void +BZ2_compressBlock ( EState*, Bool ); + +extern void +BZ2_bsInitWrite ( EState* ); + +extern void +BZ2_hbAssignCodes ( Int32*, UChar*, Int32, Int32, Int32 ); + +extern void +BZ2_hbMakeCodeLengths ( UChar*, Int32*, Int32, Int32 ); + + + +/*-- states for decompression. --*/ + +#define BZ_X_IDLE 1 +#define BZ_X_OUTPUT 2 + +#define BZ_X_MAGIC_1 10 +#define BZ_X_MAGIC_2 11 +#define BZ_X_MAGIC_3 12 +#define BZ_X_MAGIC_4 13 +#define BZ_X_BLKHDR_1 14 +#define BZ_X_BLKHDR_2 15 +#define BZ_X_BLKHDR_3 16 +#define BZ_X_BLKHDR_4 17 +#define BZ_X_BLKHDR_5 18 +#define BZ_X_BLKHDR_6 19 +#define BZ_X_BCRC_1 20 +#define BZ_X_BCRC_2 21 +#define BZ_X_BCRC_3 22 +#define BZ_X_BCRC_4 23 +#define BZ_X_RANDBIT 24 +#define BZ_X_ORIGPTR_1 25 +#define BZ_X_ORIGPTR_2 26 +#define BZ_X_ORIGPTR_3 27 +#define BZ_X_MAPPING_1 28 +#define BZ_X_MAPPING_2 29 +#define BZ_X_SELECTOR_1 30 +#define BZ_X_SELECTOR_2 31 +#define BZ_X_SELECTOR_3 32 +#define BZ_X_CODING_1 33 +#define BZ_X_CODING_2 34 +#define BZ_X_CODING_3 35 +#define BZ_X_MTF_1 36 +#define BZ_X_MTF_2 37 +#define BZ_X_MTF_3 38 +#define BZ_X_MTF_4 39 +#define BZ_X_MTF_5 40 +#define BZ_X_MTF_6 41 +#define BZ_X_ENDHDR_2 42 +#define BZ_X_ENDHDR_3 43 +#define BZ_X_ENDHDR_4 44 +#define BZ_X_ENDHDR_5 45 +#define BZ_X_ENDHDR_6 46 +#define BZ_X_CCRC_1 47 +#define BZ_X_CCRC_2 48 +#define BZ_X_CCRC_3 49 +#define BZ_X_CCRC_4 50 + + + +/*-- Constants for the fast MTF decoder. --*/ + +#define MTFA_SIZE 4096 +#define MTFL_SIZE 16 + + + +/*-- Structure holding all the decompression-side stuff. --*/ + +typedef + struct { + /* pointer back to the struct bz_stream */ + bz_stream* strm; + + /* state indicator for this stream */ + Int32 state; + + /* for doing the final run-length decoding */ + UChar state_out_ch; + Int32 state_out_len; + Bool blockRandomised; + BZ_RAND_DECLS; + + /* the buffer for bit stream reading */ + UInt32 bsBuff; + Int32 bsLive; + + /* misc administratium */ + Int32 blockSize100k; + Bool smallDecompress; + Int32 currBlockNo; + Int32 verbosity; + + /* for undoing the Burrows-Wheeler transform */ + Int32 origPtr; + UInt32 tPos; + Int32 k0; + Int32 unzftab[256]; + Int32 nblock_used; + Int32 cftab[257]; + Int32 cftabCopy[257]; + + /* for undoing the Burrows-Wheeler transform (FAST) */ + UInt32 *tt; + + /* for undoing the Burrows-Wheeler transform (SMALL) */ + UInt16 *ll16; + UChar *ll4; + + /* stored and calculated CRCs */ + UInt32 storedBlockCRC; + UInt32 storedCombinedCRC; + UInt32 calculatedBlockCRC; + UInt32 calculatedCombinedCRC; + + /* map of bytes used in block */ + Int32 nInUse; + Bool inUse[256]; + Bool inUse16[16]; + UChar seqToUnseq[256]; + + /* for decoding the MTF values */ + UChar mtfa [MTFA_SIZE]; + Int32 mtfbase[256 / MTFL_SIZE]; + UChar selector [BZ_MAX_SELECTORS]; + UChar selectorMtf[BZ_MAX_SELECTORS]; + UChar len [BZ_N_GROUPS][BZ_MAX_ALPHA_SIZE]; + + Int32 limit [BZ_N_GROUPS][BZ_MAX_ALPHA_SIZE]; + Int32 base [BZ_N_GROUPS][BZ_MAX_ALPHA_SIZE]; + Int32 perm [BZ_N_GROUPS][BZ_MAX_ALPHA_SIZE]; + Int32 minLens[BZ_N_GROUPS]; + + /* save area for scalars in the main decompress code */ + Int32 save_i; + Int32 save_j; + Int32 save_t; + Int32 save_alphaSize; + Int32 save_nGroups; + Int32 save_nSelectors; + Int32 save_EOB; + Int32 save_groupNo; + Int32 save_groupPos; + Int32 save_nextSym; + Int32 save_nblockMAX; + Int32 save_nblock; + Int32 save_es; + Int32 save_N; + Int32 save_curr; + Int32 save_zt; + Int32 save_zn; + Int32 save_zvec; + Int32 save_zj; + Int32 save_gSel; + Int32 save_gMinlen; + Int32* save_gLimit; + Int32* save_gBase; + Int32* save_gPerm; + + } + DState; + + + +/*-- Macros for decompression. --*/ + +#define BZ_GET_FAST(cccc) \ + /* c_tPos is unsigned, hence test < 0 is pointless. */ \ + if (s->tPos >= (UInt32)100000 * (UInt32)s->blockSize100k) return True; \ + s->tPos = s->tt[s->tPos]; \ + cccc = (UChar)(s->tPos & 0xff); \ + s->tPos >>= 8; + +#define BZ_GET_FAST_C(cccc) \ + /* c_tPos is unsigned, hence test < 0 is pointless. */ \ + if (c_tPos >= (UInt32)100000 * (UInt32)ro_blockSize100k) return True; \ + c_tPos = c_tt[c_tPos]; \ + cccc = (UChar)(c_tPos & 0xff); \ + c_tPos >>= 8; + +#define SET_LL4(i,n) \ + { if (((i) & 0x1) == 0) \ + s->ll4[(i) >> 1] = (s->ll4[(i) >> 1] & 0xf0) | (n); else \ + s->ll4[(i) >> 1] = (s->ll4[(i) >> 1] & 0x0f) | ((n) << 4); \ + } + +#define GET_LL4(i) \ + ((((UInt32)(s->ll4[(i) >> 1])) >> (((i) << 2) & 0x4)) & 0xF) + +#define SET_LL(i,n) \ + { s->ll16[i] = (UInt16)(n & 0x0000ffff); \ + SET_LL4(i, n >> 16); \ + } + +#define GET_LL(i) \ + (((UInt32)s->ll16[i]) | (GET_LL4(i) << 16)) + +#define BZ_GET_SMALL(cccc) \ + /* c_tPos is unsigned, hence test < 0 is pointless. */ \ + if (s->tPos >= (UInt32)100000 * (UInt32)s->blockSize100k) return True; \ + cccc = BZ2_indexIntoF ( s->tPos, s->cftab ); \ + s->tPos = GET_LL(s->tPos); + + +/*-- externs for decompression. --*/ + +extern Int32 +BZ2_indexIntoF ( Int32, Int32* ); + +extern Int32 +BZ2_decompress ( DState* ); + +extern void +BZ2_hbCreateDecodeTables ( Int32*, Int32*, Int32*, UChar*, + Int32, Int32, Int32 ); + + +#endif + + +/*-- BZ_NO_STDIO seems to make NULL disappear on some platforms. --*/ + +#ifdef BZ_NO_STDIO +#ifndef NULL +#define NULL 0 +#endif +#endif + + +/*-------------------------------------------------------------*/ +/*--- end bzlib_private.h ---*/ +/*-------------------------------------------------------------*/ diff --git a/vendor/bzip2/win64/lib/bz2.lib b/vendor/bzip2/win64/lib/bz2.lib new file mode 100644 index 0000000000000000000000000000000000000000..78f286bfb14deef62ec11ed82010238f83130d04 GIT binary patch literal 123000 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 literal 0 HcmV?d00001 diff --git a/vendor/dyncall/linuxsteamrt64/include/dyncall/dyncall.h b/vendor/dyncall/linuxsteamrt64/include/dyncall/dyncall.h new file mode 100644 index 000000000..d9bec511a --- /dev/null +++ b/vendor/dyncall/linuxsteamrt64/include/dyncall/dyncall.h @@ -0,0 +1,151 @@ +/* + + Package: dyncall + Library: dyncall + File: dyncall/dyncall.h + Description: public header for library dyncall + License: + + Copyright (c) 2007-2020 Daniel Adler <dadler@uni-goettingen.de>, + Tassilo Philipp <tphilipp@potion-studios.com> + + Permission to use, copy, modify, and distribute this software for any + purpose with or without fee is hereby granted, provided that the above + copyright notice and this permission notice appear in all copies. + + THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES + WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF + MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR + ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES + WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN + ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF + OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. + +*/ + + +/* + + dyncall C API + + REVISION + 2015/07/08 added SYS_PPC64 system call + 2015/01/16 added SYS_PPC32 system call + 2007/12/11 initial + +*/ + +#ifndef DYNCALL_H +#define DYNCALL_H + +#include "dyncall_types.h" +#include "dyncall_signature.h" + +#ifdef __cplusplus +extern "C" { +#endif + +typedef struct DCCallVM_ DCCallVM; +typedef struct DCstruct_ DCstruct; + +/* Supported Calling Convention Modes */ + +#define DC_CALL_C_DEFAULT 0 +#define DC_CALL_C_ELLIPSIS 100 +#define DC_CALL_C_ELLIPSIS_VARARGS 101 +#define DC_CALL_C_X86_CDECL 1 +#define DC_CALL_C_X86_WIN32_STD 2 +#define DC_CALL_C_X86_WIN32_FAST_MS 3 +#define DC_CALL_C_X86_WIN32_FAST_GNU 4 +#define DC_CALL_C_X86_WIN32_THIS_MS 5 +#define DC_CALL_C_X86_WIN32_THIS_GNU DC_CALL_C_X86_CDECL /* alias - identical to cdecl (w/ this-ptr as 1st arg) */ +#define DC_CALL_C_X64_WIN64 7 +#define DC_CALL_C_X64_SYSV 8 +#define DC_CALL_C_PPC32_DARWIN 9 +#define DC_CALL_C_PPC32_OSX DC_CALL_C_PPC32_DARWIN /* alias */ +#define DC_CALL_C_ARM_ARM_EABI 10 +#define DC_CALL_C_ARM_THUMB_EABI 11 +#define DC_CALL_C_ARM_ARMHF 30 +#define DC_CALL_C_MIPS32_EABI 12 +#define DC_CALL_C_MIPS32_PSPSDK DC_CALL_C_MIPS32_EABI /* alias - deprecated. */ +#define DC_CALL_C_PPC32_SYSV 13 +#define DC_CALL_C_PPC32_LINUX DC_CALL_C_PPC32_SYSV /* alias */ +#define DC_CALL_C_ARM_ARM 14 +#define DC_CALL_C_ARM_THUMB 15 +#define DC_CALL_C_MIPS32_O32 16 +#define DC_CALL_C_MIPS64_N32 17 +#define DC_CALL_C_MIPS64_N64 18 +#define DC_CALL_C_X86_PLAN9 19 +#define DC_CALL_C_SPARC32 20 +#define DC_CALL_C_SPARC64 21 +#define DC_CALL_C_ARM64 22 +#define DC_CALL_C_PPC64 23 +#define DC_CALL_C_PPC64_LINUX DC_CALL_C_PPC64 /* alias */ +#define DC_CALL_SYS_DEFAULT 200 +#define DC_CALL_SYS_X86_INT80H_LINUX 201 +#define DC_CALL_SYS_X86_INT80H_BSD 202 +#define DC_CALL_SYS_X64_SYSCALL_SYSV 204 +#define DC_CALL_SYS_PPC32 210 +#define DC_CALL_SYS_PPC64 211 + +/* Error codes. */ + +#define DC_ERROR_NONE 0 +#define DC_ERROR_UNSUPPORTED_MODE -1 + +DC_API DCCallVM* dcNewCallVM (DCsize size); +DC_API void dcFree (DCCallVM* vm); +DC_API void dcReset (DCCallVM* vm); + +DC_API void dcMode (DCCallVM* vm, DCint mode); + +DC_API void dcArgBool (DCCallVM* vm, DCbool value); +DC_API void dcArgChar (DCCallVM* vm, DCchar value); +DC_API void dcArgShort (DCCallVM* vm, DCshort value); +DC_API void dcArgInt (DCCallVM* vm, DCint value); +DC_API void dcArgLong (DCCallVM* vm, DClong value); +DC_API void dcArgLongLong (DCCallVM* vm, DClonglong value); +DC_API void dcArgFloat (DCCallVM* vm, DCfloat value); +DC_API void dcArgDouble (DCCallVM* vm, DCdouble value); +DC_API void dcArgPointer (DCCallVM* vm, DCpointer value); +DC_API void dcArgStruct (DCCallVM* vm, DCstruct* s, DCpointer value); + +DC_API void dcCallVoid (DCCallVM* vm, DCpointer funcptr); +DC_API DCbool dcCallBool (DCCallVM* vm, DCpointer funcptr); +DC_API DCchar dcCallChar (DCCallVM* vm, DCpointer funcptr); +DC_API DCshort dcCallShort (DCCallVM* vm, DCpointer funcptr); +DC_API DCint dcCallInt (DCCallVM* vm, DCpointer funcptr); +DC_API DClong dcCallLong (DCCallVM* vm, DCpointer funcptr); +DC_API DClonglong dcCallLongLong (DCCallVM* vm, DCpointer funcptr); +DC_API DCfloat dcCallFloat (DCCallVM* vm, DCpointer funcptr); +DC_API DCdouble dcCallDouble (DCCallVM* vm, DCpointer funcptr); +DC_API DCpointer dcCallPointer (DCCallVM* vm, DCpointer funcptr); +DC_API void dcCallStruct (DCCallVM* vm, DCpointer funcptr, DCstruct* s, DCpointer returnValue); + +DC_API DCint dcGetError (DCCallVM* vm); + +#define DEFAULT_ALIGNMENT 0 +DC_API DCstruct* dcNewStruct (DCsize fieldCount, DCint alignment); +DC_API void dcStructField (DCstruct* s, DCint type, DCint alignment, DCsize arrayLength); +DC_API void dcSubStruct (DCstruct* s, DCsize fieldCount, DCint alignment, DCsize arrayLength); +/* Each dcNewStruct or dcSubStruct call must be paired with a dcCloseStruct. */ +DC_API void dcCloseStruct (DCstruct* s); +DC_API DCsize dcStructSize (DCstruct* s); +DC_API DCsize dcStructAlignment(DCstruct* s); +DC_API void dcFreeStruct (DCstruct* s); + +DC_API DCstruct* dcDefineStruct (const char* signature); + + +/* helpers */ + +/* returns respective mode for callconv sig char (w/o checking if mode exists */ +/* on current platform), or DC_ERROR_UNSUPPORTED_MODE if char isn't a sigchar */ +DC_API DCint dcGetModeFromCCSigChar(DCsigchar sig_char); + +#ifdef __cplusplus +} +#endif + +#endif /* DYNCALL_H */ + diff --git a/vendor/dyncall/linuxsteamrt64/include/dyncall/dyncall_alloc.h b/vendor/dyncall/linuxsteamrt64/include/dyncall/dyncall_alloc.h new file mode 100644 index 000000000..bae29f798 --- /dev/null +++ b/vendor/dyncall/linuxsteamrt64/include/dyncall/dyncall_alloc.h @@ -0,0 +1,41 @@ +/* + + Package: dyncall + Library: dyncall + File: dyncall/dyncall_alloc.h + Description: heap memory management interface (header only) + License: + + Copyright (c) 2007-2018 Daniel Adler <dadler@uni-goettingen.de>, + Tassilo Philipp <tphilipp@potion-studios.com> + + Permission to use, copy, modify, and distribute this software for any + purpose with or without fee is hereby granted, provided that the above + copyright notice and this permission notice appear in all copies. + + THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES + WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF + MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR + ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES + WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN + ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF + OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. + +*/ + + + +#ifndef DYNCALL_ALLOC_H +#define DYNCALL_ALLOC_H + +#ifndef dcAllocMem +#include <stdlib.h> +#define dcAllocMem malloc +#endif + +#ifndef dcFreeMem +#define dcFreeMem free +#endif + +#endif /* DYNCALL_ALLOC_H */ + diff --git a/vendor/dyncall/linuxsteamrt64/include/dyncall/dyncall_callf.h b/vendor/dyncall/linuxsteamrt64/include/dyncall/dyncall_callf.h new file mode 100644 index 000000000..0d323b0a1 --- /dev/null +++ b/vendor/dyncall/linuxsteamrt64/include/dyncall/dyncall_callf.h @@ -0,0 +1,56 @@ +/* + + Package: dyncall + Library: dyncall + File: dyncall/dyncall_callf.h + Description: formatted call interface to dyncall + License: + + Copyright (c) 2007-2018 Daniel Adler <dadler@uni-goettingen.de>, + Tassilo Philipp <tphilipp@potion-studios.com> + + Permission to use, copy, modify, and distribute this software for any + purpose with or without fee is hereby granted, provided that the above + copyright notice and this permission notice appear in all copies. + + THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES + WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF + MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR + ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES + WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN + ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF + OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. + +*/ + + + +/* + + dyncall formatted calls C API + + REVISION + 2007/12/11 initial + +*/ + + +#ifndef DYNCALL_CALLF_H +#define DYNCALL_CALLF_H + +/* dyncall formatted calls */ + +#include "dyncall.h" +#include "dyncall_signature.h" +#include "dyncall_value.h" + +#include <stdarg.h> + +void dcArgF (DCCallVM* vm, const DCsigchar* signature, ...); +void dcVArgF(DCCallVM* vm, const DCsigchar* signature, va_list args); + +void dcCallF (DCCallVM* vm, DCValue* result, DCpointer funcptr, const DCsigchar* signature, ...); +void dcVCallF(DCCallVM* vm, DCValue* result, DCpointer funcptr, const DCsigchar* signature, va_list args); + +#endif /* DYNCALL_CALLF_H */ + diff --git a/vendor/dyncall/linuxsteamrt64/include/dyncall/dyncall_callvm.h b/vendor/dyncall/linuxsteamrt64/include/dyncall/dyncall_callvm.h new file mode 100644 index 000000000..bf26123d2 --- /dev/null +++ b/vendor/dyncall/linuxsteamrt64/include/dyncall/dyncall_callvm.h @@ -0,0 +1,89 @@ +/* + + Package: dyncall + Library: dyncall + File: dyncall/dyncall_callvm.h + Description: Common call vm binary interface. + License: + + Copyright (c) 2007-2018 Daniel Adler <dadler@uni-goettingen.de>, + Tassilo Philipp <tphilipp@potion-studios.com> + + Permission to use, copy, modify, and distribute this software for any + purpose with or without fee is hereby granted, provided that the above + copyright notice and this permission notice appear in all copies. + + THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES + WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF + MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR + ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES + WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN + ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF + OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. + +*/ + + + +#ifndef DYNCALL_CALLVM_H +#define DYNCALL_CALLVM_H + +#include "dyncall.h" + +/* --- callvm virtual function table --------------------------------------- */ + +/* NOTE: if something changes in DCCallVM_, update offset marks in dyncall_call_sparc.S */ + +typedef struct DCCallVM_vt_ DCCallVM_vt; + +struct DCCallVM_ +{ + DCCallVM_vt* mVTpointer; + DCint mError; +}; + +struct DCCallVM_vt_ +{ + void (*free) (DCCallVM* vm); + void (*reset) (DCCallVM* vm); + void (*mode) (DCCallVM* vm,DCint mode); + void (*argBool) (DCCallVM* vm,DCbool B); + void (*argChar) (DCCallVM* vm,DCchar c); + void (*argShort) (DCCallVM* vm,DCshort s); + void (*argInt) (DCCallVM* vm,DCint i); + void (*argLong) (DCCallVM* vm,DClong l); + void (*argLongLong) (DCCallVM* vm,DClonglong L); + void (*argFloat) (DCCallVM* vm,DCfloat f); + void (*argDouble) (DCCallVM* vm,DCdouble d); + void (*argPointer) (DCCallVM* vm,DCpointer p); + void (*argStruct) (DCCallVM* vm,DCstruct* s, DCpointer p); + void (*callVoid) (DCCallVM* vm,DCpointer funcptr); + DCbool (*callBool) (DCCallVM* vm,DCpointer funcptr); + DCchar (*callChar) (DCCallVM* vm,DCpointer funcptr); + DCshort (*callShort) (DCCallVM* vm,DCpointer funcptr); + DCint (*callInt) (DCCallVM* vm,DCpointer funcptr); + DClong (*callLong) (DCCallVM* vm,DCpointer funcptr); + DClonglong (*callLongLong) (DCCallVM* vm,DCpointer funcptr); + DCfloat (*callFloat) (DCCallVM* vm,DCpointer funcptr); + DCdouble (*callDouble) (DCCallVM* vm,DCpointer funcptr); + DCpointer (*callPointer) (DCCallVM* vm,DCpointer funcptr); + void (*callStruct) (DCCallVM* vm,DCpointer funcptr,DCstruct* s, DCpointer returnValue); +}; + +typedef DCvoid (DCvoidvmfunc) (DCCallVM* vm,DCpointer funcptr); +typedef DCbool (DCboolvmfunc) (DCCallVM* vn,DCpointer funcptr); +typedef DCchar (DCcharvmfunc) (DCCallVM* vm,DCpointer funcptr); +typedef DCshort (DCshortvmfunc) (DCCallVM* vm,DCpointer funcptr); +typedef DCint (DCintvmfunc) (DCCallVM* vm,DCpointer funcptr); +typedef DClong (DClongvmfunc) (DCCallVM* vm,DCpointer funcptr); +typedef DClonglong (DClonglongvmfunc) (DCCallVM* vm,DCpointer funcptr); +typedef DCfloat (DCfloatvmfunc) (DCCallVM* vm,DCpointer funcptr); +typedef DCdouble (DCdoublevmfunc) (DCCallVM* vm,DCpointer funcptr); +typedef DCpointer (DCpointervmfunc) (DCCallVM* vm,DCpointer funcptr); + +/* Common base functions for CallVM implementations. */ + +void dc_callvm_base_init(DCCallVM *pInstance, DCCallVM_vt* pVTable); + +#endif /* DYNCALL_CALLVM_H */ + diff --git a/vendor/dyncall/linuxsteamrt64/include/dyncall/dyncall_callvm_arm32_arm.h b/vendor/dyncall/linuxsteamrt64/include/dyncall/dyncall_callvm_arm32_arm.h new file mode 100644 index 000000000..0e7b9c723 --- /dev/null +++ b/vendor/dyncall/linuxsteamrt64/include/dyncall/dyncall_callvm_arm32_arm.h @@ -0,0 +1,55 @@ +/* + + Package: dyncall + Library: dyncall + File: dyncall/dyncall_callvm_arm32_arm.h + Description: + License: + + Copyright (c) 2007-2020 Daniel Adler <dadler@uni-goettingen.de>, + Tassilo Philipp <tphilipp@potion-studios.com> + + Permission to use, copy, modify, and distribute this software for any + purpose with or without fee is hereby granted, provided that the above + copyright notice and this permission notice appear in all copies. + + THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES + WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF + MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR + ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES + WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN + ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF + OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. + +*/ + + + +/* + + dyncall callvm for 32bit ARM32 family of processors + + SUPPORTED CALLING CONVENTIONS + armcall + + REVISION + 2007/12/11 initial + +*/ + + +#ifndef DYNCALL_CALLVM_ARM32_ARM_H +#define DYNCALL_CALLVM_ARM32_ARM_H + +#include "dyncall_callvm.h" +#include "dyncall_vector.h" + +typedef struct +{ + DCCallVM mInterface; + DCpointer mpCallFunc; + DCVecHead mVecHead; +} DCCallVM_arm32_arm; + +#endif /* DYNCALL_CALLVM_ARM32_ARM_H */ + diff --git a/vendor/dyncall/linuxsteamrt64/include/dyncall/dyncall_callvm_arm32_arm_armhf.h b/vendor/dyncall/linuxsteamrt64/include/dyncall/dyncall_callvm_arm32_arm_armhf.h new file mode 100644 index 000000000..26b699878 --- /dev/null +++ b/vendor/dyncall/linuxsteamrt64/include/dyncall/dyncall_callvm_arm32_arm_armhf.h @@ -0,0 +1,59 @@ +/* + + Package: dyncall + Library: dyncall + File: dyncall/dyncall_callvm_arm32_arm_armhf.h + Description: + License: + + Copyright (c) 2007-2020 Daniel Adler <dadler@uni-goettingen.de>, + Tassilo Philipp <tphilipp@potion-studios.com> + + Permission to use, copy, modify, and distribute this software for any + purpose with or without fee is hereby granted, provided that the above + copyright notice and this permission notice appear in all copies. + + THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES + WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF + MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR + ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES + WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN + ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF + OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. + +*/ + + + +/* + + dyncall callvm for 32bit ARM32 family of processors + + SUPPORTED CALLING CONVENTIONS + armcall + + REVISION + 2007/12/11 initial + +*/ + + +#ifndef DYNCALL_CALLVM_ARM32_ARM_ARMHF_H +#define DYNCALL_CALLVM_ARM32_ARM_ARMHF_H + +#include "dyncall_callvm.h" +#include "dyncall_vector.h" + +typedef struct +{ + DCCallVM mInterface; + unsigned int i; + unsigned int s; + unsigned int d; + DCfloat S[16]; + DCpointer mpCallFunc; + DCVecHead mVecHead; +} DCCallVM_arm32_armhf; + +#endif /* DYNCALL_CALLVM_ARM32_ARM_H */ + diff --git a/vendor/dyncall/linuxsteamrt64/include/dyncall/dyncall_callvm_arm32_thumb.h b/vendor/dyncall/linuxsteamrt64/include/dyncall/dyncall_callvm_arm32_thumb.h new file mode 100644 index 000000000..4f3c7e3ba --- /dev/null +++ b/vendor/dyncall/linuxsteamrt64/include/dyncall/dyncall_callvm_arm32_thumb.h @@ -0,0 +1,55 @@ +/* + + Package: dyncall + Library: dyncall + File: dyncall/dyncall_callvm_arm32_thumb.h + Description: + License: + + Copyright (c) 2007-2020 Daniel Adler <dadler@uni-goettingen.de>, + Tassilo Philipp <tphilipp@potion-studios.com> + + Permission to use, copy, modify, and distribute this software for any + purpose with or without fee is hereby granted, provided that the above + copyright notice and this permission notice appear in all copies. + + THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES + WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF + MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR + ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES + WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN + ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF + OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. + +*/ + + + +/* + + dyncall callvm for 32bit ARM32 family of processors + + SUPPORTED CALLING CONVENTIONS + armthumbcall + + REVISION + 2008/08/12 initial + +*/ + + +#ifndef DYNCALL_CALLVM_ARM32_THUMB_H +#define DYNCALL_CALLVM_ARM32_THUMB_H + +#include "dyncall_callvm.h" +#include "dyncall_vector.h" + +typedef struct +{ + DCCallVM mInterface; + DCpointer mpCallFunc; + DCVecHead mVecHead; +} DCCallVM_arm32_thumb; + +#endif /* DYNCALL_CALLVM_ARM32_THUMB_H */ + diff --git a/vendor/dyncall/linuxsteamrt64/include/dyncall/dyncall_callvm_arm64.h b/vendor/dyncall/linuxsteamrt64/include/dyncall/dyncall_callvm_arm64.h new file mode 100644 index 000000000..d5988b28f --- /dev/null +++ b/vendor/dyncall/linuxsteamrt64/include/dyncall/dyncall_callvm_arm64.h @@ -0,0 +1,46 @@ +/* + + Package: dyncall + Library: dyncall + File: dyncall/dyncall_callvm_arm64.h + Description: + License: + + Copyright (c) 2015-2020 Daniel Adler <dadler@uni-goettingen.de>, + Tassilo Philipp <tphilipp@potion-studios.com> + + Permission to use, copy, modify, and distribute this software for any + purpose with or without fee is hereby granted, provided that the above + copyright notice and this permission notice appear in all copies. + + THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES + WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF + MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR + ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES + WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN + ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF + OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. + +*/ + +#ifndef DYNCALL_CALLVM_ARM64_H +#define DYNCALL_CALLVM_ARM64_H + +#include "dyncall_callvm.h" +#include "dyncall_vector.h" + +typedef struct +{ + DCCallVM mInterface; + unsigned int i; /* int register counter */ + unsigned int f; /* float register counter */ + union { /* float register buffer */ + DCfloat S[16]; + DCdouble D[8]; + } u; + unsigned long long I[8]; /* int register buffer */ + DCVecHead mVecHead; /* argument buffer head */ +} DCCallVM_arm64; + +#endif /* DYNCALL_CALLVM_ARM64_DEBIAN_H */ + diff --git a/vendor/dyncall/linuxsteamrt64/include/dyncall/dyncall_callvm_mips.h b/vendor/dyncall/linuxsteamrt64/include/dyncall/dyncall_callvm_mips.h new file mode 100644 index 000000000..5c4cea0ed --- /dev/null +++ b/vendor/dyncall/linuxsteamrt64/include/dyncall/dyncall_callvm_mips.h @@ -0,0 +1,38 @@ +/* + + Package: dyncall + Library: dyncall + File: dyncall/dyncall_callvm_mips.h + Description: + License: + + Copyright (c) 2007-2018 Daniel Adler <dadler@uni-goettingen.de>, + Tassilo Philipp <tphilipp@potion-studios.com> + + Permission to use, copy, modify, and distribute this software for any + purpose with or without fee is hereby granted, provided that the above + copyright notice and this permission notice appear in all copies. + + THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES + WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF + MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR + ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES + WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN + ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF + OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. + +*/ + + + +#ifndef DYNCALL_CALLVM_MIPS_H +#define DYNCALL_CALLVM_MIPS_H + +/* Suported ABIs: */ + +#include "dyncall_callvm_mips_o32.h" +#include "dyncall_callvm_mips_eabi.h" +#include "dyncall_callvm_mips_n64.h" + +#endif /* DYNCALL_CALLVM_MIPS_H */ + diff --git a/vendor/dyncall/linuxsteamrt64/include/dyncall/dyncall_callvm_mips_eabi.h b/vendor/dyncall/linuxsteamrt64/include/dyncall/dyncall_callvm_mips_eabi.h new file mode 100644 index 000000000..f613880c5 --- /dev/null +++ b/vendor/dyncall/linuxsteamrt64/include/dyncall/dyncall_callvm_mips_eabi.h @@ -0,0 +1,73 @@ +/* + + Package: dyncall + Library: dyncall + File: dyncall/dyncall_callvm_mips_eabi.h + Description: + License: + + Copyright (c) 2007-2020 Daniel Adler <dadler@uni-goettingen.de>, + Tassilo Philipp <tphilipp@potion-studios.com> + + Permission to use, copy, modify, and distribute this software for any + purpose with or without fee is hereby granted, provided that the above + copyright notice and this permission notice appear in all copies. + + THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES + WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF + MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR + ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES + WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN + ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF + OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. + +*/ + + + +/* + + dyncall callvm for 32bit MIPS family of processors + + SUPPORTED CALLING CONVENTIONS + eabi + + REVISION + 2008/01/03 initial + +*/ + + +#ifndef DYNCALL_CALLVM_MIPS_EABI_H +#define DYNCALL_CALLVM_MIPS_EABI_H + +#include "dyncall_callvm.h" +#include "dyncall_vector.h" + + +/* Call-kernel register data: + + Details: + Two register content buffers for the corresponding register types + integer and float are filled from CallVM code and then later at + call-kernel loaded into the registers. + */ + +typedef struct +{ + DCint mIntData[8]; + DCfloat mSingleData[8]; +} DCRegData_mips_eabi; + + +typedef struct +{ + DCCallVM mInterface; + int mIntRegs; + int mSingleRegs; + DCRegData_mips_eabi mRegData; + DCVecHead mVecHead; +} DCCallVM_mips_eabi; + +#endif /* DYNCALL_CALLVM_MIPS_EABI_H */ + diff --git a/vendor/dyncall/linuxsteamrt64/include/dyncall/dyncall_callvm_mips_n32.h b/vendor/dyncall/linuxsteamrt64/include/dyncall/dyncall_callvm_mips_n32.h new file mode 100644 index 000000000..45b09c7a1 --- /dev/null +++ b/vendor/dyncall/linuxsteamrt64/include/dyncall/dyncall_callvm_mips_n32.h @@ -0,0 +1,77 @@ +/* + + Package: dyncall + Library: dyncall + File: dyncall/dyncall_callvm_mips_n32.h + Description: mips64 "n32" ABI callvm C interface. + License: + + Copyright (c) 2007-2020 Daniel Adler <dadler@uni-goettingen.de>, + Tassilo Philipp <tphilipp@potion-studios.com> + + Permission to use, copy, modify, and distribute this software for any + purpose with or without fee is hereby granted, provided that the above + copyright notice and this permission notice appear in all copies. + + THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES + WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF + MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR + ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES + WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN + ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF + OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. + +*/ + + + +#ifndef DYNCALL_CALLVM_MIPS_N32_H +#define DYNCALL_CALLVM_MIPS_N32_H + +#include "dyncall_callvm.h" +#include "dyncall_vector.h" + +#ifdef __cplusplus +extern "C" { +#endif + + +/* + two register-files for integer (promoted to 64-bit) and float (not promoted!) + are used. + + arguments are transfered in a free slot on the corresponding register file. + the other register-file will be skipped by one. + + float arguments are either loaded from single or double - + a auto-conversion into double and then loaded as double precision + turned out to fail for several tests. + + therefore a union for storage of float or double is used instead. + a bitmask (mUseDouble) records which type is used and will be + interpreted in the call-kernel. +*/ + +typedef struct +{ + DClonglong mIntData[8]; + union { DCfloat f; DCdouble d; } mFloatData[8]; + DClonglong mUseDouble; /* bitmask: lower 8 bits specify to use float or double from union array. */ +} DCRegData_mips_n32; + + +typedef struct +{ + DCCallVM mInterface; + DCint mRegCount; + DCRegData_mips_n32 mRegData; + DCVecHead mVecHead; +} DCCallVM_mips_n32; + + +#ifdef __cplusplus +} +#endif + +#endif /* DYNCALL_CALLVM_MIPS_N32_H */ + diff --git a/vendor/dyncall/linuxsteamrt64/include/dyncall/dyncall_callvm_mips_n64.h b/vendor/dyncall/linuxsteamrt64/include/dyncall/dyncall_callvm_mips_n64.h new file mode 100644 index 000000000..248fe9614 --- /dev/null +++ b/vendor/dyncall/linuxsteamrt64/include/dyncall/dyncall_callvm_mips_n64.h @@ -0,0 +1,79 @@ +/* + + Package: dyncall + Library: dyncall + File: dyncall/dyncall_callvm_mips_n64.h + Description: mips "n64" ABI callvm C interface. + License: + + Copyright (c) 2007-2020 Daniel Adler <dadler@uni-goettingen.de>, + Tassilo Philipp <tphilipp@potion-studios.com> + + Permission to use, copy, modify, and distribute this software for any + purpose with or without fee is hereby granted, provided that the above + copyright notice and this permission notice appear in all copies. + + THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES + WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF + MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR + ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES + WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN + ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF + OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. + +*/ + + + +#ifndef DYNCALL_CALLVM_MIPS_N64_H +#define DYNCALL_CALLVM_MIPS_N64_H + +#include "dyncall_callvm.h" +#include "dyncall_vector.h" + +#ifdef __cplusplus +extern "C" { +#endif + + +/* + two register-files for integer (promoted to 64-bit) and float (not promoted!) + are used. + + arguments are transfered in a free slot on the corresponding register file. + the other register-file will be skipped by one. + + float arguments are either loaded from single or double - + a auto-conversion into double and then loaded as double precision + turned out to fail for several tests. + + therefore a union for storage of float or double is used instead. + a bitmask (mUseDouble) records which type is used and will be + interpreted in the call-kernel. +*/ + +typedef struct +{ + DClonglong mIntData[8]; +#if defined(DC__ABI_HARDFLOAT) + union { DCfloat f; DCdouble d; } mFloatData[8]; + DClonglong mUseDouble; /* bitmask: lower 8 bits specify to use float or double from union array. */ +#endif /* DC__ABI_HARDFLOAT */ +} DCRegData_mips_n64; + + +typedef struct +{ + DCCallVM mInterface; + DCint mRegCount; + DCRegData_mips_n64 mRegData; + DCVecHead mVecHead; +} DCCallVM_mips_n64; + + +#ifdef __cplusplus +} +#endif + +#endif /* DYNCALL_CALLVM_MIPS_N64_H */ + diff --git a/vendor/dyncall/linuxsteamrt64/include/dyncall/dyncall_callvm_mips_o32.h b/vendor/dyncall/linuxsteamrt64/include/dyncall/dyncall_callvm_mips_o32.h new file mode 100644 index 000000000..335cf850f --- /dev/null +++ b/vendor/dyncall/linuxsteamrt64/include/dyncall/dyncall_callvm_mips_o32.h @@ -0,0 +1,74 @@ +/* + + Package: dyncall + Library: dyncall + File: dyncall/dyncall_callvm_mips_o32.h + Description: mips "o32" ABI callvm C interface. + License: + + Copyright (c) 2007-2020 Daniel Adler <dadler@uni-goettingen.de>, + Tassilo Philipp <tphilipp@potion-studios.com> + + Permission to use, copy, modify, and distribute this software for any + purpose with or without fee is hereby granted, provided that the above + copyright notice and this permission notice appear in all copies. + + THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES + WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF + MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR + ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES + WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN + ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF + OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. + +*/ + + + +#ifndef DYNCALL_CALLVM_MIPS_O32_H +#define DYNCALL_CALLVM_MIPS_O32_H + +#include "dyncall_callvm.h" +#include "dyncall_vector.h" + + +/* Call-kernel register data: + + Details: + + The structure holds the argument data for transfering float/double arguments + via registers as well. + The call-kernel on hardfloat platforms implements loads two doubles, which + involves four 32-bit floating pointer registers. It's unused for softfloat + platforms. + + Float arguments map as following: + + float argument 0 is at u[0][0] for little, u[0][1] for big endian and + float argument 1 is at u[1][0] for little, u[1][1] for big endian of + DCRegData_mips_o32 union. + +*/ + +typedef struct +{ +#if defined(DC__ABI_HARDFLOAT) + union { + double d; + float f[2]; + } u[2]; +#endif /* DC__ABI_HARDFLOAT */ +} DCRegData_mips_o32; + + +typedef struct +{ + DCCallVM mInterface; + int mArgCount; + DCRegData_mips_o32 mRegData; + DCVecHead mVecHead; +} DCCallVM_mips_o32; + + +#endif /* DYNCALL_CALLVM_MIPS_O32_H */ + diff --git a/vendor/dyncall/linuxsteamrt64/include/dyncall/dyncall_callvm_ppc32.h b/vendor/dyncall/linuxsteamrt64/include/dyncall/dyncall_callvm_ppc32.h new file mode 100644 index 000000000..67f64329a --- /dev/null +++ b/vendor/dyncall/linuxsteamrt64/include/dyncall/dyncall_callvm_ppc32.h @@ -0,0 +1,64 @@ +/* + + Package: dyncall + Library: dyncall + File: dyncall/dyncall_callvm_ppc32.h + Description: + License: + + Copyright (c) 2007-2020 Daniel Adler <dadler@uni-goettingen.de>, + Tassilo Philipp <tphilipp@potion-studios.com> + + Permission to use, copy, modify, and distribute this software for any + purpose with or without fee is hereby granted, provided that the above + copyright notice and this permission notice appear in all copies. + + THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES + WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF + MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR + ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES + WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN + ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF + OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. + +*/ + + + +#ifndef DYNCALL_CALLVM_PPC32_H +#define DYNCALL_CALLVM_PPC32_H + +/* + + dyncall callvm for 32bit ppc architectures + + SUPPORTED CALLING CONVENTIONS + standard and ... (ellipsis) calls + + REVISION + 2007/12/11 initial + +*/ + + +#include "dyncall_callvm.h" +#include "dyncall_vector.h" + +typedef struct +{ + DCint mIntData[8]; + DCdouble mFloatData[13]; /* 13 for darwin, 8 for sysv */ +} DCRegData_ppc32; + + +typedef struct +{ + DCCallVM mInterface; + int mIntRegs; + int mFloatRegs; + DCRegData_ppc32 mRegData; + DCVecHead mVecHead; +} DCCallVM_ppc32; + +#endif /* DYNCALL_CALLVM_PPC32_H */ + diff --git a/vendor/dyncall/linuxsteamrt64/include/dyncall/dyncall_callvm_ppc64.h b/vendor/dyncall/linuxsteamrt64/include/dyncall/dyncall_callvm_ppc64.h new file mode 100644 index 000000000..192246008 --- /dev/null +++ b/vendor/dyncall/linuxsteamrt64/include/dyncall/dyncall_callvm_ppc64.h @@ -0,0 +1,64 @@ +/* + + Package: dyncall + Library: dyncall + File: dyncall/dyncall_callvm_ppc64.h + Description: + License: + + Copyright (c) 2014-2015 Masanori Mitsugi <mitsugi@linux.vnet.ibm.com> + 2020 Tassilo Philipp <tphilipp@potion-studios.com> + + Permission to use, copy, modify, and distribute this software for any + purpose with or without fee is hereby granted, provided that the above + copyright notice and this permission notice appear in all copies. + + THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES + WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF + MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR + ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES + WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN + ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF + OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. + +*/ + + +#ifndef DYNCALL_CALLVM_PPC64_H +#define DYNCALL_CALLVM_PPC64_H + +/* + + dyncall callvm for 64bit ppc architectures + + SUPPORTED CALLING CONVENTIONS + standard and ... (ellipsis) calls + + REVISION + 2014/08/07 initial + +*/ + + +#include "dyncall_callvm.h" +#include "dyncall_vector.h" + + +typedef struct +{ + DClonglong mIntData[8]; + DCdouble mFloatData[13]; +} DCRegData_ppc64; + +typedef struct +{ + DCCallVM mInterface; + int mIntRegs; + int mFloatRegs; + DCRegData_ppc64 mRegData; + DCVecHead mVecHead; +} DCCallVM_ppc64; + + +#endif /* DYNCALL_CALLVM_PPC64_H */ + diff --git a/vendor/dyncall/linuxsteamrt64/include/dyncall/dyncall_callvm_sparc.h b/vendor/dyncall/linuxsteamrt64/include/dyncall/dyncall_callvm_sparc.h new file mode 100644 index 000000000..71d61a509 --- /dev/null +++ b/vendor/dyncall/linuxsteamrt64/include/dyncall/dyncall_callvm_sparc.h @@ -0,0 +1,43 @@ +/* + + Package: dyncall + Library: dyncall + File: dyncall/dyncall_callvm_sparc.h + Description: Call VM for sparc processor architecture. + License: + + Copyright (c) 2011-2020 Daniel Adler <dadler@uni-goettingen.de> + + Permission to use, copy, modify, and distribute this software for any + purpose with or without fee is hereby granted, provided that the above + copyright notice and this permission notice appear in all copies. + + THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES + WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF + MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR + ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES + WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN + ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF + OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. + +*/ + + + +#ifndef DYNCALL_CALLVM_SPARC_H +#define DYNCALL_CALLVM_SPARC_H + +#include "dyncall_callvm.h" +#include "dyncall_vector.h" + +/* NOTE: if something changes here, update offset marks in dyncall_call_sparc.S */ + +typedef struct DCCallVM_sparc_ DCCallVM_sparc; +struct DCCallVM_sparc_ +{ + DCCallVM mInterface; /* 8 bytes (vtable,errorid) */ + DCVecHead mVecHead; /* 8 bytes (max,size) */ +}; + +#endif /* DYNCALL_CALLVM_SPARC_H */ + diff --git a/vendor/dyncall/linuxsteamrt64/include/dyncall/dyncall_callvm_sparc64.h b/vendor/dyncall/linuxsteamrt64/include/dyncall/dyncall_callvm_sparc64.h new file mode 100644 index 000000000..8b7b89070 --- /dev/null +++ b/vendor/dyncall/linuxsteamrt64/include/dyncall/dyncall_callvm_sparc64.h @@ -0,0 +1,42 @@ +/* + + Package: dyncall + Library: dyncall + File: dyncall/dyncall_callvm_sparc64.h + Description: Call VM for sparc64 (v9) ABI. + License: + + Copyright (c) 2011-2018 Daniel Adler <dadler@uni-goettingen.de> + + Permission to use, copy, modify, and distribute this software for any + purpose with or without fee is hereby granted, provided that the above + copyright notice and this permission notice appear in all copies. + + THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES + WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF + MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR + ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES + WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN + ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF + OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. + +*/ + + + +#ifndef DYNCALL_CALLVM_SPARC_V9_H +#define DYNCALL_CALLVM_SPARC_V9_H + +#include "dyncall_callvm.h" +#include "dyncall_vector.h" + +typedef struct +{ + DCCallVM mInterface; /* 0: +12:8 = 16*/ + DCVecHead mVecHead; /* 16 152: mTotalSize +8 */ + /* 24 160: mSize +8 */ + /* 32 168: mData */ +} DCCallVM_v9; + +#endif /* DYNCALL_CALLVM_SPARC_V9_H */ + diff --git a/vendor/dyncall/linuxsteamrt64/include/dyncall/dyncall_callvm_x64.h b/vendor/dyncall/linuxsteamrt64/include/dyncall/dyncall_callvm_x64.h new file mode 100644 index 000000000..6a2c9cd90 --- /dev/null +++ b/vendor/dyncall/linuxsteamrt64/include/dyncall/dyncall_callvm_x64.h @@ -0,0 +1,108 @@ +/* + + Package: dyncall + Library: dyncall + File: dyncall/dyncall_callvm_x64.h + Description: + License: + + Copyright (c) 2007-2018 Daniel Adler <dadler@uni-goettingen.de>, + Tassilo Philipp <tphilipp@potion-studios.com> + + Permission to use, copy, modify, and distribute this software for any + purpose with or without fee is hereby granted, provided that the above + copyright notice and this permission notice appear in all copies. + + THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES + WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF + MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR + ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES + WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN + ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF + OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. + +*/ + + + +/* + + dyncall callvm for x64 architecture + + SUPPORTED CALLING CONVENTIONS + MS Windows x64 calling convention, AMD64 SystemV ABI + + REVISION + 2007/12/11 initial + +*/ + + +#ifndef DYNCALL_CALLVM_X64_H +#define DYNCALL_CALLVM_X64_H + +#include "dyncall_macros.h" +#include "dyncall_callvm.h" +#include "dyncall_vector.h" + + +#if defined(DC_WINDOWS) + +typedef long long int64; /* llp64 */ + +#define numIntRegs 4 +#define numFloatRegs 4 +#define DCRegCount_x64 DCRegCount_x64_u +#define DCRegData_x64 DCRegData_x64_u + +#elif defined(DC_UNIX) + +typedef long int64; /* lp64 */ + +#define numIntRegs 6 +#define numFloatRegs 8 +#define DCRegCount_x64 DCRegCount_x64_s +#define DCRegData_x64 DCRegData_x64_s + +#else + +#error Unsupported OS. + +#endif + +typedef union +{ + int i; + int f; +} DCRegCount_x64_u; + +typedef struct +{ + int i; + int f; +} DCRegCount_x64_s; + +typedef union +{ + int64 i[numIntRegs ]; + double f[numFloatRegs]; +} DCRegData_x64_u; + +typedef struct +{ + int64 i[numIntRegs ]; + double f[numFloatRegs]; +} DCRegData_x64_s; + + +typedef struct +{ + DCCallVM mInterface; /* This CallVM interface. */ + DCpointer mpCallFunc; /* Function to call. */ + DCRegCount_x64 mRegCount; /* Number of int/sse registers used for parameter passing. */ + DCRegData_x64 mRegData; /* Parameters to be passed via registers. */ + DCVecHead mVecHead; /* Parameters to be pushed onto stack. */ +} DCCallVM_x64; + +#endif /* DYNCALL_CALLVM_X64_H */ + diff --git a/vendor/dyncall/linuxsteamrt64/include/dyncall/dyncall_callvm_x86.h b/vendor/dyncall/linuxsteamrt64/include/dyncall/dyncall_callvm_x86.h new file mode 100644 index 000000000..422dd01eb --- /dev/null +++ b/vendor/dyncall/linuxsteamrt64/include/dyncall/dyncall_callvm_x86.h @@ -0,0 +1,59 @@ +/* + + Package: dyncall + Library: dyncall + File: dyncall/dyncall_callvm_x86.h + Description: Call virtual machine for x86 architecture header + License: + + Copyright (c) 2007-2018 Daniel Adler <dadler@uni-goettingen.de>, + Tassilo Philipp <tphilipp@potion-studios.com> + + Permission to use, copy, modify, and distribute this software for any + purpose with or without fee is hereby granted, provided that the above + copyright notice and this permission notice appear in all copies. + + THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES + WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF + MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR + ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES + WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN + ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF + OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. + +*/ + + + +#ifndef DYNCALL_CALLVM_X86_H +#define DYNCALL_CALLVM_X86_H + +/* + + dyncall callvm for 32bit X86 architectures + Copyright 2007 Daniel Adler. + + SUPPORTED CALLING CONVENTIONS + cdecl,stdcall,fastcall,thiscall,msthiscall + + REVISION + 2007/12/10 initial + +*/ + + +#include "dyncall_callvm.h" +#include "dyncall_vector.h" + +typedef struct DCCallVM_x86_ DCCallVM_x86; + +struct DCCallVM_x86_ +{ + DCCallVM mInterface; + DCpointer mpCallFunc; + int mIntRegs; /* used by fastcall implementation */ + DCVecHead mVecHead; +}; + +#endif /* DYNCALL_CALLVM_X86_H */ + diff --git a/vendor/dyncall/linuxsteamrt64/include/dyncall/dyncall_config.h b/vendor/dyncall/linuxsteamrt64/include/dyncall/dyncall_config.h new file mode 100644 index 000000000..db98c2ad8 --- /dev/null +++ b/vendor/dyncall/linuxsteamrt64/include/dyncall/dyncall_config.h @@ -0,0 +1,47 @@ +/* + + Package: dyncall + Library: dyncall + File: dyncall/dyncall_config.h + Description: Macro configuration file for non-standard C types + License: + + Copyright (c) 2007-2018 Daniel Adler <dadler@uni-goettingen.de>, + Tassilo Philipp <tphilipp@potion-studios.com> + + Permission to use, copy, modify, and distribute this software for any + purpose with or without fee is hereby granted, provided that the above + copyright notice and this permission notice appear in all copies. + + THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES + WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF + MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR + ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES + WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN + ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF + OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. + +*/ + + + +/* + + dyncall type configuration + + REVISION + 2007/12/11 initial + +*/ + +#ifndef DYNCALL_CONFIG_H +#define DYNCALL_CONFIG_H + +#include "dyncall_macros.h" + +#define DC_BOOL int +#define DC_LONG_LONG long long +#define DC_POINTER void* + +#endif /* DYNCALL_CONFIG_H */ + diff --git a/vendor/dyncall/linuxsteamrt64/include/dyncall/dyncall_macros.h b/vendor/dyncall/linuxsteamrt64/include/dyncall/dyncall_macros.h new file mode 100644 index 000000000..5ae6cc653 --- /dev/null +++ b/vendor/dyncall/linuxsteamrt64/include/dyncall/dyncall_macros.h @@ -0,0 +1,301 @@ +/* + + Package: dyncall + Library: dyncall + File: dyncall/dyncall_macros.h + Description: Platform detection macros + License: + + Copyright (c) 2007-2018 Daniel Adler <dadler@uni-goettingen.de>, + Tassilo Philipp <tphilipp@potion-studios.com> + + Permission to use, copy, modify, and distribute this software for any + purpose with or without fee is hereby granted, provided that the above + copyright notice and this permission notice appear in all copies. + + THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES + WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF + MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR + ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES + WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN + ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF + OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. + +*/ + + + +/* + + dyncall macros + + Platform detection, specific defines and configuration. + The purpose of this file is to provide coherent platform and compiler + specific defines. So instead of defines like WIN32, _OpenBSD_ or + __GNUC__, one should use DC__OS_Win32, DC__OS_OpenBSD or DC__C_GNU, + respectively. + + REVISION + 2007/12/11 initial + +*/ + + +#ifndef DYNCALL_MACROS_H +#define DYNCALL_MACROS_H + + +/* Platform specific defines. */ + +/* MS Windows XP x64/Vista64 or later. */ +#if defined(WIN64) || defined(_WIN64) || defined(__WIN64__) +#define DC__OS_Win64 + +/* MS Windows NT/95/98/ME/2000/XP/Vista32. */ +#elif defined(WIN32) || defined(_WIN32) || defined(__WIN32__) || defined(__NT__) || defined(__WINDOWS__) || defined(_WINDOWS) +#define DC__OS_Win32 + +/* All the OS' based on Darwin OS (MacOS X, OpenDarwin). Note that '__APPLE__' may be defined for classic MacOS, too. */ +/* __MACOSX__ is not defined in gcc assembler mode (switch: -S) */ +/* @@@ TODO: Check for Classic OS */ + +#elif defined(__APPLE__) || defined(__Darwin__) +# define DC__OS_Darwin +# if defined(__ENVIRONMENT_IPHONE_OS_VERSION_MIN_REQUIRED__) +# define DC__OS_IPhone +# else /* defined(__ENVIRONMENT_MAC_OS_X_VERSION_MIN_REQUIRED__) */ +# define DC__OS_MacOSX +# endif + +/* The most popular open source Unix-like OS - Linux. */ +#elif defined(__linux__) || defined(__linux) || defined(__gnu_linux__) +#define DC__OS_Linux + +/* The most powerful open source Unix-like OS - FreeBSD. */ +#elif defined(__FreeBSD__) || defined(__FreeBSD_kernel__) /* latter is (also) used by systems using FreeBSD kernel, e.g. Debian/kFreeBSD, which could be detected specifically by also checking for __GLIBC__ */ +#define DC__OS_FreeBSD + +/* The most secure open source Unix-like OS - OpenBSD. */ +#elif defined(__OpenBSD__) +#define DC__OS_OpenBSD + +/* The most portable open source Unix-like OS - NetBSD. */ +#elif defined(__NetBSD__) +#define DC__OS_NetBSD + +/* The FreeBSD fork having heavy clusterization in mind - DragonFlyBSD. */ +#elif defined(__DragonFly__) +#define DC__OS_DragonFlyBSD + +/* Sun's Unix-like OS - SunOS / Solaris. */ +#elif defined(__sun__) || defined(__sun) || defined(sun) +#define DC__OS_SunOS + +/* The "Linux-like environment for Windows" - Cygwin. */ +#elif defined(__CYGWIN__) +#define DC__OS_Cygwin + +/* The "Minimalist GNU for Windows" - MinGW. */ +#elif defined(__MINGW__)/*@@@*/ +#define DC__OS_MinGW + +/* The Nintendo DS (homebrew) using devkitpro. */ +#elif defined(__nds__) +#define DC__OS_NDS + +/* The PlayStation Portable (homebrew) SDK. */ +#elif defined(__psp__) || defined(PSP) +#define DC__OS_PSP + +/* Haiku (BeOS alike). */ +#elif defined(__HAIKU__) +#define DC__OS_BeOS + +/* The Unix successor - Plan9 from Bell Labs */ +#elif defined(Plan9) || defined(__Plan9__) +#define DC__OS_Plan9 + +/* Digital's Unix-like OS - VMS */ +#elif defined(__vms) +#define DC__OS_VMS + +#elif defined(__minix) +#define DC__OS_Minix + +#else + +/* Unable to determine OS, which is probably ok (e.g. baremetal stuff, etc.). */ +#define DC__OS_UNKNOWN +#endif + + + +/* Compiler specific defines. Do not change the order, because */ +/* some of the compilers define flags for compatible ones, too. */ + +/* Intel's C/C++ compiler. */ +#if defined(__INTEL_COMPILER) +#define DC__C_Intel + +/* MS C/C++ compiler. */ +#elif defined(_MSC_VER) +#define DC__C_MSVC + +/* LLVM clang. */ +#elif defined(__clang__) || defined(__llvm__) +#define DC__C_CLANG + +/* The GNU Compiler Collection - GCC. */ +#elif defined(__GNUC__) +#define DC__C_GNU + +/* Watcom compiler. */ +#elif defined(__WATCOMC__) +#define DC__C_WATCOM + +/* Portable C Compiler. */ +#elif defined(__PCC__) +#define DC__C_PCC + +/* Sun Pro C. */ +#elif defined(__SUNPRO_C) +#define DC__C_SUNPRO + +/* Undetected C Compiler. */ +#else +#define DC__C_UNKNOWN +#endif + + + +/* Architecture. */ + +/* Check architecture. */ +#if defined(_M_X64_) || defined(_M_AMD64) || defined(__amd64__) || defined(__amd64) || defined(__x86_64__) || defined(__x86_64) +# define DC__Arch_AMD64 +#elif defined(_M_IX86) || defined(__i386__) || defined(__i486__) || defined(__i586__) || defined(__i686__) || defined(__386__) || defined(__i386) +# define DC__Arch_Intel_x86 +#elif defined(_M_IA64) || defined(__ia64__) +# define DC__Arch_Itanium +#elif defined(_M_PPC) || defined(__powerpc__) || defined(__powerpc) || defined(__POWERPC__) || defined(__ppc__) || defined(__power__) +# if defined(__ppc64__) || defined(_ARCH_PPC64) || defined(__power64__) || defined(__powerpc64__) +# define DC__Arch_PPC64 +# else +# define DC__Arch_PPC32 +# endif +#elif defined(__mips64__) || defined(__mips64) +# define DC__Arch_MIPS64 +#elif defined(_M_MRX000) || defined(__mips__) || defined(__mips) || defined(_mips) +# define DC__Arch_MIPS +#elif defined(__arm__) +# define DC__Arch_ARM +#elif defined(__aarch64__) || defined(__arm64) || defined(__arm64__) +# define DC__Arch_ARM64 +#elif defined(__sh__) +# define DC__Arch_SuperH +#elif defined(__sparc) || defined(__sparc__) +# if defined(__sparcv9) || defined(__sparc_v9__) || defined(__sparc64__) || defined(__arch64__) +# define DC__Arch_Sparc64 +# else +# define DC__Arch_Sparc +# endif +#endif + + + +/* Rough OS classification. */ + +#if defined(DC__OS_Win32) || defined(DC__OS_Win64) +# define DC_WINDOWS +#elif defined(DC__OS_Plan9) +# define DC_PLAN9 +#elif defined(DC__OS_NDS) || defined(DC__OS_PSP) +# define DC_OTHER +#else +# define DC_UNIX +#endif + + + +/* Misc machine-dependent modes, ABIs, etc.. */ + +#if defined(__arm__) && !defined(__thumb__) +# define DC__Arch_ARM_ARM +#elif defined(__arm__) && defined(__thumb__) +# define DC__Arch_ARM_THUMB +#endif + +#if defined(DC__Arch_ARM_ARM) || defined(DC__Arch_ARM_THUMB) +# if defined(__ARM_EABI__) || defined(DC__OS_NDS) +# if defined (__ARM_PCS_VFP) && (__ARM_PCS_VFP == 1) +# define DC__ABI_ARM_HF +# else +# define DC__ABI_ARM_EABI +# endif +# elif defined(__APCS_32__) +# define DC__ABI_ARM_OABI +# endif +#endif /* ARM */ + +#if defined(DC__Arch_MIPS) || defined(DC__Arch_MIPS64) +# if defined(_ABIO32) || defined(__mips_o32) || defined(_MIPS_ARCH_MIPS1) || defined(_MIPS_ARCH_MIPS2) +# define DC__ABI_MIPS_O32 +# elif defined(_ABI64) || defined(__mips_n64) +# define DC__ABI_MIPS_N64 +# elif defined(_ABIN32) +# define DC__ABI_MIPS_N32 +# else +# define DC__ABI_MIPS_EABI +# endif +/* Set extra flag to know if FP hardware ABI, default to yes, if unsure */ +# if (defined(__mips_hard_float) && (__mips_hard_float == 1)) || !defined(__mips_soft_float) || (__mips_soft_float != 1) +# define DC__ABI_HARDFLOAT /* @@@ make this general for all archs? */ +# else +# define DC__ABI_SOFTFLOAT +# endif +#endif /* MIPS */ + +#if defined(DC__Arch_PPC64) +# if defined(_CALL_ELF) +# define DC__ABI_PPC64_ELF_V _CALL_ELF +# else +# define DC__ABI_PPC64_ELF_V 0 /* 0 means not explicitly set, otherwise this is 1 (big endian) and 2 (little endian) */ +# endif +#endif /* PPC64 */ + + +/* Endian detection. */ +#if defined(DC__Arch_Intel_x86) || defined(DC__Arch_AMD64) /* always little */ +# define DC__Endian_LITTLE +#elif defined(DC__Arch_Sparc) /* always purely big until v9 */ +# define DC__Endian_BIG +#else /* all others are bi-endian */ +/* @@@check flags used on following bi-endianness archs: +DC__Arch_Itanium +DC__Arch_PPC32 +DC__Arch_PPC64 +DC__Arch_SuperH +*/ +# if (defined(DC__Arch_PPC64) && (DC__ABI_PPC64_ELF_V == 1)) || defined(_BIG_ENDIAN) || defined(__BIG_ENDIAN__) || defined(MIPSEB) || defined(_MIPSEB) || defined(__MIPSEB) || defined(__MIPSEB__) || defined(__ARMEB__) || defined(__AARCH64EB__) +# define DC__Endian_BIG +# elif (defined(DC__Arch_PPC64) && (DC__ABI_PPC64_ELF_V == 2)) || defined(_LITTLE_ENDIAN) || defined(__LITTLE_ENDIAN__) || defined(MIPSEL) || defined(_MIPSEL) || defined(__MIPSEL) || defined(__MIPSEL__) || defined(__ARMEL__) || defined(__AARCH64EL__) +# define DC__Endian_LITTLE +# elif defined(DC__Arch_Sparc64) && !defined(__BYTE_ORDER__) /* Sparc64 default is big-endian, except if explicitly defined */ +# define DC__Endian_BIG +# elif defined(__BYTE_ORDER__) /* explicitly set */ +# if defined(__ORDER_BIG_ENDIAN__) && (__BYTE_ORDER__ == __ORDER_BIG_ENDIAN__) +# define DC__Endian_BIG +# elif defined(__ORDER_LITTLE_ENDIAN__) && (__BYTE_ORDER__ == __ORDER_LITTLE_ENDIAN__) +# define DC__Endian_LITTLE +# endif +# endif /* no else, leave unset if not sure */ +#endif + + +/* Internal macro/tag. */ +#if !defined(DC_API) +# define DC_API +#endif + +#endif /* DYNCALL_MACROS_H */ + diff --git a/vendor/dyncall/linuxsteamrt64/include/dyncall/dyncall_signature.h b/vendor/dyncall/linuxsteamrt64/include/dyncall/dyncall_signature.h new file mode 100644 index 000000000..edacc15f4 --- /dev/null +++ b/vendor/dyncall/linuxsteamrt64/include/dyncall/dyncall_signature.h @@ -0,0 +1,79 @@ +/* + + Package: dyncall + Library: dyncall + File: dyncall/dyncall_signature.h + Description: Type and calling-convention signature character defines + License: + + Copyright (c) 2007-2020 Daniel Adler <dadler@uni-goettingen.de>, + Tassilo Philipp <tphilipp@potion-studios.com> + + Permission to use, copy, modify, and distribute this software for any + purpose with or without fee is hereby granted, provided that the above + copyright notice and this permission notice appear in all copies. + + THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES + WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF + MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR + ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES + WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN + ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF + OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. + +*/ + + + +/* + + dyncall signature characters + + REVISION + 2007/12/11 initial + +*/ + + +#ifndef DYNCALL_SIGNATURE_H +#define DYNCALL_SIGNATURE_H + +typedef char DCsigchar; + +#define DC_SIGCHAR_VOID 'v' +#define DC_SIGCHAR_BOOL 'B' +#define DC_SIGCHAR_CHAR 'c' +#define DC_SIGCHAR_UCHAR 'C' +#define DC_SIGCHAR_SHORT 's' +#define DC_SIGCHAR_USHORT 'S' +#define DC_SIGCHAR_INT 'i' +#define DC_SIGCHAR_UINT 'I' +#define DC_SIGCHAR_LONG 'j' +#define DC_SIGCHAR_ULONG 'J' +#define DC_SIGCHAR_LONGLONG 'l' +#define DC_SIGCHAR_ULONGLONG 'L' +#define DC_SIGCHAR_FLOAT 'f' +#define DC_SIGCHAR_DOUBLE 'd' +#define DC_SIGCHAR_POINTER 'p' +#define DC_SIGCHAR_STRING 'Z' +#define DC_SIGCHAR_STRUCT 'T' +#define DC_SIGCHAR_ENDARG ')' /* also works for end struct */ + +/* calling convention / mode signatures */ + +#define DC_SIGCHAR_CC_PREFIX '_' +#define DC_SIGCHAR_CC_DEFAULT ':' +#define DC_SIGCHAR_CC_ELLIPSIS 'e' +#define DC_SIGCHAR_CC_ELLIPSIS_VARARGS '.' +#define DC_SIGCHAR_CC_CDECL 'c' +#define DC_SIGCHAR_CC_STDCALL 's' +#define DC_SIGCHAR_CC_FASTCALL_MS 'F' +#define DC_SIGCHAR_CC_FASTCALL_GNU 'f' +#define DC_SIGCHAR_CC_THISCALL_MS '+' +#define DC_SIGCHAR_CC_THISCALL_GNU '#' /* GNU thiscalls are cdecl, but keep specific sig char for clarity */ +#define DC_SIGCHAR_CC_ARM_ARM 'A' +#define DC_SIGCHAR_CC_ARM_THUMB 'a' +#define DC_SIGCHAR_CC_SYSCALL '$' + +#endif /* DYNCALL_SIGNATURE_H */ + diff --git a/vendor/dyncall/linuxsteamrt64/include/dyncall/dyncall_struct.h b/vendor/dyncall/linuxsteamrt64/include/dyncall/dyncall_struct.h new file mode 100644 index 000000000..7710e8bfd --- /dev/null +++ b/vendor/dyncall/linuxsteamrt64/include/dyncall/dyncall_struct.h @@ -0,0 +1,70 @@ +/* + + Package: dyncall + Library: dyncall + File: dyncall/dyncall_struct.h + Description: C interface to compute struct size + License: + + Copyright (c) 2010-2015 Olivier Chafik <olivier.chafik@centraliens.net> + + Permission to use, copy, modify, and distribute this software for any + purpose with or without fee is hereby granted, provided that the above + copyright notice and this permission notice appear in all copies. + + THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES + WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF + MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR + ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES + WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN + ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF + OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. + +*/ + + + +/* + + dyncall struct metadata structures + + REVISION + 2007/12/11 initial + +*/ + +#ifndef DYNCALL_STRUCT_H +#define DYNCALL_STRUCT_H + +#include "dyncall.h" + +#ifdef __cplusplus +extern "C" { +#endif + +typedef struct DCfield_ { + DCsize offset, size, alignment, arrayLength; + DCint type; + DCstruct* pSubStruct; +} DCfield; + +struct DCstruct_ { + DCfield *pFields; + DCsize size, alignment, fieldCount; + + /* struct building uses a state machine. */ + DCint nextField; /* == -1 if struct is closed */ + DCstruct *pCurrentStruct, *pLastStruct; /* == this, unless we're in a sub struct */ +}; + + +/* Helper. */ +void dcArgStructUnroll(DCCallVM* vm, DCstruct* s, DCpointer value); + + +#ifdef __cplusplus +} +#endif + +#endif /* DYNCALL_H */ + diff --git a/vendor/dyncall/linuxsteamrt64/include/dyncall/dyncall_types.h b/vendor/dyncall/linuxsteamrt64/include/dyncall/dyncall_types.h new file mode 100644 index 000000000..ab46a7c42 --- /dev/null +++ b/vendor/dyncall/linuxsteamrt64/include/dyncall/dyncall_types.h @@ -0,0 +1,74 @@ +/* + + Package: dyncall + Library: dyncall + File: dyncall/dyncall_types.h + Description: Typedefs + License: + + Copyright (c) 2007-2018 Daniel Adler <dadler@uni-goettingen.de>, + Tassilo Philipp <tphilipp@potion-studios.com> + + Permission to use, copy, modify, and distribute this software for any + purpose with or without fee is hereby granted, provided that the above + copyright notice and this permission notice appear in all copies. + + THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES + WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF + MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR + ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES + WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN + ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF + OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. + +*/ + + + +/* + + dyncall argument- and return-types + + REVISION + 2007/12/11 initial + +*/ + +#ifndef DYNCALL_TYPES_H +#define DYNCALL_TYPES_H + +#include <stddef.h> + +#include "dyncall_config.h" + +#ifdef __cplusplus +extern "C" { +#endif + +typedef void DCvoid; +typedef DC_BOOL DCbool; +typedef char DCchar; +typedef unsigned char DCuchar; +typedef short DCshort; +typedef unsigned short DCushort; +typedef int DCint; +typedef unsigned int DCuint; +typedef long DClong; +typedef unsigned long DCulong; +typedef DC_LONG_LONG DClonglong; +typedef unsigned DC_LONG_LONG DCulonglong; +typedef float DCfloat; +typedef double DCdouble; +typedef DC_POINTER DCpointer; +typedef const char* DCstring; +typedef size_t DCsize; + +#define DC_TRUE 1 +#define DC_FALSE 0 + +#ifdef __cplusplus +} +#endif + +#endif /* DYNCALL_TYPES_H */ + diff --git a/vendor/dyncall/linuxsteamrt64/include/dyncall/dyncall_utils.h b/vendor/dyncall/linuxsteamrt64/include/dyncall/dyncall_utils.h new file mode 100644 index 000000000..eb568a7d6 --- /dev/null +++ b/vendor/dyncall/linuxsteamrt64/include/dyncall/dyncall_utils.h @@ -0,0 +1,39 @@ +/* + + Package: dyncall + Library: dyncall + File: dyncall/dyncall_utils.h + Description: Type and calling-convention signature character defines + License: + + Copyright (c) 2007-2018 Daniel Adler <dadler@uni-goettingen.de>, + Tassilo Philipp <tphilipp@potion-studios.com> + + Permission to use, copy, modify, and distribute this software for any + purpose with or without fee is hereby granted, provided that the above + copyright notice and this permission notice appear in all copies. + + THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES + WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF + MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR + ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES + WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN + ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF + OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. + +*/ + + + + +#ifndef DYNCALL_UTILS_H +#define DYNCALL_UTILS_H + +/* C portable macros. */ + +#ifndef DC_MAX +#define DC_MAX(a,b) ((a)>=(b))?(a):(b) +#endif + +#endif /* DYNCALL_UTILS_H */ + diff --git a/vendor/dyncall/linuxsteamrt64/include/dyncall/dyncall_value.h b/vendor/dyncall/linuxsteamrt64/include/dyncall/dyncall_value.h new file mode 100644 index 000000000..6a4cd8631 --- /dev/null +++ b/vendor/dyncall/linuxsteamrt64/include/dyncall/dyncall_value.h @@ -0,0 +1,98 @@ +/* + + Package: dyncall + Library: dyncall + File: dyncall/dyncall_value.h + Description: Value variant type + License: + + Copyright (c) 2007-2018 Daniel Adler <dadler@uni-goettingen.de>, + Tassilo Philipp <tphilipp@potion-studios.com> + + Permission to use, copy, modify, and distribute this software for any + purpose with or without fee is hereby granted, provided that the above + copyright notice and this permission notice appear in all copies. + + THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES + WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF + MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR + ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES + WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN + ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF + OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. + +*/ + + +/* + + dyncall value variant + + a value variant union-type that carries all supported dyncall types. + + REVISION + 2007/12/11 initial + +*/ + +#ifndef DYNCALL_VALUE_H +#define DYNCALL_VALUE_H + +#include "dyncall_types.h" + +#ifdef __cplusplus +extern "C" { +#endif + +typedef union DCValue_ DCValue; + +union DCValue_ +{ +/* dyncallback assembly pulls value directly from DCValue structs, without */ +/* knowledge about types used, so lay it out as needed at compile time, here */ +#if defined(DC__Endian_BIG) && (defined(DC__Arch_PPC32) || defined(DC__Arch_MIPS) || defined(DC__Arch_Sparc)) + DCbool B; + struct { DCchar c_pad[3]; DCchar c; }; + struct { DCuchar C_pad[3]; DCuchar C; }; + struct { DCshort s_pad; DCshort s; }; + struct { DCshort S_pad; DCshort S; }; + DCint i; + DCuint I; +#elif defined(DC__Endian_BIG) && (defined(DC__Arch_PPC64) || defined(DC__Arch_MIPS64) || defined(DC__Arch_Sparc64)) + struct { DCbool B_pad; DCbool B; }; + struct { DCchar c_pad[7]; DCchar c; }; + struct { DCuchar C_pad[7]; DCuchar C; }; + struct { DCshort s_pad[3]; DCshort s; }; + struct { DCshort S_pad[3]; DCshort S; }; + struct { DCint i_pad; DCint i; }; + struct { DCint I_pad; DCuint I; }; +#else + DCbool B; + DCchar c; + DCuchar C; + DCshort s; + DCushort S; + DCint i; + DCuint I; +#endif + DClong j; + DCulong J; + DClonglong l; + DCulonglong L; +/* floats on mips are right justified in fp-registers on big endian targets, as they aren't promoted */ +#if defined(DC__Endian_BIG) && (defined(DC__Arch_MIPS) || defined(DC__Arch_MIPS64)) + struct { DCfloat f_pad; DCfloat f; }; +#else + DCfloat f; +#endif + DCdouble d; + DCpointer p; + DCstring Z; +}; + +#ifdef __cplusplus +} +#endif + +#endif /* DYNCALL_VALUE_H */ + diff --git a/vendor/dyncall/linuxsteamrt64/include/dyncall/dyncall_vector.h b/vendor/dyncall/linuxsteamrt64/include/dyncall/dyncall_vector.h new file mode 100644 index 000000000..a857123bf --- /dev/null +++ b/vendor/dyncall/linuxsteamrt64/include/dyncall/dyncall_vector.h @@ -0,0 +1,58 @@ +/* + + Package: dyncall + Library: dyncall + File: dyncall/dyncall_vector.h + Description: Simple dynamic vector container type header + License: + + Copyright (c) 2007-2018 Daniel Adler <dadler@uni-goettingen.de>, + Tassilo Philipp <tphilipp@potion-studios.com> + + Permission to use, copy, modify, and distribute this software for any + purpose with or without fee is hereby granted, provided that the above + copyright notice and this permission notice appear in all copies. + + THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES + WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF + MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR + ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES + WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN + ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF + OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. + +*/ + + + +#ifndef DC_VECTOR_H +#define DC_VECTOR_H + +#include "dyncall_types.h" + +typedef struct +{ + DCsize mTotal; + DCsize mSize; +} DCVecHead; + +#define DC_SIZEOF_DCVector(size) (sizeof(DCVecHead)+size) + +#define dcVecInit(p,size) (p)->mTotal=size;(p)->mSize=0 +#define dcVecReset(p) (p)->mSize=0 +#define dcVecResize(p,size) (p)->mSize=(size) +#define dcVecSkip(p,size) (p)->mSize+=(size) +#define dcVecData(p) ( (unsigned char*) (((DCVecHead*)(p))+1) ) +#define dcVecAt(p,index) ( dcVecData(p)+index ) +#define dcVecSize(p) ( (p)->mSize ) +#define dcVecAlign(p,align) (p)->mSize=( (p)->mSize + align-1 ) & -align + +/* +#include <string.h> + #define dcVecAppend(p,s,n) memcpy( dcVecData(p)+p->mSize, s, n );p->mSize+=n +*/ + +void dcVecAppend(DCVecHead* pHead, const void* source, size_t length); + +#endif /* DC_VECTOR_H */ + diff --git a/vendor/dyncall/linuxsteamrt64/lib/libdyncall_s.a b/vendor/dyncall/linuxsteamrt64/lib/libdyncall_s.a new file mode 100644 index 0000000000000000000000000000000000000000..ba3ab0e3f5dfcb91202a2a3fc458a1ebba8aeaa4 GIT binary patch literal 39450 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 UZIm^1zx~Y||7zPaoooO91>q*f3IG5A literal 0 HcmV?d00001 diff --git a/vendor/dyncall/win64/include/dyncall/dyncall.h b/vendor/dyncall/win64/include/dyncall/dyncall.h new file mode 100644 index 000000000..d9bec511a --- /dev/null +++ b/vendor/dyncall/win64/include/dyncall/dyncall.h @@ -0,0 +1,151 @@ +/* + + Package: dyncall + Library: dyncall + File: dyncall/dyncall.h + Description: public header for library dyncall + License: + + Copyright (c) 2007-2020 Daniel Adler <dadler@uni-goettingen.de>, + Tassilo Philipp <tphilipp@potion-studios.com> + + Permission to use, copy, modify, and distribute this software for any + purpose with or without fee is hereby granted, provided that the above + copyright notice and this permission notice appear in all copies. + + THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES + WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF + MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR + ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES + WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN + ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF + OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. + +*/ + + +/* + + dyncall C API + + REVISION + 2015/07/08 added SYS_PPC64 system call + 2015/01/16 added SYS_PPC32 system call + 2007/12/11 initial + +*/ + +#ifndef DYNCALL_H +#define DYNCALL_H + +#include "dyncall_types.h" +#include "dyncall_signature.h" + +#ifdef __cplusplus +extern "C" { +#endif + +typedef struct DCCallVM_ DCCallVM; +typedef struct DCstruct_ DCstruct; + +/* Supported Calling Convention Modes */ + +#define DC_CALL_C_DEFAULT 0 +#define DC_CALL_C_ELLIPSIS 100 +#define DC_CALL_C_ELLIPSIS_VARARGS 101 +#define DC_CALL_C_X86_CDECL 1 +#define DC_CALL_C_X86_WIN32_STD 2 +#define DC_CALL_C_X86_WIN32_FAST_MS 3 +#define DC_CALL_C_X86_WIN32_FAST_GNU 4 +#define DC_CALL_C_X86_WIN32_THIS_MS 5 +#define DC_CALL_C_X86_WIN32_THIS_GNU DC_CALL_C_X86_CDECL /* alias - identical to cdecl (w/ this-ptr as 1st arg) */ +#define DC_CALL_C_X64_WIN64 7 +#define DC_CALL_C_X64_SYSV 8 +#define DC_CALL_C_PPC32_DARWIN 9 +#define DC_CALL_C_PPC32_OSX DC_CALL_C_PPC32_DARWIN /* alias */ +#define DC_CALL_C_ARM_ARM_EABI 10 +#define DC_CALL_C_ARM_THUMB_EABI 11 +#define DC_CALL_C_ARM_ARMHF 30 +#define DC_CALL_C_MIPS32_EABI 12 +#define DC_CALL_C_MIPS32_PSPSDK DC_CALL_C_MIPS32_EABI /* alias - deprecated. */ +#define DC_CALL_C_PPC32_SYSV 13 +#define DC_CALL_C_PPC32_LINUX DC_CALL_C_PPC32_SYSV /* alias */ +#define DC_CALL_C_ARM_ARM 14 +#define DC_CALL_C_ARM_THUMB 15 +#define DC_CALL_C_MIPS32_O32 16 +#define DC_CALL_C_MIPS64_N32 17 +#define DC_CALL_C_MIPS64_N64 18 +#define DC_CALL_C_X86_PLAN9 19 +#define DC_CALL_C_SPARC32 20 +#define DC_CALL_C_SPARC64 21 +#define DC_CALL_C_ARM64 22 +#define DC_CALL_C_PPC64 23 +#define DC_CALL_C_PPC64_LINUX DC_CALL_C_PPC64 /* alias */ +#define DC_CALL_SYS_DEFAULT 200 +#define DC_CALL_SYS_X86_INT80H_LINUX 201 +#define DC_CALL_SYS_X86_INT80H_BSD 202 +#define DC_CALL_SYS_X64_SYSCALL_SYSV 204 +#define DC_CALL_SYS_PPC32 210 +#define DC_CALL_SYS_PPC64 211 + +/* Error codes. */ + +#define DC_ERROR_NONE 0 +#define DC_ERROR_UNSUPPORTED_MODE -1 + +DC_API DCCallVM* dcNewCallVM (DCsize size); +DC_API void dcFree (DCCallVM* vm); +DC_API void dcReset (DCCallVM* vm); + +DC_API void dcMode (DCCallVM* vm, DCint mode); + +DC_API void dcArgBool (DCCallVM* vm, DCbool value); +DC_API void dcArgChar (DCCallVM* vm, DCchar value); +DC_API void dcArgShort (DCCallVM* vm, DCshort value); +DC_API void dcArgInt (DCCallVM* vm, DCint value); +DC_API void dcArgLong (DCCallVM* vm, DClong value); +DC_API void dcArgLongLong (DCCallVM* vm, DClonglong value); +DC_API void dcArgFloat (DCCallVM* vm, DCfloat value); +DC_API void dcArgDouble (DCCallVM* vm, DCdouble value); +DC_API void dcArgPointer (DCCallVM* vm, DCpointer value); +DC_API void dcArgStruct (DCCallVM* vm, DCstruct* s, DCpointer value); + +DC_API void dcCallVoid (DCCallVM* vm, DCpointer funcptr); +DC_API DCbool dcCallBool (DCCallVM* vm, DCpointer funcptr); +DC_API DCchar dcCallChar (DCCallVM* vm, DCpointer funcptr); +DC_API DCshort dcCallShort (DCCallVM* vm, DCpointer funcptr); +DC_API DCint dcCallInt (DCCallVM* vm, DCpointer funcptr); +DC_API DClong dcCallLong (DCCallVM* vm, DCpointer funcptr); +DC_API DClonglong dcCallLongLong (DCCallVM* vm, DCpointer funcptr); +DC_API DCfloat dcCallFloat (DCCallVM* vm, DCpointer funcptr); +DC_API DCdouble dcCallDouble (DCCallVM* vm, DCpointer funcptr); +DC_API DCpointer dcCallPointer (DCCallVM* vm, DCpointer funcptr); +DC_API void dcCallStruct (DCCallVM* vm, DCpointer funcptr, DCstruct* s, DCpointer returnValue); + +DC_API DCint dcGetError (DCCallVM* vm); + +#define DEFAULT_ALIGNMENT 0 +DC_API DCstruct* dcNewStruct (DCsize fieldCount, DCint alignment); +DC_API void dcStructField (DCstruct* s, DCint type, DCint alignment, DCsize arrayLength); +DC_API void dcSubStruct (DCstruct* s, DCsize fieldCount, DCint alignment, DCsize arrayLength); +/* Each dcNewStruct or dcSubStruct call must be paired with a dcCloseStruct. */ +DC_API void dcCloseStruct (DCstruct* s); +DC_API DCsize dcStructSize (DCstruct* s); +DC_API DCsize dcStructAlignment(DCstruct* s); +DC_API void dcFreeStruct (DCstruct* s); + +DC_API DCstruct* dcDefineStruct (const char* signature); + + +/* helpers */ + +/* returns respective mode for callconv sig char (w/o checking if mode exists */ +/* on current platform), or DC_ERROR_UNSUPPORTED_MODE if char isn't a sigchar */ +DC_API DCint dcGetModeFromCCSigChar(DCsigchar sig_char); + +#ifdef __cplusplus +} +#endif + +#endif /* DYNCALL_H */ + diff --git a/vendor/dyncall/win64/include/dyncall/dyncall_alloc.h b/vendor/dyncall/win64/include/dyncall/dyncall_alloc.h new file mode 100644 index 000000000..bae29f798 --- /dev/null +++ b/vendor/dyncall/win64/include/dyncall/dyncall_alloc.h @@ -0,0 +1,41 @@ +/* + + Package: dyncall + Library: dyncall + File: dyncall/dyncall_alloc.h + Description: heap memory management interface (header only) + License: + + Copyright (c) 2007-2018 Daniel Adler <dadler@uni-goettingen.de>, + Tassilo Philipp <tphilipp@potion-studios.com> + + Permission to use, copy, modify, and distribute this software for any + purpose with or without fee is hereby granted, provided that the above + copyright notice and this permission notice appear in all copies. + + THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES + WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF + MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR + ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES + WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN + ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF + OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. + +*/ + + + +#ifndef DYNCALL_ALLOC_H +#define DYNCALL_ALLOC_H + +#ifndef dcAllocMem +#include <stdlib.h> +#define dcAllocMem malloc +#endif + +#ifndef dcFreeMem +#define dcFreeMem free +#endif + +#endif /* DYNCALL_ALLOC_H */ + diff --git a/vendor/dyncall/win64/include/dyncall/dyncall_callf.h b/vendor/dyncall/win64/include/dyncall/dyncall_callf.h new file mode 100644 index 000000000..0d323b0a1 --- /dev/null +++ b/vendor/dyncall/win64/include/dyncall/dyncall_callf.h @@ -0,0 +1,56 @@ +/* + + Package: dyncall + Library: dyncall + File: dyncall/dyncall_callf.h + Description: formatted call interface to dyncall + License: + + Copyright (c) 2007-2018 Daniel Adler <dadler@uni-goettingen.de>, + Tassilo Philipp <tphilipp@potion-studios.com> + + Permission to use, copy, modify, and distribute this software for any + purpose with or without fee is hereby granted, provided that the above + copyright notice and this permission notice appear in all copies. + + THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES + WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF + MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR + ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES + WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN + ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF + OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. + +*/ + + + +/* + + dyncall formatted calls C API + + REVISION + 2007/12/11 initial + +*/ + + +#ifndef DYNCALL_CALLF_H +#define DYNCALL_CALLF_H + +/* dyncall formatted calls */ + +#include "dyncall.h" +#include "dyncall_signature.h" +#include "dyncall_value.h" + +#include <stdarg.h> + +void dcArgF (DCCallVM* vm, const DCsigchar* signature, ...); +void dcVArgF(DCCallVM* vm, const DCsigchar* signature, va_list args); + +void dcCallF (DCCallVM* vm, DCValue* result, DCpointer funcptr, const DCsigchar* signature, ...); +void dcVCallF(DCCallVM* vm, DCValue* result, DCpointer funcptr, const DCsigchar* signature, va_list args); + +#endif /* DYNCALL_CALLF_H */ + diff --git a/vendor/dyncall/win64/include/dyncall/dyncall_callvm.h b/vendor/dyncall/win64/include/dyncall/dyncall_callvm.h new file mode 100644 index 000000000..bf26123d2 --- /dev/null +++ b/vendor/dyncall/win64/include/dyncall/dyncall_callvm.h @@ -0,0 +1,89 @@ +/* + + Package: dyncall + Library: dyncall + File: dyncall/dyncall_callvm.h + Description: Common call vm binary interface. + License: + + Copyright (c) 2007-2018 Daniel Adler <dadler@uni-goettingen.de>, + Tassilo Philipp <tphilipp@potion-studios.com> + + Permission to use, copy, modify, and distribute this software for any + purpose with or without fee is hereby granted, provided that the above + copyright notice and this permission notice appear in all copies. + + THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES + WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF + MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR + ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES + WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN + ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF + OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. + +*/ + + + +#ifndef DYNCALL_CALLVM_H +#define DYNCALL_CALLVM_H + +#include "dyncall.h" + +/* --- callvm virtual function table --------------------------------------- */ + +/* NOTE: if something changes in DCCallVM_, update offset marks in dyncall_call_sparc.S */ + +typedef struct DCCallVM_vt_ DCCallVM_vt; + +struct DCCallVM_ +{ + DCCallVM_vt* mVTpointer; + DCint mError; +}; + +struct DCCallVM_vt_ +{ + void (*free) (DCCallVM* vm); + void (*reset) (DCCallVM* vm); + void (*mode) (DCCallVM* vm,DCint mode); + void (*argBool) (DCCallVM* vm,DCbool B); + void (*argChar) (DCCallVM* vm,DCchar c); + void (*argShort) (DCCallVM* vm,DCshort s); + void (*argInt) (DCCallVM* vm,DCint i); + void (*argLong) (DCCallVM* vm,DClong l); + void (*argLongLong) (DCCallVM* vm,DClonglong L); + void (*argFloat) (DCCallVM* vm,DCfloat f); + void (*argDouble) (DCCallVM* vm,DCdouble d); + void (*argPointer) (DCCallVM* vm,DCpointer p); + void (*argStruct) (DCCallVM* vm,DCstruct* s, DCpointer p); + void (*callVoid) (DCCallVM* vm,DCpointer funcptr); + DCbool (*callBool) (DCCallVM* vm,DCpointer funcptr); + DCchar (*callChar) (DCCallVM* vm,DCpointer funcptr); + DCshort (*callShort) (DCCallVM* vm,DCpointer funcptr); + DCint (*callInt) (DCCallVM* vm,DCpointer funcptr); + DClong (*callLong) (DCCallVM* vm,DCpointer funcptr); + DClonglong (*callLongLong) (DCCallVM* vm,DCpointer funcptr); + DCfloat (*callFloat) (DCCallVM* vm,DCpointer funcptr); + DCdouble (*callDouble) (DCCallVM* vm,DCpointer funcptr); + DCpointer (*callPointer) (DCCallVM* vm,DCpointer funcptr); + void (*callStruct) (DCCallVM* vm,DCpointer funcptr,DCstruct* s, DCpointer returnValue); +}; + +typedef DCvoid (DCvoidvmfunc) (DCCallVM* vm,DCpointer funcptr); +typedef DCbool (DCboolvmfunc) (DCCallVM* vn,DCpointer funcptr); +typedef DCchar (DCcharvmfunc) (DCCallVM* vm,DCpointer funcptr); +typedef DCshort (DCshortvmfunc) (DCCallVM* vm,DCpointer funcptr); +typedef DCint (DCintvmfunc) (DCCallVM* vm,DCpointer funcptr); +typedef DClong (DClongvmfunc) (DCCallVM* vm,DCpointer funcptr); +typedef DClonglong (DClonglongvmfunc) (DCCallVM* vm,DCpointer funcptr); +typedef DCfloat (DCfloatvmfunc) (DCCallVM* vm,DCpointer funcptr); +typedef DCdouble (DCdoublevmfunc) (DCCallVM* vm,DCpointer funcptr); +typedef DCpointer (DCpointervmfunc) (DCCallVM* vm,DCpointer funcptr); + +/* Common base functions for CallVM implementations. */ + +void dc_callvm_base_init(DCCallVM *pInstance, DCCallVM_vt* pVTable); + +#endif /* DYNCALL_CALLVM_H */ + diff --git a/vendor/dyncall/win64/include/dyncall/dyncall_callvm_arm32_arm.h b/vendor/dyncall/win64/include/dyncall/dyncall_callvm_arm32_arm.h new file mode 100644 index 000000000..0e7b9c723 --- /dev/null +++ b/vendor/dyncall/win64/include/dyncall/dyncall_callvm_arm32_arm.h @@ -0,0 +1,55 @@ +/* + + Package: dyncall + Library: dyncall + File: dyncall/dyncall_callvm_arm32_arm.h + Description: + License: + + Copyright (c) 2007-2020 Daniel Adler <dadler@uni-goettingen.de>, + Tassilo Philipp <tphilipp@potion-studios.com> + + Permission to use, copy, modify, and distribute this software for any + purpose with or without fee is hereby granted, provided that the above + copyright notice and this permission notice appear in all copies. + + THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES + WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF + MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR + ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES + WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN + ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF + OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. + +*/ + + + +/* + + dyncall callvm for 32bit ARM32 family of processors + + SUPPORTED CALLING CONVENTIONS + armcall + + REVISION + 2007/12/11 initial + +*/ + + +#ifndef DYNCALL_CALLVM_ARM32_ARM_H +#define DYNCALL_CALLVM_ARM32_ARM_H + +#include "dyncall_callvm.h" +#include "dyncall_vector.h" + +typedef struct +{ + DCCallVM mInterface; + DCpointer mpCallFunc; + DCVecHead mVecHead; +} DCCallVM_arm32_arm; + +#endif /* DYNCALL_CALLVM_ARM32_ARM_H */ + diff --git a/vendor/dyncall/win64/include/dyncall/dyncall_callvm_arm32_arm_armhf.h b/vendor/dyncall/win64/include/dyncall/dyncall_callvm_arm32_arm_armhf.h new file mode 100644 index 000000000..26b699878 --- /dev/null +++ b/vendor/dyncall/win64/include/dyncall/dyncall_callvm_arm32_arm_armhf.h @@ -0,0 +1,59 @@ +/* + + Package: dyncall + Library: dyncall + File: dyncall/dyncall_callvm_arm32_arm_armhf.h + Description: + License: + + Copyright (c) 2007-2020 Daniel Adler <dadler@uni-goettingen.de>, + Tassilo Philipp <tphilipp@potion-studios.com> + + Permission to use, copy, modify, and distribute this software for any + purpose with or without fee is hereby granted, provided that the above + copyright notice and this permission notice appear in all copies. + + THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES + WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF + MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR + ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES + WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN + ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF + OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. + +*/ + + + +/* + + dyncall callvm for 32bit ARM32 family of processors + + SUPPORTED CALLING CONVENTIONS + armcall + + REVISION + 2007/12/11 initial + +*/ + + +#ifndef DYNCALL_CALLVM_ARM32_ARM_ARMHF_H +#define DYNCALL_CALLVM_ARM32_ARM_ARMHF_H + +#include "dyncall_callvm.h" +#include "dyncall_vector.h" + +typedef struct +{ + DCCallVM mInterface; + unsigned int i; + unsigned int s; + unsigned int d; + DCfloat S[16]; + DCpointer mpCallFunc; + DCVecHead mVecHead; +} DCCallVM_arm32_armhf; + +#endif /* DYNCALL_CALLVM_ARM32_ARM_H */ + diff --git a/vendor/dyncall/win64/include/dyncall/dyncall_callvm_arm32_thumb.h b/vendor/dyncall/win64/include/dyncall/dyncall_callvm_arm32_thumb.h new file mode 100644 index 000000000..4f3c7e3ba --- /dev/null +++ b/vendor/dyncall/win64/include/dyncall/dyncall_callvm_arm32_thumb.h @@ -0,0 +1,55 @@ +/* + + Package: dyncall + Library: dyncall + File: dyncall/dyncall_callvm_arm32_thumb.h + Description: + License: + + Copyright (c) 2007-2020 Daniel Adler <dadler@uni-goettingen.de>, + Tassilo Philipp <tphilipp@potion-studios.com> + + Permission to use, copy, modify, and distribute this software for any + purpose with or without fee is hereby granted, provided that the above + copyright notice and this permission notice appear in all copies. + + THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES + WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF + MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR + ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES + WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN + ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF + OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. + +*/ + + + +/* + + dyncall callvm for 32bit ARM32 family of processors + + SUPPORTED CALLING CONVENTIONS + armthumbcall + + REVISION + 2008/08/12 initial + +*/ + + +#ifndef DYNCALL_CALLVM_ARM32_THUMB_H +#define DYNCALL_CALLVM_ARM32_THUMB_H + +#include "dyncall_callvm.h" +#include "dyncall_vector.h" + +typedef struct +{ + DCCallVM mInterface; + DCpointer mpCallFunc; + DCVecHead mVecHead; +} DCCallVM_arm32_thumb; + +#endif /* DYNCALL_CALLVM_ARM32_THUMB_H */ + diff --git a/vendor/dyncall/win64/include/dyncall/dyncall_callvm_arm64.h b/vendor/dyncall/win64/include/dyncall/dyncall_callvm_arm64.h new file mode 100644 index 000000000..d5988b28f --- /dev/null +++ b/vendor/dyncall/win64/include/dyncall/dyncall_callvm_arm64.h @@ -0,0 +1,46 @@ +/* + + Package: dyncall + Library: dyncall + File: dyncall/dyncall_callvm_arm64.h + Description: + License: + + Copyright (c) 2015-2020 Daniel Adler <dadler@uni-goettingen.de>, + Tassilo Philipp <tphilipp@potion-studios.com> + + Permission to use, copy, modify, and distribute this software for any + purpose with or without fee is hereby granted, provided that the above + copyright notice and this permission notice appear in all copies. + + THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES + WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF + MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR + ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES + WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN + ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF + OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. + +*/ + +#ifndef DYNCALL_CALLVM_ARM64_H +#define DYNCALL_CALLVM_ARM64_H + +#include "dyncall_callvm.h" +#include "dyncall_vector.h" + +typedef struct +{ + DCCallVM mInterface; + unsigned int i; /* int register counter */ + unsigned int f; /* float register counter */ + union { /* float register buffer */ + DCfloat S[16]; + DCdouble D[8]; + } u; + unsigned long long I[8]; /* int register buffer */ + DCVecHead mVecHead; /* argument buffer head */ +} DCCallVM_arm64; + +#endif /* DYNCALL_CALLVM_ARM64_DEBIAN_H */ + diff --git a/vendor/dyncall/win64/include/dyncall/dyncall_callvm_mips.h b/vendor/dyncall/win64/include/dyncall/dyncall_callvm_mips.h new file mode 100644 index 000000000..5c4cea0ed --- /dev/null +++ b/vendor/dyncall/win64/include/dyncall/dyncall_callvm_mips.h @@ -0,0 +1,38 @@ +/* + + Package: dyncall + Library: dyncall + File: dyncall/dyncall_callvm_mips.h + Description: + License: + + Copyright (c) 2007-2018 Daniel Adler <dadler@uni-goettingen.de>, + Tassilo Philipp <tphilipp@potion-studios.com> + + Permission to use, copy, modify, and distribute this software for any + purpose with or without fee is hereby granted, provided that the above + copyright notice and this permission notice appear in all copies. + + THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES + WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF + MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR + ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES + WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN + ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF + OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. + +*/ + + + +#ifndef DYNCALL_CALLVM_MIPS_H +#define DYNCALL_CALLVM_MIPS_H + +/* Suported ABIs: */ + +#include "dyncall_callvm_mips_o32.h" +#include "dyncall_callvm_mips_eabi.h" +#include "dyncall_callvm_mips_n64.h" + +#endif /* DYNCALL_CALLVM_MIPS_H */ + diff --git a/vendor/dyncall/win64/include/dyncall/dyncall_callvm_mips_eabi.h b/vendor/dyncall/win64/include/dyncall/dyncall_callvm_mips_eabi.h new file mode 100644 index 000000000..f613880c5 --- /dev/null +++ b/vendor/dyncall/win64/include/dyncall/dyncall_callvm_mips_eabi.h @@ -0,0 +1,73 @@ +/* + + Package: dyncall + Library: dyncall + File: dyncall/dyncall_callvm_mips_eabi.h + Description: + License: + + Copyright (c) 2007-2020 Daniel Adler <dadler@uni-goettingen.de>, + Tassilo Philipp <tphilipp@potion-studios.com> + + Permission to use, copy, modify, and distribute this software for any + purpose with or without fee is hereby granted, provided that the above + copyright notice and this permission notice appear in all copies. + + THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES + WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF + MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR + ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES + WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN + ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF + OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. + +*/ + + + +/* + + dyncall callvm for 32bit MIPS family of processors + + SUPPORTED CALLING CONVENTIONS + eabi + + REVISION + 2008/01/03 initial + +*/ + + +#ifndef DYNCALL_CALLVM_MIPS_EABI_H +#define DYNCALL_CALLVM_MIPS_EABI_H + +#include "dyncall_callvm.h" +#include "dyncall_vector.h" + + +/* Call-kernel register data: + + Details: + Two register content buffers for the corresponding register types + integer and float are filled from CallVM code and then later at + call-kernel loaded into the registers. + */ + +typedef struct +{ + DCint mIntData[8]; + DCfloat mSingleData[8]; +} DCRegData_mips_eabi; + + +typedef struct +{ + DCCallVM mInterface; + int mIntRegs; + int mSingleRegs; + DCRegData_mips_eabi mRegData; + DCVecHead mVecHead; +} DCCallVM_mips_eabi; + +#endif /* DYNCALL_CALLVM_MIPS_EABI_H */ + diff --git a/vendor/dyncall/win64/include/dyncall/dyncall_callvm_mips_n32.h b/vendor/dyncall/win64/include/dyncall/dyncall_callvm_mips_n32.h new file mode 100644 index 000000000..45b09c7a1 --- /dev/null +++ b/vendor/dyncall/win64/include/dyncall/dyncall_callvm_mips_n32.h @@ -0,0 +1,77 @@ +/* + + Package: dyncall + Library: dyncall + File: dyncall/dyncall_callvm_mips_n32.h + Description: mips64 "n32" ABI callvm C interface. + License: + + Copyright (c) 2007-2020 Daniel Adler <dadler@uni-goettingen.de>, + Tassilo Philipp <tphilipp@potion-studios.com> + + Permission to use, copy, modify, and distribute this software for any + purpose with or without fee is hereby granted, provided that the above + copyright notice and this permission notice appear in all copies. + + THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES + WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF + MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR + ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES + WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN + ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF + OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. + +*/ + + + +#ifndef DYNCALL_CALLVM_MIPS_N32_H +#define DYNCALL_CALLVM_MIPS_N32_H + +#include "dyncall_callvm.h" +#include "dyncall_vector.h" + +#ifdef __cplusplus +extern "C" { +#endif + + +/* + two register-files for integer (promoted to 64-bit) and float (not promoted!) + are used. + + arguments are transfered in a free slot on the corresponding register file. + the other register-file will be skipped by one. + + float arguments are either loaded from single or double - + a auto-conversion into double and then loaded as double precision + turned out to fail for several tests. + + therefore a union for storage of float or double is used instead. + a bitmask (mUseDouble) records which type is used and will be + interpreted in the call-kernel. +*/ + +typedef struct +{ + DClonglong mIntData[8]; + union { DCfloat f; DCdouble d; } mFloatData[8]; + DClonglong mUseDouble; /* bitmask: lower 8 bits specify to use float or double from union array. */ +} DCRegData_mips_n32; + + +typedef struct +{ + DCCallVM mInterface; + DCint mRegCount; + DCRegData_mips_n32 mRegData; + DCVecHead mVecHead; +} DCCallVM_mips_n32; + + +#ifdef __cplusplus +} +#endif + +#endif /* DYNCALL_CALLVM_MIPS_N32_H */ + diff --git a/vendor/dyncall/win64/include/dyncall/dyncall_callvm_mips_n64.h b/vendor/dyncall/win64/include/dyncall/dyncall_callvm_mips_n64.h new file mode 100644 index 000000000..248fe9614 --- /dev/null +++ b/vendor/dyncall/win64/include/dyncall/dyncall_callvm_mips_n64.h @@ -0,0 +1,79 @@ +/* + + Package: dyncall + Library: dyncall + File: dyncall/dyncall_callvm_mips_n64.h + Description: mips "n64" ABI callvm C interface. + License: + + Copyright (c) 2007-2020 Daniel Adler <dadler@uni-goettingen.de>, + Tassilo Philipp <tphilipp@potion-studios.com> + + Permission to use, copy, modify, and distribute this software for any + purpose with or without fee is hereby granted, provided that the above + copyright notice and this permission notice appear in all copies. + + THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES + WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF + MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR + ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES + WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN + ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF + OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. + +*/ + + + +#ifndef DYNCALL_CALLVM_MIPS_N64_H +#define DYNCALL_CALLVM_MIPS_N64_H + +#include "dyncall_callvm.h" +#include "dyncall_vector.h" + +#ifdef __cplusplus +extern "C" { +#endif + + +/* + two register-files for integer (promoted to 64-bit) and float (not promoted!) + are used. + + arguments are transfered in a free slot on the corresponding register file. + the other register-file will be skipped by one. + + float arguments are either loaded from single or double - + a auto-conversion into double and then loaded as double precision + turned out to fail for several tests. + + therefore a union for storage of float or double is used instead. + a bitmask (mUseDouble) records which type is used and will be + interpreted in the call-kernel. +*/ + +typedef struct +{ + DClonglong mIntData[8]; +#if defined(DC__ABI_HARDFLOAT) + union { DCfloat f; DCdouble d; } mFloatData[8]; + DClonglong mUseDouble; /* bitmask: lower 8 bits specify to use float or double from union array. */ +#endif /* DC__ABI_HARDFLOAT */ +} DCRegData_mips_n64; + + +typedef struct +{ + DCCallVM mInterface; + DCint mRegCount; + DCRegData_mips_n64 mRegData; + DCVecHead mVecHead; +} DCCallVM_mips_n64; + + +#ifdef __cplusplus +} +#endif + +#endif /* DYNCALL_CALLVM_MIPS_N64_H */ + diff --git a/vendor/dyncall/win64/include/dyncall/dyncall_callvm_mips_o32.h b/vendor/dyncall/win64/include/dyncall/dyncall_callvm_mips_o32.h new file mode 100644 index 000000000..335cf850f --- /dev/null +++ b/vendor/dyncall/win64/include/dyncall/dyncall_callvm_mips_o32.h @@ -0,0 +1,74 @@ +/* + + Package: dyncall + Library: dyncall + File: dyncall/dyncall_callvm_mips_o32.h + Description: mips "o32" ABI callvm C interface. + License: + + Copyright (c) 2007-2020 Daniel Adler <dadler@uni-goettingen.de>, + Tassilo Philipp <tphilipp@potion-studios.com> + + Permission to use, copy, modify, and distribute this software for any + purpose with or without fee is hereby granted, provided that the above + copyright notice and this permission notice appear in all copies. + + THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES + WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF + MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR + ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES + WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN + ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF + OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. + +*/ + + + +#ifndef DYNCALL_CALLVM_MIPS_O32_H +#define DYNCALL_CALLVM_MIPS_O32_H + +#include "dyncall_callvm.h" +#include "dyncall_vector.h" + + +/* Call-kernel register data: + + Details: + + The structure holds the argument data for transfering float/double arguments + via registers as well. + The call-kernel on hardfloat platforms implements loads two doubles, which + involves four 32-bit floating pointer registers. It's unused for softfloat + platforms. + + Float arguments map as following: + + float argument 0 is at u[0][0] for little, u[0][1] for big endian and + float argument 1 is at u[1][0] for little, u[1][1] for big endian of + DCRegData_mips_o32 union. + +*/ + +typedef struct +{ +#if defined(DC__ABI_HARDFLOAT) + union { + double d; + float f[2]; + } u[2]; +#endif /* DC__ABI_HARDFLOAT */ +} DCRegData_mips_o32; + + +typedef struct +{ + DCCallVM mInterface; + int mArgCount; + DCRegData_mips_o32 mRegData; + DCVecHead mVecHead; +} DCCallVM_mips_o32; + + +#endif /* DYNCALL_CALLVM_MIPS_O32_H */ + diff --git a/vendor/dyncall/win64/include/dyncall/dyncall_callvm_ppc32.h b/vendor/dyncall/win64/include/dyncall/dyncall_callvm_ppc32.h new file mode 100644 index 000000000..67f64329a --- /dev/null +++ b/vendor/dyncall/win64/include/dyncall/dyncall_callvm_ppc32.h @@ -0,0 +1,64 @@ +/* + + Package: dyncall + Library: dyncall + File: dyncall/dyncall_callvm_ppc32.h + Description: + License: + + Copyright (c) 2007-2020 Daniel Adler <dadler@uni-goettingen.de>, + Tassilo Philipp <tphilipp@potion-studios.com> + + Permission to use, copy, modify, and distribute this software for any + purpose with or without fee is hereby granted, provided that the above + copyright notice and this permission notice appear in all copies. + + THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES + WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF + MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR + ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES + WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN + ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF + OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. + +*/ + + + +#ifndef DYNCALL_CALLVM_PPC32_H +#define DYNCALL_CALLVM_PPC32_H + +/* + + dyncall callvm for 32bit ppc architectures + + SUPPORTED CALLING CONVENTIONS + standard and ... (ellipsis) calls + + REVISION + 2007/12/11 initial + +*/ + + +#include "dyncall_callvm.h" +#include "dyncall_vector.h" + +typedef struct +{ + DCint mIntData[8]; + DCdouble mFloatData[13]; /* 13 for darwin, 8 for sysv */ +} DCRegData_ppc32; + + +typedef struct +{ + DCCallVM mInterface; + int mIntRegs; + int mFloatRegs; + DCRegData_ppc32 mRegData; + DCVecHead mVecHead; +} DCCallVM_ppc32; + +#endif /* DYNCALL_CALLVM_PPC32_H */ + diff --git a/vendor/dyncall/win64/include/dyncall/dyncall_callvm_ppc64.h b/vendor/dyncall/win64/include/dyncall/dyncall_callvm_ppc64.h new file mode 100644 index 000000000..192246008 --- /dev/null +++ b/vendor/dyncall/win64/include/dyncall/dyncall_callvm_ppc64.h @@ -0,0 +1,64 @@ +/* + + Package: dyncall + Library: dyncall + File: dyncall/dyncall_callvm_ppc64.h + Description: + License: + + Copyright (c) 2014-2015 Masanori Mitsugi <mitsugi@linux.vnet.ibm.com> + 2020 Tassilo Philipp <tphilipp@potion-studios.com> + + Permission to use, copy, modify, and distribute this software for any + purpose with or without fee is hereby granted, provided that the above + copyright notice and this permission notice appear in all copies. + + THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES + WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF + MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR + ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES + WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN + ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF + OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. + +*/ + + +#ifndef DYNCALL_CALLVM_PPC64_H +#define DYNCALL_CALLVM_PPC64_H + +/* + + dyncall callvm for 64bit ppc architectures + + SUPPORTED CALLING CONVENTIONS + standard and ... (ellipsis) calls + + REVISION + 2014/08/07 initial + +*/ + + +#include "dyncall_callvm.h" +#include "dyncall_vector.h" + + +typedef struct +{ + DClonglong mIntData[8]; + DCdouble mFloatData[13]; +} DCRegData_ppc64; + +typedef struct +{ + DCCallVM mInterface; + int mIntRegs; + int mFloatRegs; + DCRegData_ppc64 mRegData; + DCVecHead mVecHead; +} DCCallVM_ppc64; + + +#endif /* DYNCALL_CALLVM_PPC64_H */ + diff --git a/vendor/dyncall/win64/include/dyncall/dyncall_callvm_sparc.h b/vendor/dyncall/win64/include/dyncall/dyncall_callvm_sparc.h new file mode 100644 index 000000000..71d61a509 --- /dev/null +++ b/vendor/dyncall/win64/include/dyncall/dyncall_callvm_sparc.h @@ -0,0 +1,43 @@ +/* + + Package: dyncall + Library: dyncall + File: dyncall/dyncall_callvm_sparc.h + Description: Call VM for sparc processor architecture. + License: + + Copyright (c) 2011-2020 Daniel Adler <dadler@uni-goettingen.de> + + Permission to use, copy, modify, and distribute this software for any + purpose with or without fee is hereby granted, provided that the above + copyright notice and this permission notice appear in all copies. + + THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES + WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF + MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR + ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES + WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN + ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF + OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. + +*/ + + + +#ifndef DYNCALL_CALLVM_SPARC_H +#define DYNCALL_CALLVM_SPARC_H + +#include "dyncall_callvm.h" +#include "dyncall_vector.h" + +/* NOTE: if something changes here, update offset marks in dyncall_call_sparc.S */ + +typedef struct DCCallVM_sparc_ DCCallVM_sparc; +struct DCCallVM_sparc_ +{ + DCCallVM mInterface; /* 8 bytes (vtable,errorid) */ + DCVecHead mVecHead; /* 8 bytes (max,size) */ +}; + +#endif /* DYNCALL_CALLVM_SPARC_H */ + diff --git a/vendor/dyncall/win64/include/dyncall/dyncall_callvm_sparc64.h b/vendor/dyncall/win64/include/dyncall/dyncall_callvm_sparc64.h new file mode 100644 index 000000000..8b7b89070 --- /dev/null +++ b/vendor/dyncall/win64/include/dyncall/dyncall_callvm_sparc64.h @@ -0,0 +1,42 @@ +/* + + Package: dyncall + Library: dyncall + File: dyncall/dyncall_callvm_sparc64.h + Description: Call VM for sparc64 (v9) ABI. + License: + + Copyright (c) 2011-2018 Daniel Adler <dadler@uni-goettingen.de> + + Permission to use, copy, modify, and distribute this software for any + purpose with or without fee is hereby granted, provided that the above + copyright notice and this permission notice appear in all copies. + + THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES + WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF + MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR + ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES + WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN + ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF + OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. + +*/ + + + +#ifndef DYNCALL_CALLVM_SPARC_V9_H +#define DYNCALL_CALLVM_SPARC_V9_H + +#include "dyncall_callvm.h" +#include "dyncall_vector.h" + +typedef struct +{ + DCCallVM mInterface; /* 0: +12:8 = 16*/ + DCVecHead mVecHead; /* 16 152: mTotalSize +8 */ + /* 24 160: mSize +8 */ + /* 32 168: mData */ +} DCCallVM_v9; + +#endif /* DYNCALL_CALLVM_SPARC_V9_H */ + diff --git a/vendor/dyncall/win64/include/dyncall/dyncall_callvm_x64.h b/vendor/dyncall/win64/include/dyncall/dyncall_callvm_x64.h new file mode 100644 index 000000000..6a2c9cd90 --- /dev/null +++ b/vendor/dyncall/win64/include/dyncall/dyncall_callvm_x64.h @@ -0,0 +1,108 @@ +/* + + Package: dyncall + Library: dyncall + File: dyncall/dyncall_callvm_x64.h + Description: + License: + + Copyright (c) 2007-2018 Daniel Adler <dadler@uni-goettingen.de>, + Tassilo Philipp <tphilipp@potion-studios.com> + + Permission to use, copy, modify, and distribute this software for any + purpose with or without fee is hereby granted, provided that the above + copyright notice and this permission notice appear in all copies. + + THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES + WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF + MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR + ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES + WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN + ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF + OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. + +*/ + + + +/* + + dyncall callvm for x64 architecture + + SUPPORTED CALLING CONVENTIONS + MS Windows x64 calling convention, AMD64 SystemV ABI + + REVISION + 2007/12/11 initial + +*/ + + +#ifndef DYNCALL_CALLVM_X64_H +#define DYNCALL_CALLVM_X64_H + +#include "dyncall_macros.h" +#include "dyncall_callvm.h" +#include "dyncall_vector.h" + + +#if defined(DC_WINDOWS) + +typedef long long int64; /* llp64 */ + +#define numIntRegs 4 +#define numFloatRegs 4 +#define DCRegCount_x64 DCRegCount_x64_u +#define DCRegData_x64 DCRegData_x64_u + +#elif defined(DC_UNIX) + +typedef long int64; /* lp64 */ + +#define numIntRegs 6 +#define numFloatRegs 8 +#define DCRegCount_x64 DCRegCount_x64_s +#define DCRegData_x64 DCRegData_x64_s + +#else + +#error Unsupported OS. + +#endif + +typedef union +{ + int i; + int f; +} DCRegCount_x64_u; + +typedef struct +{ + int i; + int f; +} DCRegCount_x64_s; + +typedef union +{ + int64 i[numIntRegs ]; + double f[numFloatRegs]; +} DCRegData_x64_u; + +typedef struct +{ + int64 i[numIntRegs ]; + double f[numFloatRegs]; +} DCRegData_x64_s; + + +typedef struct +{ + DCCallVM mInterface; /* This CallVM interface. */ + DCpointer mpCallFunc; /* Function to call. */ + DCRegCount_x64 mRegCount; /* Number of int/sse registers used for parameter passing. */ + DCRegData_x64 mRegData; /* Parameters to be passed via registers. */ + DCVecHead mVecHead; /* Parameters to be pushed onto stack. */ +} DCCallVM_x64; + +#endif /* DYNCALL_CALLVM_X64_H */ + diff --git a/vendor/dyncall/win64/include/dyncall/dyncall_callvm_x86.h b/vendor/dyncall/win64/include/dyncall/dyncall_callvm_x86.h new file mode 100644 index 000000000..422dd01eb --- /dev/null +++ b/vendor/dyncall/win64/include/dyncall/dyncall_callvm_x86.h @@ -0,0 +1,59 @@ +/* + + Package: dyncall + Library: dyncall + File: dyncall/dyncall_callvm_x86.h + Description: Call virtual machine for x86 architecture header + License: + + Copyright (c) 2007-2018 Daniel Adler <dadler@uni-goettingen.de>, + Tassilo Philipp <tphilipp@potion-studios.com> + + Permission to use, copy, modify, and distribute this software for any + purpose with or without fee is hereby granted, provided that the above + copyright notice and this permission notice appear in all copies. + + THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES + WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF + MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR + ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES + WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN + ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF + OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. + +*/ + + + +#ifndef DYNCALL_CALLVM_X86_H +#define DYNCALL_CALLVM_X86_H + +/* + + dyncall callvm for 32bit X86 architectures + Copyright 2007 Daniel Adler. + + SUPPORTED CALLING CONVENTIONS + cdecl,stdcall,fastcall,thiscall,msthiscall + + REVISION + 2007/12/10 initial + +*/ + + +#include "dyncall_callvm.h" +#include "dyncall_vector.h" + +typedef struct DCCallVM_x86_ DCCallVM_x86; + +struct DCCallVM_x86_ +{ + DCCallVM mInterface; + DCpointer mpCallFunc; + int mIntRegs; /* used by fastcall implementation */ + DCVecHead mVecHead; +}; + +#endif /* DYNCALL_CALLVM_X86_H */ + diff --git a/vendor/dyncall/win64/include/dyncall/dyncall_config.h b/vendor/dyncall/win64/include/dyncall/dyncall_config.h new file mode 100644 index 000000000..db98c2ad8 --- /dev/null +++ b/vendor/dyncall/win64/include/dyncall/dyncall_config.h @@ -0,0 +1,47 @@ +/* + + Package: dyncall + Library: dyncall + File: dyncall/dyncall_config.h + Description: Macro configuration file for non-standard C types + License: + + Copyright (c) 2007-2018 Daniel Adler <dadler@uni-goettingen.de>, + Tassilo Philipp <tphilipp@potion-studios.com> + + Permission to use, copy, modify, and distribute this software for any + purpose with or without fee is hereby granted, provided that the above + copyright notice and this permission notice appear in all copies. + + THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES + WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF + MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR + ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES + WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN + ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF + OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. + +*/ + + + +/* + + dyncall type configuration + + REVISION + 2007/12/11 initial + +*/ + +#ifndef DYNCALL_CONFIG_H +#define DYNCALL_CONFIG_H + +#include "dyncall_macros.h" + +#define DC_BOOL int +#define DC_LONG_LONG long long +#define DC_POINTER void* + +#endif /* DYNCALL_CONFIG_H */ + diff --git a/vendor/dyncall/win64/include/dyncall/dyncall_macros.h b/vendor/dyncall/win64/include/dyncall/dyncall_macros.h new file mode 100644 index 000000000..5ae6cc653 --- /dev/null +++ b/vendor/dyncall/win64/include/dyncall/dyncall_macros.h @@ -0,0 +1,301 @@ +/* + + Package: dyncall + Library: dyncall + File: dyncall/dyncall_macros.h + Description: Platform detection macros + License: + + Copyright (c) 2007-2018 Daniel Adler <dadler@uni-goettingen.de>, + Tassilo Philipp <tphilipp@potion-studios.com> + + Permission to use, copy, modify, and distribute this software for any + purpose with or without fee is hereby granted, provided that the above + copyright notice and this permission notice appear in all copies. + + THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES + WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF + MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR + ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES + WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN + ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF + OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. + +*/ + + + +/* + + dyncall macros + + Platform detection, specific defines and configuration. + The purpose of this file is to provide coherent platform and compiler + specific defines. So instead of defines like WIN32, _OpenBSD_ or + __GNUC__, one should use DC__OS_Win32, DC__OS_OpenBSD or DC__C_GNU, + respectively. + + REVISION + 2007/12/11 initial + +*/ + + +#ifndef DYNCALL_MACROS_H +#define DYNCALL_MACROS_H + + +/* Platform specific defines. */ + +/* MS Windows XP x64/Vista64 or later. */ +#if defined(WIN64) || defined(_WIN64) || defined(__WIN64__) +#define DC__OS_Win64 + +/* MS Windows NT/95/98/ME/2000/XP/Vista32. */ +#elif defined(WIN32) || defined(_WIN32) || defined(__WIN32__) || defined(__NT__) || defined(__WINDOWS__) || defined(_WINDOWS) +#define DC__OS_Win32 + +/* All the OS' based on Darwin OS (MacOS X, OpenDarwin). Note that '__APPLE__' may be defined for classic MacOS, too. */ +/* __MACOSX__ is not defined in gcc assembler mode (switch: -S) */ +/* @@@ TODO: Check for Classic OS */ + +#elif defined(__APPLE__) || defined(__Darwin__) +# define DC__OS_Darwin +# if defined(__ENVIRONMENT_IPHONE_OS_VERSION_MIN_REQUIRED__) +# define DC__OS_IPhone +# else /* defined(__ENVIRONMENT_MAC_OS_X_VERSION_MIN_REQUIRED__) */ +# define DC__OS_MacOSX +# endif + +/* The most popular open source Unix-like OS - Linux. */ +#elif defined(__linux__) || defined(__linux) || defined(__gnu_linux__) +#define DC__OS_Linux + +/* The most powerful open source Unix-like OS - FreeBSD. */ +#elif defined(__FreeBSD__) || defined(__FreeBSD_kernel__) /* latter is (also) used by systems using FreeBSD kernel, e.g. Debian/kFreeBSD, which could be detected specifically by also checking for __GLIBC__ */ +#define DC__OS_FreeBSD + +/* The most secure open source Unix-like OS - OpenBSD. */ +#elif defined(__OpenBSD__) +#define DC__OS_OpenBSD + +/* The most portable open source Unix-like OS - NetBSD. */ +#elif defined(__NetBSD__) +#define DC__OS_NetBSD + +/* The FreeBSD fork having heavy clusterization in mind - DragonFlyBSD. */ +#elif defined(__DragonFly__) +#define DC__OS_DragonFlyBSD + +/* Sun's Unix-like OS - SunOS / Solaris. */ +#elif defined(__sun__) || defined(__sun) || defined(sun) +#define DC__OS_SunOS + +/* The "Linux-like environment for Windows" - Cygwin. */ +#elif defined(__CYGWIN__) +#define DC__OS_Cygwin + +/* The "Minimalist GNU for Windows" - MinGW. */ +#elif defined(__MINGW__)/*@@@*/ +#define DC__OS_MinGW + +/* The Nintendo DS (homebrew) using devkitpro. */ +#elif defined(__nds__) +#define DC__OS_NDS + +/* The PlayStation Portable (homebrew) SDK. */ +#elif defined(__psp__) || defined(PSP) +#define DC__OS_PSP + +/* Haiku (BeOS alike). */ +#elif defined(__HAIKU__) +#define DC__OS_BeOS + +/* The Unix successor - Plan9 from Bell Labs */ +#elif defined(Plan9) || defined(__Plan9__) +#define DC__OS_Plan9 + +/* Digital's Unix-like OS - VMS */ +#elif defined(__vms) +#define DC__OS_VMS + +#elif defined(__minix) +#define DC__OS_Minix + +#else + +/* Unable to determine OS, which is probably ok (e.g. baremetal stuff, etc.). */ +#define DC__OS_UNKNOWN +#endif + + + +/* Compiler specific defines. Do not change the order, because */ +/* some of the compilers define flags for compatible ones, too. */ + +/* Intel's C/C++ compiler. */ +#if defined(__INTEL_COMPILER) +#define DC__C_Intel + +/* MS C/C++ compiler. */ +#elif defined(_MSC_VER) +#define DC__C_MSVC + +/* LLVM clang. */ +#elif defined(__clang__) || defined(__llvm__) +#define DC__C_CLANG + +/* The GNU Compiler Collection - GCC. */ +#elif defined(__GNUC__) +#define DC__C_GNU + +/* Watcom compiler. */ +#elif defined(__WATCOMC__) +#define DC__C_WATCOM + +/* Portable C Compiler. */ +#elif defined(__PCC__) +#define DC__C_PCC + +/* Sun Pro C. */ +#elif defined(__SUNPRO_C) +#define DC__C_SUNPRO + +/* Undetected C Compiler. */ +#else +#define DC__C_UNKNOWN +#endif + + + +/* Architecture. */ + +/* Check architecture. */ +#if defined(_M_X64_) || defined(_M_AMD64) || defined(__amd64__) || defined(__amd64) || defined(__x86_64__) || defined(__x86_64) +# define DC__Arch_AMD64 +#elif defined(_M_IX86) || defined(__i386__) || defined(__i486__) || defined(__i586__) || defined(__i686__) || defined(__386__) || defined(__i386) +# define DC__Arch_Intel_x86 +#elif defined(_M_IA64) || defined(__ia64__) +# define DC__Arch_Itanium +#elif defined(_M_PPC) || defined(__powerpc__) || defined(__powerpc) || defined(__POWERPC__) || defined(__ppc__) || defined(__power__) +# if defined(__ppc64__) || defined(_ARCH_PPC64) || defined(__power64__) || defined(__powerpc64__) +# define DC__Arch_PPC64 +# else +# define DC__Arch_PPC32 +# endif +#elif defined(__mips64__) || defined(__mips64) +# define DC__Arch_MIPS64 +#elif defined(_M_MRX000) || defined(__mips__) || defined(__mips) || defined(_mips) +# define DC__Arch_MIPS +#elif defined(__arm__) +# define DC__Arch_ARM +#elif defined(__aarch64__) || defined(__arm64) || defined(__arm64__) +# define DC__Arch_ARM64 +#elif defined(__sh__) +# define DC__Arch_SuperH +#elif defined(__sparc) || defined(__sparc__) +# if defined(__sparcv9) || defined(__sparc_v9__) || defined(__sparc64__) || defined(__arch64__) +# define DC__Arch_Sparc64 +# else +# define DC__Arch_Sparc +# endif +#endif + + + +/* Rough OS classification. */ + +#if defined(DC__OS_Win32) || defined(DC__OS_Win64) +# define DC_WINDOWS +#elif defined(DC__OS_Plan9) +# define DC_PLAN9 +#elif defined(DC__OS_NDS) || defined(DC__OS_PSP) +# define DC_OTHER +#else +# define DC_UNIX +#endif + + + +/* Misc machine-dependent modes, ABIs, etc.. */ + +#if defined(__arm__) && !defined(__thumb__) +# define DC__Arch_ARM_ARM +#elif defined(__arm__) && defined(__thumb__) +# define DC__Arch_ARM_THUMB +#endif + +#if defined(DC__Arch_ARM_ARM) || defined(DC__Arch_ARM_THUMB) +# if defined(__ARM_EABI__) || defined(DC__OS_NDS) +# if defined (__ARM_PCS_VFP) && (__ARM_PCS_VFP == 1) +# define DC__ABI_ARM_HF +# else +# define DC__ABI_ARM_EABI +# endif +# elif defined(__APCS_32__) +# define DC__ABI_ARM_OABI +# endif +#endif /* ARM */ + +#if defined(DC__Arch_MIPS) || defined(DC__Arch_MIPS64) +# if defined(_ABIO32) || defined(__mips_o32) || defined(_MIPS_ARCH_MIPS1) || defined(_MIPS_ARCH_MIPS2) +# define DC__ABI_MIPS_O32 +# elif defined(_ABI64) || defined(__mips_n64) +# define DC__ABI_MIPS_N64 +# elif defined(_ABIN32) +# define DC__ABI_MIPS_N32 +# else +# define DC__ABI_MIPS_EABI +# endif +/* Set extra flag to know if FP hardware ABI, default to yes, if unsure */ +# if (defined(__mips_hard_float) && (__mips_hard_float == 1)) || !defined(__mips_soft_float) || (__mips_soft_float != 1) +# define DC__ABI_HARDFLOAT /* @@@ make this general for all archs? */ +# else +# define DC__ABI_SOFTFLOAT +# endif +#endif /* MIPS */ + +#if defined(DC__Arch_PPC64) +# if defined(_CALL_ELF) +# define DC__ABI_PPC64_ELF_V _CALL_ELF +# else +# define DC__ABI_PPC64_ELF_V 0 /* 0 means not explicitly set, otherwise this is 1 (big endian) and 2 (little endian) */ +# endif +#endif /* PPC64 */ + + +/* Endian detection. */ +#if defined(DC__Arch_Intel_x86) || defined(DC__Arch_AMD64) /* always little */ +# define DC__Endian_LITTLE +#elif defined(DC__Arch_Sparc) /* always purely big until v9 */ +# define DC__Endian_BIG +#else /* all others are bi-endian */ +/* @@@check flags used on following bi-endianness archs: +DC__Arch_Itanium +DC__Arch_PPC32 +DC__Arch_PPC64 +DC__Arch_SuperH +*/ +# if (defined(DC__Arch_PPC64) && (DC__ABI_PPC64_ELF_V == 1)) || defined(_BIG_ENDIAN) || defined(__BIG_ENDIAN__) || defined(MIPSEB) || defined(_MIPSEB) || defined(__MIPSEB) || defined(__MIPSEB__) || defined(__ARMEB__) || defined(__AARCH64EB__) +# define DC__Endian_BIG +# elif (defined(DC__Arch_PPC64) && (DC__ABI_PPC64_ELF_V == 2)) || defined(_LITTLE_ENDIAN) || defined(__LITTLE_ENDIAN__) || defined(MIPSEL) || defined(_MIPSEL) || defined(__MIPSEL) || defined(__MIPSEL__) || defined(__ARMEL__) || defined(__AARCH64EL__) +# define DC__Endian_LITTLE +# elif defined(DC__Arch_Sparc64) && !defined(__BYTE_ORDER__) /* Sparc64 default is big-endian, except if explicitly defined */ +# define DC__Endian_BIG +# elif defined(__BYTE_ORDER__) /* explicitly set */ +# if defined(__ORDER_BIG_ENDIAN__) && (__BYTE_ORDER__ == __ORDER_BIG_ENDIAN__) +# define DC__Endian_BIG +# elif defined(__ORDER_LITTLE_ENDIAN__) && (__BYTE_ORDER__ == __ORDER_LITTLE_ENDIAN__) +# define DC__Endian_LITTLE +# endif +# endif /* no else, leave unset if not sure */ +#endif + + +/* Internal macro/tag. */ +#if !defined(DC_API) +# define DC_API +#endif + +#endif /* DYNCALL_MACROS_H */ + diff --git a/vendor/dyncall/win64/include/dyncall/dyncall_signature.h b/vendor/dyncall/win64/include/dyncall/dyncall_signature.h new file mode 100644 index 000000000..edacc15f4 --- /dev/null +++ b/vendor/dyncall/win64/include/dyncall/dyncall_signature.h @@ -0,0 +1,79 @@ +/* + + Package: dyncall + Library: dyncall + File: dyncall/dyncall_signature.h + Description: Type and calling-convention signature character defines + License: + + Copyright (c) 2007-2020 Daniel Adler <dadler@uni-goettingen.de>, + Tassilo Philipp <tphilipp@potion-studios.com> + + Permission to use, copy, modify, and distribute this software for any + purpose with or without fee is hereby granted, provided that the above + copyright notice and this permission notice appear in all copies. + + THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES + WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF + MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR + ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES + WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN + ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF + OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. + +*/ + + + +/* + + dyncall signature characters + + REVISION + 2007/12/11 initial + +*/ + + +#ifndef DYNCALL_SIGNATURE_H +#define DYNCALL_SIGNATURE_H + +typedef char DCsigchar; + +#define DC_SIGCHAR_VOID 'v' +#define DC_SIGCHAR_BOOL 'B' +#define DC_SIGCHAR_CHAR 'c' +#define DC_SIGCHAR_UCHAR 'C' +#define DC_SIGCHAR_SHORT 's' +#define DC_SIGCHAR_USHORT 'S' +#define DC_SIGCHAR_INT 'i' +#define DC_SIGCHAR_UINT 'I' +#define DC_SIGCHAR_LONG 'j' +#define DC_SIGCHAR_ULONG 'J' +#define DC_SIGCHAR_LONGLONG 'l' +#define DC_SIGCHAR_ULONGLONG 'L' +#define DC_SIGCHAR_FLOAT 'f' +#define DC_SIGCHAR_DOUBLE 'd' +#define DC_SIGCHAR_POINTER 'p' +#define DC_SIGCHAR_STRING 'Z' +#define DC_SIGCHAR_STRUCT 'T' +#define DC_SIGCHAR_ENDARG ')' /* also works for end struct */ + +/* calling convention / mode signatures */ + +#define DC_SIGCHAR_CC_PREFIX '_' +#define DC_SIGCHAR_CC_DEFAULT ':' +#define DC_SIGCHAR_CC_ELLIPSIS 'e' +#define DC_SIGCHAR_CC_ELLIPSIS_VARARGS '.' +#define DC_SIGCHAR_CC_CDECL 'c' +#define DC_SIGCHAR_CC_STDCALL 's' +#define DC_SIGCHAR_CC_FASTCALL_MS 'F' +#define DC_SIGCHAR_CC_FASTCALL_GNU 'f' +#define DC_SIGCHAR_CC_THISCALL_MS '+' +#define DC_SIGCHAR_CC_THISCALL_GNU '#' /* GNU thiscalls are cdecl, but keep specific sig char for clarity */ +#define DC_SIGCHAR_CC_ARM_ARM 'A' +#define DC_SIGCHAR_CC_ARM_THUMB 'a' +#define DC_SIGCHAR_CC_SYSCALL '$' + +#endif /* DYNCALL_SIGNATURE_H */ + diff --git a/vendor/dyncall/win64/include/dyncall/dyncall_struct.h b/vendor/dyncall/win64/include/dyncall/dyncall_struct.h new file mode 100644 index 000000000..7710e8bfd --- /dev/null +++ b/vendor/dyncall/win64/include/dyncall/dyncall_struct.h @@ -0,0 +1,70 @@ +/* + + Package: dyncall + Library: dyncall + File: dyncall/dyncall_struct.h + Description: C interface to compute struct size + License: + + Copyright (c) 2010-2015 Olivier Chafik <olivier.chafik@centraliens.net> + + Permission to use, copy, modify, and distribute this software for any + purpose with or without fee is hereby granted, provided that the above + copyright notice and this permission notice appear in all copies. + + THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES + WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF + MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR + ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES + WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN + ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF + OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. + +*/ + + + +/* + + dyncall struct metadata structures + + REVISION + 2007/12/11 initial + +*/ + +#ifndef DYNCALL_STRUCT_H +#define DYNCALL_STRUCT_H + +#include "dyncall.h" + +#ifdef __cplusplus +extern "C" { +#endif + +typedef struct DCfield_ { + DCsize offset, size, alignment, arrayLength; + DCint type; + DCstruct* pSubStruct; +} DCfield; + +struct DCstruct_ { + DCfield *pFields; + DCsize size, alignment, fieldCount; + + /* struct building uses a state machine. */ + DCint nextField; /* == -1 if struct is closed */ + DCstruct *pCurrentStruct, *pLastStruct; /* == this, unless we're in a sub struct */ +}; + + +/* Helper. */ +void dcArgStructUnroll(DCCallVM* vm, DCstruct* s, DCpointer value); + + +#ifdef __cplusplus +} +#endif + +#endif /* DYNCALL_H */ + diff --git a/vendor/dyncall/win64/include/dyncall/dyncall_types.h b/vendor/dyncall/win64/include/dyncall/dyncall_types.h new file mode 100644 index 000000000..ab46a7c42 --- /dev/null +++ b/vendor/dyncall/win64/include/dyncall/dyncall_types.h @@ -0,0 +1,74 @@ +/* + + Package: dyncall + Library: dyncall + File: dyncall/dyncall_types.h + Description: Typedefs + License: + + Copyright (c) 2007-2018 Daniel Adler <dadler@uni-goettingen.de>, + Tassilo Philipp <tphilipp@potion-studios.com> + + Permission to use, copy, modify, and distribute this software for any + purpose with or without fee is hereby granted, provided that the above + copyright notice and this permission notice appear in all copies. + + THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES + WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF + MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR + ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES + WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN + ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF + OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. + +*/ + + + +/* + + dyncall argument- and return-types + + REVISION + 2007/12/11 initial + +*/ + +#ifndef DYNCALL_TYPES_H +#define DYNCALL_TYPES_H + +#include <stddef.h> + +#include "dyncall_config.h" + +#ifdef __cplusplus +extern "C" { +#endif + +typedef void DCvoid; +typedef DC_BOOL DCbool; +typedef char DCchar; +typedef unsigned char DCuchar; +typedef short DCshort; +typedef unsigned short DCushort; +typedef int DCint; +typedef unsigned int DCuint; +typedef long DClong; +typedef unsigned long DCulong; +typedef DC_LONG_LONG DClonglong; +typedef unsigned DC_LONG_LONG DCulonglong; +typedef float DCfloat; +typedef double DCdouble; +typedef DC_POINTER DCpointer; +typedef const char* DCstring; +typedef size_t DCsize; + +#define DC_TRUE 1 +#define DC_FALSE 0 + +#ifdef __cplusplus +} +#endif + +#endif /* DYNCALL_TYPES_H */ + diff --git a/vendor/dyncall/win64/include/dyncall/dyncall_utils.h b/vendor/dyncall/win64/include/dyncall/dyncall_utils.h new file mode 100644 index 000000000..eb568a7d6 --- /dev/null +++ b/vendor/dyncall/win64/include/dyncall/dyncall_utils.h @@ -0,0 +1,39 @@ +/* + + Package: dyncall + Library: dyncall + File: dyncall/dyncall_utils.h + Description: Type and calling-convention signature character defines + License: + + Copyright (c) 2007-2018 Daniel Adler <dadler@uni-goettingen.de>, + Tassilo Philipp <tphilipp@potion-studios.com> + + Permission to use, copy, modify, and distribute this software for any + purpose with or without fee is hereby granted, provided that the above + copyright notice and this permission notice appear in all copies. + + THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES + WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF + MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR + ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES + WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN + ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF + OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. + +*/ + + + + +#ifndef DYNCALL_UTILS_H +#define DYNCALL_UTILS_H + +/* C portable macros. */ + +#ifndef DC_MAX +#define DC_MAX(a,b) ((a)>=(b))?(a):(b) +#endif + +#endif /* DYNCALL_UTILS_H */ + diff --git a/vendor/dyncall/win64/include/dyncall/dyncall_value.h b/vendor/dyncall/win64/include/dyncall/dyncall_value.h new file mode 100644 index 000000000..6a4cd8631 --- /dev/null +++ b/vendor/dyncall/win64/include/dyncall/dyncall_value.h @@ -0,0 +1,98 @@ +/* + + Package: dyncall + Library: dyncall + File: dyncall/dyncall_value.h + Description: Value variant type + License: + + Copyright (c) 2007-2018 Daniel Adler <dadler@uni-goettingen.de>, + Tassilo Philipp <tphilipp@potion-studios.com> + + Permission to use, copy, modify, and distribute this software for any + purpose with or without fee is hereby granted, provided that the above + copyright notice and this permission notice appear in all copies. + + THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES + WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF + MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR + ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES + WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN + ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF + OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. + +*/ + + +/* + + dyncall value variant + + a value variant union-type that carries all supported dyncall types. + + REVISION + 2007/12/11 initial + +*/ + +#ifndef DYNCALL_VALUE_H +#define DYNCALL_VALUE_H + +#include "dyncall_types.h" + +#ifdef __cplusplus +extern "C" { +#endif + +typedef union DCValue_ DCValue; + +union DCValue_ +{ +/* dyncallback assembly pulls value directly from DCValue structs, without */ +/* knowledge about types used, so lay it out as needed at compile time, here */ +#if defined(DC__Endian_BIG) && (defined(DC__Arch_PPC32) || defined(DC__Arch_MIPS) || defined(DC__Arch_Sparc)) + DCbool B; + struct { DCchar c_pad[3]; DCchar c; }; + struct { DCuchar C_pad[3]; DCuchar C; }; + struct { DCshort s_pad; DCshort s; }; + struct { DCshort S_pad; DCshort S; }; + DCint i; + DCuint I; +#elif defined(DC__Endian_BIG) && (defined(DC__Arch_PPC64) || defined(DC__Arch_MIPS64) || defined(DC__Arch_Sparc64)) + struct { DCbool B_pad; DCbool B; }; + struct { DCchar c_pad[7]; DCchar c; }; + struct { DCuchar C_pad[7]; DCuchar C; }; + struct { DCshort s_pad[3]; DCshort s; }; + struct { DCshort S_pad[3]; DCshort S; }; + struct { DCint i_pad; DCint i; }; + struct { DCint I_pad; DCuint I; }; +#else + DCbool B; + DCchar c; + DCuchar C; + DCshort s; + DCushort S; + DCint i; + DCuint I; +#endif + DClong j; + DCulong J; + DClonglong l; + DCulonglong L; +/* floats on mips are right justified in fp-registers on big endian targets, as they aren't promoted */ +#if defined(DC__Endian_BIG) && (defined(DC__Arch_MIPS) || defined(DC__Arch_MIPS64)) + struct { DCfloat f_pad; DCfloat f; }; +#else + DCfloat f; +#endif + DCdouble d; + DCpointer p; + DCstring Z; +}; + +#ifdef __cplusplus +} +#endif + +#endif /* DYNCALL_VALUE_H */ + diff --git a/vendor/dyncall/win64/include/dyncall/dyncall_vector.h b/vendor/dyncall/win64/include/dyncall/dyncall_vector.h new file mode 100644 index 000000000..a857123bf --- /dev/null +++ b/vendor/dyncall/win64/include/dyncall/dyncall_vector.h @@ -0,0 +1,58 @@ +/* + + Package: dyncall + Library: dyncall + File: dyncall/dyncall_vector.h + Description: Simple dynamic vector container type header + License: + + Copyright (c) 2007-2018 Daniel Adler <dadler@uni-goettingen.de>, + Tassilo Philipp <tphilipp@potion-studios.com> + + Permission to use, copy, modify, and distribute this software for any + purpose with or without fee is hereby granted, provided that the above + copyright notice and this permission notice appear in all copies. + + THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES + WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF + MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR + ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES + WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN + ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF + OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. + +*/ + + + +#ifndef DC_VECTOR_H +#define DC_VECTOR_H + +#include "dyncall_types.h" + +typedef struct +{ + DCsize mTotal; + DCsize mSize; +} DCVecHead; + +#define DC_SIZEOF_DCVector(size) (sizeof(DCVecHead)+size) + +#define dcVecInit(p,size) (p)->mTotal=size;(p)->mSize=0 +#define dcVecReset(p) (p)->mSize=0 +#define dcVecResize(p,size) (p)->mSize=(size) +#define dcVecSkip(p,size) (p)->mSize+=(size) +#define dcVecData(p) ( (unsigned char*) (((DCVecHead*)(p))+1) ) +#define dcVecAt(p,index) ( dcVecData(p)+index ) +#define dcVecSize(p) ( (p)->mSize ) +#define dcVecAlign(p,align) (p)->mSize=( (p)->mSize + align-1 ) & -align + +/* +#include <string.h> + #define dcVecAppend(p,s,n) memcpy( dcVecData(p)+p->mSize, s, n );p->mSize+=n +*/ + +void dcVecAppend(DCVecHead* pHead, const void* source, size_t length); + +#endif /* DC_VECTOR_H */ + diff --git a/vendor/dyncall/win64/lib/dyncall_s.lib b/vendor/dyncall/win64/lib/dyncall_s.lib new file mode 100644 index 0000000000000000000000000000000000000000..737f03c2c04f3b6dd3f4b923da16a6b9dd0e0719 GIT binary patch literal 35054 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 literal 0 HcmV?d00001 diff --git a/vendor/dynohook/linuxsteamrt64/include/dynohook/convention.h b/vendor/dynohook/linuxsteamrt64/include/dynohook/convention.h new file mode 100644 index 000000000..52730f413 --- /dev/null +++ b/vendor/dynohook/linuxsteamrt64/include/dynohook/convention.h @@ -0,0 +1,242 @@ +#pragma once + +#include "registers.h" +#include <memory> + +namespace dyno { + enum class DataType : uint8_t { + Void, + Bool, + Int8, + UInt8, + Int16, + UInt16, + Int32, + UInt32, + Int64, + UInt64, + Float, + Double, + Pointer, + String, // char* (null-terminated) + WString, // wchar_t* (null-terminated) + M128, + M256, + M512, + Object + }; + + struct DataObject { + DataType type; + RegisterType reg; + uint16_t size; + + DataObject(DataType type, RegisterType reg = NONE, uint16_t size = 0) : type{type}, reg{reg}, size{size} {} + + bool isFlt() const { return type == DataType::Float || type == DataType::Double; } + bool isVec() const { return type == DataType::M128 || type == DataType::M256 || type == DataType::M512; } + }; + + /** + * @brief This is the base class for every calling convention. + * + * Inherit from this class to create your own calling convention. + */ + class DYNO_API ICallingConvention { + public: + /** + * @brief Initializes the calling convention. + * @param arguments A list of DataType_t objects, which define the arguments of the function. + * @param returnType The return type of the function. + * @param alignment + */ + ICallingConvention(std::vector<DataObject> arguments, DataObject returnType, size_t alignment); + virtual ~ICallingConvention() = default; + DYNO_NONCOPYABLE(ICallingConvention); + + /** + * @brief This should return a list of RegisterType values. These registers will be saved for later access. + * @return + */ + virtual regs_t getRegisters() = 0; + + /** + * Returns a pointer to the memory at the stack. + * @param registers A snapshot of all saved registers. + * @return + */ + virtual void** getStackArgumentPtr(const Registers& registers) = 0; + + /** + * @brief Returns a pointer to the argument at the given index. + * @param index The index of the argument. + * @param registers A snapshot of all saved registers. + * @return + */ + virtual void* getArgumentPtr(size_t index, const Registers& registers) = 0; + + /** + * @brief + * @param index The index of the argument. + * @param registers A snapshot of all saved registers. + * @param argumentPtr A pointer to the argument at the given index. + */ + virtual void onArgumentPtrChanged(size_t index, const Registers& registers, void* argumentPtr) = 0; + + /** + * @brief Returns a pointer to the return value. + * @param registers A snapshot of all saved registers. + * @return + */ + virtual void* getReturnPtr(const Registers& registers) = 0; + + /** + * + * @param registers A snapshot of all saved registers. + * @param returnPtr A pointer to the return value. + */ + virtual void onReturnPtrChanged(const Registers& registers, void* returnPtr) = 0; + + /** + * @brief Save the return value in a seperate buffer, so we can restore it after calling the original function. + * @param registers A snapshot of all saved registers. + */ + virtual void saveReturnValue(const Registers& registers); + + /** + * @brief + * @param registers A snapshot of all saved registers. + */ + virtual void restoreReturnValue(const Registers& registers); + + /** + * @brief Save the value of arguments in a seperate buffer for the post callback. + * Compiler optimizations might cause the registers or stack space to be reused + * and overwritten during function execution if the value isn't needed anymore + * at some point. This leads to different values in the post hook. + * @param registers A snapshot of all saved registers. + */ + virtual void saveCallArguments(const Registers& registers); + + /** + * @brief Restore the value of arguments from a seperate buffer for the call. + * @param registers A snapshot of all saved registers. + */ + virtual void restoreCallArguments(const Registers& registers); + + /** + * @brief Returns the number of bytes that should be added to the stack to clean up. + * @return + */ + virtual size_t getPopSize() { + return 0; + } + + /** + * Returns the number of bytes for the buffer to store all the arguments that are passed in a stack in. + * @return + */ + virtual size_t getArgStackSize() const { + return m_stackSize; + } + + /** + * @brief Returns the number of bytes for the buffer to store all the arguments that are passed in a register in. + * @return + */ + virtual size_t getArgRegisterSize() const { + return m_registerSize; + } + + virtual const std::vector<DataObject>& getArguments() const { + return m_arguments; + } + + virtual DataObject getReturn() const { + return m_return; + } + + virtual size_t getAlignment() const { + return m_alignment; + } + + protected: + void init(); + + protected: + std::vector<DataObject> m_arguments; + DataObject m_return; + size_t m_alignment; + size_t m_stackSize; + size_t m_registerSize; + + // Save the return in case we call the original function and want to override the return again. + std::vector<std::unique_ptr<uint8_t[]>> m_savedReturnBuffers; + // Save call arguments in case the function reuses the space and overwrites the values for the post hook. + std::vector<std::unique_ptr<uint8_t[]>> m_savedCallArguments; + }; + + /** + * Returns the size after applying alignment. + * @param size The size that should be aligned. + * @param alignment The alignment that should be used. + * @return + */ + inline size_t Align(size_t size, size_t alignment) { + size_t unaligned = size % alignment; + if (unaligned == 0) + return size; + + return size + (alignment - unaligned); + } + + /** + * @brief Returns the size of a data type after applying alignment. + * @param type The data type you would like to get the size of. + * @param alignment The alignment that should be used. + * @return + */ + inline size_t getDataTypeSize(DataType type, size_t alignment) { + switch (type) { + case DataType::Void: + return 0; + case DataType::Bool: + return Align(sizeof(bool), alignment); + case DataType::Int8: + return Align(sizeof(std::int8_t), alignment); + case DataType::UInt8: + return Align(sizeof(uint8_t), alignment); + case DataType::Int16: + return Align(sizeof(std::int16_t), alignment); + case DataType::UInt16: + return Align(sizeof(uint16_t), alignment); + case DataType::Int32: + return Align(sizeof(std::int32_t), alignment); + case DataType::UInt32: + return Align(sizeof(uint32_t), alignment); + case DataType::Int64: + return Align(sizeof(std::int64_t), alignment); + case DataType::UInt64: + return Align(sizeof(uint64_t), alignment); + case DataType::Float: + return Align(sizeof(float), alignment); + case DataType::Double: + return Align(sizeof(double), alignment); + case DataType::Pointer: + return Align(sizeof(void*), alignment); + case DataType::String: + return Align(sizeof(char*), alignment); + case DataType::WString: + return Align(sizeof(wchar_t*), alignment); + case DataType::M128: + return Align(sizeof(float) * 4, alignment); + case DataType::M256: + return Align(sizeof(float) * 8, alignment); + case DataType::M512: + return Align(sizeof(float) * 16, alignment); + default: + puts("[Warning] - Convention - Unknown data type."); + } + return 0; + } +} \ No newline at end of file diff --git a/vendor/dynohook/linuxsteamrt64/include/dynohook/conventions/x64_systemV_call.h b/vendor/dynohook/linuxsteamrt64/include/dynohook/conventions/x64_systemV_call.h new file mode 100644 index 000000000..77adad493 --- /dev/null +++ b/vendor/dynohook/linuxsteamrt64/include/dynohook/conventions/x64_systemV_call.h @@ -0,0 +1,45 @@ +#pragma once + +#include <dynohook/convention.h> + +/* + Source: DynCall manual and System V docs + + Registers: + - rax = return value + - rdx = return value + - rsp = stack pointer + - [xyz]mm0 = floating point return value + - [xyz]mm1 = floating point return value + + Parameter passing: + - rdi, rsi, rdx, rcx, r8, r9, rest on the stack + - [xyz]mm0-[xyz]mm7 used for passing floating values + - stack parameter order: right-to-left + - caller cleans up the stack + - alignment: 8 bytes + + Return values: + - return values of pointer or intergral type (<= 64 bits) are returned via the rax register + - integers > 64 bits are returned via the rax and rdx registers + - floating pointer types are returned via the xmm0 and xmm1 register +*/ +namespace dyno { + class DYNO_API x64SystemVcall : public ICallingConvention { + public: + x64SystemVcall(std::vector<DataObject> arguments, DataObject returnType, size_t alignment = SIZE_QWORD); + ~x64SystemVcall() override; + + regs_t getRegisters() override; + void** getStackArgumentPtr(const Registers &registers) override; + + void* getArgumentPtr(size_t index, const Registers& registers) override; + void onArgumentPtrChanged(size_t index, const Registers& registers, void* argumentPtr) override; + + void* getReturnPtr(const Registers& registers) override; + void onReturnPtrChanged(const Registers& registers, void* returnPtr) override; + + private: + void* m_returnBuffer; + }; +} \ No newline at end of file diff --git a/vendor/dynohook/linuxsteamrt64/include/dynohook/conventions/x64_windows_call.h b/vendor/dynohook/linuxsteamrt64/include/dynohook/conventions/x64_windows_call.h new file mode 100644 index 000000000..a72e3b175 --- /dev/null +++ b/vendor/dynohook/linuxsteamrt64/include/dynohook/conventions/x64_windows_call.h @@ -0,0 +1,40 @@ +#pragma once + +#include <dynohook/convention.h> + +/* + Source: DynCall manual and Windows docs + + Registers: + - rax = return value + - rsp = stack pointer + - xmm0 = floating point return value + + Parameter passing: + - first parameter in rcx/xmm0, second parameter in rdx/xmm1, third parameter in r8/xmm2, forth parameter in r9/xmm3, rest on the stack + - stack parameter order: right-to-left + - caller cleans up the stack + - alignment: 8 bytes + - shadow space: 32 bytes (for arguments) + + Return values: + - return values of pointer or intergral type (<= 64 bits) are returned via the rax register + - integers > 64 bits are returned via the rax registers as pointers + - floating pointer types are returned via the xmm0 register +*/ +namespace dyno { + class DYNO_API x64WindowsCall : public ICallingConvention { + public: + x64WindowsCall(std::vector<DataObject> arguments, DataObject returnType, size_t alignment = SIZE_QWORD); + ~x64WindowsCall() override = default; + + regs_t getRegisters() override; + void** getStackArgumentPtr(const Registers &registers) override; + + void* getArgumentPtr(size_t index, const Registers& registers) override; + void onArgumentPtrChanged(size_t index, const Registers& registers, void* argumentPtr) override; + + void* getReturnPtr(const Registers& registers) override; + void onReturnPtrChanged(const Registers& registers, void* returnPtr) override; + }; +} \ No newline at end of file diff --git a/vendor/dynohook/linuxsteamrt64/include/dynohook/conventions/x86_gcc_cdecl.h b/vendor/dynohook/linuxsteamrt64/include/dynohook/conventions/x86_gcc_cdecl.h new file mode 100644 index 000000000..2af263382 --- /dev/null +++ b/vendor/dynohook/linuxsteamrt64/include/dynohook/conventions/x86_gcc_cdecl.h @@ -0,0 +1,7 @@ +#pragma once + +#include "x86_ms_cdecl.h" + +namespace dyno { + typedef x86MsCdecl x86GccCdecl; +} \ No newline at end of file diff --git a/vendor/dynohook/linuxsteamrt64/include/dynohook/conventions/x86_gcc_thiscall.h b/vendor/dynohook/linuxsteamrt64/include/dynohook/conventions/x86_gcc_thiscall.h new file mode 100644 index 000000000..90baa8ed1 --- /dev/null +++ b/vendor/dynohook/linuxsteamrt64/include/dynohook/conventions/x86_gcc_thiscall.h @@ -0,0 +1,8 @@ +#pragma once + +#include <dynohook/convention.h> +#include "x86_ms_cdecl.h" + +namespace dyno { + typedef x86MsCdecl x86GccThiscall; +} \ No newline at end of file diff --git a/vendor/dynohook/linuxsteamrt64/include/dynohook/conventions/x86_ms_cdecl.h b/vendor/dynohook/linuxsteamrt64/include/dynohook/conventions/x86_ms_cdecl.h new file mode 100644 index 000000000..42794b19f --- /dev/null +++ b/vendor/dynohook/linuxsteamrt64/include/dynohook/conventions/x86_ms_cdecl.h @@ -0,0 +1,43 @@ +#pragma once + +#include <dynohook/convention.h> + +/* + Source: DynCall manual and Windows docs + + Registers: + - eax = return value + - edx = return value + - esp = stack pointer + - st0 = floating point return value + + Parameter passing: + - stack parameter order: right-to-left + - caller cleans up the stack + - all arguments are pushed onto the stack + - alignment: 4 bytes + + Return values: + - return values of pointer or intergral type (<= 32 bits) are returned via the eax register + - integers > 32 bits are returned via the eax and edx registers + - floating pointer types are returned via the st0 register +*/ +namespace dyno { + class DYNO_API x86MsCdecl : public ICallingConvention { + public: + x86MsCdecl(std::vector<DataObject> arguments, DataObject returnType, size_t alignment = 4); + ~x86MsCdecl() override; + + regs_t getRegisters() override; + void** getStackArgumentPtr(const Registers& registers) override; + + void* getArgumentPtr(size_t index, const Registers& registers) override; + void onArgumentPtrChanged(size_t index, const Registers& registers, void* argumentPtr) override; + + void* getReturnPtr(const Registers& registers) override; + void onReturnPtrChanged(const Registers& registers, void* returnPtr) override; + + private: + void* m_returnBuffer; + }; +} \ No newline at end of file diff --git a/vendor/dynohook/linuxsteamrt64/include/dynohook/conventions/x86_ms_fastcall.h b/vendor/dynohook/linuxsteamrt64/include/dynohook/conventions/x86_ms_fastcall.h new file mode 100644 index 000000000..a8f8ab458 --- /dev/null +++ b/vendor/dynohook/linuxsteamrt64/include/dynohook/conventions/x86_ms_fastcall.h @@ -0,0 +1,32 @@ +#pragma once + +#include <dynohook/convention.h> +#include "x86_ms_stdcall.h" + +/* + Source: DynCall manual and Windows docs + + Registers: + - eax = return value + - edx = return value + - esp = stack pointer + - st0 = floating point return value + + Parameter passing: + - first parameter in ecx, second parameter in edx, rest on the stack + - stack parameter order: right-to-left + - callee cleans up the stack + - alignment: 4 bytes + + Return values: + - return values of pointer or intergral type (<= 32 bits) are returned via the eax register + - integers > 32 bits are returned via the eax and edx registers + - floating pointer types are returned via the st0 register +*/ +namespace dyno { + class DYNO_API x86MsFastcall : public x86MsStdcall { + public: + x86MsFastcall(std::vector<DataObject> arguments, DataObject returnType, size_t alignment = 4); + ~x86MsFastcall() override = default; + }; +} \ No newline at end of file diff --git a/vendor/dynohook/linuxsteamrt64/include/dynohook/conventions/x86_ms_stdcall.h b/vendor/dynohook/linuxsteamrt64/include/dynohook/conventions/x86_ms_stdcall.h new file mode 100644 index 000000000..0757463cc --- /dev/null +++ b/vendor/dynohook/linuxsteamrt64/include/dynohook/conventions/x86_ms_stdcall.h @@ -0,0 +1,34 @@ +#pragma once + +#include <dynohook/convention.h> +#include "x86_ms_cdecl.h" + +/* + Source: DynCall manual and Windows docs + + Registers: + - eax = return value + - edx = return value + - esp = stack pointer + - st0 = floating point return value + + Parameter passing: + - stack parameter order: right-to-left + - callee cleans up the stack + - all arguments are pushed onto the stack + - alignment: 4 bytes + + Return values: + - return values of pointer or intergral type (<= 32 bits) are returned via the eax register + - integers > 32 bits are returned via the eax and edx registers + - floating pointer types are returned via the st0 register +*/ +namespace dyno { + class DYNO_API x86MsStdcall : public x86MsCdecl { + public: + x86MsStdcall(std::vector<DataObject> arguments, DataObject returnType, size_t alignment = 4); + ~x86MsStdcall() override = default; + + size_t getPopSize() override; + }; +} \ No newline at end of file diff --git a/vendor/dynohook/linuxsteamrt64/include/dynohook/conventions/x86_ms_thiscall.h b/vendor/dynohook/linuxsteamrt64/include/dynohook/conventions/x86_ms_thiscall.h new file mode 100644 index 000000000..89918ddbc --- /dev/null +++ b/vendor/dynohook/linuxsteamrt64/include/dynohook/conventions/x86_ms_thiscall.h @@ -0,0 +1,33 @@ +#pragma once + +#include <dynohook/convention.h> +#include "x86_ms_stdcall.h" + +/* + Source: DynCall manual and Windows docs + + Registers: + - eax = return value + - ecx = this pointer + - edx = return value + - esp = stack pointer + - st0 = floating point return value + + Parameter passing: + - stack parameter order: right-to-left + - callee cleans up the stack + - all other arguments are pushed onto the stack + - alignment: 4 bytes + + Return values: + - return values of pointer or intergral type (<= 32 bits) are returned via the eax register + - integers > 32 bits are returned via the eax and edx registers + - floating pointer types are returned via the st0 register +*/ +namespace dyno { + class DYNO_API x86MsThiscall : public x86MsStdcall { + public: + x86MsThiscall(std::vector<DataObject> arguments, DataObject returnType, size_t alignment = 4); + ~x86MsThiscall() override = default; + }; +} \ No newline at end of file diff --git a/vendor/dynohook/linuxsteamrt64/include/dynohook/core.h b/vendor/dynohook/linuxsteamrt64/include/dynohook/core.h new file mode 100644 index 000000000..4188b9896 --- /dev/null +++ b/vendor/dynohook/linuxsteamrt64/include/dynohook/core.h @@ -0,0 +1,126 @@ +#pragma once + +#include "platform.h" +#include <iostream> +#include <iomanip> +#include <sstream> +#include <cassert> + +#include <dynohook_export.h> + +namespace dyno { + template<typename T> + std::string int_to_hex(T i) { + std::stringstream stream; + stream << "0x" << std::setfill('0') << std::setw(sizeof(T) * 2) << std::hex + << (uintptr_t) i; // We cast to the highest possible int because uint8_t will be printed as char + + return stream.str(); + } + + //http://stackoverflow.com/questions/4840410/how-to-align-a-pointer-in-c + static inline uintptr_t AlignUpwards(uintptr_t stack, size_t align) { + assert(align > 0 && (align & (align - 1)) == 0); /* Power of 2 */ + assert(stack != 0); + + auto addr = stack; + if (addr % align != 0) + addr += align - (addr % align); + assert(addr >= stack); + return addr; + } + + static inline uintptr_t AlignDownwards(uintptr_t stack, size_t align) { + assert(align > 0 && (align & (align - 1)) == 0); /* Power of 2 */ + assert(stack != 0); + + auto addr = stack; + addr -= addr % align; + assert(addr <= stack); + return addr; + } + + //Credit to Dogmatt on unknowncheats.me for IsValidPtr + // and https://docs.microsoft.com/en-us/windows-hardware/drivers/gettingstarted/virtual-address-spaces + #if DYNO_ARCH_X86 == 64 + #define VALID_MAX_MEMORY_ADDRESS ((void*)0x000F000000000000) + #else + #define VALID_MAX_MEMORY_ADDRESS ((void*)0xFFF00000) + #endif // DYNO_PLATFORM_WINDOWS + #define VALID_MIN_MEMORY_ADDRESS ((void*)0x10000) + + inline bool isValidPtr(void* p) { return (p >= VALID_MIN_MEMORY_ADDRESS) && (p < VALID_MAX_MEMORY_ADDRESS) && p != nullptr; } + + inline bool isMatch(const char* addr, const char* pat, const char* msk) { + size_t n = 0; + while (addr[n] == pat[n] || msk[n] == (uint8_t)'?') { + if (!msk[++n]) { + return true; + } + } + return false; + } + +#define INRANGE(x,a,b) (x >= a && x <= b) +#define getBits(x) (INRANGE(x,'0','9') ? (x - '0') : ((x&(~0x20)) - 'A' + 0xa)) +#define getByte(x) (getBits(x[0]) << 4 | getBits(x[1])) + + constexpr uint8_t FINDPATTERN_SCRATCH_SIZE = 64; + + // https://github.com/learn-more/findpattern-bench/blob/master/patterns/learn_more.h + // must use space between bytes and ?? for wildcards. Do not add 0x prefix + DYNO_API uintptr_t findPattern(uintptr_t rangeStart, size_t len, const char* pattern); + DYNO_API uintptr_t findPattern_rev(uintptr_t rangeStart, size_t len, const char* pattern); + DYNO_API uintptr_t getPatternSize(const char* pattern); + + DYNO_API bool boundedAllocSupported(); + DYNO_API uintptr_t boundAlloc(uintptr_t min, uintptr_t max, size_t size); + DYNO_API uintptr_t boundAllocLegacy(uintptr_t min, uintptr_t max, size_t size); + DYNO_API void boundAllocFree(uintptr_t address, size_t size); + DYNO_API size_t getAllocationAlignment(); + DYNO_API size_t getPageSize(); + +#if DYNO_ARCH_X86 == 64 + DYNO_API uint64_t calc_2gb_below(uint64_t address); + DYNO_API uint64_t calc_2gb_above(uint64_t address); +#endif // DYNO_ARCH_X86 + + // we cannot return a char array from a function, therefore we need a wrapper + template<size_t N> + struct String { + char c[N]; + }; + + template<size_t N, size_t L> + constexpr auto repeat_n(const char (&pattern)[L]) { + static_assert(N != 0, "Size is empty!"); + static_assert(L != 3, "Length is invalid!"); + constexpr auto length = L - 1; + constexpr auto size = N * length; + constexpr auto last = size - 1; + + String<size> result = {}; + for (size_t i = 0; i < last; i += length) { + for (size_t j = 0; j < length; j++) { + result.c[i + j] = pattern[j]; + } + } + result.c[last] = '\0'; + return result; + } + + template<size_t ...L> + constexpr auto concat(const char (&...strings)[L]) { + constexpr size_t N = (... + L) - sizeof...(L); + String<N + 1> result = {}; + result.c[N] = '\0'; + + char* dst = result.c; + for (const char* src : {strings...}) { + for (; *src != '\0'; src++, dst++) { + *dst = *src; + } + } + return result; + } +} \ No newline at end of file diff --git a/vendor/dynohook/linuxsteamrt64/include/dynohook/detours/detour.h b/vendor/dynohook/linuxsteamrt64/include/dynohook/detours/detour.h new file mode 100644 index 000000000..d6210fe8a --- /dev/null +++ b/vendor/dynohook/linuxsteamrt64/include/dynohook/detours/detour.h @@ -0,0 +1,150 @@ +#pragma once + +#include <dynohook/disassembler.h> +#include <dynohook/mem_accessor.h> +#include <dynohook/mem_protector.h> +#include <dynohook/instruction.h> +#include <dynohook/nat_hook.h> +#include <optional> +#include <cassert> + +namespace dyno { + class DYNO_API Detour : public NatHook { + public: + Detour(uintptr_t fnAddress, const ConvFunc& convention, Mode mode); + ~Detour() override; + + bool unhook() override; + + /** + This is for restoring hook bytes if a 3rd party uninstalled them. + DO NOT call this after unhook(). This may only be called after hook() + but before unhook() + **/ + bool rehook() override; + + HookMode getMode() const override { + return HookMode::Detour; + } + + virtual Mode getArchType() const = 0; + + uint8_t getMaxDepth() const; + + void setMaxDepth(uint8_t maxDepth); + + void setIsFollowCallOnFnAddress(bool value); + + const uintptr_t& getTarget() const override { + return m_fnAddress; + } + + const uintptr_t& getAddress() const override { + return m_trampoline; + } + + protected: + uintptr_t m_fnAddress; + ZydisDisassembler m_disasm; + uint8_t m_maxDepth{ 5 }; + bool m_isFollowCallOnFnAddress{ true }; // whether follow 'CALL' destination + uint16_t m_trampolineSz{ 0 }; + uintptr_t m_trampoline{ 0 }; + insts_t m_originalInsts; + + /* + * Save the instructions used for the hook so that we can re-write in rehook() + * Note: There's a nop range we store too so that it doesn't need to be re-calculated + */ + insts_t m_hookInsts; + uint16_t m_nopProlOffset{ 0 }; + uint16_t m_nopSize{ 0 }; + uint32_t m_hookSize{ 0 }; + + /** + * Walks the given vector of instructions and sets roundedSz to the lowest size possible that doesn't split any instructions and is greater than minSz. + * If end of function is encountered before this condition an empty optional is returned. Returns instructions in the range start to adjusted end + */ + static std::optional<insts_t> calcNearestSz(const insts_t& functionInsts, uintptr_t minSz, uintptr_t& roundedSz); + + /** + * If function starts with a jump follow it until the first non-jump instruction, recursively. This handles already hooked functions + * and also compilers that emit jump tables on function call. Returns true if resolution was successful (nothing to resolve, or resolution worked), + * false if resolution failed. + */ + bool followJmp(insts_t& functionInsts, uint8_t curDepth = 0); + + /** + * Expand the prologue up to the address of the last jmp that points back into the prologue. This + * is necessary because we modify the location of things in the prologue, so re-entrant jmps point + * to the wrong place. Therefore we move all of it to the trampoline where there is ample space to + * relocate and create jmp tbl entries + */ + bool expandProlSelfJmps(insts_t& prol, + const insts_t& func, + uintptr_t& minProlSz, + uintptr_t& roundProlSz + ); + + /** + * Insert nops from [Base, Base+size). + * Generates as many nop instructions as necessary to fill the give size. + * This function ensures that generated nops won't be reused as a code cave by Polyhook. + * Hence, it will never emit more than 8 0x90 single byte nops in a row. + */ + insts_t make_nops(uintptr_t address, uint16_t size) const; + + static void buildRelocationList( + insts_t& prologue, + uintptr_t roundProlSz, + intptr_t delta, + insts_t& instsNeedingEntry, + insts_t& instsNeedingReloc, + insts_t& instsNeedingTranslation + ); + + /** + * Corrects displacement for IP-relative instructions + * @return Jump table entries + */ + template<typename MakeJmpFn> + insts_t relocateTrampoline( + insts_t& prologue, + uintptr_t jmpTblStart, + const intptr_t delta, + MakeJmpFn makeJmp, + const insts_t& instsNeedingReloc, + const insts_t& instsNeedingEntry + ) { + uintptr_t jmpTblCurAddr = jmpTblStart; + insts_t jmpTblEntries; + + // MIGHT NEED TO REDO ALL THIS JUMP TABLE STUFF IT's CONFUSING - needlessly + for (auto& inst: prologue) { + + if (std::find(instsNeedingEntry.begin(), instsNeedingEntry.end(), inst) != instsNeedingEntry.end()) { + assert(inst.hasDisplacement()); + // make an entry pointing to where inst did point to + auto entry = makeJmp(jmpTblCurAddr, inst); + + // Move to next entry, some jmp types can emit more than one instruction + jmpTblCurAddr += calcInstsSz(entry); + + writeEncoding(entry); + jmpTblEntries.insert(jmpTblEntries.end(), entry.begin(), entry.end()); + } else if (std::find(instsNeedingReloc.begin(), instsNeedingReloc.end(), inst) != instsNeedingReloc.end()) { + assert(inst.hasDisplacement()); + + const uintptr_t instsOldDest = inst.getDestination(); + inst.setAddress(inst.getAddress() + delta); + inst.setDestination(instsOldDest); + } else { + inst.setAddress(inst.getAddress() + delta); + } + + writeEncoding(inst); + } + return jmpTblEntries; + } + }; +} \ No newline at end of file diff --git a/vendor/dynohook/linuxsteamrt64/include/dynohook/detours/nat_detour.h b/vendor/dynohook/linuxsteamrt64/include/dynohook/detours/nat_detour.h new file mode 100644 index 000000000..82cc28d1c --- /dev/null +++ b/vendor/dynohook/linuxsteamrt64/include/dynohook/detours/nat_detour.h @@ -0,0 +1,15 @@ +#pragma once + +#if DYNO_ARCH_X86 == 32 +#include <dynohook/detours/x86_detour.h> +#elif DYNO_ARCH_X86 == 64 +#include <dynohook/detours/x64_detour.h> +#endif + +namespace dyno { +#if DYNO_ARCH_X86 == 32 + using NatDetour = x86Detour; +#elif DYNO_ARCH_X86 == 64 + using NatDetour = x64Detour; +#endif +} \ No newline at end of file diff --git a/vendor/dynohook/linuxsteamrt64/include/dynohook/detours/x64_detour.h b/vendor/dynohook/linuxsteamrt64/include/dynohook/detours/x64_detour.h new file mode 100644 index 000000000..96ea5f5d9 --- /dev/null +++ b/vendor/dynohook/linuxsteamrt64/include/dynohook/detours/x64_detour.h @@ -0,0 +1,56 @@ +#pragma once + +#include <dynohook/detours/detour.h> +#include <dynohook/range_allocator.h> + +namespace dyno { + class DYNO_API x64Detour final : public Detour { + public: + enum detour_scheme_t : uint8_t { + VALLOC2 = 1 << 0, // use virtualalloc2 to allocate in range. Only on win10 > 1803 + INPLACE = 1 << 1, // use push-ret for fnCallback in-place storage. + CODE_CAVE = 1 << 2, //searching for code-cave to keep fnCallback. + INPLACE_SHORT = 1 << 3, // spoils rax register + RECOMMENDED = VALLOC2 | INPLACE | CODE_CAVE, + // first try to allocate, then fallback to code cave if not supported. + // will not fallback on failure of allocation + ALL = RECOMMENDED | INPLACE_SHORT, + }; + + x64Detour(uintptr_t fnAddress, const ConvFunc& convention); + ~x64Detour() override; + + bool hook() override; + bool unhook() override; + + Mode getArchType() const override; + + static uint8_t getMinJmpSize(); + + detour_scheme_t getDetourScheme() const; + + void setDetourScheme(detour_scheme_t scheme); + + static const char* printDetourScheme(detour_scheme_t scheme); + + protected: + RangeAllocator m_allocator; + std::optional<uintptr_t> m_valloc2_region; + + detour_scheme_t m_chosenScheme{ detour_scheme_t::VALLOC2 }; + detour_scheme_t m_detourScheme{ detour_scheme_t::RECOMMENDED }; // this is the most stable configuration. + + bool makeTrampoline(insts_t& prologue, insts_t& outJmpTable); + + // assumes we are looking within a +-2GB window + template<uint16_t SIZE> + std::optional<uintptr_t> findNearestCodeCave(uintptr_t address); + + Instruction makeRelJmpWithAbsDest(uintptr_t address, uintptr_t abs_destination); + std::optional<uintptr_t> generateTranslationRoutine(const Instruction& instruction, uintptr_t resume_address); + + bool makeInplaceTrampoline(uintptr_t base_address, const std::function<void(asmjit::x86::Assembler&)>& builder); + + bool allocateJumpToBridge(); + }; +} \ No newline at end of file diff --git a/vendor/dynohook/linuxsteamrt64/include/dynohook/detours/x86_detour.h b/vendor/dynohook/linuxsteamrt64/include/dynohook/detours/x86_detour.h new file mode 100644 index 000000000..b4d474930 --- /dev/null +++ b/vendor/dynohook/linuxsteamrt64/include/dynohook/detours/x86_detour.h @@ -0,0 +1,18 @@ +#pragma once + +#include <dynohook/detours/detour.h> + +namespace dyno { + class DYNO_API x86Detour final : public Detour { + public: + x86Detour(uintptr_t fnAddress, const ConvFunc& convention); + ~x86Detour() override = default; + + virtual bool hook() override; + + Mode getArchType() const override; + + protected: + bool makeTrampoline(insts_t& prologue, insts_t& trampolineOut); + }; +} \ No newline at end of file diff --git a/vendor/dynohook/linuxsteamrt64/include/dynohook/disassembler.h b/vendor/dynohook/linuxsteamrt64/include/dynohook/disassembler.h new file mode 100644 index 000000000..b5128c61c --- /dev/null +++ b/vendor/dynohook/linuxsteamrt64/include/dynohook/disassembler.h @@ -0,0 +1,60 @@ +#pragma once + +#include "instruction.h" +#include "mem_accessor.h" +#include <unordered_map> +#include <dynohook_export.h> + +extern "C" { + typedef struct ZydisDecoder_ ZydisDecoder; + typedef struct ZydisFormatter_ ZydisFormatter; + typedef struct ZydisDecodedOperand_ ZydisDecodedOperand; + typedef struct ZydisDecodedInstruction_ ZydisDecodedInstruction; +} + +namespace dyno { + typedef std::unordered_map<uintptr_t, insts_t> branch_map_t; + + class DYNO_API ZydisDisassembler { + public: + explicit ZydisDisassembler(Mode mode); + virtual ~ZydisDisassembler(); + + insts_t disassemble(uintptr_t firstInstruction, uintptr_t start, uintptr_t end, const MemAccessor& accessor); + + static bool isConditionalJump(const Instruction& instruction); + + static bool isFuncEnd(const Instruction& instruction, bool firstFunc = false); + + static bool isPadBytes(const Instruction& instruction) { + // supports multi-byte nops + return instruction.getMnemonic() == "nop"; + } + + void addToBranchMap(insts_t& insVec, const Instruction& inst); + + const branch_map_t& getBranchMap() const { + return m_branchMap; + } + + Mode getMode() const { + return m_mode; + } + + protected: + bool getOpStr(ZydisDecodedInstruction* pInstruction, const ZydisDecodedOperand* decoded_operands, uintptr_t addr, std::string* pOpStrOut); + static void setDisplacementFields(Instruction& inst, const ZydisDecodedInstruction* zydisInst, const ZydisDecodedOperand* operands) ; + typename branch_map_t::mapped_type& updateBranchMap(uintptr_t key, const Instruction& new_val); + + // we use a void pointer here since we don't want forward declare the ZydisDecoder + ZydisDecoder* m_decoder; + ZydisFormatter* m_formatter; + + Mode m_mode; + + /* key = address of instruction pointed at (dest of jump). Value = set of unique instruction branching to dest + Must only hold entries from the last segment disassembled. I.E clear every new call to disassemble + */ + branch_map_t m_branchMap; + }; +} \ No newline at end of file diff --git a/vendor/dynohook/linuxsteamrt64/include/dynohook/dynohook_export.h b/vendor/dynohook/linuxsteamrt64/include/dynohook/dynohook_export.h new file mode 100644 index 000000000..268a94425 --- /dev/null +++ b/vendor/dynohook/linuxsteamrt64/include/dynohook/dynohook_export.h @@ -0,0 +1,42 @@ + +#ifndef DYNO_API_H +#define DYNO_API_H + +#ifdef DYNO_STATIC +# define DYNO_API +# define DYNO_PRIVATE +#else +# ifndef DYNO_API +# ifdef dynohook_EXPORTS + /* We are building this library */ +# define DYNO_API +# else + /* We are using this library */ +# define DYNO_API +# endif +# endif + +# ifndef DYNO_PRIVATE +# define DYNO_PRIVATE +# endif +#endif + +#ifndef DYNO_DEPRECATED +# define DYNO_DEPRECATED __attribute__ ((__deprecated__)) +#endif + +#ifndef DYNO_DEPRECATED_EXPORT +# define DYNO_DEPRECATED_EXPORT DYNO_API DYNO_DEPRECATED +#endif + +#ifndef DYNO_DEPRECATED_NO_EXPORT +# define DYNO_DEPRECATED_NO_EXPORT DYNO_PRIVATE DYNO_DEPRECATED +#endif + +#if 0 /* DEFINE_NO_DEPRECATED */ +# ifndef DYNO_NO_DEPRECATED +# define DYNO_NO_DEPRECATED +# endif +#endif + +#endif /* DYNO_API_H */ diff --git a/vendor/dynohook/linuxsteamrt64/include/dynohook/fb_allocator.h b/vendor/dynohook/linuxsteamrt64/include/dynohook/fb_allocator.h new file mode 100644 index 000000000..7b1e66670 --- /dev/null +++ b/vendor/dynohook/linuxsteamrt64/include/dynohook/fb_allocator.h @@ -0,0 +1,87 @@ +// https://www.codeproject.com/Articles/1272619/A-Fixed-Block-Memory-Allocator-in-C +// +// The fb_allocator is a fixed block memory allocator that handles a +// single block size. +// +#pragma once + +#include "mem_accessor.h" + +typedef void* ALLOC_HANDLE; + +typedef struct { + void* pNext; +} ALLOC_Block; + +typedef struct { + const char* name; + const char* pPool; + const size_t objectSize; + const size_t blockSize; + const uint32_t maxBlocks; + ALLOC_Block* pHead; + uint16_t poolIndex; + uint16_t blocksInUse; + uint16_t maxBlocksInUse; + uint16_t allocations; + uint16_t deallocations; +} ALLOC_Allocator; + +// Align fixed blocks on X-byte boundary based on CPU architecture. +// Set value to 1, 2, 4 or 8. +#define ALLOC_MEM_ALIGN (1) + +// Get the maximum between a or b +#define ALLOC_MAX(a,b) (((a)>(b))?(a):(b)) + +// Ensure the memory block size is: (a) is aligned on desired boundary and (b) at +// least the size of a ALLOC_Allocator*. +#define ALLOC_BLOCK_SIZE(_size_) \ + (ALLOC_MAX((MEMORY_ROUND_UP(_size_, ALLOC_MEM_ALIGN)), sizeof(ALLOC_Allocator*))) + +// Defines block memory, allocator instance and a handle. On the example below, +// the ALLOC_Allocator instance is myAllocatorObj and the handle is myAllocator. +// _name_ - the allocator name +// _size_ - fixed memory block size in bytes +// _objects_ - number of fixed memory blocks +// e.g. ALLOC_DEFINE(myAllocator, 32, 10) +#define ALLOC_DEFINE(_name_, _size_, _objects_) \ + static char _name_##Memory[ALLOC_BLOCK_SIZE(_size_) * (_objects_)] = { 0 }; \ + static ALLOC_Allocator _name_##Obj = { #_name_, _name_##Memory, _size_, \ + ALLOC_BLOCK_SIZE(_size_), _objects_, NULL, 0, 0, 0, 0, 0 }; \ + static ALLOC_HANDLE _name_ = &_name_##Obj; + +namespace dyno { + // wrapper over fb_allocator in C, with heap backing from VirtualAlloc2 to enforce range + class DYNO_API FBAllocator final { + public: + FBAllocator(uintptr_t min, uintptr_t max, uint8_t blockSize, uint8_t blockCount); + ~FBAllocator(); + + bool initialize(); + + char* allocate(); + + char* callocate(uint8_t num); + + void deallocate(char* mem); + + bool inRange(uintptr_t addr) const; + + bool intersectsRange(uintptr_t min, uintptr_t max) const; + + // if a range intersections, by what % of the given range is the overlap + uint8_t intersectionLoadFactor(uintptr_t min, uintptr_t max) const; + + private: + bool m_alloc2Supported; + uint8_t m_usedBlocks; + uint8_t m_maxBlocks; + uint8_t m_blockSize; + uintptr_t m_min; + uintptr_t m_max; + uintptr_t m_dataPool; + + std::unique_ptr<ALLOC_Allocator> m_allocator; + }; +} diff --git a/vendor/dynohook/linuxsteamrt64/include/dynohook/function_traits.h b/vendor/dynohook/linuxsteamrt64/include/dynohook/function_traits.h new file mode 100644 index 000000000..d0fe41e62 --- /dev/null +++ b/vendor/dynohook/linuxsteamrt64/include/dynohook/function_traits.h @@ -0,0 +1,100 @@ +#pragma once + +#include "convention.h" +#include <type_traits> + +namespace dyno { + template<typename T> + constexpr DataType GetType() { + if constexpr (std::is_same_v<T, void>) return DataType::Void; + else if constexpr (std::is_same_v<T, bool>) return DataType::Bool; + else if constexpr (std::is_same_v<T, int8_t>) return DataType::Int8; + else if constexpr (std::is_same_v<T, uint8_t>) return DataType::UInt8; + else if constexpr (std::is_same_v<T, int16_t>) return DataType::Int16; + else if constexpr (std::is_same_v<T, uint16_t>) return DataType::UInt16; + else if constexpr (std::is_same_v<T, int32_t>) return DataType::Int32; + else if constexpr (std::is_same_v<T, uint32_t>) return DataType::UInt32; + else if constexpr (std::is_same_v<T, int64_t>) return DataType::Int64; + else if constexpr (std::is_same_v<T, uint64_t> || std::is_same_v<T, unsigned long>) return DataType::UInt64; + else if constexpr (std::is_same_v<T, float>) return DataType::Float; + else if constexpr (std::is_same_v<T, double>) return DataType::Double; + else if constexpr (std::is_same_v<T, const char*>) return DataType::String; + else if constexpr (std::is_same_v<T, const wchar_t*>) return DataType:: WString; + else if constexpr (std::is_pointer<T>::value || std::is_reference_v<T>) return DataType::Pointer; + else { + if (sizeof(T) > sizeof(uint64_t)) { + return DataType::Pointer; + } else if constexpr (sizeof(T) > sizeof(uint32_t)) { + return DataType::UInt64; + } else if constexpr (sizeof(T) > sizeof(uint16_t)) { + return DataType::UInt32; + } else if constexpr (sizeof(T) > sizeof(uint8_t)) { + return DataType::UInt16; + } else if constexpr (sizeof(T) > sizeof(bool)) { + return DataType::UInt8; + } + return DataType::Bool; + } + } + + template<typename Function> + struct function_traits; + + template<typename Ret, typename... Args> + struct function_traits<Ret(*)(Args...)> { + static constexpr size_t arity = sizeof...(Args); + + static std::array<DataObject, arity> args() { + return { GetType<Args>() ...}; + } + + static DataObject ret() { + return GetType<Ret>(); + } + }; + + template<typename Class, typename Ret, typename... Args> + struct function_traits<Ret(Class::*)(Args...)> { + static constexpr size_t arity = sizeof...(Args); + + static std::array<DataObject, arity + 1> args() { + std::array<DataObject, arity> originalArgs = { GetType<Args>() ... }; + std::array<DataObject, arity + 1> result; + result[0] = DataType::Pointer; + std::copy(originalArgs.begin(), originalArgs.end(), result.begin() + 1); + return result; + } + + static DataObject ret() { + return GetType<Ret>(); + } + }; + + template <typename Class, typename Ret, typename... Args> + class function_traits<Ret (Class::*)(Args...) const> : public function_traits<Ret (Class::*)(Args...)> {}; + template <typename Class, typename Ret, typename... Args> + class function_traits<Ret (Class::*)(Args...) volatile> : public function_traits<Ret (Class::*)(Args...)> {}; + template <typename Class, typename Ret, typename... Args> + class function_traits<Ret (Class::*)(Args...) const volatile> : public function_traits<Ret (Class::*)(Args...)> {}; + + + template<typename Ret, typename... Args> + struct function_traits<Ret(Args...)> { + static constexpr size_t arity = sizeof...(Args); + + static std::array<DataObject, arity> args() { + return { GetType<Args>() ...}; + } + + static DataObject ret() { + return GetType<Ret>(); + } + }; + + template<class Ret, class... ArgTypes> + class function_traits<Ret(ArgTypes...) const> : public function_traits<Ret(ArgTypes...)> {}; + template<class Ret, class... ArgTypes> + class function_traits<Ret(ArgTypes...) volatile> : public function_traits<Ret(ArgTypes...)> {}; + template<class Ret, class... ArgTypes> + class function_traits<Ret(ArgTypes...) const volatile> : public function_traits<Ret(ArgTypes...)> {}; +} \ No newline at end of file diff --git a/vendor/dynohook/linuxsteamrt64/include/dynohook/helpers.h b/vendor/dynohook/linuxsteamrt64/include/dynohook/helpers.h new file mode 100644 index 000000000..7af78504a --- /dev/null +++ b/vendor/dynohook/linuxsteamrt64/include/dynohook/helpers.h @@ -0,0 +1,17 @@ +#pragma once + +#define DYNO_NONCOPYABLE(x) \ + x(const x&) = delete; \ + x(x&&) = delete; \ + x& operator=(const x&) = delete; \ + x& operator=(x&&) = delete; + +#define DYNO_ITERATABLE(t, o) \ + std::vector<t>::iterator begin() { return o.begin(); } \ + std::vector<t>::iterator end() { return o.end(); } \ + std::vector<t>::reverse_iterator rbegin() { return o.rbegin(); } \ + std::vector<t>::reverse_iterator rend() { return o.rend(); } \ + std::vector<t>::const_iterator begin() const { return o.begin(); } \ + std::vector<t>::const_iterator end() const { return o.end(); } \ + std::vector<t>::const_reverse_iterator rbegin() const { return o.rbegin(); } \ + std::vector<t>::const_reverse_iterator rend() const { return o.rend(); } diff --git a/vendor/dynohook/linuxsteamrt64/include/dynohook/hook.h b/vendor/dynohook/linuxsteamrt64/include/dynohook/hook.h new file mode 100644 index 000000000..d0ce8a411 --- /dev/null +++ b/vendor/dynohook/linuxsteamrt64/include/dynohook/hook.h @@ -0,0 +1,100 @@ +#pragma once + +#include "mem_accessor.h" +#include "ihook.h" +#include "platform.h" + +#include <asmjit/asmjit.h> +#include <mutex> + +namespace dyno { + /** + * Creates and manages hooks at the beginning of a function. + * This hooking method requires knowledge of parameters and calling convention of the target function. + */ + class DYNO_API Hook : public MemAccessor, public IHook { + public: + explicit Hook(const ConvFunc& convention); + ~Hook() override = default; + DYNO_NONCOPYABLE(Hook) + + bool addCallback(CallbackType type, CallbackHandler handler) override; + bool removeCallback(CallbackType type, CallbackHandler handler) override; + bool isCallbackRegistered(CallbackType type, CallbackHandler handler) const override; + bool areCallbacksRegistered() const override; + + bool rehook() override { + return true; + } + + bool setHooked(bool state) override { + if (m_hooked == state) + return true; + + return state ? hook() : unhook(); + } + + bool isHooked() const override { + return m_hooked; + } + + const uintptr_t& getBridge() const { + return m_fnBridge; + } + + protected: + virtual bool createBridge() = 0; + virtual bool createPostCallback() = 0; + + ICallingConvention& getCallingConvention() override { + return *m_callingConvention; + } + Registers& getRegisters() override { + return m_registers; + } + + typedef asmjit::x86::Assembler Assembler; + + virtual void writeModifyReturnAddress(Assembler& a) = 0; + virtual void writeCallHandler(Assembler& a, CallbackType type) const = 0; + virtual int32_t writeSaveScratchRegisters(Assembler& a) const = 0; + virtual void writeRestoreScratchRegisters(Assembler& a) const = 0; + virtual void writeSaveRegisters(Assembler& a, bool post) const = 0; + virtual void writeRestoreRegisters(Assembler& a, bool post) const = 0; + virtual void writeRegToMem(Assembler& a, const Register& reg, [[maybe_unused]] bool post) const = 0; + virtual void writeMemToReg(Assembler& a, const Register& reg, [[maybe_unused]] bool post) const = 0; + +DYNO_OPTS_OFF + DYNO_NOINLINE ReturnAction DYNO_CDECL callbackHandler(CallbackType type); + DYNO_NOINLINE void* DYNO_CDECL getReturnAddress(void* stackPtr); + DYNO_NOINLINE void DYNO_CDECL setReturnAddress(void* retAddr, void* stackPtr); +DYNO_OPTS_ON + + protected: + asmjit::JitRuntime m_asmjit_rt; + std::mutex m_mutex; + + // address storage + uintptr_t m_fnBridge{ 0 }; + uintptr_t m_newRetAddr{ 0 }; + size_t m_fnBridgeSize{ 0 }; + size_t m_newRetAddrSize{ 0 }; + + // interface if the calling convention + std::unique_ptr<ICallingConvention> m_callingConvention; + + // register storage + Registers m_registers; + + // save the last return action of the pre callbackHander for use in the post handler. + std::vector<ReturnAction> m_lastPreReturnAction; + + // individual return's stack for stack pointers + std::unordered_map<void*, std::vector<void*>> m_retAddr; + + // callbacks list + std::unordered_map<CallbackType, std::vector<CallbackHandler>> m_handlers; + + bool m_hooked{ false }; + }; +} \ No newline at end of file diff --git a/vendor/dynohook/linuxsteamrt64/include/dynohook/ihook.h b/vendor/dynohook/linuxsteamrt64/include/dynohook/ihook.h new file mode 100644 index 000000000..346539fa6 --- /dev/null +++ b/vendor/dynohook/linuxsteamrt64/include/dynohook/ihook.h @@ -0,0 +1,108 @@ +#pragma once + +#include "convention.h" +#include "registers.h" +#include <functional> +#include <dynohook_export.h> + +namespace dyno { + enum class HookMode : uint8_t { + UNKNOWN, + Detour, + VEHHOOK, + VTableSwap, + IAT, + EAT + }; + + enum class CallbackType : bool { + Pre, // callback will be executed before the original function + Post // callback will be executed after the original function + }; + + enum class ReturnAction : int32_t { + Ignored, // handler didn't take any action + Handled, // we did something, but real function should still be called + Override, // call real function, but use my return value + Supercede // skip real function; use my return value + }; + + class IHook; + using CallbackHandler = ReturnAction (*)(CallbackType, IHook&); + using ConvFunc = std::function<ICallingConvention*()>; + + /** + * @brief Creates and manages hooks at the beginning of a function. + * + * This hooking method requires knowledge of parameters and calling convention of the target function. + */ + class DYNO_API IHook { + public: + /** + * @brief Adds a callback handler to the hook. + * @param type The callback type. + * @param handler The callback handler that should be added. + * @return True on success, false otherwise. + */ + virtual bool addCallback(CallbackType type, CallbackHandler handler) = 0; + + /** + * @brief Removes a callback handler to the hook. + * @param type The callback type. + * @param handler The callback handler that should be removed. + * @return True on success, false otherwise. + */ + virtual bool removeCallback(CallbackType type, CallbackHandler handler) = 0; + + /** + * @brief Checks if a callback handler is already added. + * @param type The callback type. + * @param handler The callback handler that should be checked. + * @return True on success, false otherwise. + */ + virtual bool isCallbackRegistered(CallbackType type, CallbackHandler handler) const = 0; + + /** + * @brief Checks if there are any callback handlers added to this hook. + * @return True on success, false otherwise. + */ + virtual bool areCallbacksRegistered() const = 0; + + template<class T> + T getArgument(size_t index) { + return *(T*) getCallingConvention().getArgumentPtr(index, getRegisters()); + } + + template<class T> + void setArgument(size_t index, T value) { + void* argumentPtr = getCallingConvention().getArgumentPtr(index, getRegisters()); + *(T*) argumentPtr = value; + getCallingConvention().onArgumentPtrChanged(index, getRegisters(), argumentPtr); + } + + template<class T> + T getReturn() { + return *(T*) getCallingConvention().getReturnPtr(getRegisters()); + } + + template<class T> + void setReturn(T value) { + void* returnPtr = getCallingConvention().getReturnPtr(getRegisters()); + *(T*) returnPtr = value; + getCallingConvention().onReturnPtrChanged(getRegisters(), returnPtr); + } + + virtual bool hook() = 0; + virtual bool unhook() = 0; + virtual bool rehook() = 0; + virtual bool setHooked(bool state) = 0; + virtual bool isHooked() const = 0; + virtual const uintptr_t& getTarget() const = 0; + virtual const uintptr_t& getAddress() const = 0; + virtual HookMode getMode() const = 0; + + protected: + virtual ICallingConvention& getCallingConvention() = 0; + virtual Registers& getRegisters() = 0; + }; +} \ No newline at end of file diff --git a/vendor/dynohook/linuxsteamrt64/include/dynohook/imanager.h b/vendor/dynohook/linuxsteamrt64/include/dynohook/imanager.h new file mode 100644 index 000000000..9981f86fa --- /dev/null +++ b/vendor/dynohook/linuxsteamrt64/include/dynohook/imanager.h @@ -0,0 +1,122 @@ +#pragma once + +#include "ihook.h" + +#include <memory> +#include <mutex> + +namespace dyno { + class IHookManager { + public: + /** + * @brief Creates a detour hook for a given function. + * If the function was already hooked, the existing Hook instance will be returned. + * @param pFunc address to apply the hook to. + * @param convention + * @return NULL or the Hook instance. + */ + virtual std::shared_ptr<IHook> hookDetour(void* pFunc, const ConvFunc& convention) = 0; + + /** + * @brief Creates a function hook inside the virtual function table. + * If the function was already hooked, the existing Hook instance will be returned. + * @param pClass address of the class to instantiate hook on. + * @param index index of the function to hook inside the virtual function table. (starting at 0) + * @param convention + * @return NULL or the Hook instance. + */ + virtual std::shared_ptr<IHook> hookVirtual(void* pClass, int index, const ConvFunc& convention) = 0; + + /** + * @brief Creates a function hook inside the virtual function table. + * If the function was already hooked, the existing Hook instance will be returned. + * @param pClass address of the class to instantiate hook on. + * @param pFunc address of virtual member function. Like (void*&) &IClass::PureVirtualMethod. + * @param convention + * @return NULL or the Hook instance. + */ + virtual std::shared_ptr<IHook> hookVirtual(void* pClass, void* pFunc, const ConvFunc& convention) = 0; + + /** + * @brief Removes all callbacks and restores the original function. + * @param pFunc + * @return true if the function was hooked previously and is unhooked now. False otherwhise. + */ + virtual bool unhookDetour(void* pFunc) = 0; + + /** + * @brief Removes all callbacks and restores the original function. + * @param pClass + * @param index + * @return true if the function was hooked previously and is unhooked now. False otherwhise. + */ + virtual bool unhookVirtual(void* pClass, int index) = 0; + + /** + * @brief Removes all callbacks and restores the original function. + * @param pClass + * @param pFunc + * @return true if the function was hooked previously and is unhooked now. False otherwhise. + */ + virtual bool unhookVirtual(void* pClass, void* pFunc) = 0; + + /** + * @brief Finds the hook for a given function. + * @param pFunc + * @return NULL or the found Hook instance. + */ + virtual std::shared_ptr<IHook> findDetour(void* pFunc) const = 0; + + /** + * @brief Finds the hook for a given class and virtual function index. + * @param pClass + * @param index + * @return NULL or the found Hook instance. + */ + virtual std::shared_ptr<IHook> findVirtual(void* pClass, int index) const = 0; + + /** + * @brief Finds the hook for a given class and virtual function ptr. + * @param pFunc + * @return NULL or the found Hook instance. + */ + virtual std::shared_ptr<IHook> findVirtual(void* pClass, void* pFunc) const = 0; + + /** + * @brief Removes all callbacks and restores all functions. + */ + virtual void unhookAll() = 0; + + /** + * @brief Unhooks all previously hooked functions in the virtual function table. + * @param pClass + */ + virtual void unhookAllVirtual(void* pClass) = 0; + + /** + * @brief Unhooks previously hooked virtual functions which not in use anymore. + */ + virtual void clearCache() = 0; + + /** + * @brief Gets a reference to the singleton instance of the HookManager. + * + * The HookManager is a static class that manages hooks for certain operations. + * This method provides access to the singleton instance of the HookManager. + * + * @return A reference to the singleton instance of the HookManager. + * + * @note The HookManager follows the Singleton pattern, ensuring that only one + * instance exists throughout the program's execution. + * + * Example usage: + * @code + * // Get a reference to the HookManager instance + * IHookManager& hookManager = IHookManager::Get(); + * // Use the hookManager reference to manage hooks + * // ... + * @endcode + */ + DYNO_API static IHookManager& Get(); + }; +} \ No newline at end of file diff --git a/vendor/dynohook/linuxsteamrt64/include/dynohook/instruction.h b/vendor/dynohook/linuxsteamrt64/include/dynohook/instruction.h new file mode 100644 index 000000000..a6ebbb097 --- /dev/null +++ b/vendor/dynohook/linuxsteamrt64/include/dynohook/instruction.h @@ -0,0 +1,283 @@ +#pragma once + +#include <cstdint> +#include <vector> +#include <string> +#include <atomic> +#include <iomanip> +#include <sstream> +#include <cassert> + +namespace dyno { + enum class Mode : bool { + x86, + x64 + }; + + class MemAccessor; + class DYNO_API Instruction { + public: + union Displacement { + intptr_t Relative; + uintptr_t Absolute; + }; + + enum class OperandType : uint8_t { + Displacement, + Register, + Immediate, + }; + + Instruction(const MemAccessor* accessor, + uintptr_t address, + Displacement displacement, + uint8_t displacementOffset, + bool isRelative, + bool isIndirect, + std::vector<uint8_t>&& bytes, + std::string&& mnemonic, + std::string&& opStr, + Mode mode + ); + + uintptr_t getAbsoluteDestination() const { + return m_displacement.Absolute; + } + + uintptr_t getRelativeDestination() const { + return m_address + m_displacement.Relative + size(); + } + + /**Get the address of where the instruction points if it's a branching instruction + * @Notes: Handles eip/rip & immediate branches correctly + * **/ + uintptr_t getDestination() const; + + void setDestination(uintptr_t dest); + + /**Get the address of the instruction in memory**/ + uintptr_t getAddress() const { + return m_address; + } + + /**Set a new address of the instruction in memory + @Notes: Doesn't move the instruction, marks it for move on writeEncoding and relocates if appropriate**/ + void setAddress(uintptr_t address) { + m_address = address; + } + + /**Get the displacement from current address**/ + Displacement getDisplacement() const { + return m_displacement; + } + + /**Set where in the instruction bytes the offset is encoded**/ + void setDisplacementOffset(uint8_t offset) { + m_dispOffset = offset; + } + + void setBranching(const bool status) { + m_isBranching = status; + } + + void setCalling(const bool isCalling) { + m_isCalling = isCalling; + } + + /**Get the offset into the instruction bytes where displacement is encoded**/ + uint8_t getDisplacementOffset() const { + return m_dispOffset; + } + + /**Check if displacement is relative to eip/rip**/ + bool isDisplacementRelative() const { + return m_isRelative; + } + + /**Check if the instruction is a type with valid displacement**/ + bool hasDisplacement() const { + return m_hasDisplacement; + } + + void setHasDisplacement(bool hasDisplacement) { + m_hasDisplacement = hasDisplacement; + } + + bool isBranching() const { + if (m_isBranching && m_isRelative) { + assert(m_hasDisplacement); + } + return m_isBranching; + } + + bool isCalling() const { + return m_isCalling; + } + + bool isIndirect() const { + return m_isIndirect; + } + + const std::vector<uint8_t>& getBytes() const { + return m_bytes; + } + + /**Get short symbol name of instruction**/ + const std::string& getMnemonic() const { + return m_mnemonic; + } + + /**Get symbol name and parameters**/ + std::string getFullName() const { + return m_mnemonic + " " + m_opStr; + } + + /** Displacement size in bytes **/ + void setDisplacementSize(uint8_t size){ + m_dispSize = size; + } + + size_t getDispSize() const { + return m_dispSize; + } + + size_t size() const { + return m_bytes.size(); + } + + void setRelativeDisplacement(intptr_t displacement); + + void setAbsoluteDisplacement(uintptr_t displacement); + + uint32_t getUID() const { + return m_uid; + } + + template<typename T> + static T calculateRelativeDisplacement(uintptr_t from, uintptr_t to, uint8_t insSize) { + if (to < from) + return (T)(0 - (from - to) - insSize); + return (T)(to - (from + insSize)); + } + + void setIndirect(const bool isIndirect) { + m_isIndirect = isIndirect; + } + + void setImmediate(uintptr_t immediate){ + m_hasImmediate = true; + m_immediate = immediate; + } + + bool hasImmediate() const { + return m_hasImmediate; + } + + uintptr_t getImmediate() const { + return m_immediate; + } + + uint8_t getImmediateSize() const { + return m_immediateSize; + } + + void setImmediateSize(uint8_t size) { + m_immediateSize = size; + } + + void setRegister(int reg) { + m_register = reg; + } + + int getRegister() const { + return m_register; + } + + bool hasRegister() const { + return m_register != 0; + } + + void addOperandType(OperandType type){ + m_operands.emplace_back(type); + } + + const std::vector<OperandType>& getOperandTypes() const { + return m_operands; + } + + bool startsWithDisplacement() const; + + private: + const MemAccessor* m_accessor; + + int m_register; // Register operand when displacement is present + bool m_isIndirect; // Does this instruction get its destination via an indirect mem read (ff 25 ... jmp [jmp_dest]) (only filled for jmps / calls) + bool m_isCalling; // Does this instruction is of a CALL type. + bool m_isBranching; // Does this instruction jmp/call or otherwise change control flow + bool m_isRelative; // Does the displacement need to be added to the address to retrieve where it points too? + bool m_hasDisplacement; // Does this instruction have the displacement fields filled (only rip/eip relative types are filled) + bool m_hasImmediate; // Does this instruction have the immediate field filled? + Displacement m_displacement; // Where an instruction points too (valid for jmp + call types, and RIP relative MEM types) + + uintptr_t m_address; // Address the instruction is at + uintptr_t m_immediate; // Immediate op + uint8_t m_immediateSize; // Immediate size, in bytes + uint8_t m_dispOffset; // Offset into the byte array where displacement is encoded + uint8_t m_dispSize; // Size of the displacement, in bytes + + Mode m_mode; + uint32_t m_uid; + + std::vector<uint8_t> m_bytes; // All the raw bytes of this instruction + std::vector<OperandType> m_operands; // Types of all instruction operands + std::string m_mnemonic; + std::string m_opStr; + + inline static std::atomic_uint32_t s_counter = { 0 }; + }; + static_assert(std::is_nothrow_move_constructible<Instruction>::value, "dyno::Instruction should be noexcept move constructable"); + + typedef std::vector<Instruction> insts_t; + + inline bool operator==(const Instruction& lhs, const Instruction& rhs) { + return lhs.getUID() == rhs.getUID(); + } + + inline std::ostream& operator<<(std::ostream& os, const Instruction& obj) { + std::stringstream byteStream; + for (size_t i = 0; i < obj.size(); i++) + byteStream << std::hex << std::setfill('0') << std::setw(2) << (unsigned)obj.getBytes()[i] << " "; + + os << std::hex << obj.getAddress() << " [" << obj.size() << "]: "; + os << std::setfill(' ') << std::setw(40) << std::left << byteStream.str(); + os << obj.getFullName(); + + if (obj.hasDisplacement() && obj.isDisplacementRelative()) + os << " -> " << obj.getDestination(); + os << std::dec; + return os; + } + + inline uint16_t calcInstsSz(const insts_t& insts) { + uint16_t sz = 0; + for (const auto& ins : insts) + sz += (uint16_t)ins.size(); + return sz; + } + + template<typename T> + std::string instsToStr(const T& container) { + std::stringstream ss; + printInsts(ss, container); + return ss.str(); + } + + template <typename T> + inline std::ostream& printInsts(std::ostream& out, const T& container) { + for (auto ii = container.cbegin(); ii != container.cend(); ii++) + out << *ii << std::endl; + return out; + } + + inline std::ostream& operator<<(std::ostream& os, const insts_t& v) { return printInsts(os, v); } +} \ No newline at end of file diff --git a/vendor/dynohook/linuxsteamrt64/include/dynohook/log.h b/vendor/dynohook/linuxsteamrt64/include/dynohook/log.h new file mode 100644 index 000000000..26d6fc3b3 --- /dev/null +++ b/vendor/dynohook/linuxsteamrt64/include/dynohook/log.h @@ -0,0 +1,63 @@ +#pragma once + +#include <cstdint> +#include <string> +#include <memory> +#include <vector> + +namespace dyno { + enum class ErrorLevel : uint8_t { + NONE, + INFO, + WARN, + ERR, + }; + + class Logger { + public: + Logger() = default; + virtual ~Logger() = default; + + virtual void log(const std::string& msg, ErrorLevel level) = 0; + }; + + class DYNO_API Log { + public: + static void registerLogger(std::shared_ptr<Logger> logger); + static void log(const std::string& msg, ErrorLevel level); + + private: + static inline std::shared_ptr<Logger> m_logger = nullptr; + }; + + class DYNO_API ErrorLogger : public Logger { + public: + ErrorLogger() = default; + ~ErrorLogger() override = default; + + void log(const std::string& msg, ErrorLevel level) override; + + void push(const std::string& msg, ErrorLevel level); + std::string pop(); + + static ErrorLogger& Get(); + + void setLogLevel(ErrorLevel level); + + private: + std::vector<std::string> m_log; + ErrorLevel m_level = ErrorLevel::INFO; + }; +} + +#if DYNO_LOGGING +#define DYNO_LOG(lvl, msg) dyno::Log::log(msg, dyno::ErrorLevel::lvl) +#define DYNO_LOG_INFO(msg) dyno::Log::log(msg, dyno::ErrorLevel::INFO) +#define DYNO_LOG_WARN(msg) dyno::Log::log(msg, dyno::ErrorLevel::WARN) +#define DYNO_LOG_ERR(msg) dyno::Log::log(msg, dyno::ErrorLevel::ERR) +#else +#define DYNO_LOG(msg) +#define DYNO_LOG_INFO(msg) +#define DYNO_LOG_WARN(msg) +#define DYNO_LOG_ERR(msg) +#endif diff --git a/vendor/dynohook/linuxsteamrt64/include/dynohook/manager.h b/vendor/dynohook/linuxsteamrt64/include/dynohook/manager.h new file mode 100644 index 000000000..3f5a912db --- /dev/null +++ b/vendor/dynohook/linuxsteamrt64/include/dynohook/manager.h @@ -0,0 +1,42 @@ +#pragma once + +#include "imanager.h" +#include "convention.h" +#include "virtuals/vtable.h" +#include "detours/nat_detour.h" + +#include <asmjit/asmjit.h> +#include <unordered_map> + +namespace dyno { + class HookManager final : public IHookManager { + private: + HookManager(); + ~HookManager() = default; + + public: + DYNO_NONCOPYABLE(HookManager); + + std::shared_ptr<IHook> hookDetour(void* pFunc, const ConvFunc& convention) override; + std::shared_ptr<IHook> hookVirtual(void* pClass, int index, const ConvFunc& convention) override; + std::shared_ptr<IHook> hookVirtual(void* pClass, void* pFunc, const ConvFunc& convention) override; + bool unhookDetour(void* pFunc) override; + bool unhookVirtual(void* pClass, int index) override; + bool unhookVirtual(void* pClass, void* pFunc) override; + std::shared_ptr<IHook> findDetour(void* pFunc) const override; + std::shared_ptr<IHook> findVirtual(void* pClass, int index) const override; + std::shared_ptr<IHook> findVirtual(void* pClass, void* pFunc) const override; + + void unhookAll() override; + void unhookAllVirtual(void* pClass) override; + void clearCache() override; + + friend class IHookManager; + + public: + std::shared_ptr<VHookCache> m_cache; // used as global storage to avoid creating same hooks + std::unordered_map<void*, std::unique_ptr<VTable>> m_vtables; + std::unordered_map<void*, std::shared_ptr<NatDetour>> m_detours; + std::mutex m_mutex; + }; +} \ No newline at end of file diff --git a/vendor/dynohook/linuxsteamrt64/include/dynohook/mem_accessor.h b/vendor/dynohook/linuxsteamrt64/include/dynohook/mem_accessor.h new file mode 100644 index 000000000..1467a43a0 --- /dev/null +++ b/vendor/dynohook/linuxsteamrt64/include/dynohook/mem_accessor.h @@ -0,0 +1,77 @@ +#pragma once + +#include "instruction.h" +#include "prot.h" +#include <memory> + +#define MEMORY_ROUND(_numToRound_, _multiple_) \ + (_numToRound_ & (((size_t)-1) ^ (_multiple_ - 1))) + +// Round _numToRound_ to the next higher _multiple_ +#define MEMORY_ROUND_UP(_numToRound_, _multiple_) \ + ((_numToRound_ + (_multiple_ - 1)) & (((size_t)-1) ^ (_multiple_ - 1))) + +namespace dyno { + /// Overriding these routines can allow cross-process/cross-arch hooks + class DYNO_API MemAccessor { + public: + virtual ~MemAccessor() = default; + + /** + * Defines a memory read/write routine that may fail ungracefully. It's expected + * this library will only ever use this routine in cases that are expected to succeed. + */ + virtual bool mem_copy(uintptr_t dest, uintptr_t src, size_t size) const; + + /** + * Defines a memory write routine that will not throw exceptions, and can handle potential + * writes to NO_ACCESS or otherwise innaccessible memory pages. Defaults to writeprocessmemory. + * Must fail gracefully + */ + virtual bool safe_mem_write(uintptr_t dest, uintptr_t src, size_t size, size_t& written) const noexcept; + + /** + * Defines a memory read routine that will not throw exceptions, and can handle potential + * reads from NO_ACCESS or otherwise innaccessible memory pages. Defaults to readprocessmemory. + * Must fail gracefully + */ + virtual bool safe_mem_read(uintptr_t src, uintptr_t dest, size_t size, size_t& read) const noexcept; + + virtual ProtFlag mem_protect(uintptr_t dest, size_t size, ProtFlag newProtection, bool& status) const; + + public: + void writeEncoding(const insts_t& instructions); + + /** + * Write the raw bytes of the given instruction into the memory specified by the + * instruction's address. If the address value of the instruction has been changed + * since the time it was decoded this will copy the instruction to a new memory address. + * This will not automatically do any code relocation, all relocation logic should + * first modify the byte array, and then call write encoding, proper order to relocate + * an instruction should be disasm instructions -> set relative/absolute displacement() -> + */ + void writeEncoding(const Instruction& instruction); + + protected: + + /** + * Write a 25 byte absolute jump. This is preferred since it doesn't require an indirect memory holder. + * We first sub rsp by 128 bytes to avoid the red-zone stack space. This is specific to unix only afaik. + */ + insts_t makex64PreferredJump(uintptr_t address, uintptr_t destination); + + /** + * Write an indirect style 6byte jump. Address is where the jmp instruction will be located, and + * destHolder should point to the memory location that *CONTAINS* the address to be jumped to. + * Destination should be the value that is written into destHolder, and be the address of where + * the jmp should land. + */ + insts_t makex64MinimumJump(uintptr_t address, uintptr_t destination, uintptr_t destHolder); + insts_t makex86Jmp(uintptr_t address, uintptr_t destination); + insts_t makex64Jump(uintptr_t address, uintptr_t destination); + insts_t makeAgnosticJmp(uintptr_t address, uintptr_t destination); + + insts_t makex64DestHolder(uintptr_t destination, uintptr_t destHolder); + + }; +} \ No newline at end of file diff --git a/vendor/dynohook/linuxsteamrt64/include/dynohook/mem_protector.h b/vendor/dynohook/linuxsteamrt64/include/dynohook/mem_protector.h new file mode 100644 index 000000000..4077af23e --- /dev/null +++ b/vendor/dynohook/linuxsteamrt64/include/dynohook/mem_protector.h @@ -0,0 +1,37 @@ +#pragma once + +#include "prot.h" + +namespace dyno { + class MemAccessor; + + DYNO_API int TranslateProtection(ProtFlag flags); + DYNO_API ProtFlag TranslateProtection(int prot); + + class DYNO_API MemProtector { + public: + MemProtector() = delete; + MemProtector(uintptr_t address, size_t length, ProtFlag prot, MemAccessor& accessor, bool unsetOnDestroy = true); + ~MemProtector(); + + ProtFlag originalProt() const { + return m_origProtection; + } + + bool isGood() const { + return m_status; + } + + private: + MemAccessor& m_accessor; + + uintptr_t m_address; + size_t m_length; + bool m_status; + bool m_unsetLater; + + ProtFlag m_origProtection{ ProtFlag::UNSET }; + }; +} + +//std::ostream& operator<<(std::ostream& os, dyno::ProtFlag v); \ No newline at end of file diff --git a/vendor/dynohook/linuxsteamrt64/include/dynohook/nat_hook.h b/vendor/dynohook/linuxsteamrt64/include/dynohook/nat_hook.h new file mode 100644 index 000000000..2a711b257 --- /dev/null +++ b/vendor/dynohook/linuxsteamrt64/include/dynohook/nat_hook.h @@ -0,0 +1,17 @@ +#pragma once + +#include "platform.h" + +#if DYNO_ARCH_X86 == 32 +#include <dynohook/x86_hook.h> +#elif DYNO_ARCH_X86 == 64 +#include <dynohook/x64_hook.h> +#endif + +namespace dyno { +#if DYNO_ARCH_X86 == 32 + using NatHook = x86Hook; +#elif DYNO_ARCH_X86 == 64 + using NatHook = x64Hook; +#endif +} \ No newline at end of file diff --git a/vendor/dynohook/linuxsteamrt64/include/dynohook/os.h b/vendor/dynohook/linuxsteamrt64/include/dynohook/os.h new file mode 100644 index 000000000..897cbd7f5 --- /dev/null +++ b/vendor/dynohook/linuxsteamrt64/include/dynohook/os.h @@ -0,0 +1,47 @@ +// This file is used to not include os specific functions that might break other projects +// You should use it in sources + +#pragma once + +#include "platform.h" + +#if DYNO_PLATFORM_WINDOWS + +#ifndef WIN32_LEAN_AND_MEAN +#define WIN32_LEAN_AND_MEAN +#endif +#ifndef NOMINMAX +#define NOMINMAX +#endif +#define NTDDI_VERSION NTDDI_WIN10_RS4 +#include <windows.h> + +// From winerror.h, as this error isn't found in some SDKs: +// +// MessageId: ERROR_DYNAMIC_CODE_BLOCKED +// +// MessageText: +// +// The operation was blocked as the process prohibits dynamic code generation. +// +#ifndef ERROR_DYNAMIC_CODE_BLOCKED +#define ERROR_DYNAMIC_CODE_BLOCKED 1655L +#endif + +#elif DYNO_PLATFORM_LINUX + +#include <sys/mman.h> +#include <unistd.h> + +#elif DYNO_PLATFORM_APPLE + +#include <mach/mach_init.h> +#include <mach/mach_vm.h> +#include <mach/vm_prot.h> +#include <mach/vm_map.h> + +#else + +#error "Platform is not supported!" + +#endif \ No newline at end of file diff --git a/vendor/dynohook/linuxsteamrt64/include/dynohook/platform.h b/vendor/dynohook/linuxsteamrt64/include/dynohook/platform.h new file mode 100644 index 000000000..b8081a966 --- /dev/null +++ b/vendor/dynohook/linuxsteamrt64/include/dynohook/platform.h @@ -0,0 +1,237 @@ +#pragma once + +/// https://github.com/steinwurf/platform + +// here we create a number of defines to make it easy to choose between +// different compilers, operatings systems and CPU architectures. +// some information about the defines used can be found here: +// http://sourceforge.net/p/predef/wiki/Architectures/ + +// detect operating systems +#if defined(__linux__) +#define DYNO_PLATFORM_LINUX 1 +#if defined(__ANDROID__) +#define DYNO_PLATFORM_ANDROID 1 +#endif +#elif defined(_WIN32) +#define DYNO_PLATFORM_WINDOWS 1 +#if defined(WINAPI_FAMILY) +#include <winapifamily.h> +#if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_PHONE_APP) +#define DYNO_PLATFORM_WINDOWS_PHONE 1 +#endif +#endif +#elif defined(__APPLE__) +#define DYNO_PLATFORM_APPLE 1 +// detect iOS before MacOSX (__MACH__ is also defined for iOS) +#if defined(IPHONE) +#define DYNO_PLATFORM_IOS 1 +#elif defined(__MACH__) +#define DYNO_PLATFORM_MAC 1 +#endif +#elif defined(__EMSCRIPTEN__) +#define DYNO_PLATFORM_EMSCRIPTEN 1 +#else +#error "Unable to determine operating system" +#endif + +// detect compilers and CPU architectures +// note: clang also defines __GNUC__ since it aims to be compatible with GCC. +// therefore we need to check for __clang__ or __llvm__ first. +#if defined(__clang__) || defined(__llvm__) +#define DYNO_PLATFORM_CLANG 1 +#define DYNO_PLATFORM_GCC_COMPATIBLE 1 +#if defined(__i386__) || defined(__x86_64__) +#define DYNO_PLATFORM_X86 1 +#define DYNO_PLATFORM_CLANG_X86 1 +#define DYNO_PLATFORM_GCC_COMPATIBLE_X86 1 +#elif defined(__arm__) || defined(__arm64__) || defined(__aarch64__) +#define DYNO_PLATFORM_ARM 1 +#define DYNO_PLATFORM_CLANG_ARM 1 +#define DYNO_PLATFORM_GCC_COMPATIBLE_ARM 1 +#elif defined(__mips__) +#define DYNO_PLATFORM_MIPS 1 +#define DYNO_PLATFORM_CLANG_MIPS 1 +#define DYNO_PLATFORM_GCC_COMPATIBLE_MIPS 1 +#elif defined(__asmjs__) +#define DYNO_PLATFORM_ASMJS 1 +#define DYNO_PLATFORM_CLANG_ASMJS 1 +#define DYNO_PLATFORM_GCC_COMPATIBLE_ASMJS 1 +#endif +#elif defined(__GNUC__) +#define DYNO_PLATFORM_GCC 1 +#define DYNO_PLATFORM_GCC_COMPATIBLE 1 +#if defined(__i386__) || defined(__x86_64__) +#define DYNO_PLATFORM_X86 1 +#define DYNO_PLATFORM_GCC_X86 1 +#define DYNO_PLATFORM_GCC_COMPATIBLE_X86 1 +#elif defined(__arm__) || defined(__arm64__) || defined(__aarch64__) +#define DYNO_PLATFORM_ARM 1 +#define DYNO_PLATFORM_GCC_ARM 1 +#define DYNO_PLATFORM_GCC_COMPATIBLE_ARM 1 +#elif defined(__mips__) +#define DYNO_PLATFORM_MIPS 1 +#define DYNO_PLATFORM_GCC_MIPS 1 +#define DYNO_PLATFORM_GCC_COMPATIBLE_MIPS 1 +#endif +#elif defined(_MSC_VER) +#define DYNO_PLATFORM_MSVC 1 +#if defined(_M_IX86) || defined(_M_X64) +#define DYNO_PLATFORM_X86 1 +#define DYNO_PLATFORM_MSVC_X86 1 +#elif defined(_M_ARM) || defined(_M_ARMT) +#define DYNO_PLATFORM_ARM 1 +#define DYNO_PLATFORM_MSVC_ARM 1 +#endif +#else +#error "Unable to determine compiler" +#endif + +// define macros for supported CPU instruction sets +#if defined(DYNO_PLATFORM_GCC_COMPATIBLE) +#if defined(__MMX__) +#define DYNO_PLATFORM_MMX 1 +#endif +#if defined(__SSE__) +#define DYNO_PLATFORM_SSE 1 +#endif +#if defined(__SSE2__) +#define DYNO_PLATFORM_SSE2 1 +#endif +#if defined(__SSE3__) +#define DYNO_PLATFORM_SSE3 1 +#endif +#if defined(__SSSE3__) +#define DYNO_PLATFORM_SSSE3 1 +#endif +#if defined(__SSE4_1__) +#define DYNO_PLATFORM_SSE41 1 +#endif +#if defined(__SSE4_2__) +#define DYNO_PLATFORM_SSE42 1 +#endif +#if defined(__PCLMUL__) +#define DYNO_PLATFORM_PCLMUL 1 +#endif +#if defined(__AVX__) +#define DYNO_PLATFORM_AVX 1 +#endif +#if defined(__AVX2__) +#define DYNO_PLATFORM_AVX2 1 +#endif +#if defined(__ARM_NEON__) || defined(__ARM_NEON) +#define DYNO_PLATFORM_NEON 1 +#endif +// first, check the PLATFORM_WINDOWS_PHONE define, because +// the X86 instructions sets are not supported on the Windows Phone emulator +#elif defined(DYNO_PLATFORM_WINDOWS_PHONE) +#if defined(DYNO_PLATFORM_MSVC_ARM) +// NEON introduced in VS2012 +#if (_MSC_VER >= 1700) +#define DYNO_PLATFORM_NEON 1 +#endif +#endif +#elif defined(DYNO_PLATFORM_MSVC_X86) +// MMX, SSE and SSE2 introduced in VS2003 +#if (_MSC_VER >= 1310) +#define DYNO_PLATFORM_MMX 1 +#define DYNO_PLATFORM_SSE 1 +#define DYNO_PLATFORM_SSE2 1 +#endif +// SSE3 introduced in VS2005 +#if (_MSC_VER >= 1400) +#define DYNO_PLATFORM_SSE3 1 +#endif +// SSSE3, SSE4.1, SSE4.2, PCLMUL introduced in VS2008 +#if (_MSC_VER >= 1500) +#define DYNO_PLATFORM_SSSE3 1 +#define DYNO_PLATFORM_SSE41 1 +#define DYNO_PLATFORM_SSE42 1 +#define DYNO_PLATFORM_PCLMUL 1 +#endif +// AVX and AVX2 introduced in VS2012 +#if (_MSC_VER >= 1700) +#define DYNO_PLATFORM_AVX 1 +#define DYNO_PLATFORM_AVX2 1 +#endif +#endif +#if defined(__AVX512F__) +#define DYNO_PLATFORM_AVX512 1 +#endif + +// define macros for architecture type +#if DYNO_PLATFORM_X86 +#if UINTPTR_MAX == UINT64_MAX +#define DYNO_ARCH_X86 64 +#elif UINTPTR_MAX == UINT32_MAX +#define DYNO_ARCH_X86 32 +#else +#error "Unable to determine architecture type" +#endif +#endif + +// function attributes +#if !defined(DYNO_BUILD_DEBUG) && defined(__GNUC__) +#define DYNO_FORCE_INLINE inline __attribute__((__always_inline__)) +#elif !defined(DYNO_BUILD_DEBUG) && DYNO_PLATFORM_MSVC +#define DYNO_FORCE_INLINE __forceinline +#else +#define DYNO_FORCE_INLINE inline +#endif + +#if DYNO_PLATFORM_GCC +#define DYNO_NOINLINE __attribute__((__noinline__)) +#define DYNO_NORETURN __attribute__((__noreturn__)) +#define DYNO_NAKED __attribute__((naked)) +#elif DYNO_PLATFORM_MSVC +#define DYNO_NOINLINE __declspec(noinline) +#define DYNO_NORETURN __declspec(noreturn) +#define DYNO_NAKED __declspec(naked) +#else +#define DYNO_NOINLINE +#define DYNO_NORETURN +#define DYNO_NAKED +#endif + +// calling conventions +#if DYNO_ARCH_X86 == 32 && DYNO_PLATFORM_GCC +#define DYNO_CDECL __attribute__((__cdecl__)) +#define DYNO_STDCALL __attribute__((__stdcall__)) +#define DYNO_FASTCALL __attribute__((__fastcall__)) +#define DYNO_THISCALL __attribute__((__thiscall__)) +#define DYNO_REGPARM(N) __attribute__((__regparm__(N))) +#elif DYNO_ARCH_X86 == 32 && DYNO_PLATFORM_MSVC +#define DYNO_CDECL __cdecl +#define DYNO_STDCALL __stdcall +#define DYNO_FASTCALL __fastcall +#define DYNO_THISCALL __thiscall +#define DYNO_REGPARM(N) +#else +#define DYNO_CDECL +#define DYNO_STDCALL +#define DYNO_FASTCALL +#define DYNO_THISCALL +#define DYNO_REGPARM(N) +#endif + +#if DYNO_ARCH_X86 && DYNO_PLATFORM_WINDOWS && DYNO_PLATFORM_MSVC +#define DYNO_VECTORCALL __vectorcall +#elif DYNO_ARCH_X86 && DYNO_PLATFORM_WINDOWS +#define DYNO_VECTORCALL __attribute__((__vectorcall__)) +#else +#define DYNO_VECTORCALL +#endif + +// optimization +#if DYNO_PLATFORM_GCC_COMPATIBLE && !(defined(DYNO_PLATFORM_CLANG) && DYNO_PLATFORM_CLANG) +#define DYNO_OPTS_OFF _Pragma("GCC push_options") _Pragma("GCC optimize (\"O0\")") +#define DYNO_OPTS_ON _Pragma("GCC pop_options") +#elif DYNO_PLATFORM_MSVC +#define DYNO_OPTS_OFF __pragma(optimize("", off)) +#define DYNO_OPTS_ON __pragma(optimize("", on)) +#else +#define DYNO_OPTS_OFF +#define DYNO_OPTS_ON +#endif + +#define DYNO_UNUSED(a) (void)a diff --git a/vendor/dynohook/linuxsteamrt64/include/dynohook/prot.h b/vendor/dynohook/linuxsteamrt64/include/dynohook/prot.h new file mode 100644 index 000000000..dd4937d6e --- /dev/null +++ b/vendor/dynohook/linuxsteamrt64/include/dynohook/prot.h @@ -0,0 +1,33 @@ +#pragma once + +#include <cstdint> +#include <type_traits> + +namespace dyno { + + // unsafe enum by design to allow binary OR + enum ProtFlag : uint8_t { + UNSET = 0, // value means this give no information about protection state (un-read) + X = 1 << 1, + R = 1 << 2, + W = 1 << 3, + S = 1 << 4, + P = 1 << 5, + N = 1 << 6, // value equaling the linux flag PROT_UNSET (read the prot, and the prot is unset) + RWX = R | W | X + }; + + inline ProtFlag operator|(ProtFlag lhs, ProtFlag rhs) { + using underlying = typename std::underlying_type<ProtFlag>::type; + return static_cast<ProtFlag> ( + static_cast<underlying>(lhs) | + static_cast<underlying>(rhs) + ); + } + + inline bool operator&(ProtFlag lhs, ProtFlag rhs) { + using underlying = typename std::underlying_type<ProtFlag>::type; + return static_cast<underlying>(lhs) & + static_cast<underlying>(rhs); + } +}; \ No newline at end of file diff --git a/vendor/dynohook/linuxsteamrt64/include/dynohook/range_allocator.h b/vendor/dynohook/linuxsteamrt64/include/dynohook/range_allocator.h new file mode 100644 index 000000000..ef9298040 --- /dev/null +++ b/vendor/dynohook/linuxsteamrt64/include/dynohook/range_allocator.h @@ -0,0 +1,30 @@ +#pragma once + +#include "helpers.h" +#include <cstdint> +#include <memory> +#include <mutex> +#include <vector> +#include <unordered_map> + +namespace dyno { + class FBAllocator; + class DYNO_API RangeAllocator { + public: + RangeAllocator(uint8_t blockSize, uint8_t blockCount); + ~RangeAllocator() = default; + DYNO_NONCOPYABLE(RangeAllocator); + + char* allocate(uintptr_t min, uintptr_t max); + void deallocate(uintptr_t addr); + + private: + std::shared_ptr<FBAllocator> findOrInsertAllocator(uintptr_t min, uintptr_t max); + + uint8_t m_maxBlocks; + uint8_t m_blockSize; + std::mutex m_mutex; + std::vector<std::shared_ptr<FBAllocator>> m_allocators; + std::unordered_map<uintptr_t, std::shared_ptr<FBAllocator>> m_allocMap; + }; +} \ No newline at end of file diff --git a/vendor/dynohook/linuxsteamrt64/include/dynohook/registers.h b/vendor/dynohook/linuxsteamrt64/include/dynohook/registers.h new file mode 100644 index 000000000..d83d6bfbd --- /dev/null +++ b/vendor/dynohook/linuxsteamrt64/include/dynohook/registers.h @@ -0,0 +1,383 @@ +#pragma once + +#include <cstdint> +#include <string> +#include <vector> +#include "platform.h" +#include "helpers.h" + +#include <dynohook_export.h> + +namespace dyno { + enum RegisterType : uint8_t { + // no register at all. + NONE, + + // ======================================================================== + // >> 8-bit General purpose registers + // ======================================================================== + AL, + CL, + DL, + BL, + +#if DYNO_ARCH_X86 == 64 + SPL, + BPL, + SIL, + DIL, + R8B, + R9B, + R10B, + R11B, + R12B, + R13B, + R14B, + R15B, +#endif // DYNO_ARCH_X86 + + AH, + CH, + DH, + BH, + + // ======================================================================== + // >> 16-bit General purpose registers + // ======================================================================== + AX, + CX, + DX, + BX, + SP, + BP, + SI, + DI, + +#if DYNO_ARCH_X86 == 64 + R8W, + R9W, + R10W, + R11W, + R12W, + R13W, + R14W, + R15W, +#endif // DYNO_ARCH_X86 + + // ======================================================================== + // >> 32-bit General purpose registers + // ======================================================================== + EAX, + ECX, + EDX, + EBX, + ESP, + EBP, + ESI, + EDI, + +#if DYNO_ARCH_X86 == 64 + R8D, + R9D, + R10D, + R11D, + R12D, + R13D, + R14D, + R15D, +#endif // DYNO_ARCH_X86 + + // ======================================================================== + // >> 64-bit General purpose registers + // ======================================================================== +#if DYNO_ARCH_X86 == 64 + RAX, + RCX, + RDX, + RBX, + RSP, + RBP, + RSI, + RDI, + + R8, + R9, + R10, + R11, + R12, + R13, + R14, + R15, +#endif // DYNO_ARCH_X86 + + // ======================================================================== + // >> 64-bit MM (MMX) registers + // ======================================================================== + MM0, + MM1, + MM2, + MM3, + MM4, + MM5, + MM6, + MM7, + + // ======================================================================== + // >> 128-bit XMM registers + // ======================================================================== + XMM0, + XMM1, + XMM2, + XMM3, + XMM4, + XMM5, + XMM6, + XMM7, +#if DYNO_ARCH_X86 == 64 + XMM8, + XMM9, + XMM10, + XMM11, + XMM12, + XMM13, + XMM14, + XMM15, +#if DYNO_PLATFORM_AVX512 + XMM16, + XMM17, + XMM18, + XMM19, + XMM20, + XMM21, + XMM22, + XMM23, + XMM24, + XMM25, + XMM26, + XMM27, + XMM28, + XMM29, + XMM30, + XMM31, +#endif // DYNO_PLATFORM_AVX512 +#endif // DYNO_ARCH_X86 + + // ======================================================================== + // >> 256-bit YMM registers + // ======================================================================== +#if DYNO_ARCH_X86 == 64 +#if DYNO_PLATFORM_AVX + YMM0, + YMM1, + YMM2, + YMM3, + YMM4, + YMM5, + YMM6, + YMM7, + YMM8, + YMM9, + YMM10, + YMM11, + YMM12, + YMM13, + YMM14, + YMM15, +#if DYNO_PLATFORM_AVX512 + YMM16, + YMM17, + YMM18, + YMM19, + YMM20, + YMM21, + YMM22, + YMM23, + YMM24, + YMM25, + YMM26, + YMM27, + YMM28, + YMM29, + YMM30, + YMM31, +#endif // DYNO_PLATFORM_AVX512 +#endif // DYNO_PLATFORM_AVX +#endif // DYNO_ARCH_X86 + + // ======================================================================== + // >> 512-bit ZMM registers + // ======================================================================== +#if DYNO_PLATFORM_AVX512 + ZMM0, + ZMM1, + ZMM2, + ZMM3, + ZMM4, + ZMM5, + ZMM6, + ZMM7, + ZMM8, + ZMM9, + ZMM10, + ZMM11, + ZMM12, + ZMM13, + ZMM14, + ZMM15, + ZMM16, + ZMM17, + ZMM18, + ZMM19, + ZMM20, + ZMM21, + ZMM22, + ZMM23, + ZMM24, + ZMM25, + ZMM26, + ZMM27, + ZMM28, + ZMM29, + ZMM30, + ZMM31, +#endif // DYNO_PLATFORM_AVX512 + + // ======================================================================== + // >> 16-bit Segment registers + // ======================================================================== + CS, + SS, + DS, + ES, + FS, + GS, + + // ======================================================================== + // >> 80-bit FPU registers + // ======================================================================== +#if DYNO_ARCH_X86 == 32 + ST0, + ST1, + ST2, + ST3, + ST4, + ST5, + ST6, + ST7, +#endif // DYNO_ARCH_X86 + + // ======================================================================== + // >> Maximum value of this enum. + // ======================================================================== + REG_COUNT + }; + + enum RegisterSize : uint8_t { + SIZE_INVALID = 0, + SIZE_BYTE = 1, + SIZE_WORD = 2, + SIZE_DWORD = 4, + SIZE_QWORD = 8, + SIZE_TWORD = 10, + SIZE_XMMWORD = 16, + SIZE_YMMWORD = 32, + SIZE_ZMMWORD = 64 + }; + + struct RegisterInfo { + std::string_view name; + RegisterSize size; + uint8_t alignment; + }; + + const RegisterInfo& RegisterTypeInfo(RegisterType reg); + size_t RegisterTypeToSSEIndex(RegisterType reg); + RegisterType SSEIndexToRegisterType(size_t index, size_t size = 0); + + class DYNO_API Register { + public: + Register(RegisterType type, RegisterSize size, uint8_t alignment = 0); + ~Register(); + Register(const Register& other); + Register(Register&& other) noexcept; + Register& operator=(const Register&) = delete; + Register& operator=(Register&&) = delete; + + void* operator*() const { + return m_address; + } + + template<class T> + T getAddress() const { + return (T) m_address; + } + + template<class T> + T getValue() const { + return *(T*) m_address; + } + + template<class T> + void setValue(T value) { + *(T*) m_address = value; + } + + template<class T> + T getPointerValue(size_t offset = 0) const { + return *(T*) (getValue<uintptr_t>() + offset); + } + + template<class T> + void setPointerValue(T value, size_t offset = 0) { + *(T*) (getValue<uintptr_t>() + offset) = value; + } + + RegisterType getType() const { + return m_type; + } + + operator RegisterType() const { + return m_type; + } + + private: + void* m_address; + RegisterType m_type; + RegisterSize m_size; + uint8_t m_alignment; + }; + + typedef std::vector<RegisterType> regs_t; + + class DYNO_API Registers { + public: + explicit Registers(const regs_t& registers); + Registers(const regs_t& registers1, const regs_t& registers2); + ~Registers() = default; + DYNO_NONCOPYABLE(Registers); + + DYNO_ITERATABLE(Register, m_registers); + + const Register& operator[](RegisterType reg) const; + const Register& at(RegisterType reg, bool reverse = false) const; + + size_t size() const { + return m_registers.size(); + } + + static const regs_t& ScratchList() { + return s_scratch; + } + + private: + std::vector<Register> m_registers; + + static Register s_none; + static regs_t s_scratch; + + void insert(const regs_t& registers); + }; + +} + +//std::ostream& operator<<(std::ostream& os, dyno::RegisterType v); \ No newline at end of file diff --git a/vendor/dynohook/linuxsteamrt64/include/dynohook/tests/effect_tracker.h b/vendor/dynohook/linuxsteamrt64/include/dynohook/tests/effect_tracker.h new file mode 100644 index 000000000..432dcbaf9 --- /dev/null +++ b/vendor/dynohook/linuxsteamrt64/include/dynohook/tests/effect_tracker.h @@ -0,0 +1,32 @@ +#pragma once + +#include <cstdint> +#include <atomic> +#include <vector> + +namespace dyno { + class DYNO_API Effect { + public: + Effect(); + void trigger(); + + bool didExecute(size_t n) const; + + private: + uint32_t m_executed; + uint32_t m_uid; + + inline static std::atomic_uint32_t s_counter = { 0 }; + }; + + /**Track if some side effect happened.**/ + class DYNO_API EffectTracker { + public: + void push(); + Effect pop(); + Effect& peak(); + + private: + std::vector<Effect> m_queue; + }; +} \ No newline at end of file diff --git a/vendor/dynohook/linuxsteamrt64/include/dynohook/tests/stack_canary.h b/vendor/dynohook/linuxsteamrt64/include/dynohook/tests/stack_canary.h new file mode 100644 index 000000000..aa0c2915a --- /dev/null +++ b/vendor/dynohook/linuxsteamrt64/include/dynohook/tests/stack_canary.h @@ -0,0 +1,16 @@ +#pragma once + +#include <cstdint> + +namespace dyno { + class DYNO_API StackCanary { + public: + StackCanary(); + ~StackCanary() noexcept(false); + + bool isStackGood(); + + private: + uint8_t buf[100]; + }; +} \ No newline at end of file diff --git a/vendor/dynohook/linuxsteamrt64/include/dynohook/virtuals/vhook.h b/vendor/dynohook/linuxsteamrt64/include/dynohook/virtuals/vhook.h new file mode 100644 index 000000000..2e6732e28 --- /dev/null +++ b/vendor/dynohook/linuxsteamrt64/include/dynohook/virtuals/vhook.h @@ -0,0 +1,31 @@ +#pragma once + +#include <dynohook/nat_hook.h> +#include <cstdint> + +namespace dyno { + class DYNO_API VHook final : public NatHook { + public: + VHook(uintptr_t fnAddress, const ConvFunc& convention); + ~VHook() override; + + bool hook() override; + bool unhook() override; + + HookMode getMode() const override { + return HookMode::VTableSwap; + } + + const std::uintptr_t& getTarget() const override { + return m_fnAddress; + } + + const uintptr_t& getAddress() const override { + return m_fnAddress; + } + + private: + // address of the original function + uintptr_t m_fnAddress; + }; +} \ No newline at end of file diff --git a/vendor/dynohook/linuxsteamrt64/include/dynohook/virtuals/vtable.h b/vendor/dynohook/linuxsteamrt64/include/dynohook/virtuals/vtable.h new file mode 100644 index 000000000..e24c55afe --- /dev/null +++ b/vendor/dynohook/linuxsteamrt64/include/dynohook/virtuals/vtable.h @@ -0,0 +1,48 @@ +#pragma once + +#include <dynohook/virtuals/vhook.h> + +namespace dyno { + class VHookCache; + + class DYNO_API VTable final : public MemAccessor { + public: + VTable(void* pClass, std::shared_ptr<VHookCache> cache); + ~VTable() override; + DYNO_NONCOPYABLE(VTable); + + std::shared_ptr<Hook> hook(int index, const ConvFunc& convention); + + bool unhook(int index); + + std::shared_ptr<Hook> find(int index) const; + + bool empty() const { + return m_hooked.empty(); + } + + int getVTableIndex(void* pFunc); + + private: + static int getVFuncCount(void** vtable); + + void*** m_class; + void** m_origVtable; + int m_vFuncCount; + std::unique_ptr<void*[]> m_newVtable; + + std::shared_ptr<VHookCache> m_hookCache; + + std::unordered_map<int16_t, std::shared_ptr<VHook>> m_hooked; + }; + + class DYNO_API VHookCache { + public: + std::shared_ptr<VHook> get(void* pFunc, const ConvFunc& convention); + void clear(); + void cleanup(); + + private: + std::unordered_map<void*, std::shared_ptr<VHook>> m_hooked; + }; +} \ No newline at end of file diff --git a/vendor/dynohook/linuxsteamrt64/include/dynohook/x64_hook.h b/vendor/dynohook/linuxsteamrt64/include/dynohook/x64_hook.h new file mode 100644 index 000000000..e711fbcb7 --- /dev/null +++ b/vendor/dynohook/linuxsteamrt64/include/dynohook/x64_hook.h @@ -0,0 +1,23 @@ +#pragma once + +#include <dynohook/hook.h> + +namespace dyno { + class DYNO_API x64Hook : public Hook { + public: + explicit x64Hook(const ConvFunc& convention); + ~x64Hook() override = default; + + protected: + bool createBridge() override; + bool createPostCallback() override; + void writeModifyReturnAddress(Assembler& a) override; + void writeCallHandler(Assembler& a, CallbackType type) const override; + int32_t writeSaveScratchRegisters(Assembler& a) const override; + void writeRestoreScratchRegisters(Assembler& a) const override; + void writeSaveRegisters(Assembler& a, bool post) const override; + void writeRestoreRegisters(Assembler& a, bool post) const override; + void writeRegToMem(Assembler& a, const Register& reg, bool post) const override; + void writeMemToReg(Assembler& a, const Register& reg, bool post) const override; + }; +} \ No newline at end of file diff --git a/vendor/dynohook/linuxsteamrt64/include/dynohook/x86_hook.h b/vendor/dynohook/linuxsteamrt64/include/dynohook/x86_hook.h new file mode 100644 index 000000000..b8c33af65 --- /dev/null +++ b/vendor/dynohook/linuxsteamrt64/include/dynohook/x86_hook.h @@ -0,0 +1,26 @@ +#pragma once + +#include <dynohook/hook.h> + +namespace dyno { + class DYNO_API x86Hook : public Hook { + public: + explicit x86Hook(const ConvFunc& convention); + ~x86Hook() override = default; + + protected: + bool createBridge() override; + bool createPostCallback() override; + void writeModifyReturnAddress(Assembler& a) override; + void writeCallHandler(Assembler& a, CallbackType type) const override; + int32_t writeSaveScratchRegisters(Assembler& a) const override; + void writeRestoreScratchRegisters(Assembler& a) const override; + void writeSaveRegisters(Assembler& a, bool post) const override; + void writeRestoreRegisters(Assembler& a, bool post) const override; + void writeRegToMem(Assembler& a, const Register& reg, bool post) const override; + void writeMemToReg(Assembler& a, const Register& reg, bool post) const override; + + private: + Registers m_scratchRegisters; + }; +} \ No newline at end of file diff --git a/vendor/dynohook/linuxsteamrt64/lib/libZydis.a b/vendor/dynohook/linuxsteamrt64/lib/libZydis.a new file mode 100644 index 0000000000000000000000000000000000000000..58d4cac1aa4136c091c265e641a7bbf47773663b GIT binary patch literal 888286 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%0D*`TQH_0ypJmdcn{=9+zQ^mmGWlk`i*Wm4%2f1 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%0AyjKqEB3j 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%0Dvj@M8F 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 Vfe`NhZhIh?_Z_bUc##eB{{uUg(|Z5_ literal 0 HcmV?d00001 diff --git a/vendor/dynohook/linuxsteamrt64/lib/libasmjit.a b/vendor/dynohook/linuxsteamrt64/lib/libasmjit.a new file mode 100644 index 0000000000000000000000000000000000000000..76c349acd248a46b2983d8375fb4e765806b5f7f GIT binary patch literal 920998 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 BxYhsw literal 0 HcmV?d00001 diff --git a/vendor/dynohook/linuxsteamrt64/lib/libasmtk.a b/vendor/dynohook/linuxsteamrt64/lib/libasmtk.a new file mode 100644 index 0000000000000000000000000000000000000000..3e763be95b6ada90e63fe0944162f2e8ece9d071 GIT binary patch literal 25106 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 Ywg%gh{H!ru`SnyGLbHA`|Lx`fFLDlLW&i*H literal 0 HcmV?d00001 diff --git a/vendor/dynohook/linuxsteamrt64/lib/libdynohook.a b/vendor/dynohook/linuxsteamrt64/lib/libdynohook.a new file mode 100644 index 0000000000000000000000000000000000000000..2f4699814c39525cdf37194bc9b8041e133575b2 GIT binary patch literal 5300900 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%0DC=>cnyVmV~CmxBS<D#ClIUI6bSYTv5X;FeX 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%0Aj{F>45Hq_04njG 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 RA2NOSIbZ8x<RQ^${r~w_y7&M9 literal 0 HcmV?d00001 diff --git a/vendor/dynohook/win64/include/dynohook/convention.h b/vendor/dynohook/win64/include/dynohook/convention.h new file mode 100644 index 000000000..52730f413 --- /dev/null +++ b/vendor/dynohook/win64/include/dynohook/convention.h @@ -0,0 +1,242 @@ +#pragma once + +#include "registers.h" +#include <memory> + +namespace dyno { + enum class DataType : uint8_t { + Void, + Bool, + Int8, + UInt8, + Int16, + UInt16, + Int32, + UInt32, + Int64, + UInt64, + Float, + Double, + Pointer, + String, // char* (null-terminated) + WString, // wchar_t* (null-terminated) + M128, + M256, + M512, + Object + }; + + struct DataObject { + DataType type; + RegisterType reg; + uint16_t size; + + DataObject(DataType type, RegisterType reg = NONE, uint16_t size = 0) : type{type}, reg{reg}, size{size} {} + + bool isFlt() const { return type == DataType::Float || type == DataType::Double; } + bool isVec() const { return type == DataType::M128 || type == DataType::M256 || type == DataType::M512; } + }; + + /** + * @brief This is the base class for every calling convention. + * + * Inherit from this class to create your own calling convention. + */ + class DYNO_API ICallingConvention { + public: + /** + * @brief Initializes the calling convention. + * @param arguments A list of DataType_t objects, which define the arguments of the function. + * @param returnType The return type of the function. + * @param alignment + */ + ICallingConvention(std::vector<DataObject> arguments, DataObject returnType, size_t alignment); + virtual ~ICallingConvention() = default; + DYNO_NONCOPYABLE(ICallingConvention); + + /** + * @brief This should return a list of RegisterType values. These registers will be saved for later access. + * @return + */ + virtual regs_t getRegisters() = 0; + + /** + * Returns a pointer to the memory at the stack. + * @param registers A snapshot of all saved registers. + * @return + */ + virtual void** getStackArgumentPtr(const Registers& registers) = 0; + + /** + * @brief Returns a pointer to the argument at the given index. + * @param index The index of the argument. + * @param registers A snapshot of all saved registers. + * @return + */ + virtual void* getArgumentPtr(size_t index, const Registers& registers) = 0; + + /** + * @brief + * @param index The index of the argument. + * @param registers A snapshot of all saved registers. + * @param argumentPtr A pointer to the argument at the given index. + */ + virtual void onArgumentPtrChanged(size_t index, const Registers& registers, void* argumentPtr) = 0; + + /** + * @brief Returns a pointer to the return value. + * @param registers A snapshot of all saved registers. + * @return + */ + virtual void* getReturnPtr(const Registers& registers) = 0; + + /** + * + * @param registers A snapshot of all saved registers. + * @param returnPtr A pointer to the return value. + */ + virtual void onReturnPtrChanged(const Registers& registers, void* returnPtr) = 0; + + /** + * @brief Save the return value in a seperate buffer, so we can restore it after calling the original function. + * @param registers A snapshot of all saved registers. + */ + virtual void saveReturnValue(const Registers& registers); + + /** + * @brief + * @param registers A snapshot of all saved registers. + */ + virtual void restoreReturnValue(const Registers& registers); + + /** + * @brief Save the value of arguments in a seperate buffer for the post callback. + * Compiler optimizations might cause the registers or stack space to be reused + * and overwritten during function execution if the value isn't needed anymore + * at some point. This leads to different values in the post hook. + * @param registers A snapshot of all saved registers. + */ + virtual void saveCallArguments(const Registers& registers); + + /** + * @brief Restore the value of arguments from a seperate buffer for the call. + * @param registers A snapshot of all saved registers. + */ + virtual void restoreCallArguments(const Registers& registers); + + /** + * @brief Returns the number of bytes that should be added to the stack to clean up. + * @return + */ + virtual size_t getPopSize() { + return 0; + } + + /** + * Returns the number of bytes for the buffer to store all the arguments that are passed in a stack in. + * @return + */ + virtual size_t getArgStackSize() const { + return m_stackSize; + } + + /** + * @brief Returns the number of bytes for the buffer to store all the arguments that are passed in a register in. + * @return + */ + virtual size_t getArgRegisterSize() const { + return m_registerSize; + } + + virtual const std::vector<DataObject>& getArguments() const { + return m_arguments; + } + + virtual DataObject getReturn() const { + return m_return; + } + + virtual size_t getAlignment() const { + return m_alignment; + } + + protected: + void init(); + + protected: + std::vector<DataObject> m_arguments; + DataObject m_return; + size_t m_alignment; + size_t m_stackSize; + size_t m_registerSize; + + // Save the return in case we call the original function and want to override the return again. + std::vector<std::unique_ptr<uint8_t[]>> m_savedReturnBuffers; + // Save call arguments in case the function reuses the space and overwrites the values for the post hook. + std::vector<std::unique_ptr<uint8_t[]>> m_savedCallArguments; + }; + + /** + * Returns the size after applying alignment. + * @param size The size that should be aligned. + * @param alignment The alignment that should be used. + * @return + */ + inline size_t Align(size_t size, size_t alignment) { + size_t unaligned = size % alignment; + if (unaligned == 0) + return size; + + return size + (alignment - unaligned); + } + + /** + * @brief Returns the size of a data type after applying alignment. + * @param type The data type you would like to get the size of. + * @param alignment The alignment that should be used. + * @return + */ + inline size_t getDataTypeSize(DataType type, size_t alignment) { + switch (type) { + case DataType::Void: + return 0; + case DataType::Bool: + return Align(sizeof(bool), alignment); + case DataType::Int8: + return Align(sizeof(std::int8_t), alignment); + case DataType::UInt8: + return Align(sizeof(uint8_t), alignment); + case DataType::Int16: + return Align(sizeof(std::int16_t), alignment); + case DataType::UInt16: + return Align(sizeof(uint16_t), alignment); + case DataType::Int32: + return Align(sizeof(std::int32_t), alignment); + case DataType::UInt32: + return Align(sizeof(uint32_t), alignment); + case DataType::Int64: + return Align(sizeof(std::int64_t), alignment); + case DataType::UInt64: + return Align(sizeof(uint64_t), alignment); + case DataType::Float: + return Align(sizeof(float), alignment); + case DataType::Double: + return Align(sizeof(double), alignment); + case DataType::Pointer: + return Align(sizeof(void*), alignment); + case DataType::String: + return Align(sizeof(char*), alignment); + case DataType::WString: + return Align(sizeof(wchar_t*), alignment); + case DataType::M128: + return Align(sizeof(float) * 4, alignment); + case DataType::M256: + return Align(sizeof(float) * 8, alignment); + case DataType::M512: + return Align(sizeof(float) * 16, alignment); + default: + puts("[Warning] - Convention - Unknown data type."); + } + return 0; + } +} \ No newline at end of file diff --git a/vendor/dynohook/win64/include/dynohook/conventions/x64_systemV_call.h b/vendor/dynohook/win64/include/dynohook/conventions/x64_systemV_call.h new file mode 100644 index 000000000..77adad493 --- /dev/null +++ b/vendor/dynohook/win64/include/dynohook/conventions/x64_systemV_call.h @@ -0,0 +1,45 @@ +#pragma once + +#include <dynohook/convention.h> + +/* + Source: DynCall manual and System V docs + + Registers: + - rax = return value + - rdx = return value + - rsp = stack pointer + - [xyz]mm0 = floating point return value + - [xyz]mm1 = floating point return value + + Parameter passing: + - rdi, rsi, rdx, rcx, r8, r9, rest on the stack + - [xyz]mm0-[xyz]mm7 used for passing floating values + - stack parameter order: right-to-left + - caller cleans up the stack + - alignment: 8 bytes + + Return values: + - return values of pointer or intergral type (<= 64 bits) are returned via the rax register + - integers > 64 bits are returned via the rax and rdx registers + - floating pointer types are returned via the xmm0 and xmm1 register +*/ +namespace dyno { + class DYNO_API x64SystemVcall : public ICallingConvention { + public: + x64SystemVcall(std::vector<DataObject> arguments, DataObject returnType, size_t alignment = SIZE_QWORD); + ~x64SystemVcall() override; + + regs_t getRegisters() override; + void** getStackArgumentPtr(const Registers &registers) override; + + void* getArgumentPtr(size_t index, const Registers& registers) override; + void onArgumentPtrChanged(size_t index, const Registers& registers, void* argumentPtr) override; + + void* getReturnPtr(const Registers& registers) override; + void onReturnPtrChanged(const Registers& registers, void* returnPtr) override; + + private: + void* m_returnBuffer; + }; +} \ No newline at end of file diff --git a/vendor/dynohook/win64/include/dynohook/conventions/x64_windows_call.h b/vendor/dynohook/win64/include/dynohook/conventions/x64_windows_call.h new file mode 100644 index 000000000..a72e3b175 --- /dev/null +++ b/vendor/dynohook/win64/include/dynohook/conventions/x64_windows_call.h @@ -0,0 +1,40 @@ +#pragma once + +#include <dynohook/convention.h> + +/* + Source: DynCall manual and Windows docs + + Registers: + - rax = return value + - rsp = stack pointer + - xmm0 = floating point return value + + Parameter passing: + - first parameter in rcx/xmm0, second parameter in rdx/xmm1, third parameter in r8/xmm2, forth parameter in r9/xmm3, rest on the stack + - stack parameter order: right-to-left + - caller cleans up the stack + - alignment: 8 bytes + - shadow space: 32 bytes (for arguments) + + Return values: + - return values of pointer or intergral type (<= 64 bits) are returned via the rax register + - integers > 64 bits are returned via the rax registers as pointers + - floating pointer types are returned via the xmm0 register +*/ +namespace dyno { + class DYNO_API x64WindowsCall : public ICallingConvention { + public: + x64WindowsCall(std::vector<DataObject> arguments, DataObject returnType, size_t alignment = SIZE_QWORD); + ~x64WindowsCall() override = default; + + regs_t getRegisters() override; + void** getStackArgumentPtr(const Registers &registers) override; + + void* getArgumentPtr(size_t index, const Registers& registers) override; + void onArgumentPtrChanged(size_t index, const Registers& registers, void* argumentPtr) override; + + void* getReturnPtr(const Registers& registers) override; + void onReturnPtrChanged(const Registers& registers, void* returnPtr) override; + }; +} \ No newline at end of file diff --git a/vendor/dynohook/win64/include/dynohook/conventions/x86_gcc_cdecl.h b/vendor/dynohook/win64/include/dynohook/conventions/x86_gcc_cdecl.h new file mode 100644 index 000000000..2af263382 --- /dev/null +++ b/vendor/dynohook/win64/include/dynohook/conventions/x86_gcc_cdecl.h @@ -0,0 +1,7 @@ +#pragma once + +#include "x86_ms_cdecl.h" + +namespace dyno { + typedef x86MsCdecl x86GccCdecl; +} \ No newline at end of file diff --git a/vendor/dynohook/win64/include/dynohook/conventions/x86_gcc_thiscall.h b/vendor/dynohook/win64/include/dynohook/conventions/x86_gcc_thiscall.h new file mode 100644 index 000000000..90baa8ed1 --- /dev/null +++ b/vendor/dynohook/win64/include/dynohook/conventions/x86_gcc_thiscall.h @@ -0,0 +1,8 @@ +#pragma once + +#include <dynohook/convention.h> +#include "x86_ms_cdecl.h" + +namespace dyno { + typedef x86MsCdecl x86GccThiscall; +} \ No newline at end of file diff --git a/vendor/dynohook/win64/include/dynohook/conventions/x86_ms_cdecl.h b/vendor/dynohook/win64/include/dynohook/conventions/x86_ms_cdecl.h new file mode 100644 index 000000000..42794b19f --- /dev/null +++ b/vendor/dynohook/win64/include/dynohook/conventions/x86_ms_cdecl.h @@ -0,0 +1,43 @@ +#pragma once + +#include <dynohook/convention.h> + +/* + Source: DynCall manual and Windows docs + + Registers: + - eax = return value + - edx = return value + - esp = stack pointer + - st0 = floating point return value + + Parameter passing: + - stack parameter order: right-to-left + - caller cleans up the stack + - all arguments are pushed onto the stack + - alignment: 4 bytes + + Return values: + - return values of pointer or intergral type (<= 32 bits) are returned via the eax register + - integers > 32 bits are returned via the eax and edx registers + - floating pointer types are returned via the st0 register +*/ +namespace dyno { + class DYNO_API x86MsCdecl : public ICallingConvention { + public: + x86MsCdecl(std::vector<DataObject> arguments, DataObject returnType, size_t alignment = 4); + ~x86MsCdecl() override; + + regs_t getRegisters() override; + void** getStackArgumentPtr(const Registers& registers) override; + + void* getArgumentPtr(size_t index, const Registers& registers) override; + void onArgumentPtrChanged(size_t index, const Registers& registers, void* argumentPtr) override; + + void* getReturnPtr(const Registers& registers) override; + void onReturnPtrChanged(const Registers& registers, void* returnPtr) override; + + private: + void* m_returnBuffer; + }; +} \ No newline at end of file diff --git a/vendor/dynohook/win64/include/dynohook/conventions/x86_ms_fastcall.h b/vendor/dynohook/win64/include/dynohook/conventions/x86_ms_fastcall.h new file mode 100644 index 000000000..a8f8ab458 --- /dev/null +++ b/vendor/dynohook/win64/include/dynohook/conventions/x86_ms_fastcall.h @@ -0,0 +1,32 @@ +#pragma once + +#include <dynohook/convention.h> +#include "x86_ms_stdcall.h" + +/* + Source: DynCall manual and Windows docs + + Registers: + - eax = return value + - edx = return value + - esp = stack pointer + - st0 = floating point return value + + Parameter passing: + - first parameter in ecx, second parameter in edx, rest on the stack + - stack parameter order: right-to-left + - callee cleans up the stack + - alignment: 4 bytes + + Return values: + - return values of pointer or intergral type (<= 32 bits) are returned via the eax register + - integers > 32 bits are returned via the eax and edx registers + - floating pointer types are returned via the st0 register +*/ +namespace dyno { + class DYNO_API x86MsFastcall : public x86MsStdcall { + public: + x86MsFastcall(std::vector<DataObject> arguments, DataObject returnType, size_t alignment = 4); + ~x86MsFastcall() override = default; + }; +} \ No newline at end of file diff --git a/vendor/dynohook/win64/include/dynohook/conventions/x86_ms_stdcall.h b/vendor/dynohook/win64/include/dynohook/conventions/x86_ms_stdcall.h new file mode 100644 index 000000000..0757463cc --- /dev/null +++ b/vendor/dynohook/win64/include/dynohook/conventions/x86_ms_stdcall.h @@ -0,0 +1,34 @@ +#pragma once + +#include <dynohook/convention.h> +#include "x86_ms_cdecl.h" + +/* + Source: DynCall manual and Windows docs + + Registers: + - eax = return value + - edx = return value + - esp = stack pointer + - st0 = floating point return value + + Parameter passing: + - stack parameter order: right-to-left + - callee cleans up the stack + - all arguments are pushed onto the stack + - alignment: 4 bytes + + Return values: + - return values of pointer or intergral type (<= 32 bits) are returned via the eax register + - integers > 32 bits are returned via the eax and edx registers + - floating pointer types are returned via the st0 register +*/ +namespace dyno { + class DYNO_API x86MsStdcall : public x86MsCdecl { + public: + x86MsStdcall(std::vector<DataObject> arguments, DataObject returnType, size_t alignment = 4); + ~x86MsStdcall() override = default; + + size_t getPopSize() override; + }; +} \ No newline at end of file diff --git a/vendor/dynohook/win64/include/dynohook/conventions/x86_ms_thiscall.h b/vendor/dynohook/win64/include/dynohook/conventions/x86_ms_thiscall.h new file mode 100644 index 000000000..89918ddbc --- /dev/null +++ b/vendor/dynohook/win64/include/dynohook/conventions/x86_ms_thiscall.h @@ -0,0 +1,33 @@ +#pragma once + +#include <dynohook/convention.h> +#include "x86_ms_stdcall.h" + +/* + Source: DynCall manual and Windows docs + + Registers: + - eax = return value + - ecx = this pointer + - edx = return value + - esp = stack pointer + - st0 = floating point return value + + Parameter passing: + - stack parameter order: right-to-left + - callee cleans up the stack + - all other arguments are pushed onto the stack + - alignment: 4 bytes + + Return values: + - return values of pointer or intergral type (<= 32 bits) are returned via the eax register + - integers > 32 bits are returned via the eax and edx registers + - floating pointer types are returned via the st0 register +*/ +namespace dyno { + class DYNO_API x86MsThiscall : public x86MsStdcall { + public: + x86MsThiscall(std::vector<DataObject> arguments, DataObject returnType, size_t alignment = 4); + ~x86MsThiscall() override = default; + }; +} \ No newline at end of file diff --git a/vendor/dynohook/win64/include/dynohook/core.h b/vendor/dynohook/win64/include/dynohook/core.h new file mode 100644 index 000000000..4188b9896 --- /dev/null +++ b/vendor/dynohook/win64/include/dynohook/core.h @@ -0,0 +1,126 @@ +#pragma once + +#include "platform.h" +#include <iostream> +#include <iomanip> +#include <sstream> +#include <cassert> + +#include <dynohook_export.h> + +namespace dyno { + template<typename T> + std::string int_to_hex(T i) { + std::stringstream stream; + stream << "0x" << std::setfill('0') << std::setw(sizeof(T) * 2) << std::hex + << (uintptr_t) i; // We cast to the highest possible int because uint8_t will be printed as char + + return stream.str(); + } + + //http://stackoverflow.com/questions/4840410/how-to-align-a-pointer-in-c + static inline uintptr_t AlignUpwards(uintptr_t stack, size_t align) { + assert(align > 0 && (align & (align - 1)) == 0); /* Power of 2 */ + assert(stack != 0); + + auto addr = stack; + if (addr % align != 0) + addr += align - (addr % align); + assert(addr >= stack); + return addr; + } + + static inline uintptr_t AlignDownwards(uintptr_t stack, size_t align) { + assert(align > 0 && (align & (align - 1)) == 0); /* Power of 2 */ + assert(stack != 0); + + auto addr = stack; + addr -= addr % align; + assert(addr <= stack); + return addr; + } + + //Credit to Dogmatt on unknowncheats.me for IsValidPtr + // and https://docs.microsoft.com/en-us/windows-hardware/drivers/gettingstarted/virtual-address-spaces + #if DYNO_ARCH_X86 == 64 + #define VALID_MAX_MEMORY_ADDRESS ((void*)0x000F000000000000) + #else + #define VALID_MAX_MEMORY_ADDRESS ((void*)0xFFF00000) + #endif // DYNO_PLATFORM_WINDOWS + #define VALID_MIN_MEMORY_ADDRESS ((void*)0x10000) + + inline bool isValidPtr(void* p) { return (p >= VALID_MIN_MEMORY_ADDRESS) && (p < VALID_MAX_MEMORY_ADDRESS) && p != nullptr; } + + inline bool isMatch(const char* addr, const char* pat, const char* msk) { + size_t n = 0; + while (addr[n] == pat[n] || msk[n] == (uint8_t)'?') { + if (!msk[++n]) { + return true; + } + } + return false; + } + +#define INRANGE(x,a,b) (x >= a && x <= b) +#define getBits(x) (INRANGE(x,'0','9') ? (x - '0') : ((x&(~0x20)) - 'A' + 0xa)) +#define getByte(x) (getBits(x[0]) << 4 | getBits(x[1])) + + constexpr uint8_t FINDPATTERN_SCRATCH_SIZE = 64; + + // https://github.com/learn-more/findpattern-bench/blob/master/patterns/learn_more.h + // must use space between bytes and ?? for wildcards. Do not add 0x prefix + DYNO_API uintptr_t findPattern(uintptr_t rangeStart, size_t len, const char* pattern); + DYNO_API uintptr_t findPattern_rev(uintptr_t rangeStart, size_t len, const char* pattern); + DYNO_API uintptr_t getPatternSize(const char* pattern); + + DYNO_API bool boundedAllocSupported(); + DYNO_API uintptr_t boundAlloc(uintptr_t min, uintptr_t max, size_t size); + DYNO_API uintptr_t boundAllocLegacy(uintptr_t min, uintptr_t max, size_t size); + DYNO_API void boundAllocFree(uintptr_t address, size_t size); + DYNO_API size_t getAllocationAlignment(); + DYNO_API size_t getPageSize(); + +#if DYNO_ARCH_X86 == 64 + DYNO_API uint64_t calc_2gb_below(uint64_t address); + DYNO_API uint64_t calc_2gb_above(uint64_t address); +#endif // DYNO_ARCH_X86 + + // we cannot return a char array from a function, therefore we need a wrapper + template<size_t N> + struct String { + char c[N]; + }; + + template<size_t N, size_t L> + constexpr auto repeat_n(const char (&pattern)[L]) { + static_assert(N != 0, "Size is empty!"); + static_assert(L != 3, "Length is invalid!"); + constexpr auto length = L - 1; + constexpr auto size = N * length; + constexpr auto last = size - 1; + + String<size> result = {}; + for (size_t i = 0; i < last; i += length) { + for (size_t j = 0; j < length; j++) { + result.c[i + j] = pattern[j]; + } + } + result.c[last] = '\0'; + return result; + } + + template<size_t ...L> + constexpr auto concat(const char (&...strings)[L]) { + constexpr size_t N = (... + L) - sizeof...(L); + String<N + 1> result = {}; + result.c[N] = '\0'; + + char* dst = result.c; + for (const char* src : {strings...}) { + for (; *src != '\0'; src++, dst++) { + *dst = *src; + } + } + return result; + } +} \ No newline at end of file diff --git a/vendor/dynohook/win64/include/dynohook/detours/detour.h b/vendor/dynohook/win64/include/dynohook/detours/detour.h new file mode 100644 index 000000000..d6210fe8a --- /dev/null +++ b/vendor/dynohook/win64/include/dynohook/detours/detour.h @@ -0,0 +1,150 @@ +#pragma once + +#include <dynohook/disassembler.h> +#include <dynohook/mem_accessor.h> +#include <dynohook/mem_protector.h> +#include <dynohook/instruction.h> +#include <dynohook/nat_hook.h> +#include <optional> +#include <cassert> + +namespace dyno { + class DYNO_API Detour : public NatHook { + public: + Detour(uintptr_t fnAddress, const ConvFunc& convention, Mode mode); + ~Detour() override; + + bool unhook() override; + + /** + This is for restoring hook bytes if a 3rd party uninstalled them. + DO NOT call this after unhook(). This may only be called after hook() + but before unhook() + **/ + bool rehook() override; + + HookMode getMode() const override { + return HookMode::Detour; + } + + virtual Mode getArchType() const = 0; + + uint8_t getMaxDepth() const; + + void setMaxDepth(uint8_t maxDepth); + + void setIsFollowCallOnFnAddress(bool value); + + const uintptr_t& getTarget() const override { + return m_fnAddress; + } + + const uintptr_t& getAddress() const override { + return m_trampoline; + } + + protected: + uintptr_t m_fnAddress; + ZydisDisassembler m_disasm; + uint8_t m_maxDepth{ 5 }; + bool m_isFollowCallOnFnAddress{ true }; // whether follow 'CALL' destination + uint16_t m_trampolineSz{ 0 }; + uintptr_t m_trampoline{ 0 }; + insts_t m_originalInsts; + + /* + * Save the instructions used for the hook so that we can re-write in rehook() + * Note: There's a nop range we store too so that it doesn't need to be re-calculated + */ + insts_t m_hookInsts; + uint16_t m_nopProlOffset{ 0 }; + uint16_t m_nopSize{ 0 }; + uint32_t m_hookSize{ 0 }; + + /** + * Walks the given vector of instructions and sets roundedSz to the lowest size possible that doesn't split any instructions and is greater than minSz. + * If end of function is encountered before this condition an empty optional is returned. Returns instructions in the range start to adjusted end + */ + static std::optional<insts_t> calcNearestSz(const insts_t& functionInsts, uintptr_t minSz, uintptr_t& roundedSz); + + /** + * If function starts with a jump follow it until the first non-jump instruction, recursively. This handles already hooked functions + * and also compilers that emit jump tables on function call. Returns true if resolution was successful (nothing to resolve, or resolution worked), + * false if resolution failed. + */ + bool followJmp(insts_t& functionInsts, uint8_t curDepth = 0); + + /** + * Expand the prologue up to the address of the last jmp that points back into the prologue. This + * is necessary because we modify the location of things in the prologue, so re-entrant jmps point + * to the wrong place. Therefore we move all of it to the trampoline where there is ample space to + * relocate and create jmp tbl entries + */ + bool expandProlSelfJmps(insts_t& prol, + const insts_t& func, + uintptr_t& minProlSz, + uintptr_t& roundProlSz + ); + + /** + * Insert nops from [Base, Base+size). + * Generates as many nop instructions as necessary to fill the give size. + * This function ensures that generated nops won't be reused as a code cave by Polyhook. + * Hence, it will never emit more than 8 0x90 single byte nops in a row. + */ + insts_t make_nops(uintptr_t address, uint16_t size) const; + + static void buildRelocationList( + insts_t& prologue, + uintptr_t roundProlSz, + intptr_t delta, + insts_t& instsNeedingEntry, + insts_t& instsNeedingReloc, + insts_t& instsNeedingTranslation + ); + + /** + * Corrects displacement for IP-relative instructions + * @return Jump table entries + */ + template<typename MakeJmpFn> + insts_t relocateTrampoline( + insts_t& prologue, + uintptr_t jmpTblStart, + const intptr_t delta, + MakeJmpFn makeJmp, + const insts_t& instsNeedingReloc, + const insts_t& instsNeedingEntry + ) { + uintptr_t jmpTblCurAddr = jmpTblStart; + insts_t jmpTblEntries; + + // MIGHT NEED TO REDO ALL THIS JUMP TABLE STUFF IT's CONFUSING - needlessly + for (auto& inst: prologue) { + + if (std::find(instsNeedingEntry.begin(), instsNeedingEntry.end(), inst) != instsNeedingEntry.end()) { + assert(inst.hasDisplacement()); + // make an entry pointing to where inst did point to + auto entry = makeJmp(jmpTblCurAddr, inst); + + // Move to next entry, some jmp types can emit more than one instruction + jmpTblCurAddr += calcInstsSz(entry); + + writeEncoding(entry); + jmpTblEntries.insert(jmpTblEntries.end(), entry.begin(), entry.end()); + } else if (std::find(instsNeedingReloc.begin(), instsNeedingReloc.end(), inst) != instsNeedingReloc.end()) { + assert(inst.hasDisplacement()); + + const uintptr_t instsOldDest = inst.getDestination(); + inst.setAddress(inst.getAddress() + delta); + inst.setDestination(instsOldDest); + } else { + inst.setAddress(inst.getAddress() + delta); + } + + writeEncoding(inst); + } + return jmpTblEntries; + } + }; +} \ No newline at end of file diff --git a/vendor/dynohook/win64/include/dynohook/detours/nat_detour.h b/vendor/dynohook/win64/include/dynohook/detours/nat_detour.h new file mode 100644 index 000000000..82cc28d1c --- /dev/null +++ b/vendor/dynohook/win64/include/dynohook/detours/nat_detour.h @@ -0,0 +1,15 @@ +#pragma once + +#if DYNO_ARCH_X86 == 32 +#include <dynohook/detours/x86_detour.h> +#elif DYNO_ARCH_X86 == 64 +#include <dynohook/detours/x64_detour.h> +#endif + +namespace dyno { +#if DYNO_ARCH_X86 == 32 + using NatDetour = x86Detour; +#elif DYNO_ARCH_X86 == 64 + using NatDetour = x64Detour; +#endif +} \ No newline at end of file diff --git a/vendor/dynohook/win64/include/dynohook/detours/x64_detour.h b/vendor/dynohook/win64/include/dynohook/detours/x64_detour.h new file mode 100644 index 000000000..96ea5f5d9 --- /dev/null +++ b/vendor/dynohook/win64/include/dynohook/detours/x64_detour.h @@ -0,0 +1,56 @@ +#pragma once + +#include <dynohook/detours/detour.h> +#include <dynohook/range_allocator.h> + +namespace dyno { + class DYNO_API x64Detour final : public Detour { + public: + enum detour_scheme_t : uint8_t { + VALLOC2 = 1 << 0, // use virtualalloc2 to allocate in range. Only on win10 > 1803 + INPLACE = 1 << 1, // use push-ret for fnCallback in-place storage. + CODE_CAVE = 1 << 2, //searching for code-cave to keep fnCallback. + INPLACE_SHORT = 1 << 3, // spoils rax register + RECOMMENDED = VALLOC2 | INPLACE | CODE_CAVE, + // first try to allocate, then fallback to code cave if not supported. + // will not fallback on failure of allocation + ALL = RECOMMENDED | INPLACE_SHORT, + }; + + x64Detour(uintptr_t fnAddress, const ConvFunc& convention); + ~x64Detour() override; + + bool hook() override; + bool unhook() override; + + Mode getArchType() const override; + + static uint8_t getMinJmpSize(); + + detour_scheme_t getDetourScheme() const; + + void setDetourScheme(detour_scheme_t scheme); + + static const char* printDetourScheme(detour_scheme_t scheme); + + protected: + RangeAllocator m_allocator; + std::optional<uintptr_t> m_valloc2_region; + + detour_scheme_t m_chosenScheme{ detour_scheme_t::VALLOC2 }; + detour_scheme_t m_detourScheme{ detour_scheme_t::RECOMMENDED }; // this is the most stable configuration. + + bool makeTrampoline(insts_t& prologue, insts_t& outJmpTable); + + // assumes we are looking within a +-2GB window + template<uint16_t SIZE> + std::optional<uintptr_t> findNearestCodeCave(uintptr_t address); + + Instruction makeRelJmpWithAbsDest(uintptr_t address, uintptr_t abs_destination); + std::optional<uintptr_t> generateTranslationRoutine(const Instruction& instruction, uintptr_t resume_address); + + bool makeInplaceTrampoline(uintptr_t base_address, const std::function<void(asmjit::x86::Assembler&)>& builder); + + bool allocateJumpToBridge(); + }; +} \ No newline at end of file diff --git a/vendor/dynohook/win64/include/dynohook/detours/x86_detour.h b/vendor/dynohook/win64/include/dynohook/detours/x86_detour.h new file mode 100644 index 000000000..b4d474930 --- /dev/null +++ b/vendor/dynohook/win64/include/dynohook/detours/x86_detour.h @@ -0,0 +1,18 @@ +#pragma once + +#include <dynohook/detours/detour.h> + +namespace dyno { + class DYNO_API x86Detour final : public Detour { + public: + x86Detour(uintptr_t fnAddress, const ConvFunc& convention); + ~x86Detour() override = default; + + virtual bool hook() override; + + Mode getArchType() const override; + + protected: + bool makeTrampoline(insts_t& prologue, insts_t& trampolineOut); + }; +} \ No newline at end of file diff --git a/vendor/dynohook/win64/include/dynohook/disassembler.h b/vendor/dynohook/win64/include/dynohook/disassembler.h new file mode 100644 index 000000000..b5128c61c --- /dev/null +++ b/vendor/dynohook/win64/include/dynohook/disassembler.h @@ -0,0 +1,60 @@ +#pragma once + +#include "instruction.h" +#include "mem_accessor.h" +#include <unordered_map> +#include <dynohook_export.h> + +extern "C" { + typedef struct ZydisDecoder_ ZydisDecoder; + typedef struct ZydisFormatter_ ZydisFormatter; + typedef struct ZydisDecodedOperand_ ZydisDecodedOperand; + typedef struct ZydisDecodedInstruction_ ZydisDecodedInstruction; +} + +namespace dyno { + typedef std::unordered_map<uintptr_t, insts_t> branch_map_t; + + class DYNO_API ZydisDisassembler { + public: + explicit ZydisDisassembler(Mode mode); + virtual ~ZydisDisassembler(); + + insts_t disassemble(uintptr_t firstInstruction, uintptr_t start, uintptr_t end, const MemAccessor& accessor); + + static bool isConditionalJump(const Instruction& instruction); + + static bool isFuncEnd(const Instruction& instruction, bool firstFunc = false); + + static bool isPadBytes(const Instruction& instruction) { + // supports multi-byte nops + return instruction.getMnemonic() == "nop"; + } + + void addToBranchMap(insts_t& insVec, const Instruction& inst); + + const branch_map_t& getBranchMap() const { + return m_branchMap; + } + + Mode getMode() const { + return m_mode; + } + + protected: + bool getOpStr(ZydisDecodedInstruction* pInstruction, const ZydisDecodedOperand* decoded_operands, uintptr_t addr, std::string* pOpStrOut); + static void setDisplacementFields(Instruction& inst, const ZydisDecodedInstruction* zydisInst, const ZydisDecodedOperand* operands) ; + typename branch_map_t::mapped_type& updateBranchMap(uintptr_t key, const Instruction& new_val); + + // we use a void pointer here since we don't want forward declare the ZydisDecoder + ZydisDecoder* m_decoder; + ZydisFormatter* m_formatter; + + Mode m_mode; + + /* key = address of instruction pointed at (dest of jump). Value = set of unique instruction branching to dest + Must only hold entries from the last segment disassembled. I.E clear every new call to disassemble + */ + branch_map_t m_branchMap; + }; +} \ No newline at end of file diff --git a/vendor/dynohook/win64/include/dynohook/dynohook_export.h b/vendor/dynohook/win64/include/dynohook/dynohook_export.h new file mode 100644 index 000000000..ea09d7d6f --- /dev/null +++ b/vendor/dynohook/win64/include/dynohook/dynohook_export.h @@ -0,0 +1,43 @@ + +#ifndef DYNO_API_H +#define DYNO_API_H + +#ifdef DYNO_STATIC +# define DYNO_API +# define DYNO_PRIVATE +#else +# ifndef DYNO_API +# ifdef dynohook_EXPORTS + /* We are building this library */ +# define DYNO_API +# else + /* We are using this library */ +# define DYNO_API +# endif +# endif + +# ifndef DYNO_PRIVATE +# define DYNO_PRIVATE +# endif +#endif + +#ifndef DYNO_DEPRECATED +# define DYNO_DEPRECATED __declspec(deprecated) +#endif + +#ifndef DYNO_DEPRECATED_EXPORT +# define DYNO_DEPRECATED_EXPORT DYNO_API DYNO_DEPRECATED +#endif + +#ifndef DYNO_DEPRECATED_NO_EXPORT +# define DYNO_DEPRECATED_NO_EXPORT DYNO_PRIVATE DYNO_DEPRECATED +#endif + +/* NOLINTNEXTLINE(readability-avoid-unconditional-preprocessor-if) */ +#if 0 /* DEFINE_NO_DEPRECATED */ +# ifndef DYNO_NO_DEPRECATED +# define DYNO_NO_DEPRECATED +# endif +#endif + +#endif /* DYNO_API_H */ diff --git a/vendor/dynohook/win64/include/dynohook/fb_allocator.h b/vendor/dynohook/win64/include/dynohook/fb_allocator.h new file mode 100644 index 000000000..7b1e66670 --- /dev/null +++ b/vendor/dynohook/win64/include/dynohook/fb_allocator.h @@ -0,0 +1,87 @@ +// https://www.codeproject.com/Articles/1272619/A-Fixed-Block-Memory-Allocator-in-C +// +// The fb_allocator is a fixed block memory allocator that handles a +// single block size. +// +#pragma once + +#include "mem_accessor.h" + +typedef void* ALLOC_HANDLE; + +typedef struct { + void* pNext; +} ALLOC_Block; + +typedef struct { + const char* name; + const char* pPool; + const size_t objectSize; + const size_t blockSize; + const uint32_t maxBlocks; + ALLOC_Block* pHead; + uint16_t poolIndex; + uint16_t blocksInUse; + uint16_t maxBlocksInUse; + uint16_t allocations; + uint16_t deallocations; +} ALLOC_Allocator; + +// Align fixed blocks on X-byte boundary based on CPU architecture. +// Set value to 1, 2, 4 or 8. +#define ALLOC_MEM_ALIGN (1) + +// Get the maximum between a or b +#define ALLOC_MAX(a,b) (((a)>(b))?(a):(b)) + +// Ensure the memory block size is: (a) is aligned on desired boundary and (b) at +// least the size of a ALLOC_Allocator*. +#define ALLOC_BLOCK_SIZE(_size_) \ + (ALLOC_MAX((MEMORY_ROUND_UP(_size_, ALLOC_MEM_ALIGN)), sizeof(ALLOC_Allocator*))) + +// Defines block memory, allocator instance and a handle. On the example below, +// the ALLOC_Allocator instance is myAllocatorObj and the handle is myAllocator. +// _name_ - the allocator name +// _size_ - fixed memory block size in bytes +// _objects_ - number of fixed memory blocks +// e.g. ALLOC_DEFINE(myAllocator, 32, 10) +#define ALLOC_DEFINE(_name_, _size_, _objects_) \ + static char _name_##Memory[ALLOC_BLOCK_SIZE(_size_) * (_objects_)] = { 0 }; \ + static ALLOC_Allocator _name_##Obj = { #_name_, _name_##Memory, _size_, \ + ALLOC_BLOCK_SIZE(_size_), _objects_, NULL, 0, 0, 0, 0, 0 }; \ + static ALLOC_HANDLE _name_ = &_name_##Obj; + +namespace dyno { + // wrapper over fb_allocator in C, with heap backing from VirtualAlloc2 to enforce range + class DYNO_API FBAllocator final { + public: + FBAllocator(uintptr_t min, uintptr_t max, uint8_t blockSize, uint8_t blockCount); + ~FBAllocator(); + + bool initialize(); + + char* allocate(); + + char* callocate(uint8_t num); + + void deallocate(char* mem); + + bool inRange(uintptr_t addr) const; + + bool intersectsRange(uintptr_t min, uintptr_t max) const; + + // if a range intersections, by what % of the given range is the overlap + uint8_t intersectionLoadFactor(uintptr_t min, uintptr_t max) const; + + private: + bool m_alloc2Supported; + uint8_t m_usedBlocks; + uint8_t m_maxBlocks; + uint8_t m_blockSize; + uintptr_t m_min; + uintptr_t m_max; + uintptr_t m_dataPool; + + std::unique_ptr<ALLOC_Allocator> m_allocator; + }; +} diff --git a/vendor/dynohook/win64/include/dynohook/function_traits.h b/vendor/dynohook/win64/include/dynohook/function_traits.h new file mode 100644 index 000000000..d0fe41e62 --- /dev/null +++ b/vendor/dynohook/win64/include/dynohook/function_traits.h @@ -0,0 +1,100 @@ +#pragma once + +#include "convention.h" +#include <type_traits> + +namespace dyno { + template<typename T> + constexpr DataType GetType() { + if constexpr (std::is_same_v<T, void>) return DataType::Void; + else if constexpr (std::is_same_v<T, bool>) return DataType::Bool; + else if constexpr (std::is_same_v<T, int8_t>) return DataType::Int8; + else if constexpr (std::is_same_v<T, uint8_t>) return DataType::UInt8; + else if constexpr (std::is_same_v<T, int16_t>) return DataType::Int16; + else if constexpr (std::is_same_v<T, uint16_t>) return DataType::UInt16; + else if constexpr (std::is_same_v<T, int32_t>) return DataType::Int32; + else if constexpr (std::is_same_v<T, uint32_t>) return DataType::UInt32; + else if constexpr (std::is_same_v<T, int64_t>) return DataType::Int64; + else if constexpr (std::is_same_v<T, uint64_t> || std::is_same_v<T, unsigned long>) return DataType::UInt64; + else if constexpr (std::is_same_v<T, float>) return DataType::Float; + else if constexpr (std::is_same_v<T, double>) return DataType::Double; + else if constexpr (std::is_same_v<T, const char*>) return DataType::String; + else if constexpr (std::is_same_v<T, const wchar_t*>) return DataType:: WString; + else if constexpr (std::is_pointer<T>::value || std::is_reference_v<T>) return DataType::Pointer; + else { + if (sizeof(T) > sizeof(uint64_t)) { + return DataType::Pointer; + } else if constexpr (sizeof(T) > sizeof(uint32_t)) { + return DataType::UInt64; + } else if constexpr (sizeof(T) > sizeof(uint16_t)) { + return DataType::UInt32; + } else if constexpr (sizeof(T) > sizeof(uint8_t)) { + return DataType::UInt16; + } else if constexpr (sizeof(T) > sizeof(bool)) { + return DataType::UInt8; + } + return DataType::Bool; + } + } + + template<typename Function> + struct function_traits; + + template<typename Ret, typename... Args> + struct function_traits<Ret(*)(Args...)> { + static constexpr size_t arity = sizeof...(Args); + + static std::array<DataObject, arity> args() { + return { GetType<Args>() ...}; + } + + static DataObject ret() { + return GetType<Ret>(); + } + }; + + template<typename Class, typename Ret, typename... Args> + struct function_traits<Ret(Class::*)(Args...)> { + static constexpr size_t arity = sizeof...(Args); + + static std::array<DataObject, arity + 1> args() { + std::array<DataObject, arity> originalArgs = { GetType<Args>() ... }; + std::array<DataObject, arity + 1> result; + result[0] = DataType::Pointer; + std::copy(originalArgs.begin(), originalArgs.end(), result.begin() + 1); + return result; + } + + static DataObject ret() { + return GetType<Ret>(); + } + }; + + template <typename Class, typename Ret, typename... Args> + class function_traits<Ret (Class::*)(Args...) const> : public function_traits<Ret (Class::*)(Args...)> {}; + template <typename Class, typename Ret, typename... Args> + class function_traits<Ret (Class::*)(Args...) volatile> : public function_traits<Ret (Class::*)(Args...)> {}; + template <typename Class, typename Ret, typename... Args> + class function_traits<Ret (Class::*)(Args...) const volatile> : public function_traits<Ret (Class::*)(Args...)> {}; + + + template<typename Ret, typename... Args> + struct function_traits<Ret(Args...)> { + static constexpr size_t arity = sizeof...(Args); + + static std::array<DataObject, arity> args() { + return { GetType<Args>() ...}; + } + + static DataObject ret() { + return GetType<Ret>(); + } + }; + + template<class Ret, class... ArgTypes> + class function_traits<Ret(ArgTypes...) const> : public function_traits<Ret(ArgTypes...)> {}; + template<class Ret, class... ArgTypes> + class function_traits<Ret(ArgTypes...) volatile> : public function_traits<Ret(ArgTypes...)> {}; + template<class Ret, class... ArgTypes> + class function_traits<Ret(ArgTypes...) const volatile> : public function_traits<Ret(ArgTypes...)> {}; +} \ No newline at end of file diff --git a/vendor/dynohook/win64/include/dynohook/helpers.h b/vendor/dynohook/win64/include/dynohook/helpers.h new file mode 100644 index 000000000..9e17c7fb1 --- /dev/null +++ b/vendor/dynohook/win64/include/dynohook/helpers.h @@ -0,0 +1,17 @@ +#pragma once + +#define DYNO_NONCOPYABLE(x) \ + x(const x&) = delete; \ + x(x&&) = delete; \ + x& operator=(const x&) = delete; \ + x& operator=(x&&) = delete; + +#define DYNO_ITERATABLE(t, o) \ + std::vector<t>::iterator begin() { return o.begin(); } \ + std::vector<t>::iterator end() { return o.end(); } \ + std::vector<t>::reverse_iterator rbegin() { return o.rbegin(); } \ + std::vector<t>::reverse_iterator rend() { return o.rend(); } \ + std::vector<t>::const_iterator begin() const { return o.begin(); } \ + std::vector<t>::const_iterator end() const { return o.end(); } \ + std::vector<t>::const_reverse_iterator rbegin() const { return o.rbegin(); } \ + std::vector<t>::const_reverse_iterator rend() const { return o.rend(); } \ diff --git a/vendor/dynohook/win64/include/dynohook/hook.h b/vendor/dynohook/win64/include/dynohook/hook.h new file mode 100644 index 000000000..d0ce8a411 --- /dev/null +++ b/vendor/dynohook/win64/include/dynohook/hook.h @@ -0,0 +1,100 @@ +#pragma once + +#include "mem_accessor.h" +#include "ihook.h" +#include "platform.h" + +#include <asmjit/asmjit.h> +#include <mutex> + +namespace dyno { + /** + * Creates and manages hooks at the beginning of a function. + * This hooking method requires knowledge of parameters and calling convention of the target function. + */ + class DYNO_API Hook : public MemAccessor, public IHook { + public: + explicit Hook(const ConvFunc& convention); + ~Hook() override = default; + DYNO_NONCOPYABLE(Hook) + + bool addCallback(CallbackType type, CallbackHandler handler) override; + bool removeCallback(CallbackType type, CallbackHandler handler) override; + bool isCallbackRegistered(CallbackType type, CallbackHandler handler) const override; + bool areCallbacksRegistered() const override; + + bool rehook() override { + return true; + } + + bool setHooked(bool state) override { + if (m_hooked == state) + return true; + + return state ? hook() : unhook(); + } + + bool isHooked() const override { + return m_hooked; + } + + const uintptr_t& getBridge() const { + return m_fnBridge; + } + + protected: + virtual bool createBridge() = 0; + virtual bool createPostCallback() = 0; + + ICallingConvention& getCallingConvention() override { + return *m_callingConvention; + } + Registers& getRegisters() override { + return m_registers; + } + + typedef asmjit::x86::Assembler Assembler; + + virtual void writeModifyReturnAddress(Assembler& a) = 0; + virtual void writeCallHandler(Assembler& a, CallbackType type) const = 0; + virtual int32_t writeSaveScratchRegisters(Assembler& a) const = 0; + virtual void writeRestoreScratchRegisters(Assembler& a) const = 0; + virtual void writeSaveRegisters(Assembler& a, bool post) const = 0; + virtual void writeRestoreRegisters(Assembler& a, bool post) const = 0; + virtual void writeRegToMem(Assembler& a, const Register& reg, [[maybe_unused]] bool post) const = 0; + virtual void writeMemToReg(Assembler& a, const Register& reg, [[maybe_unused]] bool post) const = 0; + +DYNO_OPTS_OFF + DYNO_NOINLINE ReturnAction DYNO_CDECL callbackHandler(CallbackType type); + DYNO_NOINLINE void* DYNO_CDECL getReturnAddress(void* stackPtr); + DYNO_NOINLINE void DYNO_CDECL setReturnAddress(void* retAddr, void* stackPtr); +DYNO_OPTS_ON + + protected: + asmjit::JitRuntime m_asmjit_rt; + std::mutex m_mutex; + + // address storage + uintptr_t m_fnBridge{ 0 }; + uintptr_t m_newRetAddr{ 0 }; + size_t m_fnBridgeSize{ 0 }; + size_t m_newRetAddrSize{ 0 }; + + // interface if the calling convention + std::unique_ptr<ICallingConvention> m_callingConvention; + + // register storage + Registers m_registers; + + // save the last return action of the pre callbackHander for use in the post handler. + std::vector<ReturnAction> m_lastPreReturnAction; + + // individual return's stack for stack pointers + std::unordered_map<void*, std::vector<void*>> m_retAddr; + + // callbacks list + std::unordered_map<CallbackType, std::vector<CallbackHandler>> m_handlers; + + bool m_hooked{ false }; + }; +} \ No newline at end of file diff --git a/vendor/dynohook/win64/include/dynohook/ihook.h b/vendor/dynohook/win64/include/dynohook/ihook.h new file mode 100644 index 000000000..346539fa6 --- /dev/null +++ b/vendor/dynohook/win64/include/dynohook/ihook.h @@ -0,0 +1,108 @@ +#pragma once + +#include "convention.h" +#include "registers.h" +#include <functional> +#include <dynohook_export.h> + +namespace dyno { + enum class HookMode : uint8_t { + UNKNOWN, + Detour, + VEHHOOK, + VTableSwap, + IAT, + EAT + }; + + enum class CallbackType : bool { + Pre, // callback will be executed before the original function + Post // callback will be executed after the original function + }; + + enum class ReturnAction : int32_t { + Ignored, // handler didn't take any action + Handled, // we did something, but real function should still be called + Override, // call real function, but use my return value + Supercede // skip real function; use my return value + }; + + class IHook; + using CallbackHandler = ReturnAction (*)(CallbackType, IHook&); + using ConvFunc = std::function<ICallingConvention*()>; + + /** + * @brief Creates and manages hooks at the beginning of a function. + * + * This hooking method requires knowledge of parameters and calling convention of the target function. + */ + class DYNO_API IHook { + public: + /** + * @brief Adds a callback handler to the hook. + * @param type The callback type. + * @param handler The callback handler that should be added. + * @return True on success, false otherwise. + */ + virtual bool addCallback(CallbackType type, CallbackHandler handler) = 0; + + /** + * @brief Removes a callback handler to the hook. + * @param type The callback type. + * @param handler The callback handler that should be removed. + * @return True on success, false otherwise. + */ + virtual bool removeCallback(CallbackType type, CallbackHandler handler) = 0; + + /** + * @brief Checks if a callback handler is already added. + * @param type The callback type. + * @param handler The callback handler that should be checked. + * @return True on success, false otherwise. + */ + virtual bool isCallbackRegistered(CallbackType type, CallbackHandler handler) const = 0; + + /** + * @brief Checks if there are any callback handlers added to this hook. + * @return True on success, false otherwise. + */ + virtual bool areCallbacksRegistered() const = 0; + + template<class T> + T getArgument(size_t index) { + return *(T*) getCallingConvention().getArgumentPtr(index, getRegisters()); + } + + template<class T> + void setArgument(size_t index, T value) { + void* argumentPtr = getCallingConvention().getArgumentPtr(index, getRegisters()); + *(T*) argumentPtr = value; + getCallingConvention().onArgumentPtrChanged(index, getRegisters(), argumentPtr); + } + + template<class T> + T getReturn() { + return *(T*) getCallingConvention().getReturnPtr(getRegisters()); + } + + template<class T> + void setReturn(T value) { + void* returnPtr = getCallingConvention().getReturnPtr(getRegisters()); + *(T*) returnPtr = value; + getCallingConvention().onReturnPtrChanged(getRegisters(), returnPtr); + } + + virtual bool hook() = 0; + virtual bool unhook() = 0; + virtual bool rehook() = 0; + virtual bool setHooked(bool state) = 0; + virtual bool isHooked() const = 0; + virtual const uintptr_t& getTarget() const = 0; + virtual const uintptr_t& getAddress() const = 0; + virtual HookMode getMode() const = 0; + + protected: + virtual ICallingConvention& getCallingConvention() = 0; + virtual Registers& getRegisters() = 0; + }; +} \ No newline at end of file diff --git a/vendor/dynohook/win64/include/dynohook/imanager.h b/vendor/dynohook/win64/include/dynohook/imanager.h new file mode 100644 index 000000000..9981f86fa --- /dev/null +++ b/vendor/dynohook/win64/include/dynohook/imanager.h @@ -0,0 +1,122 @@ +#pragma once + +#include "ihook.h" + +#include <memory> +#include <mutex> + +namespace dyno { + class IHookManager { + public: + /** + * @brief Creates a detour hook for a given function. + * If the function was already hooked, the existing Hook instance will be returned. + * @param pFunc address to apply the hook to. + * @param convention + * @return NULL or the Hook instance. + */ + virtual std::shared_ptr<IHook> hookDetour(void* pFunc, const ConvFunc& convention) = 0; + + /** + * @brief Creates a function hook inside the virtual function table. + * If the function was already hooked, the existing Hook instance will be returned. + * @param pClass address of the class to instantiate hook on. + * @param index index of the function to hook inside the virtual function table. (starting at 0) + * @param convention + * @return NULL or the Hook instance. + */ + virtual std::shared_ptr<IHook> hookVirtual(void* pClass, int index, const ConvFunc& convention) = 0; + + /** + * @brief Creates a function hook inside the virtual function table. + * If the function was already hooked, the existing Hook instance will be returned. + * @param pClass address of the class to instantiate hook on. + * @param pFunc address of virtual member function. Like (void*&) &IClass::PureVirtualMethod. + * @param convention + * @return NULL or the Hook instance. + */ + virtual std::shared_ptr<IHook> hookVirtual(void* pClass, void* pFunc, const ConvFunc& convention) = 0; + + /** + * @brief Removes all callbacks and restores the original function. + * @param pFunc + * @return true if the function was hooked previously and is unhooked now. False otherwhise. + */ + virtual bool unhookDetour(void* pFunc) = 0; + + /** + * @brief Removes all callbacks and restores the original function. + * @param pClass + * @param index + * @return true if the function was hooked previously and is unhooked now. False otherwhise. + */ + virtual bool unhookVirtual(void* pClass, int index) = 0; + + /** + * @brief Removes all callbacks and restores the original function. + * @param pClass + * @param pFunc + * @return true if the function was hooked previously and is unhooked now. False otherwhise. + */ + virtual bool unhookVirtual(void* pClass, void* pFunc) = 0; + + /** + * @brief Finds the hook for a given function. + * @param pFunc + * @return NULL or the found Hook instance. + */ + virtual std::shared_ptr<IHook> findDetour(void* pFunc) const = 0; + + /** + * @brief Finds the hook for a given class and virtual function index. + * @param pClass + * @param index + * @return NULL or the found Hook instance. + */ + virtual std::shared_ptr<IHook> findVirtual(void* pClass, int index) const = 0; + + /** + * @brief Finds the hook for a given class and virtual function ptr. + * @param pFunc + * @return NULL or the found Hook instance. + */ + virtual std::shared_ptr<IHook> findVirtual(void* pClass, void* pFunc) const = 0; + + /** + * @brief Removes all callbacks and restores all functions. + */ + virtual void unhookAll() = 0; + + /** + * @brief Unhooks all previously hooked functions in the virtual function table. + * @param pClass + */ + virtual void unhookAllVirtual(void* pClass) = 0; + + /** + * @brief Unhooks previously hooked virtual functions which not in use anymore. + */ + virtual void clearCache() = 0; + + /** + * @brief Gets a reference to the singleton instance of the HookManager. + * + * The HookManager is a static class that manages hooks for certain operations. + * This method provides access to the singleton instance of the HookManager. + * + * @return A reference to the singleton instance of the HookManager. + * + * @note The HookManager follows the Singleton pattern, ensuring that only one + * instance exists throughout the program's execution. + * + * Example usage: + * @code + * // Get a reference to the HookManager instance + * IHookManager& hookManager = IHookManager::Get(); + * // Use the hookManager reference to manage hooks + * // ... + * @endcode + */ + DYNO_API static IHookManager& Get(); + }; +} \ No newline at end of file diff --git a/vendor/dynohook/win64/include/dynohook/instruction.h b/vendor/dynohook/win64/include/dynohook/instruction.h new file mode 100644 index 000000000..a6ebbb097 --- /dev/null +++ b/vendor/dynohook/win64/include/dynohook/instruction.h @@ -0,0 +1,283 @@ +#pragma once + +#include <cstdint> +#include <vector> +#include <string> +#include <atomic> +#include <iomanip> +#include <sstream> +#include <cassert> + +namespace dyno { + enum class Mode : bool { + x86, + x64 + }; + + class MemAccessor; + class DYNO_API Instruction { + public: + union Displacement { + intptr_t Relative; + uintptr_t Absolute; + }; + + enum class OperandType : uint8_t { + Displacement, + Register, + Immediate, + }; + + Instruction(const MemAccessor* accessor, + uintptr_t address, + Displacement displacement, + uint8_t displacementOffset, + bool isRelative, + bool isIndirect, + std::vector<uint8_t>&& bytes, + std::string&& mnemonic, + std::string&& opStr, + Mode mode + ); + + uintptr_t getAbsoluteDestination() const { + return m_displacement.Absolute; + } + + uintptr_t getRelativeDestination() const { + return m_address + m_displacement.Relative + size(); + } + + /**Get the address of where the instruction points if it's a branching instruction + * @Notes: Handles eip/rip & immediate branches correctly + * **/ + uintptr_t getDestination() const; + + void setDestination(uintptr_t dest); + + /**Get the address of the instruction in memory**/ + uintptr_t getAddress() const { + return m_address; + } + + /**Set a new address of the instruction in memory + @Notes: Doesn't move the instruction, marks it for move on writeEncoding and relocates if appropriate**/ + void setAddress(uintptr_t address) { + m_address = address; + } + + /**Get the displacement from current address**/ + Displacement getDisplacement() const { + return m_displacement; + } + + /**Set where in the instruction bytes the offset is encoded**/ + void setDisplacementOffset(uint8_t offset) { + m_dispOffset = offset; + } + + void setBranching(const bool status) { + m_isBranching = status; + } + + void setCalling(const bool isCalling) { + m_isCalling = isCalling; + } + + /**Get the offset into the instruction bytes where displacement is encoded**/ + uint8_t getDisplacementOffset() const { + return m_dispOffset; + } + + /**Check if displacement is relative to eip/rip**/ + bool isDisplacementRelative() const { + return m_isRelative; + } + + /**Check if the instruction is a type with valid displacement**/ + bool hasDisplacement() const { + return m_hasDisplacement; + } + + void setHasDisplacement(bool hasDisplacement) { + m_hasDisplacement = hasDisplacement; + } + + bool isBranching() const { + if (m_isBranching && m_isRelative) { + assert(m_hasDisplacement); + } + return m_isBranching; + } + + bool isCalling() const { + return m_isCalling; + } + + bool isIndirect() const { + return m_isIndirect; + } + + const std::vector<uint8_t>& getBytes() const { + return m_bytes; + } + + /**Get short symbol name of instruction**/ + const std::string& getMnemonic() const { + return m_mnemonic; + } + + /**Get symbol name and parameters**/ + std::string getFullName() const { + return m_mnemonic + " " + m_opStr; + } + + /** Displacement size in bytes **/ + void setDisplacementSize(uint8_t size){ + m_dispSize = size; + } + + size_t getDispSize() const { + return m_dispSize; + } + + size_t size() const { + return m_bytes.size(); + } + + void setRelativeDisplacement(intptr_t displacement); + + void setAbsoluteDisplacement(uintptr_t displacement); + + uint32_t getUID() const { + return m_uid; + } + + template<typename T> + static T calculateRelativeDisplacement(uintptr_t from, uintptr_t to, uint8_t insSize) { + if (to < from) + return (T)(0 - (from - to) - insSize); + return (T)(to - (from + insSize)); + } + + void setIndirect(const bool isIndirect) { + m_isIndirect = isIndirect; + } + + void setImmediate(uintptr_t immediate){ + m_hasImmediate = true; + m_immediate = immediate; + } + + bool hasImmediate() const { + return m_hasImmediate; + } + + uintptr_t getImmediate() const { + return m_immediate; + } + + uint8_t getImmediateSize() const { + return m_immediateSize; + } + + void setImmediateSize(uint8_t size) { + m_immediateSize = size; + } + + void setRegister(int reg) { + m_register = reg; + } + + int getRegister() const { + return m_register; + } + + bool hasRegister() const { + return m_register != 0; + } + + void addOperandType(OperandType type){ + m_operands.emplace_back(type); + } + + const std::vector<OperandType>& getOperandTypes() const { + return m_operands; + } + + bool startsWithDisplacement() const; + + private: + const MemAccessor* m_accessor; + + int m_register; // Register operand when displacement is present + bool m_isIndirect; // Does this instruction get its destination via an indirect mem read (ff 25 ... jmp [jmp_dest]) (only filled for jmps / calls) + bool m_isCalling; // Does this instruction is of a CALL type. + bool m_isBranching; // Does this instruction jmp/call or otherwise change control flow + bool m_isRelative; // Does the displacement need to be added to the address to retrieve where it points too? + bool m_hasDisplacement; // Does this instruction have the displacement fields filled (only rip/eip relative types are filled) + bool m_hasImmediate; // Does this instruction have the immediate field filled? + Displacement m_displacement; // Where an instruction points too (valid for jmp + call types, and RIP relative MEM types) + + uintptr_t m_address; // Address the instruction is at + uintptr_t m_immediate; // Immediate op + uint8_t m_immediateSize; // Immediate size, in bytes + uint8_t m_dispOffset; // Offset into the byte array where displacement is encoded + uint8_t m_dispSize; // Size of the displacement, in bytes + + Mode m_mode; + uint32_t m_uid; + + std::vector<uint8_t> m_bytes; // All the raw bytes of this instruction + std::vector<OperandType> m_operands; // Types of all instruction operands + std::string m_mnemonic; + std::string m_opStr; + + inline static std::atomic_uint32_t s_counter = { 0 }; + }; + static_assert(std::is_nothrow_move_constructible<Instruction>::value, "dyno::Instruction should be noexcept move constructable"); + + typedef std::vector<Instruction> insts_t; + + inline bool operator==(const Instruction& lhs, const Instruction& rhs) { + return lhs.getUID() == rhs.getUID(); + } + + inline std::ostream& operator<<(std::ostream& os, const Instruction& obj) { + std::stringstream byteStream; + for (size_t i = 0; i < obj.size(); i++) + byteStream << std::hex << std::setfill('0') << std::setw(2) << (unsigned)obj.getBytes()[i] << " "; + + os << std::hex << obj.getAddress() << " [" << obj.size() << "]: "; + os << std::setfill(' ') << std::setw(40) << std::left << byteStream.str(); + os << obj.getFullName(); + + if (obj.hasDisplacement() && obj.isDisplacementRelative()) + os << " -> " << obj.getDestination(); + os << std::dec; + return os; + } + + inline uint16_t calcInstsSz(const insts_t& insts) { + uint16_t sz = 0; + for (const auto& ins : insts) + sz += (uint16_t)ins.size(); + return sz; + } + + template<typename T> + std::string instsToStr(const T& container) { + std::stringstream ss; + printInsts(ss, container); + return ss.str(); + } + + template <typename T> + inline std::ostream& printInsts(std::ostream& out, const T& container) { + for (auto ii = container.cbegin(); ii != container.cend(); ii++) + out << *ii << std::endl; + return out; + } + + inline std::ostream& operator<<(std::ostream& os, const insts_t& v) { return printInsts(os, v); } +} \ No newline at end of file diff --git a/vendor/dynohook/win64/include/dynohook/log.h b/vendor/dynohook/win64/include/dynohook/log.h new file mode 100644 index 000000000..26d6fc3b3 --- /dev/null +++ b/vendor/dynohook/win64/include/dynohook/log.h @@ -0,0 +1,63 @@ +#pragma once + +#include <cstdint> +#include <string> +#include <memory> +#include <vector> + +namespace dyno { + enum class ErrorLevel : uint8_t { + NONE, + INFO, + WARN, + ERR, + }; + + class Logger { + public: + Logger() = default; + virtual ~Logger() = default; + + virtual void log(const std::string& msg, ErrorLevel level) = 0; + }; + + class DYNO_API Log { + public: + static void registerLogger(std::shared_ptr<Logger> logger); + static void log(const std::string& msg, ErrorLevel level); + + private: + static inline std::shared_ptr<Logger> m_logger = nullptr; + }; + + class DYNO_API ErrorLogger : public Logger { + public: + ErrorLogger() = default; + ~ErrorLogger() override = default; + + void log(const std::string& msg, ErrorLevel level) override; + + void push(const std::string& msg, ErrorLevel level); + std::string pop(); + + static ErrorLogger& Get(); + + void setLogLevel(ErrorLevel level); + + private: + std::vector<std::string> m_log; + ErrorLevel m_level = ErrorLevel::INFO; + }; +} + +#if DYNO_LOGGING +#define DYNO_LOG(lvl, msg) dyno::Log::log(msg, dyno::ErrorLevel::lvl) +#define DYNO_LOG_INFO(msg) dyno::Log::log(msg, dyno::ErrorLevel::INFO) +#define DYNO_LOG_WARN(msg) dyno::Log::log(msg, dyno::ErrorLevel::WARN) +#define DYNO_LOG_ERR(msg) dyno::Log::log(msg, dyno::ErrorLevel::ERR) +#else +#define DYNO_LOG(msg) +#define DYNO_LOG_INFO(msg) +#define DYNO_LOG_WARN(msg) +#define DYNO_LOG_ERR(msg) +#endif diff --git a/vendor/dynohook/win64/include/dynohook/manager.h b/vendor/dynohook/win64/include/dynohook/manager.h new file mode 100644 index 000000000..3f5a912db --- /dev/null +++ b/vendor/dynohook/win64/include/dynohook/manager.h @@ -0,0 +1,42 @@ +#pragma once + +#include "imanager.h" +#include "convention.h" +#include "virtuals/vtable.h" +#include "detours/nat_detour.h" + +#include <asmjit/asmjit.h> +#include <unordered_map> + +namespace dyno { + class HookManager final : public IHookManager { + private: + HookManager(); + ~HookManager() = default; + + public: + DYNO_NONCOPYABLE(HookManager); + + std::shared_ptr<IHook> hookDetour(void* pFunc, const ConvFunc& convention) override; + std::shared_ptr<IHook> hookVirtual(void* pClass, int index, const ConvFunc& convention) override; + std::shared_ptr<IHook> hookVirtual(void* pClass, void* pFunc, const ConvFunc& convention) override; + bool unhookDetour(void* pFunc) override; + bool unhookVirtual(void* pClass, int index) override; + bool unhookVirtual(void* pClass, void* pFunc) override; + std::shared_ptr<IHook> findDetour(void* pFunc) const override; + std::shared_ptr<IHook> findVirtual(void* pClass, int index) const override; + std::shared_ptr<IHook> findVirtual(void* pClass, void* pFunc) const override; + + void unhookAll() override; + void unhookAllVirtual(void* pClass) override; + void clearCache() override; + + friend class IHookManager; + + public: + std::shared_ptr<VHookCache> m_cache; // used as global storage to avoid creating same hooks + std::unordered_map<void*, std::unique_ptr<VTable>> m_vtables; + std::unordered_map<void*, std::shared_ptr<NatDetour>> m_detours; + std::mutex m_mutex; + }; +} \ No newline at end of file diff --git a/vendor/dynohook/win64/include/dynohook/mem_accessor.h b/vendor/dynohook/win64/include/dynohook/mem_accessor.h new file mode 100644 index 000000000..1467a43a0 --- /dev/null +++ b/vendor/dynohook/win64/include/dynohook/mem_accessor.h @@ -0,0 +1,77 @@ +#pragma once + +#include "instruction.h" +#include "prot.h" +#include <memory> + +#define MEMORY_ROUND(_numToRound_, _multiple_) \ + (_numToRound_ & (((size_t)-1) ^ (_multiple_ - 1))) + +// Round _numToRound_ to the next higher _multiple_ +#define MEMORY_ROUND_UP(_numToRound_, _multiple_) \ + ((_numToRound_ + (_multiple_ - 1)) & (((size_t)-1) ^ (_multiple_ - 1))) + +namespace dyno { + /// Overriding these routines can allow cross-process/cross-arch hooks + class DYNO_API MemAccessor { + public: + virtual ~MemAccessor() = default; + + /** + * Defines a memory read/write routine that may fail ungracefully. It's expected + * this library will only ever use this routine in cases that are expected to succeed. + */ + virtual bool mem_copy(uintptr_t dest, uintptr_t src, size_t size) const; + + /** + * Defines a memory write routine that will not throw exceptions, and can handle potential + * writes to NO_ACCESS or otherwise innaccessible memory pages. Defaults to writeprocessmemory. + * Must fail gracefully + */ + virtual bool safe_mem_write(uintptr_t dest, uintptr_t src, size_t size, size_t& written) const noexcept; + + /** + * Defines a memory read routine that will not throw exceptions, and can handle potential + * reads from NO_ACCESS or otherwise innaccessible memory pages. Defaults to readprocessmemory. + * Must fail gracefully + */ + virtual bool safe_mem_read(uintptr_t src, uintptr_t dest, size_t size, size_t& read) const noexcept; + + virtual ProtFlag mem_protect(uintptr_t dest, size_t size, ProtFlag newProtection, bool& status) const; + + public: + void writeEncoding(const insts_t& instructions); + + /** + * Write the raw bytes of the given instruction into the memory specified by the + * instruction's address. If the address value of the instruction has been changed + * since the time it was decoded this will copy the instruction to a new memory address. + * This will not automatically do any code relocation, all relocation logic should + * first modify the byte array, and then call write encoding, proper order to relocate + * an instruction should be disasm instructions -> set relative/absolute displacement() -> + */ + void writeEncoding(const Instruction& instruction); + + protected: + + /** + * Write a 25 byte absolute jump. This is preferred since it doesn't require an indirect memory holder. + * We first sub rsp by 128 bytes to avoid the red-zone stack space. This is specific to unix only afaik. + */ + insts_t makex64PreferredJump(uintptr_t address, uintptr_t destination); + + /** + * Write an indirect style 6byte jump. Address is where the jmp instruction will be located, and + * destHolder should point to the memory location that *CONTAINS* the address to be jumped to. + * Destination should be the value that is written into destHolder, and be the address of where + * the jmp should land. + */ + insts_t makex64MinimumJump(uintptr_t address, uintptr_t destination, uintptr_t destHolder); + insts_t makex86Jmp(uintptr_t address, uintptr_t destination); + insts_t makex64Jump(uintptr_t address, uintptr_t destination); + insts_t makeAgnosticJmp(uintptr_t address, uintptr_t destination); + + insts_t makex64DestHolder(uintptr_t destination, uintptr_t destHolder); + + }; +} \ No newline at end of file diff --git a/vendor/dynohook/win64/include/dynohook/mem_protector.h b/vendor/dynohook/win64/include/dynohook/mem_protector.h new file mode 100644 index 000000000..4077af23e --- /dev/null +++ b/vendor/dynohook/win64/include/dynohook/mem_protector.h @@ -0,0 +1,37 @@ +#pragma once + +#include "prot.h" + +namespace dyno { + class MemAccessor; + + DYNO_API int TranslateProtection(ProtFlag flags); + DYNO_API ProtFlag TranslateProtection(int prot); + + class DYNO_API MemProtector { + public: + MemProtector() = delete; + MemProtector(uintptr_t address, size_t length, ProtFlag prot, MemAccessor& accessor, bool unsetOnDestroy = true); + ~MemProtector(); + + ProtFlag originalProt() const { + return m_origProtection; + } + + bool isGood() const { + return m_status; + } + + private: + MemAccessor& m_accessor; + + uintptr_t m_address; + size_t m_length; + bool m_status; + bool m_unsetLater; + + ProtFlag m_origProtection{ ProtFlag::UNSET }; + }; +} + +//std::ostream& operator<<(std::ostream& os, dyno::ProtFlag v); \ No newline at end of file diff --git a/vendor/dynohook/win64/include/dynohook/nat_hook.h b/vendor/dynohook/win64/include/dynohook/nat_hook.h new file mode 100644 index 000000000..2a711b257 --- /dev/null +++ b/vendor/dynohook/win64/include/dynohook/nat_hook.h @@ -0,0 +1,17 @@ +#pragma once + +#include "platform.h" + +#if DYNO_ARCH_X86 == 32 +#include <dynohook/x86_hook.h> +#elif DYNO_ARCH_X86 == 64 +#include <dynohook/x64_hook.h> +#endif + +namespace dyno { +#if DYNO_ARCH_X86 == 32 + using NatHook = x86Hook; +#elif DYNO_ARCH_X86 == 64 + using NatHook = x64Hook; +#endif +} \ No newline at end of file diff --git a/vendor/dynohook/win64/include/dynohook/os.h b/vendor/dynohook/win64/include/dynohook/os.h new file mode 100644 index 000000000..897cbd7f5 --- /dev/null +++ b/vendor/dynohook/win64/include/dynohook/os.h @@ -0,0 +1,47 @@ +// This file is used to not include os specific functions that might break other projects +// You should use it in sources + +#pragma once + +#include "platform.h" + +#if DYNO_PLATFORM_WINDOWS + +#ifndef WIN32_LEAN_AND_MEAN +#define WIN32_LEAN_AND_MEAN +#endif +#ifndef NOMINMAX +#define NOMINMAX +#endif +#define NTDDI_VERSION NTDDI_WIN10_RS4 +#include <windows.h> + +// From winerror.h, as this error isn't found in some SDKs: +// +// MessageId: ERROR_DYNAMIC_CODE_BLOCKED +// +// MessageText: +// +// The operation was blocked as the process prohibits dynamic code generation. +// +#ifndef ERROR_DYNAMIC_CODE_BLOCKED +#define ERROR_DYNAMIC_CODE_BLOCKED 1655L +#endif + +#elif DYNO_PLATFORM_LINUX + +#include <sys/mman.h> +#include <unistd.h> + +#elif DYNO_PLATFORM_APPLE + +#include <mach/mach_init.h> +#include <mach/mach_vm.h> +#include <mach/vm_prot.h> +#include <mach/vm_map.h> + +#else + +#error "Platform is not supported!" + +#endif \ No newline at end of file diff --git a/vendor/dynohook/win64/include/dynohook/platform.h b/vendor/dynohook/win64/include/dynohook/platform.h new file mode 100644 index 000000000..b8081a966 --- /dev/null +++ b/vendor/dynohook/win64/include/dynohook/platform.h @@ -0,0 +1,237 @@ +#pragma once + +/// https://github.com/steinwurf/platform + +// here we create a number of defines to make it easy to choose between +// different compilers, operatings systems and CPU architectures. +// some information about the defines used can be found here: +// http://sourceforge.net/p/predef/wiki/Architectures/ + +// detect operating systems +#if defined(__linux__) +#define DYNO_PLATFORM_LINUX 1 +#if defined(__ANDROID__) +#define DYNO_PLATFORM_ANDROID 1 +#endif +#elif defined(_WIN32) +#define DYNO_PLATFORM_WINDOWS 1 +#if defined(WINAPI_FAMILY) +#include <winapifamily.h> +#if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_PHONE_APP) +#define DYNO_PLATFORM_WINDOWS_PHONE 1 +#endif +#endif +#elif defined(__APPLE__) +#define DYNO_PLATFORM_APPLE 1 +// detect iOS before MacOSX (__MACH__ is also defined for iOS) +#if defined(IPHONE) +#define DYNO_PLATFORM_IOS 1 +#elif defined(__MACH__) +#define DYNO_PLATFORM_MAC 1 +#endif +#elif defined(__EMSCRIPTEN__) +#define DYNO_PLATFORM_EMSCRIPTEN 1 +#else +#error "Unable to determine operating system" +#endif + +// detect compilers and CPU architectures +// note: clang also defines __GNUC__ since it aims to be compatible with GCC. +// therefore we need to check for __clang__ or __llvm__ first. +#if defined(__clang__) || defined(__llvm__) +#define DYNO_PLATFORM_CLANG 1 +#define DYNO_PLATFORM_GCC_COMPATIBLE 1 +#if defined(__i386__) || defined(__x86_64__) +#define DYNO_PLATFORM_X86 1 +#define DYNO_PLATFORM_CLANG_X86 1 +#define DYNO_PLATFORM_GCC_COMPATIBLE_X86 1 +#elif defined(__arm__) || defined(__arm64__) || defined(__aarch64__) +#define DYNO_PLATFORM_ARM 1 +#define DYNO_PLATFORM_CLANG_ARM 1 +#define DYNO_PLATFORM_GCC_COMPATIBLE_ARM 1 +#elif defined(__mips__) +#define DYNO_PLATFORM_MIPS 1 +#define DYNO_PLATFORM_CLANG_MIPS 1 +#define DYNO_PLATFORM_GCC_COMPATIBLE_MIPS 1 +#elif defined(__asmjs__) +#define DYNO_PLATFORM_ASMJS 1 +#define DYNO_PLATFORM_CLANG_ASMJS 1 +#define DYNO_PLATFORM_GCC_COMPATIBLE_ASMJS 1 +#endif +#elif defined(__GNUC__) +#define DYNO_PLATFORM_GCC 1 +#define DYNO_PLATFORM_GCC_COMPATIBLE 1 +#if defined(__i386__) || defined(__x86_64__) +#define DYNO_PLATFORM_X86 1 +#define DYNO_PLATFORM_GCC_X86 1 +#define DYNO_PLATFORM_GCC_COMPATIBLE_X86 1 +#elif defined(__arm__) || defined(__arm64__) || defined(__aarch64__) +#define DYNO_PLATFORM_ARM 1 +#define DYNO_PLATFORM_GCC_ARM 1 +#define DYNO_PLATFORM_GCC_COMPATIBLE_ARM 1 +#elif defined(__mips__) +#define DYNO_PLATFORM_MIPS 1 +#define DYNO_PLATFORM_GCC_MIPS 1 +#define DYNO_PLATFORM_GCC_COMPATIBLE_MIPS 1 +#endif +#elif defined(_MSC_VER) +#define DYNO_PLATFORM_MSVC 1 +#if defined(_M_IX86) || defined(_M_X64) +#define DYNO_PLATFORM_X86 1 +#define DYNO_PLATFORM_MSVC_X86 1 +#elif defined(_M_ARM) || defined(_M_ARMT) +#define DYNO_PLATFORM_ARM 1 +#define DYNO_PLATFORM_MSVC_ARM 1 +#endif +#else +#error "Unable to determine compiler" +#endif + +// define macros for supported CPU instruction sets +#if defined(DYNO_PLATFORM_GCC_COMPATIBLE) +#if defined(__MMX__) +#define DYNO_PLATFORM_MMX 1 +#endif +#if defined(__SSE__) +#define DYNO_PLATFORM_SSE 1 +#endif +#if defined(__SSE2__) +#define DYNO_PLATFORM_SSE2 1 +#endif +#if defined(__SSE3__) +#define DYNO_PLATFORM_SSE3 1 +#endif +#if defined(__SSSE3__) +#define DYNO_PLATFORM_SSSE3 1 +#endif +#if defined(__SSE4_1__) +#define DYNO_PLATFORM_SSE41 1 +#endif +#if defined(__SSE4_2__) +#define DYNO_PLATFORM_SSE42 1 +#endif +#if defined(__PCLMUL__) +#define DYNO_PLATFORM_PCLMUL 1 +#endif +#if defined(__AVX__) +#define DYNO_PLATFORM_AVX 1 +#endif +#if defined(__AVX2__) +#define DYNO_PLATFORM_AVX2 1 +#endif +#if defined(__ARM_NEON__) || defined(__ARM_NEON) +#define DYNO_PLATFORM_NEON 1 +#endif +// first, check the PLATFORM_WINDOWS_PHONE define, because +// the X86 instructions sets are not supported on the Windows Phone emulator +#elif defined(DYNO_PLATFORM_WINDOWS_PHONE) +#if defined(DYNO_PLATFORM_MSVC_ARM) +// NEON introduced in VS2012 +#if (_MSC_VER >= 1700) +#define DYNO_PLATFORM_NEON 1 +#endif +#endif +#elif defined(DYNO_PLATFORM_MSVC_X86) +// MMX, SSE and SSE2 introduced in VS2003 +#if (_MSC_VER >= 1310) +#define DYNO_PLATFORM_MMX 1 +#define DYNO_PLATFORM_SSE 1 +#define DYNO_PLATFORM_SSE2 1 +#endif +// SSE3 introduced in VS2005 +#if (_MSC_VER >= 1400) +#define DYNO_PLATFORM_SSE3 1 +#endif +// SSSE3, SSE4.1, SSE4.2, PCLMUL introduced in VS2008 +#if (_MSC_VER >= 1500) +#define DYNO_PLATFORM_SSSE3 1 +#define DYNO_PLATFORM_SSE41 1 +#define DYNO_PLATFORM_SSE42 1 +#define DYNO_PLATFORM_PCLMUL 1 +#endif +// AVX and AVX2 introduced in VS2012 +#if (_MSC_VER >= 1700) +#define DYNO_PLATFORM_AVX 1 +#define DYNO_PLATFORM_AVX2 1 +#endif +#endif +#if defined(__AVX512F__) +#define DYNO_PLATFORM_AVX512 1 +#endif + +// define macros for architecture type +#if DYNO_PLATFORM_X86 +#if UINTPTR_MAX == UINT64_MAX +#define DYNO_ARCH_X86 64 +#elif UINTPTR_MAX == UINT32_MAX +#define DYNO_ARCH_X86 32 +#else +#error "Unable to determine architecture type" +#endif +#endif + +// function attributes +#if !defined(DYNO_BUILD_DEBUG) && defined(__GNUC__) +#define DYNO_FORCE_INLINE inline __attribute__((__always_inline__)) +#elif !defined(DYNO_BUILD_DEBUG) && DYNO_PLATFORM_MSVC +#define DYNO_FORCE_INLINE __forceinline +#else +#define DYNO_FORCE_INLINE inline +#endif + +#if DYNO_PLATFORM_GCC +#define DYNO_NOINLINE __attribute__((__noinline__)) +#define DYNO_NORETURN __attribute__((__noreturn__)) +#define DYNO_NAKED __attribute__((naked)) +#elif DYNO_PLATFORM_MSVC +#define DYNO_NOINLINE __declspec(noinline) +#define DYNO_NORETURN __declspec(noreturn) +#define DYNO_NAKED __declspec(naked) +#else +#define DYNO_NOINLINE +#define DYNO_NORETURN +#define DYNO_NAKED +#endif + +// calling conventions +#if DYNO_ARCH_X86 == 32 && DYNO_PLATFORM_GCC +#define DYNO_CDECL __attribute__((__cdecl__)) +#define DYNO_STDCALL __attribute__((__stdcall__)) +#define DYNO_FASTCALL __attribute__((__fastcall__)) +#define DYNO_THISCALL __attribute__((__thiscall__)) +#define DYNO_REGPARM(N) __attribute__((__regparm__(N))) +#elif DYNO_ARCH_X86 == 32 && DYNO_PLATFORM_MSVC +#define DYNO_CDECL __cdecl +#define DYNO_STDCALL __stdcall +#define DYNO_FASTCALL __fastcall +#define DYNO_THISCALL __thiscall +#define DYNO_REGPARM(N) +#else +#define DYNO_CDECL +#define DYNO_STDCALL +#define DYNO_FASTCALL +#define DYNO_THISCALL +#define DYNO_REGPARM(N) +#endif + +#if DYNO_ARCH_X86 && DYNO_PLATFORM_WINDOWS && DYNO_PLATFORM_MSVC +#define DYNO_VECTORCALL __vectorcall +#elif DYNO_ARCH_X86 && DYNO_PLATFORM_WINDOWS +#define DYNO_VECTORCALL __attribute__((__vectorcall__)) +#else +#define DYNO_VECTORCALL +#endif + +// optimization +#if DYNO_PLATFORM_GCC_COMPATIBLE && !(defined(DYNO_PLATFORM_CLANG) && DYNO_PLATFORM_CLANG) +#define DYNO_OPTS_OFF _Pragma("GCC push_options") _Pragma("GCC optimize (\"O0\")") +#define DYNO_OPTS_ON _Pragma("GCC pop_options") +#elif DYNO_PLATFORM_MSVC +#define DYNO_OPTS_OFF __pragma(optimize("", off)) +#define DYNO_OPTS_ON __pragma(optimize("", on)) +#else +#define DYNO_OPTS_OFF +#define DYNO_OPTS_ON +#endif + +#define DYNO_UNUSED(a) (void)a diff --git a/vendor/dynohook/win64/include/dynohook/prot.h b/vendor/dynohook/win64/include/dynohook/prot.h new file mode 100644 index 000000000..dd4937d6e --- /dev/null +++ b/vendor/dynohook/win64/include/dynohook/prot.h @@ -0,0 +1,33 @@ +#pragma once + +#include <cstdint> +#include <type_traits> + +namespace dyno { + + // unsafe enum by design to allow binary OR + enum ProtFlag : uint8_t { + UNSET = 0, // value means this give no information about protection state (un-read) + X = 1 << 1, + R = 1 << 2, + W = 1 << 3, + S = 1 << 4, + P = 1 << 5, + N = 1 << 6, // value equaling the linux flag PROT_UNSET (read the prot, and the prot is unset) + RWX = R | W | X + }; + + inline ProtFlag operator|(ProtFlag lhs, ProtFlag rhs) { + using underlying = typename std::underlying_type<ProtFlag>::type; + return static_cast<ProtFlag> ( + static_cast<underlying>(lhs) | + static_cast<underlying>(rhs) + ); + } + + inline bool operator&(ProtFlag lhs, ProtFlag rhs) { + using underlying = typename std::underlying_type<ProtFlag>::type; + return static_cast<underlying>(lhs) & + static_cast<underlying>(rhs); + } +}; \ No newline at end of file diff --git a/vendor/dynohook/win64/include/dynohook/range_allocator.h b/vendor/dynohook/win64/include/dynohook/range_allocator.h new file mode 100644 index 000000000..ef9298040 --- /dev/null +++ b/vendor/dynohook/win64/include/dynohook/range_allocator.h @@ -0,0 +1,30 @@ +#pragma once + +#include "helpers.h" +#include <cstdint> +#include <memory> +#include <mutex> +#include <vector> +#include <unordered_map> + +namespace dyno { + class FBAllocator; + class DYNO_API RangeAllocator { + public: + RangeAllocator(uint8_t blockSize, uint8_t blockCount); + ~RangeAllocator() = default; + DYNO_NONCOPYABLE(RangeAllocator); + + char* allocate(uintptr_t min, uintptr_t max); + void deallocate(uintptr_t addr); + + private: + std::shared_ptr<FBAllocator> findOrInsertAllocator(uintptr_t min, uintptr_t max); + + uint8_t m_maxBlocks; + uint8_t m_blockSize; + std::mutex m_mutex; + std::vector<std::shared_ptr<FBAllocator>> m_allocators; + std::unordered_map<uintptr_t, std::shared_ptr<FBAllocator>> m_allocMap; + }; +} \ No newline at end of file diff --git a/vendor/dynohook/win64/include/dynohook/registers.h b/vendor/dynohook/win64/include/dynohook/registers.h new file mode 100644 index 000000000..d83d6bfbd --- /dev/null +++ b/vendor/dynohook/win64/include/dynohook/registers.h @@ -0,0 +1,383 @@ +#pragma once + +#include <cstdint> +#include <string> +#include <vector> +#include "platform.h" +#include "helpers.h" + +#include <dynohook_export.h> + +namespace dyno { + enum RegisterType : uint8_t { + // no register at all. + NONE, + + // ======================================================================== + // >> 8-bit General purpose registers + // ======================================================================== + AL, + CL, + DL, + BL, + +#if DYNO_ARCH_X86 == 64 + SPL, + BPL, + SIL, + DIL, + R8B, + R9B, + R10B, + R11B, + R12B, + R13B, + R14B, + R15B, +#endif // DYNO_ARCH_X86 + + AH, + CH, + DH, + BH, + + // ======================================================================== + // >> 16-bit General purpose registers + // ======================================================================== + AX, + CX, + DX, + BX, + SP, + BP, + SI, + DI, + +#if DYNO_ARCH_X86 == 64 + R8W, + R9W, + R10W, + R11W, + R12W, + R13W, + R14W, + R15W, +#endif // DYNO_ARCH_X86 + + // ======================================================================== + // >> 32-bit General purpose registers + // ======================================================================== + EAX, + ECX, + EDX, + EBX, + ESP, + EBP, + ESI, + EDI, + +#if DYNO_ARCH_X86 == 64 + R8D, + R9D, + R10D, + R11D, + R12D, + R13D, + R14D, + R15D, +#endif // DYNO_ARCH_X86 + + // ======================================================================== + // >> 64-bit General purpose registers + // ======================================================================== +#if DYNO_ARCH_X86 == 64 + RAX, + RCX, + RDX, + RBX, + RSP, + RBP, + RSI, + RDI, + + R8, + R9, + R10, + R11, + R12, + R13, + R14, + R15, +#endif // DYNO_ARCH_X86 + + // ======================================================================== + // >> 64-bit MM (MMX) registers + // ======================================================================== + MM0, + MM1, + MM2, + MM3, + MM4, + MM5, + MM6, + MM7, + + // ======================================================================== + // >> 128-bit XMM registers + // ======================================================================== + XMM0, + XMM1, + XMM2, + XMM3, + XMM4, + XMM5, + XMM6, + XMM7, +#if DYNO_ARCH_X86 == 64 + XMM8, + XMM9, + XMM10, + XMM11, + XMM12, + XMM13, + XMM14, + XMM15, +#if DYNO_PLATFORM_AVX512 + XMM16, + XMM17, + XMM18, + XMM19, + XMM20, + XMM21, + XMM22, + XMM23, + XMM24, + XMM25, + XMM26, + XMM27, + XMM28, + XMM29, + XMM30, + XMM31, +#endif // DYNO_PLATFORM_AVX512 +#endif // DYNO_ARCH_X86 + + // ======================================================================== + // >> 256-bit YMM registers + // ======================================================================== +#if DYNO_ARCH_X86 == 64 +#if DYNO_PLATFORM_AVX + YMM0, + YMM1, + YMM2, + YMM3, + YMM4, + YMM5, + YMM6, + YMM7, + YMM8, + YMM9, + YMM10, + YMM11, + YMM12, + YMM13, + YMM14, + YMM15, +#if DYNO_PLATFORM_AVX512 + YMM16, + YMM17, + YMM18, + YMM19, + YMM20, + YMM21, + YMM22, + YMM23, + YMM24, + YMM25, + YMM26, + YMM27, + YMM28, + YMM29, + YMM30, + YMM31, +#endif // DYNO_PLATFORM_AVX512 +#endif // DYNO_PLATFORM_AVX +#endif // DYNO_ARCH_X86 + + // ======================================================================== + // >> 512-bit ZMM registers + // ======================================================================== +#if DYNO_PLATFORM_AVX512 + ZMM0, + ZMM1, + ZMM2, + ZMM3, + ZMM4, + ZMM5, + ZMM6, + ZMM7, + ZMM8, + ZMM9, + ZMM10, + ZMM11, + ZMM12, + ZMM13, + ZMM14, + ZMM15, + ZMM16, + ZMM17, + ZMM18, + ZMM19, + ZMM20, + ZMM21, + ZMM22, + ZMM23, + ZMM24, + ZMM25, + ZMM26, + ZMM27, + ZMM28, + ZMM29, + ZMM30, + ZMM31, +#endif // DYNO_PLATFORM_AVX512 + + // ======================================================================== + // >> 16-bit Segment registers + // ======================================================================== + CS, + SS, + DS, + ES, + FS, + GS, + + // ======================================================================== + // >> 80-bit FPU registers + // ======================================================================== +#if DYNO_ARCH_X86 == 32 + ST0, + ST1, + ST2, + ST3, + ST4, + ST5, + ST6, + ST7, +#endif // DYNO_ARCH_X86 + + // ======================================================================== + // >> Maximum value of this enum. + // ======================================================================== + REG_COUNT + }; + + enum RegisterSize : uint8_t { + SIZE_INVALID = 0, + SIZE_BYTE = 1, + SIZE_WORD = 2, + SIZE_DWORD = 4, + SIZE_QWORD = 8, + SIZE_TWORD = 10, + SIZE_XMMWORD = 16, + SIZE_YMMWORD = 32, + SIZE_ZMMWORD = 64 + }; + + struct RegisterInfo { + std::string_view name; + RegisterSize size; + uint8_t alignment; + }; + + const RegisterInfo& RegisterTypeInfo(RegisterType reg); + size_t RegisterTypeToSSEIndex(RegisterType reg); + RegisterType SSEIndexToRegisterType(size_t index, size_t size = 0); + + class DYNO_API Register { + public: + Register(RegisterType type, RegisterSize size, uint8_t alignment = 0); + ~Register(); + Register(const Register& other); + Register(Register&& other) noexcept; + Register& operator=(const Register&) = delete; + Register& operator=(Register&&) = delete; + + void* operator*() const { + return m_address; + } + + template<class T> + T getAddress() const { + return (T) m_address; + } + + template<class T> + T getValue() const { + return *(T*) m_address; + } + + template<class T> + void setValue(T value) { + *(T*) m_address = value; + } + + template<class T> + T getPointerValue(size_t offset = 0) const { + return *(T*) (getValue<uintptr_t>() + offset); + } + + template<class T> + void setPointerValue(T value, size_t offset = 0) { + *(T*) (getValue<uintptr_t>() + offset) = value; + } + + RegisterType getType() const { + return m_type; + } + + operator RegisterType() const { + return m_type; + } + + private: + void* m_address; + RegisterType m_type; + RegisterSize m_size; + uint8_t m_alignment; + }; + + typedef std::vector<RegisterType> regs_t; + + class DYNO_API Registers { + public: + explicit Registers(const regs_t& registers); + Registers(const regs_t& registers1, const regs_t& registers2); + ~Registers() = default; + DYNO_NONCOPYABLE(Registers); + + DYNO_ITERATABLE(Register, m_registers); + + const Register& operator[](RegisterType reg) const; + const Register& at(RegisterType reg, bool reverse = false) const; + + size_t size() const { + return m_registers.size(); + } + + static const regs_t& ScratchList() { + return s_scratch; + } + + private: + std::vector<Register> m_registers; + + static Register s_none; + static regs_t s_scratch; + + void insert(const regs_t& registers); + }; + +} + +//std::ostream& operator<<(std::ostream& os, dyno::RegisterType v); \ No newline at end of file diff --git a/vendor/dynohook/win64/include/dynohook/tests/effect_tracker.h b/vendor/dynohook/win64/include/dynohook/tests/effect_tracker.h new file mode 100644 index 000000000..432dcbaf9 --- /dev/null +++ b/vendor/dynohook/win64/include/dynohook/tests/effect_tracker.h @@ -0,0 +1,32 @@ +#pragma once + +#include <cstdint> +#include <atomic> +#include <vector> + +namespace dyno { + class DYNO_API Effect { + public: + Effect(); + void trigger(); + + bool didExecute(size_t n) const; + + private: + uint32_t m_executed; + uint32_t m_uid; + + inline static std::atomic_uint32_t s_counter = { 0 }; + }; + + /**Track if some side effect happened.**/ + class DYNO_API EffectTracker { + public: + void push(); + Effect pop(); + Effect& peak(); + + private: + std::vector<Effect> m_queue; + }; +} \ No newline at end of file diff --git a/vendor/dynohook/win64/include/dynohook/tests/stack_canary.h b/vendor/dynohook/win64/include/dynohook/tests/stack_canary.h new file mode 100644 index 000000000..aa0c2915a --- /dev/null +++ b/vendor/dynohook/win64/include/dynohook/tests/stack_canary.h @@ -0,0 +1,16 @@ +#pragma once + +#include <cstdint> + +namespace dyno { + class DYNO_API StackCanary { + public: + StackCanary(); + ~StackCanary() noexcept(false); + + bool isStackGood(); + + private: + uint8_t buf[100]; + }; +} \ No newline at end of file diff --git a/vendor/dynohook/win64/include/dynohook/virtuals/vhook.h b/vendor/dynohook/win64/include/dynohook/virtuals/vhook.h new file mode 100644 index 000000000..2e6732e28 --- /dev/null +++ b/vendor/dynohook/win64/include/dynohook/virtuals/vhook.h @@ -0,0 +1,31 @@ +#pragma once + +#include <dynohook/nat_hook.h> +#include <cstdint> + +namespace dyno { + class DYNO_API VHook final : public NatHook { + public: + VHook(uintptr_t fnAddress, const ConvFunc& convention); + ~VHook() override; + + bool hook() override; + bool unhook() override; + + HookMode getMode() const override { + return HookMode::VTableSwap; + } + + const std::uintptr_t& getTarget() const override { + return m_fnAddress; + } + + const uintptr_t& getAddress() const override { + return m_fnAddress; + } + + private: + // address of the original function + uintptr_t m_fnAddress; + }; +} \ No newline at end of file diff --git a/vendor/dynohook/win64/include/dynohook/virtuals/vtable.h b/vendor/dynohook/win64/include/dynohook/virtuals/vtable.h new file mode 100644 index 000000000..e24c55afe --- /dev/null +++ b/vendor/dynohook/win64/include/dynohook/virtuals/vtable.h @@ -0,0 +1,48 @@ +#pragma once + +#include <dynohook/virtuals/vhook.h> + +namespace dyno { + class VHookCache; + + class DYNO_API VTable final : public MemAccessor { + public: + VTable(void* pClass, std::shared_ptr<VHookCache> cache); + ~VTable() override; + DYNO_NONCOPYABLE(VTable); + + std::shared_ptr<Hook> hook(int index, const ConvFunc& convention); + + bool unhook(int index); + + std::shared_ptr<Hook> find(int index) const; + + bool empty() const { + return m_hooked.empty(); + } + + int getVTableIndex(void* pFunc); + + private: + static int getVFuncCount(void** vtable); + + void*** m_class; + void** m_origVtable; + int m_vFuncCount; + std::unique_ptr<void*[]> m_newVtable; + + std::shared_ptr<VHookCache> m_hookCache; + + std::unordered_map<int16_t, std::shared_ptr<VHook>> m_hooked; + }; + + class DYNO_API VHookCache { + public: + std::shared_ptr<VHook> get(void* pFunc, const ConvFunc& convention); + void clear(); + void cleanup(); + + private: + std::unordered_map<void*, std::shared_ptr<VHook>> m_hooked; + }; +} \ No newline at end of file diff --git a/vendor/dynohook/win64/include/dynohook/x64_hook.h b/vendor/dynohook/win64/include/dynohook/x64_hook.h new file mode 100644 index 000000000..e711fbcb7 --- /dev/null +++ b/vendor/dynohook/win64/include/dynohook/x64_hook.h @@ -0,0 +1,23 @@ +#pragma once + +#include <dynohook/hook.h> + +namespace dyno { + class DYNO_API x64Hook : public Hook { + public: + explicit x64Hook(const ConvFunc& convention); + ~x64Hook() override = default; + + protected: + bool createBridge() override; + bool createPostCallback() override; + void writeModifyReturnAddress(Assembler& a) override; + void writeCallHandler(Assembler& a, CallbackType type) const override; + int32_t writeSaveScratchRegisters(Assembler& a) const override; + void writeRestoreScratchRegisters(Assembler& a) const override; + void writeSaveRegisters(Assembler& a, bool post) const override; + void writeRestoreRegisters(Assembler& a, bool post) const override; + void writeRegToMem(Assembler& a, const Register& reg, bool post) const override; + void writeMemToReg(Assembler& a, const Register& reg, bool post) const override; + }; +} \ No newline at end of file diff --git a/vendor/dynohook/win64/include/dynohook/x86_hook.h b/vendor/dynohook/win64/include/dynohook/x86_hook.h new file mode 100644 index 000000000..b8c33af65 --- /dev/null +++ b/vendor/dynohook/win64/include/dynohook/x86_hook.h @@ -0,0 +1,26 @@ +#pragma once + +#include <dynohook/hook.h> + +namespace dyno { + class DYNO_API x86Hook : public Hook { + public: + explicit x86Hook(const ConvFunc& convention); + ~x86Hook() override = default; + + protected: + bool createBridge() override; + bool createPostCallback() override; + void writeModifyReturnAddress(Assembler& a) override; + void writeCallHandler(Assembler& a, CallbackType type) const override; + int32_t writeSaveScratchRegisters(Assembler& a) const override; + void writeRestoreScratchRegisters(Assembler& a) const override; + void writeSaveRegisters(Assembler& a, bool post) const override; + void writeRestoreRegisters(Assembler& a, bool post) const override; + void writeRegToMem(Assembler& a, const Register& reg, bool post) const override; + void writeMemToReg(Assembler& a, const Register& reg, bool post) const override; + + private: + Registers m_scratchRegisters; + }; +} \ No newline at end of file diff --git a/vendor/dynohook/win64/lib/Zydis.lib b/vendor/dynohook/win64/lib/Zydis.lib new file mode 100644 index 0000000000000000000000000000000000000000..f56e69cdd89b4e02ccfc23b2a26efcfe341f48d9 GIT binary patch literal 1165120 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%0A)*K$Iozj#^>bRZe{3MmBbERx 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%0AjU0H>k&~u#w~&vw+O1(Y=W6=t;n}; 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 literal 0 HcmV?d00001 diff --git a/vendor/dynohook/win64/lib/asmjit.lib b/vendor/dynohook/win64/lib/asmjit.lib new file mode 100644 index 0000000000000000000000000000000000000000..98f5b5b6c8213f4d90dbf7bcba774eab11f5beac GIT binary patch literal 1166964 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 literal 0 HcmV?d00001 diff --git a/vendor/dynohook/win64/lib/asmtk.lib b/vendor/dynohook/win64/lib/asmtk.lib new file mode 100644 index 0000000000000000000000000000000000000000..e49f42ea63e3d54ba66891f49407346623a904c3 GIT binary patch literal 31566 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 literal 0 HcmV?d00001 diff --git a/vendor/dynohook/win64/lib/dynohook.lib b/vendor/dynohook/win64/lib/dynohook.lib new file mode 100644 index 0000000000000000000000000000000000000000..27b38f8a7addde33a8748d6e8b40b90528d7bbbb GIT binary patch literal 2399204 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 W_2bQ^nsXLq&{H0`YnD@$sPzBPPi@Em literal 0 HcmV?d00001 diff --git a/vendor/rapidjson/json.hpp b/vendor/rapidjson/json.hpp new file mode 100644 index 000000000..fa3fc4c5c --- /dev/null +++ b/vendor/rapidjson/json.hpp @@ -0,0 +1,16726 @@ + +// Begin file: rapidjson.h +// Tencent is pleased to support the open source community by making RapidJSON available. +// +// Copyright (C) 2015 THL A29 Limited, a Tencent company, and Milo Yip. All rights reserved. +// +// Licensed under the MIT License (the "License"); you may not use this file except +// in compliance with the License. You may obtain a copy of the License at +// +// http://opensource.org/licenses/MIT +// +// Unless required by applicable law or agreed to in writing, software distributed +// under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR +// CONDITIONS OF ANY KIND, either express or implied. See the License for the +// specific language governing permissions and limitations under the License. + +#ifndef RAPIDJSON_RAPIDJSON_H_ +#define RAPIDJSON_RAPIDJSON_H_ + +/*!\file rapidjson.h + \brief common definitions and configuration + + \see RAPIDJSON_CONFIG + */ + +/*! \defgroup RAPIDJSON_CONFIG RapidJSON configuration + \brief Configuration macros for library features + + Some RapidJSON features are configurable to adapt the library to a wide + variety of platforms, environments and usage scenarios. Most of the + features can be configured in terms of overridden or predefined + preprocessor macros at compile-time. + + Some additional customization is available in the \ref RAPIDJSON_ERRORS APIs. + + \note These macros should be given on the compiler command-line + (where applicable) to avoid inconsistent values when compiling + different translation units of a single application. + */ + +#include <cstdlib> // malloc(), realloc(), free(), size_t +#include <cstring> // memset(), memcpy(), memmove(), memcmp() + +/////////////////////////////////////////////////////////////////////////////// +// RAPIDJSON_VERSION_STRING +// +// ALWAYS synchronize the following 3 macros with corresponding variables in /CMakeLists.txt. +// + +//!@cond RAPIDJSON_HIDDEN_FROM_DOXYGEN +// token stringification +#define RAPIDJSON_STRINGIFY(x) RAPIDJSON_DO_STRINGIFY(x) +#define RAPIDJSON_DO_STRINGIFY(x) #x + +// token concatenation +#define RAPIDJSON_JOIN(X, Y) RAPIDJSON_DO_JOIN(X, Y) +#define RAPIDJSON_DO_JOIN(X, Y) RAPIDJSON_DO_JOIN2(X, Y) +#define RAPIDJSON_DO_JOIN2(X, Y) X##Y +//!@endcond + +/*! \def RAPIDJSON_MAJOR_VERSION + \ingroup RAPIDJSON_CONFIG + \brief Major version of RapidJSON in integer. +*/ +/*! \def RAPIDJSON_MINOR_VERSION + \ingroup RAPIDJSON_CONFIG + \brief Minor version of RapidJSON in integer. +*/ +/*! \def RAPIDJSON_PATCH_VERSION + \ingroup RAPIDJSON_CONFIG + \brief Patch version of RapidJSON in integer. +*/ +/*! \def RAPIDJSON_VERSION_STRING + \ingroup RAPIDJSON_CONFIG + \brief Version of RapidJSON in "<major>.<minor>.<patch>" string format. +*/ +#define RAPIDJSON_MAJOR_VERSION 1 +#define RAPIDJSON_MINOR_VERSION 1 +#define RAPIDJSON_PATCH_VERSION 0 +#define RAPIDJSON_VERSION_STRING \ + RAPIDJSON_STRINGIFY(RAPIDJSON_MAJOR_VERSION.RAPIDJSON_MINOR_VERSION.RAPIDJSON_PATCH_VERSION) + +/////////////////////////////////////////////////////////////////////////////// +// RAPIDJSON_NAMESPACE_(BEGIN|END) +/*! \def RAPIDJSON_NAMESPACE + \ingroup RAPIDJSON_CONFIG + \brief provide custom rapidjson namespace + + In order to avoid symbol clashes and/or "One Definition Rule" errors + between multiple inclusions of (different versions of) RapidJSON in + a single binary, users can customize the name of the main RapidJSON + namespace. + + In case of a single nesting level, defining \c RAPIDJSON_NAMESPACE + to a custom name (e.g. \c MyRapidJSON) is sufficient. If multiple + levels are needed, both \ref RAPIDJSON_NAMESPACE_BEGIN and \ref + RAPIDJSON_NAMESPACE_END need to be defined as well: + + \code + // in some .cpp file + #define RAPIDJSON_NAMESPACE my::rapidjson + #define RAPIDJSON_NAMESPACE_BEGIN namespace my { namespace rapidjson { + #define RAPIDJSON_NAMESPACE_END } } + #include "rapidjson/..." + \endcode + + \see rapidjson + */ +/*! \def RAPIDJSON_NAMESPACE_BEGIN + \ingroup RAPIDJSON_CONFIG + \brief provide custom rapidjson namespace (opening expression) + \see RAPIDJSON_NAMESPACE +*/ +/*! \def RAPIDJSON_NAMESPACE_END + \ingroup RAPIDJSON_CONFIG + \brief provide custom rapidjson namespace (closing expression) + \see RAPIDJSON_NAMESPACE +*/ +#ifndef RAPIDJSON_NAMESPACE +#define RAPIDJSON_NAMESPACE rapidjson +#endif +#ifndef RAPIDJSON_NAMESPACE_BEGIN +#define RAPIDJSON_NAMESPACE_BEGIN namespace RAPIDJSON_NAMESPACE { +#endif +#ifndef RAPIDJSON_NAMESPACE_END +#define RAPIDJSON_NAMESPACE_END } +#endif + +/////////////////////////////////////////////////////////////////////////////// +// RAPIDJSON_HAS_STDSTRING + +#ifndef RAPIDJSON_HAS_STDSTRING +#ifdef RAPIDJSON_DOXYGEN_RUNNING +#define RAPIDJSON_HAS_STDSTRING 1 // force generation of documentation +#else +#define RAPIDJSON_HAS_STDSTRING 0 // no std::string support by default +#endif +/*! \def RAPIDJSON_HAS_STDSTRING + \ingroup RAPIDJSON_CONFIG + \brief Enable RapidJSON support for \c std::string + + By defining this preprocessor symbol to \c 1, several convenience functions for using + \ref rapidjson::GenericValue with \c std::string are enabled, especially + for construction and comparison. + + \hideinitializer +*/ +#endif // !defined(RAPIDJSON_HAS_STDSTRING) + +#if RAPIDJSON_HAS_STDSTRING +#include <string> +#endif // RAPIDJSON_HAS_STDSTRING + +/////////////////////////////////////////////////////////////////////////////// +// RAPIDJSON_NO_INT64DEFINE + +/*! \def RAPIDJSON_NO_INT64DEFINE + \ingroup RAPIDJSON_CONFIG + \brief Use external 64-bit integer types. + + RapidJSON requires the 64-bit integer types \c int64_t and \c uint64_t types + to be available at global scope. + + If users have their own definition, define RAPIDJSON_NO_INT64DEFINE to + prevent RapidJSON from defining its own types. +*/ +#ifndef RAPIDJSON_NO_INT64DEFINE +//!@cond RAPIDJSON_HIDDEN_FROM_DOXYGEN +#if defined(_MSC_VER) && (_MSC_VER < 1800) // Visual Studio 2013 + +// Begin file: msinttypes/stdint.h +// ISO C9x compliant stdint.h for Microsoft Visual Studio +// Based on ISO/IEC 9899:TC2 Committee draft (May 6, 2005) WG14/N1124 +// +// Copyright (c) 2006-2013 Alexander Chemeris +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are met: +// +// 1. Redistributions of source code must retain the above copyright notice, +// this list of conditions and the following disclaimer. +// +// 2. Redistributions in binary form must reproduce the above copyright +// notice, this list of conditions and the following disclaimer in the +// documentation and/or other materials provided with the distribution. +// +// 3. Neither the name of the product nor the names of its contributors may +// be used to endorse or promote products derived from this software +// without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR IMPLIED +// WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF +// MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO +// EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, +// PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; +// OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, +// WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR +// OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF +// ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +// +/////////////////////////////////////////////////////////////////////////////// + +// The above software in this distribution may have been modified by +// THL A29 Limited ("Tencent Modifications"). +// All Tencent Modifications are Copyright (C) 2015 THL A29 Limited. + +#ifndef _MSC_VER // [ +#error "Use this header only with Microsoft Visual C++ compilers!" +#endif // _MSC_VER ] + +#ifndef _MSC_STDINT_H_ // [ +#define _MSC_STDINT_H_ + +#if _MSC_VER > 1000 +#pragma once +#endif + +// miloyip: Originally Visual Studio 2010 uses its own stdint.h. However it generates warning with INT64_C(), so change to use this file for vs2010. +#if _MSC_VER >= 1600 // [ +#include <stdint.h> + +#if !defined(__cplusplus) || defined(__STDC_CONSTANT_MACROS) // [ See footnote 224 at page 260 + +#undef INT8_C +#undef INT16_C +#undef INT32_C +#undef INT64_C +#undef UINT8_C +#undef UINT16_C +#undef UINT32_C +#undef UINT64_C + +// 7.18.4.1 Macros for minimum-width integer constants + +#define INT8_C(val) val##i8 +#define INT16_C(val) val##i16 +#define INT32_C(val) val##i32 +#define INT64_C(val) val##i64 + +#define UINT8_C(val) val##ui8 +#define UINT16_C(val) val##ui16 +#define UINT32_C(val) val##ui32 +#define UINT64_C(val) val##ui64 + +// 7.18.4.2 Macros for greatest-width integer constants +// These #ifndef's are needed to prevent collisions with <boost/cstdint.hpp>. +// Check out Issue 9 for the details. +#ifndef INTMAX_C // [ +# define INTMAX_C INT64_C +#endif // INTMAX_C ] +#ifndef UINTMAX_C // [ +# define UINTMAX_C UINT64_C +#endif // UINTMAX_C ] + +#endif // __STDC_CONSTANT_MACROS ] + +#else // ] _MSC_VER >= 1700 [ + +#include <limits.h> + +// For Visual Studio 6 in C++ mode and for many Visual Studio versions when +// compiling for ARM we have to wrap <wchar.h> include with 'extern "C++" {}' +// or compiler would give many errors like this: +// error C2733: second C linkage of overloaded function 'wmemchr' not allowed +#if defined(__cplusplus) && !defined(_M_ARM) +extern "C" { +#endif +# include <wchar.h> +#if defined(__cplusplus) && !defined(_M_ARM) +} +#endif + +// Define _W64 macros to mark types changing their size, like intptr_t. +#ifndef _W64 +# if !defined(__midl) && (defined(_X86_) || defined(_M_IX86)) && _MSC_VER >= 1300 +# define _W64 __w64 +# else +# define _W64 +# endif +#endif + + +// 7.18.1 Integer types + +// 7.18.1.1 Exact-width integer types + +// Visual Studio 6 and Embedded Visual C++ 4 doesn't +// realize that, e.g. char has the same size as __int8 +// so we give up on __intX for them. +#if (_MSC_VER < 1300) + typedef signed char int8_t; + typedef signed short int16_t; + typedef signed int int32_t; + typedef unsigned char uint8_t; + typedef unsigned short uint16_t; + typedef unsigned int uint32_t; +#else + typedef signed __int8 int8_t; + typedef signed __int16 int16_t; + typedef signed __int32 int32_t; + typedef unsigned __int8 uint8_t; + typedef unsigned __int16 uint16_t; + typedef unsigned __int32 uint32_t; +#endif +typedef signed __int64 int64_t; +typedef unsigned __int64 uint64_t; + + +// 7.18.1.2 Minimum-width integer types +typedef int8_t int_least8_t; +typedef int16_t int_least16_t; +typedef int32_t int_least32_t; +typedef int64_t int_least64_t; +typedef uint8_t uint_least8_t; +typedef uint16_t uint_least16_t; +typedef uint32_t uint_least32_t; +typedef uint64_t uint_least64_t; + +// 7.18.1.3 Fastest minimum-width integer types +typedef int8_t int_fast8_t; +typedef int16_t int_fast16_t; +typedef int32_t int_fast32_t; +typedef int64_t int_fast64_t; +typedef uint8_t uint_fast8_t; +typedef uint16_t uint_fast16_t; +typedef uint32_t uint_fast32_t; +typedef uint64_t uint_fast64_t; + +// 7.18.1.4 Integer types capable of holding object pointers +#ifdef _WIN64 // [ + typedef signed __int64 intptr_t; + typedef unsigned __int64 uintptr_t; +#else // _WIN64 ][ + typedef _W64 signed int intptr_t; + typedef _W64 unsigned int uintptr_t; +#endif // _WIN64 ] + +// 7.18.1.5 Greatest-width integer types +typedef int64_t intmax_t; +typedef uint64_t uintmax_t; + + +// 7.18.2 Limits of specified-width integer types + +#if !defined(__cplusplus) || defined(__STDC_LIMIT_MACROS) // [ See footnote 220 at page 257 and footnote 221 at page 259 + +// 7.18.2.1 Limits of exact-width integer types +#define INT8_MIN ((int8_t)_I8_MIN) +#define INT8_MAX _I8_MAX +#define INT16_MIN ((int16_t)_I16_MIN) +#define INT16_MAX _I16_MAX +#define INT32_MIN ((int32_t)_I32_MIN) +#define INT32_MAX _I32_MAX +#define INT64_MIN ((int64_t)_I64_MIN) +#define INT64_MAX _I64_MAX +#define UINT8_MAX _UI8_MAX +#define UINT16_MAX _UI16_MAX +#define UINT32_MAX _UI32_MAX +#define UINT64_MAX _UI64_MAX + +// 7.18.2.2 Limits of minimum-width integer types +#define INT_LEAST8_MIN INT8_MIN +#define INT_LEAST8_MAX INT8_MAX +#define INT_LEAST16_MIN INT16_MIN +#define INT_LEAST16_MAX INT16_MAX +#define INT_LEAST32_MIN INT32_MIN +#define INT_LEAST32_MAX INT32_MAX +#define INT_LEAST64_MIN INT64_MIN +#define INT_LEAST64_MAX INT64_MAX +#define UINT_LEAST8_MAX UINT8_MAX +#define UINT_LEAST16_MAX UINT16_MAX +#define UINT_LEAST32_MAX UINT32_MAX +#define UINT_LEAST64_MAX UINT64_MAX + +// 7.18.2.3 Limits of fastest minimum-width integer types +#define INT_FAST8_MIN INT8_MIN +#define INT_FAST8_MAX INT8_MAX +#define INT_FAST16_MIN INT16_MIN +#define INT_FAST16_MAX INT16_MAX +#define INT_FAST32_MIN INT32_MIN +#define INT_FAST32_MAX INT32_MAX +#define INT_FAST64_MIN INT64_MIN +#define INT_FAST64_MAX INT64_MAX +#define UINT_FAST8_MAX UINT8_MAX +#define UINT_FAST16_MAX UINT16_MAX +#define UINT_FAST32_MAX UINT32_MAX +#define UINT_FAST64_MAX UINT64_MAX + +// 7.18.2.4 Limits of integer types capable of holding object pointers +#ifdef _WIN64 // [ +# define INTPTR_MIN INT64_MIN +# define INTPTR_MAX INT64_MAX +# define UINTPTR_MAX UINT64_MAX +#else // _WIN64 ][ +# define INTPTR_MIN INT32_MIN +# define INTPTR_MAX INT32_MAX +# define UINTPTR_MAX UINT32_MAX +#endif // _WIN64 ] + +// 7.18.2.5 Limits of greatest-width integer types +#define INTMAX_MIN INT64_MIN +#define INTMAX_MAX INT64_MAX +#define UINTMAX_MAX UINT64_MAX + +// 7.18.3 Limits of other integer types + +#ifdef _WIN64 // [ +# define PTRDIFF_MIN _I64_MIN +# define PTRDIFF_MAX _I64_MAX +#else // _WIN64 ][ +# define PTRDIFF_MIN _I32_MIN +# define PTRDIFF_MAX _I32_MAX +#endif // _WIN64 ] + +#define SIG_ATOMIC_MIN INT_MIN +#define SIG_ATOMIC_MAX INT_MAX + +#ifndef SIZE_MAX // [ +# ifdef _WIN64 // [ +# define SIZE_MAX _UI64_MAX +# else // _WIN64 ][ +# define SIZE_MAX _UI32_MAX +# endif // _WIN64 ] +#endif // SIZE_MAX ] + +// WCHAR_MIN and WCHAR_MAX are also defined in <wchar.h> +#ifndef WCHAR_MIN // [ +# define WCHAR_MIN 0 +#endif // WCHAR_MIN ] +#ifndef WCHAR_MAX // [ +# define WCHAR_MAX _UI16_MAX +#endif // WCHAR_MAX ] + +#define WINT_MIN 0 +#define WINT_MAX _UI16_MAX + +#endif // __STDC_LIMIT_MACROS ] + + +// 7.18.4 Limits of other integer types + +#if !defined(__cplusplus) || defined(__STDC_CONSTANT_MACROS) // [ See footnote 224 at page 260 + +// 7.18.4.1 Macros for minimum-width integer constants + +#define INT8_C(val) val##i8 +#define INT16_C(val) val##i16 +#define INT32_C(val) val##i32 +#define INT64_C(val) val##i64 + +#define UINT8_C(val) val##ui8 +#define UINT16_C(val) val##ui16 +#define UINT32_C(val) val##ui32 +#define UINT64_C(val) val##ui64 + +// 7.18.4.2 Macros for greatest-width integer constants +// These #ifndef's are needed to prevent collisions with <boost/cstdint.hpp>. +// Check out Issue 9 for the details. +#ifndef INTMAX_C // [ +# define INTMAX_C INT64_C +#endif // INTMAX_C ] +#ifndef UINTMAX_C // [ +# define UINTMAX_C UINT64_C +#endif // UINTMAX_C ] + +#endif // __STDC_CONSTANT_MACROS ] + +#endif // _MSC_VER >= 1600 ] + +#endif // _MSC_STDINT_H_ ] + +// End file:msinttypes/stdint.h + + +// Begin file: msinttypes/inttypes.h +// ISO C9x compliant inttypes.h for Microsoft Visual Studio +// Based on ISO/IEC 9899:TC2 Committee draft (May 6, 2005) WG14/N1124 +// +// Copyright (c) 2006-2013 Alexander Chemeris +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are met: +// +// 1. Redistributions of source code must retain the above copyright notice, +// this list of conditions and the following disclaimer. +// +// 2. Redistributions in binary form must reproduce the above copyright +// notice, this list of conditions and the following disclaimer in the +// documentation and/or other materials provided with the distribution. +// +// 3. Neither the name of the product nor the names of its contributors may +// be used to endorse or promote products derived from this software +// without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR IMPLIED +// WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF +// MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO +// EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, +// PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; +// OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, +// WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR +// OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF +// ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +// +/////////////////////////////////////////////////////////////////////////////// + +// The above software in this distribution may have been modified by +// THL A29 Limited ("Tencent Modifications"). +// All Tencent Modifications are Copyright (C) 2015 THL A29 Limited. + +#ifndef _MSC_VER // [ +#error "Use this header only with Microsoft Visual C++ compilers!" +#endif // _MSC_VER ] + +#ifndef _MSC_INTTYPES_H_ // [ +#define _MSC_INTTYPES_H_ + +#if _MSC_VER > 1000 +#pragma once +#endif + + +// Begin file: stdint.h +// already included +// End file:stdint.h + + +// miloyip: VC supports inttypes.h since VC2013 +#if _MSC_VER >= 1800 +#include <inttypes.h> +#else + +// 7.8 Format conversion of integer types + +typedef struct { + intmax_t quot; + intmax_t rem; +} imaxdiv_t; + +// 7.8.1 Macros for format specifiers + +#if !defined(__cplusplus) || defined(__STDC_FORMAT_MACROS) // [ See footnote 185 at page 198 + +// The fprintf macros for signed integers are: +#define PRId8 "d" +#define PRIi8 "i" +#define PRIdLEAST8 "d" +#define PRIiLEAST8 "i" +#define PRIdFAST8 "d" +#define PRIiFAST8 "i" + +#define PRId16 "hd" +#define PRIi16 "hi" +#define PRIdLEAST16 "hd" +#define PRIiLEAST16 "hi" +#define PRIdFAST16 "hd" +#define PRIiFAST16 "hi" + +#define PRId32 "I32d" +#define PRIi32 "I32i" +#define PRIdLEAST32 "I32d" +#define PRIiLEAST32 "I32i" +#define PRIdFAST32 "I32d" +#define PRIiFAST32 "I32i" + +#define PRId64 "I64d" +#define PRIi64 "I64i" +#define PRIdLEAST64 "I64d" +#define PRIiLEAST64 "I64i" +#define PRIdFAST64 "I64d" +#define PRIiFAST64 "I64i" + +#define PRIdMAX "I64d" +#define PRIiMAX "I64i" + +#define PRIdPTR "Id" +#define PRIiPTR "Ii" + +// The fprintf macros for unsigned integers are: +#define PRIo8 "o" +#define PRIu8 "u" +#define PRIx8 "x" +#define PRIX8 "X" +#define PRIoLEAST8 "o" +#define PRIuLEAST8 "u" +#define PRIxLEAST8 "x" +#define PRIXLEAST8 "X" +#define PRIoFAST8 "o" +#define PRIuFAST8 "u" +#define PRIxFAST8 "x" +#define PRIXFAST8 "X" + +#define PRIo16 "ho" +#define PRIu16 "hu" +#define PRIx16 "hx" +#define PRIX16 "hX" +#define PRIoLEAST16 "ho" +#define PRIuLEAST16 "hu" +#define PRIxLEAST16 "hx" +#define PRIXLEAST16 "hX" +#define PRIoFAST16 "ho" +#define PRIuFAST16 "hu" +#define PRIxFAST16 "hx" +#define PRIXFAST16 "hX" + +#define PRIo32 "I32o" +#define PRIu32 "I32u" +#define PRIx32 "I32x" +#define PRIX32 "I32X" +#define PRIoLEAST32 "I32o" +#define PRIuLEAST32 "I32u" +#define PRIxLEAST32 "I32x" +#define PRIXLEAST32 "I32X" +#define PRIoFAST32 "I32o" +#define PRIuFAST32 "I32u" +#define PRIxFAST32 "I32x" +#define PRIXFAST32 "I32X" + +#define PRIo64 "I64o" +#define PRIu64 "I64u" +#define PRIx64 "I64x" +#define PRIX64 "I64X" +#define PRIoLEAST64 "I64o" +#define PRIuLEAST64 "I64u" +#define PRIxLEAST64 "I64x" +#define PRIXLEAST64 "I64X" +#define PRIoFAST64 "I64o" +#define PRIuFAST64 "I64u" +#define PRIxFAST64 "I64x" +#define PRIXFAST64 "I64X" + +#define PRIoMAX "I64o" +#define PRIuMAX "I64u" +#define PRIxMAX "I64x" +#define PRIXMAX "I64X" + +#define PRIoPTR "Io" +#define PRIuPTR "Iu" +#define PRIxPTR "Ix" +#define PRIXPTR "IX" + +// The fscanf macros for signed integers are: +#define SCNd8 "d" +#define SCNi8 "i" +#define SCNdLEAST8 "d" +#define SCNiLEAST8 "i" +#define SCNdFAST8 "d" +#define SCNiFAST8 "i" + +#define SCNd16 "hd" +#define SCNi16 "hi" +#define SCNdLEAST16 "hd" +#define SCNiLEAST16 "hi" +#define SCNdFAST16 "hd" +#define SCNiFAST16 "hi" + +#define SCNd32 "ld" +#define SCNi32 "li" +#define SCNdLEAST32 "ld" +#define SCNiLEAST32 "li" +#define SCNdFAST32 "ld" +#define SCNiFAST32 "li" + +#define SCNd64 "I64d" +#define SCNi64 "I64i" +#define SCNdLEAST64 "I64d" +#define SCNiLEAST64 "I64i" +#define SCNdFAST64 "I64d" +#define SCNiFAST64 "I64i" + +#define SCNdMAX "I64d" +#define SCNiMAX "I64i" + +#ifdef _WIN64 // [ +# define SCNdPTR "I64d" +# define SCNiPTR "I64i" +#else // _WIN64 ][ +# define SCNdPTR "ld" +# define SCNiPTR "li" +#endif // _WIN64 ] + +// The fscanf macros for unsigned integers are: +#define SCNo8 "o" +#define SCNu8 "u" +#define SCNx8 "x" +#define SCNX8 "X" +#define SCNoLEAST8 "o" +#define SCNuLEAST8 "u" +#define SCNxLEAST8 "x" +#define SCNXLEAST8 "X" +#define SCNoFAST8 "o" +#define SCNuFAST8 "u" +#define SCNxFAST8 "x" +#define SCNXFAST8 "X" + +#define SCNo16 "ho" +#define SCNu16 "hu" +#define SCNx16 "hx" +#define SCNX16 "hX" +#define SCNoLEAST16 "ho" +#define SCNuLEAST16 "hu" +#define SCNxLEAST16 "hx" +#define SCNXLEAST16 "hX" +#define SCNoFAST16 "ho" +#define SCNuFAST16 "hu" +#define SCNxFAST16 "hx" +#define SCNXFAST16 "hX" + +#define SCNo32 "lo" +#define SCNu32 "lu" +#define SCNx32 "lx" +#define SCNX32 "lX" +#define SCNoLEAST32 "lo" +#define SCNuLEAST32 "lu" +#define SCNxLEAST32 "lx" +#define SCNXLEAST32 "lX" +#define SCNoFAST32 "lo" +#define SCNuFAST32 "lu" +#define SCNxFAST32 "lx" +#define SCNXFAST32 "lX" + +#define SCNo64 "I64o" +#define SCNu64 "I64u" +#define SCNx64 "I64x" +#define SCNX64 "I64X" +#define SCNoLEAST64 "I64o" +#define SCNuLEAST64 "I64u" +#define SCNxLEAST64 "I64x" +#define SCNXLEAST64 "I64X" +#define SCNoFAST64 "I64o" +#define SCNuFAST64 "I64u" +#define SCNxFAST64 "I64x" +#define SCNXFAST64 "I64X" + +#define SCNoMAX "I64o" +#define SCNuMAX "I64u" +#define SCNxMAX "I64x" +#define SCNXMAX "I64X" + +#ifdef _WIN64 // [ +# define SCNoPTR "I64o" +# define SCNuPTR "I64u" +# define SCNxPTR "I64x" +# define SCNXPTR "I64X" +#else // _WIN64 ][ +# define SCNoPTR "lo" +# define SCNuPTR "lu" +# define SCNxPTR "lx" +# define SCNXPTR "lX" +#endif // _WIN64 ] + +#endif // __STDC_FORMAT_MACROS ] + +// 7.8.2 Functions for greatest-width integer types + +// 7.8.2.1 The imaxabs function +#define imaxabs _abs64 + +// 7.8.2.2 The imaxdiv function + +// This is modified version of div() function from Microsoft's div.c found +// in %MSVC.NET%\crt\src\div.c +#ifdef STATIC_IMAXDIV // [ +static +#else // STATIC_IMAXDIV ][ +_inline +#endif // STATIC_IMAXDIV ] +imaxdiv_t __cdecl imaxdiv(intmax_t numer, intmax_t denom) +{ + imaxdiv_t result; + + result.quot = numer / denom; + result.rem = numer % denom; + + if (numer < 0 && result.rem > 0) { + // did division wrong; must fix up + ++result.quot; + result.rem -= denom; + } + + return result; +} + +// 7.8.2.3 The strtoimax and strtoumax functions +#define strtoimax _strtoi64 +#define strtoumax _strtoui64 + +// 7.8.2.4 The wcstoimax and wcstoumax functions +#define wcstoimax _wcstoi64 +#define wcstoumax _wcstoui64 + +#endif // _MSC_VER >= 1800 + +#endif // _MSC_INTTYPES_H_ ] + +// End file:msinttypes/inttypes.h + +#else +// Other compilers should have this. +#include <stdint.h> +#include <inttypes.h> +#endif +//!@endcond +#ifdef RAPIDJSON_DOXYGEN_RUNNING +#define RAPIDJSON_NO_INT64DEFINE +#endif +#endif // RAPIDJSON_NO_INT64TYPEDEF + +/////////////////////////////////////////////////////////////////////////////// +// RAPIDJSON_FORCEINLINE + +#ifndef RAPIDJSON_FORCEINLINE +//!@cond RAPIDJSON_HIDDEN_FROM_DOXYGEN +#if defined(_MSC_VER) && defined(NDEBUG) +#define RAPIDJSON_FORCEINLINE __forceinline +#elif defined(__GNUC__) && __GNUC__ >= 4 && defined(NDEBUG) +#define RAPIDJSON_FORCEINLINE __attribute__((always_inline)) +#else +#define RAPIDJSON_FORCEINLINE +#endif +//!@endcond +#endif // RAPIDJSON_FORCEINLINE + +/////////////////////////////////////////////////////////////////////////////// +// RAPIDJSON_ENDIAN +#define RAPIDJSON_LITTLEENDIAN 0 //!< Little endian machine +#define RAPIDJSON_BIGENDIAN 1 //!< Big endian machine + +//! Endianness of the machine. +/*! + \def RAPIDJSON_ENDIAN + \ingroup RAPIDJSON_CONFIG + + GCC 4.6 provided macro for detecting endianness of the target machine. But other + compilers may not have this. User can define RAPIDJSON_ENDIAN to either + \ref RAPIDJSON_LITTLEENDIAN or \ref RAPIDJSON_BIGENDIAN. + + Default detection implemented with reference to + \li https://gcc.gnu.org/onlinedocs/gcc-4.6.0/cpp/Common-Predefined-Macros.html + \li http://www.boost.org/doc/libs/1_42_0/boost/detail/endian.hpp +*/ +#ifndef RAPIDJSON_ENDIAN +// Detect with GCC 4.6's macro +# ifdef __BYTE_ORDER__ +# if __BYTE_ORDER__ == __ORDER_LITTLE_ENDIAN__ +# define RAPIDJSON_ENDIAN RAPIDJSON_LITTLEENDIAN +# elif __BYTE_ORDER__ == __ORDER_BIG_ENDIAN__ +# define RAPIDJSON_ENDIAN RAPIDJSON_BIGENDIAN +# else +# error Unknown machine endianness detected. User needs to define RAPIDJSON_ENDIAN. +# endif // __BYTE_ORDER__ +// Detect with GLIBC's endian.h +# elif defined(__GLIBC__) +# include <endian.h> +# if (__BYTE_ORDER == __LITTLE_ENDIAN) +# define RAPIDJSON_ENDIAN RAPIDJSON_LITTLEENDIAN +# elif (__BYTE_ORDER == __BIG_ENDIAN) +# define RAPIDJSON_ENDIAN RAPIDJSON_BIGENDIAN +# else +# error Unknown machine endianness detected. User needs to define RAPIDJSON_ENDIAN. +# endif // __GLIBC__ +// Detect with _LITTLE_ENDIAN and _BIG_ENDIAN macro +# elif defined(_LITTLE_ENDIAN) && !defined(_BIG_ENDIAN) +# define RAPIDJSON_ENDIAN RAPIDJSON_LITTLEENDIAN +# elif defined(_BIG_ENDIAN) && !defined(_LITTLE_ENDIAN) +# define RAPIDJSON_ENDIAN RAPIDJSON_BIGENDIAN +// Detect with architecture macros +# elif defined(__sparc) || defined(__sparc__) || defined(_POWER) || defined(__powerpc__) || defined(__ppc__) || defined(__hpux) || defined(__hppa) || defined(_MIPSEB) || defined(_POWER) || defined(__s390__) +# define RAPIDJSON_ENDIAN RAPIDJSON_BIGENDIAN +# elif defined(__i386__) || defined(__alpha__) || defined(__ia64) || defined(__ia64__) || defined(_M_IX86) || defined(_M_IA64) || defined(_M_ALPHA) || defined(__amd64) || defined(__amd64__) || defined(_M_AMD64) || defined(__x86_64) || defined(__x86_64__) || defined(_M_X64) || defined(__bfin__) +# define RAPIDJSON_ENDIAN RAPIDJSON_LITTLEENDIAN +# elif defined(_MSC_VER) && (defined(_M_ARM) || defined(_M_ARM64)) +# define RAPIDJSON_ENDIAN RAPIDJSON_LITTLEENDIAN +# elif defined(RAPIDJSON_DOXYGEN_RUNNING) +# define RAPIDJSON_ENDIAN +# else +# error Unknown machine endianness detected. User needs to define RAPIDJSON_ENDIAN. +# endif +#endif // RAPIDJSON_ENDIAN + +/////////////////////////////////////////////////////////////////////////////// +// RAPIDJSON_64BIT + +//! Whether using 64-bit architecture +#ifndef RAPIDJSON_64BIT +#if defined(__LP64__) || (defined(__x86_64__) && defined(__ILP32__)) || defined(_WIN64) || defined(__EMSCRIPTEN__) +#define RAPIDJSON_64BIT 1 +#else +#define RAPIDJSON_64BIT 0 +#endif +#endif // RAPIDJSON_64BIT + +/////////////////////////////////////////////////////////////////////////////// +// RAPIDJSON_ALIGN + +//! Data alignment of the machine. +/*! \ingroup RAPIDJSON_CONFIG + \param x pointer to align + + Some machines require strict data alignment. The default is 8 bytes. + User can customize by defining the RAPIDJSON_ALIGN function macro. +*/ +#ifndef RAPIDJSON_ALIGN +#define RAPIDJSON_ALIGN(x) (((x) + static_cast<size_t>(7u)) & ~static_cast<size_t>(7u)) +#endif + +/////////////////////////////////////////////////////////////////////////////// +// RAPIDJSON_UINT64_C2 + +//! Construct a 64-bit literal by a pair of 32-bit integer. +/*! + 64-bit literal with or without ULL suffix is prone to compiler warnings. + UINT64_C() is C macro which cause compilation problems. + Use this macro to define 64-bit constants by a pair of 32-bit integer. +*/ +#ifndef RAPIDJSON_UINT64_C2 +#define RAPIDJSON_UINT64_C2(high32, low32) ((static_cast<uint64_t>(high32) << 32) | static_cast<uint64_t>(low32)) +#endif + +/////////////////////////////////////////////////////////////////////////////// +// RAPIDJSON_48BITPOINTER_OPTIMIZATION + +//! Use only lower 48-bit address for some pointers. +/*! + \ingroup RAPIDJSON_CONFIG + + This optimization uses the fact that current X86-64 architecture only implement lower 48-bit virtual address. + The higher 16-bit can be used for storing other data. + \c GenericValue uses this optimization to reduce its size form 24 bytes to 16 bytes in 64-bit architecture. +*/ +#ifndef RAPIDJSON_48BITPOINTER_OPTIMIZATION +#if defined(__amd64__) || defined(__amd64) || defined(__x86_64__) || defined(__x86_64) || defined(_M_X64) || defined(_M_AMD64) +#define RAPIDJSON_48BITPOINTER_OPTIMIZATION 1 +#else +#define RAPIDJSON_48BITPOINTER_OPTIMIZATION 0 +#endif +#endif // RAPIDJSON_48BITPOINTER_OPTIMIZATION + +#if RAPIDJSON_48BITPOINTER_OPTIMIZATION == 1 +#if RAPIDJSON_64BIT != 1 +#error RAPIDJSON_48BITPOINTER_OPTIMIZATION can only be set to 1 when RAPIDJSON_64BIT=1 +#endif +#define RAPIDJSON_SETPOINTER(type, p, x) (p = reinterpret_cast<type *>((reinterpret_cast<uintptr_t>(p) & static_cast<uintptr_t>(RAPIDJSON_UINT64_C2(0xFFFF0000, 0x00000000))) | reinterpret_cast<uintptr_t>(reinterpret_cast<const void*>(x)))) +#define RAPIDJSON_GETPOINTER(type, p) (reinterpret_cast<type *>(reinterpret_cast<uintptr_t>(p) & static_cast<uintptr_t>(RAPIDJSON_UINT64_C2(0x0000FFFF, 0xFFFFFFFF)))) +#else +#define RAPIDJSON_SETPOINTER(type, p, x) (p = (x)) +#define RAPIDJSON_GETPOINTER(type, p) (p) +#endif + +/////////////////////////////////////////////////////////////////////////////// +// RAPIDJSON_SSE2/RAPIDJSON_SSE42/RAPIDJSON_NEON/RAPIDJSON_SIMD + +/*! \def RAPIDJSON_SIMD + \ingroup RAPIDJSON_CONFIG + \brief Enable SSE2/SSE4.2/Neon optimization. + + RapidJSON supports optimized implementations for some parsing operations + based on the SSE2, SSE4.2 or NEon SIMD extensions on modern Intel + or ARM compatible processors. + + To enable these optimizations, three different symbols can be defined; + \code + // Enable SSE2 optimization. + #define RAPIDJSON_SSE2 + + // Enable SSE4.2 optimization. + #define RAPIDJSON_SSE42 + \endcode + + // Enable ARM Neon optimization. + #define RAPIDJSON_NEON + \endcode + + \c RAPIDJSON_SSE42 takes precedence over SSE2, if both are defined. + + If any of these symbols is defined, RapidJSON defines the macro + \c RAPIDJSON_SIMD to indicate the availability of the optimized code. +*/ +#if defined(RAPIDJSON_SSE2) || defined(RAPIDJSON_SSE42) \ + || defined(RAPIDJSON_NEON) || defined(RAPIDJSON_DOXYGEN_RUNNING) +#define RAPIDJSON_SIMD +#endif + +/////////////////////////////////////////////////////////////////////////////// +// RAPIDJSON_NO_SIZETYPEDEFINE + +#ifndef RAPIDJSON_NO_SIZETYPEDEFINE +/*! \def RAPIDJSON_NO_SIZETYPEDEFINE + \ingroup RAPIDJSON_CONFIG + \brief User-provided \c SizeType definition. + + In order to avoid using 32-bit size types for indexing strings and arrays, + define this preprocessor symbol and provide the type rapidjson::SizeType + before including RapidJSON: + \code + #define RAPIDJSON_NO_SIZETYPEDEFINE + namespace rapidjson { typedef ::std::size_t SizeType; } + #include "rapidjson/..." + \endcode + + \see rapidjson::SizeType +*/ +#ifdef RAPIDJSON_DOXYGEN_RUNNING +#define RAPIDJSON_NO_SIZETYPEDEFINE +#endif +RAPIDJSON_NAMESPACE_BEGIN +//! Size type (for string lengths, array sizes, etc.) +/*! RapidJSON uses 32-bit array/string indices even on 64-bit platforms, + instead of using \c size_t. Users may override the SizeType by defining + \ref RAPIDJSON_NO_SIZETYPEDEFINE. +*/ +typedef unsigned SizeType; +RAPIDJSON_NAMESPACE_END +#endif + +// always import std::size_t to rapidjson namespace +RAPIDJSON_NAMESPACE_BEGIN +using std::size_t; +RAPIDJSON_NAMESPACE_END + +/////////////////////////////////////////////////////////////////////////////// +// RAPIDJSON_ASSERT + +//! Assertion. +/*! \ingroup RAPIDJSON_CONFIG + By default, rapidjson uses C \c assert() for internal assertions. + User can override it by defining RAPIDJSON_ASSERT(x) macro. + + \note Parsing errors are handled and can be customized by the + \ref RAPIDJSON_ERRORS APIs. +*/ +#ifndef RAPIDJSON_ASSERT +#include <cassert> +#define RAPIDJSON_ASSERT(x) assert(x) +#endif // RAPIDJSON_ASSERT + +/////////////////////////////////////////////////////////////////////////////// +// RAPIDJSON_STATIC_ASSERT + +// Prefer C++11 static_assert, if available +#ifndef RAPIDJSON_STATIC_ASSERT +#if __cplusplus >= 201103L || ( defined(_MSC_VER) && _MSC_VER >= 1800 ) +#define RAPIDJSON_STATIC_ASSERT(x) \ + static_assert(x, RAPIDJSON_STRINGIFY(x)) +#endif // C++11 +#endif // RAPIDJSON_STATIC_ASSERT + +// Adopt C++03 implementation from boost +#ifndef RAPIDJSON_STATIC_ASSERT +#ifndef __clang__ +//!@cond RAPIDJSON_HIDDEN_FROM_DOXYGEN +#endif +RAPIDJSON_NAMESPACE_BEGIN +template <bool x> struct STATIC_ASSERTION_FAILURE; +template <> struct STATIC_ASSERTION_FAILURE<true> { enum { value = 1 }; }; +template <size_t x> struct StaticAssertTest {}; +RAPIDJSON_NAMESPACE_END + +#if defined(__GNUC__) || defined(__clang__) +#define RAPIDJSON_STATIC_ASSERT_UNUSED_ATTRIBUTE __attribute__((unused)) +#else +#define RAPIDJSON_STATIC_ASSERT_UNUSED_ATTRIBUTE +#endif +#ifndef __clang__ +//!@endcond +#endif + +/*! \def RAPIDJSON_STATIC_ASSERT + \brief (Internal) macro to check for conditions at compile-time + \param x compile-time condition + \hideinitializer + */ +#define RAPIDJSON_STATIC_ASSERT(x) \ + typedef ::RAPIDJSON_NAMESPACE::StaticAssertTest< \ + sizeof(::RAPIDJSON_NAMESPACE::STATIC_ASSERTION_FAILURE<bool(x) >)> \ + RAPIDJSON_JOIN(StaticAssertTypedef, __LINE__) RAPIDJSON_STATIC_ASSERT_UNUSED_ATTRIBUTE +#endif // RAPIDJSON_STATIC_ASSERT + +/////////////////////////////////////////////////////////////////////////////// +// RAPIDJSON_LIKELY, RAPIDJSON_UNLIKELY + +//! Compiler branching hint for expression with high probability to be true. +/*! + \ingroup RAPIDJSON_CONFIG + \param x Boolean expression likely to be true. +*/ +#ifndef RAPIDJSON_LIKELY +#if defined(__GNUC__) || defined(__clang__) +#define RAPIDJSON_LIKELY(x) __builtin_expect(!!(x), 1) +#else +#define RAPIDJSON_LIKELY(x) (x) +#endif +#endif + +//! Compiler branching hint for expression with low probability to be true. +/*! + \ingroup RAPIDJSON_CONFIG + \param x Boolean expression unlikely to be true. +*/ +#ifndef RAPIDJSON_UNLIKELY +#if defined(__GNUC__) || defined(__clang__) +#define RAPIDJSON_UNLIKELY(x) __builtin_expect(!!(x), 0) +#else +#define RAPIDJSON_UNLIKELY(x) (x) +#endif +#endif + +/////////////////////////////////////////////////////////////////////////////// +// Helpers + +//!@cond RAPIDJSON_HIDDEN_FROM_DOXYGEN + +#define RAPIDJSON_MULTILINEMACRO_BEGIN do { +#define RAPIDJSON_MULTILINEMACRO_END \ +} while((void)0, 0) + +// adopted from Boost +#define RAPIDJSON_VERSION_CODE(x,y,z) \ + (((x)*100000) + ((y)*100) + (z)) + +/////////////////////////////////////////////////////////////////////////////// +// RAPIDJSON_DIAG_PUSH/POP, RAPIDJSON_DIAG_OFF + +#if defined(__GNUC__) +#define RAPIDJSON_GNUC \ + RAPIDJSON_VERSION_CODE(__GNUC__,__GNUC_MINOR__,__GNUC_PATCHLEVEL__) +#endif + +#if defined(__clang__) || (defined(RAPIDJSON_GNUC) && RAPIDJSON_GNUC >= RAPIDJSON_VERSION_CODE(4,2,0)) + +#define RAPIDJSON_PRAGMA(x) _Pragma(RAPIDJSON_STRINGIFY(x)) +#define RAPIDJSON_DIAG_PRAGMA(x) RAPIDJSON_PRAGMA(GCC diagnostic x) +#define RAPIDJSON_DIAG_OFF(x) \ + RAPIDJSON_DIAG_PRAGMA(ignored RAPIDJSON_STRINGIFY(RAPIDJSON_JOIN(-W,x))) + +// push/pop support in Clang and GCC>=4.6 +#if defined(__clang__) || (defined(RAPIDJSON_GNUC) && RAPIDJSON_GNUC >= RAPIDJSON_VERSION_CODE(4,6,0)) +#define RAPIDJSON_DIAG_PUSH RAPIDJSON_DIAG_PRAGMA(push) +#define RAPIDJSON_DIAG_POP RAPIDJSON_DIAG_PRAGMA(pop) +#else // GCC >= 4.2, < 4.6 +#define RAPIDJSON_DIAG_PUSH /* ignored */ +#define RAPIDJSON_DIAG_POP /* ignored */ +#endif + +#elif defined(_MSC_VER) + +// pragma (MSVC specific) +#define RAPIDJSON_PRAGMA(x) __pragma(x) +#define RAPIDJSON_DIAG_PRAGMA(x) RAPIDJSON_PRAGMA(warning(x)) + +#define RAPIDJSON_DIAG_OFF(x) RAPIDJSON_DIAG_PRAGMA(disable: x) +#define RAPIDJSON_DIAG_PUSH RAPIDJSON_DIAG_PRAGMA(push) +#define RAPIDJSON_DIAG_POP RAPIDJSON_DIAG_PRAGMA(pop) + +#else + +#define RAPIDJSON_DIAG_OFF(x) /* ignored */ +#define RAPIDJSON_DIAG_PUSH /* ignored */ +#define RAPIDJSON_DIAG_POP /* ignored */ + +#endif // RAPIDJSON_DIAG_* + +/////////////////////////////////////////////////////////////////////////////// +// C++11 features + +#ifndef RAPIDJSON_HAS_CXX11_RVALUE_REFS +#if defined(__clang__) +#if __has_feature(cxx_rvalue_references) && \ + (defined(_MSC_VER) || defined(_LIBCPP_VERSION) || defined(__GLIBCXX__) && __GLIBCXX__ >= 20080306) +#define RAPIDJSON_HAS_CXX11_RVALUE_REFS 1 +#else +#define RAPIDJSON_HAS_CXX11_RVALUE_REFS 0 +#endif +#elif (defined(RAPIDJSON_GNUC) && (RAPIDJSON_GNUC >= RAPIDJSON_VERSION_CODE(4,3,0)) && defined(__GXX_EXPERIMENTAL_CXX0X__)) || \ + (defined(_MSC_VER) && _MSC_VER >= 1600) || \ + (defined(__SUNPRO_CC) && __SUNPRO_CC >= 0x5140 && defined(__GXX_EXPERIMENTAL_CXX0X__)) + +#define RAPIDJSON_HAS_CXX11_RVALUE_REFS 1 +#else +#define RAPIDJSON_HAS_CXX11_RVALUE_REFS 0 +#endif +#endif // RAPIDJSON_HAS_CXX11_RVALUE_REFS + +#ifndef RAPIDJSON_HAS_CXX11_NOEXCEPT +#if defined(__clang__) +#define RAPIDJSON_HAS_CXX11_NOEXCEPT __has_feature(cxx_noexcept) +#elif (defined(RAPIDJSON_GNUC) && (RAPIDJSON_GNUC >= RAPIDJSON_VERSION_CODE(4,6,0)) && defined(__GXX_EXPERIMENTAL_CXX0X__)) || \ + (defined(_MSC_VER) && _MSC_VER >= 1900) || \ + (defined(__SUNPRO_CC) && __SUNPRO_CC >= 0x5140 && defined(__GXX_EXPERIMENTAL_CXX0X__)) +#define RAPIDJSON_HAS_CXX11_NOEXCEPT 1 +#else +#define RAPIDJSON_HAS_CXX11_NOEXCEPT 0 +#endif +#endif +#if RAPIDJSON_HAS_CXX11_NOEXCEPT +#define RAPIDJSON_NOEXCEPT noexcept +#else +#define RAPIDJSON_NOEXCEPT /* noexcept */ +#endif // RAPIDJSON_HAS_CXX11_NOEXCEPT + +// no automatic detection, yet +#ifndef RAPIDJSON_HAS_CXX11_TYPETRAITS +#if (defined(_MSC_VER) && _MSC_VER >= 1700) +#define RAPIDJSON_HAS_CXX11_TYPETRAITS 1 +#else +#define RAPIDJSON_HAS_CXX11_TYPETRAITS 0 +#endif +#endif + +#ifndef RAPIDJSON_HAS_CXX11_RANGE_FOR +#if defined(__clang__) +#define RAPIDJSON_HAS_CXX11_RANGE_FOR __has_feature(cxx_range_for) +#elif (defined(RAPIDJSON_GNUC) && (RAPIDJSON_GNUC >= RAPIDJSON_VERSION_CODE(4,6,0)) && defined(__GXX_EXPERIMENTAL_CXX0X__)) || \ + (defined(_MSC_VER) && _MSC_VER >= 1700) || \ + (defined(__SUNPRO_CC) && __SUNPRO_CC >= 0x5140 && defined(__GXX_EXPERIMENTAL_CXX0X__)) +#define RAPIDJSON_HAS_CXX11_RANGE_FOR 1 +#else +#define RAPIDJSON_HAS_CXX11_RANGE_FOR 0 +#endif +#endif // RAPIDJSON_HAS_CXX11_RANGE_FOR + +//!@endcond + +//! Assertion (in non-throwing contexts). + /*! \ingroup RAPIDJSON_CONFIG + Some functions provide a \c noexcept guarantee, if the compiler supports it. + In these cases, the \ref RAPIDJSON_ASSERT macro cannot be overridden to + throw an exception. This macro adds a separate customization point for + such cases. + + Defaults to C \c assert() (as \ref RAPIDJSON_ASSERT), if \c noexcept is + supported, and to \ref RAPIDJSON_ASSERT otherwise. + */ + +/////////////////////////////////////////////////////////////////////////////// +// RAPIDJSON_NOEXCEPT_ASSERT + +#ifdef RAPIDJSON_ASSERT_THROWS +#if RAPIDJSON_HAS_CXX11_NOEXCEPT +#define RAPIDJSON_NOEXCEPT_ASSERT(x) +#else +#define RAPIDJSON_NOEXCEPT_ASSERT(x) RAPIDJSON_ASSERT(x) +#endif // RAPIDJSON_HAS_CXX11_NOEXCEPT +#else +#define RAPIDJSON_NOEXCEPT_ASSERT(x) RAPIDJSON_ASSERT(x) +#endif // RAPIDJSON_ASSERT_THROWS + +/////////////////////////////////////////////////////////////////////////////// +// new/delete + +#ifndef RAPIDJSON_NEW +///! customization point for global \c new +#define RAPIDJSON_NEW(TypeName) new TypeName +#endif +#ifndef RAPIDJSON_DELETE +///! customization point for global \c delete +#define RAPIDJSON_DELETE(x) delete x +#endif + +/////////////////////////////////////////////////////////////////////////////// +// Type + +/*! \namespace rapidjson + \brief main RapidJSON namespace + \see RAPIDJSON_NAMESPACE +*/ +RAPIDJSON_NAMESPACE_BEGIN + +//! Type of JSON value +enum Type { + kNullType = 0, //!< null + kFalseType = 1, //!< false + kTrueType = 2, //!< true + kObjectType = 3, //!< object + kArrayType = 4, //!< array + kStringType = 5, //!< string + kNumberType = 6 //!< number +}; + +RAPIDJSON_NAMESPACE_END + +#endif // RAPIDJSON_RAPIDJSON_H_ + +// End file:rapidjson.h + + +// Begin file: allocators.h +// Tencent is pleased to support the open source community by making RapidJSON available. +// +// Copyright (C) 2015 THL A29 Limited, a Tencent company, and Milo Yip. All rights reserved. +// +// Licensed under the MIT License (the "License"); you may not use this file except +// in compliance with the License. You may obtain a copy of the License at +// +// http://opensource.org/licenses/MIT +// +// Unless required by applicable law or agreed to in writing, software distributed +// under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR +// CONDITIONS OF ANY KIND, either express or implied. See the License for the +// specific language governing permissions and limitations under the License. + +#ifndef RAPIDJSON_ALLOCATORS_H_ +#define RAPIDJSON_ALLOCATORS_H_ + + +// Begin file: rapidjson.h +// already included +// End file:rapidjson.h + + +RAPIDJSON_NAMESPACE_BEGIN + +/////////////////////////////////////////////////////////////////////////////// +// Allocator + +/*! \class rapidjson::Allocator + \brief Concept for allocating, resizing and freeing memory block. + + Note that Malloc() and Realloc() are non-static but Free() is static. + + So if an allocator need to support Free(), it needs to put its pointer in + the header of memory block. + +\code +concept Allocator { + static const bool kNeedFree; //!< Whether this allocator needs to call Free(). + + // Allocate a memory block. + // \param size of the memory block in bytes. + // \returns pointer to the memory block. + void* Malloc(size_t size); + + // Resize a memory block. + // \param originalPtr The pointer to current memory block. Null pointer is permitted. + // \param originalSize The current size in bytes. (Design issue: since some allocator may not book-keep this, explicitly pass to it can save memory.) + // \param newSize the new size in bytes. + void* Realloc(void* originalPtr, size_t originalSize, size_t newSize); + + // Free a memory block. + // \param pointer to the memory block. Null pointer is permitted. + static void Free(void *ptr); +}; +\endcode +*/ + + +/*! \def RAPIDJSON_ALLOCATOR_DEFUALT_CHUNK_CAPACITY + \ingroup RAPIDJSON_CONFIG + \brief User-defined kDefaultChunkCapacity definition. + + User can define this as any \c size that is a power of 2. +*/ + +#ifndef RAPIDJSON_ALLOCATOR_DEFAULT_CHUNK_CAPACITY +#define RAPIDJSON_ALLOCATOR_DEFAULT_CHUNK_CAPACITY (64 * 1024) +#endif + + +/////////////////////////////////////////////////////////////////////////////// +// CrtAllocator + +//! C-runtime library allocator. +/*! This class is just wrapper for standard C library memory routines. + \note implements Allocator concept +*/ +class CrtAllocator { +public: + static const bool kNeedFree = true; + void* Malloc(size_t size) { + if (size) // behavior of malloc(0) is implementation defined. + return std::malloc(size); + else + return NULL; // standardize to returning NULL. + } + void* Realloc(void* originalPtr, size_t originalSize, size_t newSize) { + (void)originalSize; + if (newSize == 0) { + std::free(originalPtr); + return NULL; + } + return std::realloc(originalPtr, newSize); + } + static void Free(void *ptr) { std::free(ptr); } +}; + +/////////////////////////////////////////////////////////////////////////////// +// MemoryPoolAllocator + +//! Default memory allocator used by the parser and DOM. +/*! This allocator allocate memory blocks from pre-allocated memory chunks. + + It does not free memory blocks. And Realloc() only allocate new memory. + + The memory chunks are allocated by BaseAllocator, which is CrtAllocator by default. + + User may also supply a buffer as the first chunk. + + If the user-buffer is full then additional chunks are allocated by BaseAllocator. + + The user-buffer is not deallocated by this allocator. + + \tparam BaseAllocator the allocator type for allocating memory chunks. Default is CrtAllocator. + \note implements Allocator concept +*/ +template <typename BaseAllocator = CrtAllocator> +class MemoryPoolAllocator { +public: + static const bool kNeedFree = false; //!< Tell users that no need to call Free() with this allocator. (concept Allocator) + + //! Constructor with chunkSize. + /*! \param chunkSize The size of memory chunk. The default is kDefaultChunkSize. + \param baseAllocator The allocator for allocating memory chunks. + */ + MemoryPoolAllocator(size_t chunkSize = kDefaultChunkCapacity, BaseAllocator* baseAllocator = 0) : + chunkHead_(0), chunk_capacity_(chunkSize), userBuffer_(0), baseAllocator_(baseAllocator), ownBaseAllocator_(0) + { + } + + //! Constructor with user-supplied buffer. + /*! The user buffer will be used firstly. When it is full, memory pool allocates new chunk with chunk size. + + The user buffer will not be deallocated when this allocator is destructed. + + \param buffer User supplied buffer. + \param size Size of the buffer in bytes. It must at least larger than sizeof(ChunkHeader). + \param chunkSize The size of memory chunk. The default is kDefaultChunkSize. + \param baseAllocator The allocator for allocating memory chunks. + */ + MemoryPoolAllocator(void *buffer, size_t size, size_t chunkSize = kDefaultChunkCapacity, BaseAllocator* baseAllocator = 0) : + chunkHead_(0), chunk_capacity_(chunkSize), userBuffer_(buffer), baseAllocator_(baseAllocator), ownBaseAllocator_(0) + { + RAPIDJSON_ASSERT(buffer != 0); + RAPIDJSON_ASSERT(size > sizeof(ChunkHeader)); + chunkHead_ = reinterpret_cast<ChunkHeader*>(buffer); + chunkHead_->capacity = size - sizeof(ChunkHeader); + chunkHead_->size = 0; + chunkHead_->next = 0; + } + + //! Destructor. + /*! This deallocates all memory chunks, excluding the user-supplied buffer. + */ + ~MemoryPoolAllocator() { + Clear(); + RAPIDJSON_DELETE(ownBaseAllocator_); + } + + //! Deallocates all memory chunks, excluding the user-supplied buffer. + void Clear() { + while (chunkHead_ && chunkHead_ != userBuffer_) { + ChunkHeader* next = chunkHead_->next; + baseAllocator_->Free(chunkHead_); + chunkHead_ = next; + } + if (chunkHead_ && chunkHead_ == userBuffer_) + chunkHead_->size = 0; // Clear user buffer + } + + //! Computes the total capacity of allocated memory chunks. + /*! \return total capacity in bytes. + */ + size_t Capacity() const { + size_t capacity = 0; + for (ChunkHeader* c = chunkHead_; c != 0; c = c->next) + capacity += c->capacity; + return capacity; + } + + //! Computes the memory blocks allocated. + /*! \return total used bytes. + */ + size_t Size() const { + size_t size = 0; + for (ChunkHeader* c = chunkHead_; c != 0; c = c->next) + size += c->size; + return size; + } + + //! Allocates a memory block. (concept Allocator) + void* Malloc(size_t size) { + if (!size) + return NULL; + + size = RAPIDJSON_ALIGN(size); + if (chunkHead_ == 0 || chunkHead_->size + size > chunkHead_->capacity) + if (!AddChunk(chunk_capacity_ > size ? chunk_capacity_ : size)) + return NULL; + + void *buffer = reinterpret_cast<char *>(chunkHead_) + RAPIDJSON_ALIGN(sizeof(ChunkHeader)) + chunkHead_->size; + chunkHead_->size += size; + return buffer; + } + + //! Resizes a memory block (concept Allocator) + void* Realloc(void* originalPtr, size_t originalSize, size_t newSize) { + if (originalPtr == 0) + return Malloc(newSize); + + if (newSize == 0) + return NULL; + + originalSize = RAPIDJSON_ALIGN(originalSize); + newSize = RAPIDJSON_ALIGN(newSize); + + // Do not shrink if new size is smaller than original + if (originalSize >= newSize) + return originalPtr; + + // Simply expand it if it is the last allocation and there is sufficient space + if (originalPtr == reinterpret_cast<char *>(chunkHead_) + RAPIDJSON_ALIGN(sizeof(ChunkHeader)) + chunkHead_->size - originalSize) { + size_t increment = static_cast<size_t>(newSize - originalSize); + if (chunkHead_->size + increment <= chunkHead_->capacity) { + chunkHead_->size += increment; + return originalPtr; + } + } + + // Realloc process: allocate and copy memory, do not free original buffer. + if (void* newBuffer = Malloc(newSize)) { + if (originalSize) + std::memcpy(newBuffer, originalPtr, originalSize); + return newBuffer; + } + else + return NULL; + } + + //! Frees a memory block (concept Allocator) + static void Free(void *ptr) { (void)ptr; } // Do nothing + +private: + //! Copy constructor is not permitted. + MemoryPoolAllocator(const MemoryPoolAllocator& rhs) /* = delete */; + //! Copy assignment operator is not permitted. + MemoryPoolAllocator& operator=(const MemoryPoolAllocator& rhs) /* = delete */; + + //! Creates a new chunk. + /*! \param capacity Capacity of the chunk in bytes. + \return true if success. + */ + bool AddChunk(size_t capacity) { + if (!baseAllocator_) + ownBaseAllocator_ = baseAllocator_ = RAPIDJSON_NEW(BaseAllocator)(); + if (ChunkHeader* chunk = reinterpret_cast<ChunkHeader*>(baseAllocator_->Malloc(RAPIDJSON_ALIGN(sizeof(ChunkHeader)) + capacity))) { + chunk->capacity = capacity; + chunk->size = 0; + chunk->next = chunkHead_; + chunkHead_ = chunk; + return true; + } + else + return false; + } + + static const int kDefaultChunkCapacity = RAPIDJSON_ALLOCATOR_DEFAULT_CHUNK_CAPACITY; //!< Default chunk capacity. + + //! Chunk header for perpending to each chunk. + /*! Chunks are stored as a singly linked list. + */ + struct ChunkHeader { + size_t capacity; //!< Capacity of the chunk in bytes (excluding the header itself). + size_t size; //!< Current size of allocated memory in bytes. + ChunkHeader *next; //!< Next chunk in the linked list. + }; + + ChunkHeader *chunkHead_; //!< Head of the chunk linked-list. Only the head chunk serves allocation. + size_t chunk_capacity_; //!< The minimum capacity of chunk when they are allocated. + void *userBuffer_; //!< User supplied buffer. + BaseAllocator* baseAllocator_; //!< base allocator for allocating memory chunks. + BaseAllocator* ownBaseAllocator_; //!< base allocator created by this object. +}; + +RAPIDJSON_NAMESPACE_END + +#endif // RAPIDJSON_ENCODINGS_H_ + +// End file:allocators.h + + +// Begin file: document.h +// Tencent is pleased to support the open source community by making RapidJSON available. +// +// Copyright (C) 2015 THL A29 Limited, a Tencent company, and Milo Yip. All rights reserved. +// +// Licensed under the MIT License (the "License"); you may not use this file except +// in compliance with the License. You may obtain a copy of the License at +// +// http://opensource.org/licenses/MIT +// +// Unless required by applicable law or agreed to in writing, software distributed +// under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR +// CONDITIONS OF ANY KIND, either express or implied. See the License for the +// specific language governing permissions and limitations under the License. + +#ifndef RAPIDJSON_DOCUMENT_H_ +#define RAPIDJSON_DOCUMENT_H_ + +/*! \file document.h */ + + +// Begin file: reader.h +// Tencent is pleased to support the open source community by making RapidJSON available. +// +// Copyright (C) 2015 THL A29 Limited, a Tencent company, and Milo Yip. All rights reserved. +// +// Licensed under the MIT License (the "License"); you may not use this file except +// in compliance with the License. You may obtain a copy of the License at +// +// http://opensource.org/licenses/MIT +// +// Unless required by applicable law or agreed to in writing, software distributed +// under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR +// CONDITIONS OF ANY KIND, either express or implied. See the License for the +// specific language governing permissions and limitations under the License. + +#ifndef RAPIDJSON_READER_H_ +#define RAPIDJSON_READER_H_ + +/*! \file reader.h */ + + +// Begin file: allocators.h +// already included +// End file:allocators.h + + +// Begin file: stream.h +// Tencent is pleased to support the open source community by making RapidJSON available. +// +// Copyright (C) 2015 THL A29 Limited, a Tencent company, and Milo Yip. All rights reserved. +// +// Licensed under the MIT License (the "License"); you may not use this file except +// in compliance with the License. You may obtain a copy of the License at +// +// http://opensource.org/licenses/MIT +// +// Unless required by applicable law or agreed to in writing, software distributed +// under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR +// CONDITIONS OF ANY KIND, either express or implied. See the License for the +// specific language governing permissions and limitations under the License. + + +// Begin file: rapidjson.h +// already included +// End file:rapidjson.h + + +#ifndef RAPIDJSON_STREAM_H_ +#define RAPIDJSON_STREAM_H_ + + +// Begin file: encodings.h +// Tencent is pleased to support the open source community by making RapidJSON available. +// +// Copyright (C) 2015 THL A29 Limited, a Tencent company, and Milo Yip. All rights reserved. +// +// Licensed under the MIT License (the "License"); you may not use this file except +// in compliance with the License. You may obtain a copy of the License at +// +// http://opensource.org/licenses/MIT +// +// Unless required by applicable law or agreed to in writing, software distributed +// under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR +// CONDITIONS OF ANY KIND, either express or implied. See the License for the +// specific language governing permissions and limitations under the License. + +#ifndef RAPIDJSON_ENCODINGS_H_ +#define RAPIDJSON_ENCODINGS_H_ + + +// Begin file: rapidjson.h +// already included +// End file:rapidjson.h + + +#if defined(_MSC_VER) && !defined(__clang__) +RAPIDJSON_DIAG_PUSH +RAPIDJSON_DIAG_OFF(4244) // conversion from 'type1' to 'type2', possible loss of data +RAPIDJSON_DIAG_OFF(4702) // unreachable code +#elif defined(__GNUC__) +RAPIDJSON_DIAG_PUSH +RAPIDJSON_DIAG_OFF(effc++) +RAPIDJSON_DIAG_OFF(overflow) +#endif + +RAPIDJSON_NAMESPACE_BEGIN + +/////////////////////////////////////////////////////////////////////////////// +// Encoding + +/*! \class rapidjson::Encoding + \brief Concept for encoding of Unicode characters. + +\code +concept Encoding { + typename Ch; //! Type of character. A "character" is actually a code unit in unicode's definition. + + enum { supportUnicode = 1 }; // or 0 if not supporting unicode + + //! \brief Encode a Unicode codepoint to an output stream. + //! \param os Output stream. + //! \param codepoint An unicode codepoint, ranging from 0x0 to 0x10FFFF inclusively. + template<typename OutputStream> + static void Encode(OutputStream& os, unsigned codepoint); + + //! \brief Decode a Unicode codepoint from an input stream. + //! \param is Input stream. + //! \param codepoint Output of the unicode codepoint. + //! \return true if a valid codepoint can be decoded from the stream. + template <typename InputStream> + static bool Decode(InputStream& is, unsigned* codepoint); + + //! \brief Validate one Unicode codepoint from an encoded stream. + //! \param is Input stream to obtain codepoint. + //! \param os Output for copying one codepoint. + //! \return true if it is valid. + //! \note This function just validating and copying the codepoint without actually decode it. + template <typename InputStream, typename OutputStream> + static bool Validate(InputStream& is, OutputStream& os); + + // The following functions are deal with byte streams. + + //! Take a character from input byte stream, skip BOM if exist. + template <typename InputByteStream> + static CharType TakeBOM(InputByteStream& is); + + //! Take a character from input byte stream. + template <typename InputByteStream> + static Ch Take(InputByteStream& is); + + //! Put BOM to output byte stream. + template <typename OutputByteStream> + static void PutBOM(OutputByteStream& os); + + //! Put a character to output byte stream. + template <typename OutputByteStream> + static void Put(OutputByteStream& os, Ch c); +}; +\endcode +*/ + +/////////////////////////////////////////////////////////////////////////////// +// UTF8 + +//! UTF-8 encoding. +/*! http://en.wikipedia.org/wiki/UTF-8 + http://tools.ietf.org/html/rfc3629 + \tparam CharType Code unit for storing 8-bit UTF-8 data. Default is char. + \note implements Encoding concept +*/ +template<typename CharType = char> +struct UTF8 { + typedef CharType Ch; + + enum { supportUnicode = 1 }; + + template<typename OutputStream> + static void Encode(OutputStream& os, unsigned codepoint) { + if (codepoint <= 0x7F) + os.Put(static_cast<Ch>(codepoint & 0xFF)); + else if (codepoint <= 0x7FF) { + os.Put(static_cast<Ch>(0xC0 | ((codepoint >> 6) & 0xFF))); + os.Put(static_cast<Ch>(0x80 | ((codepoint & 0x3F)))); + } + else if (codepoint <= 0xFFFF) { + os.Put(static_cast<Ch>(0xE0 | ((codepoint >> 12) & 0xFF))); + os.Put(static_cast<Ch>(0x80 | ((codepoint >> 6) & 0x3F))); + os.Put(static_cast<Ch>(0x80 | (codepoint & 0x3F))); + } + else { + RAPIDJSON_ASSERT(codepoint <= 0x10FFFF); + os.Put(static_cast<Ch>(0xF0 | ((codepoint >> 18) & 0xFF))); + os.Put(static_cast<Ch>(0x80 | ((codepoint >> 12) & 0x3F))); + os.Put(static_cast<Ch>(0x80 | ((codepoint >> 6) & 0x3F))); + os.Put(static_cast<Ch>(0x80 | (codepoint & 0x3F))); + } + } + + template<typename OutputStream> + static void EncodeUnsafe(OutputStream& os, unsigned codepoint) { + if (codepoint <= 0x7F) + PutUnsafe(os, static_cast<Ch>(codepoint & 0xFF)); + else if (codepoint <= 0x7FF) { + PutUnsafe(os, static_cast<Ch>(0xC0 | ((codepoint >> 6) & 0xFF))); + PutUnsafe(os, static_cast<Ch>(0x80 | ((codepoint & 0x3F)))); + } + else if (codepoint <= 0xFFFF) { + PutUnsafe(os, static_cast<Ch>(0xE0 | ((codepoint >> 12) & 0xFF))); + PutUnsafe(os, static_cast<Ch>(0x80 | ((codepoint >> 6) & 0x3F))); + PutUnsafe(os, static_cast<Ch>(0x80 | (codepoint & 0x3F))); + } + else { + RAPIDJSON_ASSERT(codepoint <= 0x10FFFF); + PutUnsafe(os, static_cast<Ch>(0xF0 | ((codepoint >> 18) & 0xFF))); + PutUnsafe(os, static_cast<Ch>(0x80 | ((codepoint >> 12) & 0x3F))); + PutUnsafe(os, static_cast<Ch>(0x80 | ((codepoint >> 6) & 0x3F))); + PutUnsafe(os, static_cast<Ch>(0x80 | (codepoint & 0x3F))); + } + } + + template <typename InputStream> + static bool Decode(InputStream& is, unsigned* codepoint) { +#define RAPIDJSON_COPY() c = is.Take(); *codepoint = (*codepoint << 6) | (static_cast<unsigned char>(c) & 0x3Fu) +#define RAPIDJSON_TRANS(mask) result &= ((GetRange(static_cast<unsigned char>(c)) & mask) != 0) +#define RAPIDJSON_TAIL() RAPIDJSON_COPY(); RAPIDJSON_TRANS(0x70) + typename InputStream::Ch c = is.Take(); + if (!(c & 0x80)) { + *codepoint = static_cast<unsigned char>(c); + return true; + } + + unsigned char type = GetRange(static_cast<unsigned char>(c)); + if (type >= 32) { + *codepoint = 0; + } else { + *codepoint = (0xFFu >> type) & static_cast<unsigned char>(c); + } + bool result = true; + switch (type) { + case 2: RAPIDJSON_TAIL(); return result; + case 3: RAPIDJSON_TAIL(); RAPIDJSON_TAIL(); return result; + case 4: RAPIDJSON_COPY(); RAPIDJSON_TRANS(0x50); RAPIDJSON_TAIL(); return result; + case 5: RAPIDJSON_COPY(); RAPIDJSON_TRANS(0x10); RAPIDJSON_TAIL(); RAPIDJSON_TAIL(); return result; + case 6: RAPIDJSON_TAIL(); RAPIDJSON_TAIL(); RAPIDJSON_TAIL(); return result; + case 10: RAPIDJSON_COPY(); RAPIDJSON_TRANS(0x20); RAPIDJSON_TAIL(); return result; + case 11: RAPIDJSON_COPY(); RAPIDJSON_TRANS(0x60); RAPIDJSON_TAIL(); RAPIDJSON_TAIL(); return result; + default: return false; + } +#undef RAPIDJSON_COPY +#undef RAPIDJSON_TRANS +#undef RAPIDJSON_TAIL + } + + template <typename InputStream, typename OutputStream> + static bool Validate(InputStream& is, OutputStream& os) { +#define RAPIDJSON_COPY() os.Put(c = is.Take()) +#define RAPIDJSON_TRANS(mask) result &= ((GetRange(static_cast<unsigned char>(c)) & mask) != 0) +#define RAPIDJSON_TAIL() RAPIDJSON_COPY(); RAPIDJSON_TRANS(0x70) + Ch c; + RAPIDJSON_COPY(); + if (!(c & 0x80)) + return true; + + bool result = true; + switch (GetRange(static_cast<unsigned char>(c))) { + case 2: RAPIDJSON_TAIL(); return result; + case 3: RAPIDJSON_TAIL(); RAPIDJSON_TAIL(); return result; + case 4: RAPIDJSON_COPY(); RAPIDJSON_TRANS(0x50); RAPIDJSON_TAIL(); return result; + case 5: RAPIDJSON_COPY(); RAPIDJSON_TRANS(0x10); RAPIDJSON_TAIL(); RAPIDJSON_TAIL(); return result; + case 6: RAPIDJSON_TAIL(); RAPIDJSON_TAIL(); RAPIDJSON_TAIL(); return result; + case 10: RAPIDJSON_COPY(); RAPIDJSON_TRANS(0x20); RAPIDJSON_TAIL(); return result; + case 11: RAPIDJSON_COPY(); RAPIDJSON_TRANS(0x60); RAPIDJSON_TAIL(); RAPIDJSON_TAIL(); return result; + default: return false; + } +#undef RAPIDJSON_COPY +#undef RAPIDJSON_TRANS +#undef RAPIDJSON_TAIL + } + + static unsigned char GetRange(unsigned char c) { + // Referring to DFA of http://bjoern.hoehrmann.de/utf-8/decoder/dfa/ + // With new mapping 1 -> 0x10, 7 -> 0x20, 9 -> 0x40, such that AND operation can test multiple types. + static const unsigned char type[] = { + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10, + 0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40, + 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, + 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, + 8,8,2,2,2,2,2,2,2,2,2,2,2,2,2,2, 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, + 10,3,3,3,3,3,3,3,3,3,3,3,3,4,3,3, 11,6,6,6,5,8,8,8,8,8,8,8,8,8,8,8, + }; + return type[c]; + } + + template <typename InputByteStream> + static CharType TakeBOM(InputByteStream& is) { + RAPIDJSON_STATIC_ASSERT(sizeof(typename InputByteStream::Ch) == 1); + typename InputByteStream::Ch c = Take(is); + if (static_cast<unsigned char>(c) != 0xEFu) return c; + c = is.Take(); + if (static_cast<unsigned char>(c) != 0xBBu) return c; + c = is.Take(); + if (static_cast<unsigned char>(c) != 0xBFu) return c; + c = is.Take(); + return c; + } + + template <typename InputByteStream> + static Ch Take(InputByteStream& is) { + RAPIDJSON_STATIC_ASSERT(sizeof(typename InputByteStream::Ch) == 1); + return static_cast<Ch>(is.Take()); + } + + template <typename OutputByteStream> + static void PutBOM(OutputByteStream& os) { + RAPIDJSON_STATIC_ASSERT(sizeof(typename OutputByteStream::Ch) == 1); + os.Put(static_cast<typename OutputByteStream::Ch>(0xEFu)); + os.Put(static_cast<typename OutputByteStream::Ch>(0xBBu)); + os.Put(static_cast<typename OutputByteStream::Ch>(0xBFu)); + } + + template <typename OutputByteStream> + static void Put(OutputByteStream& os, Ch c) { + RAPIDJSON_STATIC_ASSERT(sizeof(typename OutputByteStream::Ch) == 1); + os.Put(static_cast<typename OutputByteStream::Ch>(c)); + } +}; + +/////////////////////////////////////////////////////////////////////////////// +// UTF16 + +//! UTF-16 encoding. +/*! http://en.wikipedia.org/wiki/UTF-16 + http://tools.ietf.org/html/rfc2781 + \tparam CharType Type for storing 16-bit UTF-16 data. Default is wchar_t. C++11 may use char16_t instead. + \note implements Encoding concept + + \note For in-memory access, no need to concern endianness. The code units and code points are represented by CPU's endianness. + For streaming, use UTF16LE and UTF16BE, which handle endianness. +*/ +template<typename CharType = wchar_t> +struct UTF16 { + typedef CharType Ch; + RAPIDJSON_STATIC_ASSERT(sizeof(Ch) >= 2); + + enum { supportUnicode = 1 }; + + template<typename OutputStream> + static void Encode(OutputStream& os, unsigned codepoint) { + RAPIDJSON_STATIC_ASSERT(sizeof(typename OutputStream::Ch) >= 2); + if (codepoint <= 0xFFFF) { + RAPIDJSON_ASSERT(codepoint < 0xD800 || codepoint > 0xDFFF); // Code point itself cannot be surrogate pair + os.Put(static_cast<typename OutputStream::Ch>(codepoint)); + } + else { + RAPIDJSON_ASSERT(codepoint <= 0x10FFFF); + unsigned v = codepoint - 0x10000; + os.Put(static_cast<typename OutputStream::Ch>((v >> 10) | 0xD800)); + os.Put(static_cast<typename OutputStream::Ch>((v & 0x3FF) | 0xDC00)); + } + } + + + template<typename OutputStream> + static void EncodeUnsafe(OutputStream& os, unsigned codepoint) { + RAPIDJSON_STATIC_ASSERT(sizeof(typename OutputStream::Ch) >= 2); + if (codepoint <= 0xFFFF) { + RAPIDJSON_ASSERT(codepoint < 0xD800 || codepoint > 0xDFFF); // Code point itself cannot be surrogate pair + PutUnsafe(os, static_cast<typename OutputStream::Ch>(codepoint)); + } + else { + RAPIDJSON_ASSERT(codepoint <= 0x10FFFF); + unsigned v = codepoint - 0x10000; + PutUnsafe(os, static_cast<typename OutputStream::Ch>((v >> 10) | 0xD800)); + PutUnsafe(os, static_cast<typename OutputStream::Ch>((v & 0x3FF) | 0xDC00)); + } + } + + template <typename InputStream> + static bool Decode(InputStream& is, unsigned* codepoint) { + RAPIDJSON_STATIC_ASSERT(sizeof(typename InputStream::Ch) >= 2); + typename InputStream::Ch c = is.Take(); + if (c < 0xD800 || c > 0xDFFF) { + *codepoint = static_cast<unsigned>(c); + return true; + } + else if (c <= 0xDBFF) { + *codepoint = (static_cast<unsigned>(c) & 0x3FF) << 10; + c = is.Take(); + *codepoint |= (static_cast<unsigned>(c) & 0x3FF); + *codepoint += 0x10000; + return c >= 0xDC00 && c <= 0xDFFF; + } + return false; + } + + template <typename InputStream, typename OutputStream> + static bool Validate(InputStream& is, OutputStream& os) { + RAPIDJSON_STATIC_ASSERT(sizeof(typename InputStream::Ch) >= 2); + RAPIDJSON_STATIC_ASSERT(sizeof(typename OutputStream::Ch) >= 2); + typename InputStream::Ch c; + os.Put(static_cast<typename OutputStream::Ch>(c = is.Take())); + if (c < 0xD800 || c > 0xDFFF) + return true; + else if (c <= 0xDBFF) { + os.Put(c = is.Take()); + return c >= 0xDC00 && c <= 0xDFFF; + } + return false; + } +}; + +//! UTF-16 little endian encoding. +template<typename CharType = wchar_t> +struct UTF16LE : UTF16<CharType> { + template <typename InputByteStream> + static CharType TakeBOM(InputByteStream& is) { + RAPIDJSON_STATIC_ASSERT(sizeof(typename InputByteStream::Ch) == 1); + CharType c = Take(is); + return static_cast<uint16_t>(c) == 0xFEFFu ? Take(is) : c; + } + + template <typename InputByteStream> + static CharType Take(InputByteStream& is) { + RAPIDJSON_STATIC_ASSERT(sizeof(typename InputByteStream::Ch) == 1); + unsigned c = static_cast<uint8_t>(is.Take()); + c |= static_cast<unsigned>(static_cast<uint8_t>(is.Take())) << 8; + return static_cast<CharType>(c); + } + + template <typename OutputByteStream> + static void PutBOM(OutputByteStream& os) { + RAPIDJSON_STATIC_ASSERT(sizeof(typename OutputByteStream::Ch) == 1); + os.Put(static_cast<typename OutputByteStream::Ch>(0xFFu)); + os.Put(static_cast<typename OutputByteStream::Ch>(0xFEu)); + } + + template <typename OutputByteStream> + static void Put(OutputByteStream& os, CharType c) { + RAPIDJSON_STATIC_ASSERT(sizeof(typename OutputByteStream::Ch) == 1); + os.Put(static_cast<typename OutputByteStream::Ch>(static_cast<unsigned>(c) & 0xFFu)); + os.Put(static_cast<typename OutputByteStream::Ch>((static_cast<unsigned>(c) >> 8) & 0xFFu)); + } +}; + +//! UTF-16 big endian encoding. +template<typename CharType = wchar_t> +struct UTF16BE : UTF16<CharType> { + template <typename InputByteStream> + static CharType TakeBOM(InputByteStream& is) { + RAPIDJSON_STATIC_ASSERT(sizeof(typename InputByteStream::Ch) == 1); + CharType c = Take(is); + return static_cast<uint16_t>(c) == 0xFEFFu ? Take(is) : c; + } + + template <typename InputByteStream> + static CharType Take(InputByteStream& is) { + RAPIDJSON_STATIC_ASSERT(sizeof(typename InputByteStream::Ch) == 1); + unsigned c = static_cast<unsigned>(static_cast<uint8_t>(is.Take())) << 8; + c |= static_cast<unsigned>(static_cast<uint8_t>(is.Take())); + return static_cast<CharType>(c); + } + + template <typename OutputByteStream> + static void PutBOM(OutputByteStream& os) { + RAPIDJSON_STATIC_ASSERT(sizeof(typename OutputByteStream::Ch) == 1); + os.Put(static_cast<typename OutputByteStream::Ch>(0xFEu)); + os.Put(static_cast<typename OutputByteStream::Ch>(0xFFu)); + } + + template <typename OutputByteStream> + static void Put(OutputByteStream& os, CharType c) { + RAPIDJSON_STATIC_ASSERT(sizeof(typename OutputByteStream::Ch) == 1); + os.Put(static_cast<typename OutputByteStream::Ch>((static_cast<unsigned>(c) >> 8) & 0xFFu)); + os.Put(static_cast<typename OutputByteStream::Ch>(static_cast<unsigned>(c) & 0xFFu)); + } +}; + +/////////////////////////////////////////////////////////////////////////////// +// UTF32 + +//! UTF-32 encoding. +/*! http://en.wikipedia.org/wiki/UTF-32 + \tparam CharType Type for storing 32-bit UTF-32 data. Default is unsigned. C++11 may use char32_t instead. + \note implements Encoding concept + + \note For in-memory access, no need to concern endianness. The code units and code points are represented by CPU's endianness. + For streaming, use UTF32LE and UTF32BE, which handle endianness. +*/ +template<typename CharType = unsigned> +struct UTF32 { + typedef CharType Ch; + RAPIDJSON_STATIC_ASSERT(sizeof(Ch) >= 4); + + enum { supportUnicode = 1 }; + + template<typename OutputStream> + static void Encode(OutputStream& os, unsigned codepoint) { + RAPIDJSON_STATIC_ASSERT(sizeof(typename OutputStream::Ch) >= 4); + RAPIDJSON_ASSERT(codepoint <= 0x10FFFF); + os.Put(codepoint); + } + + template<typename OutputStream> + static void EncodeUnsafe(OutputStream& os, unsigned codepoint) { + RAPIDJSON_STATIC_ASSERT(sizeof(typename OutputStream::Ch) >= 4); + RAPIDJSON_ASSERT(codepoint <= 0x10FFFF); + PutUnsafe(os, codepoint); + } + + template <typename InputStream> + static bool Decode(InputStream& is, unsigned* codepoint) { + RAPIDJSON_STATIC_ASSERT(sizeof(typename InputStream::Ch) >= 4); + Ch c = is.Take(); + *codepoint = c; + return c <= 0x10FFFF; + } + + template <typename InputStream, typename OutputStream> + static bool Validate(InputStream& is, OutputStream& os) { + RAPIDJSON_STATIC_ASSERT(sizeof(typename InputStream::Ch) >= 4); + Ch c; + os.Put(c = is.Take()); + return c <= 0x10FFFF; + } +}; + +//! UTF-32 little endian enocoding. +template<typename CharType = unsigned> +struct UTF32LE : UTF32<CharType> { + template <typename InputByteStream> + static CharType TakeBOM(InputByteStream& is) { + RAPIDJSON_STATIC_ASSERT(sizeof(typename InputByteStream::Ch) == 1); + CharType c = Take(is); + return static_cast<uint32_t>(c) == 0x0000FEFFu ? Take(is) : c; + } + + template <typename InputByteStream> + static CharType Take(InputByteStream& is) { + RAPIDJSON_STATIC_ASSERT(sizeof(typename InputByteStream::Ch) == 1); + unsigned c = static_cast<uint8_t>(is.Take()); + c |= static_cast<unsigned>(static_cast<uint8_t>(is.Take())) << 8; + c |= static_cast<unsigned>(static_cast<uint8_t>(is.Take())) << 16; + c |= static_cast<unsigned>(static_cast<uint8_t>(is.Take())) << 24; + return static_cast<CharType>(c); + } + + template <typename OutputByteStream> + static void PutBOM(OutputByteStream& os) { + RAPIDJSON_STATIC_ASSERT(sizeof(typename OutputByteStream::Ch) == 1); + os.Put(static_cast<typename OutputByteStream::Ch>(0xFFu)); + os.Put(static_cast<typename OutputByteStream::Ch>(0xFEu)); + os.Put(static_cast<typename OutputByteStream::Ch>(0x00u)); + os.Put(static_cast<typename OutputByteStream::Ch>(0x00u)); + } + + template <typename OutputByteStream> + static void Put(OutputByteStream& os, CharType c) { + RAPIDJSON_STATIC_ASSERT(sizeof(typename OutputByteStream::Ch) == 1); + os.Put(static_cast<typename OutputByteStream::Ch>(c & 0xFFu)); + os.Put(static_cast<typename OutputByteStream::Ch>((c >> 8) & 0xFFu)); + os.Put(static_cast<typename OutputByteStream::Ch>((c >> 16) & 0xFFu)); + os.Put(static_cast<typename OutputByteStream::Ch>((c >> 24) & 0xFFu)); + } +}; + +//! UTF-32 big endian encoding. +template<typename CharType = unsigned> +struct UTF32BE : UTF32<CharType> { + template <typename InputByteStream> + static CharType TakeBOM(InputByteStream& is) { + RAPIDJSON_STATIC_ASSERT(sizeof(typename InputByteStream::Ch) == 1); + CharType c = Take(is); + return static_cast<uint32_t>(c) == 0x0000FEFFu ? Take(is) : c; + } + + template <typename InputByteStream> + static CharType Take(InputByteStream& is) { + RAPIDJSON_STATIC_ASSERT(sizeof(typename InputByteStream::Ch) == 1); + unsigned c = static_cast<unsigned>(static_cast<uint8_t>(is.Take())) << 24; + c |= static_cast<unsigned>(static_cast<uint8_t>(is.Take())) << 16; + c |= static_cast<unsigned>(static_cast<uint8_t>(is.Take())) << 8; + c |= static_cast<unsigned>(static_cast<uint8_t>(is.Take())); + return static_cast<CharType>(c); + } + + template <typename OutputByteStream> + static void PutBOM(OutputByteStream& os) { + RAPIDJSON_STATIC_ASSERT(sizeof(typename OutputByteStream::Ch) == 1); + os.Put(static_cast<typename OutputByteStream::Ch>(0x00u)); + os.Put(static_cast<typename OutputByteStream::Ch>(0x00u)); + os.Put(static_cast<typename OutputByteStream::Ch>(0xFEu)); + os.Put(static_cast<typename OutputByteStream::Ch>(0xFFu)); + } + + template <typename OutputByteStream> + static void Put(OutputByteStream& os, CharType c) { + RAPIDJSON_STATIC_ASSERT(sizeof(typename OutputByteStream::Ch) == 1); + os.Put(static_cast<typename OutputByteStream::Ch>((c >> 24) & 0xFFu)); + os.Put(static_cast<typename OutputByteStream::Ch>((c >> 16) & 0xFFu)); + os.Put(static_cast<typename OutputByteStream::Ch>((c >> 8) & 0xFFu)); + os.Put(static_cast<typename OutputByteStream::Ch>(c & 0xFFu)); + } +}; + +/////////////////////////////////////////////////////////////////////////////// +// ASCII + +//! ASCII encoding. +/*! http://en.wikipedia.org/wiki/ASCII + \tparam CharType Code unit for storing 7-bit ASCII data. Default is char. + \note implements Encoding concept +*/ +template<typename CharType = char> +struct ASCII { + typedef CharType Ch; + + enum { supportUnicode = 0 }; + + template<typename OutputStream> + static void Encode(OutputStream& os, unsigned codepoint) { + RAPIDJSON_ASSERT(codepoint <= 0x7F); + os.Put(static_cast<Ch>(codepoint & 0xFF)); + } + + template<typename OutputStream> + static void EncodeUnsafe(OutputStream& os, unsigned codepoint) { + RAPIDJSON_ASSERT(codepoint <= 0x7F); + PutUnsafe(os, static_cast<Ch>(codepoint & 0xFF)); + } + + template <typename InputStream> + static bool Decode(InputStream& is, unsigned* codepoint) { + uint8_t c = static_cast<uint8_t>(is.Take()); + *codepoint = c; + return c <= 0X7F; + } + + template <typename InputStream, typename OutputStream> + static bool Validate(InputStream& is, OutputStream& os) { + uint8_t c = static_cast<uint8_t>(is.Take()); + os.Put(static_cast<typename OutputStream::Ch>(c)); + return c <= 0x7F; + } + + template <typename InputByteStream> + static CharType TakeBOM(InputByteStream& is) { + RAPIDJSON_STATIC_ASSERT(sizeof(typename InputByteStream::Ch) == 1); + uint8_t c = static_cast<uint8_t>(Take(is)); + return static_cast<Ch>(c); + } + + template <typename InputByteStream> + static Ch Take(InputByteStream& is) { + RAPIDJSON_STATIC_ASSERT(sizeof(typename InputByteStream::Ch) == 1); + return static_cast<Ch>(is.Take()); + } + + template <typename OutputByteStream> + static void PutBOM(OutputByteStream& os) { + RAPIDJSON_STATIC_ASSERT(sizeof(typename OutputByteStream::Ch) == 1); + (void)os; + } + + template <typename OutputByteStream> + static void Put(OutputByteStream& os, Ch c) { + RAPIDJSON_STATIC_ASSERT(sizeof(typename OutputByteStream::Ch) == 1); + os.Put(static_cast<typename OutputByteStream::Ch>(c)); + } +}; + +/////////////////////////////////////////////////////////////////////////////// +// AutoUTF + +//! Runtime-specified UTF encoding type of a stream. +enum UTFType { + kUTF8 = 0, //!< UTF-8. + kUTF16LE = 1, //!< UTF-16 little endian. + kUTF16BE = 2, //!< UTF-16 big endian. + kUTF32LE = 3, //!< UTF-32 little endian. + kUTF32BE = 4 //!< UTF-32 big endian. +}; + +//! Dynamically select encoding according to stream's runtime-specified UTF encoding type. +/*! \note This class can be used with AutoUTFInputtStream and AutoUTFOutputStream, which provides GetType(). +*/ +template<typename CharType> +struct AutoUTF { + typedef CharType Ch; + + enum { supportUnicode = 1 }; + +#define RAPIDJSON_ENCODINGS_FUNC(x) UTF8<Ch>::x, UTF16LE<Ch>::x, UTF16BE<Ch>::x, UTF32LE<Ch>::x, UTF32BE<Ch>::x + + template<typename OutputStream> + static RAPIDJSON_FORCEINLINE void Encode(OutputStream& os, unsigned codepoint) { + typedef void (*EncodeFunc)(OutputStream&, unsigned); + static const EncodeFunc f[] = { RAPIDJSON_ENCODINGS_FUNC(Encode) }; + (*f[os.GetType()])(os, codepoint); + } + + template<typename OutputStream> + static RAPIDJSON_FORCEINLINE void EncodeUnsafe(OutputStream& os, unsigned codepoint) { + typedef void (*EncodeFunc)(OutputStream&, unsigned); + static const EncodeFunc f[] = { RAPIDJSON_ENCODINGS_FUNC(EncodeUnsafe) }; + (*f[os.GetType()])(os, codepoint); + } + + template <typename InputStream> + static RAPIDJSON_FORCEINLINE bool Decode(InputStream& is, unsigned* codepoint) { + typedef bool (*DecodeFunc)(InputStream&, unsigned*); + static const DecodeFunc f[] = { RAPIDJSON_ENCODINGS_FUNC(Decode) }; + return (*f[is.GetType()])(is, codepoint); + } + + template <typename InputStream, typename OutputStream> + static RAPIDJSON_FORCEINLINE bool Validate(InputStream& is, OutputStream& os) { + typedef bool (*ValidateFunc)(InputStream&, OutputStream&); + static const ValidateFunc f[] = { RAPIDJSON_ENCODINGS_FUNC(Validate) }; + return (*f[is.GetType()])(is, os); + } + +#undef RAPIDJSON_ENCODINGS_FUNC +}; + +/////////////////////////////////////////////////////////////////////////////// +// Transcoder + +//! Encoding conversion. +template<typename SourceEncoding, typename TargetEncoding> +struct Transcoder { + //! Take one Unicode codepoint from source encoding, convert it to target encoding and put it to the output stream. + template<typename InputStream, typename OutputStream> + static RAPIDJSON_FORCEINLINE bool Transcode(InputStream& is, OutputStream& os) { + unsigned codepoint; + if (!SourceEncoding::Decode(is, &codepoint)) + return false; + TargetEncoding::Encode(os, codepoint); + return true; + } + + template<typename InputStream, typename OutputStream> + static RAPIDJSON_FORCEINLINE bool TranscodeUnsafe(InputStream& is, OutputStream& os) { + unsigned codepoint; + if (!SourceEncoding::Decode(is, &codepoint)) + return false; + TargetEncoding::EncodeUnsafe(os, codepoint); + return true; + } + + //! Validate one Unicode codepoint from an encoded stream. + template<typename InputStream, typename OutputStream> + static RAPIDJSON_FORCEINLINE bool Validate(InputStream& is, OutputStream& os) { + return Transcode(is, os); // Since source/target encoding is different, must transcode. + } +}; + +// Forward declaration. +template<typename Stream> +inline void PutUnsafe(Stream& stream, typename Stream::Ch c); + +//! Specialization of Transcoder with same source and target encoding. +template<typename Encoding> +struct Transcoder<Encoding, Encoding> { + template<typename InputStream, typename OutputStream> + static RAPIDJSON_FORCEINLINE bool Transcode(InputStream& is, OutputStream& os) { + os.Put(is.Take()); // Just copy one code unit. This semantic is different from primary template class. + return true; + } + + template<typename InputStream, typename OutputStream> + static RAPIDJSON_FORCEINLINE bool TranscodeUnsafe(InputStream& is, OutputStream& os) { + PutUnsafe(os, is.Take()); // Just copy one code unit. This semantic is different from primary template class. + return true; + } + + template<typename InputStream, typename OutputStream> + static RAPIDJSON_FORCEINLINE bool Validate(InputStream& is, OutputStream& os) { + return Encoding::Validate(is, os); // source/target encoding are the same + } +}; + +RAPIDJSON_NAMESPACE_END + +#if defined(__GNUC__) || (defined(_MSC_VER) && !defined(__clang__)) +RAPIDJSON_DIAG_POP +#endif + +#endif // RAPIDJSON_ENCODINGS_H_ + +// End file:encodings.h + + +RAPIDJSON_NAMESPACE_BEGIN + +/////////////////////////////////////////////////////////////////////////////// +// Stream + +/*! \class rapidjson::Stream + \brief Concept for reading and writing characters. + + For read-only stream, no need to implement PutBegin(), Put(), Flush() and PutEnd(). + + For write-only stream, only need to implement Put() and Flush(). + +\code +concept Stream { + typename Ch; //!< Character type of the stream. + + //! Read the current character from stream without moving the read cursor. + Ch Peek() const; + + //! Read the current character from stream and moving the read cursor to next character. + Ch Take(); + + //! Get the current read cursor. + //! \return Number of characters read from start. + size_t Tell(); + + //! Begin writing operation at the current read pointer. + //! \return The begin writer pointer. + Ch* PutBegin(); + + //! Write a character. + void Put(Ch c); + + //! Flush the buffer. + void Flush(); + + //! End the writing operation. + //! \param begin The begin write pointer returned by PutBegin(). + //! \return Number of characters written. + size_t PutEnd(Ch* begin); +} +\endcode +*/ + +//! Provides additional information for stream. +/*! + By using traits pattern, this type provides a default configuration for stream. + For custom stream, this type can be specialized for other configuration. + See TEST(Reader, CustomStringStream) in readertest.cpp for example. +*/ +template<typename Stream> +struct StreamTraits { + //! Whether to make local copy of stream for optimization during parsing. + /*! + By default, for safety, streams do not use local copy optimization. + Stream that can be copied fast should specialize this, like StreamTraits<StringStream>. + */ + enum { copyOptimization = 0 }; +}; + +//! Reserve n characters for writing to a stream. +template<typename Stream> +inline void PutReserve(Stream& stream, size_t count) { + (void)stream; + (void)count; +} + +//! Write character to a stream, presuming buffer is reserved. +template<typename Stream> +inline void PutUnsafe(Stream& stream, typename Stream::Ch c) { + stream.Put(c); +} + +//! Put N copies of a character to a stream. +template<typename Stream, typename Ch> +inline void PutN(Stream& stream, Ch c, size_t n) { + PutReserve(stream, n); + for (size_t i = 0; i < n; i++) + PutUnsafe(stream, c); +} + +/////////////////////////////////////////////////////////////////////////////// +// GenericStreamWrapper + +//! A Stream Wrapper +/*! \tThis string stream is a wrapper for any stream by just forwarding any + \treceived message to the origin stream. + \note implements Stream concept +*/ + +#if defined(_MSC_VER) && _MSC_VER <= 1800 +RAPIDJSON_DIAG_PUSH +RAPIDJSON_DIAG_OFF(4702) // unreachable code +RAPIDJSON_DIAG_OFF(4512) // assignment operator could not be generated +#endif + +template <typename InputStream, typename Encoding = UTF8<> > +class GenericStreamWrapper { +public: + typedef typename Encoding::Ch Ch; + GenericStreamWrapper(InputStream& is): is_(is) {} + + Ch Peek() const { return is_.Peek(); } + Ch Take() { return is_.Take(); } + size_t Tell() { return is_.Tell(); } + Ch* PutBegin() { return is_.PutBegin(); } + void Put(Ch ch) { is_.Put(ch); } + void Flush() { is_.Flush(); } + size_t PutEnd(Ch* ch) { return is_.PutEnd(ch); } + + // wrapper for MemoryStream + const Ch* Peek4() const { return is_.Peek4(); } + + // wrapper for AutoUTFInputStream + UTFType GetType() const { return is_.GetType(); } + bool HasBOM() const { return is_.HasBOM(); } + +protected: + InputStream& is_; +}; + +#if defined(_MSC_VER) && _MSC_VER <= 1800 +RAPIDJSON_DIAG_POP +#endif + +/////////////////////////////////////////////////////////////////////////////// +// StringStream + +//! Read-only string stream. +/*! \note implements Stream concept +*/ +template <typename Encoding> +struct GenericStringStream { + typedef typename Encoding::Ch Ch; + + GenericStringStream(const Ch *src) : src_(src), head_(src) {} + + Ch Peek() const { return *src_; } + Ch Take() { return *src_++; } + size_t Tell() const { return static_cast<size_t>(src_ - head_); } + + Ch* PutBegin() { RAPIDJSON_ASSERT(false); return 0; } + void Put(Ch) { RAPIDJSON_ASSERT(false); } + void Flush() { RAPIDJSON_ASSERT(false); } + size_t PutEnd(Ch*) { RAPIDJSON_ASSERT(false); return 0; } + + const Ch* src_; //!< Current read position. + const Ch* head_; //!< Original head of the string. +}; + +template <typename Encoding> +struct StreamTraits<GenericStringStream<Encoding> > { + enum { copyOptimization = 1 }; +}; + +//! String stream with UTF8 encoding. +typedef GenericStringStream<UTF8<> > StringStream; + +/////////////////////////////////////////////////////////////////////////////// +// InsituStringStream + +//! A read-write string stream. +/*! This string stream is particularly designed for in-situ parsing. + \note implements Stream concept +*/ +template <typename Encoding> +struct GenericInsituStringStream { + typedef typename Encoding::Ch Ch; + + GenericInsituStringStream(Ch *src) : src_(src), dst_(0), head_(src) {} + + // Read + Ch Peek() { return *src_; } + Ch Take() { return *src_++; } + size_t Tell() { return static_cast<size_t>(src_ - head_); } + + // Write + void Put(Ch c) { RAPIDJSON_ASSERT(dst_ != 0); *dst_++ = c; } + + Ch* PutBegin() { return dst_ = src_; } + size_t PutEnd(Ch* begin) { return static_cast<size_t>(dst_ - begin); } + void Flush() {} + + Ch* Push(size_t count) { Ch* begin = dst_; dst_ += count; return begin; } + void Pop(size_t count) { dst_ -= count; } + + Ch* src_; + Ch* dst_; + Ch* head_; +}; + +template <typename Encoding> +struct StreamTraits<GenericInsituStringStream<Encoding> > { + enum { copyOptimization = 1 }; +}; + +//! Insitu string stream with UTF8 encoding. +typedef GenericInsituStringStream<UTF8<> > InsituStringStream; + +RAPIDJSON_NAMESPACE_END + +#endif // RAPIDJSON_STREAM_H_ + +// End file:stream.h + + +// Begin file: encodedstream.h +// Tencent is pleased to support the open source community by making RapidJSON available. +// +// Copyright (C) 2015 THL A29 Limited, a Tencent company, and Milo Yip. All rights reserved. +// +// Licensed under the MIT License (the "License"); you may not use this file except +// in compliance with the License. You may obtain a copy of the License at +// +// http://opensource.org/licenses/MIT +// +// Unless required by applicable law or agreed to in writing, software distributed +// under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR +// CONDITIONS OF ANY KIND, either express or implied. See the License for the +// specific language governing permissions and limitations under the License. + +#ifndef RAPIDJSON_ENCODEDSTREAM_H_ +#define RAPIDJSON_ENCODEDSTREAM_H_ + + +// Begin file: stream.h +// already included +// End file:stream.h + + +// Begin file: memorystream.h +// Tencent is pleased to support the open source community by making RapidJSON available. +// +// Copyright (C) 2015 THL A29 Limited, a Tencent company, and Milo Yip. All rights reserved. +// +// Licensed under the MIT License (the "License"); you may not use this file except +// in compliance with the License. You may obtain a copy of the License at +// +// http://opensource.org/licenses/MIT +// +// Unless required by applicable law or agreed to in writing, software distributed +// under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR +// CONDITIONS OF ANY KIND, either express or implied. See the License for the +// specific language governing permissions and limitations under the License. + +#ifndef RAPIDJSON_MEMORYSTREAM_H_ +#define RAPIDJSON_MEMORYSTREAM_H_ + + +// Begin file: stream.h +// already included +// End file:stream.h + + +#ifdef __clang__ +RAPIDJSON_DIAG_PUSH +RAPIDJSON_DIAG_OFF(unreachable-code) +RAPIDJSON_DIAG_OFF(missing-noreturn) +#endif + +RAPIDJSON_NAMESPACE_BEGIN + +//! Represents an in-memory input byte stream. +/*! + This class is mainly for being wrapped by EncodedInputStream or AutoUTFInputStream. + + It is similar to FileReadBuffer but the source is an in-memory buffer instead of a file. + + Differences between MemoryStream and StringStream: + 1. StringStream has encoding but MemoryStream is a byte stream. + 2. MemoryStream needs size of the source buffer and the buffer don't need to be null terminated. StringStream assume null-terminated string as source. + 3. MemoryStream supports Peek4() for encoding detection. StringStream is specified with an encoding so it should not have Peek4(). + \note implements Stream concept +*/ +struct MemoryStream { + typedef char Ch; // byte + + MemoryStream(const Ch *src, size_t size) : src_(src), begin_(src), end_(src + size), size_(size) {} + + Ch Peek() const { return RAPIDJSON_UNLIKELY(src_ == end_) ? '\0' : *src_; } + Ch Take() { return RAPIDJSON_UNLIKELY(src_ == end_) ? '\0' : *src_++; } + size_t Tell() const { return static_cast<size_t>(src_ - begin_); } + + Ch* PutBegin() { RAPIDJSON_ASSERT(false); return 0; } + void Put(Ch) { RAPIDJSON_ASSERT(false); } + void Flush() { RAPIDJSON_ASSERT(false); } + size_t PutEnd(Ch*) { RAPIDJSON_ASSERT(false); return 0; } + + // For encoding detection only. + const Ch* Peek4() const { + return Tell() + 4 <= size_ ? src_ : 0; + } + + const Ch* src_; //!< Current read position. + const Ch* begin_; //!< Original head of the string. + const Ch* end_; //!< End of stream. + size_t size_; //!< Size of the stream. +}; + +RAPIDJSON_NAMESPACE_END + +#ifdef __clang__ +RAPIDJSON_DIAG_POP +#endif + +#endif // RAPIDJSON_MEMORYBUFFER_H_ + +// End file:memorystream.h + + +#ifdef __GNUC__ +RAPIDJSON_DIAG_PUSH +RAPIDJSON_DIAG_OFF(effc++) +#endif + +#ifdef __clang__ +RAPIDJSON_DIAG_PUSH +RAPIDJSON_DIAG_OFF(padded) +#endif + +RAPIDJSON_NAMESPACE_BEGIN + +//! Input byte stream wrapper with a statically bound encoding. +/*! + \tparam Encoding The interpretation of encoding of the stream. Either UTF8, UTF16LE, UTF16BE, UTF32LE, UTF32BE. + \tparam InputByteStream Type of input byte stream. For example, FileReadStream. +*/ +template <typename Encoding, typename InputByteStream> +class EncodedInputStream { + RAPIDJSON_STATIC_ASSERT(sizeof(typename InputByteStream::Ch) == 1); +public: + typedef typename Encoding::Ch Ch; + + EncodedInputStream(InputByteStream& is) : is_(is) { + current_ = Encoding::TakeBOM(is_); + } + + Ch Peek() const { return current_; } + Ch Take() { Ch c = current_; current_ = Encoding::Take(is_); return c; } + size_t Tell() const { return is_.Tell(); } + + // Not implemented + void Put(Ch) { RAPIDJSON_ASSERT(false); } + void Flush() { RAPIDJSON_ASSERT(false); } + Ch* PutBegin() { RAPIDJSON_ASSERT(false); return 0; } + size_t PutEnd(Ch*) { RAPIDJSON_ASSERT(false); return 0; } + +private: + EncodedInputStream(const EncodedInputStream&); + EncodedInputStream& operator=(const EncodedInputStream&); + + InputByteStream& is_; + Ch current_; +}; + +//! Specialized for UTF8 MemoryStream. +template <> +class EncodedInputStream<UTF8<>, MemoryStream> { +public: + typedef UTF8<>::Ch Ch; + + EncodedInputStream(MemoryStream& is) : is_(is) { + if (static_cast<unsigned char>(is_.Peek()) == 0xEFu) is_.Take(); + if (static_cast<unsigned char>(is_.Peek()) == 0xBBu) is_.Take(); + if (static_cast<unsigned char>(is_.Peek()) == 0xBFu) is_.Take(); + } + Ch Peek() const { return is_.Peek(); } + Ch Take() { return is_.Take(); } + size_t Tell() const { return is_.Tell(); } + + // Not implemented + void Put(Ch) {} + void Flush() {} + Ch* PutBegin() { return 0; } + size_t PutEnd(Ch*) { return 0; } + + MemoryStream& is_; + +private: + EncodedInputStream(const EncodedInputStream&); + EncodedInputStream& operator=(const EncodedInputStream&); +}; + +//! Output byte stream wrapper with statically bound encoding. +/*! + \tparam Encoding The interpretation of encoding of the stream. Either UTF8, UTF16LE, UTF16BE, UTF32LE, UTF32BE. + \tparam OutputByteStream Type of input byte stream. For example, FileWriteStream. +*/ +template <typename Encoding, typename OutputByteStream> +class EncodedOutputStream { + RAPIDJSON_STATIC_ASSERT(sizeof(typename OutputByteStream::Ch) == 1); +public: + typedef typename Encoding::Ch Ch; + + EncodedOutputStream(OutputByteStream& os, bool putBOM = true) : os_(os) { + if (putBOM) + Encoding::PutBOM(os_); + } + + void Put(Ch c) { Encoding::Put(os_, c); } + void Flush() { os_.Flush(); } + + // Not implemented + Ch Peek() const { RAPIDJSON_ASSERT(false); return 0;} + Ch Take() { RAPIDJSON_ASSERT(false); return 0;} + size_t Tell() const { RAPIDJSON_ASSERT(false); return 0; } + Ch* PutBegin() { RAPIDJSON_ASSERT(false); return 0; } + size_t PutEnd(Ch*) { RAPIDJSON_ASSERT(false); return 0; } + +private: + EncodedOutputStream(const EncodedOutputStream&); + EncodedOutputStream& operator=(const EncodedOutputStream&); + + OutputByteStream& os_; +}; + +#define RAPIDJSON_ENCODINGS_FUNC(x) UTF8<Ch>::x, UTF16LE<Ch>::x, UTF16BE<Ch>::x, UTF32LE<Ch>::x, UTF32BE<Ch>::x + +//! Input stream wrapper with dynamically bound encoding and automatic encoding detection. +/*! + \tparam CharType Type of character for reading. + \tparam InputByteStream type of input byte stream to be wrapped. +*/ +template <typename CharType, typename InputByteStream> +class AutoUTFInputStream { + RAPIDJSON_STATIC_ASSERT(sizeof(typename InputByteStream::Ch) == 1); +public: + typedef CharType Ch; + + //! Constructor. + /*! + \param is input stream to be wrapped. + \param type UTF encoding type if it is not detected from the stream. + */ + AutoUTFInputStream(InputByteStream& is, UTFType type = kUTF8) : is_(&is), type_(type), hasBOM_(false) { + RAPIDJSON_ASSERT(type >= kUTF8 && type <= kUTF32BE); + DetectType(); + static const TakeFunc f[] = { RAPIDJSON_ENCODINGS_FUNC(Take) }; + takeFunc_ = f[type_]; + current_ = takeFunc_(*is_); + } + + UTFType GetType() const { return type_; } + bool HasBOM() const { return hasBOM_; } + + Ch Peek() const { return current_; } + Ch Take() { Ch c = current_; current_ = takeFunc_(*is_); return c; } + size_t Tell() const { return is_->Tell(); } + + // Not implemented + void Put(Ch) { RAPIDJSON_ASSERT(false); } + void Flush() { RAPIDJSON_ASSERT(false); } + Ch* PutBegin() { RAPIDJSON_ASSERT(false); return 0; } + size_t PutEnd(Ch*) { RAPIDJSON_ASSERT(false); return 0; } + +private: + AutoUTFInputStream(const AutoUTFInputStream&); + AutoUTFInputStream& operator=(const AutoUTFInputStream&); + + // Detect encoding type with BOM or RFC 4627 + void DetectType() { + // BOM (Byte Order Mark): + // 00 00 FE FF UTF-32BE + // FF FE 00 00 UTF-32LE + // FE FF UTF-16BE + // FF FE UTF-16LE + // EF BB BF UTF-8 + + const unsigned char* c = reinterpret_cast<const unsigned char *>(is_->Peek4()); + if (!c) + return; + + unsigned bom = static_cast<unsigned>(c[0] | (c[1] << 8) | (c[2] << 16) | (c[3] << 24)); + hasBOM_ = false; + if (bom == 0xFFFE0000) { type_ = kUTF32BE; hasBOM_ = true; is_->Take(); is_->Take(); is_->Take(); is_->Take(); } + else if (bom == 0x0000FEFF) { type_ = kUTF32LE; hasBOM_ = true; is_->Take(); is_->Take(); is_->Take(); is_->Take(); } + else if ((bom & 0xFFFF) == 0xFFFE) { type_ = kUTF16BE; hasBOM_ = true; is_->Take(); is_->Take(); } + else if ((bom & 0xFFFF) == 0xFEFF) { type_ = kUTF16LE; hasBOM_ = true; is_->Take(); is_->Take(); } + else if ((bom & 0xFFFFFF) == 0xBFBBEF) { type_ = kUTF8; hasBOM_ = true; is_->Take(); is_->Take(); is_->Take(); } + + // RFC 4627: Section 3 + // "Since the first two characters of a JSON text will always be ASCII + // characters [RFC0020], it is possible to determine whether an octet + // stream is UTF-8, UTF-16 (BE or LE), or UTF-32 (BE or LE) by looking + // at the pattern of nulls in the first four octets." + // 00 00 00 xx UTF-32BE + // 00 xx 00 xx UTF-16BE + // xx 00 00 00 UTF-32LE + // xx 00 xx 00 UTF-16LE + // xx xx xx xx UTF-8 + + if (!hasBOM_) { + int pattern = (c[0] ? 1 : 0) | (c[1] ? 2 : 0) | (c[2] ? 4 : 0) | (c[3] ? 8 : 0); + switch (pattern) { + case 0x08: type_ = kUTF32BE; break; + case 0x0A: type_ = kUTF16BE; break; + case 0x01: type_ = kUTF32LE; break; + case 0x05: type_ = kUTF16LE; break; + case 0x0F: type_ = kUTF8; break; + default: break; // Use type defined by user. + } + } + + // Runtime check whether the size of character type is sufficient. It only perform checks with assertion. + if (type_ == kUTF16LE || type_ == kUTF16BE) RAPIDJSON_ASSERT(sizeof(Ch) >= 2); + if (type_ == kUTF32LE || type_ == kUTF32BE) RAPIDJSON_ASSERT(sizeof(Ch) >= 4); + } + + typedef Ch (*TakeFunc)(InputByteStream& is); + InputByteStream* is_; + UTFType type_; + Ch current_; + TakeFunc takeFunc_; + bool hasBOM_; +}; + +//! Output stream wrapper with dynamically bound encoding and automatic encoding detection. +/*! + \tparam CharType Type of character for writing. + \tparam OutputByteStream type of output byte stream to be wrapped. +*/ +template <typename CharType, typename OutputByteStream> +class AutoUTFOutputStream { + RAPIDJSON_STATIC_ASSERT(sizeof(typename OutputByteStream::Ch) == 1); +public: + typedef CharType Ch; + + //! Constructor. + /*! + \param os output stream to be wrapped. + \param type UTF encoding type. + \param putBOM Whether to write BOM at the beginning of the stream. + */ + AutoUTFOutputStream(OutputByteStream& os, UTFType type, bool putBOM) : os_(&os), type_(type) { + RAPIDJSON_ASSERT(type >= kUTF8 && type <= kUTF32BE); + + // Runtime check whether the size of character type is sufficient. It only perform checks with assertion. + if (type_ == kUTF16LE || type_ == kUTF16BE) RAPIDJSON_ASSERT(sizeof(Ch) >= 2); + if (type_ == kUTF32LE || type_ == kUTF32BE) RAPIDJSON_ASSERT(sizeof(Ch) >= 4); + + static const PutFunc f[] = { RAPIDJSON_ENCODINGS_FUNC(Put) }; + putFunc_ = f[type_]; + + if (putBOM) + PutBOM(); + } + + UTFType GetType() const { return type_; } + + void Put(Ch c) { putFunc_(*os_, c); } + void Flush() { os_->Flush(); } + + // Not implemented + Ch Peek() const { RAPIDJSON_ASSERT(false); return 0;} + Ch Take() { RAPIDJSON_ASSERT(false); return 0;} + size_t Tell() const { RAPIDJSON_ASSERT(false); return 0; } + Ch* PutBegin() { RAPIDJSON_ASSERT(false); return 0; } + size_t PutEnd(Ch*) { RAPIDJSON_ASSERT(false); return 0; } + +private: + AutoUTFOutputStream(const AutoUTFOutputStream&); + AutoUTFOutputStream& operator=(const AutoUTFOutputStream&); + + void PutBOM() { + typedef void (*PutBOMFunc)(OutputByteStream&); + static const PutBOMFunc f[] = { RAPIDJSON_ENCODINGS_FUNC(PutBOM) }; + f[type_](*os_); + } + + typedef void (*PutFunc)(OutputByteStream&, Ch); + + OutputByteStream* os_; + UTFType type_; + PutFunc putFunc_; +}; + +#undef RAPIDJSON_ENCODINGS_FUNC + +RAPIDJSON_NAMESPACE_END + +#ifdef __clang__ +RAPIDJSON_DIAG_POP +#endif + +#ifdef __GNUC__ +RAPIDJSON_DIAG_POP +#endif + +#endif // RAPIDJSON_FILESTREAM_H_ + +// End file:encodedstream.h + + +// Begin file: internal/meta.h +// Tencent is pleased to support the open source community by making RapidJSON available. +// +// Copyright (C) 2015 THL A29 Limited, a Tencent company, and Milo Yip. All rights reserved. +// +// Licensed under the MIT License (the "License"); you may not use this file except +// in compliance with the License. You may obtain a copy of the License at +// +// http://opensource.org/licenses/MIT +// +// Unless required by applicable law or agreed to in writing, software distributed +// under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR +// CONDITIONS OF ANY KIND, either express or implied. See the License for the +// specific language governing permissions and limitations under the License. + +#ifndef RAPIDJSON_INTERNAL_META_H_ +#define RAPIDJSON_INTERNAL_META_H_ + + +// Begin file: ../rapidjson.h +// already included +// End file:../rapidjson.h + + +#ifdef __GNUC__ +RAPIDJSON_DIAG_PUSH +RAPIDJSON_DIAG_OFF(effc++) +#endif + +#if defined(_MSC_VER) && !defined(__clang__) +RAPIDJSON_DIAG_PUSH +RAPIDJSON_DIAG_OFF(6334) +#endif + +#if RAPIDJSON_HAS_CXX11_TYPETRAITS +#include <type_traits> +#endif + +//@cond RAPIDJSON_INTERNAL +RAPIDJSON_NAMESPACE_BEGIN +namespace internal { + +// Helper to wrap/convert arbitrary types to void, useful for arbitrary type matching +template <typename T> struct Void { typedef void Type; }; + +/////////////////////////////////////////////////////////////////////////////// +// BoolType, TrueType, FalseType +// +template <bool Cond> struct BoolType { + static const bool Value = Cond; + typedef BoolType Type; +}; +typedef BoolType<true> TrueType; +typedef BoolType<false> FalseType; + + +/////////////////////////////////////////////////////////////////////////////// +// SelectIf, BoolExpr, NotExpr, AndExpr, OrExpr +// + +template <bool C> struct SelectIfImpl { template <typename T1, typename T2> struct Apply { typedef T1 Type; }; }; +template <> struct SelectIfImpl<false> { template <typename T1, typename T2> struct Apply { typedef T2 Type; }; }; +template <bool C, typename T1, typename T2> struct SelectIfCond : SelectIfImpl<C>::template Apply<T1,T2> {}; +template <typename C, typename T1, typename T2> struct SelectIf : SelectIfCond<C::Value, T1, T2> {}; + +template <bool Cond1, bool Cond2> struct AndExprCond : FalseType {}; +template <> struct AndExprCond<true, true> : TrueType {}; +template <bool Cond1, bool Cond2> struct OrExprCond : TrueType {}; +template <> struct OrExprCond<false, false> : FalseType {}; + +template <typename C> struct BoolExpr : SelectIf<C,TrueType,FalseType>::Type {}; +template <typename C> struct NotExpr : SelectIf<C,FalseType,TrueType>::Type {}; +template <typename C1, typename C2> struct AndExpr : AndExprCond<C1::Value, C2::Value>::Type {}; +template <typename C1, typename C2> struct OrExpr : OrExprCond<C1::Value, C2::Value>::Type {}; + + +/////////////////////////////////////////////////////////////////////////////// +// AddConst, MaybeAddConst, RemoveConst +template <typename T> struct AddConst { typedef const T Type; }; +template <bool Constify, typename T> struct MaybeAddConst : SelectIfCond<Constify, const T, T> {}; +template <typename T> struct RemoveConst { typedef T Type; }; +template <typename T> struct RemoveConst<const T> { typedef T Type; }; + + +/////////////////////////////////////////////////////////////////////////////// +// IsSame, IsConst, IsMoreConst, IsPointer +// +template <typename T, typename U> struct IsSame : FalseType {}; +template <typename T> struct IsSame<T, T> : TrueType {}; + +template <typename T> struct IsConst : FalseType {}; +template <typename T> struct IsConst<const T> : TrueType {}; + +template <typename CT, typename T> +struct IsMoreConst + : AndExpr<IsSame<typename RemoveConst<CT>::Type, typename RemoveConst<T>::Type>, + BoolType<IsConst<CT>::Value >= IsConst<T>::Value> >::Type {}; + +template <typename T> struct IsPointer : FalseType {}; +template <typename T> struct IsPointer<T*> : TrueType {}; + +/////////////////////////////////////////////////////////////////////////////// +// IsBaseOf +// +#if RAPIDJSON_HAS_CXX11_TYPETRAITS + +template <typename B, typename D> struct IsBaseOf + : BoolType< ::std::is_base_of<B,D>::value> {}; + +#else // simplified version adopted from Boost + +template<typename B, typename D> struct IsBaseOfImpl { + RAPIDJSON_STATIC_ASSERT(sizeof(B) != 0); + RAPIDJSON_STATIC_ASSERT(sizeof(D) != 0); + + typedef char (&Yes)[1]; + typedef char (&No) [2]; + + template <typename T> + static Yes Check(const D*, T); + static No Check(const B*, int); + + struct Host { + operator const B*() const; + operator const D*(); + }; + + enum { Value = (sizeof(Check(Host(), 0)) == sizeof(Yes)) }; +}; + +template <typename B, typename D> struct IsBaseOf + : OrExpr<IsSame<B, D>, BoolExpr<IsBaseOfImpl<B, D> > >::Type {}; + +#endif // RAPIDJSON_HAS_CXX11_TYPETRAITS + + +////////////////////////////////////////////////////////////////////////// +// EnableIf / DisableIf +// +template <bool Condition, typename T = void> struct EnableIfCond { typedef T Type; }; +template <typename T> struct EnableIfCond<false, T> { /* empty */ }; + +template <bool Condition, typename T = void> struct DisableIfCond { typedef T Type; }; +template <typename T> struct DisableIfCond<true, T> { /* empty */ }; + +template <typename Condition, typename T = void> +struct EnableIf : EnableIfCond<Condition::Value, T> {}; + +template <typename Condition, typename T = void> +struct DisableIf : DisableIfCond<Condition::Value, T> {}; + +// SFINAE helpers +struct SfinaeTag {}; +template <typename T> struct RemoveSfinaeTag; +template <typename T> struct RemoveSfinaeTag<SfinaeTag&(*)(T)> { typedef T Type; }; + +#define RAPIDJSON_REMOVEFPTR_(type) \ + typename ::RAPIDJSON_NAMESPACE::internal::RemoveSfinaeTag \ + < ::RAPIDJSON_NAMESPACE::internal::SfinaeTag&(*) type>::Type + +#define RAPIDJSON_ENABLEIF(cond) \ + typename ::RAPIDJSON_NAMESPACE::internal::EnableIf \ + <RAPIDJSON_REMOVEFPTR_(cond)>::Type * = NULL + +#define RAPIDJSON_DISABLEIF(cond) \ + typename ::RAPIDJSON_NAMESPACE::internal::DisableIf \ + <RAPIDJSON_REMOVEFPTR_(cond)>::Type * = NULL + +#define RAPIDJSON_ENABLEIF_RETURN(cond,returntype) \ + typename ::RAPIDJSON_NAMESPACE::internal::EnableIf \ + <RAPIDJSON_REMOVEFPTR_(cond), \ + RAPIDJSON_REMOVEFPTR_(returntype)>::Type + +#define RAPIDJSON_DISABLEIF_RETURN(cond,returntype) \ + typename ::RAPIDJSON_NAMESPACE::internal::DisableIf \ + <RAPIDJSON_REMOVEFPTR_(cond), \ + RAPIDJSON_REMOVEFPTR_(returntype)>::Type + +} // namespace internal +RAPIDJSON_NAMESPACE_END +//@endcond + +#if defined(_MSC_VER) && !defined(__clang__) +RAPIDJSON_DIAG_POP +#endif + +#ifdef __GNUC__ +RAPIDJSON_DIAG_POP +#endif + +#endif // RAPIDJSON_INTERNAL_META_H_ + +// End file:internal/meta.h + + +// Begin file: internal/stack.h +// Tencent is pleased to support the open source community by making RapidJSON available. +// +// Copyright (C) 2015 THL A29 Limited, a Tencent company, and Milo Yip. All rights reserved. +// +// Licensed under the MIT License (the "License"); you may not use this file except +// in compliance with the License. You may obtain a copy of the License at +// +// http://opensource.org/licenses/MIT +// +// Unless required by applicable law or agreed to in writing, software distributed +// under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR +// CONDITIONS OF ANY KIND, either express or implied. See the License for the +// specific language governing permissions and limitations under the License. + +#ifndef RAPIDJSON_INTERNAL_STACK_H_ +#define RAPIDJSON_INTERNAL_STACK_H_ + + +// Begin file: ../allocators.h +// already included +// End file:../allocators.h + + +// Begin file: swap.h +// Tencent is pleased to support the open source community by making RapidJSON available. +// +// Copyright (C) 2015 THL A29 Limited, a Tencent company, and Milo Yip. All rights reserved. +// +// Licensed under the MIT License (the "License"); you may not use this file except +// in compliance with the License. You may obtain a copy of the License at +// +// http://opensource.org/licenses/MIT +// +// Unless required by applicable law or agreed to in writing, software distributed +// under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR +// CONDITIONS OF ANY KIND, either express or implied. See the License for the +// specific language governing permissions and limitations under the License. + +#ifndef RAPIDJSON_INTERNAL_SWAP_H_ +#define RAPIDJSON_INTERNAL_SWAP_H_ + + +// Begin file: ../rapidjson.h +// already included +// End file:../rapidjson.h + + +#if defined(__clang__) +RAPIDJSON_DIAG_PUSH +RAPIDJSON_DIAG_OFF(c++98-compat) +#endif + +RAPIDJSON_NAMESPACE_BEGIN +namespace internal { + +//! Custom swap() to avoid dependency on C++ <algorithm> header +/*! \tparam T Type of the arguments to swap, should be instantiated with primitive C++ types only. + \note This has the same semantics as std::swap(). +*/ +template <typename T> +inline void Swap(T& a, T& b) RAPIDJSON_NOEXCEPT { + T tmp = a; + a = b; + b = tmp; +} + +} // namespace internal +RAPIDJSON_NAMESPACE_END + +#if defined(__clang__) +RAPIDJSON_DIAG_POP +#endif + +#endif // RAPIDJSON_INTERNAL_SWAP_H_ + +// End file:swap.h + + +#if defined(__clang__) +RAPIDJSON_DIAG_PUSH +RAPIDJSON_DIAG_OFF(c++98-compat) +#endif + +RAPIDJSON_NAMESPACE_BEGIN +namespace internal { + +/////////////////////////////////////////////////////////////////////////////// +// Stack + +//! A type-unsafe stack for storing different types of data. +/*! \tparam Allocator Allocator for allocating stack memory. +*/ +template <typename Allocator> +class Stack { +public: + // Optimization note: Do not allocate memory for stack_ in constructor. + // Do it lazily when first Push() -> Expand() -> Resize(). + Stack(Allocator* allocator, size_t stackCapacity) : allocator_(allocator), ownAllocator_(0), stack_(0), stackTop_(0), stackEnd_(0), initialCapacity_(stackCapacity) { + } + +#if RAPIDJSON_HAS_CXX11_RVALUE_REFS + Stack(Stack&& rhs) + : allocator_(rhs.allocator_), + ownAllocator_(rhs.ownAllocator_), + stack_(rhs.stack_), + stackTop_(rhs.stackTop_), + stackEnd_(rhs.stackEnd_), + initialCapacity_(rhs.initialCapacity_) + { + rhs.allocator_ = 0; + rhs.ownAllocator_ = 0; + rhs.stack_ = 0; + rhs.stackTop_ = 0; + rhs.stackEnd_ = 0; + rhs.initialCapacity_ = 0; + } +#endif + + ~Stack() { + Destroy(); + } + +#if RAPIDJSON_HAS_CXX11_RVALUE_REFS + Stack& operator=(Stack&& rhs) { + if (&rhs != this) + { + Destroy(); + + allocator_ = rhs.allocator_; + ownAllocator_ = rhs.ownAllocator_; + stack_ = rhs.stack_; + stackTop_ = rhs.stackTop_; + stackEnd_ = rhs.stackEnd_; + initialCapacity_ = rhs.initialCapacity_; + + rhs.allocator_ = 0; + rhs.ownAllocator_ = 0; + rhs.stack_ = 0; + rhs.stackTop_ = 0; + rhs.stackEnd_ = 0; + rhs.initialCapacity_ = 0; + } + return *this; + } +#endif + + void Swap(Stack& rhs) RAPIDJSON_NOEXCEPT { + internal::Swap(allocator_, rhs.allocator_); + internal::Swap(ownAllocator_, rhs.ownAllocator_); + internal::Swap(stack_, rhs.stack_); + internal::Swap(stackTop_, rhs.stackTop_); + internal::Swap(stackEnd_, rhs.stackEnd_); + internal::Swap(initialCapacity_, rhs.initialCapacity_); + } + + void Clear() { stackTop_ = stack_; } + + void ShrinkToFit() { + if (Empty()) { + // If the stack is empty, completely deallocate the memory. + Allocator::Free(stack_); // NOLINT (+clang-analyzer-unix.Malloc) + stack_ = 0; + stackTop_ = 0; + stackEnd_ = 0; + } + else + Resize(GetSize()); + } + + // Optimization note: try to minimize the size of this function for force inline. + // Expansion is run very infrequently, so it is moved to another (probably non-inline) function. + template<typename T> + RAPIDJSON_FORCEINLINE void Reserve(size_t count = 1) { + // Expand the stack if needed + if (RAPIDJSON_UNLIKELY(stackTop_ + sizeof(T) * count > stackEnd_)) + Expand<T>(count); + } + + template<typename T> + RAPIDJSON_FORCEINLINE T* Push(size_t count = 1) { + Reserve<T>(count); + return PushUnsafe<T>(count); + } + + template<typename T> + RAPIDJSON_FORCEINLINE T* PushUnsafe(size_t count = 1) { + RAPIDJSON_ASSERT(stackTop_); + RAPIDJSON_ASSERT(stackTop_ + sizeof(T) * count <= stackEnd_); + T* ret = reinterpret_cast<T*>(stackTop_); + stackTop_ += sizeof(T) * count; + return ret; + } + + template<typename T> + T* Pop(size_t count) { + RAPIDJSON_ASSERT(GetSize() >= count * sizeof(T)); + stackTop_ -= count * sizeof(T); + return reinterpret_cast<T*>(stackTop_); + } + + template<typename T> + T* Top() { + RAPIDJSON_ASSERT(GetSize() >= sizeof(T)); + return reinterpret_cast<T*>(stackTop_ - sizeof(T)); + } + + template<typename T> + const T* Top() const { + RAPIDJSON_ASSERT(GetSize() >= sizeof(T)); + return reinterpret_cast<T*>(stackTop_ - sizeof(T)); + } + + template<typename T> + T* End() { return reinterpret_cast<T*>(stackTop_); } + + template<typename T> + const T* End() const { return reinterpret_cast<T*>(stackTop_); } + + template<typename T> + T* Bottom() { return reinterpret_cast<T*>(stack_); } + + template<typename T> + const T* Bottom() const { return reinterpret_cast<T*>(stack_); } + + bool HasAllocator() const { + return allocator_ != 0; + } + + Allocator& GetAllocator() { + RAPIDJSON_ASSERT(allocator_); + return *allocator_; + } + + bool Empty() const { return stackTop_ == stack_; } + size_t GetSize() const { return static_cast<size_t>(stackTop_ - stack_); } + size_t GetCapacity() const { return static_cast<size_t>(stackEnd_ - stack_); } + +private: + template<typename T> + void Expand(size_t count) { + // Only expand the capacity if the current stack exists. Otherwise just create a stack with initial capacity. + size_t newCapacity; + if (stack_ == 0) { + if (!allocator_) + ownAllocator_ = allocator_ = RAPIDJSON_NEW(Allocator)(); + newCapacity = initialCapacity_; + } else { + newCapacity = GetCapacity(); + newCapacity += (newCapacity + 1) / 2; + } + size_t newSize = GetSize() + sizeof(T) * count; + if (newCapacity < newSize) + newCapacity = newSize; + + Resize(newCapacity); + } + + void Resize(size_t newCapacity) { + const size_t size = GetSize(); // Backup the current size + stack_ = static_cast<char*>(allocator_->Realloc(stack_, GetCapacity(), newCapacity)); + stackTop_ = stack_ + size; + stackEnd_ = stack_ + newCapacity; + } + + void Destroy() { + Allocator::Free(stack_); + RAPIDJSON_DELETE(ownAllocator_); // Only delete if it is owned by the stack + } + + // Prohibit copy constructor & assignment operator. + Stack(const Stack&); + Stack& operator=(const Stack&); + + Allocator* allocator_; + Allocator* ownAllocator_; + char *stack_; + char *stackTop_; + char *stackEnd_; + size_t initialCapacity_; +}; + +} // namespace internal +RAPIDJSON_NAMESPACE_END + +#if defined(__clang__) +RAPIDJSON_DIAG_POP +#endif + +#endif // RAPIDJSON_STACK_H_ + +// End file:internal/stack.h + + +// Begin file: internal/strtod.h +// Tencent is pleased to support the open source community by making RapidJSON available. +// +// Copyright (C) 2015 THL A29 Limited, a Tencent company, and Milo Yip. All rights reserved. +// +// Licensed under the MIT License (the "License"); you may not use this file except +// in compliance with the License. You may obtain a copy of the License at +// +// http://opensource.org/licenses/MIT +// +// Unless required by applicable law or agreed to in writing, software distributed +// under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR +// CONDITIONS OF ANY KIND, either express or implied. See the License for the +// specific language governing permissions and limitations under the License. + +#ifndef RAPIDJSON_STRTOD_ +#define RAPIDJSON_STRTOD_ + + +// Begin file: ieee754.h +// Tencent is pleased to support the open source community by making RapidJSON available. +// +// Copyright (C) 2015 THL A29 Limited, a Tencent company, and Milo Yip. All rights reserved. +// +// Licensed under the MIT License (the "License"); you may not use this file except +// in compliance with the License. You may obtain a copy of the License at +// +// http://opensource.org/licenses/MIT +// +// Unless required by applicable law or agreed to in writing, software distributed +// under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR +// CONDITIONS OF ANY KIND, either express or implied. See the License for the +// specific language governing permissions and limitations under the License. + +#ifndef RAPIDJSON_IEEE754_ +#define RAPIDJSON_IEEE754_ + + +// Begin file: ../rapidjson.h +// already included +// End file:../rapidjson.h + + +RAPIDJSON_NAMESPACE_BEGIN +namespace internal { + +class Double { +public: + Double() {} + Double(double d) : d_(d) {} + Double(uint64_t u) : u_(u) {} + + double Value() const { return d_; } + uint64_t Uint64Value() const { return u_; } + + double NextPositiveDouble() const { + RAPIDJSON_ASSERT(!Sign()); + return Double(u_ + 1).Value(); + } + + bool Sign() const { return (u_ & kSignMask) != 0; } + uint64_t Significand() const { return u_ & kSignificandMask; } + int Exponent() const { return static_cast<int>(((u_ & kExponentMask) >> kSignificandSize) - kExponentBias); } + + bool IsNan() const { return (u_ & kExponentMask) == kExponentMask && Significand() != 0; } + bool IsInf() const { return (u_ & kExponentMask) == kExponentMask && Significand() == 0; } + bool IsNanOrInf() const { return (u_ & kExponentMask) == kExponentMask; } + bool IsNormal() const { return (u_ & kExponentMask) != 0 || Significand() == 0; } + bool IsZero() const { return (u_ & (kExponentMask | kSignificandMask)) == 0; } + + uint64_t IntegerSignificand() const { return IsNormal() ? Significand() | kHiddenBit : Significand(); } + int IntegerExponent() const { return (IsNormal() ? Exponent() : kDenormalExponent) - kSignificandSize; } + uint64_t ToBias() const { return (u_ & kSignMask) ? ~u_ + 1 : u_ | kSignMask; } + + static int EffectiveSignificandSize(int order) { + if (order >= -1021) + return 53; + else if (order <= -1074) + return 0; + else + return order + 1074; + } + +private: + static const int kSignificandSize = 52; + static const int kExponentBias = 0x3FF; + static const int kDenormalExponent = 1 - kExponentBias; + static const uint64_t kSignMask = RAPIDJSON_UINT64_C2(0x80000000, 0x00000000); + static const uint64_t kExponentMask = RAPIDJSON_UINT64_C2(0x7FF00000, 0x00000000); + static const uint64_t kSignificandMask = RAPIDJSON_UINT64_C2(0x000FFFFF, 0xFFFFFFFF); + static const uint64_t kHiddenBit = RAPIDJSON_UINT64_C2(0x00100000, 0x00000000); + + union { + double d_; + uint64_t u_; + }; +}; + +} // namespace internal +RAPIDJSON_NAMESPACE_END + +#endif // RAPIDJSON_IEEE754_ + +// End file:ieee754.h + + +// Begin file: biginteger.h +// Tencent is pleased to support the open source community by making RapidJSON available. +// +// Copyright (C) 2015 THL A29 Limited, a Tencent company, and Milo Yip. All rights reserved. +// +// Licensed under the MIT License (the "License"); you may not use this file except +// in compliance with the License. You may obtain a copy of the License at +// +// http://opensource.org/licenses/MIT +// +// Unless required by applicable law or agreed to in writing, software distributed +// under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR +// CONDITIONS OF ANY KIND, either express or implied. See the License for the +// specific language governing permissions and limitations under the License. + +#ifndef RAPIDJSON_BIGINTEGER_H_ +#define RAPIDJSON_BIGINTEGER_H_ + + +// Begin file: ../rapidjson.h +// already included +// End file:../rapidjson.h + + +#if defined(_MSC_VER) && !__INTEL_COMPILER && defined(_M_AMD64) +#include <intrin.h> // for _umul128 +#pragma intrinsic(_umul128) +#endif + +RAPIDJSON_NAMESPACE_BEGIN +namespace internal { + +class BigInteger { +public: + typedef uint64_t Type; + + BigInteger(const BigInteger& rhs) : count_(rhs.count_) { + std::memcpy(digits_, rhs.digits_, count_ * sizeof(Type)); + } + + explicit BigInteger(uint64_t u) : count_(1) { + digits_[0] = u; + } + + BigInteger(const char* decimals, size_t length) : count_(1) { + RAPIDJSON_ASSERT(length > 0); + digits_[0] = 0; + size_t i = 0; + const size_t kMaxDigitPerIteration = 19; // 2^64 = 18446744073709551616 > 10^19 + while (length >= kMaxDigitPerIteration) { + AppendDecimal64(decimals + i, decimals + i + kMaxDigitPerIteration); + length -= kMaxDigitPerIteration; + i += kMaxDigitPerIteration; + } + + if (length > 0) + AppendDecimal64(decimals + i, decimals + i + length); + } + + BigInteger& operator=(const BigInteger &rhs) + { + if (this != &rhs) { + count_ = rhs.count_; + std::memcpy(digits_, rhs.digits_, count_ * sizeof(Type)); + } + return *this; + } + + BigInteger& operator=(uint64_t u) { + digits_[0] = u; + count_ = 1; + return *this; + } + + BigInteger& operator+=(uint64_t u) { + Type backup = digits_[0]; + digits_[0] += u; + for (size_t i = 0; i < count_ - 1; i++) { + if (digits_[i] >= backup) + return *this; // no carry + backup = digits_[i + 1]; + digits_[i + 1] += 1; + } + + // Last carry + if (digits_[count_ - 1] < backup) + PushBack(1); + + return *this; + } + + BigInteger& operator*=(uint64_t u) { + if (u == 0) return *this = 0; + if (u == 1) return *this; + if (*this == 1) return *this = u; + + uint64_t k = 0; + for (size_t i = 0; i < count_; i++) { + uint64_t hi; + digits_[i] = MulAdd64(digits_[i], u, k, &hi); + k = hi; + } + + if (k > 0) + PushBack(k); + + return *this; + } + + BigInteger& operator*=(uint32_t u) { + if (u == 0) return *this = 0; + if (u == 1) return *this; + if (*this == 1) return *this = u; + + uint64_t k = 0; + for (size_t i = 0; i < count_; i++) { + const uint64_t c = digits_[i] >> 32; + const uint64_t d = digits_[i] & 0xFFFFFFFF; + const uint64_t uc = u * c; + const uint64_t ud = u * d; + const uint64_t p0 = ud + k; + const uint64_t p1 = uc + (p0 >> 32); + digits_[i] = (p0 & 0xFFFFFFFF) | (p1 << 32); + k = p1 >> 32; + } + + if (k > 0) + PushBack(k); + + return *this; + } + + BigInteger& operator<<=(size_t shift) { + if (IsZero() || shift == 0) return *this; + + size_t offset = shift / kTypeBit; + size_t interShift = shift % kTypeBit; + RAPIDJSON_ASSERT(count_ + offset <= kCapacity); + + if (interShift == 0) { + std::memmove(digits_ + offset, digits_, count_ * sizeof(Type)); + count_ += offset; + } + else { + digits_[count_] = 0; + for (size_t i = count_; i > 0; i--) + digits_[i + offset] = (digits_[i] << interShift) | (digits_[i - 1] >> (kTypeBit - interShift)); + digits_[offset] = digits_[0] << interShift; + count_ += offset; + if (digits_[count_]) + count_++; + } + + std::memset(digits_, 0, offset * sizeof(Type)); + + return *this; + } + + bool operator==(const BigInteger& rhs) const { + return count_ == rhs.count_ && std::memcmp(digits_, rhs.digits_, count_ * sizeof(Type)) == 0; + } + + bool operator==(const Type rhs) const { + return count_ == 1 && digits_[0] == rhs; + } + + BigInteger& MultiplyPow5(unsigned exp) { + static const uint32_t kPow5[12] = { + 5, + 5 * 5, + 5 * 5 * 5, + 5 * 5 * 5 * 5, + 5 * 5 * 5 * 5 * 5, + 5 * 5 * 5 * 5 * 5 * 5, + 5 * 5 * 5 * 5 * 5 * 5 * 5, + 5 * 5 * 5 * 5 * 5 * 5 * 5 * 5, + 5 * 5 * 5 * 5 * 5 * 5 * 5 * 5 * 5, + 5 * 5 * 5 * 5 * 5 * 5 * 5 * 5 * 5 * 5, + 5 * 5 * 5 * 5 * 5 * 5 * 5 * 5 * 5 * 5 * 5, + 5 * 5 * 5 * 5 * 5 * 5 * 5 * 5 * 5 * 5 * 5 * 5 + }; + if (exp == 0) return *this; + for (; exp >= 27; exp -= 27) *this *= RAPIDJSON_UINT64_C2(0X6765C793, 0XFA10079D); // 5^27 + for (; exp >= 13; exp -= 13) *this *= static_cast<uint32_t>(1220703125u); // 5^13 + if (exp > 0) *this *= kPow5[exp - 1]; + return *this; + } + + // Compute absolute difference of this and rhs. + // Assume this != rhs + bool Difference(const BigInteger& rhs, BigInteger* out) const { + int cmp = Compare(rhs); + RAPIDJSON_ASSERT(cmp != 0); + const BigInteger *a, *b; // Makes a > b + bool ret; + if (cmp < 0) { a = &rhs; b = this; ret = true; } + else { a = this; b = &rhs; ret = false; } + + Type borrow = 0; + for (size_t i = 0; i < a->count_; i++) { + Type d = a->digits_[i] - borrow; + if (i < b->count_) + d -= b->digits_[i]; + borrow = (d > a->digits_[i]) ? 1 : 0; + out->digits_[i] = d; + if (d != 0) + out->count_ = i + 1; + } + + return ret; + } + + int Compare(const BigInteger& rhs) const { + if (count_ != rhs.count_) + return count_ < rhs.count_ ? -1 : 1; + + for (size_t i = count_; i-- > 0;) + if (digits_[i] != rhs.digits_[i]) + return digits_[i] < rhs.digits_[i] ? -1 : 1; + + return 0; + } + + size_t GetCount() const { return count_; } + Type GetDigit(size_t index) const { RAPIDJSON_ASSERT(index < count_); return digits_[index]; } + bool IsZero() const { return count_ == 1 && digits_[0] == 0; } + +private: + void AppendDecimal64(const char* begin, const char* end) { + uint64_t u = ParseUint64(begin, end); + if (IsZero()) + *this = u; + else { + unsigned exp = static_cast<unsigned>(end - begin); + (MultiplyPow5(exp) <<= exp) += u; // *this = *this * 10^exp + u + } + } + + void PushBack(Type digit) { + RAPIDJSON_ASSERT(count_ < kCapacity); + digits_[count_++] = digit; + } + + static uint64_t ParseUint64(const char* begin, const char* end) { + uint64_t r = 0; + for (const char* p = begin; p != end; ++p) { + RAPIDJSON_ASSERT(*p >= '0' && *p <= '9'); + r = r * 10u + static_cast<unsigned>(*p - '0'); + } + return r; + } + + // Assume a * b + k < 2^128 + static uint64_t MulAdd64(uint64_t a, uint64_t b, uint64_t k, uint64_t* outHigh) { +#if defined(_MSC_VER) && defined(_M_AMD64) + uint64_t low = _umul128(a, b, outHigh) + k; + if (low < k) + (*outHigh)++; + return low; +#elif (__GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ >= 6)) && defined(__x86_64__) + __extension__ typedef unsigned __int128 uint128; + uint128 p = static_cast<uint128>(a) * static_cast<uint128>(b); + p += k; + *outHigh = static_cast<uint64_t>(p >> 64); + return static_cast<uint64_t>(p); +#else + const uint64_t a0 = a & 0xFFFFFFFF, a1 = a >> 32, b0 = b & 0xFFFFFFFF, b1 = b >> 32; + uint64_t x0 = a0 * b0, x1 = a0 * b1, x2 = a1 * b0, x3 = a1 * b1; + x1 += (x0 >> 32); // can't give carry + x1 += x2; + if (x1 < x2) + x3 += (static_cast<uint64_t>(1) << 32); + uint64_t lo = (x1 << 32) + (x0 & 0xFFFFFFFF); + uint64_t hi = x3 + (x1 >> 32); + + lo += k; + if (lo < k) + hi++; + *outHigh = hi; + return lo; +#endif + } + + static const size_t kBitCount = 3328; // 64bit * 54 > 10^1000 + static const size_t kCapacity = kBitCount / sizeof(Type); + static const size_t kTypeBit = sizeof(Type) * 8; + + Type digits_[kCapacity]; + size_t count_; +}; + +} // namespace internal +RAPIDJSON_NAMESPACE_END + +#endif // RAPIDJSON_BIGINTEGER_H_ + +// End file:biginteger.h + + +// Begin file: diyfp.h +// Tencent is pleased to support the open source community by making RapidJSON available. +// +// Copyright (C) 2015 THL A29 Limited, a Tencent company, and Milo Yip. All rights reserved. +// +// Licensed under the MIT License (the "License"); you may not use this file except +// in compliance with the License. You may obtain a copy of the License at +// +// http://opensource.org/licenses/MIT +// +// Unless required by applicable law or agreed to in writing, software distributed +// under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR +// CONDITIONS OF ANY KIND, either express or implied. See the License for the +// specific language governing permissions and limitations under the License. + +// This is a C++ header-only implementation of Grisu2 algorithm from the publication: +// Loitsch, Florian. "Printing floating-point numbers quickly and accurately with +// integers." ACM Sigplan Notices 45.6 (2010): 233-243. + +#ifndef RAPIDJSON_DIYFP_H_ +#define RAPIDJSON_DIYFP_H_ + + +// Begin file: ../rapidjson.h +// already included +// End file:../rapidjson.h + +#include <limits> + +#if defined(_MSC_VER) && defined(_M_AMD64) && !defined(__INTEL_COMPILER) +#include <intrin.h> +#pragma intrinsic(_BitScanReverse64) +#pragma intrinsic(_umul128) +#endif + +RAPIDJSON_NAMESPACE_BEGIN +namespace internal { + +#ifdef __GNUC__ +RAPIDJSON_DIAG_PUSH +RAPIDJSON_DIAG_OFF(effc++) +#endif + +#ifdef __clang__ +RAPIDJSON_DIAG_PUSH +RAPIDJSON_DIAG_OFF(padded) +#endif + +struct DiyFp { + DiyFp() : f(), e() {} + + DiyFp(uint64_t fp, int exp) : f(fp), e(exp) {} + + explicit DiyFp(double d) { + union { + double d; + uint64_t u64; + } u = { d }; + + int biased_e = static_cast<int>((u.u64 & kDpExponentMask) >> kDpSignificandSize); + uint64_t significand = (u.u64 & kDpSignificandMask); + if (biased_e != 0) { + f = significand + kDpHiddenBit; + e = biased_e - kDpExponentBias; + } + else { + f = significand; + e = kDpMinExponent + 1; + } + } + + DiyFp operator-(const DiyFp& rhs) const { + return DiyFp(f - rhs.f, e); + } + + DiyFp operator*(const DiyFp& rhs) const { +#if defined(_MSC_VER) && defined(_M_AMD64) + uint64_t h; + uint64_t l = _umul128(f, rhs.f, &h); + if (l & (uint64_t(1) << 63)) // rounding + h++; + return DiyFp(h, e + rhs.e + 64); +#elif (__GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ >= 6)) && defined(__x86_64__) + __extension__ typedef unsigned __int128 uint128; + uint128 p = static_cast<uint128>(f) * static_cast<uint128>(rhs.f); + uint64_t h = static_cast<uint64_t>(p >> 64); + uint64_t l = static_cast<uint64_t>(p); + if (l & (uint64_t(1) << 63)) // rounding + h++; + return DiyFp(h, e + rhs.e + 64); +#else + const uint64_t M32 = 0xFFFFFFFF; + const uint64_t a = f >> 32; + const uint64_t b = f & M32; + const uint64_t c = rhs.f >> 32; + const uint64_t d = rhs.f & M32; + const uint64_t ac = a * c; + const uint64_t bc = b * c; + const uint64_t ad = a * d; + const uint64_t bd = b * d; + uint64_t tmp = (bd >> 32) + (ad & M32) + (bc & M32); + tmp += 1U << 31; /// mult_round + return DiyFp(ac + (ad >> 32) + (bc >> 32) + (tmp >> 32), e + rhs.e + 64); +#endif + } + + DiyFp Normalize() const { + RAPIDJSON_ASSERT(f != 0); // https://stackoverflow.com/a/26809183/291737 +#if defined(_MSC_VER) && defined(_M_AMD64) + unsigned long index; + _BitScanReverse64(&index, f); + return DiyFp(f << (63 - index), e - (63 - index)); +#elif defined(__GNUC__) && __GNUC__ >= 4 + int s = __builtin_clzll(f); + return DiyFp(f << s, e - s); +#else + DiyFp res = *this; + while (!(res.f & (static_cast<uint64_t>(1) << 63))) { + res.f <<= 1; + res.e--; + } + return res; +#endif + } + + DiyFp NormalizeBoundary() const { + DiyFp res = *this; + while (!(res.f & (kDpHiddenBit << 1))) { + res.f <<= 1; + res.e--; + } + res.f <<= (kDiySignificandSize - kDpSignificandSize - 2); + res.e = res.e - (kDiySignificandSize - kDpSignificandSize - 2); + return res; + } + + void NormalizedBoundaries(DiyFp* minus, DiyFp* plus) const { + DiyFp pl = DiyFp((f << 1) + 1, e - 1).NormalizeBoundary(); + DiyFp mi = (f == kDpHiddenBit) ? DiyFp((f << 2) - 1, e - 2) : DiyFp((f << 1) - 1, e - 1); + mi.f <<= mi.e - pl.e; + mi.e = pl.e; + *plus = pl; + *minus = mi; + } + + double ToDouble() const { + union { + double d; + uint64_t u64; + }u; + RAPIDJSON_ASSERT(f <= kDpHiddenBit + kDpSignificandMask); + if (e < kDpDenormalExponent) { + // Underflow. + return 0.0; + } + if (e >= kDpMaxExponent) { + // Overflow. + return std::numeric_limits<double>::infinity(); + } + const uint64_t be = (e == kDpDenormalExponent && (f & kDpHiddenBit) == 0) ? 0 : + static_cast<uint64_t>(e + kDpExponentBias); + u.u64 = (f & kDpSignificandMask) | (be << kDpSignificandSize); + return u.d; + } + + static const int kDiySignificandSize = 64; + static const int kDpSignificandSize = 52; + static const int kDpExponentBias = 0x3FF + kDpSignificandSize; + static const int kDpMaxExponent = 0x7FF - kDpExponentBias; + static const int kDpMinExponent = -kDpExponentBias; + static const int kDpDenormalExponent = -kDpExponentBias + 1; + static const uint64_t kDpExponentMask = RAPIDJSON_UINT64_C2(0x7FF00000, 0x00000000); + static const uint64_t kDpSignificandMask = RAPIDJSON_UINT64_C2(0x000FFFFF, 0xFFFFFFFF); + static const uint64_t kDpHiddenBit = RAPIDJSON_UINT64_C2(0x00100000, 0x00000000); + + uint64_t f; + int e; +}; + +inline DiyFp GetCachedPowerByIndex(size_t index) { + // 10^-348, 10^-340, ..., 10^340 + static const uint64_t kCachedPowers_F[] = { + RAPIDJSON_UINT64_C2(0xfa8fd5a0, 0x081c0288), RAPIDJSON_UINT64_C2(0xbaaee17f, 0xa23ebf76), + RAPIDJSON_UINT64_C2(0x8b16fb20, 0x3055ac76), RAPIDJSON_UINT64_C2(0xcf42894a, 0x5dce35ea), + RAPIDJSON_UINT64_C2(0x9a6bb0aa, 0x55653b2d), RAPIDJSON_UINT64_C2(0xe61acf03, 0x3d1a45df), + RAPIDJSON_UINT64_C2(0xab70fe17, 0xc79ac6ca), RAPIDJSON_UINT64_C2(0xff77b1fc, 0xbebcdc4f), + RAPIDJSON_UINT64_C2(0xbe5691ef, 0x416bd60c), RAPIDJSON_UINT64_C2(0x8dd01fad, 0x907ffc3c), + RAPIDJSON_UINT64_C2(0xd3515c28, 0x31559a83), RAPIDJSON_UINT64_C2(0x9d71ac8f, 0xada6c9b5), + RAPIDJSON_UINT64_C2(0xea9c2277, 0x23ee8bcb), RAPIDJSON_UINT64_C2(0xaecc4991, 0x4078536d), + RAPIDJSON_UINT64_C2(0x823c1279, 0x5db6ce57), RAPIDJSON_UINT64_C2(0xc2109436, 0x4dfb5637), + RAPIDJSON_UINT64_C2(0x9096ea6f, 0x3848984f), RAPIDJSON_UINT64_C2(0xd77485cb, 0x25823ac7), + RAPIDJSON_UINT64_C2(0xa086cfcd, 0x97bf97f4), RAPIDJSON_UINT64_C2(0xef340a98, 0x172aace5), + RAPIDJSON_UINT64_C2(0xb23867fb, 0x2a35b28e), RAPIDJSON_UINT64_C2(0x84c8d4df, 0xd2c63f3b), + RAPIDJSON_UINT64_C2(0xc5dd4427, 0x1ad3cdba), RAPIDJSON_UINT64_C2(0x936b9fce, 0xbb25c996), + RAPIDJSON_UINT64_C2(0xdbac6c24, 0x7d62a584), RAPIDJSON_UINT64_C2(0xa3ab6658, 0x0d5fdaf6), + RAPIDJSON_UINT64_C2(0xf3e2f893, 0xdec3f126), RAPIDJSON_UINT64_C2(0xb5b5ada8, 0xaaff80b8), + RAPIDJSON_UINT64_C2(0x87625f05, 0x6c7c4a8b), RAPIDJSON_UINT64_C2(0xc9bcff60, 0x34c13053), + RAPIDJSON_UINT64_C2(0x964e858c, 0x91ba2655), RAPIDJSON_UINT64_C2(0xdff97724, 0x70297ebd), + RAPIDJSON_UINT64_C2(0xa6dfbd9f, 0xb8e5b88f), RAPIDJSON_UINT64_C2(0xf8a95fcf, 0x88747d94), + RAPIDJSON_UINT64_C2(0xb9447093, 0x8fa89bcf), RAPIDJSON_UINT64_C2(0x8a08f0f8, 0xbf0f156b), + RAPIDJSON_UINT64_C2(0xcdb02555, 0x653131b6), RAPIDJSON_UINT64_C2(0x993fe2c6, 0xd07b7fac), + RAPIDJSON_UINT64_C2(0xe45c10c4, 0x2a2b3b06), RAPIDJSON_UINT64_C2(0xaa242499, 0x697392d3), + RAPIDJSON_UINT64_C2(0xfd87b5f2, 0x8300ca0e), RAPIDJSON_UINT64_C2(0xbce50864, 0x92111aeb), + RAPIDJSON_UINT64_C2(0x8cbccc09, 0x6f5088cc), RAPIDJSON_UINT64_C2(0xd1b71758, 0xe219652c), + RAPIDJSON_UINT64_C2(0x9c400000, 0x00000000), RAPIDJSON_UINT64_C2(0xe8d4a510, 0x00000000), + RAPIDJSON_UINT64_C2(0xad78ebc5, 0xac620000), RAPIDJSON_UINT64_C2(0x813f3978, 0xf8940984), + RAPIDJSON_UINT64_C2(0xc097ce7b, 0xc90715b3), RAPIDJSON_UINT64_C2(0x8f7e32ce, 0x7bea5c70), + RAPIDJSON_UINT64_C2(0xd5d238a4, 0xabe98068), RAPIDJSON_UINT64_C2(0x9f4f2726, 0x179a2245), + RAPIDJSON_UINT64_C2(0xed63a231, 0xd4c4fb27), RAPIDJSON_UINT64_C2(0xb0de6538, 0x8cc8ada8), + RAPIDJSON_UINT64_C2(0x83c7088e, 0x1aab65db), RAPIDJSON_UINT64_C2(0xc45d1df9, 0x42711d9a), + RAPIDJSON_UINT64_C2(0x924d692c, 0xa61be758), RAPIDJSON_UINT64_C2(0xda01ee64, 0x1a708dea), + RAPIDJSON_UINT64_C2(0xa26da399, 0x9aef774a), RAPIDJSON_UINT64_C2(0xf209787b, 0xb47d6b85), + RAPIDJSON_UINT64_C2(0xb454e4a1, 0x79dd1877), RAPIDJSON_UINT64_C2(0x865b8692, 0x5b9bc5c2), + RAPIDJSON_UINT64_C2(0xc83553c5, 0xc8965d3d), RAPIDJSON_UINT64_C2(0x952ab45c, 0xfa97a0b3), + RAPIDJSON_UINT64_C2(0xde469fbd, 0x99a05fe3), RAPIDJSON_UINT64_C2(0xa59bc234, 0xdb398c25), + RAPIDJSON_UINT64_C2(0xf6c69a72, 0xa3989f5c), RAPIDJSON_UINT64_C2(0xb7dcbf53, 0x54e9bece), + RAPIDJSON_UINT64_C2(0x88fcf317, 0xf22241e2), RAPIDJSON_UINT64_C2(0xcc20ce9b, 0xd35c78a5), + RAPIDJSON_UINT64_C2(0x98165af3, 0x7b2153df), RAPIDJSON_UINT64_C2(0xe2a0b5dc, 0x971f303a), + RAPIDJSON_UINT64_C2(0xa8d9d153, 0x5ce3b396), RAPIDJSON_UINT64_C2(0xfb9b7cd9, 0xa4a7443c), + RAPIDJSON_UINT64_C2(0xbb764c4c, 0xa7a44410), RAPIDJSON_UINT64_C2(0x8bab8eef, 0xb6409c1a), + RAPIDJSON_UINT64_C2(0xd01fef10, 0xa657842c), RAPIDJSON_UINT64_C2(0x9b10a4e5, 0xe9913129), + RAPIDJSON_UINT64_C2(0xe7109bfb, 0xa19c0c9d), RAPIDJSON_UINT64_C2(0xac2820d9, 0x623bf429), + RAPIDJSON_UINT64_C2(0x80444b5e, 0x7aa7cf85), RAPIDJSON_UINT64_C2(0xbf21e440, 0x03acdd2d), + RAPIDJSON_UINT64_C2(0x8e679c2f, 0x5e44ff8f), RAPIDJSON_UINT64_C2(0xd433179d, 0x9c8cb841), + RAPIDJSON_UINT64_C2(0x9e19db92, 0xb4e31ba9), RAPIDJSON_UINT64_C2(0xeb96bf6e, 0xbadf77d9), + RAPIDJSON_UINT64_C2(0xaf87023b, 0x9bf0ee6b) + }; + static const int16_t kCachedPowers_E[] = { + -1220, -1193, -1166, -1140, -1113, -1087, -1060, -1034, -1007, -980, + -954, -927, -901, -874, -847, -821, -794, -768, -741, -715, + -688, -661, -635, -608, -582, -555, -529, -502, -475, -449, + -422, -396, -369, -343, -316, -289, -263, -236, -210, -183, + -157, -130, -103, -77, -50, -24, 3, 30, 56, 83, + 109, 136, 162, 189, 216, 242, 269, 295, 322, 348, + 375, 402, 428, 455, 481, 508, 534, 561, 588, 614, + 641, 667, 694, 720, 747, 774, 800, 827, 853, 880, + 907, 933, 960, 986, 1013, 1039, 1066 + }; + RAPIDJSON_ASSERT(index < 87); + return DiyFp(kCachedPowers_F[index], kCachedPowers_E[index]); +} + +inline DiyFp GetCachedPower(int e, int* K) { + + //int k = static_cast<int>(ceil((-61 - e) * 0.30102999566398114)) + 374; + double dk = (-61 - e) * 0.30102999566398114 + 347; // dk must be positive, so can do ceiling in positive + int k = static_cast<int>(dk); + if (dk - k > 0.0) + k++; + + unsigned index = static_cast<unsigned>((k >> 3) + 1); + *K = -(-348 + static_cast<int>(index << 3)); // decimal exponent no need lookup table + + return GetCachedPowerByIndex(index); +} + +inline DiyFp GetCachedPower10(int exp, int *outExp) { + RAPIDJSON_ASSERT(exp >= -348); + unsigned index = static_cast<unsigned>(exp + 348) / 8u; + *outExp = -348 + static_cast<int>(index) * 8; + return GetCachedPowerByIndex(index); +} + +#ifdef __GNUC__ +RAPIDJSON_DIAG_POP +#endif + +#ifdef __clang__ +RAPIDJSON_DIAG_POP +RAPIDJSON_DIAG_OFF(padded) +#endif + +} // namespace internal +RAPIDJSON_NAMESPACE_END + +#endif // RAPIDJSON_DIYFP_H_ + +// End file:diyfp.h + + +// Begin file: pow10.h +// Tencent is pleased to support the open source community by making RapidJSON available. +// +// Copyright (C) 2015 THL A29 Limited, a Tencent company, and Milo Yip. All rights reserved. +// +// Licensed under the MIT License (the "License"); you may not use this file except +// in compliance with the License. You may obtain a copy of the License at +// +// http://opensource.org/licenses/MIT +// +// Unless required by applicable law or agreed to in writing, software distributed +// under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR +// CONDITIONS OF ANY KIND, either express or implied. See the License for the +// specific language governing permissions and limitations under the License. + +#ifndef RAPIDJSON_POW10_ +#define RAPIDJSON_POW10_ + + +// Begin file: ../rapidjson.h +// already included +// End file:../rapidjson.h + + +RAPIDJSON_NAMESPACE_BEGIN +namespace internal { + +//! Computes integer powers of 10 in double (10.0^n). +/*! This function uses lookup table for fast and accurate results. + \param n non-negative exponent. Must <= 308. + \return 10.0^n +*/ +inline double Pow10(int n) { + static const double e[] = { // 1e-0...1e308: 309 * 8 bytes = 2472 bytes + 1e+0, + 1e+1, 1e+2, 1e+3, 1e+4, 1e+5, 1e+6, 1e+7, 1e+8, 1e+9, 1e+10, 1e+11, 1e+12, 1e+13, 1e+14, 1e+15, 1e+16, 1e+17, 1e+18, 1e+19, 1e+20, + 1e+21, 1e+22, 1e+23, 1e+24, 1e+25, 1e+26, 1e+27, 1e+28, 1e+29, 1e+30, 1e+31, 1e+32, 1e+33, 1e+34, 1e+35, 1e+36, 1e+37, 1e+38, 1e+39, 1e+40, + 1e+41, 1e+42, 1e+43, 1e+44, 1e+45, 1e+46, 1e+47, 1e+48, 1e+49, 1e+50, 1e+51, 1e+52, 1e+53, 1e+54, 1e+55, 1e+56, 1e+57, 1e+58, 1e+59, 1e+60, + 1e+61, 1e+62, 1e+63, 1e+64, 1e+65, 1e+66, 1e+67, 1e+68, 1e+69, 1e+70, 1e+71, 1e+72, 1e+73, 1e+74, 1e+75, 1e+76, 1e+77, 1e+78, 1e+79, 1e+80, + 1e+81, 1e+82, 1e+83, 1e+84, 1e+85, 1e+86, 1e+87, 1e+88, 1e+89, 1e+90, 1e+91, 1e+92, 1e+93, 1e+94, 1e+95, 1e+96, 1e+97, 1e+98, 1e+99, 1e+100, + 1e+101,1e+102,1e+103,1e+104,1e+105,1e+106,1e+107,1e+108,1e+109,1e+110,1e+111,1e+112,1e+113,1e+114,1e+115,1e+116,1e+117,1e+118,1e+119,1e+120, + 1e+121,1e+122,1e+123,1e+124,1e+125,1e+126,1e+127,1e+128,1e+129,1e+130,1e+131,1e+132,1e+133,1e+134,1e+135,1e+136,1e+137,1e+138,1e+139,1e+140, + 1e+141,1e+142,1e+143,1e+144,1e+145,1e+146,1e+147,1e+148,1e+149,1e+150,1e+151,1e+152,1e+153,1e+154,1e+155,1e+156,1e+157,1e+158,1e+159,1e+160, + 1e+161,1e+162,1e+163,1e+164,1e+165,1e+166,1e+167,1e+168,1e+169,1e+170,1e+171,1e+172,1e+173,1e+174,1e+175,1e+176,1e+177,1e+178,1e+179,1e+180, + 1e+181,1e+182,1e+183,1e+184,1e+185,1e+186,1e+187,1e+188,1e+189,1e+190,1e+191,1e+192,1e+193,1e+194,1e+195,1e+196,1e+197,1e+198,1e+199,1e+200, + 1e+201,1e+202,1e+203,1e+204,1e+205,1e+206,1e+207,1e+208,1e+209,1e+210,1e+211,1e+212,1e+213,1e+214,1e+215,1e+216,1e+217,1e+218,1e+219,1e+220, + 1e+221,1e+222,1e+223,1e+224,1e+225,1e+226,1e+227,1e+228,1e+229,1e+230,1e+231,1e+232,1e+233,1e+234,1e+235,1e+236,1e+237,1e+238,1e+239,1e+240, + 1e+241,1e+242,1e+243,1e+244,1e+245,1e+246,1e+247,1e+248,1e+249,1e+250,1e+251,1e+252,1e+253,1e+254,1e+255,1e+256,1e+257,1e+258,1e+259,1e+260, + 1e+261,1e+262,1e+263,1e+264,1e+265,1e+266,1e+267,1e+268,1e+269,1e+270,1e+271,1e+272,1e+273,1e+274,1e+275,1e+276,1e+277,1e+278,1e+279,1e+280, + 1e+281,1e+282,1e+283,1e+284,1e+285,1e+286,1e+287,1e+288,1e+289,1e+290,1e+291,1e+292,1e+293,1e+294,1e+295,1e+296,1e+297,1e+298,1e+299,1e+300, + 1e+301,1e+302,1e+303,1e+304,1e+305,1e+306,1e+307,1e+308 + }; + RAPIDJSON_ASSERT(n >= 0 && n <= 308); + return e[n]; +} + +} // namespace internal +RAPIDJSON_NAMESPACE_END + +#endif // RAPIDJSON_POW10_ + +// End file:pow10.h + +#include <climits> +#include <limits> + +RAPIDJSON_NAMESPACE_BEGIN +namespace internal { + +inline double FastPath(double significand, int exp) { + if (exp < -308) + return 0.0; + else if (exp >= 0) + return significand * internal::Pow10(exp); + else + return significand / internal::Pow10(-exp); +} + +inline double StrtodNormalPrecision(double d, int p) { + if (p < -308) { + // Prevent expSum < -308, making Pow10(p) = 0 + d = FastPath(d, -308); + d = FastPath(d, p + 308); + } + else + d = FastPath(d, p); + return d; +} + +template <typename T> +inline T Min3(T a, T b, T c) { + T m = a; + if (m > b) m = b; + if (m > c) m = c; + return m; +} + +inline int CheckWithinHalfULP(double b, const BigInteger& d, int dExp) { + const Double db(b); + const uint64_t bInt = db.IntegerSignificand(); + const int bExp = db.IntegerExponent(); + const int hExp = bExp - 1; + + int dS_Exp2 = 0, dS_Exp5 = 0, bS_Exp2 = 0, bS_Exp5 = 0, hS_Exp2 = 0, hS_Exp5 = 0; + + // Adjust for decimal exponent + if (dExp >= 0) { + dS_Exp2 += dExp; + dS_Exp5 += dExp; + } + else { + bS_Exp2 -= dExp; + bS_Exp5 -= dExp; + hS_Exp2 -= dExp; + hS_Exp5 -= dExp; + } + + // Adjust for binary exponent + if (bExp >= 0) + bS_Exp2 += bExp; + else { + dS_Exp2 -= bExp; + hS_Exp2 -= bExp; + } + + // Adjust for half ulp exponent + if (hExp >= 0) + hS_Exp2 += hExp; + else { + dS_Exp2 -= hExp; + bS_Exp2 -= hExp; + } + + // Remove common power of two factor from all three scaled values + int common_Exp2 = Min3(dS_Exp2, bS_Exp2, hS_Exp2); + dS_Exp2 -= common_Exp2; + bS_Exp2 -= common_Exp2; + hS_Exp2 -= common_Exp2; + + BigInteger dS = d; + dS.MultiplyPow5(static_cast<unsigned>(dS_Exp5)) <<= static_cast<unsigned>(dS_Exp2); + + BigInteger bS(bInt); + bS.MultiplyPow5(static_cast<unsigned>(bS_Exp5)) <<= static_cast<unsigned>(bS_Exp2); + + BigInteger hS(1); + hS.MultiplyPow5(static_cast<unsigned>(hS_Exp5)) <<= static_cast<unsigned>(hS_Exp2); + + BigInteger delta(0); + dS.Difference(bS, &delta); + + return delta.Compare(hS); +} + +inline bool StrtodFast(double d, int p, double* result) { + // Use fast path for string-to-double conversion if possible + // see http://www.exploringbinary.com/fast-path-decimal-to-floating-point-conversion/ + if (p > 22 && p < 22 + 16) { + // Fast Path Cases In Disguise + d *= internal::Pow10(p - 22); + p = 22; + } + + if (p >= -22 && p <= 22 && d <= 9007199254740991.0) { // 2^53 - 1 + *result = FastPath(d, p); + return true; + } + else + return false; +} + +// Compute an approximation and see if it is within 1/2 ULP +inline bool StrtodDiyFp(const char* decimals, int dLen, int dExp, double* result) { + uint64_t significand = 0; + int i = 0; // 2^64 - 1 = 18446744073709551615, 1844674407370955161 = 0x1999999999999999 + for (; i < dLen; i++) { + if (significand > RAPIDJSON_UINT64_C2(0x19999999, 0x99999999) || + (significand == RAPIDJSON_UINT64_C2(0x19999999, 0x99999999) && decimals[i] > '5')) + break; + significand = significand * 10u + static_cast<unsigned>(decimals[i] - '0'); + } + + if (i < dLen && decimals[i] >= '5') // Rounding + significand++; + + int remaining = dLen - i; + const int kUlpShift = 3; + const int kUlp = 1 << kUlpShift; + int64_t error = (remaining == 0) ? 0 : kUlp / 2; + + DiyFp v(significand, 0); + v = v.Normalize(); + error <<= -v.e; + + dExp += remaining; + + int actualExp; + DiyFp cachedPower = GetCachedPower10(dExp, &actualExp); + if (actualExp != dExp) { + static const DiyFp kPow10[] = { + DiyFp(RAPIDJSON_UINT64_C2(0xa0000000, 0x00000000), -60), // 10^1 + DiyFp(RAPIDJSON_UINT64_C2(0xc8000000, 0x00000000), -57), // 10^2 + DiyFp(RAPIDJSON_UINT64_C2(0xfa000000, 0x00000000), -54), // 10^3 + DiyFp(RAPIDJSON_UINT64_C2(0x9c400000, 0x00000000), -50), // 10^4 + DiyFp(RAPIDJSON_UINT64_C2(0xc3500000, 0x00000000), -47), // 10^5 + DiyFp(RAPIDJSON_UINT64_C2(0xf4240000, 0x00000000), -44), // 10^6 + DiyFp(RAPIDJSON_UINT64_C2(0x98968000, 0x00000000), -40) // 10^7 + }; + int adjustment = dExp - actualExp; + RAPIDJSON_ASSERT(adjustment >= 1 && adjustment < 8); + v = v * kPow10[adjustment - 1]; + if (dLen + adjustment > 19) // has more digits than decimal digits in 64-bit + error += kUlp / 2; + } + + v = v * cachedPower; + + error += kUlp + (error == 0 ? 0 : 1); + + const int oldExp = v.e; + v = v.Normalize(); + error <<= oldExp - v.e; + + const int effectiveSignificandSize = Double::EffectiveSignificandSize(64 + v.e); + int precisionSize = 64 - effectiveSignificandSize; + if (precisionSize + kUlpShift >= 64) { + int scaleExp = (precisionSize + kUlpShift) - 63; + v.f >>= scaleExp; + v.e += scaleExp; + error = (error >> scaleExp) + 1 + kUlp; + precisionSize -= scaleExp; + } + + DiyFp rounded(v.f >> precisionSize, v.e + precisionSize); + const uint64_t precisionBits = (v.f & ((uint64_t(1) << precisionSize) - 1)) * kUlp; + const uint64_t halfWay = (uint64_t(1) << (precisionSize - 1)) * kUlp; + if (precisionBits >= halfWay + static_cast<unsigned>(error)) { + rounded.f++; + if (rounded.f & (DiyFp::kDpHiddenBit << 1)) { // rounding overflows mantissa (issue #340) + rounded.f >>= 1; + rounded.e++; + } + } + + *result = rounded.ToDouble(); + + return halfWay - static_cast<unsigned>(error) >= precisionBits || precisionBits >= halfWay + static_cast<unsigned>(error); +} + +inline double StrtodBigInteger(double approx, const char* decimals, int dLen, int dExp) { + RAPIDJSON_ASSERT(dLen >= 0); + const BigInteger dInt(decimals, static_cast<unsigned>(dLen)); + Double a(approx); + int cmp = CheckWithinHalfULP(a.Value(), dInt, dExp); + if (cmp < 0) + return a.Value(); // within half ULP + else if (cmp == 0) { + // Round towards even + if (a.Significand() & 1) + return a.NextPositiveDouble(); + else + return a.Value(); + } + else // adjustment + return a.NextPositiveDouble(); +} + +inline double StrtodFullPrecision(double d, int p, const char* decimals, size_t length, size_t decimalPosition, int exp) { + RAPIDJSON_ASSERT(d >= 0.0); + RAPIDJSON_ASSERT(length >= 1); + + double result = 0.0; + if (StrtodFast(d, p, &result)) + return result; + + RAPIDJSON_ASSERT(length <= INT_MAX); + int dLen = static_cast<int>(length); + + RAPIDJSON_ASSERT(length >= decimalPosition); + RAPIDJSON_ASSERT(length - decimalPosition <= INT_MAX); + int dExpAdjust = static_cast<int>(length - decimalPosition); + + RAPIDJSON_ASSERT(exp >= INT_MIN + dExpAdjust); + int dExp = exp - dExpAdjust; + + // Make sure length+dExp does not overflow + RAPIDJSON_ASSERT(dExp <= INT_MAX - dLen); + + // Trim leading zeros + while (dLen > 0 && *decimals == '0') { + dLen--; + decimals++; + } + + // Trim trailing zeros + while (dLen > 0 && decimals[dLen - 1] == '0') { + dLen--; + dExp++; + } + + if (dLen == 0) { // Buffer only contains zeros. + return 0.0; + } + + // Trim right-most digits + const int kMaxDecimalDigit = 767 + 1; + if (dLen > kMaxDecimalDigit) { + dExp += dLen - kMaxDecimalDigit; + dLen = kMaxDecimalDigit; + } + + // If too small, underflow to zero. + // Any x <= 10^-324 is interpreted as zero. + if (dLen + dExp <= -324) + return 0.0; + + // If too large, overflow to infinity. + // Any x >= 10^309 is interpreted as +infinity. + if (dLen + dExp > 309) + return std::numeric_limits<double>::infinity(); + + if (StrtodDiyFp(decimals, dLen, dExp, &result)) + return result; + + // Use approximation from StrtodDiyFp and make adjustment with BigInteger comparison + return StrtodBigInteger(result, decimals, dLen, dExp); +} + +} // namespace internal +RAPIDJSON_NAMESPACE_END + +#endif // RAPIDJSON_STRTOD_ + +// End file:internal/strtod.h + +#include <limits> + +#if defined(RAPIDJSON_SIMD) && defined(_MSC_VER) +#include <intrin.h> +#pragma intrinsic(_BitScanForward) +#endif +#ifdef RAPIDJSON_SSE42 +#include <nmmintrin.h> +#elif defined(RAPIDJSON_SSE2) +#include <emmintrin.h> +#elif defined(RAPIDJSON_NEON) +#include <arm_neon.h> +#endif + +#ifdef __clang__ +RAPIDJSON_DIAG_PUSH +RAPIDJSON_DIAG_OFF(old-style-cast) +RAPIDJSON_DIAG_OFF(padded) +RAPIDJSON_DIAG_OFF(switch-enum) +#elif defined(_MSC_VER) +RAPIDJSON_DIAG_PUSH +RAPIDJSON_DIAG_OFF(4127) // conditional expression is constant +RAPIDJSON_DIAG_OFF(4702) // unreachable code +#endif + +#ifdef __GNUC__ +RAPIDJSON_DIAG_PUSH +RAPIDJSON_DIAG_OFF(effc++) +#endif + +//!@cond RAPIDJSON_HIDDEN_FROM_DOXYGEN +#define RAPIDJSON_NOTHING /* deliberately empty */ +#ifndef RAPIDJSON_PARSE_ERROR_EARLY_RETURN +#define RAPIDJSON_PARSE_ERROR_EARLY_RETURN(value) \ + RAPIDJSON_MULTILINEMACRO_BEGIN \ + if (RAPIDJSON_UNLIKELY(HasParseError())) { return value; } \ + RAPIDJSON_MULTILINEMACRO_END +#endif +#define RAPIDJSON_PARSE_ERROR_EARLY_RETURN_VOID \ + RAPIDJSON_PARSE_ERROR_EARLY_RETURN(RAPIDJSON_NOTHING) +//!@endcond + +/*! \def RAPIDJSON_PARSE_ERROR_NORETURN + \ingroup RAPIDJSON_ERRORS + \brief Macro to indicate a parse error. + \param parseErrorCode \ref rapidjson::ParseErrorCode of the error + \param offset position of the error in JSON input (\c size_t) + + This macros can be used as a customization point for the internal + error handling mechanism of RapidJSON. + + A common usage model is to throw an exception instead of requiring the + caller to explicitly check the \ref rapidjson::GenericReader::Parse's + return value: + + \code + #define RAPIDJSON_PARSE_ERROR_NORETURN(parseErrorCode,offset) \ + throw ParseException(parseErrorCode, #parseErrorCode, offset) + + #include <stdexcept> // std::runtime_error + #include "rapidjson/error/error.h" // rapidjson::ParseResult + + struct ParseException : std::runtime_error, rapidjson::ParseResult { + ParseException(rapidjson::ParseErrorCode code, const char* msg, size_t offset) + : std::runtime_error(msg), ParseResult(code, offset) {} + }; + + #include "rapidjson/reader.h" + \endcode + + \see RAPIDJSON_PARSE_ERROR, rapidjson::GenericReader::Parse + */ +#ifndef RAPIDJSON_PARSE_ERROR_NORETURN +#define RAPIDJSON_PARSE_ERROR_NORETURN(parseErrorCode, offset) \ + RAPIDJSON_MULTILINEMACRO_BEGIN \ + RAPIDJSON_ASSERT(!HasParseError()); /* Error can only be assigned once */ \ + SetParseError(parseErrorCode, offset); \ + RAPIDJSON_MULTILINEMACRO_END +#endif + +/*! \def RAPIDJSON_PARSE_ERROR + \ingroup RAPIDJSON_ERRORS + \brief (Internal) macro to indicate and handle a parse error. + \param parseErrorCode \ref rapidjson::ParseErrorCode of the error + \param offset position of the error in JSON input (\c size_t) + + Invokes RAPIDJSON_PARSE_ERROR_NORETURN and stops the parsing. + + \see RAPIDJSON_PARSE_ERROR_NORETURN + \hideinitializer + */ +#ifndef RAPIDJSON_PARSE_ERROR +#define RAPIDJSON_PARSE_ERROR(parseErrorCode, offset) \ + RAPIDJSON_MULTILINEMACRO_BEGIN \ + RAPIDJSON_PARSE_ERROR_NORETURN(parseErrorCode, offset); \ + RAPIDJSON_PARSE_ERROR_EARLY_RETURN_VOID; \ + RAPIDJSON_MULTILINEMACRO_END +#endif + + +// Begin file: error/error.h +// Tencent is pleased to support the open source community by making RapidJSON available. +// +// Copyright (C) 2015 THL A29 Limited, a Tencent company, and Milo Yip. All rights reserved. +// +// Licensed under the MIT License (the "License"); you may not use this file except +// in compliance with the License. You may obtain a copy of the License at +// +// http://opensource.org/licenses/MIT +// +// Unless required by applicable law or agreed to in writing, software distributed +// under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR +// CONDITIONS OF ANY KIND, either express or implied. See the License for the +// specific language governing permissions and limitations under the License. + +#ifndef RAPIDJSON_ERROR_ERROR_H_ +#define RAPIDJSON_ERROR_ERROR_H_ + + +// Begin file: ../rapidjson.h +// already included +// End file:../rapidjson.h + + +#ifdef __clang__ +RAPIDJSON_DIAG_PUSH +RAPIDJSON_DIAG_OFF(padded) +#endif + +/*! \file error.h */ + +/*! \defgroup RAPIDJSON_ERRORS RapidJSON error handling */ + +/////////////////////////////////////////////////////////////////////////////// +// RAPIDJSON_ERROR_CHARTYPE + +//! Character type of error messages. +/*! \ingroup RAPIDJSON_ERRORS + The default character type is \c char. + On Windows, user can define this macro as \c TCHAR for supporting both + unicode/non-unicode settings. +*/ +#ifndef RAPIDJSON_ERROR_CHARTYPE +#define RAPIDJSON_ERROR_CHARTYPE char +#endif + +/////////////////////////////////////////////////////////////////////////////// +// RAPIDJSON_ERROR_STRING + +//! Macro for converting string literial to \ref RAPIDJSON_ERROR_CHARTYPE[]. +/*! \ingroup RAPIDJSON_ERRORS + By default this conversion macro does nothing. + On Windows, user can define this macro as \c _T(x) for supporting both + unicode/non-unicode settings. +*/ +#ifndef RAPIDJSON_ERROR_STRING +#define RAPIDJSON_ERROR_STRING(x) x +#endif + +RAPIDJSON_NAMESPACE_BEGIN + +/////////////////////////////////////////////////////////////////////////////// +// ParseErrorCode + +//! Error code of parsing. +/*! \ingroup RAPIDJSON_ERRORS + \see GenericReader::Parse, GenericReader::GetParseErrorCode +*/ +enum ParseErrorCode { + kParseErrorNone = 0, //!< No error. + + kParseErrorDocumentEmpty, //!< The document is empty. + kParseErrorDocumentRootNotSingular, //!< The document root must not follow by other values. + + kParseErrorValueInvalid, //!< Invalid value. + + kParseErrorObjectMissName, //!< Missing a name for object member. + kParseErrorObjectMissColon, //!< Missing a colon after a name of object member. + kParseErrorObjectMissCommaOrCurlyBracket, //!< Missing a comma or '}' after an object member. + + kParseErrorArrayMissCommaOrSquareBracket, //!< Missing a comma or ']' after an array element. + + kParseErrorStringUnicodeEscapeInvalidHex, //!< Incorrect hex digit after \\u escape in string. + kParseErrorStringUnicodeSurrogateInvalid, //!< The surrogate pair in string is invalid. + kParseErrorStringEscapeInvalid, //!< Invalid escape character in string. + kParseErrorStringMissQuotationMark, //!< Missing a closing quotation mark in string. + kParseErrorStringInvalidEncoding, //!< Invalid encoding in string. + + kParseErrorNumberTooBig, //!< Number too big to be stored in double. + kParseErrorNumberMissFraction, //!< Miss fraction part in number. + kParseErrorNumberMissExponent, //!< Miss exponent in number. + + kParseErrorTermination, //!< Parsing was terminated. + kParseErrorUnspecificSyntaxError //!< Unspecific syntax error. +}; + +//! Result of parsing (wraps ParseErrorCode) +/*! + \ingroup RAPIDJSON_ERRORS + \code + Document doc; + ParseResult ok = doc.Parse("[42]"); + if (!ok) { + fprintf(stderr, "JSON parse error: %s (%u)", + GetParseError_En(ok.Code()), ok.Offset()); + exit(EXIT_FAILURE); + } + \endcode + \see GenericReader::Parse, GenericDocument::Parse +*/ +struct ParseResult { + //!! Unspecified boolean type + typedef bool (ParseResult::*BooleanType)() const; +public: + //! Default constructor, no error. + ParseResult() : code_(kParseErrorNone), offset_(0) {} + //! Constructor to set an error. + ParseResult(ParseErrorCode code, size_t offset) : code_(code), offset_(offset) {} + + //! Get the error code. + ParseErrorCode Code() const { return code_; } + //! Get the error offset, if \ref IsError(), 0 otherwise. + size_t Offset() const { return offset_; } + + //! Explicit conversion to \c bool, returns \c true, iff !\ref IsError(). + operator BooleanType() const { return !IsError() ? &ParseResult::IsError : NULL; } + //! Whether the result is an error. + bool IsError() const { return code_ != kParseErrorNone; } + + bool operator==(const ParseResult& that) const { return code_ == that.code_; } + bool operator==(ParseErrorCode code) const { return code_ == code; } + friend bool operator==(ParseErrorCode code, const ParseResult & err) { return code == err.code_; } + + bool operator!=(const ParseResult& that) const { return !(*this == that); } + bool operator!=(ParseErrorCode code) const { return !(*this == code); } + friend bool operator!=(ParseErrorCode code, const ParseResult & err) { return err != code; } + + //! Reset error code. + void Clear() { Set(kParseErrorNone); } + //! Update error code and offset. + void Set(ParseErrorCode code, size_t offset = 0) { code_ = code; offset_ = offset; } + +private: + ParseErrorCode code_; + size_t offset_; +}; + +//! Function pointer type of GetParseError(). +/*! \ingroup RAPIDJSON_ERRORS + + This is the prototype for \c GetParseError_X(), where \c X is a locale. + User can dynamically change locale in runtime, e.g.: +\code + GetParseErrorFunc GetParseError = GetParseError_En; // or whatever + const RAPIDJSON_ERROR_CHARTYPE* s = GetParseError(document.GetParseErrorCode()); +\endcode +*/ +typedef const RAPIDJSON_ERROR_CHARTYPE* (*GetParseErrorFunc)(ParseErrorCode); + +RAPIDJSON_NAMESPACE_END + +#ifdef __clang__ +RAPIDJSON_DIAG_POP +#endif + +#endif // RAPIDJSON_ERROR_ERROR_H_ + +// End file:error/error.h + + +RAPIDJSON_NAMESPACE_BEGIN + +/////////////////////////////////////////////////////////////////////////////// +// ParseFlag + +/*! \def RAPIDJSON_PARSE_DEFAULT_FLAGS + \ingroup RAPIDJSON_CONFIG + \brief User-defined kParseDefaultFlags definition. + + User can define this as any \c ParseFlag combinations. +*/ +#ifndef RAPIDJSON_PARSE_DEFAULT_FLAGS +#define RAPIDJSON_PARSE_DEFAULT_FLAGS kParseNoFlags +#endif + +//! Combination of parseFlags +/*! \see Reader::Parse, Document::Parse, Document::ParseInsitu, Document::ParseStream + */ +enum ParseFlag { + kParseNoFlags = 0, //!< No flags are set. + kParseInsituFlag = 1, //!< In-situ(destructive) parsing. + kParseValidateEncodingFlag = 2, //!< Validate encoding of JSON strings. + kParseIterativeFlag = 4, //!< Iterative(constant complexity in terms of function call stack size) parsing. + kParseStopWhenDoneFlag = 8, //!< After parsing a complete JSON root from stream, stop further processing the rest of stream. When this flag is used, parser will not generate kParseErrorDocumentRootNotSingular error. + kParseFullPrecisionFlag = 16, //!< Parse number in full precision (but slower). + kParseCommentsFlag = 32, //!< Allow one-line (//) and multi-line (/**/) comments. + kParseNumbersAsStringsFlag = 64, //!< Parse all numbers (ints/doubles) as strings. + kParseTrailingCommasFlag = 128, //!< Allow trailing commas at the end of objects and arrays. + kParseNanAndInfFlag = 256, //!< Allow parsing NaN, Inf, Infinity, -Inf and -Infinity as doubles. + kParseDefaultFlags = RAPIDJSON_PARSE_DEFAULT_FLAGS //!< Default parse flags. Can be customized by defining RAPIDJSON_PARSE_DEFAULT_FLAGS +}; + +/////////////////////////////////////////////////////////////////////////////// +// Handler + +/*! \class rapidjson::Handler + \brief Concept for receiving events from GenericReader upon parsing. + The functions return true if no error occurs. If they return false, + the event publisher should terminate the process. +\code +concept Handler { + typename Ch; + + bool Null(); + bool Bool(bool b); + bool Int(int i); + bool Uint(unsigned i); + bool Int64(int64_t i); + bool Uint64(uint64_t i); + bool Double(double d); + /// enabled via kParseNumbersAsStringsFlag, string is not null-terminated (use length) + bool RawNumber(const Ch* str, SizeType length, bool copy); + bool String(const Ch* str, SizeType length, bool copy); + bool StartObject(); + bool Key(const Ch* str, SizeType length, bool copy); + bool EndObject(SizeType memberCount); + bool StartArray(); + bool EndArray(SizeType elementCount); +}; +\endcode +*/ +/////////////////////////////////////////////////////////////////////////////// +// BaseReaderHandler + +//! Default implementation of Handler. +/*! This can be used as base class of any reader handler. + \note implements Handler concept +*/ +template<typename Encoding = UTF8<>, typename Derived = void> +struct BaseReaderHandler { + typedef typename Encoding::Ch Ch; + + typedef typename internal::SelectIf<internal::IsSame<Derived, void>, BaseReaderHandler, Derived>::Type Override; + + bool Default() { return true; } + bool Null() { return static_cast<Override&>(*this).Default(); } + bool Bool(bool) { return static_cast<Override&>(*this).Default(); } + bool Int(int) { return static_cast<Override&>(*this).Default(); } + bool Uint(unsigned) { return static_cast<Override&>(*this).Default(); } + bool Int64(int64_t) { return static_cast<Override&>(*this).Default(); } + bool Uint64(uint64_t) { return static_cast<Override&>(*this).Default(); } + bool Double(double) { return static_cast<Override&>(*this).Default(); } + /// enabled via kParseNumbersAsStringsFlag, string is not null-terminated (use length) + bool RawNumber(const Ch* str, SizeType len, bool copy) { return static_cast<Override&>(*this).String(str, len, copy); } + bool String(const Ch*, SizeType, bool) { return static_cast<Override&>(*this).Default(); } + bool StartObject() { return static_cast<Override&>(*this).Default(); } + bool Key(const Ch* str, SizeType len, bool copy) { return static_cast<Override&>(*this).String(str, len, copy); } + bool EndObject(SizeType) { return static_cast<Override&>(*this).Default(); } + bool StartArray() { return static_cast<Override&>(*this).Default(); } + bool EndArray(SizeType) { return static_cast<Override&>(*this).Default(); } +}; + +/////////////////////////////////////////////////////////////////////////////// +// StreamLocalCopy + +namespace internal { + +template<typename Stream, int = StreamTraits<Stream>::copyOptimization> +class StreamLocalCopy; + +//! Do copy optimization. +template<typename Stream> +class StreamLocalCopy<Stream, 1> { +public: + StreamLocalCopy(Stream& original) : s(original), original_(original) {} + ~StreamLocalCopy() { original_ = s; } + + Stream s; + +private: + StreamLocalCopy& operator=(const StreamLocalCopy&) /* = delete */; + + Stream& original_; +}; + +//! Keep reference. +template<typename Stream> +class StreamLocalCopy<Stream, 0> { +public: + StreamLocalCopy(Stream& original) : s(original) {} + + Stream& s; + +private: + StreamLocalCopy& operator=(const StreamLocalCopy&) /* = delete */; +}; + +} // namespace internal + +/////////////////////////////////////////////////////////////////////////////// +// SkipWhitespace + +//! Skip the JSON white spaces in a stream. +/*! \param is A input stream for skipping white spaces. + \note This function has SSE2/SSE4.2 specialization. +*/ +template<typename InputStream> +void SkipWhitespace(InputStream& is) { + internal::StreamLocalCopy<InputStream> copy(is); + InputStream& s(copy.s); + + typename InputStream::Ch c; + while ((c = s.Peek()) == ' ' || c == '\n' || c == '\r' || c == '\t') + s.Take(); +} + +inline const char* SkipWhitespace(const char* p, const char* end) { + while (p != end && (*p == ' ' || *p == '\n' || *p == '\r' || *p == '\t')) + ++p; + return p; +} + +#ifdef RAPIDJSON_SSE42 +//! Skip whitespace with SSE 4.2 pcmpistrm instruction, testing 16 8-byte characters at once. +inline const char *SkipWhitespace_SIMD(const char* p) { + // Fast return for single non-whitespace + if (*p == ' ' || *p == '\n' || *p == '\r' || *p == '\t') + ++p; + else + return p; + + // 16-byte align to the next boundary + const char* nextAligned = reinterpret_cast<const char*>((reinterpret_cast<size_t>(p) + 15) & static_cast<size_t>(~15)); + while (p != nextAligned) + if (*p == ' ' || *p == '\n' || *p == '\r' || *p == '\t') + ++p; + else + return p; + + // The rest of string using SIMD + static const char whitespace[16] = " \n\r\t"; + const __m128i w = _mm_loadu_si128(reinterpret_cast<const __m128i *>(&whitespace[0])); + + for (;; p += 16) { + const __m128i s = _mm_load_si128(reinterpret_cast<const __m128i *>(p)); + const int r = _mm_cmpistri(w, s, _SIDD_UBYTE_OPS | _SIDD_CMP_EQUAL_ANY | _SIDD_LEAST_SIGNIFICANT | _SIDD_NEGATIVE_POLARITY); + if (r != 16) // some of characters is non-whitespace + return p + r; + } +} + +inline const char *SkipWhitespace_SIMD(const char* p, const char* end) { + // Fast return for single non-whitespace + if (p != end && (*p == ' ' || *p == '\n' || *p == '\r' || *p == '\t')) + ++p; + else + return p; + + // The middle of string using SIMD + static const char whitespace[16] = " \n\r\t"; + const __m128i w = _mm_loadu_si128(reinterpret_cast<const __m128i *>(&whitespace[0])); + + for (; p <= end - 16; p += 16) { + const __m128i s = _mm_loadu_si128(reinterpret_cast<const __m128i *>(p)); + const int r = _mm_cmpistri(w, s, _SIDD_UBYTE_OPS | _SIDD_CMP_EQUAL_ANY | _SIDD_LEAST_SIGNIFICANT | _SIDD_NEGATIVE_POLARITY); + if (r != 16) // some of characters is non-whitespace + return p + r; + } + + return SkipWhitespace(p, end); +} + +#elif defined(RAPIDJSON_SSE2) + +//! Skip whitespace with SSE2 instructions, testing 16 8-byte characters at once. +inline const char *SkipWhitespace_SIMD(const char* p) { + // Fast return for single non-whitespace + if (*p == ' ' || *p == '\n' || *p == '\r' || *p == '\t') + ++p; + else + return p; + + // 16-byte align to the next boundary + const char* nextAligned = reinterpret_cast<const char*>((reinterpret_cast<size_t>(p) + 15) & static_cast<size_t>(~15)); + while (p != nextAligned) + if (*p == ' ' || *p == '\n' || *p == '\r' || *p == '\t') + ++p; + else + return p; + + // The rest of string + #define C16(c) { c, c, c, c, c, c, c, c, c, c, c, c, c, c, c, c } + static const char whitespaces[4][16] = { C16(' '), C16('\n'), C16('\r'), C16('\t') }; + #undef C16 + + const __m128i w0 = _mm_loadu_si128(reinterpret_cast<const __m128i *>(&whitespaces[0][0])); + const __m128i w1 = _mm_loadu_si128(reinterpret_cast<const __m128i *>(&whitespaces[1][0])); + const __m128i w2 = _mm_loadu_si128(reinterpret_cast<const __m128i *>(&whitespaces[2][0])); + const __m128i w3 = _mm_loadu_si128(reinterpret_cast<const __m128i *>(&whitespaces[3][0])); + + for (;; p += 16) { + const __m128i s = _mm_load_si128(reinterpret_cast<const __m128i *>(p)); + __m128i x = _mm_cmpeq_epi8(s, w0); + x = _mm_or_si128(x, _mm_cmpeq_epi8(s, w1)); + x = _mm_or_si128(x, _mm_cmpeq_epi8(s, w2)); + x = _mm_or_si128(x, _mm_cmpeq_epi8(s, w3)); + unsigned short r = static_cast<unsigned short>(~_mm_movemask_epi8(x)); + if (r != 0) { // some of characters may be non-whitespace +#ifdef _MSC_VER // Find the index of first non-whitespace + unsigned long offset; + _BitScanForward(&offset, r); + return p + offset; +#else + return p + __builtin_ffs(r) - 1; +#endif + } + } +} + +inline const char *SkipWhitespace_SIMD(const char* p, const char* end) { + // Fast return for single non-whitespace + if (p != end && (*p == ' ' || *p == '\n' || *p == '\r' || *p == '\t')) + ++p; + else + return p; + + // The rest of string + #define C16(c) { c, c, c, c, c, c, c, c, c, c, c, c, c, c, c, c } + static const char whitespaces[4][16] = { C16(' '), C16('\n'), C16('\r'), C16('\t') }; + #undef C16 + + const __m128i w0 = _mm_loadu_si128(reinterpret_cast<const __m128i *>(&whitespaces[0][0])); + const __m128i w1 = _mm_loadu_si128(reinterpret_cast<const __m128i *>(&whitespaces[1][0])); + const __m128i w2 = _mm_loadu_si128(reinterpret_cast<const __m128i *>(&whitespaces[2][0])); + const __m128i w3 = _mm_loadu_si128(reinterpret_cast<const __m128i *>(&whitespaces[3][0])); + + for (; p <= end - 16; p += 16) { + const __m128i s = _mm_loadu_si128(reinterpret_cast<const __m128i *>(p)); + __m128i x = _mm_cmpeq_epi8(s, w0); + x = _mm_or_si128(x, _mm_cmpeq_epi8(s, w1)); + x = _mm_or_si128(x, _mm_cmpeq_epi8(s, w2)); + x = _mm_or_si128(x, _mm_cmpeq_epi8(s, w3)); + unsigned short r = static_cast<unsigned short>(~_mm_movemask_epi8(x)); + if (r != 0) { // some of characters may be non-whitespace +#ifdef _MSC_VER // Find the index of first non-whitespace + unsigned long offset; + _BitScanForward(&offset, r); + return p + offset; +#else + return p + __builtin_ffs(r) - 1; +#endif + } + } + + return SkipWhitespace(p, end); +} + +#elif defined(RAPIDJSON_NEON) + +//! Skip whitespace with ARM Neon instructions, testing 16 8-byte characters at once. +inline const char *SkipWhitespace_SIMD(const char* p) { + // Fast return for single non-whitespace + if (*p == ' ' || *p == '\n' || *p == '\r' || *p == '\t') + ++p; + else + return p; + + // 16-byte align to the next boundary + const char* nextAligned = reinterpret_cast<const char*>((reinterpret_cast<size_t>(p) + 15) & static_cast<size_t>(~15)); + while (p != nextAligned) + if (*p == ' ' || *p == '\n' || *p == '\r' || *p == '\t') + ++p; + else + return p; + + const uint8x16_t w0 = vmovq_n_u8(' '); + const uint8x16_t w1 = vmovq_n_u8('\n'); + const uint8x16_t w2 = vmovq_n_u8('\r'); + const uint8x16_t w3 = vmovq_n_u8('\t'); + + for (;; p += 16) { + const uint8x16_t s = vld1q_u8(reinterpret_cast<const uint8_t *>(p)); + uint8x16_t x = vceqq_u8(s, w0); + x = vorrq_u8(x, vceqq_u8(s, w1)); + x = vorrq_u8(x, vceqq_u8(s, w2)); + x = vorrq_u8(x, vceqq_u8(s, w3)); + + x = vmvnq_u8(x); // Negate + x = vrev64q_u8(x); // Rev in 64 + uint64_t low = vgetq_lane_u64(reinterpret_cast<uint64x2_t>(x), 0); // extract + uint64_t high = vgetq_lane_u64(reinterpret_cast<uint64x2_t>(x), 1); // extract + + if (low == 0) { + if (high != 0) { + int lz =__builtin_clzll(high);; + return p + 8 + (lz >> 3); + } + } else { + int lz = __builtin_clzll(low);; + return p + (lz >> 3); + } + } +} + +inline const char *SkipWhitespace_SIMD(const char* p, const char* end) { + // Fast return for single non-whitespace + if (p != end && (*p == ' ' || *p == '\n' || *p == '\r' || *p == '\t')) + ++p; + else + return p; + + const uint8x16_t w0 = vmovq_n_u8(' '); + const uint8x16_t w1 = vmovq_n_u8('\n'); + const uint8x16_t w2 = vmovq_n_u8('\r'); + const uint8x16_t w3 = vmovq_n_u8('\t'); + + for (; p <= end - 16; p += 16) { + const uint8x16_t s = vld1q_u8(reinterpret_cast<const uint8_t *>(p)); + uint8x16_t x = vceqq_u8(s, w0); + x = vorrq_u8(x, vceqq_u8(s, w1)); + x = vorrq_u8(x, vceqq_u8(s, w2)); + x = vorrq_u8(x, vceqq_u8(s, w3)); + + x = vmvnq_u8(x); // Negate + x = vrev64q_u8(x); // Rev in 64 + uint64_t low = vgetq_lane_u64(reinterpret_cast<uint64x2_t>(x), 0); // extract + uint64_t high = vgetq_lane_u64(reinterpret_cast<uint64x2_t>(x), 1); // extract + + if (low == 0) { + if (high != 0) { + int lz = __builtin_clzll(high); + return p + 8 + (lz >> 3); + } + } else { + int lz = __builtin_clzll(low); + return p + (lz >> 3); + } + } + + return SkipWhitespace(p, end); +} + +#endif // RAPIDJSON_NEON + +#ifdef RAPIDJSON_SIMD +//! Template function specialization for InsituStringStream +template<> inline void SkipWhitespace(InsituStringStream& is) { + is.src_ = const_cast<char*>(SkipWhitespace_SIMD(is.src_)); +} + +//! Template function specialization for StringStream +template<> inline void SkipWhitespace(StringStream& is) { + is.src_ = SkipWhitespace_SIMD(is.src_); +} + +template<> inline void SkipWhitespace(EncodedInputStream<UTF8<>, MemoryStream>& is) { + is.is_.src_ = SkipWhitespace_SIMD(is.is_.src_, is.is_.end_); +} +#endif // RAPIDJSON_SIMD + +/////////////////////////////////////////////////////////////////////////////// +// GenericReader + +//! SAX-style JSON parser. Use \ref Reader for UTF8 encoding and default allocator. +/*! GenericReader parses JSON text from a stream, and send events synchronously to an + object implementing Handler concept. + + It needs to allocate a stack for storing a single decoded string during + non-destructive parsing. + + For in-situ parsing, the decoded string is directly written to the source + text string, no temporary buffer is required. + + A GenericReader object can be reused for parsing multiple JSON text. + + \tparam SourceEncoding Encoding of the input stream. + \tparam TargetEncoding Encoding of the parse output. + \tparam StackAllocator Allocator type for stack. +*/ +template <typename SourceEncoding, typename TargetEncoding, typename StackAllocator = CrtAllocator> +class GenericReader { +public: + typedef typename SourceEncoding::Ch Ch; //!< SourceEncoding character type + + //! Constructor. + /*! \param stackAllocator Optional allocator for allocating stack memory. (Only use for non-destructive parsing) + \param stackCapacity stack capacity in bytes for storing a single decoded string. (Only use for non-destructive parsing) + */ + GenericReader(StackAllocator* stackAllocator = 0, size_t stackCapacity = kDefaultStackCapacity) : + stack_(stackAllocator, stackCapacity), parseResult_(), state_(IterativeParsingStartState) {} + + //! Parse JSON text. + /*! \tparam parseFlags Combination of \ref ParseFlag. + \tparam InputStream Type of input stream, implementing Stream concept. + \tparam Handler Type of handler, implementing Handler concept. + \param is Input stream to be parsed. + \param handler The handler to receive events. + \return Whether the parsing is successful. + */ + template <unsigned parseFlags, typename InputStream, typename Handler> + ParseResult Parse(InputStream& is, Handler& handler) { + if (parseFlags & kParseIterativeFlag) + return IterativeParse<parseFlags>(is, handler); + + parseResult_.Clear(); + + ClearStackOnExit scope(*this); + + SkipWhitespaceAndComments<parseFlags>(is); + RAPIDJSON_PARSE_ERROR_EARLY_RETURN(parseResult_); + + if (RAPIDJSON_UNLIKELY(is.Peek() == '\0')) { + RAPIDJSON_PARSE_ERROR_NORETURN(kParseErrorDocumentEmpty, is.Tell()); + RAPIDJSON_PARSE_ERROR_EARLY_RETURN(parseResult_); + } + else { + ParseValue<parseFlags>(is, handler); + RAPIDJSON_PARSE_ERROR_EARLY_RETURN(parseResult_); + + if (!(parseFlags & kParseStopWhenDoneFlag)) { + SkipWhitespaceAndComments<parseFlags>(is); + RAPIDJSON_PARSE_ERROR_EARLY_RETURN(parseResult_); + + if (RAPIDJSON_UNLIKELY(is.Peek() != '\0')) { + RAPIDJSON_PARSE_ERROR_NORETURN(kParseErrorDocumentRootNotSingular, is.Tell()); + RAPIDJSON_PARSE_ERROR_EARLY_RETURN(parseResult_); + } + } + } + + return parseResult_; + } + + //! Parse JSON text (with \ref kParseDefaultFlags) + /*! \tparam InputStream Type of input stream, implementing Stream concept + \tparam Handler Type of handler, implementing Handler concept. + \param is Input stream to be parsed. + \param handler The handler to receive events. + \return Whether the parsing is successful. + */ + template <typename InputStream, typename Handler> + ParseResult Parse(InputStream& is, Handler& handler) { + return Parse<kParseDefaultFlags>(is, handler); + } + + //! Initialize JSON text token-by-token parsing + /*! + */ + void IterativeParseInit() { + parseResult_.Clear(); + state_ = IterativeParsingStartState; + } + + //! Parse one token from JSON text + /*! \tparam InputStream Type of input stream, implementing Stream concept + \tparam Handler Type of handler, implementing Handler concept. + \param is Input stream to be parsed. + \param handler The handler to receive events. + \return Whether the parsing is successful. + */ + template <unsigned parseFlags, typename InputStream, typename Handler> + bool IterativeParseNext(InputStream& is, Handler& handler) { + while (RAPIDJSON_LIKELY(is.Peek() != '\0')) { + SkipWhitespaceAndComments<parseFlags>(is); + + Token t = Tokenize(is.Peek()); + IterativeParsingState n = Predict(state_, t); + IterativeParsingState d = Transit<parseFlags>(state_, t, n, is, handler); + + // If we've finished or hit an error... + if (RAPIDJSON_UNLIKELY(IsIterativeParsingCompleteState(d))) { + // Report errors. + if (d == IterativeParsingErrorState) { + HandleError(state_, is); + return false; + } + + // Transition to the finish state. + RAPIDJSON_ASSERT(d == IterativeParsingFinishState); + state_ = d; + + // If StopWhenDone is not set... + if (!(parseFlags & kParseStopWhenDoneFlag)) { + // ... and extra non-whitespace data is found... + SkipWhitespaceAndComments<parseFlags>(is); + if (is.Peek() != '\0') { + // ... this is considered an error. + HandleError(state_, is); + return false; + } + } + + // Success! We are done! + return true; + } + + // Transition to the new state. + state_ = d; + + // If we parsed anything other than a delimiter, we invoked the handler, so we can return true now. + if (!IsIterativeParsingDelimiterState(n)) + return true; + } + + // We reached the end of file. + stack_.Clear(); + + if (state_ != IterativeParsingFinishState) { + HandleError(state_, is); + return false; + } + + return true; + } + + //! Check if token-by-token parsing JSON text is complete + /*! \return Whether the JSON has been fully decoded. + */ + RAPIDJSON_FORCEINLINE bool IterativeParseComplete() const { + return IsIterativeParsingCompleteState(state_); + } + + //! Whether a parse error has occurred in the last parsing. + bool HasParseError() const { return parseResult_.IsError(); } + + //! Get the \ref ParseErrorCode of last parsing. + ParseErrorCode GetParseErrorCode() const { return parseResult_.Code(); } + + //! Get the position of last parsing error in input, 0 otherwise. + size_t GetErrorOffset() const { return parseResult_.Offset(); } + +protected: + void SetParseError(ParseErrorCode code, size_t offset) { parseResult_.Set(code, offset); } + +private: + // Prohibit copy constructor & assignment operator. + GenericReader(const GenericReader&); + GenericReader& operator=(const GenericReader&); + + void ClearStack() { stack_.Clear(); } + + // clear stack on any exit from ParseStream, e.g. due to exception + struct ClearStackOnExit { + explicit ClearStackOnExit(GenericReader& r) : r_(r) {} + ~ClearStackOnExit() { r_.ClearStack(); } + private: + GenericReader& r_; + ClearStackOnExit(const ClearStackOnExit&); + ClearStackOnExit& operator=(const ClearStackOnExit&); + }; + + template<unsigned parseFlags, typename InputStream> + void SkipWhitespaceAndComments(InputStream& is) { + SkipWhitespace(is); + + if (parseFlags & kParseCommentsFlag) { + while (RAPIDJSON_UNLIKELY(Consume(is, '/'))) { + if (Consume(is, '*')) { + while (true) { + if (RAPIDJSON_UNLIKELY(is.Peek() == '\0')) + RAPIDJSON_PARSE_ERROR(kParseErrorUnspecificSyntaxError, is.Tell()); + else if (Consume(is, '*')) { + if (Consume(is, '/')) + break; + } + else + is.Take(); + } + } + else if (RAPIDJSON_LIKELY(Consume(is, '/'))) + while (is.Peek() != '\0' && is.Take() != '\n') {} + else + RAPIDJSON_PARSE_ERROR(kParseErrorUnspecificSyntaxError, is.Tell()); + + SkipWhitespace(is); + } + } + } + + // Parse object: { string : value, ... } + template<unsigned parseFlags, typename InputStream, typename Handler> + void ParseObject(InputStream& is, Handler& handler) { + RAPIDJSON_ASSERT(is.Peek() == '{'); + is.Take(); // Skip '{' + + if (RAPIDJSON_UNLIKELY(!handler.StartObject())) + RAPIDJSON_PARSE_ERROR(kParseErrorTermination, is.Tell()); + + SkipWhitespaceAndComments<parseFlags>(is); + RAPIDJSON_PARSE_ERROR_EARLY_RETURN_VOID; + + if (Consume(is, '}')) { + if (RAPIDJSON_UNLIKELY(!handler.EndObject(0))) // empty object + RAPIDJSON_PARSE_ERROR(kParseErrorTermination, is.Tell()); + return; + } + + for (SizeType memberCount = 0;;) { + if (RAPIDJSON_UNLIKELY(is.Peek() != '"')) + RAPIDJSON_PARSE_ERROR(kParseErrorObjectMissName, is.Tell()); + + ParseString<parseFlags>(is, handler, true); + RAPIDJSON_PARSE_ERROR_EARLY_RETURN_VOID; + + SkipWhitespaceAndComments<parseFlags>(is); + RAPIDJSON_PARSE_ERROR_EARLY_RETURN_VOID; + + if (RAPIDJSON_UNLIKELY(!Consume(is, ':'))) + RAPIDJSON_PARSE_ERROR(kParseErrorObjectMissColon, is.Tell()); + + SkipWhitespaceAndComments<parseFlags>(is); + RAPIDJSON_PARSE_ERROR_EARLY_RETURN_VOID; + + ParseValue<parseFlags>(is, handler); + RAPIDJSON_PARSE_ERROR_EARLY_RETURN_VOID; + + SkipWhitespaceAndComments<parseFlags>(is); + RAPIDJSON_PARSE_ERROR_EARLY_RETURN_VOID; + + ++memberCount; + + switch (is.Peek()) { + case ',': + is.Take(); + SkipWhitespaceAndComments<parseFlags>(is); + RAPIDJSON_PARSE_ERROR_EARLY_RETURN_VOID; + break; + case '}': + is.Take(); + if (RAPIDJSON_UNLIKELY(!handler.EndObject(memberCount))) + RAPIDJSON_PARSE_ERROR(kParseErrorTermination, is.Tell()); + return; + default: + RAPIDJSON_PARSE_ERROR(kParseErrorObjectMissCommaOrCurlyBracket, is.Tell()); break; // This useless break is only for making warning and coverage happy + } + + if (parseFlags & kParseTrailingCommasFlag) { + if (is.Peek() == '}') { + if (RAPIDJSON_UNLIKELY(!handler.EndObject(memberCount))) + RAPIDJSON_PARSE_ERROR(kParseErrorTermination, is.Tell()); + is.Take(); + return; + } + } + } + } + + // Parse array: [ value, ... ] + template<unsigned parseFlags, typename InputStream, typename Handler> + void ParseArray(InputStream& is, Handler& handler) { + RAPIDJSON_ASSERT(is.Peek() == '['); + is.Take(); // Skip '[' + + if (RAPIDJSON_UNLIKELY(!handler.StartArray())) + RAPIDJSON_PARSE_ERROR(kParseErrorTermination, is.Tell()); + + SkipWhitespaceAndComments<parseFlags>(is); + RAPIDJSON_PARSE_ERROR_EARLY_RETURN_VOID; + + if (Consume(is, ']')) { + if (RAPIDJSON_UNLIKELY(!handler.EndArray(0))) // empty array + RAPIDJSON_PARSE_ERROR(kParseErrorTermination, is.Tell()); + return; + } + + for (SizeType elementCount = 0;;) { + ParseValue<parseFlags>(is, handler); + RAPIDJSON_PARSE_ERROR_EARLY_RETURN_VOID; + + ++elementCount; + SkipWhitespaceAndComments<parseFlags>(is); + RAPIDJSON_PARSE_ERROR_EARLY_RETURN_VOID; + + if (Consume(is, ',')) { + SkipWhitespaceAndComments<parseFlags>(is); + RAPIDJSON_PARSE_ERROR_EARLY_RETURN_VOID; + } + else if (Consume(is, ']')) { + if (RAPIDJSON_UNLIKELY(!handler.EndArray(elementCount))) + RAPIDJSON_PARSE_ERROR(kParseErrorTermination, is.Tell()); + return; + } + else + RAPIDJSON_PARSE_ERROR(kParseErrorArrayMissCommaOrSquareBracket, is.Tell()); + + if (parseFlags & kParseTrailingCommasFlag) { + if (is.Peek() == ']') { + if (RAPIDJSON_UNLIKELY(!handler.EndArray(elementCount))) + RAPIDJSON_PARSE_ERROR(kParseErrorTermination, is.Tell()); + is.Take(); + return; + } + } + } + } + + template<unsigned parseFlags, typename InputStream, typename Handler> + void ParseNull(InputStream& is, Handler& handler) { + RAPIDJSON_ASSERT(is.Peek() == 'n'); + is.Take(); + + if (RAPIDJSON_LIKELY(Consume(is, 'u') && Consume(is, 'l') && Consume(is, 'l'))) { + if (RAPIDJSON_UNLIKELY(!handler.Null())) + RAPIDJSON_PARSE_ERROR(kParseErrorTermination, is.Tell()); + } + else + RAPIDJSON_PARSE_ERROR(kParseErrorValueInvalid, is.Tell()); + } + + template<unsigned parseFlags, typename InputStream, typename Handler> + void ParseTrue(InputStream& is, Handler& handler) { + RAPIDJSON_ASSERT(is.Peek() == 't'); + is.Take(); + + if (RAPIDJSON_LIKELY(Consume(is, 'r') && Consume(is, 'u') && Consume(is, 'e'))) { + if (RAPIDJSON_UNLIKELY(!handler.Bool(true))) + RAPIDJSON_PARSE_ERROR(kParseErrorTermination, is.Tell()); + } + else + RAPIDJSON_PARSE_ERROR(kParseErrorValueInvalid, is.Tell()); + } + + template<unsigned parseFlags, typename InputStream, typename Handler> + void ParseFalse(InputStream& is, Handler& handler) { + RAPIDJSON_ASSERT(is.Peek() == 'f'); + is.Take(); + + if (RAPIDJSON_LIKELY(Consume(is, 'a') && Consume(is, 'l') && Consume(is, 's') && Consume(is, 'e'))) { + if (RAPIDJSON_UNLIKELY(!handler.Bool(false))) + RAPIDJSON_PARSE_ERROR(kParseErrorTermination, is.Tell()); + } + else + RAPIDJSON_PARSE_ERROR(kParseErrorValueInvalid, is.Tell()); + } + + template<typename InputStream> + RAPIDJSON_FORCEINLINE static bool Consume(InputStream& is, typename InputStream::Ch expect) { + if (RAPIDJSON_LIKELY(is.Peek() == expect)) { + is.Take(); + return true; + } + else + return false; + } + + // Helper function to parse four hexadecimal digits in \uXXXX in ParseString(). + template<typename InputStream> + unsigned ParseHex4(InputStream& is, size_t escapeOffset) { + unsigned codepoint = 0; + for (int i = 0; i < 4; i++) { + Ch c = is.Peek(); + codepoint <<= 4; + codepoint += static_cast<unsigned>(c); + if (c >= '0' && c <= '9') + codepoint -= '0'; + else if (c >= 'A' && c <= 'F') + codepoint -= 'A' - 10; + else if (c >= 'a' && c <= 'f') + codepoint -= 'a' - 10; + else { + RAPIDJSON_PARSE_ERROR_NORETURN(kParseErrorStringUnicodeEscapeInvalidHex, escapeOffset); + RAPIDJSON_PARSE_ERROR_EARLY_RETURN(0); + } + is.Take(); + } + return codepoint; + } + + template <typename CharType> + class StackStream { + public: + typedef CharType Ch; + + StackStream(internal::Stack<StackAllocator>& stack) : stack_(stack), length_(0) {} + RAPIDJSON_FORCEINLINE void Put(Ch c) { + *stack_.template Push<Ch>() = c; + ++length_; + } + + RAPIDJSON_FORCEINLINE void* Push(SizeType count) { + length_ += count; + return stack_.template Push<Ch>(count); + } + + size_t Length() const { return length_; } + + Ch* Pop() { + return stack_.template Pop<Ch>(length_); + } + + private: + StackStream(const StackStream&); + StackStream& operator=(const StackStream&); + + internal::Stack<StackAllocator>& stack_; + SizeType length_; + }; + + // Parse string and generate String event. Different code paths for kParseInsituFlag. + template<unsigned parseFlags, typename InputStream, typename Handler> + void ParseString(InputStream& is, Handler& handler, bool isKey = false) { + internal::StreamLocalCopy<InputStream> copy(is); + InputStream& s(copy.s); + + RAPIDJSON_ASSERT(s.Peek() == '\"'); + s.Take(); // Skip '\"' + + bool success = false; + if (parseFlags & kParseInsituFlag) { + typename InputStream::Ch *head = s.PutBegin(); + ParseStringToStream<parseFlags, SourceEncoding, SourceEncoding>(s, s); + RAPIDJSON_PARSE_ERROR_EARLY_RETURN_VOID; + size_t length = s.PutEnd(head) - 1; + RAPIDJSON_ASSERT(length <= 0xFFFFFFFF); + const typename TargetEncoding::Ch* const str = reinterpret_cast<typename TargetEncoding::Ch*>(head); + success = (isKey ? handler.Key(str, SizeType(length), false) : handler.String(str, SizeType(length), false)); + } + else { + StackStream<typename TargetEncoding::Ch> stackStream(stack_); + ParseStringToStream<parseFlags, SourceEncoding, TargetEncoding>(s, stackStream); + RAPIDJSON_PARSE_ERROR_EARLY_RETURN_VOID; + SizeType length = static_cast<SizeType>(stackStream.Length()) - 1; + const typename TargetEncoding::Ch* const str = stackStream.Pop(); + success = (isKey ? handler.Key(str, length, true) : handler.String(str, length, true)); + } + if (RAPIDJSON_UNLIKELY(!success)) + RAPIDJSON_PARSE_ERROR(kParseErrorTermination, s.Tell()); + } + + // Parse string to an output is + // This function handles the prefix/suffix double quotes, escaping, and optional encoding validation. + template<unsigned parseFlags, typename SEncoding, typename TEncoding, typename InputStream, typename OutputStream> + RAPIDJSON_FORCEINLINE void ParseStringToStream(InputStream& is, OutputStream& os) { +//!@cond RAPIDJSON_HIDDEN_FROM_DOXYGEN +#define Z16 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 + static const char escape[256] = { + Z16, Z16, 0, 0,'\"', 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,'/', + Z16, Z16, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,'\\', 0, 0, 0, + 0, 0,'\b', 0, 0, 0,'\f', 0, 0, 0, 0, 0, 0, 0,'\n', 0, + 0, 0,'\r', 0,'\t', 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + Z16, Z16, Z16, Z16, Z16, Z16, Z16, Z16 + }; +#undef Z16 +//!@endcond + + for (;;) { + // Scan and copy string before "\\\"" or < 0x20. This is an optional optimzation. + if (!(parseFlags & kParseValidateEncodingFlag)) + ScanCopyUnescapedString(is, os); + + Ch c = is.Peek(); + if (RAPIDJSON_UNLIKELY(c == '\\')) { // Escape + size_t escapeOffset = is.Tell(); // For invalid escaping, report the initial '\\' as error offset + is.Take(); + Ch e = is.Peek(); + if ((sizeof(Ch) == 1 || unsigned(e) < 256) && RAPIDJSON_LIKELY(escape[static_cast<unsigned char>(e)])) { + is.Take(); + os.Put(static_cast<typename TEncoding::Ch>(escape[static_cast<unsigned char>(e)])); + } + else if (RAPIDJSON_LIKELY(e == 'u')) { // Unicode + is.Take(); + unsigned codepoint = ParseHex4(is, escapeOffset); + RAPIDJSON_PARSE_ERROR_EARLY_RETURN_VOID; + if (RAPIDJSON_UNLIKELY(codepoint >= 0xD800 && codepoint <= 0xDBFF)) { + // Handle UTF-16 surrogate pair + if (RAPIDJSON_UNLIKELY(!Consume(is, '\\') || !Consume(is, 'u'))) + RAPIDJSON_PARSE_ERROR(kParseErrorStringUnicodeSurrogateInvalid, escapeOffset); + unsigned codepoint2 = ParseHex4(is, escapeOffset); + RAPIDJSON_PARSE_ERROR_EARLY_RETURN_VOID; + if (RAPIDJSON_UNLIKELY(codepoint2 < 0xDC00 || codepoint2 > 0xDFFF)) + RAPIDJSON_PARSE_ERROR(kParseErrorStringUnicodeSurrogateInvalid, escapeOffset); + codepoint = (((codepoint - 0xD800) << 10) | (codepoint2 - 0xDC00)) + 0x10000; + } + TEncoding::Encode(os, codepoint); + } + else + RAPIDJSON_PARSE_ERROR(kParseErrorStringEscapeInvalid, escapeOffset); + } + else if (RAPIDJSON_UNLIKELY(c == '"')) { // Closing double quote + is.Take(); + os.Put('\0'); // null-terminate the string + return; + } + else if (RAPIDJSON_UNLIKELY(static_cast<unsigned>(c) < 0x20)) { // RFC 4627: unescaped = %x20-21 / %x23-5B / %x5D-10FFFF + if (c == '\0') + RAPIDJSON_PARSE_ERROR(kParseErrorStringMissQuotationMark, is.Tell()); + else + RAPIDJSON_PARSE_ERROR(kParseErrorStringInvalidEncoding, is.Tell()); + } + else { + size_t offset = is.Tell(); + if (RAPIDJSON_UNLIKELY((parseFlags & kParseValidateEncodingFlag ? + !Transcoder<SEncoding, TEncoding>::Validate(is, os) : + !Transcoder<SEncoding, TEncoding>::Transcode(is, os)))) + RAPIDJSON_PARSE_ERROR(kParseErrorStringInvalidEncoding, offset); + } + } + } + + template<typename InputStream, typename OutputStream> + static RAPIDJSON_FORCEINLINE void ScanCopyUnescapedString(InputStream&, OutputStream&) { + // Do nothing for generic version + } + +#if defined(RAPIDJSON_SSE2) || defined(RAPIDJSON_SSE42) + // StringStream -> StackStream<char> + static RAPIDJSON_FORCEINLINE void ScanCopyUnescapedString(StringStream& is, StackStream<char>& os) { + const char* p = is.src_; + + // Scan one by one until alignment (unaligned load may cross page boundary and cause crash) + const char* nextAligned = reinterpret_cast<const char*>((reinterpret_cast<size_t>(p) + 15) & static_cast<size_t>(~15)); + while (p != nextAligned) + if (RAPIDJSON_UNLIKELY(*p == '\"') || RAPIDJSON_UNLIKELY(*p == '\\') || RAPIDJSON_UNLIKELY(static_cast<unsigned>(*p) < 0x20)) { + is.src_ = p; + return; + } + else + os.Put(*p++); + + // The rest of string using SIMD + static const char dquote[16] = { '\"', '\"', '\"', '\"', '\"', '\"', '\"', '\"', '\"', '\"', '\"', '\"', '\"', '\"', '\"', '\"' }; + static const char bslash[16] = { '\\', '\\', '\\', '\\', '\\', '\\', '\\', '\\', '\\', '\\', '\\', '\\', '\\', '\\', '\\', '\\' }; + static const char space[16] = { 0x1F, 0x1F, 0x1F, 0x1F, 0x1F, 0x1F, 0x1F, 0x1F, 0x1F, 0x1F, 0x1F, 0x1F, 0x1F, 0x1F, 0x1F, 0x1F }; + const __m128i dq = _mm_loadu_si128(reinterpret_cast<const __m128i *>(&dquote[0])); + const __m128i bs = _mm_loadu_si128(reinterpret_cast<const __m128i *>(&bslash[0])); + const __m128i sp = _mm_loadu_si128(reinterpret_cast<const __m128i *>(&space[0])); + + for (;; p += 16) { + const __m128i s = _mm_load_si128(reinterpret_cast<const __m128i *>(p)); + const __m128i t1 = _mm_cmpeq_epi8(s, dq); + const __m128i t2 = _mm_cmpeq_epi8(s, bs); + const __m128i t3 = _mm_cmpeq_epi8(_mm_max_epu8(s, sp), sp); // s < 0x20 <=> max(s, 0x1F) == 0x1F + const __m128i x = _mm_or_si128(_mm_or_si128(t1, t2), t3); + unsigned short r = static_cast<unsigned short>(_mm_movemask_epi8(x)); + if (RAPIDJSON_UNLIKELY(r != 0)) { // some of characters is escaped + SizeType length; + #ifdef _MSC_VER // Find the index of first escaped + unsigned long offset; + _BitScanForward(&offset, r); + length = offset; + #else + length = static_cast<SizeType>(__builtin_ffs(r) - 1); + #endif + if (length != 0) { + char* q = reinterpret_cast<char*>(os.Push(length)); + for (size_t i = 0; i < length; i++) + q[i] = p[i]; + + p += length; + } + break; + } + _mm_storeu_si128(reinterpret_cast<__m128i *>(os.Push(16)), s); + } + + is.src_ = p; + } + + // InsituStringStream -> InsituStringStream + static RAPIDJSON_FORCEINLINE void ScanCopyUnescapedString(InsituStringStream& is, InsituStringStream& os) { + RAPIDJSON_ASSERT(&is == &os); + (void)os; + + if (is.src_ == is.dst_) { + SkipUnescapedString(is); + return; + } + + char* p = is.src_; + char *q = is.dst_; + + // Scan one by one until alignment (unaligned load may cross page boundary and cause crash) + const char* nextAligned = reinterpret_cast<const char*>((reinterpret_cast<size_t>(p) + 15) & static_cast<size_t>(~15)); + while (p != nextAligned) + if (RAPIDJSON_UNLIKELY(*p == '\"') || RAPIDJSON_UNLIKELY(*p == '\\') || RAPIDJSON_UNLIKELY(static_cast<unsigned>(*p) < 0x20)) { + is.src_ = p; + is.dst_ = q; + return; + } + else + *q++ = *p++; + + // The rest of string using SIMD + static const char dquote[16] = { '\"', '\"', '\"', '\"', '\"', '\"', '\"', '\"', '\"', '\"', '\"', '\"', '\"', '\"', '\"', '\"' }; + static const char bslash[16] = { '\\', '\\', '\\', '\\', '\\', '\\', '\\', '\\', '\\', '\\', '\\', '\\', '\\', '\\', '\\', '\\' }; + static const char space[16] = { 0x1F, 0x1F, 0x1F, 0x1F, 0x1F, 0x1F, 0x1F, 0x1F, 0x1F, 0x1F, 0x1F, 0x1F, 0x1F, 0x1F, 0x1F, 0x1F }; + const __m128i dq = _mm_loadu_si128(reinterpret_cast<const __m128i *>(&dquote[0])); + const __m128i bs = _mm_loadu_si128(reinterpret_cast<const __m128i *>(&bslash[0])); + const __m128i sp = _mm_loadu_si128(reinterpret_cast<const __m128i *>(&space[0])); + + for (;; p += 16, q += 16) { + const __m128i s = _mm_load_si128(reinterpret_cast<const __m128i *>(p)); + const __m128i t1 = _mm_cmpeq_epi8(s, dq); + const __m128i t2 = _mm_cmpeq_epi8(s, bs); + const __m128i t3 = _mm_cmpeq_epi8(_mm_max_epu8(s, sp), sp); // s < 0x20 <=> max(s, 0x1F) == 0x1F + const __m128i x = _mm_or_si128(_mm_or_si128(t1, t2), t3); + unsigned short r = static_cast<unsigned short>(_mm_movemask_epi8(x)); + if (RAPIDJSON_UNLIKELY(r != 0)) { // some of characters is escaped + size_t length; +#ifdef _MSC_VER // Find the index of first escaped + unsigned long offset; + _BitScanForward(&offset, r); + length = offset; +#else + length = static_cast<size_t>(__builtin_ffs(r) - 1); +#endif + for (const char* pend = p + length; p != pend; ) + *q++ = *p++; + break; + } + _mm_storeu_si128(reinterpret_cast<__m128i *>(q), s); + } + + is.src_ = p; + is.dst_ = q; + } + + // When read/write pointers are the same for insitu stream, just skip unescaped characters + static RAPIDJSON_FORCEINLINE void SkipUnescapedString(InsituStringStream& is) { + RAPIDJSON_ASSERT(is.src_ == is.dst_); + char* p = is.src_; + + // Scan one by one until alignment (unaligned load may cross page boundary and cause crash) + const char* nextAligned = reinterpret_cast<const char*>((reinterpret_cast<size_t>(p) + 15) & static_cast<size_t>(~15)); + for (; p != nextAligned; p++) + if (RAPIDJSON_UNLIKELY(*p == '\"') || RAPIDJSON_UNLIKELY(*p == '\\') || RAPIDJSON_UNLIKELY(static_cast<unsigned>(*p) < 0x20)) { + is.src_ = is.dst_ = p; + return; + } + + // The rest of string using SIMD + static const char dquote[16] = { '\"', '\"', '\"', '\"', '\"', '\"', '\"', '\"', '\"', '\"', '\"', '\"', '\"', '\"', '\"', '\"' }; + static const char bslash[16] = { '\\', '\\', '\\', '\\', '\\', '\\', '\\', '\\', '\\', '\\', '\\', '\\', '\\', '\\', '\\', '\\' }; + static const char space[16] = { 0x1F, 0x1F, 0x1F, 0x1F, 0x1F, 0x1F, 0x1F, 0x1F, 0x1F, 0x1F, 0x1F, 0x1F, 0x1F, 0x1F, 0x1F, 0x1F }; + const __m128i dq = _mm_loadu_si128(reinterpret_cast<const __m128i *>(&dquote[0])); + const __m128i bs = _mm_loadu_si128(reinterpret_cast<const __m128i *>(&bslash[0])); + const __m128i sp = _mm_loadu_si128(reinterpret_cast<const __m128i *>(&space[0])); + + for (;; p += 16) { + const __m128i s = _mm_load_si128(reinterpret_cast<const __m128i *>(p)); + const __m128i t1 = _mm_cmpeq_epi8(s, dq); + const __m128i t2 = _mm_cmpeq_epi8(s, bs); + const __m128i t3 = _mm_cmpeq_epi8(_mm_max_epu8(s, sp), sp); // s < 0x20 <=> max(s, 0x1F) == 0x1F + const __m128i x = _mm_or_si128(_mm_or_si128(t1, t2), t3); + unsigned short r = static_cast<unsigned short>(_mm_movemask_epi8(x)); + if (RAPIDJSON_UNLIKELY(r != 0)) { // some of characters is escaped + size_t length; +#ifdef _MSC_VER // Find the index of first escaped + unsigned long offset; + _BitScanForward(&offset, r); + length = offset; +#else + length = static_cast<size_t>(__builtin_ffs(r) - 1); +#endif + p += length; + break; + } + } + + is.src_ = is.dst_ = p; + } +#elif defined(RAPIDJSON_NEON) + // StringStream -> StackStream<char> + static RAPIDJSON_FORCEINLINE void ScanCopyUnescapedString(StringStream& is, StackStream<char>& os) { + const char* p = is.src_; + + // Scan one by one until alignment (unaligned load may cross page boundary and cause crash) + const char* nextAligned = reinterpret_cast<const char*>((reinterpret_cast<size_t>(p) + 15) & static_cast<size_t>(~15)); + while (p != nextAligned) + if (RAPIDJSON_UNLIKELY(*p == '\"') || RAPIDJSON_UNLIKELY(*p == '\\') || RAPIDJSON_UNLIKELY(static_cast<unsigned>(*p) < 0x20)) { + is.src_ = p; + return; + } + else + os.Put(*p++); + + // The rest of string using SIMD + const uint8x16_t s0 = vmovq_n_u8('"'); + const uint8x16_t s1 = vmovq_n_u8('\\'); + const uint8x16_t s2 = vmovq_n_u8('\b'); + const uint8x16_t s3 = vmovq_n_u8(32); + + for (;; p += 16) { + const uint8x16_t s = vld1q_u8(reinterpret_cast<const uint8_t *>(p)); + uint8x16_t x = vceqq_u8(s, s0); + x = vorrq_u8(x, vceqq_u8(s, s1)); + x = vorrq_u8(x, vceqq_u8(s, s2)); + x = vorrq_u8(x, vcltq_u8(s, s3)); + + x = vrev64q_u8(x); // Rev in 64 + uint64_t low = vgetq_lane_u64(reinterpret_cast<uint64x2_t>(x), 0); // extract + uint64_t high = vgetq_lane_u64(reinterpret_cast<uint64x2_t>(x), 1); // extract + + SizeType length = 0; + bool escaped = false; + if (low == 0) { + if (high != 0) { + unsigned lz = (unsigned)__builtin_clzll(high);; + length = 8 + (lz >> 3); + escaped = true; + } + } else { + unsigned lz = (unsigned)__builtin_clzll(low);; + length = lz >> 3; + escaped = true; + } + if (RAPIDJSON_UNLIKELY(escaped)) { // some of characters is escaped + if (length != 0) { + char* q = reinterpret_cast<char*>(os.Push(length)); + for (size_t i = 0; i < length; i++) + q[i] = p[i]; + + p += length; + } + break; + } + vst1q_u8(reinterpret_cast<uint8_t *>(os.Push(16)), s); + } + + is.src_ = p; + } + + // InsituStringStream -> InsituStringStream + static RAPIDJSON_FORCEINLINE void ScanCopyUnescapedString(InsituStringStream& is, InsituStringStream& os) { + RAPIDJSON_ASSERT(&is == &os); + (void)os; + + if (is.src_ == is.dst_) { + SkipUnescapedString(is); + return; + } + + char* p = is.src_; + char *q = is.dst_; + + // Scan one by one until alignment (unaligned load may cross page boundary and cause crash) + const char* nextAligned = reinterpret_cast<const char*>((reinterpret_cast<size_t>(p) + 15) & static_cast<size_t>(~15)); + while (p != nextAligned) + if (RAPIDJSON_UNLIKELY(*p == '\"') || RAPIDJSON_UNLIKELY(*p == '\\') || RAPIDJSON_UNLIKELY(static_cast<unsigned>(*p) < 0x20)) { + is.src_ = p; + is.dst_ = q; + return; + } + else + *q++ = *p++; + + // The rest of string using SIMD + const uint8x16_t s0 = vmovq_n_u8('"'); + const uint8x16_t s1 = vmovq_n_u8('\\'); + const uint8x16_t s2 = vmovq_n_u8('\b'); + const uint8x16_t s3 = vmovq_n_u8(32); + + for (;; p += 16, q += 16) { + const uint8x16_t s = vld1q_u8(reinterpret_cast<uint8_t *>(p)); + uint8x16_t x = vceqq_u8(s, s0); + x = vorrq_u8(x, vceqq_u8(s, s1)); + x = vorrq_u8(x, vceqq_u8(s, s2)); + x = vorrq_u8(x, vcltq_u8(s, s3)); + + x = vrev64q_u8(x); // Rev in 64 + uint64_t low = vgetq_lane_u64(reinterpret_cast<uint64x2_t>(x), 0); // extract + uint64_t high = vgetq_lane_u64(reinterpret_cast<uint64x2_t>(x), 1); // extract + + SizeType length = 0; + bool escaped = false; + if (low == 0) { + if (high != 0) { + unsigned lz = (unsigned)__builtin_clzll(high); + length = 8 + (lz >> 3); + escaped = true; + } + } else { + unsigned lz = (unsigned)__builtin_clzll(low); + length = lz >> 3; + escaped = true; + } + if (RAPIDJSON_UNLIKELY(escaped)) { // some of characters is escaped + for (const char* pend = p + length; p != pend; ) { + *q++ = *p++; + } + break; + } + vst1q_u8(reinterpret_cast<uint8_t *>(q), s); + } + + is.src_ = p; + is.dst_ = q; + } + + // When read/write pointers are the same for insitu stream, just skip unescaped characters + static RAPIDJSON_FORCEINLINE void SkipUnescapedString(InsituStringStream& is) { + RAPIDJSON_ASSERT(is.src_ == is.dst_); + char* p = is.src_; + + // Scan one by one until alignment (unaligned load may cross page boundary and cause crash) + const char* nextAligned = reinterpret_cast<const char*>((reinterpret_cast<size_t>(p) + 15) & static_cast<size_t>(~15)); + for (; p != nextAligned; p++) + if (RAPIDJSON_UNLIKELY(*p == '\"') || RAPIDJSON_UNLIKELY(*p == '\\') || RAPIDJSON_UNLIKELY(static_cast<unsigned>(*p) < 0x20)) { + is.src_ = is.dst_ = p; + return; + } + + // The rest of string using SIMD + const uint8x16_t s0 = vmovq_n_u8('"'); + const uint8x16_t s1 = vmovq_n_u8('\\'); + const uint8x16_t s2 = vmovq_n_u8('\b'); + const uint8x16_t s3 = vmovq_n_u8(32); + + for (;; p += 16) { + const uint8x16_t s = vld1q_u8(reinterpret_cast<uint8_t *>(p)); + uint8x16_t x = vceqq_u8(s, s0); + x = vorrq_u8(x, vceqq_u8(s, s1)); + x = vorrq_u8(x, vceqq_u8(s, s2)); + x = vorrq_u8(x, vcltq_u8(s, s3)); + + x = vrev64q_u8(x); // Rev in 64 + uint64_t low = vgetq_lane_u64(reinterpret_cast<uint64x2_t>(x), 0); // extract + uint64_t high = vgetq_lane_u64(reinterpret_cast<uint64x2_t>(x), 1); // extract + + if (low == 0) { + if (high != 0) { + int lz = __builtin_clzll(high); + p += 8 + (lz >> 3); + break; + } + } else { + int lz = __builtin_clzll(low); + p += lz >> 3; + break; + } + } + + is.src_ = is.dst_ = p; + } +#endif // RAPIDJSON_NEON + + template<typename InputStream, bool backup, bool pushOnTake> + class NumberStream; + + template<typename InputStream> + class NumberStream<InputStream, false, false> { + public: + typedef typename InputStream::Ch Ch; + + NumberStream(GenericReader& reader, InputStream& s) : is(s) { (void)reader; } + + RAPIDJSON_FORCEINLINE Ch Peek() const { return is.Peek(); } + RAPIDJSON_FORCEINLINE Ch TakePush() { return is.Take(); } + RAPIDJSON_FORCEINLINE Ch Take() { return is.Take(); } + RAPIDJSON_FORCEINLINE void Push(char) {} + + size_t Tell() { return is.Tell(); } + size_t Length() { return 0; } + const char* Pop() { return 0; } + + protected: + NumberStream& operator=(const NumberStream&); + + InputStream& is; + }; + + template<typename InputStream> + class NumberStream<InputStream, true, false> : public NumberStream<InputStream, false, false> { + typedef NumberStream<InputStream, false, false> Base; + public: + NumberStream(GenericReader& reader, InputStream& is) : Base(reader, is), stackStream(reader.stack_) {} + + RAPIDJSON_FORCEINLINE Ch TakePush() { + stackStream.Put(static_cast<char>(Base::is.Peek())); + return Base::is.Take(); + } + + RAPIDJSON_FORCEINLINE void Push(char c) { + stackStream.Put(c); + } + + size_t Length() { return stackStream.Length(); } + + const char* Pop() { + stackStream.Put('\0'); + return stackStream.Pop(); + } + + private: + StackStream<char> stackStream; + }; + + template<typename InputStream> + class NumberStream<InputStream, true, true> : public NumberStream<InputStream, true, false> { + typedef NumberStream<InputStream, true, false> Base; + public: + NumberStream(GenericReader& reader, InputStream& is) : Base(reader, is) {} + + RAPIDJSON_FORCEINLINE Ch Take() { return Base::TakePush(); } + }; + + template<unsigned parseFlags, typename InputStream, typename Handler> + void ParseNumber(InputStream& is, Handler& handler) { + internal::StreamLocalCopy<InputStream> copy(is); + NumberStream<InputStream, + ((parseFlags & kParseNumbersAsStringsFlag) != 0) ? + ((parseFlags & kParseInsituFlag) == 0) : + ((parseFlags & kParseFullPrecisionFlag) != 0), + (parseFlags & kParseNumbersAsStringsFlag) != 0 && + (parseFlags & kParseInsituFlag) == 0> s(*this, copy.s); + + size_t startOffset = s.Tell(); + double d = 0.0; + bool useNanOrInf = false; + + // Parse minus + bool minus = Consume(s, '-'); + + // Parse int: zero / ( digit1-9 *DIGIT ) + unsigned i = 0; + uint64_t i64 = 0; + bool use64bit = false; + int significandDigit = 0; + if (RAPIDJSON_UNLIKELY(s.Peek() == '0')) { + i = 0; + s.TakePush(); + } + else if (RAPIDJSON_LIKELY(s.Peek() >= '1' && s.Peek() <= '9')) { + i = static_cast<unsigned>(s.TakePush() - '0'); + + if (minus) + while (RAPIDJSON_LIKELY(s.Peek() >= '0' && s.Peek() <= '9')) { + if (RAPIDJSON_UNLIKELY(i >= 214748364)) { // 2^31 = 2147483648 + if (RAPIDJSON_LIKELY(i != 214748364 || s.Peek() > '8')) { + i64 = i; + use64bit = true; + break; + } + } + i = i * 10 + static_cast<unsigned>(s.TakePush() - '0'); + significandDigit++; + } + else + while (RAPIDJSON_LIKELY(s.Peek() >= '0' && s.Peek() <= '9')) { + if (RAPIDJSON_UNLIKELY(i >= 429496729)) { // 2^32 - 1 = 4294967295 + if (RAPIDJSON_LIKELY(i != 429496729 || s.Peek() > '5')) { + i64 = i; + use64bit = true; + break; + } + } + i = i * 10 + static_cast<unsigned>(s.TakePush() - '0'); + significandDigit++; + } + } + // Parse NaN or Infinity here + else if ((parseFlags & kParseNanAndInfFlag) && RAPIDJSON_LIKELY((s.Peek() == 'I' || s.Peek() == 'N'))) { + if (Consume(s, 'N')) { + if (Consume(s, 'a') && Consume(s, 'N')) { + d = std::numeric_limits<double>::quiet_NaN(); + useNanOrInf = true; + } + } + else if (RAPIDJSON_LIKELY(Consume(s, 'I'))) { + if (Consume(s, 'n') && Consume(s, 'f')) { + d = (minus ? -std::numeric_limits<double>::infinity() : std::numeric_limits<double>::infinity()); + useNanOrInf = true; + + if (RAPIDJSON_UNLIKELY(s.Peek() == 'i' && !(Consume(s, 'i') && Consume(s, 'n') + && Consume(s, 'i') && Consume(s, 't') && Consume(s, 'y')))) { + RAPIDJSON_PARSE_ERROR(kParseErrorValueInvalid, s.Tell()); + } + } + } + + if (RAPIDJSON_UNLIKELY(!useNanOrInf)) { + RAPIDJSON_PARSE_ERROR(kParseErrorValueInvalid, s.Tell()); + } + } + else + RAPIDJSON_PARSE_ERROR(kParseErrorValueInvalid, s.Tell()); + + // Parse 64bit int + bool useDouble = false; + if (use64bit) { + if (minus) + while (RAPIDJSON_LIKELY(s.Peek() >= '0' && s.Peek() <= '9')) { + if (RAPIDJSON_UNLIKELY(i64 >= RAPIDJSON_UINT64_C2(0x0CCCCCCC, 0xCCCCCCCC))) // 2^63 = 9223372036854775808 + if (RAPIDJSON_LIKELY(i64 != RAPIDJSON_UINT64_C2(0x0CCCCCCC, 0xCCCCCCCC) || s.Peek() > '8')) { + d = static_cast<double>(i64); + useDouble = true; + break; + } + i64 = i64 * 10 + static_cast<unsigned>(s.TakePush() - '0'); + significandDigit++; + } + else + while (RAPIDJSON_LIKELY(s.Peek() >= '0' && s.Peek() <= '9')) { + if (RAPIDJSON_UNLIKELY(i64 >= RAPIDJSON_UINT64_C2(0x19999999, 0x99999999))) // 2^64 - 1 = 18446744073709551615 + if (RAPIDJSON_LIKELY(i64 != RAPIDJSON_UINT64_C2(0x19999999, 0x99999999) || s.Peek() > '5')) { + d = static_cast<double>(i64); + useDouble = true; + break; + } + i64 = i64 * 10 + static_cast<unsigned>(s.TakePush() - '0'); + significandDigit++; + } + } + + // Force double for big integer + if (useDouble) { + while (RAPIDJSON_LIKELY(s.Peek() >= '0' && s.Peek() <= '9')) { + d = d * 10 + (s.TakePush() - '0'); + } + } + + // Parse frac = decimal-point 1*DIGIT + int expFrac = 0; + size_t decimalPosition; + if (Consume(s, '.')) { + decimalPosition = s.Length(); + + if (RAPIDJSON_UNLIKELY(!(s.Peek() >= '0' && s.Peek() <= '9'))) + RAPIDJSON_PARSE_ERROR(kParseErrorNumberMissFraction, s.Tell()); + + if (!useDouble) { +#if RAPIDJSON_64BIT + // Use i64 to store significand in 64-bit architecture + if (!use64bit) + i64 = i; + + while (RAPIDJSON_LIKELY(s.Peek() >= '0' && s.Peek() <= '9')) { + if (i64 > RAPIDJSON_UINT64_C2(0x1FFFFF, 0xFFFFFFFF)) // 2^53 - 1 for fast path + break; + else { + i64 = i64 * 10 + static_cast<unsigned>(s.TakePush() - '0'); + --expFrac; + if (i64 != 0) + significandDigit++; + } + } + + d = static_cast<double>(i64); +#else + // Use double to store significand in 32-bit architecture + d = static_cast<double>(use64bit ? i64 : i); +#endif + useDouble = true; + } + + while (RAPIDJSON_LIKELY(s.Peek() >= '0' && s.Peek() <= '9')) { + if (significandDigit < 17) { + d = d * 10.0 + (s.TakePush() - '0'); + --expFrac; + if (RAPIDJSON_LIKELY(d > 0.0)) + significandDigit++; + } + else + s.TakePush(); + } + } + else + decimalPosition = s.Length(); // decimal position at the end of integer. + + // Parse exp = e [ minus / plus ] 1*DIGIT + int exp = 0; + if (Consume(s, 'e') || Consume(s, 'E')) { + if (!useDouble) { + d = static_cast<double>(use64bit ? i64 : i); + useDouble = true; + } + + bool expMinus = false; + if (Consume(s, '+')) + ; + else if (Consume(s, '-')) + expMinus = true; + + if (RAPIDJSON_LIKELY(s.Peek() >= '0' && s.Peek() <= '9')) { + exp = static_cast<int>(s.Take() - '0'); + if (expMinus) { + // (exp + expFrac) must not underflow int => we're detecting when -exp gets + // dangerously close to INT_MIN (a pessimistic next digit 9 would push it into + // underflow territory): + // + // -(exp * 10 + 9) + expFrac >= INT_MIN + // <=> exp <= (expFrac - INT_MIN - 9) / 10 + RAPIDJSON_ASSERT(expFrac <= 0); + int maxExp = (expFrac + 2147483639) / 10; + + while (RAPIDJSON_LIKELY(s.Peek() >= '0' && s.Peek() <= '9')) { + exp = exp * 10 + static_cast<int>(s.Take() - '0'); + if (RAPIDJSON_UNLIKELY(exp > maxExp)) { + while (RAPIDJSON_UNLIKELY(s.Peek() >= '0' && s.Peek() <= '9')) // Consume the rest of exponent + s.Take(); + } + } + } + else { // positive exp + int maxExp = 308 - expFrac; + while (RAPIDJSON_LIKELY(s.Peek() >= '0' && s.Peek() <= '9')) { + exp = exp * 10 + static_cast<int>(s.Take() - '0'); + if (RAPIDJSON_UNLIKELY(exp > maxExp)) + RAPIDJSON_PARSE_ERROR(kParseErrorNumberTooBig, startOffset); + } + } + } + else + RAPIDJSON_PARSE_ERROR(kParseErrorNumberMissExponent, s.Tell()); + + if (expMinus) + exp = -exp; + } + + // Finish parsing, call event according to the type of number. + bool cont = true; + + if (parseFlags & kParseNumbersAsStringsFlag) { + if (parseFlags & kParseInsituFlag) { + s.Pop(); // Pop stack no matter if it will be used or not. + typename InputStream::Ch* head = is.PutBegin(); + const size_t length = s.Tell() - startOffset; + RAPIDJSON_ASSERT(length <= 0xFFFFFFFF); + // unable to insert the \0 character here, it will erase the comma after this number + const typename TargetEncoding::Ch* const str = reinterpret_cast<typename TargetEncoding::Ch*>(head); + cont = handler.RawNumber(str, SizeType(length), false); + } + else { + SizeType numCharsToCopy = static_cast<SizeType>(s.Length()); + StringStream srcStream(s.Pop()); + StackStream<typename TargetEncoding::Ch> dstStream(stack_); + while (numCharsToCopy--) { + Transcoder<UTF8<>, TargetEncoding>::Transcode(srcStream, dstStream); + } + dstStream.Put('\0'); + const typename TargetEncoding::Ch* str = dstStream.Pop(); + const SizeType length = static_cast<SizeType>(dstStream.Length()) - 1; + cont = handler.RawNumber(str, SizeType(length), true); + } + } + else { + size_t length = s.Length(); + const char* decimal = s.Pop(); // Pop stack no matter if it will be used or not. + + if (useDouble) { + int p = exp + expFrac; + if (parseFlags & kParseFullPrecisionFlag) + d = internal::StrtodFullPrecision(d, p, decimal, length, decimalPosition, exp); + else + d = internal::StrtodNormalPrecision(d, p); + + // Use > max, instead of == inf, to fix bogus warning -Wfloat-equal + if (d > (std::numeric_limits<double>::max)()) { + // Overflow + // TODO: internal::StrtodX should report overflow (or underflow) + RAPIDJSON_PARSE_ERROR(kParseErrorNumberTooBig, startOffset); + } + + cont = handler.Double(minus ? -d : d); + } + else if (useNanOrInf) { + cont = handler.Double(d); + } + else { + if (use64bit) { + if (minus) + cont = handler.Int64(static_cast<int64_t>(~i64 + 1)); + else + cont = handler.Uint64(i64); + } + else { + if (minus) + cont = handler.Int(static_cast<int32_t>(~i + 1)); + else + cont = handler.Uint(i); + } + } + } + if (RAPIDJSON_UNLIKELY(!cont)) + RAPIDJSON_PARSE_ERROR(kParseErrorTermination, startOffset); + } + + // Parse any JSON value + template<unsigned parseFlags, typename InputStream, typename Handler> + void ParseValue(InputStream& is, Handler& handler) { + switch (is.Peek()) { + case 'n': ParseNull <parseFlags>(is, handler); break; + case 't': ParseTrue <parseFlags>(is, handler); break; + case 'f': ParseFalse <parseFlags>(is, handler); break; + case '"': ParseString<parseFlags>(is, handler); break; + case '{': ParseObject<parseFlags>(is, handler); break; + case '[': ParseArray <parseFlags>(is, handler); break; + default : + ParseNumber<parseFlags>(is, handler); + break; + + } + } + + // Iterative Parsing + + // States + enum IterativeParsingState { + IterativeParsingFinishState = 0, // sink states at top + IterativeParsingErrorState, // sink states at top + IterativeParsingStartState, + + // Object states + IterativeParsingObjectInitialState, + IterativeParsingMemberKeyState, + IterativeParsingMemberValueState, + IterativeParsingObjectFinishState, + + // Array states + IterativeParsingArrayInitialState, + IterativeParsingElementState, + IterativeParsingArrayFinishState, + + // Single value state + IterativeParsingValueState, + + // Delimiter states (at bottom) + IterativeParsingElementDelimiterState, + IterativeParsingMemberDelimiterState, + IterativeParsingKeyValueDelimiterState, + + cIterativeParsingStateCount + }; + + // Tokens + enum Token { + LeftBracketToken = 0, + RightBracketToken, + + LeftCurlyBracketToken, + RightCurlyBracketToken, + + CommaToken, + ColonToken, + + StringToken, + FalseToken, + TrueToken, + NullToken, + NumberToken, + + kTokenCount + }; + + RAPIDJSON_FORCEINLINE Token Tokenize(Ch c) const { + +//!@cond RAPIDJSON_HIDDEN_FROM_DOXYGEN +#define N NumberToken +#define N16 N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N + // Maps from ASCII to Token + static const unsigned char tokenMap[256] = { + N16, // 00~0F + N16, // 10~1F + N, N, StringToken, N, N, N, N, N, N, N, N, N, CommaToken, N, N, N, // 20~2F + N, N, N, N, N, N, N, N, N, N, ColonToken, N, N, N, N, N, // 30~3F + N16, // 40~4F + N, N, N, N, N, N, N, N, N, N, N, LeftBracketToken, N, RightBracketToken, N, N, // 50~5F + N, N, N, N, N, N, FalseToken, N, N, N, N, N, N, N, NullToken, N, // 60~6F + N, N, N, N, TrueToken, N, N, N, N, N, N, LeftCurlyBracketToken, N, RightCurlyBracketToken, N, N, // 70~7F + N16, N16, N16, N16, N16, N16, N16, N16 // 80~FF + }; +#undef N +#undef N16 +//!@endcond + + if (sizeof(Ch) == 1 || static_cast<unsigned>(c) < 256) + return static_cast<Token>(tokenMap[static_cast<unsigned char>(c)]); + else + return NumberToken; + } + + RAPIDJSON_FORCEINLINE IterativeParsingState Predict(IterativeParsingState state, Token token) const { + // current state x one lookahead token -> new state + static const char G[cIterativeParsingStateCount][kTokenCount] = { + // Finish(sink state) + { + IterativeParsingErrorState, IterativeParsingErrorState, IterativeParsingErrorState, IterativeParsingErrorState, IterativeParsingErrorState, + IterativeParsingErrorState, IterativeParsingErrorState, IterativeParsingErrorState, IterativeParsingErrorState, IterativeParsingErrorState, + IterativeParsingErrorState + }, + // Error(sink state) + { + IterativeParsingErrorState, IterativeParsingErrorState, IterativeParsingErrorState, IterativeParsingErrorState, IterativeParsingErrorState, + IterativeParsingErrorState, IterativeParsingErrorState, IterativeParsingErrorState, IterativeParsingErrorState, IterativeParsingErrorState, + IterativeParsingErrorState + }, + // Start + { + IterativeParsingArrayInitialState, // Left bracket + IterativeParsingErrorState, // Right bracket + IterativeParsingObjectInitialState, // Left curly bracket + IterativeParsingErrorState, // Right curly bracket + IterativeParsingErrorState, // Comma + IterativeParsingErrorState, // Colon + IterativeParsingValueState, // String + IterativeParsingValueState, // False + IterativeParsingValueState, // True + IterativeParsingValueState, // Null + IterativeParsingValueState // Number + }, + // ObjectInitial + { + IterativeParsingErrorState, // Left bracket + IterativeParsingErrorState, // Right bracket + IterativeParsingErrorState, // Left curly bracket + IterativeParsingObjectFinishState, // Right curly bracket + IterativeParsingErrorState, // Comma + IterativeParsingErrorState, // Colon + IterativeParsingMemberKeyState, // String + IterativeParsingErrorState, // False + IterativeParsingErrorState, // True + IterativeParsingErrorState, // Null + IterativeParsingErrorState // Number + }, + // MemberKey + { + IterativeParsingErrorState, // Left bracket + IterativeParsingErrorState, // Right bracket + IterativeParsingErrorState, // Left curly bracket + IterativeParsingErrorState, // Right curly bracket + IterativeParsingErrorState, // Comma + IterativeParsingKeyValueDelimiterState, // Colon + IterativeParsingErrorState, // String + IterativeParsingErrorState, // False + IterativeParsingErrorState, // True + IterativeParsingErrorState, // Null + IterativeParsingErrorState // Number + }, + // MemberValue + { + IterativeParsingErrorState, // Left bracket + IterativeParsingErrorState, // Right bracket + IterativeParsingErrorState, // Left curly bracket + IterativeParsingObjectFinishState, // Right curly bracket + IterativeParsingMemberDelimiterState, // Comma + IterativeParsingErrorState, // Colon + IterativeParsingErrorState, // String + IterativeParsingErrorState, // False + IterativeParsingErrorState, // True + IterativeParsingErrorState, // Null + IterativeParsingErrorState // Number + }, + // ObjectFinish(sink state) + { + IterativeParsingErrorState, IterativeParsingErrorState, IterativeParsingErrorState, IterativeParsingErrorState, IterativeParsingErrorState, + IterativeParsingErrorState, IterativeParsingErrorState, IterativeParsingErrorState, IterativeParsingErrorState, IterativeParsingErrorState, + IterativeParsingErrorState + }, + // ArrayInitial + { + IterativeParsingArrayInitialState, // Left bracket(push Element state) + IterativeParsingArrayFinishState, // Right bracket + IterativeParsingObjectInitialState, // Left curly bracket(push Element state) + IterativeParsingErrorState, // Right curly bracket + IterativeParsingErrorState, // Comma + IterativeParsingErrorState, // Colon + IterativeParsingElementState, // String + IterativeParsingElementState, // False + IterativeParsingElementState, // True + IterativeParsingElementState, // Null + IterativeParsingElementState // Number + }, + // Element + { + IterativeParsingErrorState, // Left bracket + IterativeParsingArrayFinishState, // Right bracket + IterativeParsingErrorState, // Left curly bracket + IterativeParsingErrorState, // Right curly bracket + IterativeParsingElementDelimiterState, // Comma + IterativeParsingErrorState, // Colon + IterativeParsingErrorState, // String + IterativeParsingErrorState, // False + IterativeParsingErrorState, // True + IterativeParsingErrorState, // Null + IterativeParsingErrorState // Number + }, + // ArrayFinish(sink state) + { + IterativeParsingErrorState, IterativeParsingErrorState, IterativeParsingErrorState, IterativeParsingErrorState, IterativeParsingErrorState, + IterativeParsingErrorState, IterativeParsingErrorState, IterativeParsingErrorState, IterativeParsingErrorState, IterativeParsingErrorState, + IterativeParsingErrorState + }, + // Single Value (sink state) + { + IterativeParsingErrorState, IterativeParsingErrorState, IterativeParsingErrorState, IterativeParsingErrorState, IterativeParsingErrorState, + IterativeParsingErrorState, IterativeParsingErrorState, IterativeParsingErrorState, IterativeParsingErrorState, IterativeParsingErrorState, + IterativeParsingErrorState + }, + // ElementDelimiter + { + IterativeParsingArrayInitialState, // Left bracket(push Element state) + IterativeParsingArrayFinishState, // Right bracket + IterativeParsingObjectInitialState, // Left curly bracket(push Element state) + IterativeParsingErrorState, // Right curly bracket + IterativeParsingErrorState, // Comma + IterativeParsingErrorState, // Colon + IterativeParsingElementState, // String + IterativeParsingElementState, // False + IterativeParsingElementState, // True + IterativeParsingElementState, // Null + IterativeParsingElementState // Number + }, + // MemberDelimiter + { + IterativeParsingErrorState, // Left bracket + IterativeParsingErrorState, // Right bracket + IterativeParsingErrorState, // Left curly bracket + IterativeParsingObjectFinishState, // Right curly bracket + IterativeParsingErrorState, // Comma + IterativeParsingErrorState, // Colon + IterativeParsingMemberKeyState, // String + IterativeParsingErrorState, // False + IterativeParsingErrorState, // True + IterativeParsingErrorState, // Null + IterativeParsingErrorState // Number + }, + // KeyValueDelimiter + { + IterativeParsingArrayInitialState, // Left bracket(push MemberValue state) + IterativeParsingErrorState, // Right bracket + IterativeParsingObjectInitialState, // Left curly bracket(push MemberValue state) + IterativeParsingErrorState, // Right curly bracket + IterativeParsingErrorState, // Comma + IterativeParsingErrorState, // Colon + IterativeParsingMemberValueState, // String + IterativeParsingMemberValueState, // False + IterativeParsingMemberValueState, // True + IterativeParsingMemberValueState, // Null + IterativeParsingMemberValueState // Number + }, + }; // End of G + + return static_cast<IterativeParsingState>(G[state][token]); + } + + // Make an advance in the token stream and state based on the candidate destination state which was returned by Transit(). + // May return a new state on state pop. + template <unsigned parseFlags, typename InputStream, typename Handler> + RAPIDJSON_FORCEINLINE IterativeParsingState Transit(IterativeParsingState src, Token token, IterativeParsingState dst, InputStream& is, Handler& handler) { + (void)token; + + switch (dst) { + case IterativeParsingErrorState: + return dst; + + case IterativeParsingObjectInitialState: + case IterativeParsingArrayInitialState: + { + // Push the state(Element or MemeberValue) if we are nested in another array or value of member. + // In this way we can get the correct state on ObjectFinish or ArrayFinish by frame pop. + IterativeParsingState n = src; + if (src == IterativeParsingArrayInitialState || src == IterativeParsingElementDelimiterState) + n = IterativeParsingElementState; + else if (src == IterativeParsingKeyValueDelimiterState) + n = IterativeParsingMemberValueState; + // Push current state. + *stack_.template Push<SizeType>(1) = n; + // Initialize and push the member/element count. + *stack_.template Push<SizeType>(1) = 0; + // Call handler + bool hr = (dst == IterativeParsingObjectInitialState) ? handler.StartObject() : handler.StartArray(); + // On handler short circuits the parsing. + if (!hr) { + RAPIDJSON_PARSE_ERROR_NORETURN(kParseErrorTermination, is.Tell()); + return IterativeParsingErrorState; + } + else { + is.Take(); + return dst; + } + } + + case IterativeParsingMemberKeyState: + ParseString<parseFlags>(is, handler, true); + if (HasParseError()) + return IterativeParsingErrorState; + else + return dst; + + case IterativeParsingKeyValueDelimiterState: + RAPIDJSON_ASSERT(token == ColonToken); + is.Take(); + return dst; + + case IterativeParsingMemberValueState: + // Must be non-compound value. Or it would be ObjectInitial or ArrayInitial state. + ParseValue<parseFlags>(is, handler); + if (HasParseError()) { + return IterativeParsingErrorState; + } + return dst; + + case IterativeParsingElementState: + // Must be non-compound value. Or it would be ObjectInitial or ArrayInitial state. + ParseValue<parseFlags>(is, handler); + if (HasParseError()) { + return IterativeParsingErrorState; + } + return dst; + + case IterativeParsingMemberDelimiterState: + case IterativeParsingElementDelimiterState: + is.Take(); + // Update member/element count. + *stack_.template Top<SizeType>() = *stack_.template Top<SizeType>() + 1; + return dst; + + case IterativeParsingObjectFinishState: + { + // Transit from delimiter is only allowed when trailing commas are enabled + if (!(parseFlags & kParseTrailingCommasFlag) && src == IterativeParsingMemberDelimiterState) { + RAPIDJSON_PARSE_ERROR_NORETURN(kParseErrorObjectMissName, is.Tell()); + return IterativeParsingErrorState; + } + // Get member count. + SizeType c = *stack_.template Pop<SizeType>(1); + // If the object is not empty, count the last member. + if (src == IterativeParsingMemberValueState) + ++c; + // Restore the state. + IterativeParsingState n = static_cast<IterativeParsingState>(*stack_.template Pop<SizeType>(1)); + // Transit to Finish state if this is the topmost scope. + if (n == IterativeParsingStartState) + n = IterativeParsingFinishState; + // Call handler + bool hr = handler.EndObject(c); + // On handler short circuits the parsing. + if (!hr) { + RAPIDJSON_PARSE_ERROR_NORETURN(kParseErrorTermination, is.Tell()); + return IterativeParsingErrorState; + } + else { + is.Take(); + return n; + } + } + + case IterativeParsingArrayFinishState: + { + // Transit from delimiter is only allowed when trailing commas are enabled + if (!(parseFlags & kParseTrailingCommasFlag) && src == IterativeParsingElementDelimiterState) { + RAPIDJSON_PARSE_ERROR_NORETURN(kParseErrorValueInvalid, is.Tell()); + return IterativeParsingErrorState; + } + // Get element count. + SizeType c = *stack_.template Pop<SizeType>(1); + // If the array is not empty, count the last element. + if (src == IterativeParsingElementState) + ++c; + // Restore the state. + IterativeParsingState n = static_cast<IterativeParsingState>(*stack_.template Pop<SizeType>(1)); + // Transit to Finish state if this is the topmost scope. + if (n == IterativeParsingStartState) + n = IterativeParsingFinishState; + // Call handler + bool hr = handler.EndArray(c); + // On handler short circuits the parsing. + if (!hr) { + RAPIDJSON_PARSE_ERROR_NORETURN(kParseErrorTermination, is.Tell()); + return IterativeParsingErrorState; + } + else { + is.Take(); + return n; + } + } + + default: + // This branch is for IterativeParsingValueState actually. + // Use `default:` rather than + // `case IterativeParsingValueState:` is for code coverage. + + // The IterativeParsingStartState is not enumerated in this switch-case. + // It is impossible for that case. And it can be caught by following assertion. + + // The IterativeParsingFinishState is not enumerated in this switch-case either. + // It is a "derivative" state which cannot triggered from Predict() directly. + // Therefore it cannot happen here. And it can be caught by following assertion. + RAPIDJSON_ASSERT(dst == IterativeParsingValueState); + + // Must be non-compound value. Or it would be ObjectInitial or ArrayInitial state. + ParseValue<parseFlags>(is, handler); + if (HasParseError()) { + return IterativeParsingErrorState; + } + return IterativeParsingFinishState; + } + } + + template <typename InputStream> + void HandleError(IterativeParsingState src, InputStream& is) { + if (HasParseError()) { + // Error flag has been set. + return; + } + + switch (src) { + case IterativeParsingStartState: RAPIDJSON_PARSE_ERROR(kParseErrorDocumentEmpty, is.Tell()); return; + case IterativeParsingFinishState: RAPIDJSON_PARSE_ERROR(kParseErrorDocumentRootNotSingular, is.Tell()); return; + case IterativeParsingObjectInitialState: + case IterativeParsingMemberDelimiterState: RAPIDJSON_PARSE_ERROR(kParseErrorObjectMissName, is.Tell()); return; + case IterativeParsingMemberKeyState: RAPIDJSON_PARSE_ERROR(kParseErrorObjectMissColon, is.Tell()); return; + case IterativeParsingMemberValueState: RAPIDJSON_PARSE_ERROR(kParseErrorObjectMissCommaOrCurlyBracket, is.Tell()); return; + case IterativeParsingKeyValueDelimiterState: + case IterativeParsingArrayInitialState: + case IterativeParsingElementDelimiterState: RAPIDJSON_PARSE_ERROR(kParseErrorValueInvalid, is.Tell()); return; + default: RAPIDJSON_ASSERT(src == IterativeParsingElementState); RAPIDJSON_PARSE_ERROR(kParseErrorArrayMissCommaOrSquareBracket, is.Tell()); return; + } + } + + RAPIDJSON_FORCEINLINE bool IsIterativeParsingDelimiterState(IterativeParsingState s) const { + return s >= IterativeParsingElementDelimiterState; + } + + RAPIDJSON_FORCEINLINE bool IsIterativeParsingCompleteState(IterativeParsingState s) const { + return s <= IterativeParsingErrorState; + } + + template <unsigned parseFlags, typename InputStream, typename Handler> + ParseResult IterativeParse(InputStream& is, Handler& handler) { + parseResult_.Clear(); + ClearStackOnExit scope(*this); + IterativeParsingState state = IterativeParsingStartState; + + SkipWhitespaceAndComments<parseFlags>(is); + RAPIDJSON_PARSE_ERROR_EARLY_RETURN(parseResult_); + while (is.Peek() != '\0') { + Token t = Tokenize(is.Peek()); + IterativeParsingState n = Predict(state, t); + IterativeParsingState d = Transit<parseFlags>(state, t, n, is, handler); + + if (d == IterativeParsingErrorState) { + HandleError(state, is); + break; + } + + state = d; + + // Do not further consume streams if a root JSON has been parsed. + if ((parseFlags & kParseStopWhenDoneFlag) && state == IterativeParsingFinishState) + break; + + SkipWhitespaceAndComments<parseFlags>(is); + RAPIDJSON_PARSE_ERROR_EARLY_RETURN(parseResult_); + } + + // Handle the end of file. + if (state != IterativeParsingFinishState) + HandleError(state, is); + + return parseResult_; + } + + static const size_t kDefaultStackCapacity = 256; //!< Default stack capacity in bytes for storing a single decoded string. + internal::Stack<StackAllocator> stack_; //!< A stack for storing decoded string temporarily during non-destructive parsing. + ParseResult parseResult_; + IterativeParsingState state_; +}; // class GenericReader + +//! Reader with UTF8 encoding and default allocator. +typedef GenericReader<UTF8<>, UTF8<> > Reader; + +RAPIDJSON_NAMESPACE_END + +#if defined(__clang__) || defined(_MSC_VER) +RAPIDJSON_DIAG_POP +#endif + + +#ifdef __GNUC__ +RAPIDJSON_DIAG_POP +#endif + +#endif // RAPIDJSON_READER_H_ + +// End file:reader.h + + +// Begin file: internal/meta.h +// already included +// End file:internal/meta.h + + +// Begin file: internal/strfunc.h +// Tencent is pleased to support the open source community by making RapidJSON available. +// +// Copyright (C) 2015 THL A29 Limited, a Tencent company, and Milo Yip. All rights reserved. +// +// Licensed under the MIT License (the "License"); you may not use this file except +// in compliance with the License. You may obtain a copy of the License at +// +// http://opensource.org/licenses/MIT +// +// Unless required by applicable law or agreed to in writing, software distributed +// under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR +// CONDITIONS OF ANY KIND, either express or implied. See the License for the +// specific language governing permissions and limitations under the License. + +#ifndef RAPIDJSON_INTERNAL_STRFUNC_H_ +#define RAPIDJSON_INTERNAL_STRFUNC_H_ + + +// Begin file: ../stream.h +// already included +// End file:../stream.h + +#include <cwchar> + +RAPIDJSON_NAMESPACE_BEGIN +namespace internal { + +//! Custom strlen() which works on different character types. +/*! \tparam Ch Character type (e.g. char, wchar_t, short) + \param s Null-terminated input string. + \return Number of characters in the string. + \note This has the same semantics as strlen(), the return value is not number of Unicode codepoints. +*/ +template <typename Ch> +inline SizeType StrLen(const Ch* s) { + RAPIDJSON_ASSERT(s != 0); + const Ch* p = s; + while (*p) ++p; + return SizeType(p - s); +} + +template <> +inline SizeType StrLen(const char* s) { + return SizeType(std::strlen(s)); +} + +template <> +inline SizeType StrLen(const wchar_t* s) { + return SizeType(std::wcslen(s)); +} + +//! Returns number of code points in a encoded string. +template<typename Encoding> +bool CountStringCodePoint(const typename Encoding::Ch* s, SizeType length, SizeType* outCount) { + RAPIDJSON_ASSERT(s != 0); + RAPIDJSON_ASSERT(outCount != 0); + GenericStringStream<Encoding> is(s); + const typename Encoding::Ch* end = s + length; + SizeType count = 0; + while (is.src_ < end) { + unsigned codepoint; + if (!Encoding::Decode(is, &codepoint)) + return false; + count++; + } + *outCount = count; + return true; +} + +} // namespace internal +RAPIDJSON_NAMESPACE_END + +#endif // RAPIDJSON_INTERNAL_STRFUNC_H_ + +// End file:internal/strfunc.h + + +// Begin file: memorystream.h +// already included +// End file:memorystream.h + + +// Begin file: encodedstream.h +// already included +// End file:encodedstream.h + +#include <new> // placement new +#include <limits> + +RAPIDJSON_DIAG_PUSH +#ifdef __clang__ +RAPIDJSON_DIAG_OFF(padded) +RAPIDJSON_DIAG_OFF(switch-enum) +RAPIDJSON_DIAG_OFF(c++98-compat) +#elif defined(_MSC_VER) +RAPIDJSON_DIAG_OFF(4127) // conditional expression is constant +RAPIDJSON_DIAG_OFF(4244) // conversion from kXxxFlags to 'uint16_t', possible loss of data +#endif + +#ifdef __GNUC__ +RAPIDJSON_DIAG_OFF(effc++) +#endif // __GNUC__ + +#ifndef RAPIDJSON_NOMEMBERITERATORCLASS +#include <iterator> // std::random_access_iterator_tag +#endif + +#if RAPIDJSON_HAS_CXX11_RVALUE_REFS +#include <utility> // std::move +#endif + +RAPIDJSON_NAMESPACE_BEGIN + +// Forward declaration. +template <typename Encoding, typename Allocator> +class GenericValue; + +template <typename Encoding, typename Allocator, typename StackAllocator> +class GenericDocument; + +//! Name-value pair in a JSON object value. +/*! + This class was internal to GenericValue. It used to be a inner struct. + But a compiler (IBM XL C/C++ for AIX) have reported to have problem with that so it moved as a namespace scope struct. + https://code.google.com/p/rapidjson/issues/detail?id=64 +*/ +template <typename Encoding, typename Allocator> +struct GenericMember { + GenericValue<Encoding, Allocator> name; //!< name of member (must be a string) + GenericValue<Encoding, Allocator> value; //!< value of member. +}; + +/////////////////////////////////////////////////////////////////////////////// +// GenericMemberIterator + +#ifndef RAPIDJSON_NOMEMBERITERATORCLASS + +//! (Constant) member iterator for a JSON object value +/*! + \tparam Const Is this a constant iterator? + \tparam Encoding Encoding of the value. (Even non-string values need to have the same encoding in a document) + \tparam Allocator Allocator type for allocating memory of object, array and string. + + This class implements a Random Access Iterator for GenericMember elements + of a GenericValue, see ISO/IEC 14882:2003(E) C++ standard, 24.1 [lib.iterator.requirements]. + + \note This iterator implementation is mainly intended to avoid implicit + conversions from iterator values to \c NULL, + e.g. from GenericValue::FindMember. + + \note Define \c RAPIDJSON_NOMEMBERITERATORCLASS to fall back to a + pointer-based implementation, if your platform doesn't provide + the C++ <iterator> header. + + \see GenericMember, GenericValue::MemberIterator, GenericValue::ConstMemberIterator + */ +template <bool Const, typename Encoding, typename Allocator> +class GenericMemberIterator { + + friend class GenericValue<Encoding,Allocator>; + template <bool, typename, typename> friend class GenericMemberIterator; + + typedef GenericMember<Encoding,Allocator> PlainType; + typedef typename internal::MaybeAddConst<Const,PlainType>::Type ValueType; + +public: + //! Iterator type itself + typedef GenericMemberIterator Iterator; + //! Constant iterator type + typedef GenericMemberIterator<true,Encoding,Allocator> ConstIterator; + //! Non-constant iterator type + typedef GenericMemberIterator<false,Encoding,Allocator> NonConstIterator; + + /** \name std::iterator_traits support */ + //@{ + typedef ValueType value_type; + typedef ValueType * pointer; + typedef ValueType & reference; + typedef std::ptrdiff_t difference_type; + typedef std::random_access_iterator_tag iterator_category; + //@} + + //! Pointer to (const) GenericMember + typedef pointer Pointer; + //! Reference to (const) GenericMember + typedef reference Reference; + //! Signed integer type (e.g. \c ptrdiff_t) + typedef difference_type DifferenceType; + + //! Default constructor (singular value) + /*! Creates an iterator pointing to no element. + \note All operations, except for comparisons, are undefined on such values. + */ + GenericMemberIterator() : ptr_() {} + + //! Iterator conversions to more const + /*! + \param it (Non-const) iterator to copy from + + Allows the creation of an iterator from another GenericMemberIterator + that is "less const". Especially, creating a non-constant iterator + from a constant iterator are disabled: + \li const -> non-const (not ok) + \li const -> const (ok) + \li non-const -> const (ok) + \li non-const -> non-const (ok) + + \note If the \c Const template parameter is already \c false, this + constructor effectively defines a regular copy-constructor. + Otherwise, the copy constructor is implicitly defined. + */ + GenericMemberIterator(const NonConstIterator & it) : ptr_(it.ptr_) {} + Iterator& operator=(const NonConstIterator & it) { ptr_ = it.ptr_; return *this; } + + //! @name stepping + //@{ + Iterator& operator++(){ ++ptr_; return *this; } + Iterator& operator--(){ --ptr_; return *this; } + Iterator operator++(int){ Iterator old(*this); ++ptr_; return old; } + Iterator operator--(int){ Iterator old(*this); --ptr_; return old; } + //@} + + //! @name increment/decrement + //@{ + Iterator operator+(DifferenceType n) const { return Iterator(ptr_+n); } + Iterator operator-(DifferenceType n) const { return Iterator(ptr_-n); } + + Iterator& operator+=(DifferenceType n) { ptr_+=n; return *this; } + Iterator& operator-=(DifferenceType n) { ptr_-=n; return *this; } + //@} + + //! @name relations + //@{ + bool operator==(ConstIterator that) const { return ptr_ == that.ptr_; } + bool operator!=(ConstIterator that) const { return ptr_ != that.ptr_; } + bool operator<=(ConstIterator that) const { return ptr_ <= that.ptr_; } + bool operator>=(ConstIterator that) const { return ptr_ >= that.ptr_; } + bool operator< (ConstIterator that) const { return ptr_ < that.ptr_; } + bool operator> (ConstIterator that) const { return ptr_ > that.ptr_; } + //@} + + //! @name dereference + //@{ + Reference operator*() const { return *ptr_; } + Pointer operator->() const { return ptr_; } + Reference operator[](DifferenceType n) const { return ptr_[n]; } + //@} + + //! Distance + DifferenceType operator-(ConstIterator that) const { return ptr_-that.ptr_; } + +private: + //! Internal constructor from plain pointer + explicit GenericMemberIterator(Pointer p) : ptr_(p) {} + + Pointer ptr_; //!< raw pointer +}; + +#else // RAPIDJSON_NOMEMBERITERATORCLASS + +// class-based member iterator implementation disabled, use plain pointers + +template <bool Const, typename Encoding, typename Allocator> +struct GenericMemberIterator; + +//! non-const GenericMemberIterator +template <typename Encoding, typename Allocator> +struct GenericMemberIterator<false,Encoding,Allocator> { + //! use plain pointer as iterator type + typedef GenericMember<Encoding,Allocator>* Iterator; +}; +//! const GenericMemberIterator +template <typename Encoding, typename Allocator> +struct GenericMemberIterator<true,Encoding,Allocator> { + //! use plain const pointer as iterator type + typedef const GenericMember<Encoding,Allocator>* Iterator; +}; + +#endif // RAPIDJSON_NOMEMBERITERATORCLASS + +/////////////////////////////////////////////////////////////////////////////// +// GenericStringRef + +//! Reference to a constant string (not taking a copy) +/*! + \tparam CharType character type of the string + + This helper class is used to automatically infer constant string + references for string literals, especially from \c const \b (!) + character arrays. + + The main use is for creating JSON string values without copying the + source string via an \ref Allocator. This requires that the referenced + string pointers have a sufficient lifetime, which exceeds the lifetime + of the associated GenericValue. + + \b Example + \code + Value v("foo"); // ok, no need to copy & calculate length + const char foo[] = "foo"; + v.SetString(foo); // ok + + const char* bar = foo; + // Value x(bar); // not ok, can't rely on bar's lifetime + Value x(StringRef(bar)); // lifetime explicitly guaranteed by user + Value y(StringRef(bar, 3)); // ok, explicitly pass length + \endcode + + \see StringRef, GenericValue::SetString +*/ +template<typename CharType> +struct GenericStringRef { + typedef CharType Ch; //!< character type of the string + + //! Create string reference from \c const character array +#ifndef __clang__ // -Wdocumentation + /*! + This constructor implicitly creates a constant string reference from + a \c const character array. It has better performance than + \ref StringRef(const CharType*) by inferring the string \ref length + from the array length, and also supports strings containing null + characters. + + \tparam N length of the string, automatically inferred + + \param str Constant character array, lifetime assumed to be longer + than the use of the string in e.g. a GenericValue + + \post \ref s == str + + \note Constant complexity. + \note There is a hidden, private overload to disallow references to + non-const character arrays to be created via this constructor. + By this, e.g. function-scope arrays used to be filled via + \c snprintf are excluded from consideration. + In such cases, the referenced string should be \b copied to the + GenericValue instead. + */ +#endif + template<SizeType N> + GenericStringRef(const CharType (&str)[N]) RAPIDJSON_NOEXCEPT + : s(str), length(N-1) {} + + //! Explicitly create string reference from \c const character pointer +#ifndef __clang__ // -Wdocumentation + /*! + This constructor can be used to \b explicitly create a reference to + a constant string pointer. + + \see StringRef(const CharType*) + + \param str Constant character pointer, lifetime assumed to be longer + than the use of the string in e.g. a GenericValue + + \post \ref s == str + + \note There is a hidden, private overload to disallow references to + non-const character arrays to be created via this constructor. + By this, e.g. function-scope arrays used to be filled via + \c snprintf are excluded from consideration. + In such cases, the referenced string should be \b copied to the + GenericValue instead. + */ +#endif + explicit GenericStringRef(const CharType* str) + : s(str), length(NotNullStrLen(str)) {} + + //! Create constant string reference from pointer and length +#ifndef __clang__ // -Wdocumentation + /*! \param str constant string, lifetime assumed to be longer than the use of the string in e.g. a GenericValue + \param len length of the string, excluding the trailing NULL terminator + + \post \ref s == str && \ref length == len + \note Constant complexity. + */ +#endif + GenericStringRef(const CharType* str, SizeType len) + : s(RAPIDJSON_LIKELY(str) ? str : emptyString), length(len) { RAPIDJSON_ASSERT(str != 0 || len == 0u); } + + GenericStringRef(const GenericStringRef& rhs) : s(rhs.s), length(rhs.length) {} + + //! implicit conversion to plain CharType pointer + operator const Ch *() const { return s; } + + const Ch* const s; //!< plain CharType pointer + const SizeType length; //!< length of the string (excluding the trailing NULL terminator) + +private: + SizeType NotNullStrLen(const CharType* str) { + RAPIDJSON_ASSERT(str != 0); + return internal::StrLen(str); + } + + /// Empty string - used when passing in a NULL pointer + static const Ch emptyString[]; + + //! Disallow construction from non-const array + template<SizeType N> + GenericStringRef(CharType (&str)[N]) /* = delete */; + //! Copy assignment operator not permitted - immutable type + GenericStringRef& operator=(const GenericStringRef& rhs) /* = delete */; +}; + +template<typename CharType> +const CharType GenericStringRef<CharType>::emptyString[] = { CharType() }; + +//! Mark a character pointer as constant string +/*! Mark a plain character pointer as a "string literal". This function + can be used to avoid copying a character string to be referenced as a + value in a JSON GenericValue object, if the string's lifetime is known + to be valid long enough. + \tparam CharType Character type of the string + \param str Constant string, lifetime assumed to be longer than the use of the string in e.g. a GenericValue + \return GenericStringRef string reference object + \relatesalso GenericStringRef + + \see GenericValue::GenericValue(StringRefType), GenericValue::operator=(StringRefType), GenericValue::SetString(StringRefType), GenericValue::PushBack(StringRefType, Allocator&), GenericValue::AddMember +*/ +template<typename CharType> +inline GenericStringRef<CharType> StringRef(const CharType* str) { + return GenericStringRef<CharType>(str); +} + +//! Mark a character pointer as constant string +/*! Mark a plain character pointer as a "string literal". This function + can be used to avoid copying a character string to be referenced as a + value in a JSON GenericValue object, if the string's lifetime is known + to be valid long enough. + + This version has better performance with supplied length, and also + supports string containing null characters. + + \tparam CharType character type of the string + \param str Constant string, lifetime assumed to be longer than the use of the string in e.g. a GenericValue + \param length The length of source string. + \return GenericStringRef string reference object + \relatesalso GenericStringRef +*/ +template<typename CharType> +inline GenericStringRef<CharType> StringRef(const CharType* str, size_t length) { + return GenericStringRef<CharType>(str, SizeType(length)); +} + +#if RAPIDJSON_HAS_STDSTRING +//! Mark a string object as constant string +/*! Mark a string object (e.g. \c std::string) as a "string literal". + This function can be used to avoid copying a string to be referenced as a + value in a JSON GenericValue object, if the string's lifetime is known + to be valid long enough. + + \tparam CharType character type of the string + \param str Constant string, lifetime assumed to be longer than the use of the string in e.g. a GenericValue + \return GenericStringRef string reference object + \relatesalso GenericStringRef + \note Requires the definition of the preprocessor symbol \ref RAPIDJSON_HAS_STDSTRING. +*/ +template<typename CharType> +inline GenericStringRef<CharType> StringRef(const std::basic_string<CharType>& str) { + return GenericStringRef<CharType>(str.data(), SizeType(str.size())); +} +#endif + +/////////////////////////////////////////////////////////////////////////////// +// GenericValue type traits +namespace internal { + +template <typename T, typename Encoding = void, typename Allocator = void> +struct IsGenericValueImpl : FalseType {}; + +// select candidates according to nested encoding and allocator types +template <typename T> struct IsGenericValueImpl<T, typename Void<typename T::EncodingType>::Type, typename Void<typename T::AllocatorType>::Type> + : IsBaseOf<GenericValue<typename T::EncodingType, typename T::AllocatorType>, T>::Type {}; + +// helper to match arbitrary GenericValue instantiations, including derived classes +template <typename T> struct IsGenericValue : IsGenericValueImpl<T>::Type {}; + +} // namespace internal + +/////////////////////////////////////////////////////////////////////////////// +// TypeHelper + +namespace internal { + +template <typename ValueType, typename T> +struct TypeHelper {}; + +template<typename ValueType> +struct TypeHelper<ValueType, bool> { + static bool Is(const ValueType& v) { return v.IsBool(); } + static bool Get(const ValueType& v) { return v.GetBool(); } + static ValueType& Set(ValueType& v, bool data) { return v.SetBool(data); } + static ValueType& Set(ValueType& v, bool data, typename ValueType::AllocatorType&) { return v.SetBool(data); } +}; + +template<typename ValueType> +struct TypeHelper<ValueType, int> { + static bool Is(const ValueType& v) { return v.IsInt(); } + static int Get(const ValueType& v) { return v.GetInt(); } + static ValueType& Set(ValueType& v, int data) { return v.SetInt(data); } + static ValueType& Set(ValueType& v, int data, typename ValueType::AllocatorType&) { return v.SetInt(data); } +}; + +template<typename ValueType> +struct TypeHelper<ValueType, unsigned> { + static bool Is(const ValueType& v) { return v.IsUint(); } + static unsigned Get(const ValueType& v) { return v.GetUint(); } + static ValueType& Set(ValueType& v, unsigned data) { return v.SetUint(data); } + static ValueType& Set(ValueType& v, unsigned data, typename ValueType::AllocatorType&) { return v.SetUint(data); } +}; + +#ifdef _MSC_VER +RAPIDJSON_STATIC_ASSERT(sizeof(long) == sizeof(int)); +template<typename ValueType> +struct TypeHelper<ValueType, long> { + static bool Is(const ValueType& v) { return v.IsInt(); } + static long Get(const ValueType& v) { return v.GetInt(); } + static ValueType& Set(ValueType& v, long data) { return v.SetInt(data); } + static ValueType& Set(ValueType& v, long data, typename ValueType::AllocatorType&) { return v.SetInt(data); } +}; + +RAPIDJSON_STATIC_ASSERT(sizeof(unsigned long) == sizeof(unsigned)); +template<typename ValueType> +struct TypeHelper<ValueType, unsigned long> { + static bool Is(const ValueType& v) { return v.IsUint(); } + static unsigned long Get(const ValueType& v) { return v.GetUint(); } + static ValueType& Set(ValueType& v, unsigned long data) { return v.SetUint(data); } + static ValueType& Set(ValueType& v, unsigned long data, typename ValueType::AllocatorType&) { return v.SetUint(data); } +}; +#endif + +template<typename ValueType> +struct TypeHelper<ValueType, int64_t> { + static bool Is(const ValueType& v) { return v.IsInt64(); } + static int64_t Get(const ValueType& v) { return v.GetInt64(); } + static ValueType& Set(ValueType& v, int64_t data) { return v.SetInt64(data); } + static ValueType& Set(ValueType& v, int64_t data, typename ValueType::AllocatorType&) { return v.SetInt64(data); } +}; + +template<typename ValueType> +struct TypeHelper<ValueType, uint64_t> { + static bool Is(const ValueType& v) { return v.IsUint64(); } + static uint64_t Get(const ValueType& v) { return v.GetUint64(); } + static ValueType& Set(ValueType& v, uint64_t data) { return v.SetUint64(data); } + static ValueType& Set(ValueType& v, uint64_t data, typename ValueType::AllocatorType&) { return v.SetUint64(data); } +}; + +template<typename ValueType> +struct TypeHelper<ValueType, double> { + static bool Is(const ValueType& v) { return v.IsDouble(); } + static double Get(const ValueType& v) { return v.GetDouble(); } + static ValueType& Set(ValueType& v, double data) { return v.SetDouble(data); } + static ValueType& Set(ValueType& v, double data, typename ValueType::AllocatorType&) { return v.SetDouble(data); } +}; + +template<typename ValueType> +struct TypeHelper<ValueType, float> { + static bool Is(const ValueType& v) { return v.IsFloat(); } + static float Get(const ValueType& v) { return v.GetFloat(); } + static ValueType& Set(ValueType& v, float data) { return v.SetFloat(data); } + static ValueType& Set(ValueType& v, float data, typename ValueType::AllocatorType&) { return v.SetFloat(data); } +}; + +template<typename ValueType> +struct TypeHelper<ValueType, const typename ValueType::Ch*> { + typedef const typename ValueType::Ch* StringType; + static bool Is(const ValueType& v) { return v.IsString(); } + static StringType Get(const ValueType& v) { return v.GetString(); } + static ValueType& Set(ValueType& v, const StringType data) { return v.SetString(typename ValueType::StringRefType(data)); } + static ValueType& Set(ValueType& v, const StringType data, typename ValueType::AllocatorType& a) { return v.SetString(data, a); } +}; + +#if RAPIDJSON_HAS_STDSTRING +template<typename ValueType> +struct TypeHelper<ValueType, std::basic_string<typename ValueType::Ch> > { + typedef std::basic_string<typename ValueType::Ch> StringType; + static bool Is(const ValueType& v) { return v.IsString(); } + static StringType Get(const ValueType& v) { return StringType(v.GetString(), v.GetStringLength()); } + static ValueType& Set(ValueType& v, const StringType& data, typename ValueType::AllocatorType& a) { return v.SetString(data, a); } +}; +#endif + +template<typename ValueType> +struct TypeHelper<ValueType, typename ValueType::Array> { + typedef typename ValueType::Array ArrayType; + static bool Is(const ValueType& v) { return v.IsArray(); } + static ArrayType Get(ValueType& v) { return v.GetArray(); } + static ValueType& Set(ValueType& v, ArrayType data) { return v = data; } + static ValueType& Set(ValueType& v, ArrayType data, typename ValueType::AllocatorType&) { return v = data; } +}; + +template<typename ValueType> +struct TypeHelper<ValueType, typename ValueType::ConstArray> { + typedef typename ValueType::ConstArray ArrayType; + static bool Is(const ValueType& v) { return v.IsArray(); } + static ArrayType Get(const ValueType& v) { return v.GetArray(); } +}; + +template<typename ValueType> +struct TypeHelper<ValueType, typename ValueType::Object> { + typedef typename ValueType::Object ObjectType; + static bool Is(const ValueType& v) { return v.IsObject(); } + static ObjectType Get(ValueType& v) { return v.GetObject(); } + static ValueType& Set(ValueType& v, ObjectType data) { return v = data; } + static ValueType& Set(ValueType& v, ObjectType data, typename ValueType::AllocatorType&) { return v = data; } +}; + +template<typename ValueType> +struct TypeHelper<ValueType, typename ValueType::ConstObject> { + typedef typename ValueType::ConstObject ObjectType; + static bool Is(const ValueType& v) { return v.IsObject(); } + static ObjectType Get(const ValueType& v) { return v.GetObject(); } +}; + +} // namespace internal + +// Forward declarations +template <bool, typename> class GenericArray; +template <bool, typename> class GenericObject; + +/////////////////////////////////////////////////////////////////////////////// +// GenericValue + +//! Represents a JSON value. Use Value for UTF8 encoding and default allocator. +/*! + A JSON value can be one of 7 types. This class is a variant type supporting + these types. + + Use the Value if UTF8 and default allocator + + \tparam Encoding Encoding of the value. (Even non-string values need to have the same encoding in a document) + \tparam Allocator Allocator type for allocating memory of object, array and string. +*/ +template <typename Encoding, typename Allocator = MemoryPoolAllocator<> > +class GenericValue { +public: + //! Name-value pair in an object. + typedef GenericMember<Encoding, Allocator> Member; + typedef Encoding EncodingType; //!< Encoding type from template parameter. + typedef Allocator AllocatorType; //!< Allocator type from template parameter. + typedef typename Encoding::Ch Ch; //!< Character type derived from Encoding. + typedef GenericStringRef<Ch> StringRefType; //!< Reference to a constant string + typedef typename GenericMemberIterator<false,Encoding,Allocator>::Iterator MemberIterator; //!< Member iterator for iterating in object. + typedef typename GenericMemberIterator<true,Encoding,Allocator>::Iterator ConstMemberIterator; //!< Constant member iterator for iterating in object. + typedef GenericValue* ValueIterator; //!< Value iterator for iterating in array. + typedef const GenericValue* ConstValueIterator; //!< Constant value iterator for iterating in array. + typedef GenericValue<Encoding, Allocator> ValueType; //!< Value type of itself. + typedef GenericArray<false, ValueType> Array; + typedef GenericArray<true, ValueType> ConstArray; + typedef GenericObject<false, ValueType> Object; + typedef GenericObject<true, ValueType> ConstObject; + + //!@name Constructors and destructor. + //@{ + + //! Default constructor creates a null value. + GenericValue() RAPIDJSON_NOEXCEPT : data_() { data_.f.flags = kNullFlag; } + +#if RAPIDJSON_HAS_CXX11_RVALUE_REFS + //! Move constructor in C++11 + GenericValue(GenericValue&& rhs) RAPIDJSON_NOEXCEPT : data_(rhs.data_) { + rhs.data_.f.flags = kNullFlag; // give up contents + } +#endif + +private: + //! Copy constructor is not permitted. + GenericValue(const GenericValue& rhs); + +#if RAPIDJSON_HAS_CXX11_RVALUE_REFS + //! Moving from a GenericDocument is not permitted. + template <typename StackAllocator> + GenericValue(GenericDocument<Encoding,Allocator,StackAllocator>&& rhs); + + //! Move assignment from a GenericDocument is not permitted. + template <typename StackAllocator> + GenericValue& operator=(GenericDocument<Encoding,Allocator,StackAllocator>&& rhs); +#endif + +public: + + //! Constructor with JSON value type. + /*! This creates a Value of specified type with default content. + \param type Type of the value. + \note Default content for number is zero. + */ + explicit GenericValue(Type type) RAPIDJSON_NOEXCEPT : data_() { + static const uint16_t defaultFlags[] = { + kNullFlag, kFalseFlag, kTrueFlag, kObjectFlag, kArrayFlag, kShortStringFlag, + kNumberAnyFlag + }; + RAPIDJSON_NOEXCEPT_ASSERT(type >= kNullType && type <= kNumberType); + data_.f.flags = defaultFlags[type]; + + // Use ShortString to store empty string. + if (type == kStringType) + data_.ss.SetLength(0); + } + + //! Explicit copy constructor (with allocator) + /*! Creates a copy of a Value by using the given Allocator + \tparam SourceAllocator allocator of \c rhs + \param rhs Value to copy from (read-only) + \param allocator Allocator for allocating copied elements and buffers. Commonly use GenericDocument::GetAllocator(). + \param copyConstStrings Force copying of constant strings (e.g. referencing an in-situ buffer) + \see CopyFrom() + */ + template <typename SourceAllocator> + GenericValue(const GenericValue<Encoding,SourceAllocator>& rhs, Allocator& allocator, bool copyConstStrings = false) { + switch (rhs.GetType()) { + case kObjectType: { + SizeType count = rhs.data_.o.size; + Member* lm = reinterpret_cast<Member*>(allocator.Malloc(count * sizeof(Member))); + const typename GenericValue<Encoding,SourceAllocator>::Member* rm = rhs.GetMembersPointer(); + for (SizeType i = 0; i < count; i++) { + new (&lm[i].name) GenericValue(rm[i].name, allocator, copyConstStrings); + new (&lm[i].value) GenericValue(rm[i].value, allocator, copyConstStrings); + } + data_.f.flags = kObjectFlag; + data_.o.size = data_.o.capacity = count; + SetMembersPointer(lm); + } + break; + case kArrayType: { + SizeType count = rhs.data_.a.size; + GenericValue* le = reinterpret_cast<GenericValue*>(allocator.Malloc(count * sizeof(GenericValue))); + const GenericValue<Encoding,SourceAllocator>* re = rhs.GetElementsPointer(); + for (SizeType i = 0; i < count; i++) + new (&le[i]) GenericValue(re[i], allocator, copyConstStrings); + data_.f.flags = kArrayFlag; + data_.a.size = data_.a.capacity = count; + SetElementsPointer(le); + } + break; + case kStringType: + if (rhs.data_.f.flags == kConstStringFlag && !copyConstStrings) { + data_.f.flags = rhs.data_.f.flags; + data_ = *reinterpret_cast<const Data*>(&rhs.data_); + } + else + SetStringRaw(StringRef(rhs.GetString(), rhs.GetStringLength()), allocator); + break; + default: + data_.f.flags = rhs.data_.f.flags; + data_ = *reinterpret_cast<const Data*>(&rhs.data_); + break; + } + } + + //! Constructor for boolean value. + /*! \param b Boolean value + \note This constructor is limited to \em real boolean values and rejects + implicitly converted types like arbitrary pointers. Use an explicit cast + to \c bool, if you want to construct a boolean JSON value in such cases. + */ +#ifndef RAPIDJSON_DOXYGEN_RUNNING // hide SFINAE from Doxygen + template <typename T> + explicit GenericValue(T b, RAPIDJSON_ENABLEIF((internal::IsSame<bool, T>))) RAPIDJSON_NOEXCEPT // See #472 +#else + explicit GenericValue(bool b) RAPIDJSON_NOEXCEPT +#endif + : data_() { + // safe-guard against failing SFINAE + RAPIDJSON_STATIC_ASSERT((internal::IsSame<bool,T>::Value)); + data_.f.flags = b ? kTrueFlag : kFalseFlag; + } + + //! Constructor for int value. + explicit GenericValue(int i) RAPIDJSON_NOEXCEPT : data_() { + data_.n.i64 = i; + data_.f.flags = (i >= 0) ? (kNumberIntFlag | kUintFlag | kUint64Flag) : kNumberIntFlag; + } + + //! Constructor for unsigned value. + explicit GenericValue(unsigned u) RAPIDJSON_NOEXCEPT : data_() { + data_.n.u64 = u; + data_.f.flags = (u & 0x80000000) ? kNumberUintFlag : (kNumberUintFlag | kIntFlag | kInt64Flag); + } + + //! Constructor for int64_t value. + explicit GenericValue(int64_t i64) RAPIDJSON_NOEXCEPT : data_() { + data_.n.i64 = i64; + data_.f.flags = kNumberInt64Flag; + if (i64 >= 0) { + data_.f.flags |= kNumberUint64Flag; + if (!(static_cast<uint64_t>(i64) & RAPIDJSON_UINT64_C2(0xFFFFFFFF, 0x00000000))) + data_.f.flags |= kUintFlag; + if (!(static_cast<uint64_t>(i64) & RAPIDJSON_UINT64_C2(0xFFFFFFFF, 0x80000000))) + data_.f.flags |= kIntFlag; + } + else if (i64 >= static_cast<int64_t>(RAPIDJSON_UINT64_C2(0xFFFFFFFF, 0x80000000))) + data_.f.flags |= kIntFlag; + } + + //! Constructor for uint64_t value. + explicit GenericValue(uint64_t u64) RAPIDJSON_NOEXCEPT : data_() { + data_.n.u64 = u64; + data_.f.flags = kNumberUint64Flag; + if (!(u64 & RAPIDJSON_UINT64_C2(0x80000000, 0x00000000))) + data_.f.flags |= kInt64Flag; + if (!(u64 & RAPIDJSON_UINT64_C2(0xFFFFFFFF, 0x00000000))) + data_.f.flags |= kUintFlag; + if (!(u64 & RAPIDJSON_UINT64_C2(0xFFFFFFFF, 0x80000000))) + data_.f.flags |= kIntFlag; + } + + //! Constructor for double value. + explicit GenericValue(double d) RAPIDJSON_NOEXCEPT : data_() { data_.n.d = d; data_.f.flags = kNumberDoubleFlag; } + + //! Constructor for float value. + explicit GenericValue(float f) RAPIDJSON_NOEXCEPT : data_() { data_.n.d = static_cast<double>(f); data_.f.flags = kNumberDoubleFlag; } + + //! Constructor for constant string (i.e. do not make a copy of string) + GenericValue(const Ch* s, SizeType length) RAPIDJSON_NOEXCEPT : data_() { SetStringRaw(StringRef(s, length)); } + + //! Constructor for constant string (i.e. do not make a copy of string) + explicit GenericValue(StringRefType s) RAPIDJSON_NOEXCEPT : data_() { SetStringRaw(s); } + + //! Constructor for copy-string (i.e. do make a copy of string) + GenericValue(const Ch* s, SizeType length, Allocator& allocator) : data_() { SetStringRaw(StringRef(s, length), allocator); } + + //! Constructor for copy-string (i.e. do make a copy of string) + GenericValue(const Ch*s, Allocator& allocator) : data_() { SetStringRaw(StringRef(s), allocator); } + +#if RAPIDJSON_HAS_STDSTRING + //! Constructor for copy-string from a string object (i.e. do make a copy of string) + /*! \note Requires the definition of the preprocessor symbol \ref RAPIDJSON_HAS_STDSTRING. + */ + GenericValue(const std::basic_string<Ch>& s, Allocator& allocator) : data_() { SetStringRaw(StringRef(s), allocator); } +#endif + + //! Constructor for Array. + /*! + \param a An array obtained by \c GetArray(). + \note \c Array is always pass-by-value. + \note the source array is moved into this value and the sourec array becomes empty. + */ + GenericValue(Array a) RAPIDJSON_NOEXCEPT : data_(a.value_.data_) { + a.value_.data_ = Data(); + a.value_.data_.f.flags = kArrayFlag; + } + + //! Constructor for Object. + /*! + \param o An object obtained by \c GetObject(). + \note \c Object is always pass-by-value. + \note the source object is moved into this value and the sourec object becomes empty. + */ + GenericValue(Object o) RAPIDJSON_NOEXCEPT : data_(o.value_.data_) { + o.value_.data_ = Data(); + o.value_.data_.f.flags = kObjectFlag; + } + + //! Destructor. + /*! Need to destruct elements of array, members of object, or copy-string. + */ + ~GenericValue() { + if (Allocator::kNeedFree) { // Shortcut by Allocator's trait + switch(data_.f.flags) { + case kArrayFlag: + { + GenericValue* e = GetElementsPointer(); + for (GenericValue* v = e; v != e + data_.a.size; ++v) + v->~GenericValue(); + Allocator::Free(e); + } + break; + + case kObjectFlag: + for (MemberIterator m = MemberBegin(); m != MemberEnd(); ++m) + m->~Member(); + Allocator::Free(GetMembersPointer()); + break; + + case kCopyStringFlag: + Allocator::Free(const_cast<Ch*>(GetStringPointer())); + break; + + default: + break; // Do nothing for other types. + } + } + } + + //@} + + //!@name Assignment operators + //@{ + + //! Assignment with move semantics. + /*! \param rhs Source of the assignment. It will become a null value after assignment. + */ + GenericValue& operator=(GenericValue& rhs) RAPIDJSON_NOEXCEPT { + if (RAPIDJSON_LIKELY(this != &rhs)) { + this->~GenericValue(); + RawAssign(rhs); + } + return *this; + } + +#if RAPIDJSON_HAS_CXX11_RVALUE_REFS + //! Move assignment in C++11 + GenericValue& operator=(GenericValue&& rhs) RAPIDJSON_NOEXCEPT { + return *this = rhs.Move(); + } +#endif + + //! Assignment of constant string reference (no copy) + /*! \param str Constant string reference to be assigned + \note This overload is needed to avoid clashes with the generic primitive type assignment overload below. + \see GenericStringRef, operator=(T) + */ + GenericValue& operator=(StringRefType str) RAPIDJSON_NOEXCEPT { + GenericValue s(str); + return *this = s; + } + + //! Assignment with primitive types. + /*! \tparam T Either \ref Type, \c int, \c unsigned, \c int64_t, \c uint64_t + \param value The value to be assigned. + + \note The source type \c T explicitly disallows all pointer types, + especially (\c const) \ref Ch*. This helps avoiding implicitly + referencing character strings with insufficient lifetime, use + \ref SetString(const Ch*, Allocator&) (for copying) or + \ref StringRef() (to explicitly mark the pointer as constant) instead. + All other pointer types would implicitly convert to \c bool, + use \ref SetBool() instead. + */ + template <typename T> + RAPIDJSON_DISABLEIF_RETURN((internal::IsPointer<T>), (GenericValue&)) + operator=(T value) { + GenericValue v(value); + return *this = v; + } + + //! Deep-copy assignment from Value + /*! Assigns a \b copy of the Value to the current Value object + \tparam SourceAllocator Allocator type of \c rhs + \param rhs Value to copy from (read-only) + \param allocator Allocator to use for copying + \param copyConstStrings Force copying of constant strings (e.g. referencing an in-situ buffer) + */ + template <typename SourceAllocator> + GenericValue& CopyFrom(const GenericValue<Encoding, SourceAllocator>& rhs, Allocator& allocator, bool copyConstStrings = false) { + RAPIDJSON_ASSERT(static_cast<void*>(this) != static_cast<void const*>(&rhs)); + this->~GenericValue(); + new (this) GenericValue(rhs, allocator, copyConstStrings); + return *this; + } + + //! Exchange the contents of this value with those of other. + /*! + \param other Another value. + \note Constant complexity. + */ + GenericValue& Swap(GenericValue& other) RAPIDJSON_NOEXCEPT { + GenericValue temp; + temp.RawAssign(*this); + RawAssign(other); + other.RawAssign(temp); + return *this; + } + + //! free-standing swap function helper + /*! + Helper function to enable support for common swap implementation pattern based on \c std::swap: + \code + void swap(MyClass& a, MyClass& b) { + using std::swap; + swap(a.value, b.value); + // ... + } + \endcode + \see Swap() + */ + friend inline void swap(GenericValue& a, GenericValue& b) RAPIDJSON_NOEXCEPT { a.Swap(b); } + + //! Prepare Value for move semantics + /*! \return *this */ + GenericValue& Move() RAPIDJSON_NOEXCEPT { return *this; } + //@} + + //!@name Equal-to and not-equal-to operators + //@{ + //! Equal-to operator + /*! + \note If an object contains duplicated named member, comparing equality with any object is always \c false. + \note Linear time complexity (number of all values in the subtree and total lengths of all strings). + */ + template <typename SourceAllocator> + bool operator==(const GenericValue<Encoding, SourceAllocator>& rhs) const { + typedef GenericValue<Encoding, SourceAllocator> RhsType; + if (GetType() != rhs.GetType()) + return false; + + switch (GetType()) { + case kObjectType: // Warning: O(n^2) inner-loop + if (data_.o.size != rhs.data_.o.size) + return false; + for (ConstMemberIterator lhsMemberItr = MemberBegin(); lhsMemberItr != MemberEnd(); ++lhsMemberItr) { + typename RhsType::ConstMemberIterator rhsMemberItr = rhs.FindMember(lhsMemberItr->name); + if (rhsMemberItr == rhs.MemberEnd() || lhsMemberItr->value != rhsMemberItr->value) + return false; + } + return true; + + case kArrayType: + if (data_.a.size != rhs.data_.a.size) + return false; + for (SizeType i = 0; i < data_.a.size; i++) + if ((*this)[i] != rhs[i]) + return false; + return true; + + case kStringType: + return StringEqual(rhs); + + case kNumberType: + if (IsDouble() || rhs.IsDouble()) { + double a = GetDouble(); // May convert from integer to double. + double b = rhs.GetDouble(); // Ditto + return a >= b && a <= b; // Prevent -Wfloat-equal + } + else + return data_.n.u64 == rhs.data_.n.u64; + + default: + return true; + } + } + + //! Equal-to operator with const C-string pointer + bool operator==(const Ch* rhs) const { return *this == GenericValue(StringRef(rhs)); } + +#if RAPIDJSON_HAS_STDSTRING + //! Equal-to operator with string object + /*! \note Requires the definition of the preprocessor symbol \ref RAPIDJSON_HAS_STDSTRING. + */ + bool operator==(const std::basic_string<Ch>& rhs) const { return *this == GenericValue(StringRef(rhs)); } +#endif + + //! Equal-to operator with primitive types + /*! \tparam T Either \ref Type, \c int, \c unsigned, \c int64_t, \c uint64_t, \c double, \c true, \c false + */ + template <typename T> RAPIDJSON_DISABLEIF_RETURN((internal::OrExpr<internal::IsPointer<T>,internal::IsGenericValue<T> >), (bool)) operator==(const T& rhs) const { return *this == GenericValue(rhs); } + + //! Not-equal-to operator + /*! \return !(*this == rhs) + */ + template <typename SourceAllocator> + bool operator!=(const GenericValue<Encoding, SourceAllocator>& rhs) const { return !(*this == rhs); } + + //! Not-equal-to operator with const C-string pointer + bool operator!=(const Ch* rhs) const { return !(*this == rhs); } + + //! Not-equal-to operator with arbitrary types + /*! \return !(*this == rhs) + */ + template <typename T> RAPIDJSON_DISABLEIF_RETURN((internal::IsGenericValue<T>), (bool)) operator!=(const T& rhs) const { return !(*this == rhs); } + + //! Equal-to operator with arbitrary types (symmetric version) + /*! \return (rhs == lhs) + */ + template <typename T> friend RAPIDJSON_DISABLEIF_RETURN((internal::IsGenericValue<T>), (bool)) operator==(const T& lhs, const GenericValue& rhs) { return rhs == lhs; } + + //! Not-Equal-to operator with arbitrary types (symmetric version) + /*! \return !(rhs == lhs) + */ + template <typename T> friend RAPIDJSON_DISABLEIF_RETURN((internal::IsGenericValue<T>), (bool)) operator!=(const T& lhs, const GenericValue& rhs) { return !(rhs == lhs); } + //@} + + //!@name Type + //@{ + + Type GetType() const { return static_cast<Type>(data_.f.flags & kTypeMask); } + bool IsNull() const { return data_.f.flags == kNullFlag; } + bool IsFalse() const { return data_.f.flags == kFalseFlag; } + bool IsTrue() const { return data_.f.flags == kTrueFlag; } + bool IsBool() const { return (data_.f.flags & kBoolFlag) != 0; } + bool IsObject() const { return data_.f.flags == kObjectFlag; } + bool IsArray() const { return data_.f.flags == kArrayFlag; } + bool IsNumber() const { return (data_.f.flags & kNumberFlag) != 0; } + bool IsInt() const { return (data_.f.flags & kIntFlag) != 0; } + bool IsUint() const { return (data_.f.flags & kUintFlag) != 0; } + bool IsInt64() const { return (data_.f.flags & kInt64Flag) != 0; } + bool IsUint64() const { return (data_.f.flags & kUint64Flag) != 0; } + bool IsDouble() const { return (data_.f.flags & kDoubleFlag) != 0; } + bool IsString() const { return (data_.f.flags & kStringFlag) != 0; } + + // Checks whether a number can be losslessly converted to a double. + bool IsLosslessDouble() const { + if (!IsNumber()) return false; + if (IsUint64()) { + uint64_t u = GetUint64(); + volatile double d = static_cast<double>(u); + return (d >= 0.0) + && (d < static_cast<double>((std::numeric_limits<uint64_t>::max)())) + && (u == static_cast<uint64_t>(d)); + } + if (IsInt64()) { + int64_t i = GetInt64(); + volatile double d = static_cast<double>(i); + return (d >= static_cast<double>((std::numeric_limits<int64_t>::min)())) + && (d < static_cast<double>((std::numeric_limits<int64_t>::max)())) + && (i == static_cast<int64_t>(d)); + } + return true; // double, int, uint are always lossless + } + + // Checks whether a number is a float (possible lossy). + bool IsFloat() const { + if ((data_.f.flags & kDoubleFlag) == 0) + return false; + double d = GetDouble(); + return d >= -3.4028234e38 && d <= 3.4028234e38; + } + // Checks whether a number can be losslessly converted to a float. + bool IsLosslessFloat() const { + if (!IsNumber()) return false; + double a = GetDouble(); + if (a < static_cast<double>(-(std::numeric_limits<float>::max)()) + || a > static_cast<double>((std::numeric_limits<float>::max)())) + return false; + double b = static_cast<double>(static_cast<float>(a)); + return a >= b && a <= b; // Prevent -Wfloat-equal + } + + //@} + + //!@name Null + //@{ + + GenericValue& SetNull() { this->~GenericValue(); new (this) GenericValue(); return *this; } + + //@} + + //!@name Bool + //@{ + + bool GetBool() const { RAPIDJSON_ASSERT(IsBool()); return data_.f.flags == kTrueFlag; } + //!< Set boolean value + /*! \post IsBool() == true */ + GenericValue& SetBool(bool b) { this->~GenericValue(); new (this) GenericValue(b); return *this; } + + //@} + + //!@name Object + //@{ + + //! Set this value as an empty object. + /*! \post IsObject() == true */ + GenericValue& SetObject() { this->~GenericValue(); new (this) GenericValue(kObjectType); return *this; } + + //! Get the number of members in the object. + SizeType MemberCount() const { RAPIDJSON_ASSERT(IsObject()); return data_.o.size; } + + //! Get the capacity of object. + SizeType MemberCapacity() const { RAPIDJSON_ASSERT(IsObject()); return data_.o.capacity; } + + //! Check whether the object is empty. + bool ObjectEmpty() const { RAPIDJSON_ASSERT(IsObject()); return data_.o.size == 0; } + + //! Get a value from an object associated with the name. + /*! \pre IsObject() == true + \tparam T Either \c Ch or \c const \c Ch (template used for disambiguation with \ref operator[](SizeType)) + \note In version 0.1x, if the member is not found, this function returns a null value. This makes issue 7. + Since 0.2, if the name is not correct, it will assert. + If user is unsure whether a member exists, user should use HasMember() first. + A better approach is to use FindMember(). + \note Linear time complexity. + */ + template <typename T> + RAPIDJSON_DISABLEIF_RETURN((internal::NotExpr<internal::IsSame<typename internal::RemoveConst<T>::Type, Ch> >),(GenericValue&)) operator[](T* name) { + GenericValue n(StringRef(name)); + return (*this)[n]; + } + template <typename T> + RAPIDJSON_DISABLEIF_RETURN((internal::NotExpr<internal::IsSame<typename internal::RemoveConst<T>::Type, Ch> >),(const GenericValue&)) operator[](T* name) const { return const_cast<GenericValue&>(*this)[name]; } + + //! Get a value from an object associated with the name. + /*! \pre IsObject() == true + \tparam SourceAllocator Allocator of the \c name value + + \note Compared to \ref operator[](T*), this version is faster because it does not need a StrLen(). + And it can also handle strings with embedded null characters. + + \note Linear time complexity. + */ + template <typename SourceAllocator> + GenericValue& operator[](const GenericValue<Encoding, SourceAllocator>& name) { + MemberIterator member = FindMember(name); + if (member != MemberEnd()) + return member->value; + else { + RAPIDJSON_ASSERT(false); // see above note + + // This will generate -Wexit-time-destructors in clang + // static GenericValue NullValue; + // return NullValue; + + // Use static buffer and placement-new to prevent destruction + static char buffer[sizeof(GenericValue)]; + return *new (buffer) GenericValue(); + } + } + template <typename SourceAllocator> + const GenericValue& operator[](const GenericValue<Encoding, SourceAllocator>& name) const { return const_cast<GenericValue&>(*this)[name]; } + +#if RAPIDJSON_HAS_STDSTRING + //! Get a value from an object associated with name (string object). + GenericValue& operator[](const std::basic_string<Ch>& name) { return (*this)[GenericValue(StringRef(name))]; } + const GenericValue& operator[](const std::basic_string<Ch>& name) const { return (*this)[GenericValue(StringRef(name))]; } +#endif + + //! Const member iterator + /*! \pre IsObject() == true */ + ConstMemberIterator MemberBegin() const { RAPIDJSON_ASSERT(IsObject()); return ConstMemberIterator(GetMembersPointer()); } + //! Const \em past-the-end member iterator + /*! \pre IsObject() == true */ + ConstMemberIterator MemberEnd() const { RAPIDJSON_ASSERT(IsObject()); return ConstMemberIterator(GetMembersPointer() + data_.o.size); } + //! Member iterator + /*! \pre IsObject() == true */ + MemberIterator MemberBegin() { RAPIDJSON_ASSERT(IsObject()); return MemberIterator(GetMembersPointer()); } + //! \em Past-the-end member iterator + /*! \pre IsObject() == true */ + MemberIterator MemberEnd() { RAPIDJSON_ASSERT(IsObject()); return MemberIterator(GetMembersPointer() + data_.o.size); } + + //! Request the object to have enough capacity to store members. + /*! \param newCapacity The capacity that the object at least need to have. + \param allocator Allocator for reallocating memory. It must be the same one as used before. Commonly use GenericDocument::GetAllocator(). + \return The value itself for fluent API. + \note Linear time complexity. + */ + GenericValue& MemberReserve(SizeType newCapacity, Allocator &allocator) { + RAPIDJSON_ASSERT(IsObject()); + if (newCapacity > data_.o.capacity) { + SetMembersPointer(reinterpret_cast<Member*>(allocator.Realloc(GetMembersPointer(), data_.o.capacity * sizeof(Member), newCapacity * sizeof(Member)))); + data_.o.capacity = newCapacity; + } + return *this; + } + + //! Check whether a member exists in the object. + /*! + \param name Member name to be searched. + \pre IsObject() == true + \return Whether a member with that name exists. + \note It is better to use FindMember() directly if you need the obtain the value as well. + \note Linear time complexity. + */ + bool HasMember(const Ch* name) const { return FindMember(name) != MemberEnd(); } + +#if RAPIDJSON_HAS_STDSTRING + //! Check whether a member exists in the object with string object. + /*! + \param name Member name to be searched. + \pre IsObject() == true + \return Whether a member with that name exists. + \note It is better to use FindMember() directly if you need the obtain the value as well. + \note Linear time complexity. + */ + bool HasMember(const std::basic_string<Ch>& name) const { return FindMember(name) != MemberEnd(); } +#endif + + //! Check whether a member exists in the object with GenericValue name. + /*! + This version is faster because it does not need a StrLen(). It can also handle string with null character. + \param name Member name to be searched. + \pre IsObject() == true + \return Whether a member with that name exists. + \note It is better to use FindMember() directly if you need the obtain the value as well. + \note Linear time complexity. + */ + template <typename SourceAllocator> + bool HasMember(const GenericValue<Encoding, SourceAllocator>& name) const { return FindMember(name) != MemberEnd(); } + + //! Find member by name. + /*! + \param name Member name to be searched. + \pre IsObject() == true + \return Iterator to member, if it exists. + Otherwise returns \ref MemberEnd(). + + \note Earlier versions of Rapidjson returned a \c NULL pointer, in case + the requested member doesn't exist. For consistency with e.g. + \c std::map, this has been changed to MemberEnd() now. + \note Linear time complexity. + */ + MemberIterator FindMember(const Ch* name) { + GenericValue n(StringRef(name)); + return FindMember(n); + } + + ConstMemberIterator FindMember(const Ch* name) const { return const_cast<GenericValue&>(*this).FindMember(name); } + + //! Find member by name. + /*! + This version is faster because it does not need a StrLen(). It can also handle string with null character. + \param name Member name to be searched. + \pre IsObject() == true + \return Iterator to member, if it exists. + Otherwise returns \ref MemberEnd(). + + \note Earlier versions of Rapidjson returned a \c NULL pointer, in case + the requested member doesn't exist. For consistency with e.g. + \c std::map, this has been changed to MemberEnd() now. + \note Linear time complexity. + */ + template <typename SourceAllocator> + MemberIterator FindMember(const GenericValue<Encoding, SourceAllocator>& name) { + RAPIDJSON_ASSERT(IsObject()); + RAPIDJSON_ASSERT(name.IsString()); + MemberIterator member = MemberBegin(); + for ( ; member != MemberEnd(); ++member) + if (name.StringEqual(member->name)) + break; + return member; + } + template <typename SourceAllocator> ConstMemberIterator FindMember(const GenericValue<Encoding, SourceAllocator>& name) const { return const_cast<GenericValue&>(*this).FindMember(name); } + +#if RAPIDJSON_HAS_STDSTRING + //! Find member by string object name. + /*! + \param name Member name to be searched. + \pre IsObject() == true + \return Iterator to member, if it exists. + Otherwise returns \ref MemberEnd(). + */ + MemberIterator FindMember(const std::basic_string<Ch>& name) { return FindMember(GenericValue(StringRef(name))); } + ConstMemberIterator FindMember(const std::basic_string<Ch>& name) const { return FindMember(GenericValue(StringRef(name))); } +#endif + + //! Add a member (name-value pair) to the object. + /*! \param name A string value as name of member. + \param value Value of any type. + \param allocator Allocator for reallocating memory. It must be the same one as used before. Commonly use GenericDocument::GetAllocator(). + \return The value itself for fluent API. + \note The ownership of \c name and \c value will be transferred to this object on success. + \pre IsObject() && name.IsString() + \post name.IsNull() && value.IsNull() + \note Amortized Constant time complexity. + */ + GenericValue& AddMember(GenericValue& name, GenericValue& value, Allocator& allocator) { + RAPIDJSON_ASSERT(IsObject()); + RAPIDJSON_ASSERT(name.IsString()); + + ObjectData& o = data_.o; + if (o.size >= o.capacity) + MemberReserve(o.capacity == 0 ? kDefaultObjectCapacity : (o.capacity + (o.capacity + 1) / 2), allocator); + Member* members = GetMembersPointer(); + members[o.size].name.RawAssign(name); + members[o.size].value.RawAssign(value); + o.size++; + return *this; + } + + //! Add a constant string value as member (name-value pair) to the object. + /*! \param name A string value as name of member. + \param value constant string reference as value of member. + \param allocator Allocator for reallocating memory. It must be the same one as used before. Commonly use GenericDocument::GetAllocator(). + \return The value itself for fluent API. + \pre IsObject() + \note This overload is needed to avoid clashes with the generic primitive type AddMember(GenericValue&,T,Allocator&) overload below. + \note Amortized Constant time complexity. + */ + GenericValue& AddMember(GenericValue& name, StringRefType value, Allocator& allocator) { + GenericValue v(value); + return AddMember(name, v, allocator); + } + +#if RAPIDJSON_HAS_STDSTRING + //! Add a string object as member (name-value pair) to the object. + /*! \param name A string value as name of member. + \param value constant string reference as value of member. + \param allocator Allocator for reallocating memory. It must be the same one as used before. Commonly use GenericDocument::GetAllocator(). + \return The value itself for fluent API. + \pre IsObject() + \note This overload is needed to avoid clashes with the generic primitive type AddMember(GenericValue&,T,Allocator&) overload below. + \note Amortized Constant time complexity. + */ + GenericValue& AddMember(GenericValue& name, std::basic_string<Ch>& value, Allocator& allocator) { + GenericValue v(value, allocator); + return AddMember(name, v, allocator); + } +#endif + + //! Add any primitive value as member (name-value pair) to the object. + /*! \tparam T Either \ref Type, \c int, \c unsigned, \c int64_t, \c uint64_t + \param name A string value as name of member. + \param value Value of primitive type \c T as value of member + \param allocator Allocator for reallocating memory. Commonly use GenericDocument::GetAllocator(). + \return The value itself for fluent API. + \pre IsObject() + + \note The source type \c T explicitly disallows all pointer types, + especially (\c const) \ref Ch*. This helps avoiding implicitly + referencing character strings with insufficient lifetime, use + \ref AddMember(StringRefType, GenericValue&, Allocator&) or \ref + AddMember(StringRefType, StringRefType, Allocator&). + All other pointer types would implicitly convert to \c bool, + use an explicit cast instead, if needed. + \note Amortized Constant time complexity. + */ + template <typename T> + RAPIDJSON_DISABLEIF_RETURN((internal::OrExpr<internal::IsPointer<T>, internal::IsGenericValue<T> >), (GenericValue&)) + AddMember(GenericValue& name, T value, Allocator& allocator) { + GenericValue v(value); + return AddMember(name, v, allocator); + } + +#if RAPIDJSON_HAS_CXX11_RVALUE_REFS + GenericValue& AddMember(GenericValue&& name, GenericValue&& value, Allocator& allocator) { + return AddMember(name, value, allocator); + } + GenericValue& AddMember(GenericValue&& name, GenericValue& value, Allocator& allocator) { + return AddMember(name, value, allocator); + } + GenericValue& AddMember(GenericValue& name, GenericValue&& value, Allocator& allocator) { + return AddMember(name, value, allocator); + } + GenericValue& AddMember(StringRefType name, GenericValue&& value, Allocator& allocator) { + GenericValue n(name); + return AddMember(n, value, allocator); + } +#endif // RAPIDJSON_HAS_CXX11_RVALUE_REFS + + + //! Add a member (name-value pair) to the object. + /*! \param name A constant string reference as name of member. + \param value Value of any type. + \param allocator Allocator for reallocating memory. It must be the same one as used before. Commonly use GenericDocument::GetAllocator(). + \return The value itself for fluent API. + \note The ownership of \c value will be transferred to this object on success. + \pre IsObject() + \post value.IsNull() + \note Amortized Constant time complexity. + */ + GenericValue& AddMember(StringRefType name, GenericValue& value, Allocator& allocator) { + GenericValue n(name); + return AddMember(n, value, allocator); + } + + //! Add a constant string value as member (name-value pair) to the object. + /*! \param name A constant string reference as name of member. + \param value constant string reference as value of member. + \param allocator Allocator for reallocating memory. It must be the same one as used before. Commonly use GenericDocument::GetAllocator(). + \return The value itself for fluent API. + \pre IsObject() + \note This overload is needed to avoid clashes with the generic primitive type AddMember(StringRefType,T,Allocator&) overload below. + \note Amortized Constant time complexity. + */ + GenericValue& AddMember(StringRefType name, StringRefType value, Allocator& allocator) { + GenericValue v(value); + return AddMember(name, v, allocator); + } + + //! Add any primitive value as member (name-value pair) to the object. + /*! \tparam T Either \ref Type, \c int, \c unsigned, \c int64_t, \c uint64_t + \param name A constant string reference as name of member. + \param value Value of primitive type \c T as value of member + \param allocator Allocator for reallocating memory. Commonly use GenericDocument::GetAllocator(). + \return The value itself for fluent API. + \pre IsObject() + + \note The source type \c T explicitly disallows all pointer types, + especially (\c const) \ref Ch*. This helps avoiding implicitly + referencing character strings with insufficient lifetime, use + \ref AddMember(StringRefType, GenericValue&, Allocator&) or \ref + AddMember(StringRefType, StringRefType, Allocator&). + All other pointer types would implicitly convert to \c bool, + use an explicit cast instead, if needed. + \note Amortized Constant time complexity. + */ + template <typename T> + RAPIDJSON_DISABLEIF_RETURN((internal::OrExpr<internal::IsPointer<T>, internal::IsGenericValue<T> >), (GenericValue&)) + AddMember(StringRefType name, T value, Allocator& allocator) { + GenericValue n(name); + return AddMember(n, value, allocator); + } + + //! Remove all members in the object. + /*! This function do not deallocate memory in the object, i.e. the capacity is unchanged. + \note Linear time complexity. + */ + void RemoveAllMembers() { + RAPIDJSON_ASSERT(IsObject()); + for (MemberIterator m = MemberBegin(); m != MemberEnd(); ++m) + m->~Member(); + data_.o.size = 0; + } + + //! Remove a member in object by its name. + /*! \param name Name of member to be removed. + \return Whether the member existed. + \note This function may reorder the object members. Use \ref + EraseMember(ConstMemberIterator) if you need to preserve the + relative order of the remaining members. + \note Linear time complexity. + */ + bool RemoveMember(const Ch* name) { + GenericValue n(StringRef(name)); + return RemoveMember(n); + } + +#if RAPIDJSON_HAS_STDSTRING + bool RemoveMember(const std::basic_string<Ch>& name) { return RemoveMember(GenericValue(StringRef(name))); } +#endif + + template <typename SourceAllocator> + bool RemoveMember(const GenericValue<Encoding, SourceAllocator>& name) { + MemberIterator m = FindMember(name); + if (m != MemberEnd()) { + RemoveMember(m); + return true; + } + else + return false; + } + + //! Remove a member in object by iterator. + /*! \param m member iterator (obtained by FindMember() or MemberBegin()). + \return the new iterator after removal. + \note This function may reorder the object members. Use \ref + EraseMember(ConstMemberIterator) if you need to preserve the + relative order of the remaining members. + \note Constant time complexity. + */ + MemberIterator RemoveMember(MemberIterator m) { + RAPIDJSON_ASSERT(IsObject()); + RAPIDJSON_ASSERT(data_.o.size > 0); + RAPIDJSON_ASSERT(GetMembersPointer() != 0); + RAPIDJSON_ASSERT(m >= MemberBegin() && m < MemberEnd()); + + MemberIterator last(GetMembersPointer() + (data_.o.size - 1)); + if (data_.o.size > 1 && m != last) + *m = *last; // Move the last one to this place + else + m->~Member(); // Only one left, just destroy + --data_.o.size; + return m; + } + + //! Remove a member from an object by iterator. + /*! \param pos iterator to the member to remove + \pre IsObject() == true && \ref MemberBegin() <= \c pos < \ref MemberEnd() + \return Iterator following the removed element. + If the iterator \c pos refers to the last element, the \ref MemberEnd() iterator is returned. + \note This function preserves the relative order of the remaining object + members. If you do not need this, use the more efficient \ref RemoveMember(MemberIterator). + \note Linear time complexity. + */ + MemberIterator EraseMember(ConstMemberIterator pos) { + return EraseMember(pos, pos +1); + } + + //! Remove members in the range [first, last) from an object. + /*! \param first iterator to the first member to remove + \param last iterator following the last member to remove + \pre IsObject() == true && \ref MemberBegin() <= \c first <= \c last <= \ref MemberEnd() + \return Iterator following the last removed element. + \note This function preserves the relative order of the remaining object + members. + \note Linear time complexity. + */ + MemberIterator EraseMember(ConstMemberIterator first, ConstMemberIterator last) { + RAPIDJSON_ASSERT(IsObject()); + RAPIDJSON_ASSERT(data_.o.size > 0); + RAPIDJSON_ASSERT(GetMembersPointer() != 0); + RAPIDJSON_ASSERT(first >= MemberBegin()); + RAPIDJSON_ASSERT(first <= last); + RAPIDJSON_ASSERT(last <= MemberEnd()); + + MemberIterator pos = MemberBegin() + (first - MemberBegin()); + for (MemberIterator itr = pos; itr != last; ++itr) + itr->~Member(); + std::memmove(static_cast<void*>(&*pos), &*last, static_cast<size_t>(MemberEnd() - last) * sizeof(Member)); + data_.o.size -= static_cast<SizeType>(last - first); + return pos; + } + + //! Erase a member in object by its name. + /*! \param name Name of member to be removed. + \return Whether the member existed. + \note Linear time complexity. + */ + bool EraseMember(const Ch* name) { + GenericValue n(StringRef(name)); + return EraseMember(n); + } + +#if RAPIDJSON_HAS_STDSTRING + bool EraseMember(const std::basic_string<Ch>& name) { return EraseMember(GenericValue(StringRef(name))); } +#endif + + template <typename SourceAllocator> + bool EraseMember(const GenericValue<Encoding, SourceAllocator>& name) { + MemberIterator m = FindMember(name); + if (m != MemberEnd()) { + EraseMember(m); + return true; + } + else + return false; + } + + Object GetObject() { RAPIDJSON_ASSERT(IsObject()); return Object(*this); } + ConstObject GetObject() const { RAPIDJSON_ASSERT(IsObject()); return ConstObject(*this); } + + //@} + + //!@name Array + //@{ + + //! Set this value as an empty array. + /*! \post IsArray == true */ + GenericValue& SetArray() { this->~GenericValue(); new (this) GenericValue(kArrayType); return *this; } + + //! Get the number of elements in array. + SizeType Size() const { RAPIDJSON_ASSERT(IsArray()); return data_.a.size; } + + //! Get the capacity of array. + SizeType Capacity() const { RAPIDJSON_ASSERT(IsArray()); return data_.a.capacity; } + + //! Check whether the array is empty. + bool Empty() const { RAPIDJSON_ASSERT(IsArray()); return data_.a.size == 0; } + + //! Remove all elements in the array. + /*! This function do not deallocate memory in the array, i.e. the capacity is unchanged. + \note Linear time complexity. + */ + void Clear() { + RAPIDJSON_ASSERT(IsArray()); + GenericValue* e = GetElementsPointer(); + for (GenericValue* v = e; v != e + data_.a.size; ++v) + v->~GenericValue(); + data_.a.size = 0; + } + + //! Get an element from array by index. + /*! \pre IsArray() == true + \param index Zero-based index of element. + \see operator[](T*) + */ + GenericValue& operator[](SizeType index) { + RAPIDJSON_ASSERT(IsArray()); + RAPIDJSON_ASSERT(index < data_.a.size); + return GetElementsPointer()[index]; + } + const GenericValue& operator[](SizeType index) const { return const_cast<GenericValue&>(*this)[index]; } + + //! Element iterator + /*! \pre IsArray() == true */ + ValueIterator Begin() { RAPIDJSON_ASSERT(IsArray()); return GetElementsPointer(); } + //! \em Past-the-end element iterator + /*! \pre IsArray() == true */ + ValueIterator End() { RAPIDJSON_ASSERT(IsArray()); return GetElementsPointer() + data_.a.size; } + //! Constant element iterator + /*! \pre IsArray() == true */ + ConstValueIterator Begin() const { return const_cast<GenericValue&>(*this).Begin(); } + //! Constant \em past-the-end element iterator + /*! \pre IsArray() == true */ + ConstValueIterator End() const { return const_cast<GenericValue&>(*this).End(); } + + //! Request the array to have enough capacity to store elements. + /*! \param newCapacity The capacity that the array at least need to have. + \param allocator Allocator for reallocating memory. It must be the same one as used before. Commonly use GenericDocument::GetAllocator(). + \return The value itself for fluent API. + \note Linear time complexity. + */ + GenericValue& Reserve(SizeType newCapacity, Allocator &allocator) { + RAPIDJSON_ASSERT(IsArray()); + if (newCapacity > data_.a.capacity) { + SetElementsPointer(reinterpret_cast<GenericValue*>(allocator.Realloc(GetElementsPointer(), data_.a.capacity * sizeof(GenericValue), newCapacity * sizeof(GenericValue)))); + data_.a.capacity = newCapacity; + } + return *this; + } + + //! Append a GenericValue at the end of the array. + /*! \param value Value to be appended. + \param allocator Allocator for reallocating memory. It must be the same one as used before. Commonly use GenericDocument::GetAllocator(). + \pre IsArray() == true + \post value.IsNull() == true + \return The value itself for fluent API. + \note The ownership of \c value will be transferred to this array on success. + \note If the number of elements to be appended is known, calls Reserve() once first may be more efficient. + \note Amortized constant time complexity. + */ + GenericValue& PushBack(GenericValue& value, Allocator& allocator) { + RAPIDJSON_ASSERT(IsArray()); + if (data_.a.size >= data_.a.capacity) + Reserve(data_.a.capacity == 0 ? kDefaultArrayCapacity : (data_.a.capacity + (data_.a.capacity + 1) / 2), allocator); + GetElementsPointer()[data_.a.size++].RawAssign(value); + return *this; + } + +#if RAPIDJSON_HAS_CXX11_RVALUE_REFS + GenericValue& PushBack(GenericValue&& value, Allocator& allocator) { + return PushBack(value, allocator); + } +#endif // RAPIDJSON_HAS_CXX11_RVALUE_REFS + + //! Append a constant string reference at the end of the array. + /*! \param value Constant string reference to be appended. + \param allocator Allocator for reallocating memory. It must be the same one used previously. Commonly use GenericDocument::GetAllocator(). + \pre IsArray() == true + \return The value itself for fluent API. + \note If the number of elements to be appended is known, calls Reserve() once first may be more efficient. + \note Amortized constant time complexity. + \see GenericStringRef + */ + GenericValue& PushBack(StringRefType value, Allocator& allocator) { + return (*this).template PushBack<StringRefType>(value, allocator); + } + + //! Append a primitive value at the end of the array. + /*! \tparam T Either \ref Type, \c int, \c unsigned, \c int64_t, \c uint64_t + \param value Value of primitive type T to be appended. + \param allocator Allocator for reallocating memory. It must be the same one as used before. Commonly use GenericDocument::GetAllocator(). + \pre IsArray() == true + \return The value itself for fluent API. + \note If the number of elements to be appended is known, calls Reserve() once first may be more efficient. + + \note The source type \c T explicitly disallows all pointer types, + especially (\c const) \ref Ch*. This helps avoiding implicitly + referencing character strings with insufficient lifetime, use + \ref PushBack(GenericValue&, Allocator&) or \ref + PushBack(StringRefType, Allocator&). + All other pointer types would implicitly convert to \c bool, + use an explicit cast instead, if needed. + \note Amortized constant time complexity. + */ + template <typename T> + RAPIDJSON_DISABLEIF_RETURN((internal::OrExpr<internal::IsPointer<T>, internal::IsGenericValue<T> >), (GenericValue&)) + PushBack(T value, Allocator& allocator) { + GenericValue v(value); + return PushBack(v, allocator); + } + + //! Remove the last element in the array. + /*! + \note Constant time complexity. + */ + GenericValue& PopBack() { + RAPIDJSON_ASSERT(IsArray()); + RAPIDJSON_ASSERT(!Empty()); + GetElementsPointer()[--data_.a.size].~GenericValue(); + return *this; + } + + //! Remove an element of array by iterator. + /*! + \param pos iterator to the element to remove + \pre IsArray() == true && \ref Begin() <= \c pos < \ref End() + \return Iterator following the removed element. If the iterator pos refers to the last element, the End() iterator is returned. + \note Linear time complexity. + */ + ValueIterator Erase(ConstValueIterator pos) { + return Erase(pos, pos + 1); + } + + //! Remove elements in the range [first, last) of the array. + /*! + \param first iterator to the first element to remove + \param last iterator following the last element to remove + \pre IsArray() == true && \ref Begin() <= \c first <= \c last <= \ref End() + \return Iterator following the last removed element. + \note Linear time complexity. + */ + ValueIterator Erase(ConstValueIterator first, ConstValueIterator last) { + RAPIDJSON_ASSERT(IsArray()); + RAPIDJSON_ASSERT(data_.a.size > 0); + RAPIDJSON_ASSERT(GetElementsPointer() != 0); + RAPIDJSON_ASSERT(first >= Begin()); + RAPIDJSON_ASSERT(first <= last); + RAPIDJSON_ASSERT(last <= End()); + ValueIterator pos = Begin() + (first - Begin()); + for (ValueIterator itr = pos; itr != last; ++itr) + itr->~GenericValue(); + std::memmove(static_cast<void*>(pos), last, static_cast<size_t>(End() - last) * sizeof(GenericValue)); + data_.a.size -= static_cast<SizeType>(last - first); + return pos; + } + + Array GetArray() { RAPIDJSON_ASSERT(IsArray()); return Array(*this); } + ConstArray GetArray() const { RAPIDJSON_ASSERT(IsArray()); return ConstArray(*this); } + + //@} + + //!@name Number + //@{ + + int GetInt() const { RAPIDJSON_ASSERT(data_.f.flags & kIntFlag); return data_.n.i.i; } + unsigned GetUint() const { RAPIDJSON_ASSERT(data_.f.flags & kUintFlag); return data_.n.u.u; } + int64_t GetInt64() const { RAPIDJSON_ASSERT(data_.f.flags & kInt64Flag); return data_.n.i64; } + uint64_t GetUint64() const { RAPIDJSON_ASSERT(data_.f.flags & kUint64Flag); return data_.n.u64; } + + //! Get the value as double type. + /*! \note If the value is 64-bit integer type, it may lose precision. Use \c IsLosslessDouble() to check whether the converison is lossless. + */ + double GetDouble() const { + RAPIDJSON_ASSERT(IsNumber()); + if ((data_.f.flags & kDoubleFlag) != 0) return data_.n.d; // exact type, no conversion. + if ((data_.f.flags & kIntFlag) != 0) return data_.n.i.i; // int -> double + if ((data_.f.flags & kUintFlag) != 0) return data_.n.u.u; // unsigned -> double + if ((data_.f.flags & kInt64Flag) != 0) return static_cast<double>(data_.n.i64); // int64_t -> double (may lose precision) + RAPIDJSON_ASSERT((data_.f.flags & kUint64Flag) != 0); return static_cast<double>(data_.n.u64); // uint64_t -> double (may lose precision) + } + + //! Get the value as float type. + /*! \note If the value is 64-bit integer type, it may lose precision. Use \c IsLosslessFloat() to check whether the converison is lossless. + */ + float GetFloat() const { + return static_cast<float>(GetDouble()); + } + + GenericValue& SetInt(int i) { this->~GenericValue(); new (this) GenericValue(i); return *this; } + GenericValue& SetUint(unsigned u) { this->~GenericValue(); new (this) GenericValue(u); return *this; } + GenericValue& SetInt64(int64_t i64) { this->~GenericValue(); new (this) GenericValue(i64); return *this; } + GenericValue& SetUint64(uint64_t u64) { this->~GenericValue(); new (this) GenericValue(u64); return *this; } + GenericValue& SetDouble(double d) { this->~GenericValue(); new (this) GenericValue(d); return *this; } + GenericValue& SetFloat(float f) { this->~GenericValue(); new (this) GenericValue(static_cast<double>(f)); return *this; } + + //@} + + //!@name String + //@{ + + const Ch* GetString() const { RAPIDJSON_ASSERT(IsString()); return (data_.f.flags & kInlineStrFlag) ? data_.ss.str : GetStringPointer(); } + + //! Get the length of string. + /*! Since rapidjson permits "\\u0000" in the json string, strlen(v.GetString()) may not equal to v.GetStringLength(). + */ + SizeType GetStringLength() const { RAPIDJSON_ASSERT(IsString()); return ((data_.f.flags & kInlineStrFlag) ? (data_.ss.GetLength()) : data_.s.length); } + + //! Set this value as a string without copying source string. + /*! This version has better performance with supplied length, and also support string containing null character. + \param s source string pointer. + \param length The length of source string, excluding the trailing null terminator. + \return The value itself for fluent API. + \post IsString() == true && GetString() == s && GetStringLength() == length + \see SetString(StringRefType) + */ + GenericValue& SetString(const Ch* s, SizeType length) { return SetString(StringRef(s, length)); } + + //! Set this value as a string without copying source string. + /*! \param s source string reference + \return The value itself for fluent API. + \post IsString() == true && GetString() == s && GetStringLength() == s.length + */ + GenericValue& SetString(StringRefType s) { this->~GenericValue(); SetStringRaw(s); return *this; } + + //! Set this value as a string by copying from source string. + /*! This version has better performance with supplied length, and also support string containing null character. + \param s source string. + \param length The length of source string, excluding the trailing null terminator. + \param allocator Allocator for allocating copied buffer. Commonly use GenericDocument::GetAllocator(). + \return The value itself for fluent API. + \post IsString() == true && GetString() != s && strcmp(GetString(),s) == 0 && GetStringLength() == length + */ + GenericValue& SetString(const Ch* s, SizeType length, Allocator& allocator) { return SetString(StringRef(s, length), allocator); } + + //! Set this value as a string by copying from source string. + /*! \param s source string. + \param allocator Allocator for allocating copied buffer. Commonly use GenericDocument::GetAllocator(). + \return The value itself for fluent API. + \post IsString() == true && GetString() != s && strcmp(GetString(),s) == 0 && GetStringLength() == length + */ + GenericValue& SetString(const Ch* s, Allocator& allocator) { return SetString(StringRef(s), allocator); } + + //! Set this value as a string by copying from source string. + /*! \param s source string reference + \param allocator Allocator for allocating copied buffer. Commonly use GenericDocument::GetAllocator(). + \return The value itself for fluent API. + \post IsString() == true && GetString() != s.s && strcmp(GetString(),s) == 0 && GetStringLength() == length + */ + GenericValue& SetString(StringRefType s, Allocator& allocator) { this->~GenericValue(); SetStringRaw(s, allocator); return *this; } + +#if RAPIDJSON_HAS_STDSTRING + //! Set this value as a string by copying from source string. + /*! \param s source string. + \param allocator Allocator for allocating copied buffer. Commonly use GenericDocument::GetAllocator(). + \return The value itself for fluent API. + \post IsString() == true && GetString() != s.data() && strcmp(GetString(),s.data() == 0 && GetStringLength() == s.size() + \note Requires the definition of the preprocessor symbol \ref RAPIDJSON_HAS_STDSTRING. + */ + GenericValue& SetString(const std::basic_string<Ch>& s, Allocator& allocator) { return SetString(StringRef(s), allocator); } +#endif + + //@} + + //!@name Array + //@{ + + //! Templated version for checking whether this value is type T. + /*! + \tparam T Either \c bool, \c int, \c unsigned, \c int64_t, \c uint64_t, \c double, \c float, \c const \c char*, \c std::basic_string<Ch> + */ + template <typename T> + bool Is() const { return internal::TypeHelper<ValueType, T>::Is(*this); } + + template <typename T> + T Get() const { return internal::TypeHelper<ValueType, T>::Get(*this); } + + template <typename T> + T Get() { return internal::TypeHelper<ValueType, T>::Get(*this); } + + template<typename T> + ValueType& Set(const T& data) { return internal::TypeHelper<ValueType, T>::Set(*this, data); } + + template<typename T> + ValueType& Set(const T& data, AllocatorType& allocator) { return internal::TypeHelper<ValueType, T>::Set(*this, data, allocator); } + + //@} + + //! Generate events of this value to a Handler. + /*! This function adopts the GoF visitor pattern. + Typical usage is to output this JSON value as JSON text via Writer, which is a Handler. + It can also be used to deep clone this value via GenericDocument, which is also a Handler. + \tparam Handler type of handler. + \param handler An object implementing concept Handler. + */ + template <typename Handler> + bool Accept(Handler& handler) const { + switch(GetType()) { + case kNullType: return handler.Null(); + case kFalseType: return handler.Bool(false); + case kTrueType: return handler.Bool(true); + + case kObjectType: + if (RAPIDJSON_UNLIKELY(!handler.StartObject())) + return false; + for (ConstMemberIterator m = MemberBegin(); m != MemberEnd(); ++m) { + RAPIDJSON_ASSERT(m->name.IsString()); // User may change the type of name by MemberIterator. + if (RAPIDJSON_UNLIKELY(!handler.Key(m->name.GetString(), m->name.GetStringLength(), (m->name.data_.f.flags & kCopyFlag) != 0))) + return false; + if (RAPIDJSON_UNLIKELY(!m->value.Accept(handler))) + return false; + } + return handler.EndObject(data_.o.size); + + case kArrayType: + if (RAPIDJSON_UNLIKELY(!handler.StartArray())) + return false; + for (const GenericValue* v = Begin(); v != End(); ++v) + if (RAPIDJSON_UNLIKELY(!v->Accept(handler))) + return false; + return handler.EndArray(data_.a.size); + + case kStringType: + return handler.String(GetString(), GetStringLength(), (data_.f.flags & kCopyFlag) != 0); + + default: + RAPIDJSON_ASSERT(GetType() == kNumberType); + if (IsDouble()) return handler.Double(data_.n.d); + else if (IsInt()) return handler.Int(data_.n.i.i); + else if (IsUint()) return handler.Uint(data_.n.u.u); + else if (IsInt64()) return handler.Int64(data_.n.i64); + else return handler.Uint64(data_.n.u64); + } + } + +private: + template <typename, typename> friend class GenericValue; + template <typename, typename, typename> friend class GenericDocument; + + enum { + kBoolFlag = 0x0008, + kNumberFlag = 0x0010, + kIntFlag = 0x0020, + kUintFlag = 0x0040, + kInt64Flag = 0x0080, + kUint64Flag = 0x0100, + kDoubleFlag = 0x0200, + kStringFlag = 0x0400, + kCopyFlag = 0x0800, + kInlineStrFlag = 0x1000, + + // Initial flags of different types. + kNullFlag = kNullType, + kTrueFlag = kTrueType | kBoolFlag, + kFalseFlag = kFalseType | kBoolFlag, + kNumberIntFlag = kNumberType | kNumberFlag | kIntFlag | kInt64Flag, + kNumberUintFlag = kNumberType | kNumberFlag | kUintFlag | kUint64Flag | kInt64Flag, + kNumberInt64Flag = kNumberType | kNumberFlag | kInt64Flag, + kNumberUint64Flag = kNumberType | kNumberFlag | kUint64Flag, + kNumberDoubleFlag = kNumberType | kNumberFlag | kDoubleFlag, + kNumberAnyFlag = kNumberType | kNumberFlag | kIntFlag | kInt64Flag | kUintFlag | kUint64Flag | kDoubleFlag, + kConstStringFlag = kStringType | kStringFlag, + kCopyStringFlag = kStringType | kStringFlag | kCopyFlag, + kShortStringFlag = kStringType | kStringFlag | kCopyFlag | kInlineStrFlag, + kObjectFlag = kObjectType, + kArrayFlag = kArrayType, + + kTypeMask = 0x07 + }; + + static const SizeType kDefaultArrayCapacity = 16; + static const SizeType kDefaultObjectCapacity = 16; + + struct Flag { +#if RAPIDJSON_48BITPOINTER_OPTIMIZATION + char payload[sizeof(SizeType) * 2 + 6]; // 2 x SizeType + lower 48-bit pointer +#elif RAPIDJSON_64BIT + char payload[sizeof(SizeType) * 2 + sizeof(void*) + 6]; // 6 padding bytes +#else + char payload[sizeof(SizeType) * 2 + sizeof(void*) + 2]; // 2 padding bytes +#endif + uint16_t flags; + }; + + struct String { + SizeType length; + SizeType hashcode; //!< reserved + const Ch* str; + }; // 12 bytes in 32-bit mode, 16 bytes in 64-bit mode + + // implementation detail: ShortString can represent zero-terminated strings up to MaxSize chars + // (excluding the terminating zero) and store a value to determine the length of the contained + // string in the last character str[LenPos] by storing "MaxSize - length" there. If the string + // to store has the maximal length of MaxSize then str[LenPos] will be 0 and therefore act as + // the string terminator as well. For getting the string length back from that value just use + // "MaxSize - str[LenPos]". + // This allows to store 13-chars strings in 32-bit mode, 21-chars strings in 64-bit mode, + // 13-chars strings for RAPIDJSON_48BITPOINTER_OPTIMIZATION=1 inline (for `UTF8`-encoded strings). + struct ShortString { + enum { MaxChars = sizeof(static_cast<Flag*>(0)->payload) / sizeof(Ch), MaxSize = MaxChars - 1, LenPos = MaxSize }; + Ch str[MaxChars]; + + inline static bool Usable(SizeType len) { return (MaxSize >= len); } + inline void SetLength(SizeType len) { str[LenPos] = static_cast<Ch>(MaxSize - len); } + inline SizeType GetLength() const { return static_cast<SizeType>(MaxSize - str[LenPos]); } + }; // at most as many bytes as "String" above => 12 bytes in 32-bit mode, 16 bytes in 64-bit mode + + // By using proper binary layout, retrieval of different integer types do not need conversions. + union Number { +#if RAPIDJSON_ENDIAN == RAPIDJSON_LITTLEENDIAN + struct I { + int i; + char padding[4]; + }i; + struct U { + unsigned u; + char padding2[4]; + }u; +#else + struct I { + char padding[4]; + int i; + }i; + struct U { + char padding2[4]; + unsigned u; + }u; +#endif + int64_t i64; + uint64_t u64; + double d; + }; // 8 bytes + + struct ObjectData { + SizeType size; + SizeType capacity; + Member* members; + }; // 12 bytes in 32-bit mode, 16 bytes in 64-bit mode + + struct ArrayData { + SizeType size; + SizeType capacity; + GenericValue* elements; + }; // 12 bytes in 32-bit mode, 16 bytes in 64-bit mode + + union Data { + String s; + ShortString ss; + Number n; + ObjectData o; + ArrayData a; + Flag f; + }; // 16 bytes in 32-bit mode, 24 bytes in 64-bit mode, 16 bytes in 64-bit with RAPIDJSON_48BITPOINTER_OPTIMIZATION + + RAPIDJSON_FORCEINLINE const Ch* GetStringPointer() const { return RAPIDJSON_GETPOINTER(Ch, data_.s.str); } + RAPIDJSON_FORCEINLINE const Ch* SetStringPointer(const Ch* str) { return RAPIDJSON_SETPOINTER(Ch, data_.s.str, str); } + RAPIDJSON_FORCEINLINE GenericValue* GetElementsPointer() const { return RAPIDJSON_GETPOINTER(GenericValue, data_.a.elements); } + RAPIDJSON_FORCEINLINE GenericValue* SetElementsPointer(GenericValue* elements) { return RAPIDJSON_SETPOINTER(GenericValue, data_.a.elements, elements); } + RAPIDJSON_FORCEINLINE Member* GetMembersPointer() const { return RAPIDJSON_GETPOINTER(Member, data_.o.members); } + RAPIDJSON_FORCEINLINE Member* SetMembersPointer(Member* members) { return RAPIDJSON_SETPOINTER(Member, data_.o.members, members); } + + // Initialize this value as array with initial data, without calling destructor. + void SetArrayRaw(GenericValue* values, SizeType count, Allocator& allocator) { + data_.f.flags = kArrayFlag; + if (count) { + GenericValue* e = static_cast<GenericValue*>(allocator.Malloc(count * sizeof(GenericValue))); + SetElementsPointer(e); + std::memcpy(static_cast<void*>(e), values, count * sizeof(GenericValue)); + } + else + SetElementsPointer(0); + data_.a.size = data_.a.capacity = count; + } + + //! Initialize this value as object with initial data, without calling destructor. + void SetObjectRaw(Member* members, SizeType count, Allocator& allocator) { + data_.f.flags = kObjectFlag; + if (count) { + Member* m = static_cast<Member*>(allocator.Malloc(count * sizeof(Member))); + SetMembersPointer(m); + std::memcpy(static_cast<void*>(m), members, count * sizeof(Member)); + } + else + SetMembersPointer(0); + data_.o.size = data_.o.capacity = count; + } + + //! Initialize this value as constant string, without calling destructor. + void SetStringRaw(StringRefType s) RAPIDJSON_NOEXCEPT { + data_.f.flags = kConstStringFlag; + SetStringPointer(s); + data_.s.length = s.length; + } + + //! Initialize this value as copy string with initial data, without calling destructor. + void SetStringRaw(StringRefType s, Allocator& allocator) { + Ch* str = 0; + if (ShortString::Usable(s.length)) { + data_.f.flags = kShortStringFlag; + data_.ss.SetLength(s.length); + str = data_.ss.str; + } else { + data_.f.flags = kCopyStringFlag; + data_.s.length = s.length; + str = static_cast<Ch *>(allocator.Malloc((s.length + 1) * sizeof(Ch))); + SetStringPointer(str); + } + std::memcpy(str, s, s.length * sizeof(Ch)); + str[s.length] = '\0'; + } + + //! Assignment without calling destructor + void RawAssign(GenericValue& rhs) RAPIDJSON_NOEXCEPT { + data_ = rhs.data_; + // data_.f.flags = rhs.data_.f.flags; + rhs.data_.f.flags = kNullFlag; + } + + template <typename SourceAllocator> + bool StringEqual(const GenericValue<Encoding, SourceAllocator>& rhs) const { + RAPIDJSON_ASSERT(IsString()); + RAPIDJSON_ASSERT(rhs.IsString()); + + const SizeType len1 = GetStringLength(); + const SizeType len2 = rhs.GetStringLength(); + if(len1 != len2) { return false; } + + const Ch* const str1 = GetString(); + const Ch* const str2 = rhs.GetString(); + if(str1 == str2) { return true; } // fast path for constant string + + return (std::memcmp(str1, str2, sizeof(Ch) * len1) == 0); + } + + Data data_; +}; + +//! GenericValue with UTF8 encoding +typedef GenericValue<UTF8<> > Value; + +/////////////////////////////////////////////////////////////////////////////// +// GenericDocument + +//! A document for parsing JSON text as DOM. +/*! + \note implements Handler concept + \tparam Encoding Encoding for both parsing and string storage. + \tparam Allocator Allocator for allocating memory for the DOM + \tparam StackAllocator Allocator for allocating memory for stack during parsing. + \warning Although GenericDocument inherits from GenericValue, the API does \b not provide any virtual functions, especially no virtual destructor. To avoid memory leaks, do not \c delete a GenericDocument object via a pointer to a GenericValue. +*/ +template <typename Encoding, typename Allocator = MemoryPoolAllocator<>, typename StackAllocator = CrtAllocator> +class GenericDocument : public GenericValue<Encoding, Allocator> { +public: + typedef typename Encoding::Ch Ch; //!< Character type derived from Encoding. + typedef GenericValue<Encoding, Allocator> ValueType; //!< Value type of the document. + typedef Allocator AllocatorType; //!< Allocator type from template parameter. + + //! Constructor + /*! Creates an empty document of specified type. + \param type Mandatory type of object to create. + \param allocator Optional allocator for allocating memory. + \param stackCapacity Optional initial capacity of stack in bytes. + \param stackAllocator Optional allocator for allocating memory for stack. + */ + explicit GenericDocument(Type type, Allocator* allocator = 0, size_t stackCapacity = kDefaultStackCapacity, StackAllocator* stackAllocator = 0) : + GenericValue<Encoding, Allocator>(type), allocator_(allocator), ownAllocator_(0), stack_(stackAllocator, stackCapacity), parseResult_() + { + if (!allocator_) + ownAllocator_ = allocator_ = RAPIDJSON_NEW(Allocator)(); + } + + //! Constructor + /*! Creates an empty document which type is Null. + \param allocator Optional allocator for allocating memory. + \param stackCapacity Optional initial capacity of stack in bytes. + \param stackAllocator Optional allocator for allocating memory for stack. + */ + GenericDocument(Allocator* allocator = 0, size_t stackCapacity = kDefaultStackCapacity, StackAllocator* stackAllocator = 0) : + allocator_(allocator), ownAllocator_(0), stack_(stackAllocator, stackCapacity), parseResult_() + { + if (!allocator_) + ownAllocator_ = allocator_ = RAPIDJSON_NEW(Allocator)(); + } + +#if RAPIDJSON_HAS_CXX11_RVALUE_REFS + //! Move constructor in C++11 + GenericDocument(GenericDocument&& rhs) RAPIDJSON_NOEXCEPT + : ValueType(std::forward<ValueType>(rhs)), // explicit cast to avoid prohibited move from Document + allocator_(rhs.allocator_), + ownAllocator_(rhs.ownAllocator_), + stack_(std::move(rhs.stack_)), + parseResult_(rhs.parseResult_) + { + rhs.allocator_ = 0; + rhs.ownAllocator_ = 0; + rhs.parseResult_ = ParseResult(); + } +#endif + + ~GenericDocument() { + Destroy(); + } + +#if RAPIDJSON_HAS_CXX11_RVALUE_REFS + //! Move assignment in C++11 + GenericDocument& operator=(GenericDocument&& rhs) RAPIDJSON_NOEXCEPT + { + // The cast to ValueType is necessary here, because otherwise it would + // attempt to call GenericValue's templated assignment operator. + ValueType::operator=(std::forward<ValueType>(rhs)); + + // Calling the destructor here would prematurely call stack_'s destructor + Destroy(); + + allocator_ = rhs.allocator_; + ownAllocator_ = rhs.ownAllocator_; + stack_ = std::move(rhs.stack_); + parseResult_ = rhs.parseResult_; + + rhs.allocator_ = 0; + rhs.ownAllocator_ = 0; + rhs.parseResult_ = ParseResult(); + + return *this; + } +#endif + + //! Exchange the contents of this document with those of another. + /*! + \param rhs Another document. + \note Constant complexity. + \see GenericValue::Swap + */ + GenericDocument& Swap(GenericDocument& rhs) RAPIDJSON_NOEXCEPT { + ValueType::Swap(rhs); + stack_.Swap(rhs.stack_); + internal::Swap(allocator_, rhs.allocator_); + internal::Swap(ownAllocator_, rhs.ownAllocator_); + internal::Swap(parseResult_, rhs.parseResult_); + return *this; + } + + // Allow Swap with ValueType. + // Refer to Effective C++ 3rd Edition/Item 33: Avoid hiding inherited names. + using ValueType::Swap; + + //! free-standing swap function helper + /*! + Helper function to enable support for common swap implementation pattern based on \c std::swap: + \code + void swap(MyClass& a, MyClass& b) { + using std::swap; + swap(a.doc, b.doc); + // ... + } + \endcode + \see Swap() + */ + friend inline void swap(GenericDocument& a, GenericDocument& b) RAPIDJSON_NOEXCEPT { a.Swap(b); } + + //! Populate this document by a generator which produces SAX events. + /*! \tparam Generator A functor with <tt>bool f(Handler)</tt> prototype. + \param g Generator functor which sends SAX events to the parameter. + \return The document itself for fluent API. + */ + template <typename Generator> + GenericDocument& Populate(Generator& g) { + ClearStackOnExit scope(*this); + if (g(*this)) { + RAPIDJSON_ASSERT(stack_.GetSize() == sizeof(ValueType)); // Got one and only one root object + ValueType::operator=(*stack_.template Pop<ValueType>(1));// Move value from stack to document + } + return *this; + } + + //!@name Parse from stream + //!@{ + + //! Parse JSON text from an input stream (with Encoding conversion) + /*! \tparam parseFlags Combination of \ref ParseFlag. + \tparam SourceEncoding Encoding of input stream + \tparam InputStream Type of input stream, implementing Stream concept + \param is Input stream to be parsed. + \return The document itself for fluent API. + */ + template <unsigned parseFlags, typename SourceEncoding, typename InputStream> + GenericDocument& ParseStream(InputStream& is) { + GenericReader<SourceEncoding, Encoding, StackAllocator> reader( + stack_.HasAllocator() ? &stack_.GetAllocator() : 0); + ClearStackOnExit scope(*this); + parseResult_ = reader.template Parse<parseFlags>(is, *this); + if (parseResult_) { + RAPIDJSON_ASSERT(stack_.GetSize() == sizeof(ValueType)); // Got one and only one root object + ValueType::operator=(*stack_.template Pop<ValueType>(1));// Move value from stack to document + } + return *this; + } + + //! Parse JSON text from an input stream + /*! \tparam parseFlags Combination of \ref ParseFlag. + \tparam InputStream Type of input stream, implementing Stream concept + \param is Input stream to be parsed. + \return The document itself for fluent API. + */ + template <unsigned parseFlags, typename InputStream> + GenericDocument& ParseStream(InputStream& is) { + return ParseStream<parseFlags, Encoding, InputStream>(is); + } + + //! Parse JSON text from an input stream (with \ref kParseDefaultFlags) + /*! \tparam InputStream Type of input stream, implementing Stream concept + \param is Input stream to be parsed. + \return The document itself for fluent API. + */ + template <typename InputStream> + GenericDocument& ParseStream(InputStream& is) { + return ParseStream<kParseDefaultFlags, Encoding, InputStream>(is); + } + //!@} + + //!@name Parse in-place from mutable string + //!@{ + + //! Parse JSON text from a mutable string + /*! \tparam parseFlags Combination of \ref ParseFlag. + \param str Mutable zero-terminated string to be parsed. + \return The document itself for fluent API. + */ + template <unsigned parseFlags> + GenericDocument& ParseInsitu(Ch* str) { + GenericInsituStringStream<Encoding> s(str); + return ParseStream<parseFlags | kParseInsituFlag>(s); + } + + //! Parse JSON text from a mutable string (with \ref kParseDefaultFlags) + /*! \param str Mutable zero-terminated string to be parsed. + \return The document itself for fluent API. + */ + GenericDocument& ParseInsitu(Ch* str) { + return ParseInsitu<kParseDefaultFlags>(str); + } + //!@} + + //!@name Parse from read-only string + //!@{ + + //! Parse JSON text from a read-only string (with Encoding conversion) + /*! \tparam parseFlags Combination of \ref ParseFlag (must not contain \ref kParseInsituFlag). + \tparam SourceEncoding Transcoding from input Encoding + \param str Read-only zero-terminated string to be parsed. + */ + template <unsigned parseFlags, typename SourceEncoding> + GenericDocument& Parse(const typename SourceEncoding::Ch* str) { + RAPIDJSON_ASSERT(!(parseFlags & kParseInsituFlag)); + GenericStringStream<SourceEncoding> s(str); + return ParseStream<parseFlags, SourceEncoding>(s); + } + + //! Parse JSON text from a read-only string + /*! \tparam parseFlags Combination of \ref ParseFlag (must not contain \ref kParseInsituFlag). + \param str Read-only zero-terminated string to be parsed. + */ + template <unsigned parseFlags> + GenericDocument& Parse(const Ch* str) { + return Parse<parseFlags, Encoding>(str); + } + + //! Parse JSON text from a read-only string (with \ref kParseDefaultFlags) + /*! \param str Read-only zero-terminated string to be parsed. + */ + GenericDocument& Parse(const Ch* str) { + return Parse<kParseDefaultFlags>(str); + } + + template <unsigned parseFlags, typename SourceEncoding> + GenericDocument& Parse(const typename SourceEncoding::Ch* str, size_t length) { + RAPIDJSON_ASSERT(!(parseFlags & kParseInsituFlag)); + MemoryStream ms(reinterpret_cast<const char*>(str), length * sizeof(typename SourceEncoding::Ch)); + EncodedInputStream<SourceEncoding, MemoryStream> is(ms); + ParseStream<parseFlags, SourceEncoding>(is); + return *this; + } + + template <unsigned parseFlags> + GenericDocument& Parse(const Ch* str, size_t length) { + return Parse<parseFlags, Encoding>(str, length); + } + + GenericDocument& Parse(const Ch* str, size_t length) { + return Parse<kParseDefaultFlags>(str, length); + } + +#if RAPIDJSON_HAS_STDSTRING + template <unsigned parseFlags, typename SourceEncoding> + GenericDocument& Parse(const std::basic_string<typename SourceEncoding::Ch>& str) { + // c_str() is constant complexity according to standard. Should be faster than Parse(const char*, size_t) + return Parse<parseFlags, SourceEncoding>(str.c_str()); + } + + template <unsigned parseFlags> + GenericDocument& Parse(const std::basic_string<Ch>& str) { + return Parse<parseFlags, Encoding>(str.c_str()); + } + + GenericDocument& Parse(const std::basic_string<Ch>& str) { + return Parse<kParseDefaultFlags>(str); + } +#endif // RAPIDJSON_HAS_STDSTRING + + //!@} + + //!@name Handling parse errors + //!@{ + + //! Whether a parse error has occurred in the last parsing. + bool HasParseError() const { return parseResult_.IsError(); } + + //! Get the \ref ParseErrorCode of last parsing. + ParseErrorCode GetParseError() const { return parseResult_.Code(); } + + //! Get the position of last parsing error in input, 0 otherwise. + size_t GetErrorOffset() const { return parseResult_.Offset(); } + + //! Implicit conversion to get the last parse result +#ifndef __clang // -Wdocumentation + /*! \return \ref ParseResult of the last parse operation + + \code + Document doc; + ParseResult ok = doc.Parse(json); + if (!ok) + printf( "JSON parse error: %s (%u)\n", GetParseError_En(ok.Code()), ok.Offset()); + \endcode + */ +#endif + operator ParseResult() const { return parseResult_; } + //!@} + + //! Get the allocator of this document. + Allocator& GetAllocator() { + RAPIDJSON_ASSERT(allocator_); + return *allocator_; + } + + //! Get the capacity of stack in bytes. + size_t GetStackCapacity() const { return stack_.GetCapacity(); } + +private: + // clear stack on any exit from ParseStream, e.g. due to exception + struct ClearStackOnExit { + explicit ClearStackOnExit(GenericDocument& d) : d_(d) {} + ~ClearStackOnExit() { d_.ClearStack(); } + private: + ClearStackOnExit(const ClearStackOnExit&); + ClearStackOnExit& operator=(const ClearStackOnExit&); + GenericDocument& d_; + }; + + // callers of the following private Handler functions + // template <typename,typename,typename> friend class GenericReader; // for parsing + template <typename, typename> friend class GenericValue; // for deep copying + +public: + // Implementation of Handler + bool Null() { new (stack_.template Push<ValueType>()) ValueType(); return true; } + bool Bool(bool b) { new (stack_.template Push<ValueType>()) ValueType(b); return true; } + bool Int(int i) { new (stack_.template Push<ValueType>()) ValueType(i); return true; } + bool Uint(unsigned i) { new (stack_.template Push<ValueType>()) ValueType(i); return true; } + bool Int64(int64_t i) { new (stack_.template Push<ValueType>()) ValueType(i); return true; } + bool Uint64(uint64_t i) { new (stack_.template Push<ValueType>()) ValueType(i); return true; } + bool Double(double d) { new (stack_.template Push<ValueType>()) ValueType(d); return true; } + + bool RawNumber(const Ch* str, SizeType length, bool copy) { + if (copy) + new (stack_.template Push<ValueType>()) ValueType(str, length, GetAllocator()); + else + new (stack_.template Push<ValueType>()) ValueType(str, length); + return true; + } + + bool String(const Ch* str, SizeType length, bool copy) { + if (copy) + new (stack_.template Push<ValueType>()) ValueType(str, length, GetAllocator()); + else + new (stack_.template Push<ValueType>()) ValueType(str, length); + return true; + } + + bool StartObject() { new (stack_.template Push<ValueType>()) ValueType(kObjectType); return true; } + + bool Key(const Ch* str, SizeType length, bool copy) { return String(str, length, copy); } + + bool EndObject(SizeType memberCount) { + typename ValueType::Member* members = stack_.template Pop<typename ValueType::Member>(memberCount); + stack_.template Top<ValueType>()->SetObjectRaw(members, memberCount, GetAllocator()); + return true; + } + + bool StartArray() { new (stack_.template Push<ValueType>()) ValueType(kArrayType); return true; } + + bool EndArray(SizeType elementCount) { + ValueType* elements = stack_.template Pop<ValueType>(elementCount); + stack_.template Top<ValueType>()->SetArrayRaw(elements, elementCount, GetAllocator()); + return true; + } + +private: + //! Prohibit copying + GenericDocument(const GenericDocument&); + //! Prohibit assignment + GenericDocument& operator=(const GenericDocument&); + + void ClearStack() { + if (Allocator::kNeedFree) + while (stack_.GetSize() > 0) // Here assumes all elements in stack array are GenericValue (Member is actually 2 GenericValue objects) + (stack_.template Pop<ValueType>(1))->~ValueType(); + else + stack_.Clear(); + stack_.ShrinkToFit(); + } + + void Destroy() { + RAPIDJSON_DELETE(ownAllocator_); + } + + static const size_t kDefaultStackCapacity = 1024; + Allocator* allocator_; + Allocator* ownAllocator_; + internal::Stack<StackAllocator> stack_; + ParseResult parseResult_; +}; + +//! GenericDocument with UTF8 encoding +typedef GenericDocument<UTF8<> > Document; + +//! Helper class for accessing Value of array type. +/*! + Instance of this helper class is obtained by \c GenericValue::GetArray(). + In addition to all APIs for array type, it provides range-based for loop if \c RAPIDJSON_HAS_CXX11_RANGE_FOR=1. +*/ +template <bool Const, typename ValueT> +class GenericArray { +public: + typedef GenericArray<true, ValueT> ConstArray; + typedef GenericArray<false, ValueT> Array; + typedef ValueT PlainType; + typedef typename internal::MaybeAddConst<Const,PlainType>::Type ValueType; + typedef ValueType* ValueIterator; // This may be const or non-const iterator + typedef const ValueT* ConstValueIterator; + typedef typename ValueType::AllocatorType AllocatorType; + typedef typename ValueType::StringRefType StringRefType; + + template <typename, typename> + friend class GenericValue; + + GenericArray(const GenericArray& rhs) : value_(rhs.value_) {} + GenericArray& operator=(const GenericArray& rhs) { value_ = rhs.value_; return *this; } + ~GenericArray() {} + + SizeType Size() const { return value_.Size(); } + SizeType Capacity() const { return value_.Capacity(); } + bool Empty() const { return value_.Empty(); } + void Clear() const { value_.Clear(); } + ValueType& operator[](SizeType index) const { return value_[index]; } + ValueIterator Begin() const { return value_.Begin(); } + ValueIterator End() const { return value_.End(); } + GenericArray Reserve(SizeType newCapacity, AllocatorType &allocator) const { value_.Reserve(newCapacity, allocator); return *this; } + GenericArray PushBack(ValueType& value, AllocatorType& allocator) const { value_.PushBack(value, allocator); return *this; } +#if RAPIDJSON_HAS_CXX11_RVALUE_REFS + GenericArray PushBack(ValueType&& value, AllocatorType& allocator) const { value_.PushBack(value, allocator); return *this; } +#endif // RAPIDJSON_HAS_CXX11_RVALUE_REFS + GenericArray PushBack(StringRefType value, AllocatorType& allocator) const { value_.PushBack(value, allocator); return *this; } + template <typename T> RAPIDJSON_DISABLEIF_RETURN((internal::OrExpr<internal::IsPointer<T>, internal::IsGenericValue<T> >), (const GenericArray&)) PushBack(T value, AllocatorType& allocator) const { value_.PushBack(value, allocator); return *this; } + GenericArray PopBack() const { value_.PopBack(); return *this; } + ValueIterator Erase(ConstValueIterator pos) const { return value_.Erase(pos); } + ValueIterator Erase(ConstValueIterator first, ConstValueIterator last) const { return value_.Erase(first, last); } + +#if RAPIDJSON_HAS_CXX11_RANGE_FOR + ValueIterator begin() const { return value_.Begin(); } + ValueIterator end() const { return value_.End(); } +#endif + +private: + GenericArray(); + GenericArray(ValueType& value) : value_(value) {} + ValueType& value_; +}; + +//! Helper class for accessing Value of object type. +/*! + Instance of this helper class is obtained by \c GenericValue::GetObject(). + In addition to all APIs for array type, it provides range-based for loop if \c RAPIDJSON_HAS_CXX11_RANGE_FOR=1. +*/ +template <bool Const, typename ValueT> +class GenericObject { +public: + typedef GenericObject<true, ValueT> ConstObject; + typedef GenericObject<false, ValueT> Object; + typedef ValueT PlainType; + typedef typename internal::MaybeAddConst<Const,PlainType>::Type ValueType; + typedef GenericMemberIterator<Const, typename ValueT::EncodingType, typename ValueT::AllocatorType> MemberIterator; // This may be const or non-const iterator + typedef GenericMemberIterator<true, typename ValueT::EncodingType, typename ValueT::AllocatorType> ConstMemberIterator; + typedef typename ValueType::AllocatorType AllocatorType; + typedef typename ValueType::StringRefType StringRefType; + typedef typename ValueType::EncodingType EncodingType; + typedef typename ValueType::Ch Ch; + + template <typename, typename> + friend class GenericValue; + + GenericObject(const GenericObject& rhs) : value_(rhs.value_) {} + GenericObject& operator=(const GenericObject& rhs) { value_ = rhs.value_; return *this; } + ~GenericObject() {} + + SizeType MemberCount() const { return value_.MemberCount(); } + SizeType MemberCapacity() const { return value_.MemberCapacity(); } + bool ObjectEmpty() const { return value_.ObjectEmpty(); } + template <typename T> ValueType& operator[](T* name) const { return value_[name]; } + template <typename SourceAllocator> ValueType& operator[](const GenericValue<EncodingType, SourceAllocator>& name) const { return value_[name]; } +#if RAPIDJSON_HAS_STDSTRING + ValueType& operator[](const std::basic_string<Ch>& name) const { return value_[name]; } +#endif + MemberIterator MemberBegin() const { return value_.MemberBegin(); } + MemberIterator MemberEnd() const { return value_.MemberEnd(); } + GenericObject MemberReserve(SizeType newCapacity, AllocatorType &allocator) const { value_.MemberReserve(newCapacity, allocator); return *this; } + bool HasMember(const Ch* name) const { return value_.HasMember(name); } +#if RAPIDJSON_HAS_STDSTRING + bool HasMember(const std::basic_string<Ch>& name) const { return value_.HasMember(name); } +#endif + template <typename SourceAllocator> bool HasMember(const GenericValue<EncodingType, SourceAllocator>& name) const { return value_.HasMember(name); } + MemberIterator FindMember(const Ch* name) const { return value_.FindMember(name); } + template <typename SourceAllocator> MemberIterator FindMember(const GenericValue<EncodingType, SourceAllocator>& name) const { return value_.FindMember(name); } +#if RAPIDJSON_HAS_STDSTRING + MemberIterator FindMember(const std::basic_string<Ch>& name) const { return value_.FindMember(name); } +#endif + GenericObject AddMember(ValueType& name, ValueType& value, AllocatorType& allocator) const { value_.AddMember(name, value, allocator); return *this; } + GenericObject AddMember(ValueType& name, StringRefType value, AllocatorType& allocator) const { value_.AddMember(name, value, allocator); return *this; } +#if RAPIDJSON_HAS_STDSTRING + GenericObject AddMember(ValueType& name, std::basic_string<Ch>& value, AllocatorType& allocator) const { value_.AddMember(name, value, allocator); return *this; } +#endif + template <typename T> RAPIDJSON_DISABLEIF_RETURN((internal::OrExpr<internal::IsPointer<T>, internal::IsGenericValue<T> >), (ValueType&)) AddMember(ValueType& name, T value, AllocatorType& allocator) const { value_.AddMember(name, value, allocator); return *this; } +#if RAPIDJSON_HAS_CXX11_RVALUE_REFS + GenericObject AddMember(ValueType&& name, ValueType&& value, AllocatorType& allocator) const { value_.AddMember(name, value, allocator); return *this; } + GenericObject AddMember(ValueType&& name, ValueType& value, AllocatorType& allocator) const { value_.AddMember(name, value, allocator); return *this; } + GenericObject AddMember(ValueType& name, ValueType&& value, AllocatorType& allocator) const { value_.AddMember(name, value, allocator); return *this; } + GenericObject AddMember(StringRefType name, ValueType&& value, AllocatorType& allocator) const { value_.AddMember(name, value, allocator); return *this; } +#endif // RAPIDJSON_HAS_CXX11_RVALUE_REFS + GenericObject AddMember(StringRefType name, ValueType& value, AllocatorType& allocator) const { value_.AddMember(name, value, allocator); return *this; } + GenericObject AddMember(StringRefType name, StringRefType value, AllocatorType& allocator) const { value_.AddMember(name, value, allocator); return *this; } + template <typename T> RAPIDJSON_DISABLEIF_RETURN((internal::OrExpr<internal::IsPointer<T>, internal::IsGenericValue<T> >), (GenericObject)) AddMember(StringRefType name, T value, AllocatorType& allocator) const { value_.AddMember(name, value, allocator); return *this; } + void RemoveAllMembers() { value_.RemoveAllMembers(); } + bool RemoveMember(const Ch* name) const { return value_.RemoveMember(name); } +#if RAPIDJSON_HAS_STDSTRING + bool RemoveMember(const std::basic_string<Ch>& name) const { return value_.RemoveMember(name); } +#endif + template <typename SourceAllocator> bool RemoveMember(const GenericValue<EncodingType, SourceAllocator>& name) const { return value_.RemoveMember(name); } + MemberIterator RemoveMember(MemberIterator m) const { return value_.RemoveMember(m); } + MemberIterator EraseMember(ConstMemberIterator pos) const { return value_.EraseMember(pos); } + MemberIterator EraseMember(ConstMemberIterator first, ConstMemberIterator last) const { return value_.EraseMember(first, last); } + bool EraseMember(const Ch* name) const { return value_.EraseMember(name); } +#if RAPIDJSON_HAS_STDSTRING + bool EraseMember(const std::basic_string<Ch>& name) const { return EraseMember(ValueType(StringRef(name))); } +#endif + template <typename SourceAllocator> bool EraseMember(const GenericValue<EncodingType, SourceAllocator>& name) const { return value_.EraseMember(name); } + +#if RAPIDJSON_HAS_CXX11_RANGE_FOR + MemberIterator begin() const { return value_.MemberBegin(); } + MemberIterator end() const { return value_.MemberEnd(); } +#endif + +private: + GenericObject(); + GenericObject(ValueType& value) : value_(value) {} + ValueType& value_; +}; + +RAPIDJSON_NAMESPACE_END +RAPIDJSON_DIAG_POP + +#endif // RAPIDJSON_DOCUMENT_H_ + +// End file:document.h + + +// Begin file: encodedstream.h +// already included +// End file:encodedstream.h + + +// Begin file: encodings.h +// already included +// End file:encodings.h + + +// Begin file: filereadstream.h +// Tencent is pleased to support the open source community by making RapidJSON available. +// +// Copyright (C) 2015 THL A29 Limited, a Tencent company, and Milo Yip. All rights reserved. +// +// Licensed under the MIT License (the "License"); you may not use this file except +// in compliance with the License. You may obtain a copy of the License at +// +// http://opensource.org/licenses/MIT +// +// Unless required by applicable law or agreed to in writing, software distributed +// under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR +// CONDITIONS OF ANY KIND, either express or implied. See the License for the +// specific language governing permissions and limitations under the License. + +#ifndef RAPIDJSON_FILEREADSTREAM_H_ +#define RAPIDJSON_FILEREADSTREAM_H_ + + +// Begin file: stream.h +// already included +// End file:stream.h + +#include <cstdio> + +#ifdef __clang__ +RAPIDJSON_DIAG_PUSH +RAPIDJSON_DIAG_OFF(padded) +RAPIDJSON_DIAG_OFF(unreachable-code) +RAPIDJSON_DIAG_OFF(missing-noreturn) +#endif + +RAPIDJSON_NAMESPACE_BEGIN + +//! File byte stream for input using fread(). +/*! + \note implements Stream concept +*/ +class FileReadStream { +public: + typedef char Ch; //!< Character type (byte). + + //! Constructor. + /*! + \param fp File pointer opened for read. + \param buffer user-supplied buffer. + \param bufferSize size of buffer in bytes. Must >=4 bytes. + */ + FileReadStream(std::FILE* fp, char* buffer, size_t bufferSize) : fp_(fp), buffer_(buffer), bufferSize_(bufferSize), bufferLast_(0), current_(buffer_), readCount_(0), count_(0), eof_(false) { + RAPIDJSON_ASSERT(fp_ != 0); + RAPIDJSON_ASSERT(bufferSize >= 4); + Read(); + } + + Ch Peek() const { return *current_; } + Ch Take() { Ch c = *current_; Read(); return c; } + size_t Tell() const { return count_ + static_cast<size_t>(current_ - buffer_); } + + // Not implemented + void Put(Ch) { RAPIDJSON_ASSERT(false); } + void Flush() { RAPIDJSON_ASSERT(false); } + Ch* PutBegin() { RAPIDJSON_ASSERT(false); return 0; } + size_t PutEnd(Ch*) { RAPIDJSON_ASSERT(false); return 0; } + + // For encoding detection only. + const Ch* Peek4() const { + return (current_ + 4 - !eof_ <= bufferLast_) ? current_ : 0; + } + +private: + void Read() { + if (current_ < bufferLast_) + ++current_; + else if (!eof_) { + count_ += readCount_; + readCount_ = std::fread(buffer_, 1, bufferSize_, fp_); + bufferLast_ = buffer_ + readCount_ - 1; + current_ = buffer_; + + if (readCount_ < bufferSize_) { + buffer_[readCount_] = '\0'; + ++bufferLast_; + eof_ = true; + } + } + } + + std::FILE* fp_; + Ch *buffer_; + size_t bufferSize_; + Ch *bufferLast_; + Ch *current_; + size_t readCount_; + size_t count_; //!< Number of characters read + bool eof_; +}; + +RAPIDJSON_NAMESPACE_END + +#ifdef __clang__ +RAPIDJSON_DIAG_POP +#endif + +#endif // RAPIDJSON_FILESTREAM_H_ + +// End file:filereadstream.h + + +// Begin file: filewritestream.h +// Tencent is pleased to support the open source community by making RapidJSON available. +// +// Copyright (C) 2015 THL A29 Limited, a Tencent company, and Milo Yip. All rights reserved. +// +// Licensed under the MIT License (the "License"); you may not use this file except +// in compliance with the License. You may obtain a copy of the License at +// +// http://opensource.org/licenses/MIT +// +// Unless required by applicable law or agreed to in writing, software distributed +// under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR +// CONDITIONS OF ANY KIND, either express or implied. See the License for the +// specific language governing permissions and limitations under the License. + +#ifndef RAPIDJSON_FILEWRITESTREAM_H_ +#define RAPIDJSON_FILEWRITESTREAM_H_ + + +// Begin file: stream.h +// already included +// End file:stream.h + +#include <cstdio> + +#ifdef __clang__ +RAPIDJSON_DIAG_PUSH +RAPIDJSON_DIAG_OFF(unreachable-code) +#endif + +RAPIDJSON_NAMESPACE_BEGIN + +//! Wrapper of C file stream for output using fwrite(). +/*! + \note implements Stream concept +*/ +class FileWriteStream { +public: + typedef char Ch; //!< Character type. Only support char. + + FileWriteStream(std::FILE* fp, char* buffer, size_t bufferSize) : fp_(fp), buffer_(buffer), bufferEnd_(buffer + bufferSize), current_(buffer_) { + RAPIDJSON_ASSERT(fp_ != 0); + } + + void Put(char c) { + if (current_ >= bufferEnd_) + Flush(); + + *current_++ = c; + } + + void PutN(char c, size_t n) { + size_t avail = static_cast<size_t>(bufferEnd_ - current_); + while (n > avail) { + std::memset(current_, c, avail); + current_ += avail; + Flush(); + n -= avail; + avail = static_cast<size_t>(bufferEnd_ - current_); + } + + if (n > 0) { + std::memset(current_, c, n); + current_ += n; + } + } + + void Flush() { + if (current_ != buffer_) { + size_t result = std::fwrite(buffer_, 1, static_cast<size_t>(current_ - buffer_), fp_); + if (result < static_cast<size_t>(current_ - buffer_)) { + // failure deliberately ignored at this time + // added to avoid warn_unused_result build errors + } + current_ = buffer_; + } + } + + // Not implemented + char Peek() const { RAPIDJSON_ASSERT(false); return 0; } + char Take() { RAPIDJSON_ASSERT(false); return 0; } + size_t Tell() const { RAPIDJSON_ASSERT(false); return 0; } + char* PutBegin() { RAPIDJSON_ASSERT(false); return 0; } + size_t PutEnd(char*) { RAPIDJSON_ASSERT(false); return 0; } + +private: + // Prohibit copy constructor & assignment operator. + FileWriteStream(const FileWriteStream&); + FileWriteStream& operator=(const FileWriteStream&); + + std::FILE* fp_; + char *buffer_; + char *bufferEnd_; + char *current_; +}; + +//! Implement specialized version of PutN() with memset() for better performance. +template<> +inline void PutN(FileWriteStream& stream, char c, size_t n) { + stream.PutN(c, n); +} + +RAPIDJSON_NAMESPACE_END + +#ifdef __clang__ +RAPIDJSON_DIAG_POP +#endif + +#endif // RAPIDJSON_FILESTREAM_H_ + +// End file:filewritestream.h + + +// Begin file: fwd.h +// Tencent is pleased to support the open source community by making RapidJSON available. +// +// Copyright (C) 2015 THL A29 Limited, a Tencent company, and Milo Yip. All rights reserved. +// +// Licensed under the MIT License (the "License"); you may not use this file except +// in compliance with the License. You may obtain a copy of the License at +// +// http://opensource.org/licenses/MIT +// +// Unless required by applicable law or agreed to in writing, software distributed +// under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR +// CONDITIONS OF ANY KIND, either express or implied. See the License for the +// specific language governing permissions and limitations under the License. + +#ifndef RAPIDJSON_FWD_H_ +#define RAPIDJSON_FWD_H_ + + +// Begin file: rapidjson.h +// already included +// End file:rapidjson.h + + +RAPIDJSON_NAMESPACE_BEGIN + +// encodings.h + +template<typename CharType> struct UTF8; +template<typename CharType> struct UTF16; +template<typename CharType> struct UTF16BE; +template<typename CharType> struct UTF16LE; +template<typename CharType> struct UTF32; +template<typename CharType> struct UTF32BE; +template<typename CharType> struct UTF32LE; +template<typename CharType> struct ASCII; +template<typename CharType> struct AutoUTF; + +template<typename SourceEncoding, typename TargetEncoding> +struct Transcoder; + +// allocators.h + +class CrtAllocator; + +template <typename BaseAllocator> +class MemoryPoolAllocator; + +// stream.h + +template <typename Encoding> +struct GenericStringStream; + +typedef GenericStringStream<UTF8<char> > StringStream; + +template <typename Encoding> +struct GenericInsituStringStream; + +typedef GenericInsituStringStream<UTF8<char> > InsituStringStream; + +// stringbuffer.h + +template <typename Encoding, typename Allocator> +class GenericStringBuffer; + +typedef GenericStringBuffer<UTF8<char>, CrtAllocator> StringBuffer; + +// filereadstream.h + +class FileReadStream; + +// filewritestream.h + +class FileWriteStream; + +// memorybuffer.h + +template <typename Allocator> +struct GenericMemoryBuffer; + +typedef GenericMemoryBuffer<CrtAllocator> MemoryBuffer; + +// memorystream.h + +struct MemoryStream; + +// reader.h + +template<typename Encoding, typename Derived> +struct BaseReaderHandler; + +template <typename SourceEncoding, typename TargetEncoding, typename StackAllocator> +class GenericReader; + +typedef GenericReader<UTF8<char>, UTF8<char>, CrtAllocator> Reader; + +// writer.h + +template<typename OutputStream, typename SourceEncoding, typename TargetEncoding, typename StackAllocator, unsigned writeFlags> +class Writer; + +// prettywriter.h + +template<typename OutputStream, typename SourceEncoding, typename TargetEncoding, typename StackAllocator, unsigned writeFlags> +class PrettyWriter; + +// document.h + +template <typename Encoding, typename Allocator> +struct GenericMember; + +template <bool Const, typename Encoding, typename Allocator> +class GenericMemberIterator; + +template<typename CharType> +struct GenericStringRef; + +template <typename Encoding, typename Allocator> +class GenericValue; + +typedef GenericValue<UTF8<char>, MemoryPoolAllocator<CrtAllocator> > Value; + +template <typename Encoding, typename Allocator, typename StackAllocator> +class GenericDocument; + +typedef GenericDocument<UTF8<char>, MemoryPoolAllocator<CrtAllocator>, CrtAllocator> Document; + +// pointer.h + +template <typename ValueType, typename Allocator> +class GenericPointer; + +typedef GenericPointer<Value, CrtAllocator> Pointer; + +// schema.h + +template <typename SchemaDocumentType> +class IGenericRemoteSchemaDocumentProvider; + +template <typename ValueT, typename Allocator> +class GenericSchemaDocument; + +typedef GenericSchemaDocument<Value, CrtAllocator> SchemaDocument; +typedef IGenericRemoteSchemaDocumentProvider<SchemaDocument> IRemoteSchemaDocumentProvider; + +template < + typename SchemaDocumentType, + typename OutputHandler, + typename StateAllocator> +class GenericSchemaValidator; + +typedef GenericSchemaValidator<SchemaDocument, BaseReaderHandler<UTF8<char>, void>, CrtAllocator> SchemaValidator; + +RAPIDJSON_NAMESPACE_END + +#endif // RAPIDJSON_RAPIDJSONFWD_H_ + +// End file:fwd.h + + +// Begin file: istreamwrapper.h +// Tencent is pleased to support the open source community by making RapidJSON available. +// +// Copyright (C) 2015 THL A29 Limited, a Tencent company, and Milo Yip. All rights reserved. +// +// Licensed under the MIT License (the "License"); you may not use this file except +// in compliance with the License. You may obtain a copy of the License at +// +// http://opensource.org/licenses/MIT +// +// Unless required by applicable law or agreed to in writing, software distributed +// under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR +// CONDITIONS OF ANY KIND, either express or implied. See the License for the +// specific language governing permissions and limitations under the License. + +#ifndef RAPIDJSON_ISTREAMWRAPPER_H_ +#define RAPIDJSON_ISTREAMWRAPPER_H_ + + +// Begin file: stream.h +// already included +// End file:stream.h + +#include <iosfwd> + +#ifdef __clang__ +RAPIDJSON_DIAG_PUSH +RAPIDJSON_DIAG_OFF(padded) +#elif defined(_MSC_VER) +RAPIDJSON_DIAG_PUSH +RAPIDJSON_DIAG_OFF(4351) // new behavior: elements of array 'array' will be default initialized +#endif + +RAPIDJSON_NAMESPACE_BEGIN + +//! Wrapper of \c std::basic_istream into RapidJSON's Stream concept. +/*! + The classes can be wrapped including but not limited to: + + - \c std::istringstream + - \c std::stringstream + - \c std::wistringstream + - \c std::wstringstream + - \c std::ifstream + - \c std::fstream + - \c std::wifstream + - \c std::wfstream + + \tparam StreamType Class derived from \c std::basic_istream. +*/ + +template <typename StreamType> +class BasicIStreamWrapper { +public: + typedef typename StreamType::char_type Ch; + + //! Constructor. + /*! + \param stream stream opened for read. + */ + BasicIStreamWrapper(StreamType &stream) : stream_(stream), buffer_(peekBuffer_), bufferSize_(4), bufferLast_(0), current_(buffer_), readCount_(0), count_(0), eof_(false) { + Read(); + } + + //! Constructor. + /*! + \param stream stream opened for read. + \param buffer user-supplied buffer. + \param bufferSize size of buffer in bytes. Must >=4 bytes. + */ + BasicIStreamWrapper(StreamType &stream, char* buffer, size_t bufferSize) : stream_(stream), buffer_(buffer), bufferSize_(bufferSize), bufferLast_(0), current_(buffer_), readCount_(0), count_(0), eof_(false) { + RAPIDJSON_ASSERT(bufferSize >= 4); + Read(); + } + + Ch Peek() const { return *current_; } + Ch Take() { Ch c = *current_; Read(); return c; } + size_t Tell() const { return count_ + static_cast<size_t>(current_ - buffer_); } + + // Not implemented + void Put(Ch) { RAPIDJSON_ASSERT(false); } + void Flush() { RAPIDJSON_ASSERT(false); } + Ch* PutBegin() { RAPIDJSON_ASSERT(false); return 0; } + size_t PutEnd(Ch*) { RAPIDJSON_ASSERT(false); return 0; } + + // For encoding detection only. + const Ch* Peek4() const { + return (current_ + 4 - !eof_ <= bufferLast_) ? current_ : 0; + } + +private: + BasicIStreamWrapper(); + BasicIStreamWrapper(const BasicIStreamWrapper&); + BasicIStreamWrapper& operator=(const BasicIStreamWrapper&); + + void Read() { + if (current_ < bufferLast_) + ++current_; + else if (!eof_) { + count_ += readCount_; + readCount_ = bufferSize_; + bufferLast_ = buffer_ + readCount_ - 1; + current_ = buffer_; + + if (!stream_.read(buffer_, static_cast<std::streamsize>(bufferSize_))) { + readCount_ = static_cast<size_t>(stream_.gcount()); + *(bufferLast_ = buffer_ + readCount_) = '\0'; + eof_ = true; + } + } + } + + StreamType &stream_; + Ch peekBuffer_[4], *buffer_; + size_t bufferSize_; + Ch *bufferLast_; + Ch *current_; + size_t readCount_; + size_t count_; //!< Number of characters read + bool eof_; +}; + +typedef BasicIStreamWrapper<std::istream> IStreamWrapper; +typedef BasicIStreamWrapper<std::wistream> WIStreamWrapper; + +#if defined(__clang__) || defined(_MSC_VER) +RAPIDJSON_DIAG_POP +#endif + +RAPIDJSON_NAMESPACE_END + +#endif // RAPIDJSON_ISTREAMWRAPPER_H_ + +// End file:istreamwrapper.h + + +// Begin file: memorybuffer.h +// Tencent is pleased to support the open source community by making RapidJSON available. +// +// Copyright (C) 2015 THL A29 Limited, a Tencent company, and Milo Yip. All rights reserved. +// +// Licensed under the MIT License (the "License"); you may not use this file except +// in compliance with the License. You may obtain a copy of the License at +// +// http://opensource.org/licenses/MIT +// +// Unless required by applicable law or agreed to in writing, software distributed +// under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR +// CONDITIONS OF ANY KIND, either express or implied. See the License for the +// specific language governing permissions and limitations under the License. + +#ifndef RAPIDJSON_MEMORYBUFFER_H_ +#define RAPIDJSON_MEMORYBUFFER_H_ + + +// Begin file: stream.h +// already included +// End file:stream.h + + +// Begin file: internal/stack.h +// already included +// End file:internal/stack.h + + +RAPIDJSON_NAMESPACE_BEGIN + +//! Represents an in-memory output byte stream. +/*! + This class is mainly for being wrapped by EncodedOutputStream or AutoUTFOutputStream. + + It is similar to FileWriteBuffer but the destination is an in-memory buffer instead of a file. + + Differences between MemoryBuffer and StringBuffer: + 1. StringBuffer has Encoding but MemoryBuffer is only a byte buffer. + 2. StringBuffer::GetString() returns a null-terminated string. MemoryBuffer::GetBuffer() returns a buffer without terminator. + + \tparam Allocator type for allocating memory buffer. + \note implements Stream concept +*/ +template <typename Allocator = CrtAllocator> +struct GenericMemoryBuffer { + typedef char Ch; // byte + + GenericMemoryBuffer(Allocator* allocator = 0, size_t capacity = kDefaultCapacity) : stack_(allocator, capacity) {} + + void Put(Ch c) { *stack_.template Push<Ch>() = c; } + void Flush() {} + + void Clear() { stack_.Clear(); } + void ShrinkToFit() { stack_.ShrinkToFit(); } + Ch* Push(size_t count) { return stack_.template Push<Ch>(count); } + void Pop(size_t count) { stack_.template Pop<Ch>(count); } + + const Ch* GetBuffer() const { + return stack_.template Bottom<Ch>(); + } + + size_t GetSize() const { return stack_.GetSize(); } + + static const size_t kDefaultCapacity = 256; + mutable internal::Stack<Allocator> stack_; +}; + +typedef GenericMemoryBuffer<> MemoryBuffer; + +//! Implement specialized version of PutN() with memset() for better performance. +template<> +inline void PutN(MemoryBuffer& memoryBuffer, char c, size_t n) { + std::memset(memoryBuffer.stack_.Push<char>(n), c, n * sizeof(c)); +} + +RAPIDJSON_NAMESPACE_END + +#endif // RAPIDJSON_MEMORYBUFFER_H_ + +// End file:memorybuffer.h + + +// Begin file: memorystream.h +// already included +// End file:memorystream.h + + +// Begin file: ostreamwrapper.h +// Tencent is pleased to support the open source community by making RapidJSON available. +// +// Copyright (C) 2015 THL A29 Limited, a Tencent company, and Milo Yip. All rights reserved. +// +// Licensed under the MIT License (the "License"); you may not use this file except +// in compliance with the License. You may obtain a copy of the License at +// +// http://opensource.org/licenses/MIT +// +// Unless required by applicable law or agreed to in writing, software distributed +// under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR +// CONDITIONS OF ANY KIND, either express or implied. See the License for the +// specific language governing permissions and limitations under the License. + +#ifndef RAPIDJSON_OSTREAMWRAPPER_H_ +#define RAPIDJSON_OSTREAMWRAPPER_H_ + + +// Begin file: stream.h +// already included +// End file:stream.h + +#include <iosfwd> + +#ifdef __clang__ +RAPIDJSON_DIAG_PUSH +RAPIDJSON_DIAG_OFF(padded) +#endif + +RAPIDJSON_NAMESPACE_BEGIN + +//! Wrapper of \c std::basic_ostream into RapidJSON's Stream concept. +/*! + The classes can be wrapped including but not limited to: + + - \c std::ostringstream + - \c std::stringstream + - \c std::wpstringstream + - \c std::wstringstream + - \c std::ifstream + - \c std::fstream + - \c std::wofstream + - \c std::wfstream + + \tparam StreamType Class derived from \c std::basic_ostream. +*/ + +template <typename StreamType> +class BasicOStreamWrapper { +public: + typedef typename StreamType::char_type Ch; + BasicOStreamWrapper(StreamType& stream) : stream_(stream) {} + + void Put(Ch c) { + stream_.put(c); + } + + void Flush() { + stream_.flush(); + } + + // Not implemented + char Peek() const { RAPIDJSON_ASSERT(false); return 0; } + char Take() { RAPIDJSON_ASSERT(false); return 0; } + size_t Tell() const { RAPIDJSON_ASSERT(false); return 0; } + char* PutBegin() { RAPIDJSON_ASSERT(false); return 0; } + size_t PutEnd(char*) { RAPIDJSON_ASSERT(false); return 0; } + +private: + BasicOStreamWrapper(const BasicOStreamWrapper&); + BasicOStreamWrapper& operator=(const BasicOStreamWrapper&); + + StreamType& stream_; +}; + +typedef BasicOStreamWrapper<std::ostream> OStreamWrapper; +typedef BasicOStreamWrapper<std::wostream> WOStreamWrapper; + +#ifdef __clang__ +RAPIDJSON_DIAG_POP +#endif + +RAPIDJSON_NAMESPACE_END + +#endif // RAPIDJSON_OSTREAMWRAPPER_H_ + +// End file:ostreamwrapper.h + + +// Begin file: pointer.h +// Tencent is pleased to support the open source community by making RapidJSON available. +// +// Copyright (C) 2015 THL A29 Limited, a Tencent company, and Milo Yip. All rights reserved. +// +// Licensed under the MIT License (the "License"); you may not use this file except +// in compliance with the License. You may obtain a copy of the License at +// +// http://opensource.org/licenses/MIT +// +// Unless required by applicable law or agreed to in writing, software distributed +// under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR +// CONDITIONS OF ANY KIND, either express or implied. See the License for the +// specific language governing permissions and limitations under the License. + +#ifndef RAPIDJSON_POINTER_H_ +#define RAPIDJSON_POINTER_H_ + + +// Begin file: document.h +// already included +// End file:document.h + + +// Begin file: internal/itoa.h +// Tencent is pleased to support the open source community by making RapidJSON available. +// +// Copyright (C) 2015 THL A29 Limited, a Tencent company, and Milo Yip. All rights reserved. +// +// Licensed under the MIT License (the "License"); you may not use this file except +// in compliance with the License. You may obtain a copy of the License at +// +// http://opensource.org/licenses/MIT +// +// Unless required by applicable law or agreed to in writing, software distributed +// under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR +// CONDITIONS OF ANY KIND, either express or implied. See the License for the +// specific language governing permissions and limitations under the License. + +#ifndef RAPIDJSON_ITOA_ +#define RAPIDJSON_ITOA_ + + +// Begin file: ../rapidjson.h +// already included +// End file:../rapidjson.h + + +RAPIDJSON_NAMESPACE_BEGIN +namespace internal { + +inline const char* GetDigitsLut() { + static const char cDigitsLut[200] = { + '0','0','0','1','0','2','0','3','0','4','0','5','0','6','0','7','0','8','0','9', + '1','0','1','1','1','2','1','3','1','4','1','5','1','6','1','7','1','8','1','9', + '2','0','2','1','2','2','2','3','2','4','2','5','2','6','2','7','2','8','2','9', + '3','0','3','1','3','2','3','3','3','4','3','5','3','6','3','7','3','8','3','9', + '4','0','4','1','4','2','4','3','4','4','4','5','4','6','4','7','4','8','4','9', + '5','0','5','1','5','2','5','3','5','4','5','5','5','6','5','7','5','8','5','9', + '6','0','6','1','6','2','6','3','6','4','6','5','6','6','6','7','6','8','6','9', + '7','0','7','1','7','2','7','3','7','4','7','5','7','6','7','7','7','8','7','9', + '8','0','8','1','8','2','8','3','8','4','8','5','8','6','8','7','8','8','8','9', + '9','0','9','1','9','2','9','3','9','4','9','5','9','6','9','7','9','8','9','9' + }; + return cDigitsLut; +} + +inline char* u32toa(uint32_t value, char* buffer) { + RAPIDJSON_ASSERT(buffer != 0); + + const char* cDigitsLut = GetDigitsLut(); + + if (value < 10000) { + const uint32_t d1 = (value / 100) << 1; + const uint32_t d2 = (value % 100) << 1; + + if (value >= 1000) + *buffer++ = cDigitsLut[d1]; + if (value >= 100) + *buffer++ = cDigitsLut[d1 + 1]; + if (value >= 10) + *buffer++ = cDigitsLut[d2]; + *buffer++ = cDigitsLut[d2 + 1]; + } + else if (value < 100000000) { + // value = bbbbcccc + const uint32_t b = value / 10000; + const uint32_t c = value % 10000; + + const uint32_t d1 = (b / 100) << 1; + const uint32_t d2 = (b % 100) << 1; + + const uint32_t d3 = (c / 100) << 1; + const uint32_t d4 = (c % 100) << 1; + + if (value >= 10000000) + *buffer++ = cDigitsLut[d1]; + if (value >= 1000000) + *buffer++ = cDigitsLut[d1 + 1]; + if (value >= 100000) + *buffer++ = cDigitsLut[d2]; + *buffer++ = cDigitsLut[d2 + 1]; + + *buffer++ = cDigitsLut[d3]; + *buffer++ = cDigitsLut[d3 + 1]; + *buffer++ = cDigitsLut[d4]; + *buffer++ = cDigitsLut[d4 + 1]; + } + else { + // value = aabbbbcccc in decimal + + const uint32_t a = value / 100000000; // 1 to 42 + value %= 100000000; + + if (a >= 10) { + const unsigned i = a << 1; + *buffer++ = cDigitsLut[i]; + *buffer++ = cDigitsLut[i + 1]; + } + else + *buffer++ = static_cast<char>('0' + static_cast<char>(a)); + + const uint32_t b = value / 10000; // 0 to 9999 + const uint32_t c = value % 10000; // 0 to 9999 + + const uint32_t d1 = (b / 100) << 1; + const uint32_t d2 = (b % 100) << 1; + + const uint32_t d3 = (c / 100) << 1; + const uint32_t d4 = (c % 100) << 1; + + *buffer++ = cDigitsLut[d1]; + *buffer++ = cDigitsLut[d1 + 1]; + *buffer++ = cDigitsLut[d2]; + *buffer++ = cDigitsLut[d2 + 1]; + *buffer++ = cDigitsLut[d3]; + *buffer++ = cDigitsLut[d3 + 1]; + *buffer++ = cDigitsLut[d4]; + *buffer++ = cDigitsLut[d4 + 1]; + } + return buffer; +} + +inline char* i32toa(int32_t value, char* buffer) { + RAPIDJSON_ASSERT(buffer != 0); + uint32_t u = static_cast<uint32_t>(value); + if (value < 0) { + *buffer++ = '-'; + u = ~u + 1; + } + + return u32toa(u, buffer); +} + +inline char* u64toa(uint64_t value, char* buffer) { + RAPIDJSON_ASSERT(buffer != 0); + const char* cDigitsLut = GetDigitsLut(); + const uint64_t kTen8 = 100000000; + const uint64_t kTen9 = kTen8 * 10; + const uint64_t kTen10 = kTen8 * 100; + const uint64_t kTen11 = kTen8 * 1000; + const uint64_t kTen12 = kTen8 * 10000; + const uint64_t kTen13 = kTen8 * 100000; + const uint64_t kTen14 = kTen8 * 1000000; + const uint64_t kTen15 = kTen8 * 10000000; + const uint64_t kTen16 = kTen8 * kTen8; + + if (value < kTen8) { + uint32_t v = static_cast<uint32_t>(value); + if (v < 10000) { + const uint32_t d1 = (v / 100) << 1; + const uint32_t d2 = (v % 100) << 1; + + if (v >= 1000) + *buffer++ = cDigitsLut[d1]; + if (v >= 100) + *buffer++ = cDigitsLut[d1 + 1]; + if (v >= 10) + *buffer++ = cDigitsLut[d2]; + *buffer++ = cDigitsLut[d2 + 1]; + } + else { + // value = bbbbcccc + const uint32_t b = v / 10000; + const uint32_t c = v % 10000; + + const uint32_t d1 = (b / 100) << 1; + const uint32_t d2 = (b % 100) << 1; + + const uint32_t d3 = (c / 100) << 1; + const uint32_t d4 = (c % 100) << 1; + + if (value >= 10000000) + *buffer++ = cDigitsLut[d1]; + if (value >= 1000000) + *buffer++ = cDigitsLut[d1 + 1]; + if (value >= 100000) + *buffer++ = cDigitsLut[d2]; + *buffer++ = cDigitsLut[d2 + 1]; + + *buffer++ = cDigitsLut[d3]; + *buffer++ = cDigitsLut[d3 + 1]; + *buffer++ = cDigitsLut[d4]; + *buffer++ = cDigitsLut[d4 + 1]; + } + } + else if (value < kTen16) { + const uint32_t v0 = static_cast<uint32_t>(value / kTen8); + const uint32_t v1 = static_cast<uint32_t>(value % kTen8); + + const uint32_t b0 = v0 / 10000; + const uint32_t c0 = v0 % 10000; + + const uint32_t d1 = (b0 / 100) << 1; + const uint32_t d2 = (b0 % 100) << 1; + + const uint32_t d3 = (c0 / 100) << 1; + const uint32_t d4 = (c0 % 100) << 1; + + const uint32_t b1 = v1 / 10000; + const uint32_t c1 = v1 % 10000; + + const uint32_t d5 = (b1 / 100) << 1; + const uint32_t d6 = (b1 % 100) << 1; + + const uint32_t d7 = (c1 / 100) << 1; + const uint32_t d8 = (c1 % 100) << 1; + + if (value >= kTen15) + *buffer++ = cDigitsLut[d1]; + if (value >= kTen14) + *buffer++ = cDigitsLut[d1 + 1]; + if (value >= kTen13) + *buffer++ = cDigitsLut[d2]; + if (value >= kTen12) + *buffer++ = cDigitsLut[d2 + 1]; + if (value >= kTen11) + *buffer++ = cDigitsLut[d3]; + if (value >= kTen10) + *buffer++ = cDigitsLut[d3 + 1]; + if (value >= kTen9) + *buffer++ = cDigitsLut[d4]; + + *buffer++ = cDigitsLut[d4 + 1]; + *buffer++ = cDigitsLut[d5]; + *buffer++ = cDigitsLut[d5 + 1]; + *buffer++ = cDigitsLut[d6]; + *buffer++ = cDigitsLut[d6 + 1]; + *buffer++ = cDigitsLut[d7]; + *buffer++ = cDigitsLut[d7 + 1]; + *buffer++ = cDigitsLut[d8]; + *buffer++ = cDigitsLut[d8 + 1]; + } + else { + const uint32_t a = static_cast<uint32_t>(value / kTen16); // 1 to 1844 + value %= kTen16; + + if (a < 10) + *buffer++ = static_cast<char>('0' + static_cast<char>(a)); + else if (a < 100) { + const uint32_t i = a << 1; + *buffer++ = cDigitsLut[i]; + *buffer++ = cDigitsLut[i + 1]; + } + else if (a < 1000) { + *buffer++ = static_cast<char>('0' + static_cast<char>(a / 100)); + + const uint32_t i = (a % 100) << 1; + *buffer++ = cDigitsLut[i]; + *buffer++ = cDigitsLut[i + 1]; + } + else { + const uint32_t i = (a / 100) << 1; + const uint32_t j = (a % 100) << 1; + *buffer++ = cDigitsLut[i]; + *buffer++ = cDigitsLut[i + 1]; + *buffer++ = cDigitsLut[j]; + *buffer++ = cDigitsLut[j + 1]; + } + + const uint32_t v0 = static_cast<uint32_t>(value / kTen8); + const uint32_t v1 = static_cast<uint32_t>(value % kTen8); + + const uint32_t b0 = v0 / 10000; + const uint32_t c0 = v0 % 10000; + + const uint32_t d1 = (b0 / 100) << 1; + const uint32_t d2 = (b0 % 100) << 1; + + const uint32_t d3 = (c0 / 100) << 1; + const uint32_t d4 = (c0 % 100) << 1; + + const uint32_t b1 = v1 / 10000; + const uint32_t c1 = v1 % 10000; + + const uint32_t d5 = (b1 / 100) << 1; + const uint32_t d6 = (b1 % 100) << 1; + + const uint32_t d7 = (c1 / 100) << 1; + const uint32_t d8 = (c1 % 100) << 1; + + *buffer++ = cDigitsLut[d1]; + *buffer++ = cDigitsLut[d1 + 1]; + *buffer++ = cDigitsLut[d2]; + *buffer++ = cDigitsLut[d2 + 1]; + *buffer++ = cDigitsLut[d3]; + *buffer++ = cDigitsLut[d3 + 1]; + *buffer++ = cDigitsLut[d4]; + *buffer++ = cDigitsLut[d4 + 1]; + *buffer++ = cDigitsLut[d5]; + *buffer++ = cDigitsLut[d5 + 1]; + *buffer++ = cDigitsLut[d6]; + *buffer++ = cDigitsLut[d6 + 1]; + *buffer++ = cDigitsLut[d7]; + *buffer++ = cDigitsLut[d7 + 1]; + *buffer++ = cDigitsLut[d8]; + *buffer++ = cDigitsLut[d8 + 1]; + } + + return buffer; +} + +inline char* i64toa(int64_t value, char* buffer) { + RAPIDJSON_ASSERT(buffer != 0); + uint64_t u = static_cast<uint64_t>(value); + if (value < 0) { + *buffer++ = '-'; + u = ~u + 1; + } + + return u64toa(u, buffer); +} + +} // namespace internal +RAPIDJSON_NAMESPACE_END + +#endif // RAPIDJSON_ITOA_ + +// End file:internal/itoa.h + + +#ifdef __clang__ +RAPIDJSON_DIAG_PUSH +RAPIDJSON_DIAG_OFF(switch-enum) +#elif defined(_MSC_VER) +RAPIDJSON_DIAG_PUSH +RAPIDJSON_DIAG_OFF(4512) // assignment operator could not be generated +#endif + +RAPIDJSON_NAMESPACE_BEGIN + +static const SizeType kPointerInvalidIndex = ~SizeType(0); //!< Represents an invalid index in GenericPointer::Token + +//! Error code of parsing. +/*! \ingroup RAPIDJSON_ERRORS + \see GenericPointer::GenericPointer, GenericPointer::GetParseErrorCode +*/ +enum PointerParseErrorCode { + kPointerParseErrorNone = 0, //!< The parse is successful + + kPointerParseErrorTokenMustBeginWithSolidus, //!< A token must begin with a '/' + kPointerParseErrorInvalidEscape, //!< Invalid escape + kPointerParseErrorInvalidPercentEncoding, //!< Invalid percent encoding in URI fragment + kPointerParseErrorCharacterMustPercentEncode //!< A character must percent encoded in URI fragment +}; + +/////////////////////////////////////////////////////////////////////////////// +// GenericPointer + +//! Represents a JSON Pointer. Use Pointer for UTF8 encoding and default allocator. +/*! + This class implements RFC 6901 "JavaScript Object Notation (JSON) Pointer" + (https://tools.ietf.org/html/rfc6901). + + A JSON pointer is for identifying a specific value in a JSON document + (GenericDocument). It can simplify coding of DOM tree manipulation, because it + can access multiple-level depth of DOM tree with single API call. + + After it parses a string representation (e.g. "/foo/0" or URI fragment + representation (e.g. "#/foo/0") into its internal representation (tokens), + it can be used to resolve a specific value in multiple documents, or sub-tree + of documents. + + Contrary to GenericValue, Pointer can be copy constructed and copy assigned. + Apart from assignment, a Pointer cannot be modified after construction. + + Although Pointer is very convenient, please aware that constructing Pointer + involves parsing and dynamic memory allocation. A special constructor with user- + supplied tokens eliminates these. + + GenericPointer depends on GenericDocument and GenericValue. + + \tparam ValueType The value type of the DOM tree. E.g. GenericValue<UTF8<> > + \tparam Allocator The allocator type for allocating memory for internal representation. + + \note GenericPointer uses same encoding of ValueType. + However, Allocator of GenericPointer is independent of Allocator of Value. +*/ +template <typename ValueType, typename Allocator = CrtAllocator> +class GenericPointer { +public: + typedef typename ValueType::EncodingType EncodingType; //!< Encoding type from Value + typedef typename ValueType::Ch Ch; //!< Character type from Value + + //! A token is the basic units of internal representation. + /*! + A JSON pointer string representation "/foo/123" is parsed to two tokens: + "foo" and 123. 123 will be represented in both numeric form and string form. + They are resolved according to the actual value type (object or array). + + For token that are not numbers, or the numeric value is out of bound + (greater than limits of SizeType), they are only treated as string form + (i.e. the token's index will be equal to kPointerInvalidIndex). + + This struct is public so that user can create a Pointer without parsing and + allocation, using a special constructor. + */ + struct Token { + const Ch* name; //!< Name of the token. It has null character at the end but it can contain null character. + SizeType length; //!< Length of the name. + SizeType index; //!< A valid array index, if it is not equal to kPointerInvalidIndex. + }; + + //!@name Constructors and destructor. + //@{ + + //! Default constructor. + GenericPointer(Allocator* allocator = 0) : allocator_(allocator), ownAllocator_(), nameBuffer_(), tokens_(), tokenCount_(), parseErrorOffset_(), parseErrorCode_(kPointerParseErrorNone) {} + + //! Constructor that parses a string or URI fragment representation. + /*! + \param source A null-terminated, string or URI fragment representation of JSON pointer. + \param allocator User supplied allocator for this pointer. If no allocator is provided, it creates a self-owned one. + */ + explicit GenericPointer(const Ch* source, Allocator* allocator = 0) : allocator_(allocator), ownAllocator_(), nameBuffer_(), tokens_(), tokenCount_(), parseErrorOffset_(), parseErrorCode_(kPointerParseErrorNone) { + Parse(source, internal::StrLen(source)); + } + +#if RAPIDJSON_HAS_STDSTRING + //! Constructor that parses a string or URI fragment representation. + /*! + \param source A string or URI fragment representation of JSON pointer. + \param allocator User supplied allocator for this pointer. If no allocator is provided, it creates a self-owned one. + \note Requires the definition of the preprocessor symbol \ref RAPIDJSON_HAS_STDSTRING. + */ + explicit GenericPointer(const std::basic_string<Ch>& source, Allocator* allocator = 0) : allocator_(allocator), ownAllocator_(), nameBuffer_(), tokens_(), tokenCount_(), parseErrorOffset_(), parseErrorCode_(kPointerParseErrorNone) { + Parse(source.c_str(), source.size()); + } +#endif + + //! Constructor that parses a string or URI fragment representation, with length of the source string. + /*! + \param source A string or URI fragment representation of JSON pointer. + \param length Length of source. + \param allocator User supplied allocator for this pointer. If no allocator is provided, it creates a self-owned one. + \note Slightly faster than the overload without length. + */ + GenericPointer(const Ch* source, size_t length, Allocator* allocator = 0) : allocator_(allocator), ownAllocator_(), nameBuffer_(), tokens_(), tokenCount_(), parseErrorOffset_(), parseErrorCode_(kPointerParseErrorNone) { + Parse(source, length); + } + + //! Constructor with user-supplied tokens. + /*! + This constructor let user supplies const array of tokens. + This prevents the parsing process and eliminates allocation. + This is preferred for memory constrained environments. + + \param tokens An constant array of tokens representing the JSON pointer. + \param tokenCount Number of tokens. + + \b Example + \code + #define NAME(s) { s, sizeof(s) / sizeof(s[0]) - 1, kPointerInvalidIndex } + #define INDEX(i) { #i, sizeof(#i) - 1, i } + + static const Pointer::Token kTokens[] = { NAME("foo"), INDEX(123) }; + static const Pointer p(kTokens, sizeof(kTokens) / sizeof(kTokens[0])); + // Equivalent to static const Pointer p("/foo/123"); + + #undef NAME + #undef INDEX + \endcode + */ + GenericPointer(const Token* tokens, size_t tokenCount) : allocator_(), ownAllocator_(), nameBuffer_(), tokens_(const_cast<Token*>(tokens)), tokenCount_(tokenCount), parseErrorOffset_(), parseErrorCode_(kPointerParseErrorNone) {} + + //! Copy constructor. + GenericPointer(const GenericPointer& rhs) : allocator_(rhs.allocator_), ownAllocator_(), nameBuffer_(), tokens_(), tokenCount_(), parseErrorOffset_(), parseErrorCode_(kPointerParseErrorNone) { + *this = rhs; + } + + //! Copy constructor. + GenericPointer(const GenericPointer& rhs, Allocator* allocator) : allocator_(allocator), ownAllocator_(), nameBuffer_(), tokens_(), tokenCount_(), parseErrorOffset_(), parseErrorCode_(kPointerParseErrorNone) { + *this = rhs; + } + + //! Destructor. + ~GenericPointer() { + if (nameBuffer_) // If user-supplied tokens constructor is used, nameBuffer_ is nullptr and tokens_ are not deallocated. + Allocator::Free(tokens_); + RAPIDJSON_DELETE(ownAllocator_); + } + + //! Assignment operator. + GenericPointer& operator=(const GenericPointer& rhs) { + if (this != &rhs) { + // Do not delete ownAllcator + if (nameBuffer_) + Allocator::Free(tokens_); + + tokenCount_ = rhs.tokenCount_; + parseErrorOffset_ = rhs.parseErrorOffset_; + parseErrorCode_ = rhs.parseErrorCode_; + + if (rhs.nameBuffer_) + CopyFromRaw(rhs); // Normally parsed tokens. + else { + tokens_ = rhs.tokens_; // User supplied const tokens. + nameBuffer_ = 0; + } + } + return *this; + } + + //! Swap the content of this pointer with an other. + /*! + \param other The pointer to swap with. + \note Constant complexity. + */ + GenericPointer& Swap(GenericPointer& other) RAPIDJSON_NOEXCEPT { + internal::Swap(allocator_, other.allocator_); + internal::Swap(ownAllocator_, other.ownAllocator_); + internal::Swap(nameBuffer_, other.nameBuffer_); + internal::Swap(tokens_, other.tokens_); + internal::Swap(tokenCount_, other.tokenCount_); + internal::Swap(parseErrorOffset_, other.parseErrorOffset_); + internal::Swap(parseErrorCode_, other.parseErrorCode_); + return *this; + } + + //! free-standing swap function helper + /*! + Helper function to enable support for common swap implementation pattern based on \c std::swap: + \code + void swap(MyClass& a, MyClass& b) { + using std::swap; + swap(a.pointer, b.pointer); + // ... + } + \endcode + \see Swap() + */ + friend inline void swap(GenericPointer& a, GenericPointer& b) RAPIDJSON_NOEXCEPT { a.Swap(b); } + + //@} + + //!@name Append token + //@{ + + //! Append a token and return a new Pointer + /*! + \param token Token to be appended. + \param allocator Allocator for the newly return Pointer. + \return A new Pointer with appended token. + */ + GenericPointer Append(const Token& token, Allocator* allocator = 0) const { + GenericPointer r; + r.allocator_ = allocator; + Ch *p = r.CopyFromRaw(*this, 1, token.length + 1); + std::memcpy(p, token.name, (token.length + 1) * sizeof(Ch)); + r.tokens_[tokenCount_].name = p; + r.tokens_[tokenCount_].length = token.length; + r.tokens_[tokenCount_].index = token.index; + return r; + } + + //! Append a name token with length, and return a new Pointer + /*! + \param name Name to be appended. + \param length Length of name. + \param allocator Allocator for the newly return Pointer. + \return A new Pointer with appended token. + */ + GenericPointer Append(const Ch* name, SizeType length, Allocator* allocator = 0) const { + Token token = { name, length, kPointerInvalidIndex }; + return Append(token, allocator); + } + + //! Append a name token without length, and return a new Pointer + /*! + \param name Name (const Ch*) to be appended. + \param allocator Allocator for the newly return Pointer. + \return A new Pointer with appended token. + */ + template <typename T> + RAPIDJSON_DISABLEIF_RETURN((internal::NotExpr<internal::IsSame<typename internal::RemoveConst<T>::Type, Ch> >), (GenericPointer)) + Append(T* name, Allocator* allocator = 0) const { + return Append(name, internal::StrLen(name), allocator); + } + +#if RAPIDJSON_HAS_STDSTRING + //! Append a name token, and return a new Pointer + /*! + \param name Name to be appended. + \param allocator Allocator for the newly return Pointer. + \return A new Pointer with appended token. + */ + GenericPointer Append(const std::basic_string<Ch>& name, Allocator* allocator = 0) const { + return Append(name.c_str(), static_cast<SizeType>(name.size()), allocator); + } +#endif + + //! Append a index token, and return a new Pointer + /*! + \param index Index to be appended. + \param allocator Allocator for the newly return Pointer. + \return A new Pointer with appended token. + */ + GenericPointer Append(SizeType index, Allocator* allocator = 0) const { + char buffer[21]; + char* end = sizeof(SizeType) == 4 ? internal::u32toa(index, buffer) : internal::u64toa(index, buffer); + SizeType length = static_cast<SizeType>(end - buffer); + buffer[length] = '\0'; + + if (sizeof(Ch) == 1) { + Token token = { reinterpret_cast<Ch*>(buffer), length, index }; + return Append(token, allocator); + } + else { + Ch name[21]; + for (size_t i = 0; i <= length; i++) + name[i] = static_cast<Ch>(buffer[i]); + Token token = { name, length, index }; + return Append(token, allocator); + } + } + + //! Append a token by value, and return a new Pointer + /*! + \param token token to be appended. + \param allocator Allocator for the newly return Pointer. + \return A new Pointer with appended token. + */ + GenericPointer Append(const ValueType& token, Allocator* allocator = 0) const { + if (token.IsString()) + return Append(token.GetString(), token.GetStringLength(), allocator); + else { + RAPIDJSON_ASSERT(token.IsUint64()); + RAPIDJSON_ASSERT(token.GetUint64() <= SizeType(~0)); + return Append(static_cast<SizeType>(token.GetUint64()), allocator); + } + } + + //!@name Handling Parse Error + //@{ + + //! Check whether this is a valid pointer. + bool IsValid() const { return parseErrorCode_ == kPointerParseErrorNone; } + + //! Get the parsing error offset in code unit. + size_t GetParseErrorOffset() const { return parseErrorOffset_; } + + //! Get the parsing error code. + PointerParseErrorCode GetParseErrorCode() const { return parseErrorCode_; } + + //@} + + //! Get the allocator of this pointer. + Allocator& GetAllocator() { return *allocator_; } + + //!@name Tokens + //@{ + + //! Get the token array (const version only). + const Token* GetTokens() const { return tokens_; } + + //! Get the number of tokens. + size_t GetTokenCount() const { return tokenCount_; } + + //@} + + //!@name Equality/inequality operators + //@{ + + //! Equality operator. + /*! + \note When any pointers are invalid, always returns false. + */ + bool operator==(const GenericPointer& rhs) const { + if (!IsValid() || !rhs.IsValid() || tokenCount_ != rhs.tokenCount_) + return false; + + for (size_t i = 0; i < tokenCount_; i++) { + if (tokens_[i].index != rhs.tokens_[i].index || + tokens_[i].length != rhs.tokens_[i].length || + (tokens_[i].length != 0 && std::memcmp(tokens_[i].name, rhs.tokens_[i].name, sizeof(Ch)* tokens_[i].length) != 0)) + { + return false; + } + } + + return true; + } + + //! Inequality operator. + /*! + \note When any pointers are invalid, always returns true. + */ + bool operator!=(const GenericPointer& rhs) const { return !(*this == rhs); } + + //! Less than operator. + /*! + \note Invalid pointers are always greater than valid ones. + */ + bool operator<(const GenericPointer& rhs) const { + if (!IsValid()) + return false; + if (!rhs.IsValid()) + return true; + + if (tokenCount_ != rhs.tokenCount_) + return tokenCount_ < rhs.tokenCount_; + + for (size_t i = 0; i < tokenCount_; i++) { + if (tokens_[i].index != rhs.tokens_[i].index) + return tokens_[i].index < rhs.tokens_[i].index; + + if (tokens_[i].length != rhs.tokens_[i].length) + return tokens_[i].length < rhs.tokens_[i].length; + + if (int cmp = std::memcmp(tokens_[i].name, rhs.tokens_[i].name, sizeof(Ch) * tokens_[i].length)) + return cmp < 0; + } + + return false; + } + + //@} + + //!@name Stringify + //@{ + + //! Stringify the pointer into string representation. + /*! + \tparam OutputStream Type of output stream. + \param os The output stream. + */ + template<typename OutputStream> + bool Stringify(OutputStream& os) const { + return Stringify<false, OutputStream>(os); + } + + //! Stringify the pointer into URI fragment representation. + /*! + \tparam OutputStream Type of output stream. + \param os The output stream. + */ + template<typename OutputStream> + bool StringifyUriFragment(OutputStream& os) const { + return Stringify<true, OutputStream>(os); + } + + //@} + + //!@name Create value + //@{ + + //! Create a value in a subtree. + /*! + If the value is not exist, it creates all parent values and a JSON Null value. + So it always succeed and return the newly created or existing value. + + Remind that it may change types of parents according to tokens, so it + potentially removes previously stored values. For example, if a document + was an array, and "/foo" is used to create a value, then the document + will be changed to an object, and all existing array elements are lost. + + \param root Root value of a DOM subtree to be resolved. It can be any value other than document root. + \param allocator Allocator for creating the values if the specified value or its parents are not exist. + \param alreadyExist If non-null, it stores whether the resolved value is already exist. + \return The resolved newly created (a JSON Null value), or already exists value. + */ + ValueType& Create(ValueType& root, typename ValueType::AllocatorType& allocator, bool* alreadyExist = 0) const { + RAPIDJSON_ASSERT(IsValid()); + ValueType* v = &root; + bool exist = true; + for (const Token *t = tokens_; t != tokens_ + tokenCount_; ++t) { + if (v->IsArray() && t->name[0] == '-' && t->length == 1) { + v->PushBack(ValueType().Move(), allocator); + v = &((*v)[v->Size() - 1]); + exist = false; + } + else { + if (t->index == kPointerInvalidIndex) { // must be object name + if (!v->IsObject()) + v->SetObject(); // Change to Object + } + else { // object name or array index + if (!v->IsArray() && !v->IsObject()) + v->SetArray(); // Change to Array + } + + if (v->IsArray()) { + if (t->index >= v->Size()) { + v->Reserve(t->index + 1, allocator); + while (t->index >= v->Size()) + v->PushBack(ValueType().Move(), allocator); + exist = false; + } + v = &((*v)[t->index]); + } + else { + typename ValueType::MemberIterator m = v->FindMember(GenericStringRef<Ch>(t->name, t->length)); + if (m == v->MemberEnd()) { + v->AddMember(ValueType(t->name, t->length, allocator).Move(), ValueType().Move(), allocator); + v = &(--v->MemberEnd())->value; // Assumes AddMember() appends at the end + exist = false; + } + else + v = &m->value; + } + } + } + + if (alreadyExist) + *alreadyExist = exist; + + return *v; + } + + //! Creates a value in a document. + /*! + \param document A document to be resolved. + \param alreadyExist If non-null, it stores whether the resolved value is already exist. + \return The resolved newly created, or already exists value. + */ + template <typename stackAllocator> + ValueType& Create(GenericDocument<EncodingType, typename ValueType::AllocatorType, stackAllocator>& document, bool* alreadyExist = 0) const { + return Create(document, document.GetAllocator(), alreadyExist); + } + + //@} + + //!@name Query value + //@{ + + //! Query a value in a subtree. + /*! + \param root Root value of a DOM sub-tree to be resolved. It can be any value other than document root. + \param unresolvedTokenIndex If the pointer cannot resolve a token in the pointer, this parameter can obtain the index of unresolved token. + \return Pointer to the value if it can be resolved. Otherwise null. + + \note + There are only 3 situations when a value cannot be resolved: + 1. A value in the path is not an array nor object. + 2. An object value does not contain the token. + 3. A token is out of range of an array value. + + Use unresolvedTokenIndex to retrieve the token index. + */ + ValueType* Get(ValueType& root, size_t* unresolvedTokenIndex = 0) const { + RAPIDJSON_ASSERT(IsValid()); + ValueType* v = &root; + for (const Token *t = tokens_; t != tokens_ + tokenCount_; ++t) { + switch (v->GetType()) { + case kObjectType: + { + typename ValueType::MemberIterator m = v->FindMember(GenericStringRef<Ch>(t->name, t->length)); + if (m == v->MemberEnd()) + break; + v = &m->value; + } + continue; + case kArrayType: + if (t->index == kPointerInvalidIndex || t->index >= v->Size()) + break; + v = &((*v)[t->index]); + continue; + default: + break; + } + + // Error: unresolved token + if (unresolvedTokenIndex) + *unresolvedTokenIndex = static_cast<size_t>(t - tokens_); + return 0; + } + return v; + } + + //! Query a const value in a const subtree. + /*! + \param root Root value of a DOM sub-tree to be resolved. It can be any value other than document root. + \return Pointer to the value if it can be resolved. Otherwise null. + */ + const ValueType* Get(const ValueType& root, size_t* unresolvedTokenIndex = 0) const { + return Get(const_cast<ValueType&>(root), unresolvedTokenIndex); + } + + //@} + + //!@name Query a value with default + //@{ + + //! Query a value in a subtree with default value. + /*! + Similar to Get(), but if the specified value do not exists, it creates all parents and clone the default value. + So that this function always succeed. + + \param root Root value of a DOM sub-tree to be resolved. It can be any value other than document root. + \param defaultValue Default value to be cloned if the value was not exists. + \param allocator Allocator for creating the values if the specified value or its parents are not exist. + \see Create() + */ + ValueType& GetWithDefault(ValueType& root, const ValueType& defaultValue, typename ValueType::AllocatorType& allocator) const { + bool alreadyExist; + ValueType& v = Create(root, allocator, &alreadyExist); + return alreadyExist ? v : v.CopyFrom(defaultValue, allocator); + } + + //! Query a value in a subtree with default null-terminated string. + ValueType& GetWithDefault(ValueType& root, const Ch* defaultValue, typename ValueType::AllocatorType& allocator) const { + bool alreadyExist; + ValueType& v = Create(root, allocator, &alreadyExist); + return alreadyExist ? v : v.SetString(defaultValue, allocator); + } + +#if RAPIDJSON_HAS_STDSTRING + //! Query a value in a subtree with default std::basic_string. + ValueType& GetWithDefault(ValueType& root, const std::basic_string<Ch>& defaultValue, typename ValueType::AllocatorType& allocator) const { + bool alreadyExist; + ValueType& v = Create(root, allocator, &alreadyExist); + return alreadyExist ? v : v.SetString(defaultValue, allocator); + } +#endif + + //! Query a value in a subtree with default primitive value. + /*! + \tparam T Either \ref Type, \c int, \c unsigned, \c int64_t, \c uint64_t, \c bool + */ + template <typename T> + RAPIDJSON_DISABLEIF_RETURN((internal::OrExpr<internal::IsPointer<T>, internal::IsGenericValue<T> >), (ValueType&)) + GetWithDefault(ValueType& root, T defaultValue, typename ValueType::AllocatorType& allocator) const { + return GetWithDefault(root, ValueType(defaultValue).Move(), allocator); + } + + //! Query a value in a document with default value. + template <typename stackAllocator> + ValueType& GetWithDefault(GenericDocument<EncodingType, typename ValueType::AllocatorType, stackAllocator>& document, const ValueType& defaultValue) const { + return GetWithDefault(document, defaultValue, document.GetAllocator()); + } + + //! Query a value in a document with default null-terminated string. + template <typename stackAllocator> + ValueType& GetWithDefault(GenericDocument<EncodingType, typename ValueType::AllocatorType, stackAllocator>& document, const Ch* defaultValue) const { + return GetWithDefault(document, defaultValue, document.GetAllocator()); + } + +#if RAPIDJSON_HAS_STDSTRING + //! Query a value in a document with default std::basic_string. + template <typename stackAllocator> + ValueType& GetWithDefault(GenericDocument<EncodingType, typename ValueType::AllocatorType, stackAllocator>& document, const std::basic_string<Ch>& defaultValue) const { + return GetWithDefault(document, defaultValue, document.GetAllocator()); + } +#endif + + //! Query a value in a document with default primitive value. + /*! + \tparam T Either \ref Type, \c int, \c unsigned, \c int64_t, \c uint64_t, \c bool + */ + template <typename T, typename stackAllocator> + RAPIDJSON_DISABLEIF_RETURN((internal::OrExpr<internal::IsPointer<T>, internal::IsGenericValue<T> >), (ValueType&)) + GetWithDefault(GenericDocument<EncodingType, typename ValueType::AllocatorType, stackAllocator>& document, T defaultValue) const { + return GetWithDefault(document, defaultValue, document.GetAllocator()); + } + + //@} + + //!@name Set a value + //@{ + + //! Set a value in a subtree, with move semantics. + /*! + It creates all parents if they are not exist or types are different to the tokens. + So this function always succeeds but potentially remove existing values. + + \param root Root value of a DOM sub-tree to be resolved. It can be any value other than document root. + \param value Value to be set. + \param allocator Allocator for creating the values if the specified value or its parents are not exist. + \see Create() + */ + ValueType& Set(ValueType& root, ValueType& value, typename ValueType::AllocatorType& allocator) const { + return Create(root, allocator) = value; + } + + //! Set a value in a subtree, with copy semantics. + ValueType& Set(ValueType& root, const ValueType& value, typename ValueType::AllocatorType& allocator) const { + return Create(root, allocator).CopyFrom(value, allocator); + } + + //! Set a null-terminated string in a subtree. + ValueType& Set(ValueType& root, const Ch* value, typename ValueType::AllocatorType& allocator) const { + return Create(root, allocator) = ValueType(value, allocator).Move(); + } + +#if RAPIDJSON_HAS_STDSTRING + //! Set a std::basic_string in a subtree. + ValueType& Set(ValueType& root, const std::basic_string<Ch>& value, typename ValueType::AllocatorType& allocator) const { + return Create(root, allocator) = ValueType(value, allocator).Move(); + } +#endif + + //! Set a primitive value in a subtree. + /*! + \tparam T Either \ref Type, \c int, \c unsigned, \c int64_t, \c uint64_t, \c bool + */ + template <typename T> + RAPIDJSON_DISABLEIF_RETURN((internal::OrExpr<internal::IsPointer<T>, internal::IsGenericValue<T> >), (ValueType&)) + Set(ValueType& root, T value, typename ValueType::AllocatorType& allocator) const { + return Create(root, allocator) = ValueType(value).Move(); + } + + //! Set a value in a document, with move semantics. + template <typename stackAllocator> + ValueType& Set(GenericDocument<EncodingType, typename ValueType::AllocatorType, stackAllocator>& document, ValueType& value) const { + return Create(document) = value; + } + + //! Set a value in a document, with copy semantics. + template <typename stackAllocator> + ValueType& Set(GenericDocument<EncodingType, typename ValueType::AllocatorType, stackAllocator>& document, const ValueType& value) const { + return Create(document).CopyFrom(value, document.GetAllocator()); + } + + //! Set a null-terminated string in a document. + template <typename stackAllocator> + ValueType& Set(GenericDocument<EncodingType, typename ValueType::AllocatorType, stackAllocator>& document, const Ch* value) const { + return Create(document) = ValueType(value, document.GetAllocator()).Move(); + } + +#if RAPIDJSON_HAS_STDSTRING + //! Sets a std::basic_string in a document. + template <typename stackAllocator> + ValueType& Set(GenericDocument<EncodingType, typename ValueType::AllocatorType, stackAllocator>& document, const std::basic_string<Ch>& value) const { + return Create(document) = ValueType(value, document.GetAllocator()).Move(); + } +#endif + + //! Set a primitive value in a document. + /*! + \tparam T Either \ref Type, \c int, \c unsigned, \c int64_t, \c uint64_t, \c bool + */ + template <typename T, typename stackAllocator> + RAPIDJSON_DISABLEIF_RETURN((internal::OrExpr<internal::IsPointer<T>, internal::IsGenericValue<T> >), (ValueType&)) + Set(GenericDocument<EncodingType, typename ValueType::AllocatorType, stackAllocator>& document, T value) const { + return Create(document) = value; + } + + //@} + + //!@name Swap a value + //@{ + + //! Swap a value with a value in a subtree. + /*! + It creates all parents if they are not exist or types are different to the tokens. + So this function always succeeds but potentially remove existing values. + + \param root Root value of a DOM sub-tree to be resolved. It can be any value other than document root. + \param value Value to be swapped. + \param allocator Allocator for creating the values if the specified value or its parents are not exist. + \see Create() + */ + ValueType& Swap(ValueType& root, ValueType& value, typename ValueType::AllocatorType& allocator) const { + return Create(root, allocator).Swap(value); + } + + //! Swap a value with a value in a document. + template <typename stackAllocator> + ValueType& Swap(GenericDocument<EncodingType, typename ValueType::AllocatorType, stackAllocator>& document, ValueType& value) const { + return Create(document).Swap(value); + } + + //@} + + //! Erase a value in a subtree. + /*! + \param root Root value of a DOM sub-tree to be resolved. It can be any value other than document root. + \return Whether the resolved value is found and erased. + + \note Erasing with an empty pointer \c Pointer(""), i.e. the root, always fail and return false. + */ + bool Erase(ValueType& root) const { + RAPIDJSON_ASSERT(IsValid()); + if (tokenCount_ == 0) // Cannot erase the root + return false; + + ValueType* v = &root; + const Token* last = tokens_ + (tokenCount_ - 1); + for (const Token *t = tokens_; t != last; ++t) { + switch (v->GetType()) { + case kObjectType: + { + typename ValueType::MemberIterator m = v->FindMember(GenericStringRef<Ch>(t->name, t->length)); + if (m == v->MemberEnd()) + return false; + v = &m->value; + } + break; + case kArrayType: + if (t->index == kPointerInvalidIndex || t->index >= v->Size()) + return false; + v = &((*v)[t->index]); + break; + default: + return false; + } + } + + switch (v->GetType()) { + case kObjectType: + return v->EraseMember(GenericStringRef<Ch>(last->name, last->length)); + case kArrayType: + if (last->index == kPointerInvalidIndex || last->index >= v->Size()) + return false; + v->Erase(v->Begin() + last->index); + return true; + default: + return false; + } + } + +private: + //! Clone the content from rhs to this. + /*! + \param rhs Source pointer. + \param extraToken Extra tokens to be allocated. + \param extraNameBufferSize Extra name buffer size (in number of Ch) to be allocated. + \return Start of non-occupied name buffer, for storing extra names. + */ + Ch* CopyFromRaw(const GenericPointer& rhs, size_t extraToken = 0, size_t extraNameBufferSize = 0) { + if (!allocator_) // allocator is independently owned. + ownAllocator_ = allocator_ = RAPIDJSON_NEW(Allocator)(); + + size_t nameBufferSize = rhs.tokenCount_; // null terminators for tokens + for (Token *t = rhs.tokens_; t != rhs.tokens_ + rhs.tokenCount_; ++t) + nameBufferSize += t->length; + + tokenCount_ = rhs.tokenCount_ + extraToken; + tokens_ = static_cast<Token *>(allocator_->Malloc(tokenCount_ * sizeof(Token) + (nameBufferSize + extraNameBufferSize) * sizeof(Ch))); + nameBuffer_ = reinterpret_cast<Ch *>(tokens_ + tokenCount_); + if (rhs.tokenCount_ > 0) { + std::memcpy(tokens_, rhs.tokens_, rhs.tokenCount_ * sizeof(Token)); + } + if (nameBufferSize > 0) { + std::memcpy(nameBuffer_, rhs.nameBuffer_, nameBufferSize * sizeof(Ch)); + } + + // Adjust pointers to name buffer + std::ptrdiff_t diff = nameBuffer_ - rhs.nameBuffer_; + for (Token *t = tokens_; t != tokens_ + rhs.tokenCount_; ++t) + t->name += diff; + + return nameBuffer_ + nameBufferSize; + } + + //! Check whether a character should be percent-encoded. + /*! + According to RFC 3986 2.3 Unreserved Characters. + \param c The character (code unit) to be tested. + */ + bool NeedPercentEncode(Ch c) const { + return !((c >= '0' && c <= '9') || (c >= 'A' && c <='Z') || (c >= 'a' && c <= 'z') || c == '-' || c == '.' || c == '_' || c =='~'); + } + + //! Parse a JSON String or its URI fragment representation into tokens. +#ifndef __clang__ // -Wdocumentation + /*! + \param source Either a JSON Pointer string, or its URI fragment representation. Not need to be null terminated. + \param length Length of the source string. + \note Source cannot be JSON String Representation of JSON Pointer, e.g. In "/\u0000", \u0000 will not be unescaped. + */ +#endif + void Parse(const Ch* source, size_t length) { + RAPIDJSON_ASSERT(source != NULL); + RAPIDJSON_ASSERT(nameBuffer_ == 0); + RAPIDJSON_ASSERT(tokens_ == 0); + + // Create own allocator if user did not supply. + if (!allocator_) + ownAllocator_ = allocator_ = RAPIDJSON_NEW(Allocator)(); + + // Count number of '/' as tokenCount + tokenCount_ = 0; + for (const Ch* s = source; s != source + length; s++) + if (*s == '/') + tokenCount_++; + + Token* token = tokens_ = static_cast<Token *>(allocator_->Malloc(tokenCount_ * sizeof(Token) + length * sizeof(Ch))); + Ch* name = nameBuffer_ = reinterpret_cast<Ch *>(tokens_ + tokenCount_); + size_t i = 0; + + // Detect if it is a URI fragment + bool uriFragment = false; + if (source[i] == '#') { + uriFragment = true; + i++; + } + + if (i != length && source[i] != '/') { + parseErrorCode_ = kPointerParseErrorTokenMustBeginWithSolidus; + goto error; + } + + while (i < length) { + RAPIDJSON_ASSERT(source[i] == '/'); + i++; // consumes '/' + + token->name = name; + bool isNumber = true; + + while (i < length && source[i] != '/') { + Ch c = source[i]; + if (uriFragment) { + // Decoding percent-encoding for URI fragment + if (c == '%') { + PercentDecodeStream is(&source[i], source + length); + GenericInsituStringStream<EncodingType> os(name); + Ch* begin = os.PutBegin(); + if (!Transcoder<UTF8<>, EncodingType>().Validate(is, os) || !is.IsValid()) { + parseErrorCode_ = kPointerParseErrorInvalidPercentEncoding; + goto error; + } + size_t len = os.PutEnd(begin); + i += is.Tell() - 1; + if (len == 1) + c = *name; + else { + name += len; + isNumber = false; + i++; + continue; + } + } + else if (NeedPercentEncode(c)) { + parseErrorCode_ = kPointerParseErrorCharacterMustPercentEncode; + goto error; + } + } + + i++; + + // Escaping "~0" -> '~', "~1" -> '/' + if (c == '~') { + if (i < length) { + c = source[i]; + if (c == '0') c = '~'; + else if (c == '1') c = '/'; + else { + parseErrorCode_ = kPointerParseErrorInvalidEscape; + goto error; + } + i++; + } + else { + parseErrorCode_ = kPointerParseErrorInvalidEscape; + goto error; + } + } + + // First check for index: all of characters are digit + if (c < '0' || c > '9') + isNumber = false; + + *name++ = c; + } + token->length = static_cast<SizeType>(name - token->name); + if (token->length == 0) + isNumber = false; + *name++ = '\0'; // Null terminator + + // Second check for index: more than one digit cannot have leading zero + if (isNumber && token->length > 1 && token->name[0] == '0') + isNumber = false; + + // String to SizeType conversion + SizeType n = 0; + if (isNumber) { + for (size_t j = 0; j < token->length; j++) { + SizeType m = n * 10 + static_cast<SizeType>(token->name[j] - '0'); + if (m < n) { // overflow detection + isNumber = false; + break; + } + n = m; + } + } + + token->index = isNumber ? n : kPointerInvalidIndex; + token++; + } + + RAPIDJSON_ASSERT(name <= nameBuffer_ + length); // Should not overflow buffer + parseErrorCode_ = kPointerParseErrorNone; + return; + + error: + Allocator::Free(tokens_); + nameBuffer_ = 0; + tokens_ = 0; + tokenCount_ = 0; + parseErrorOffset_ = i; + return; + } + + //! Stringify to string or URI fragment representation. + /*! + \tparam uriFragment True for stringifying to URI fragment representation. False for string representation. + \tparam OutputStream type of output stream. + \param os The output stream. + */ + template<bool uriFragment, typename OutputStream> + bool Stringify(OutputStream& os) const { + RAPIDJSON_ASSERT(IsValid()); + + if (uriFragment) + os.Put('#'); + + for (Token *t = tokens_; t != tokens_ + tokenCount_; ++t) { + os.Put('/'); + for (size_t j = 0; j < t->length; j++) { + Ch c = t->name[j]; + if (c == '~') { + os.Put('~'); + os.Put('0'); + } + else if (c == '/') { + os.Put('~'); + os.Put('1'); + } + else if (uriFragment && NeedPercentEncode(c)) { + // Transcode to UTF8 sequence + GenericStringStream<typename ValueType::EncodingType> source(&t->name[j]); + PercentEncodeStream<OutputStream> target(os); + if (!Transcoder<EncodingType, UTF8<> >().Validate(source, target)) + return false; + j += source.Tell() - 1; + } + else + os.Put(c); + } + } + return true; + } + + //! A helper stream for decoding a percent-encoded sequence into code unit. + /*! + This stream decodes %XY triplet into code unit (0-255). + If it encounters invalid characters, it sets output code unit as 0 and + mark invalid, and to be checked by IsValid(). + */ + class PercentDecodeStream { + public: + typedef typename ValueType::Ch Ch; + + //! Constructor + /*! + \param source Start of the stream + \param end Past-the-end of the stream. + */ + PercentDecodeStream(const Ch* source, const Ch* end) : src_(source), head_(source), end_(end), valid_(true) {} + + Ch Take() { + if (*src_ != '%' || src_ + 3 > end_) { // %XY triplet + valid_ = false; + return 0; + } + src_++; + Ch c = 0; + for (int j = 0; j < 2; j++) { + c = static_cast<Ch>(c << 4); + Ch h = *src_; + if (h >= '0' && h <= '9') c = static_cast<Ch>(c + h - '0'); + else if (h >= 'A' && h <= 'F') c = static_cast<Ch>(c + h - 'A' + 10); + else if (h >= 'a' && h <= 'f') c = static_cast<Ch>(c + h - 'a' + 10); + else { + valid_ = false; + return 0; + } + src_++; + } + return c; + } + + size_t Tell() const { return static_cast<size_t>(src_ - head_); } + bool IsValid() const { return valid_; } + + private: + const Ch* src_; //!< Current read position. + const Ch* head_; //!< Original head of the string. + const Ch* end_; //!< Past-the-end position. + bool valid_; //!< Whether the parsing is valid. + }; + + //! A helper stream to encode character (UTF-8 code unit) into percent-encoded sequence. + template <typename OutputStream> + class PercentEncodeStream { + public: + PercentEncodeStream(OutputStream& os) : os_(os) {} + void Put(char c) { // UTF-8 must be byte + unsigned char u = static_cast<unsigned char>(c); + static const char hexDigits[16] = { '0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'A', 'B', 'C', 'D', 'E', 'F' }; + os_.Put('%'); + os_.Put(static_cast<typename OutputStream::Ch>(hexDigits[u >> 4])); + os_.Put(static_cast<typename OutputStream::Ch>(hexDigits[u & 15])); + } + private: + OutputStream& os_; + }; + + Allocator* allocator_; //!< The current allocator. It is either user-supplied or equal to ownAllocator_. + Allocator* ownAllocator_; //!< Allocator owned by this Pointer. + Ch* nameBuffer_; //!< A buffer containing all names in tokens. + Token* tokens_; //!< A list of tokens. + size_t tokenCount_; //!< Number of tokens in tokens_. + size_t parseErrorOffset_; //!< Offset in code unit when parsing fail. + PointerParseErrorCode parseErrorCode_; //!< Parsing error code. +}; + +//! GenericPointer for Value (UTF-8, default allocator). +typedef GenericPointer<Value> Pointer; + +//!@name Helper functions for GenericPointer +//@{ + +////////////////////////////////////////////////////////////////////////////// + +template <typename T> +typename T::ValueType& CreateValueByPointer(T& root, const GenericPointer<typename T::ValueType>& pointer, typename T::AllocatorType& a) { + return pointer.Create(root, a); +} + +template <typename T, typename CharType, size_t N> +typename T::ValueType& CreateValueByPointer(T& root, const CharType(&source)[N], typename T::AllocatorType& a) { + return GenericPointer<typename T::ValueType>(source, N - 1).Create(root, a); +} + +// No allocator parameter + +template <typename DocumentType> +typename DocumentType::ValueType& CreateValueByPointer(DocumentType& document, const GenericPointer<typename DocumentType::ValueType>& pointer) { + return pointer.Create(document); +} + +template <typename DocumentType, typename CharType, size_t N> +typename DocumentType::ValueType& CreateValueByPointer(DocumentType& document, const CharType(&source)[N]) { + return GenericPointer<typename DocumentType::ValueType>(source, N - 1).Create(document); +} + +////////////////////////////////////////////////////////////////////////////// + +template <typename T> +typename T::ValueType* GetValueByPointer(T& root, const GenericPointer<typename T::ValueType>& pointer, size_t* unresolvedTokenIndex = 0) { + return pointer.Get(root, unresolvedTokenIndex); +} + +template <typename T> +const typename T::ValueType* GetValueByPointer(const T& root, const GenericPointer<typename T::ValueType>& pointer, size_t* unresolvedTokenIndex = 0) { + return pointer.Get(root, unresolvedTokenIndex); +} + +template <typename T, typename CharType, size_t N> +typename T::ValueType* GetValueByPointer(T& root, const CharType (&source)[N], size_t* unresolvedTokenIndex = 0) { + return GenericPointer<typename T::ValueType>(source, N - 1).Get(root, unresolvedTokenIndex); +} + +template <typename T, typename CharType, size_t N> +const typename T::ValueType* GetValueByPointer(const T& root, const CharType(&source)[N], size_t* unresolvedTokenIndex = 0) { + return GenericPointer<typename T::ValueType>(source, N - 1).Get(root, unresolvedTokenIndex); +} + +////////////////////////////////////////////////////////////////////////////// + +template <typename T> +typename T::ValueType& GetValueByPointerWithDefault(T& root, const GenericPointer<typename T::ValueType>& pointer, const typename T::ValueType& defaultValue, typename T::AllocatorType& a) { + return pointer.GetWithDefault(root, defaultValue, a); +} + +template <typename T> +typename T::ValueType& GetValueByPointerWithDefault(T& root, const GenericPointer<typename T::ValueType>& pointer, const typename T::Ch* defaultValue, typename T::AllocatorType& a) { + return pointer.GetWithDefault(root, defaultValue, a); +} + +#if RAPIDJSON_HAS_STDSTRING +template <typename T> +typename T::ValueType& GetValueByPointerWithDefault(T& root, const GenericPointer<typename T::ValueType>& pointer, const std::basic_string<typename T::Ch>& defaultValue, typename T::AllocatorType& a) { + return pointer.GetWithDefault(root, defaultValue, a); +} +#endif + +template <typename T, typename T2> +RAPIDJSON_DISABLEIF_RETURN((internal::OrExpr<internal::IsPointer<T2>, internal::IsGenericValue<T2> >), (typename T::ValueType&)) +GetValueByPointerWithDefault(T& root, const GenericPointer<typename T::ValueType>& pointer, T2 defaultValue, typename T::AllocatorType& a) { + return pointer.GetWithDefault(root, defaultValue, a); +} + +template <typename T, typename CharType, size_t N> +typename T::ValueType& GetValueByPointerWithDefault(T& root, const CharType(&source)[N], const typename T::ValueType& defaultValue, typename T::AllocatorType& a) { + return GenericPointer<typename T::ValueType>(source, N - 1).GetWithDefault(root, defaultValue, a); +} + +template <typename T, typename CharType, size_t N> +typename T::ValueType& GetValueByPointerWithDefault(T& root, const CharType(&source)[N], const typename T::Ch* defaultValue, typename T::AllocatorType& a) { + return GenericPointer<typename T::ValueType>(source, N - 1).GetWithDefault(root, defaultValue, a); +} + +#if RAPIDJSON_HAS_STDSTRING +template <typename T, typename CharType, size_t N> +typename T::ValueType& GetValueByPointerWithDefault(T& root, const CharType(&source)[N], const std::basic_string<typename T::Ch>& defaultValue, typename T::AllocatorType& a) { + return GenericPointer<typename T::ValueType>(source, N - 1).GetWithDefault(root, defaultValue, a); +} +#endif + +template <typename T, typename CharType, size_t N, typename T2> +RAPIDJSON_DISABLEIF_RETURN((internal::OrExpr<internal::IsPointer<T2>, internal::IsGenericValue<T2> >), (typename T::ValueType&)) +GetValueByPointerWithDefault(T& root, const CharType(&source)[N], T2 defaultValue, typename T::AllocatorType& a) { + return GenericPointer<typename T::ValueType>(source, N - 1).GetWithDefault(root, defaultValue, a); +} + +// No allocator parameter + +template <typename DocumentType> +typename DocumentType::ValueType& GetValueByPointerWithDefault(DocumentType& document, const GenericPointer<typename DocumentType::ValueType>& pointer, const typename DocumentType::ValueType& defaultValue) { + return pointer.GetWithDefault(document, defaultValue); +} + +template <typename DocumentType> +typename DocumentType::ValueType& GetValueByPointerWithDefault(DocumentType& document, const GenericPointer<typename DocumentType::ValueType>& pointer, const typename DocumentType::Ch* defaultValue) { + return pointer.GetWithDefault(document, defaultValue); +} + +#if RAPIDJSON_HAS_STDSTRING +template <typename DocumentType> +typename DocumentType::ValueType& GetValueByPointerWithDefault(DocumentType& document, const GenericPointer<typename DocumentType::ValueType>& pointer, const std::basic_string<typename DocumentType::Ch>& defaultValue) { + return pointer.GetWithDefault(document, defaultValue); +} +#endif + +template <typename DocumentType, typename T2> +RAPIDJSON_DISABLEIF_RETURN((internal::OrExpr<internal::IsPointer<T2>, internal::IsGenericValue<T2> >), (typename DocumentType::ValueType&)) +GetValueByPointerWithDefault(DocumentType& document, const GenericPointer<typename DocumentType::ValueType>& pointer, T2 defaultValue) { + return pointer.GetWithDefault(document, defaultValue); +} + +template <typename DocumentType, typename CharType, size_t N> +typename DocumentType::ValueType& GetValueByPointerWithDefault(DocumentType& document, const CharType(&source)[N], const typename DocumentType::ValueType& defaultValue) { + return GenericPointer<typename DocumentType::ValueType>(source, N - 1).GetWithDefault(document, defaultValue); +} + +template <typename DocumentType, typename CharType, size_t N> +typename DocumentType::ValueType& GetValueByPointerWithDefault(DocumentType& document, const CharType(&source)[N], const typename DocumentType::Ch* defaultValue) { + return GenericPointer<typename DocumentType::ValueType>(source, N - 1).GetWithDefault(document, defaultValue); +} + +#if RAPIDJSON_HAS_STDSTRING +template <typename DocumentType, typename CharType, size_t N> +typename DocumentType::ValueType& GetValueByPointerWithDefault(DocumentType& document, const CharType(&source)[N], const std::basic_string<typename DocumentType::Ch>& defaultValue) { + return GenericPointer<typename DocumentType::ValueType>(source, N - 1).GetWithDefault(document, defaultValue); +} +#endif + +template <typename DocumentType, typename CharType, size_t N, typename T2> +RAPIDJSON_DISABLEIF_RETURN((internal::OrExpr<internal::IsPointer<T2>, internal::IsGenericValue<T2> >), (typename DocumentType::ValueType&)) +GetValueByPointerWithDefault(DocumentType& document, const CharType(&source)[N], T2 defaultValue) { + return GenericPointer<typename DocumentType::ValueType>(source, N - 1).GetWithDefault(document, defaultValue); +} + +////////////////////////////////////////////////////////////////////////////// + +template <typename T> +typename T::ValueType& SetValueByPointer(T& root, const GenericPointer<typename T::ValueType>& pointer, typename T::ValueType& value, typename T::AllocatorType& a) { + return pointer.Set(root, value, a); +} + +template <typename T> +typename T::ValueType& SetValueByPointer(T& root, const GenericPointer<typename T::ValueType>& pointer, const typename T::ValueType& value, typename T::AllocatorType& a) { + return pointer.Set(root, value, a); +} + +template <typename T> +typename T::ValueType& SetValueByPointer(T& root, const GenericPointer<typename T::ValueType>& pointer, const typename T::Ch* value, typename T::AllocatorType& a) { + return pointer.Set(root, value, a); +} + +#if RAPIDJSON_HAS_STDSTRING +template <typename T> +typename T::ValueType& SetValueByPointer(T& root, const GenericPointer<typename T::ValueType>& pointer, const std::basic_string<typename T::Ch>& value, typename T::AllocatorType& a) { + return pointer.Set(root, value, a); +} +#endif + +template <typename T, typename T2> +RAPIDJSON_DISABLEIF_RETURN((internal::OrExpr<internal::IsPointer<T2>, internal::IsGenericValue<T2> >), (typename T::ValueType&)) +SetValueByPointer(T& root, const GenericPointer<typename T::ValueType>& pointer, T2 value, typename T::AllocatorType& a) { + return pointer.Set(root, value, a); +} + +template <typename T, typename CharType, size_t N> +typename T::ValueType& SetValueByPointer(T& root, const CharType(&source)[N], typename T::ValueType& value, typename T::AllocatorType& a) { + return GenericPointer<typename T::ValueType>(source, N - 1).Set(root, value, a); +} + +template <typename T, typename CharType, size_t N> +typename T::ValueType& SetValueByPointer(T& root, const CharType(&source)[N], const typename T::ValueType& value, typename T::AllocatorType& a) { + return GenericPointer<typename T::ValueType>(source, N - 1).Set(root, value, a); +} + +template <typename T, typename CharType, size_t N> +typename T::ValueType& SetValueByPointer(T& root, const CharType(&source)[N], const typename T::Ch* value, typename T::AllocatorType& a) { + return GenericPointer<typename T::ValueType>(source, N - 1).Set(root, value, a); +} + +#if RAPIDJSON_HAS_STDSTRING +template <typename T, typename CharType, size_t N> +typename T::ValueType& SetValueByPointer(T& root, const CharType(&source)[N], const std::basic_string<typename T::Ch>& value, typename T::AllocatorType& a) { + return GenericPointer<typename T::ValueType>(source, N - 1).Set(root, value, a); +} +#endif + +template <typename T, typename CharType, size_t N, typename T2> +RAPIDJSON_DISABLEIF_RETURN((internal::OrExpr<internal::IsPointer<T2>, internal::IsGenericValue<T2> >), (typename T::ValueType&)) +SetValueByPointer(T& root, const CharType(&source)[N], T2 value, typename T::AllocatorType& a) { + return GenericPointer<typename T::ValueType>(source, N - 1).Set(root, value, a); +} + +// No allocator parameter + +template <typename DocumentType> +typename DocumentType::ValueType& SetValueByPointer(DocumentType& document, const GenericPointer<typename DocumentType::ValueType>& pointer, typename DocumentType::ValueType& value) { + return pointer.Set(document, value); +} + +template <typename DocumentType> +typename DocumentType::ValueType& SetValueByPointer(DocumentType& document, const GenericPointer<typename DocumentType::ValueType>& pointer, const typename DocumentType::ValueType& value) { + return pointer.Set(document, value); +} + +template <typename DocumentType> +typename DocumentType::ValueType& SetValueByPointer(DocumentType& document, const GenericPointer<typename DocumentType::ValueType>& pointer, const typename DocumentType::Ch* value) { + return pointer.Set(document, value); +} + +#if RAPIDJSON_HAS_STDSTRING +template <typename DocumentType> +typename DocumentType::ValueType& SetValueByPointer(DocumentType& document, const GenericPointer<typename DocumentType::ValueType>& pointer, const std::basic_string<typename DocumentType::Ch>& value) { + return pointer.Set(document, value); +} +#endif + +template <typename DocumentType, typename T2> +RAPIDJSON_DISABLEIF_RETURN((internal::OrExpr<internal::IsPointer<T2>, internal::IsGenericValue<T2> >), (typename DocumentType::ValueType&)) +SetValueByPointer(DocumentType& document, const GenericPointer<typename DocumentType::ValueType>& pointer, T2 value) { + return pointer.Set(document, value); +} + +template <typename DocumentType, typename CharType, size_t N> +typename DocumentType::ValueType& SetValueByPointer(DocumentType& document, const CharType(&source)[N], typename DocumentType::ValueType& value) { + return GenericPointer<typename DocumentType::ValueType>(source, N - 1).Set(document, value); +} + +template <typename DocumentType, typename CharType, size_t N> +typename DocumentType::ValueType& SetValueByPointer(DocumentType& document, const CharType(&source)[N], const typename DocumentType::ValueType& value) { + return GenericPointer<typename DocumentType::ValueType>(source, N - 1).Set(document, value); +} + +template <typename DocumentType, typename CharType, size_t N> +typename DocumentType::ValueType& SetValueByPointer(DocumentType& document, const CharType(&source)[N], const typename DocumentType::Ch* value) { + return GenericPointer<typename DocumentType::ValueType>(source, N - 1).Set(document, value); +} + +#if RAPIDJSON_HAS_STDSTRING +template <typename DocumentType, typename CharType, size_t N> +typename DocumentType::ValueType& SetValueByPointer(DocumentType& document, const CharType(&source)[N], const std::basic_string<typename DocumentType::Ch>& value) { + return GenericPointer<typename DocumentType::ValueType>(source, N - 1).Set(document, value); +} +#endif + +template <typename DocumentType, typename CharType, size_t N, typename T2> +RAPIDJSON_DISABLEIF_RETURN((internal::OrExpr<internal::IsPointer<T2>, internal::IsGenericValue<T2> >), (typename DocumentType::ValueType&)) +SetValueByPointer(DocumentType& document, const CharType(&source)[N], T2 value) { + return GenericPointer<typename DocumentType::ValueType>(source, N - 1).Set(document, value); +} + +////////////////////////////////////////////////////////////////////////////// + +template <typename T> +typename T::ValueType& SwapValueByPointer(T& root, const GenericPointer<typename T::ValueType>& pointer, typename T::ValueType& value, typename T::AllocatorType& a) { + return pointer.Swap(root, value, a); +} + +template <typename T, typename CharType, size_t N> +typename T::ValueType& SwapValueByPointer(T& root, const CharType(&source)[N], typename T::ValueType& value, typename T::AllocatorType& a) { + return GenericPointer<typename T::ValueType>(source, N - 1).Swap(root, value, a); +} + +template <typename DocumentType> +typename DocumentType::ValueType& SwapValueByPointer(DocumentType& document, const GenericPointer<typename DocumentType::ValueType>& pointer, typename DocumentType::ValueType& value) { + return pointer.Swap(document, value); +} + +template <typename DocumentType, typename CharType, size_t N> +typename DocumentType::ValueType& SwapValueByPointer(DocumentType& document, const CharType(&source)[N], typename DocumentType::ValueType& value) { + return GenericPointer<typename DocumentType::ValueType>(source, N - 1).Swap(document, value); +} + +////////////////////////////////////////////////////////////////////////////// + +template <typename T> +bool EraseValueByPointer(T& root, const GenericPointer<typename T::ValueType>& pointer) { + return pointer.Erase(root); +} + +template <typename T, typename CharType, size_t N> +bool EraseValueByPointer(T& root, const CharType(&source)[N]) { + return GenericPointer<typename T::ValueType>(source, N - 1).Erase(root); +} + +//@} + +RAPIDJSON_NAMESPACE_END + +#if defined(__clang__) || defined(_MSC_VER) +RAPIDJSON_DIAG_POP +#endif + +#endif // RAPIDJSON_POINTER_H_ + +// End file:pointer.h + + +// Begin file: prettywriter.h +// Tencent is pleased to support the open source community by making RapidJSON available. +// +// Copyright (C) 2015 THL A29 Limited, a Tencent company, and Milo Yip. All rights reserved. +// +// Licensed under the MIT License (the "License"); you may not use this file except +// in compliance with the License. You may obtain a copy of the License at +// +// http://opensource.org/licenses/MIT +// +// Unless required by applicable law or agreed to in writing, software distributed +// under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR +// CONDITIONS OF ANY KIND, either express or implied. See the License for the +// specific language governing permissions and limitations under the License. + +#ifndef RAPIDJSON_PRETTYWRITER_H_ +#define RAPIDJSON_PRETTYWRITER_H_ + + +// Begin file: writer.h +// Tencent is pleased to support the open source community by making RapidJSON available. +// +// Copyright (C) 2015 THL A29 Limited, a Tencent company, and Milo Yip. All rights reserved. +// +// Licensed under the MIT License (the "License"); you may not use this file except +// in compliance with the License. You may obtain a copy of the License at +// +// http://opensource.org/licenses/MIT +// +// Unless required by applicable law or agreed to in writing, software distributed +// under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR +// CONDITIONS OF ANY KIND, either express or implied. See the License for the +// specific language governing permissions and limitations under the License. + +#ifndef RAPIDJSON_WRITER_H_ +#define RAPIDJSON_WRITER_H_ + + +// Begin file: stream.h +// already included +// End file:stream.h + + +// Begin file: internal/meta.h +// already included +// End file:internal/meta.h + + +// Begin file: internal/stack.h +// already included +// End file:internal/stack.h + + +// Begin file: internal/strfunc.h +// already included +// End file:internal/strfunc.h + + +// Begin file: internal/dtoa.h +// Tencent is pleased to support the open source community by making RapidJSON available. +// +// Copyright (C) 2015 THL A29 Limited, a Tencent company, and Milo Yip. All rights reserved. +// +// Licensed under the MIT License (the "License"); you may not use this file except +// in compliance with the License. You may obtain a copy of the License at +// +// http://opensource.org/licenses/MIT +// +// Unless required by applicable law or agreed to in writing, software distributed +// under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR +// CONDITIONS OF ANY KIND, either express or implied. See the License for the +// specific language governing permissions and limitations under the License. + +// This is a C++ header-only implementation of Grisu2 algorithm from the publication: +// Loitsch, Florian. "Printing floating-point numbers quickly and accurately with +// integers." ACM Sigplan Notices 45.6 (2010): 233-243. + +#ifndef RAPIDJSON_DTOA_ +#define RAPIDJSON_DTOA_ + + +// Begin file: itoa.h +// already included +// End file:itoa.h + + +// Begin file: diyfp.h +// already included +// End file:diyfp.h + + +// Begin file: ieee754.h +// already included +// End file:ieee754.h + + +RAPIDJSON_NAMESPACE_BEGIN +namespace internal { + +#ifdef __GNUC__ +RAPIDJSON_DIAG_PUSH +RAPIDJSON_DIAG_OFF(effc++) +RAPIDJSON_DIAG_OFF(array-bounds) // some gcc versions generate wrong warnings https://gcc.gnu.org/bugzilla/show_bug.cgi?id=59124 +#endif + +inline void GrisuRound(char* buffer, int len, uint64_t delta, uint64_t rest, uint64_t ten_kappa, uint64_t wp_w) { + while (rest < wp_w && delta - rest >= ten_kappa && + (rest + ten_kappa < wp_w || /// closer + wp_w - rest > rest + ten_kappa - wp_w)) { + buffer[len - 1]--; + rest += ten_kappa; + } +} + +inline int CountDecimalDigit32(uint32_t n) { + // Simple pure C++ implementation was faster than __builtin_clz version in this situation. + if (n < 10) return 1; + if (n < 100) return 2; + if (n < 1000) return 3; + if (n < 10000) return 4; + if (n < 100000) return 5; + if (n < 1000000) return 6; + if (n < 10000000) return 7; + if (n < 100000000) return 8; + // Will not reach 10 digits in DigitGen() + //if (n < 1000000000) return 9; + //return 10; + return 9; +} + +inline void DigitGen(const DiyFp& W, const DiyFp& Mp, uint64_t delta, char* buffer, int* len, int* K) { + static const uint32_t kPow10[] = { 1, 10, 100, 1000, 10000, 100000, 1000000, 10000000, 100000000, 1000000000 }; + const DiyFp one(uint64_t(1) << -Mp.e, Mp.e); + const DiyFp wp_w = Mp - W; + uint32_t p1 = static_cast<uint32_t>(Mp.f >> -one.e); + uint64_t p2 = Mp.f & (one.f - 1); + int kappa = CountDecimalDigit32(p1); // kappa in [0, 9] + *len = 0; + + while (kappa > 0) { + uint32_t d = 0; + switch (kappa) { + case 9: d = p1 / 100000000; p1 %= 100000000; break; + case 8: d = p1 / 10000000; p1 %= 10000000; break; + case 7: d = p1 / 1000000; p1 %= 1000000; break; + case 6: d = p1 / 100000; p1 %= 100000; break; + case 5: d = p1 / 10000; p1 %= 10000; break; + case 4: d = p1 / 1000; p1 %= 1000; break; + case 3: d = p1 / 100; p1 %= 100; break; + case 2: d = p1 / 10; p1 %= 10; break; + case 1: d = p1; p1 = 0; break; + default:; + } + if (d || *len) + buffer[(*len)++] = static_cast<char>('0' + static_cast<char>(d)); + kappa--; + uint64_t tmp = (static_cast<uint64_t>(p1) << -one.e) + p2; + if (tmp <= delta) { + *K += kappa; + GrisuRound(buffer, *len, delta, tmp, static_cast<uint64_t>(kPow10[kappa]) << -one.e, wp_w.f); + return; + } + } + + // kappa = 0 + for (;;) { + p2 *= 10; + delta *= 10; + char d = static_cast<char>(p2 >> -one.e); + if (d || *len) + buffer[(*len)++] = static_cast<char>('0' + d); + p2 &= one.f - 1; + kappa--; + if (p2 < delta) { + *K += kappa; + int index = -kappa; + GrisuRound(buffer, *len, delta, p2, one.f, wp_w.f * (index < 9 ? kPow10[index] : 0)); + return; + } + } +} + +inline void Grisu2(double value, char* buffer, int* length, int* K) { + const DiyFp v(value); + DiyFp w_m, w_p; + v.NormalizedBoundaries(&w_m, &w_p); + + const DiyFp c_mk = GetCachedPower(w_p.e, K); + const DiyFp W = v.Normalize() * c_mk; + DiyFp Wp = w_p * c_mk; + DiyFp Wm = w_m * c_mk; + Wm.f++; + Wp.f--; + DigitGen(W, Wp, Wp.f - Wm.f, buffer, length, K); +} + +inline char* WriteExponent(int K, char* buffer) { + if (K < 0) { + *buffer++ = '-'; + K = -K; + } + + if (K >= 100) { + *buffer++ = static_cast<char>('0' + static_cast<char>(K / 100)); + K %= 100; + const char* d = GetDigitsLut() + K * 2; + *buffer++ = d[0]; + *buffer++ = d[1]; + } + else if (K >= 10) { + const char* d = GetDigitsLut() + K * 2; + *buffer++ = d[0]; + *buffer++ = d[1]; + } + else + *buffer++ = static_cast<char>('0' + static_cast<char>(K)); + + return buffer; +} + +inline char* Prettify(char* buffer, int length, int k, int maxDecimalPlaces) { + const int kk = length + k; // 10^(kk-1) <= v < 10^kk + + if (0 <= k && kk <= 21) { + // 1234e7 -> 12340000000 + for (int i = length; i < kk; i++) + buffer[i] = '0'; + buffer[kk] = '.'; + buffer[kk + 1] = '0'; + return &buffer[kk + 2]; + } + else if (0 < kk && kk <= 21) { + // 1234e-2 -> 12.34 + std::memmove(&buffer[kk + 1], &buffer[kk], static_cast<size_t>(length - kk)); + buffer[kk] = '.'; + if (0 > k + maxDecimalPlaces) { + // When maxDecimalPlaces = 2, 1.2345 -> 1.23, 1.102 -> 1.1 + // Remove extra trailing zeros (at least one) after truncation. + for (int i = kk + maxDecimalPlaces; i > kk + 1; i--) + if (buffer[i] != '0') + return &buffer[i + 1]; + return &buffer[kk + 2]; // Reserve one zero + } + else + return &buffer[length + 1]; + } + else if (-6 < kk && kk <= 0) { + // 1234e-6 -> 0.001234 + const int offset = 2 - kk; + std::memmove(&buffer[offset], &buffer[0], static_cast<size_t>(length)); + buffer[0] = '0'; + buffer[1] = '.'; + for (int i = 2; i < offset; i++) + buffer[i] = '0'; + if (length - kk > maxDecimalPlaces) { + // When maxDecimalPlaces = 2, 0.123 -> 0.12, 0.102 -> 0.1 + // Remove extra trailing zeros (at least one) after truncation. + for (int i = maxDecimalPlaces + 1; i > 2; i--) + if (buffer[i] != '0') + return &buffer[i + 1]; + return &buffer[3]; // Reserve one zero + } + else + return &buffer[length + offset]; + } + else if (kk < -maxDecimalPlaces) { + // Truncate to zero + buffer[0] = '0'; + buffer[1] = '.'; + buffer[2] = '0'; + return &buffer[3]; + } + else if (length == 1) { + // 1e30 + buffer[1] = 'e'; + return WriteExponent(kk - 1, &buffer[2]); + } + else { + // 1234e30 -> 1.234e33 + std::memmove(&buffer[2], &buffer[1], static_cast<size_t>(length - 1)); + buffer[1] = '.'; + buffer[length + 1] = 'e'; + return WriteExponent(kk - 1, &buffer[0 + length + 2]); + } +} + +inline char* dtoa(double value, char* buffer, int maxDecimalPlaces = 324) { + RAPIDJSON_ASSERT(maxDecimalPlaces >= 1); + Double d(value); + if (d.IsZero()) { + if (d.Sign()) + *buffer++ = '-'; // -0.0, Issue #289 + buffer[0] = '0'; + buffer[1] = '.'; + buffer[2] = '0'; + return &buffer[3]; + } + else { + if (value < 0) { + *buffer++ = '-'; + value = -value; + } + int length, K; + Grisu2(value, buffer, &length, &K); + return Prettify(buffer, length, K, maxDecimalPlaces); + } +} + +#ifdef __GNUC__ +RAPIDJSON_DIAG_POP +#endif + +} // namespace internal +RAPIDJSON_NAMESPACE_END + +#endif // RAPIDJSON_DTOA_ + +// End file:internal/dtoa.h + + +// Begin file: internal/itoa.h +// already included +// End file:internal/itoa.h + + +// Begin file: stringbuffer.h +// Tencent is pleased to support the open source community by making RapidJSON available. +// +// Copyright (C) 2015 THL A29 Limited, a Tencent company, and Milo Yip. All rights reserved. +// +// Licensed under the MIT License (the "License"); you may not use this file except +// in compliance with the License. You may obtain a copy of the License at +// +// http://opensource.org/licenses/MIT +// +// Unless required by applicable law or agreed to in writing, software distributed +// under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR +// CONDITIONS OF ANY KIND, either express or implied. See the License for the +// specific language governing permissions and limitations under the License. + +#ifndef RAPIDJSON_STRINGBUFFER_H_ +#define RAPIDJSON_STRINGBUFFER_H_ + + +// Begin file: stream.h +// already included +// End file:stream.h + + +// Begin file: internal/stack.h +// already included +// End file:internal/stack.h + + +#if RAPIDJSON_HAS_CXX11_RVALUE_REFS +#include <utility> // std::move +#endif + + +// Begin file: internal/stack.h +// already included +// End file:internal/stack.h + + +#if defined(__clang__) +RAPIDJSON_DIAG_PUSH +RAPIDJSON_DIAG_OFF(c++98-compat) +#endif + +RAPIDJSON_NAMESPACE_BEGIN + +//! Represents an in-memory output stream. +/*! + \tparam Encoding Encoding of the stream. + \tparam Allocator type for allocating memory buffer. + \note implements Stream concept +*/ +template <typename Encoding, typename Allocator = CrtAllocator> +class GenericStringBuffer { +public: + typedef typename Encoding::Ch Ch; + + GenericStringBuffer(Allocator* allocator = 0, size_t capacity = kDefaultCapacity) : stack_(allocator, capacity) {} + +#if RAPIDJSON_HAS_CXX11_RVALUE_REFS + GenericStringBuffer(GenericStringBuffer&& rhs) : stack_(std::move(rhs.stack_)) {} + GenericStringBuffer& operator=(GenericStringBuffer&& rhs) { + if (&rhs != this) + stack_ = std::move(rhs.stack_); + return *this; + } +#endif + + void Put(Ch c) { *stack_.template Push<Ch>() = c; } + void PutUnsafe(Ch c) { *stack_.template PushUnsafe<Ch>() = c; } + void Flush() {} + + void Clear() { stack_.Clear(); } + void ShrinkToFit() { + // Push and pop a null terminator. This is safe. + *stack_.template Push<Ch>() = '\0'; + stack_.ShrinkToFit(); + stack_.template Pop<Ch>(1); + } + + void Reserve(size_t count) { stack_.template Reserve<Ch>(count); } + Ch* Push(size_t count) { return stack_.template Push<Ch>(count); } + Ch* PushUnsafe(size_t count) { return stack_.template PushUnsafe<Ch>(count); } + void Pop(size_t count) { stack_.template Pop<Ch>(count); } + + const Ch* GetString() const { + // Push and pop a null terminator. This is safe. + *stack_.template Push<Ch>() = '\0'; + stack_.template Pop<Ch>(1); + + return stack_.template Bottom<Ch>(); + } + + //! Get the size of string in bytes in the string buffer. + size_t GetSize() const { return stack_.GetSize(); } + + //! Get the length of string in Ch in the string buffer. + size_t GetLength() const { return stack_.GetSize() / sizeof(Ch); } + + static const size_t kDefaultCapacity = 256; + mutable internal::Stack<Allocator> stack_; + +private: + // Prohibit copy constructor & assignment operator. + GenericStringBuffer(const GenericStringBuffer&); + GenericStringBuffer& operator=(const GenericStringBuffer&); +}; + +//! String buffer with UTF8 encoding +typedef GenericStringBuffer<UTF8<> > StringBuffer; + +template<typename Encoding, typename Allocator> +inline void PutReserve(GenericStringBuffer<Encoding, Allocator>& stream, size_t count) { + stream.Reserve(count); +} + +template<typename Encoding, typename Allocator> +inline void PutUnsafe(GenericStringBuffer<Encoding, Allocator>& stream, typename Encoding::Ch c) { + stream.PutUnsafe(c); +} + +//! Implement specialized version of PutN() with memset() for better performance. +template<> +inline void PutN(GenericStringBuffer<UTF8<> >& stream, char c, size_t n) { + std::memset(stream.stack_.Push<char>(n), c, n * sizeof(c)); +} + +RAPIDJSON_NAMESPACE_END + +#if defined(__clang__) +RAPIDJSON_DIAG_POP +#endif + +#endif // RAPIDJSON_STRINGBUFFER_H_ + +// End file:stringbuffer.h + +#include <new> // placement new + +#if defined(RAPIDJSON_SIMD) && defined(_MSC_VER) +#include <intrin.h> +#pragma intrinsic(_BitScanForward) +#endif +#ifdef RAPIDJSON_SSE42 +#include <nmmintrin.h> +#elif defined(RAPIDJSON_SSE2) +#include <emmintrin.h> +#elif defined(RAPIDJSON_NEON) +#include <arm_neon.h> +#endif + +#ifdef __clang__ +RAPIDJSON_DIAG_PUSH +RAPIDJSON_DIAG_OFF(padded) +RAPIDJSON_DIAG_OFF(unreachable-code) +RAPIDJSON_DIAG_OFF(c++98-compat) +#elif defined(_MSC_VER) +RAPIDJSON_DIAG_PUSH +RAPIDJSON_DIAG_OFF(4127) // conditional expression is constant +#endif + +RAPIDJSON_NAMESPACE_BEGIN + +/////////////////////////////////////////////////////////////////////////////// +// WriteFlag + +/*! \def RAPIDJSON_WRITE_DEFAULT_FLAGS + \ingroup RAPIDJSON_CONFIG + \brief User-defined kWriteDefaultFlags definition. + + User can define this as any \c WriteFlag combinations. +*/ +#ifndef RAPIDJSON_WRITE_DEFAULT_FLAGS +#define RAPIDJSON_WRITE_DEFAULT_FLAGS kWriteNoFlags +#endif + +//! Combination of writeFlags +enum WriteFlag { + kWriteNoFlags = 0, //!< No flags are set. + kWriteValidateEncodingFlag = 1, //!< Validate encoding of JSON strings. + kWriteNanAndInfFlag = 2, //!< Allow writing of Infinity, -Infinity and NaN. + kWriteDefaultFlags = RAPIDJSON_WRITE_DEFAULT_FLAGS //!< Default write flags. Can be customized by defining RAPIDJSON_WRITE_DEFAULT_FLAGS +}; + +//! JSON writer +/*! Writer implements the concept Handler. + It generates JSON text by events to an output os. + + User may programmatically calls the functions of a writer to generate JSON text. + + On the other side, a writer can also be passed to objects that generates events, + + for example Reader::Parse() and Document::Accept(). + + \tparam OutputStream Type of output stream. + \tparam SourceEncoding Encoding of source string. + \tparam TargetEncoding Encoding of output stream. + \tparam StackAllocator Type of allocator for allocating memory of stack. + \note implements Handler concept +*/ +template<typename OutputStream, typename SourceEncoding = UTF8<>, typename TargetEncoding = UTF8<>, typename StackAllocator = CrtAllocator, unsigned writeFlags = kWriteDefaultFlags> +class Writer { +public: + typedef typename SourceEncoding::Ch Ch; + + static const int kDefaultMaxDecimalPlaces = 324; + + //! Constructor + /*! \param os Output stream. + \param stackAllocator User supplied allocator. If it is null, it will create a private one. + \param levelDepth Initial capacity of stack. + */ + explicit + Writer(OutputStream& os, StackAllocator* stackAllocator = 0, size_t levelDepth = kDefaultLevelDepth) : + os_(&os), level_stack_(stackAllocator, levelDepth * sizeof(Level)), maxDecimalPlaces_(kDefaultMaxDecimalPlaces), hasRoot_(false) {} + + explicit + Writer(StackAllocator* allocator = 0, size_t levelDepth = kDefaultLevelDepth) : + os_(0), level_stack_(allocator, levelDepth * sizeof(Level)), maxDecimalPlaces_(kDefaultMaxDecimalPlaces), hasRoot_(false) {} + +#if RAPIDJSON_HAS_CXX11_RVALUE_REFS + Writer(Writer&& rhs) : + os_(rhs.os_), level_stack_(std::move(rhs.level_stack_)), maxDecimalPlaces_(rhs.maxDecimalPlaces_), hasRoot_(rhs.hasRoot_) { + rhs.os_ = 0; + } +#endif + + //! Reset the writer with a new stream. + /*! + This function reset the writer with a new stream and default settings, + in order to make a Writer object reusable for output multiple JSONs. + + \param os New output stream. + \code + Writer<OutputStream> writer(os1); + writer.StartObject(); + // ... + writer.EndObject(); + + writer.Reset(os2); + writer.StartObject(); + // ... + writer.EndObject(); + \endcode + */ + void Reset(OutputStream& os) { + os_ = &os; + hasRoot_ = false; + level_stack_.Clear(); + } + + //! Checks whether the output is a complete JSON. + /*! + A complete JSON has a complete root object or array. + */ + bool IsComplete() const { + return hasRoot_ && level_stack_.Empty(); + } + + int GetMaxDecimalPlaces() const { + return maxDecimalPlaces_; + } + + //! Sets the maximum number of decimal places for double output. + /*! + This setting truncates the output with specified number of decimal places. + + For example, + + \code + writer.SetMaxDecimalPlaces(3); + writer.StartArray(); + writer.Double(0.12345); // "0.123" + writer.Double(0.0001); // "0.0" + writer.Double(1.234567890123456e30); // "1.234567890123456e30" (do not truncate significand for positive exponent) + writer.Double(1.23e-4); // "0.0" (do truncate significand for negative exponent) + writer.EndArray(); + \endcode + + The default setting does not truncate any decimal places. You can restore to this setting by calling + \code + writer.SetMaxDecimalPlaces(Writer::kDefaultMaxDecimalPlaces); + \endcode + */ + void SetMaxDecimalPlaces(int maxDecimalPlaces) { + maxDecimalPlaces_ = maxDecimalPlaces; + } + + /*!@name Implementation of Handler + \see Handler + */ + //@{ + + bool Null() { Prefix(kNullType); return EndValue(WriteNull()); } + bool Bool(bool b) { Prefix(b ? kTrueType : kFalseType); return EndValue(WriteBool(b)); } + bool Int(int i) { Prefix(kNumberType); return EndValue(WriteInt(i)); } + bool Uint(unsigned u) { Prefix(kNumberType); return EndValue(WriteUint(u)); } + bool Int64(int64_t i64) { Prefix(kNumberType); return EndValue(WriteInt64(i64)); } + bool Uint64(uint64_t u64) { Prefix(kNumberType); return EndValue(WriteUint64(u64)); } + + //! Writes the given \c double value to the stream + /*! + \param d The value to be written. + \return Whether it is succeed. + */ + bool Double(double d) { Prefix(kNumberType); return EndValue(WriteDouble(d)); } + + bool RawNumber(const Ch* str, SizeType length, bool copy = false) { + RAPIDJSON_ASSERT(str != 0); + (void)copy; + Prefix(kNumberType); + return EndValue(WriteString(str, length)); + } + + bool String(const Ch* str, SizeType length, bool copy = false) { + RAPIDJSON_ASSERT(str != 0); + (void)copy; + Prefix(kStringType); + return EndValue(WriteString(str, length)); + } + +#if RAPIDJSON_HAS_STDSTRING + bool String(const std::basic_string<Ch>& str) { + return String(str.data(), SizeType(str.size())); + } +#endif + + bool StartObject() { + Prefix(kObjectType); + new (level_stack_.template Push<Level>()) Level(false); + return WriteStartObject(); + } + + bool Key(const Ch* str, SizeType length, bool copy = false) { return String(str, length, copy); } + +#if RAPIDJSON_HAS_STDSTRING + bool Key(const std::basic_string<Ch>& str) + { + return Key(str.data(), SizeType(str.size())); + } +#endif + + bool EndObject(SizeType memberCount = 0) { + (void)memberCount; + RAPIDJSON_ASSERT(level_stack_.GetSize() >= sizeof(Level)); // not inside an Object + RAPIDJSON_ASSERT(!level_stack_.template Top<Level>()->inArray); // currently inside an Array, not Object + RAPIDJSON_ASSERT(0 == level_stack_.template Top<Level>()->valueCount % 2); // Object has a Key without a Value + level_stack_.template Pop<Level>(1); + return EndValue(WriteEndObject()); + } + + bool StartArray() { + Prefix(kArrayType); + new (level_stack_.template Push<Level>()) Level(true); + return WriteStartArray(); + } + + bool EndArray(SizeType elementCount = 0) { + (void)elementCount; + RAPIDJSON_ASSERT(level_stack_.GetSize() >= sizeof(Level)); + RAPIDJSON_ASSERT(level_stack_.template Top<Level>()->inArray); + level_stack_.template Pop<Level>(1); + return EndValue(WriteEndArray()); + } + //@} + + /*! @name Convenience extensions */ + //@{ + + //! Simpler but slower overload. + bool String(const Ch* const& str) { return String(str, internal::StrLen(str)); } + bool Key(const Ch* const& str) { return Key(str, internal::StrLen(str)); } + + //@} + + //! Write a raw JSON value. + /*! + For user to write a stringified JSON as a value. + + \param json A well-formed JSON value. It should not contain null character within [0, length - 1] range. + \param length Length of the json. + \param type Type of the root of json. + */ + bool RawValue(const Ch* json, size_t length, Type type) { + RAPIDJSON_ASSERT(json != 0); + Prefix(type); + return EndValue(WriteRawValue(json, length)); + } + + //! Flush the output stream. + /*! + Allows the user to flush the output stream immediately. + */ + void Flush() { + os_->Flush(); + } + +protected: + //! Information for each nested level + struct Level { + Level(bool inArray_) : valueCount(0), inArray(inArray_) {} + size_t valueCount; //!< number of values in this level + bool inArray; //!< true if in array, otherwise in object + }; + + static const size_t kDefaultLevelDepth = 32; + + bool WriteNull() { + PutReserve(*os_, 4); + PutUnsafe(*os_, 'n'); PutUnsafe(*os_, 'u'); PutUnsafe(*os_, 'l'); PutUnsafe(*os_, 'l'); return true; + } + + bool WriteBool(bool b) { + if (b) { + PutReserve(*os_, 4); + PutUnsafe(*os_, 't'); PutUnsafe(*os_, 'r'); PutUnsafe(*os_, 'u'); PutUnsafe(*os_, 'e'); + } + else { + PutReserve(*os_, 5); + PutUnsafe(*os_, 'f'); PutUnsafe(*os_, 'a'); PutUnsafe(*os_, 'l'); PutUnsafe(*os_, 's'); PutUnsafe(*os_, 'e'); + } + return true; + } + + bool WriteInt(int i) { + char buffer[11]; + const char* end = internal::i32toa(i, buffer); + PutReserve(*os_, static_cast<size_t>(end - buffer)); + for (const char* p = buffer; p != end; ++p) + PutUnsafe(*os_, static_cast<typename OutputStream::Ch>(*p)); + return true; + } + + bool WriteUint(unsigned u) { + char buffer[10]; + const char* end = internal::u32toa(u, buffer); + PutReserve(*os_, static_cast<size_t>(end - buffer)); + for (const char* p = buffer; p != end; ++p) + PutUnsafe(*os_, static_cast<typename OutputStream::Ch>(*p)); + return true; + } + + bool WriteInt64(int64_t i64) { + char buffer[21]; + const char* end = internal::i64toa(i64, buffer); + PutReserve(*os_, static_cast<size_t>(end - buffer)); + for (const char* p = buffer; p != end; ++p) + PutUnsafe(*os_, static_cast<typename OutputStream::Ch>(*p)); + return true; + } + + bool WriteUint64(uint64_t u64) { + char buffer[20]; + char* end = internal::u64toa(u64, buffer); + PutReserve(*os_, static_cast<size_t>(end - buffer)); + for (char* p = buffer; p != end; ++p) + PutUnsafe(*os_, static_cast<typename OutputStream::Ch>(*p)); + return true; + } + + bool WriteDouble(double d) { + if (internal::Double(d).IsNanOrInf()) { + if (!(writeFlags & kWriteNanAndInfFlag)) + return false; + if (internal::Double(d).IsNan()) { + PutReserve(*os_, 3); + PutUnsafe(*os_, 'N'); PutUnsafe(*os_, 'a'); PutUnsafe(*os_, 'N'); + return true; + } + if (internal::Double(d).Sign()) { + PutReserve(*os_, 9); + PutUnsafe(*os_, '-'); + } + else + PutReserve(*os_, 8); + PutUnsafe(*os_, 'I'); PutUnsafe(*os_, 'n'); PutUnsafe(*os_, 'f'); + PutUnsafe(*os_, 'i'); PutUnsafe(*os_, 'n'); PutUnsafe(*os_, 'i'); PutUnsafe(*os_, 't'); PutUnsafe(*os_, 'y'); + return true; + } + + char buffer[25]; + char* end = internal::dtoa(d, buffer, maxDecimalPlaces_); + PutReserve(*os_, static_cast<size_t>(end - buffer)); + for (char* p = buffer; p != end; ++p) + PutUnsafe(*os_, static_cast<typename OutputStream::Ch>(*p)); + return true; + } + + bool WriteString(const Ch* str, SizeType length) { + static const typename OutputStream::Ch hexDigits[16] = { '0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'A', 'B', 'C', 'D', 'E', 'F' }; + static const char escape[256] = { +#define Z16 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 + //0 1 2 3 4 5 6 7 8 9 A B C D E F + 'u', 'u', 'u', 'u', 'u', 'u', 'u', 'u', 'b', 't', 'n', 'u', 'f', 'r', 'u', 'u', // 00 + 'u', 'u', 'u', 'u', 'u', 'u', 'u', 'u', 'u', 'u', 'u', 'u', 'u', 'u', 'u', 'u', // 10 + 0, 0, '"', 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, // 20 + Z16, Z16, // 30~4F + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,'\\', 0, 0, 0, // 50 + Z16, Z16, Z16, Z16, Z16, Z16, Z16, Z16, Z16, Z16 // 60~FF +#undef Z16 + }; + + if (TargetEncoding::supportUnicode) + PutReserve(*os_, 2 + length * 6); // "\uxxxx..." + else + PutReserve(*os_, 2 + length * 12); // "\uxxxx\uyyyy..." + + PutUnsafe(*os_, '\"'); + GenericStringStream<SourceEncoding> is(str); + while (ScanWriteUnescapedString(is, length)) { + const Ch c = is.Peek(); + if (!TargetEncoding::supportUnicode && static_cast<unsigned>(c) >= 0x80) { + // Unicode escaping + unsigned codepoint; + if (RAPIDJSON_UNLIKELY(!SourceEncoding::Decode(is, &codepoint))) + return false; + PutUnsafe(*os_, '\\'); + PutUnsafe(*os_, 'u'); + if (codepoint <= 0xD7FF || (codepoint >= 0xE000 && codepoint <= 0xFFFF)) { + PutUnsafe(*os_, hexDigits[(codepoint >> 12) & 15]); + PutUnsafe(*os_, hexDigits[(codepoint >> 8) & 15]); + PutUnsafe(*os_, hexDigits[(codepoint >> 4) & 15]); + PutUnsafe(*os_, hexDigits[(codepoint ) & 15]); + } + else { + RAPIDJSON_ASSERT(codepoint >= 0x010000 && codepoint <= 0x10FFFF); + // Surrogate pair + unsigned s = codepoint - 0x010000; + unsigned lead = (s >> 10) + 0xD800; + unsigned trail = (s & 0x3FF) + 0xDC00; + PutUnsafe(*os_, hexDigits[(lead >> 12) & 15]); + PutUnsafe(*os_, hexDigits[(lead >> 8) & 15]); + PutUnsafe(*os_, hexDigits[(lead >> 4) & 15]); + PutUnsafe(*os_, hexDigits[(lead ) & 15]); + PutUnsafe(*os_, '\\'); + PutUnsafe(*os_, 'u'); + PutUnsafe(*os_, hexDigits[(trail >> 12) & 15]); + PutUnsafe(*os_, hexDigits[(trail >> 8) & 15]); + PutUnsafe(*os_, hexDigits[(trail >> 4) & 15]); + PutUnsafe(*os_, hexDigits[(trail ) & 15]); + } + } + else if ((sizeof(Ch) == 1 || static_cast<unsigned>(c) < 256) && RAPIDJSON_UNLIKELY(escape[static_cast<unsigned char>(c)])) { + is.Take(); + PutUnsafe(*os_, '\\'); + PutUnsafe(*os_, static_cast<typename OutputStream::Ch>(escape[static_cast<unsigned char>(c)])); + if (escape[static_cast<unsigned char>(c)] == 'u') { + PutUnsafe(*os_, '0'); + PutUnsafe(*os_, '0'); + PutUnsafe(*os_, hexDigits[static_cast<unsigned char>(c) >> 4]); + PutUnsafe(*os_, hexDigits[static_cast<unsigned char>(c) & 0xF]); + } + } + else if (RAPIDJSON_UNLIKELY(!(writeFlags & kWriteValidateEncodingFlag ? + Transcoder<SourceEncoding, TargetEncoding>::Validate(is, *os_) : + Transcoder<SourceEncoding, TargetEncoding>::TranscodeUnsafe(is, *os_)))) + return false; + } + PutUnsafe(*os_, '\"'); + return true; + } + + bool ScanWriteUnescapedString(GenericStringStream<SourceEncoding>& is, size_t length) { + return RAPIDJSON_LIKELY(is.Tell() < length); + } + + bool WriteStartObject() { os_->Put('{'); return true; } + bool WriteEndObject() { os_->Put('}'); return true; } + bool WriteStartArray() { os_->Put('['); return true; } + bool WriteEndArray() { os_->Put(']'); return true; } + + bool WriteRawValue(const Ch* json, size_t length) { + PutReserve(*os_, length); + GenericStringStream<SourceEncoding> is(json); + while (RAPIDJSON_LIKELY(is.Tell() < length)) { + RAPIDJSON_ASSERT(is.Peek() != '\0'); + if (RAPIDJSON_UNLIKELY(!(writeFlags & kWriteValidateEncodingFlag ? + Transcoder<SourceEncoding, TargetEncoding>::Validate(is, *os_) : + Transcoder<SourceEncoding, TargetEncoding>::TranscodeUnsafe(is, *os_)))) + return false; + } + return true; + } + + void Prefix(Type type) { + (void)type; + if (RAPIDJSON_LIKELY(level_stack_.GetSize() != 0)) { // this value is not at root + Level* level = level_stack_.template Top<Level>(); + if (level->valueCount > 0) { + if (level->inArray) + os_->Put(','); // add comma if it is not the first element in array + else // in object + os_->Put((level->valueCount % 2 == 0) ? ',' : ':'); + } + if (!level->inArray && level->valueCount % 2 == 0) + RAPIDJSON_ASSERT(type == kStringType); // if it's in object, then even number should be a name + level->valueCount++; + } + else { + RAPIDJSON_ASSERT(!hasRoot_); // Should only has one and only one root. + hasRoot_ = true; + } + } + + // Flush the value if it is the top level one. + bool EndValue(bool ret) { + if (RAPIDJSON_UNLIKELY(level_stack_.Empty())) // end of json text + Flush(); + return ret; + } + + OutputStream* os_; + internal::Stack<StackAllocator> level_stack_; + int maxDecimalPlaces_; + bool hasRoot_; + +private: + // Prohibit copy constructor & assignment operator. + Writer(const Writer&); + Writer& operator=(const Writer&); +}; + +// Full specialization for StringStream to prevent memory copying + +template<> +inline bool Writer<StringBuffer>::WriteInt(int i) { + char *buffer = os_->Push(11); + const char* end = internal::i32toa(i, buffer); + os_->Pop(static_cast<size_t>(11 - (end - buffer))); + return true; +} + +template<> +inline bool Writer<StringBuffer>::WriteUint(unsigned u) { + char *buffer = os_->Push(10); + const char* end = internal::u32toa(u, buffer); + os_->Pop(static_cast<size_t>(10 - (end - buffer))); + return true; +} + +template<> +inline bool Writer<StringBuffer>::WriteInt64(int64_t i64) { + char *buffer = os_->Push(21); + const char* end = internal::i64toa(i64, buffer); + os_->Pop(static_cast<size_t>(21 - (end - buffer))); + return true; +} + +template<> +inline bool Writer<StringBuffer>::WriteUint64(uint64_t u) { + char *buffer = os_->Push(20); + const char* end = internal::u64toa(u, buffer); + os_->Pop(static_cast<size_t>(20 - (end - buffer))); + return true; +} + +template<> +inline bool Writer<StringBuffer>::WriteDouble(double d) { + if (internal::Double(d).IsNanOrInf()) { + // Note: This code path can only be reached if (RAPIDJSON_WRITE_DEFAULT_FLAGS & kWriteNanAndInfFlag). + if (!(kWriteDefaultFlags & kWriteNanAndInfFlag)) + return false; + if (internal::Double(d).IsNan()) { + PutReserve(*os_, 3); + PutUnsafe(*os_, 'N'); PutUnsafe(*os_, 'a'); PutUnsafe(*os_, 'N'); + return true; + } + if (internal::Double(d).Sign()) { + PutReserve(*os_, 9); + PutUnsafe(*os_, '-'); + } + else + PutReserve(*os_, 8); + PutUnsafe(*os_, 'I'); PutUnsafe(*os_, 'n'); PutUnsafe(*os_, 'f'); + PutUnsafe(*os_, 'i'); PutUnsafe(*os_, 'n'); PutUnsafe(*os_, 'i'); PutUnsafe(*os_, 't'); PutUnsafe(*os_, 'y'); + return true; + } + + char *buffer = os_->Push(25); + char* end = internal::dtoa(d, buffer, maxDecimalPlaces_); + os_->Pop(static_cast<size_t>(25 - (end - buffer))); + return true; +} + +#if defined(RAPIDJSON_SSE2) || defined(RAPIDJSON_SSE42) +template<> +inline bool Writer<StringBuffer>::ScanWriteUnescapedString(StringStream& is, size_t length) { + if (length < 16) + return RAPIDJSON_LIKELY(is.Tell() < length); + + if (!RAPIDJSON_LIKELY(is.Tell() < length)) + return false; + + const char* p = is.src_; + const char* end = is.head_ + length; + const char* nextAligned = reinterpret_cast<const char*>((reinterpret_cast<size_t>(p) + 15) & static_cast<size_t>(~15)); + const char* endAligned = reinterpret_cast<const char*>(reinterpret_cast<size_t>(end) & static_cast<size_t>(~15)); + if (nextAligned > end) + return true; + + while (p != nextAligned) + if (*p < 0x20 || *p == '\"' || *p == '\\') { + is.src_ = p; + return RAPIDJSON_LIKELY(is.Tell() < length); + } + else + os_->PutUnsafe(*p++); + + // The rest of string using SIMD + static const char dquote[16] = { '\"', '\"', '\"', '\"', '\"', '\"', '\"', '\"', '\"', '\"', '\"', '\"', '\"', '\"', '\"', '\"' }; + static const char bslash[16] = { '\\', '\\', '\\', '\\', '\\', '\\', '\\', '\\', '\\', '\\', '\\', '\\', '\\', '\\', '\\', '\\' }; + static const char space[16] = { 0x1F, 0x1F, 0x1F, 0x1F, 0x1F, 0x1F, 0x1F, 0x1F, 0x1F, 0x1F, 0x1F, 0x1F, 0x1F, 0x1F, 0x1F, 0x1F }; + const __m128i dq = _mm_loadu_si128(reinterpret_cast<const __m128i *>(&dquote[0])); + const __m128i bs = _mm_loadu_si128(reinterpret_cast<const __m128i *>(&bslash[0])); + const __m128i sp = _mm_loadu_si128(reinterpret_cast<const __m128i *>(&space[0])); + + for (; p != endAligned; p += 16) { + const __m128i s = _mm_load_si128(reinterpret_cast<const __m128i *>(p)); + const __m128i t1 = _mm_cmpeq_epi8(s, dq); + const __m128i t2 = _mm_cmpeq_epi8(s, bs); + const __m128i t3 = _mm_cmpeq_epi8(_mm_max_epu8(s, sp), sp); // s < 0x20 <=> max(s, 0x1F) == 0x1F + const __m128i x = _mm_or_si128(_mm_or_si128(t1, t2), t3); + unsigned short r = static_cast<unsigned short>(_mm_movemask_epi8(x)); + if (RAPIDJSON_UNLIKELY(r != 0)) { // some of characters is escaped + SizeType len; +#ifdef _MSC_VER // Find the index of first escaped + unsigned long offset; + _BitScanForward(&offset, r); + len = offset; +#else + len = static_cast<SizeType>(__builtin_ffs(r) - 1); +#endif + char* q = reinterpret_cast<char*>(os_->PushUnsafe(len)); + for (size_t i = 0; i < len; i++) + q[i] = p[i]; + + p += len; + break; + } + _mm_storeu_si128(reinterpret_cast<__m128i *>(os_->PushUnsafe(16)), s); + } + + is.src_ = p; + return RAPIDJSON_LIKELY(is.Tell() < length); +} +#elif defined(RAPIDJSON_NEON) +template<> +inline bool Writer<StringBuffer>::ScanWriteUnescapedString(StringStream& is, size_t length) { + if (length < 16) + return RAPIDJSON_LIKELY(is.Tell() < length); + + if (!RAPIDJSON_LIKELY(is.Tell() < length)) + return false; + + const char* p = is.src_; + const char* end = is.head_ + length; + const char* nextAligned = reinterpret_cast<const char*>((reinterpret_cast<size_t>(p) + 15) & static_cast<size_t>(~15)); + const char* endAligned = reinterpret_cast<const char*>(reinterpret_cast<size_t>(end) & static_cast<size_t>(~15)); + if (nextAligned > end) + return true; + + while (p != nextAligned) + if (*p < 0x20 || *p == '\"' || *p == '\\') { + is.src_ = p; + return RAPIDJSON_LIKELY(is.Tell() < length); + } + else + os_->PutUnsafe(*p++); + + // The rest of string using SIMD + const uint8x16_t s0 = vmovq_n_u8('"'); + const uint8x16_t s1 = vmovq_n_u8('\\'); + const uint8x16_t s2 = vmovq_n_u8('\b'); + const uint8x16_t s3 = vmovq_n_u8(32); + + for (; p != endAligned; p += 16) { + const uint8x16_t s = vld1q_u8(reinterpret_cast<const uint8_t *>(p)); + uint8x16_t x = vceqq_u8(s, s0); + x = vorrq_u8(x, vceqq_u8(s, s1)); + x = vorrq_u8(x, vceqq_u8(s, s2)); + x = vorrq_u8(x, vcltq_u8(s, s3)); + + x = vrev64q_u8(x); // Rev in 64 + uint64_t low = vgetq_lane_u64(reinterpret_cast<uint64x2_t>(x), 0); // extract + uint64_t high = vgetq_lane_u64(reinterpret_cast<uint64x2_t>(x), 1); // extract + + SizeType len = 0; + bool escaped = false; + if (low == 0) { + if (high != 0) { + unsigned lz = (unsigned)__builtin_clzll(high); + len = 8 + (lz >> 3); + escaped = true; + } + } else { + unsigned lz = (unsigned)__builtin_clzll(low); + len = lz >> 3; + escaped = true; + } + if (RAPIDJSON_UNLIKELY(escaped)) { // some of characters is escaped + char* q = reinterpret_cast<char*>(os_->PushUnsafe(len)); + for (size_t i = 0; i < len; i++) + q[i] = p[i]; + + p += len; + break; + } + vst1q_u8(reinterpret_cast<uint8_t *>(os_->PushUnsafe(16)), s); + } + + is.src_ = p; + return RAPIDJSON_LIKELY(is.Tell() < length); +} +#endif // RAPIDJSON_NEON + +RAPIDJSON_NAMESPACE_END + +#if defined(_MSC_VER) || defined(__clang__) +RAPIDJSON_DIAG_POP +#endif + +#endif // RAPIDJSON_RAPIDJSON_H_ + +// End file:writer.h + + +#ifdef __GNUC__ +RAPIDJSON_DIAG_PUSH +RAPIDJSON_DIAG_OFF(effc++) +#endif + +#if defined(__clang__) +RAPIDJSON_DIAG_PUSH +RAPIDJSON_DIAG_OFF(c++98-compat) +#endif + +RAPIDJSON_NAMESPACE_BEGIN + +//! Combination of PrettyWriter format flags. +/*! \see PrettyWriter::SetFormatOptions + */ +enum PrettyFormatOptions { + kFormatDefault = 0, //!< Default pretty formatting. + kFormatSingleLineArray = 1 //!< Format arrays on a single line. +}; + +//! Writer with indentation and spacing. +/*! + \tparam OutputStream Type of output os. + \tparam SourceEncoding Encoding of source string. + \tparam TargetEncoding Encoding of output stream. + \tparam StackAllocator Type of allocator for allocating memory of stack. +*/ +template<typename OutputStream, typename SourceEncoding = UTF8<>, typename TargetEncoding = UTF8<>, typename StackAllocator = CrtAllocator, unsigned writeFlags = kWriteDefaultFlags> +class PrettyWriter : public Writer<OutputStream, SourceEncoding, TargetEncoding, StackAllocator, writeFlags> { +public: + typedef Writer<OutputStream, SourceEncoding, TargetEncoding, StackAllocator, writeFlags> Base; + typedef typename Base::Ch Ch; + + //! Constructor + /*! \param os Output stream. + \param allocator User supplied allocator. If it is null, it will create a private one. + \param levelDepth Initial capacity of stack. + */ + explicit PrettyWriter(OutputStream& os, StackAllocator* allocator = 0, size_t levelDepth = Base::kDefaultLevelDepth) : + Base(os, allocator, levelDepth), indentChar_(' '), indentCharCount_(4), formatOptions_(kFormatDefault) {} + + + explicit PrettyWriter(StackAllocator* allocator = 0, size_t levelDepth = Base::kDefaultLevelDepth) : + Base(allocator, levelDepth), indentChar_(' '), indentCharCount_(4) {} + +#if RAPIDJSON_HAS_CXX11_RVALUE_REFS + PrettyWriter(PrettyWriter&& rhs) : + Base(std::forward<PrettyWriter>(rhs)), indentChar_(rhs.indentChar_), indentCharCount_(rhs.indentCharCount_), formatOptions_(rhs.formatOptions_) {} +#endif + + //! Set custom indentation. + /*! \param indentChar Character for indentation. Must be whitespace character (' ', '\\t', '\\n', '\\r'). + \param indentCharCount Number of indent characters for each indentation level. + \note The default indentation is 4 spaces. + */ + PrettyWriter& SetIndent(Ch indentChar, unsigned indentCharCount) { + RAPIDJSON_ASSERT(indentChar == ' ' || indentChar == '\t' || indentChar == '\n' || indentChar == '\r'); + indentChar_ = indentChar; + indentCharCount_ = indentCharCount; + return *this; + } + + //! Set pretty writer formatting options. + /*! \param options Formatting options. + */ + PrettyWriter& SetFormatOptions(PrettyFormatOptions options) { + formatOptions_ = options; + return *this; + } + + /*! @name Implementation of Handler + \see Handler + */ + //@{ + + bool Null() { PrettyPrefix(kNullType); return Base::EndValue(Base::WriteNull()); } + bool Bool(bool b) { PrettyPrefix(b ? kTrueType : kFalseType); return Base::EndValue(Base::WriteBool(b)); } + bool Int(int i) { PrettyPrefix(kNumberType); return Base::EndValue(Base::WriteInt(i)); } + bool Uint(unsigned u) { PrettyPrefix(kNumberType); return Base::EndValue(Base::WriteUint(u)); } + bool Int64(int64_t i64) { PrettyPrefix(kNumberType); return Base::EndValue(Base::WriteInt64(i64)); } + bool Uint64(uint64_t u64) { PrettyPrefix(kNumberType); return Base::EndValue(Base::WriteUint64(u64)); } + bool Double(double d) { PrettyPrefix(kNumberType); return Base::EndValue(Base::WriteDouble(d)); } + + bool RawNumber(const Ch* str, SizeType length, bool copy = false) { + RAPIDJSON_ASSERT(str != 0); + (void)copy; + PrettyPrefix(kNumberType); + return Base::EndValue(Base::WriteString(str, length)); + } + + bool String(const Ch* str, SizeType length, bool copy = false) { + RAPIDJSON_ASSERT(str != 0); + (void)copy; + PrettyPrefix(kStringType); + return Base::EndValue(Base::WriteString(str, length)); + } + +#if RAPIDJSON_HAS_STDSTRING + bool String(const std::basic_string<Ch>& str) { + return String(str.data(), SizeType(str.size())); + } +#endif + + bool StartObject() { + PrettyPrefix(kObjectType); + new (Base::level_stack_.template Push<typename Base::Level>()) typename Base::Level(false); + return Base::WriteStartObject(); + } + + bool Key(const Ch* str, SizeType length, bool copy = false) { return String(str, length, copy); } + +#if RAPIDJSON_HAS_STDSTRING + bool Key(const std::basic_string<Ch>& str) { + return Key(str.data(), SizeType(str.size())); + } +#endif + + bool EndObject(SizeType memberCount = 0) { + (void)memberCount; + RAPIDJSON_ASSERT(Base::level_stack_.GetSize() >= sizeof(typename Base::Level)); // not inside an Object + RAPIDJSON_ASSERT(!Base::level_stack_.template Top<typename Base::Level>()->inArray); // currently inside an Array, not Object + RAPIDJSON_ASSERT(0 == Base::level_stack_.template Top<typename Base::Level>()->valueCount % 2); // Object has a Key without a Value + + bool empty = Base::level_stack_.template Pop<typename Base::Level>(1)->valueCount == 0; + + if (!empty) { + Base::os_->Put('\n'); + WriteIndent(); + } + bool ret = Base::EndValue(Base::WriteEndObject()); + (void)ret; + RAPIDJSON_ASSERT(ret == true); + if (Base::level_stack_.Empty()) // end of json text + Base::Flush(); + return true; + } + + bool StartArray() { + PrettyPrefix(kArrayType); + new (Base::level_stack_.template Push<typename Base::Level>()) typename Base::Level(true); + return Base::WriteStartArray(); + } + + bool EndArray(SizeType memberCount = 0) { + (void)memberCount; + RAPIDJSON_ASSERT(Base::level_stack_.GetSize() >= sizeof(typename Base::Level)); + RAPIDJSON_ASSERT(Base::level_stack_.template Top<typename Base::Level>()->inArray); + bool empty = Base::level_stack_.template Pop<typename Base::Level>(1)->valueCount == 0; + + if (!empty && !(formatOptions_ & kFormatSingleLineArray)) { + Base::os_->Put('\n'); + WriteIndent(); + } + bool ret = Base::EndValue(Base::WriteEndArray()); + (void)ret; + RAPIDJSON_ASSERT(ret == true); + if (Base::level_stack_.Empty()) // end of json text + Base::Flush(); + return true; + } + + //@} + + /*! @name Convenience extensions */ + //@{ + + //! Simpler but slower overload. + bool String(const Ch* str) { return String(str, internal::StrLen(str)); } + bool Key(const Ch* str) { return Key(str, internal::StrLen(str)); } + + //@} + + //! Write a raw JSON value. + /*! + For user to write a stringified JSON as a value. + + \param json A well-formed JSON value. It should not contain null character within [0, length - 1] range. + \param length Length of the json. + \param type Type of the root of json. + \note When using PrettyWriter::RawValue(), the result json may not be indented correctly. + */ + bool RawValue(const Ch* json, size_t length, Type type) { + RAPIDJSON_ASSERT(json != 0); + PrettyPrefix(type); + return Base::EndValue(Base::WriteRawValue(json, length)); + } + +protected: + void PrettyPrefix(Type type) { + (void)type; + if (Base::level_stack_.GetSize() != 0) { // this value is not at root + typename Base::Level* level = Base::level_stack_.template Top<typename Base::Level>(); + + if (level->inArray) { + if (level->valueCount > 0) { + Base::os_->Put(','); // add comma if it is not the first element in array + if (formatOptions_ & kFormatSingleLineArray) + Base::os_->Put(' '); + } + + if (!(formatOptions_ & kFormatSingleLineArray)) { + Base::os_->Put('\n'); + WriteIndent(); + } + } + else { // in object + if (level->valueCount > 0) { + if (level->valueCount % 2 == 0) { + Base::os_->Put(','); + Base::os_->Put('\n'); + } + else { + Base::os_->Put(':'); + Base::os_->Put(' '); + } + } + else + Base::os_->Put('\n'); + + if (level->valueCount % 2 == 0) + WriteIndent(); + } + if (!level->inArray && level->valueCount % 2 == 0) + RAPIDJSON_ASSERT(type == kStringType); // if it's in object, then even number should be a name + level->valueCount++; + } + else { + RAPIDJSON_ASSERT(!Base::hasRoot_); // Should only has one and only one root. + Base::hasRoot_ = true; + } + } + + void WriteIndent() { + size_t count = (Base::level_stack_.GetSize() / sizeof(typename Base::Level)) * indentCharCount_; + PutN(*Base::os_, static_cast<typename OutputStream::Ch>(indentChar_), count); + } + + Ch indentChar_; + unsigned indentCharCount_; + PrettyFormatOptions formatOptions_; + +private: + // Prohibit copy constructor & assignment operator. + PrettyWriter(const PrettyWriter&); + PrettyWriter& operator=(const PrettyWriter&); +}; + +RAPIDJSON_NAMESPACE_END + +#if defined(__clang__) +RAPIDJSON_DIAG_POP +#endif + +#ifdef __GNUC__ +RAPIDJSON_DIAG_POP +#endif + +#endif // RAPIDJSON_RAPIDJSON_H_ + +// End file:prettywriter.h + + +// Begin file: reader.h +// already included +// End file:reader.h + + +// Begin file: schema.h +// Tencent is pleased to support the open source community by making RapidJSON available-> +// +// Copyright (C) 2015 THL A29 Limited, a Tencent company, and Milo Yip-> All rights reserved-> +// +// Licensed under the MIT License (the "License"); you may not use this file except +// in compliance with the License-> You may obtain a copy of the License at +// +// http://opensource->org/licenses/MIT +// +// Unless required by applicable law or agreed to in writing, software distributed +// under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR +// CONDITIONS OF ANY KIND, either express or implied-> See the License for the +// specific language governing permissions and limitations under the License-> + +#ifndef RAPIDJSON_SCHEMA_H_ +#define RAPIDJSON_SCHEMA_H_ + + +// Begin file: document.h +// already included +// End file:document.h + + +// Begin file: pointer.h +// already included +// End file:pointer.h + + +// Begin file: stringbuffer.h +// already included +// End file:stringbuffer.h + +#include <cmath> // abs, floor + +#if !defined(RAPIDJSON_SCHEMA_USE_INTERNALREGEX) +#define RAPIDJSON_SCHEMA_USE_INTERNALREGEX 1 +#else +#define RAPIDJSON_SCHEMA_USE_INTERNALREGEX 0 +#endif + +#if !RAPIDJSON_SCHEMA_USE_INTERNALREGEX && defined(RAPIDJSON_SCHEMA_USE_STDREGEX) && (__cplusplus >=201103L || (defined(_MSC_VER) && _MSC_VER >= 1800)) +#define RAPIDJSON_SCHEMA_USE_STDREGEX 1 +#else +#define RAPIDJSON_SCHEMA_USE_STDREGEX 0 +#endif + +#if RAPIDJSON_SCHEMA_USE_INTERNALREGEX + +// Begin file: internal/regex.h +// Tencent is pleased to support the open source community by making RapidJSON available. +// +// Copyright (C) 2015 THL A29 Limited, a Tencent company, and Milo Yip. All rights reserved. +// +// Licensed under the MIT License (the "License"); you may not use this file except +// in compliance with the License. You may obtain a copy of the License at +// +// http://opensource.org/licenses/MIT +// +// Unless required by applicable law or agreed to in writing, software distributed +// under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR +// CONDITIONS OF ANY KIND, either express or implied. See the License for the +// specific language governing permissions and limitations under the License. + +#ifndef RAPIDJSON_INTERNAL_REGEX_H_ +#define RAPIDJSON_INTERNAL_REGEX_H_ + + +// Begin file: ../allocators.h +// already included +// End file:../allocators.h + + +// Begin file: ../stream.h +// already included +// End file:../stream.h + + +// Begin file: stack.h +// already included +// End file:stack.h + + +#ifdef __clang__ +RAPIDJSON_DIAG_PUSH +RAPIDJSON_DIAG_OFF(padded) +RAPIDJSON_DIAG_OFF(switch-enum) +RAPIDJSON_DIAG_OFF(implicit-fallthrough) +#elif defined(_MSC_VER) +RAPIDJSON_DIAG_PUSH +RAPIDJSON_DIAG_OFF(4512) // assignment operator could not be generated +#endif + +#ifdef __GNUC__ +RAPIDJSON_DIAG_PUSH +RAPIDJSON_DIAG_OFF(effc++) +#if __GNUC__ >= 7 +RAPIDJSON_DIAG_OFF(implicit-fallthrough) +#endif +#endif + +#ifndef RAPIDJSON_REGEX_VERBOSE +#define RAPIDJSON_REGEX_VERBOSE 0 +#endif + +RAPIDJSON_NAMESPACE_BEGIN +namespace internal { + +/////////////////////////////////////////////////////////////////////////////// +// DecodedStream + +template <typename SourceStream, typename Encoding> +class DecodedStream { +public: + DecodedStream(SourceStream& ss) : ss_(ss), codepoint_() { Decode(); } + unsigned Peek() { return codepoint_; } + unsigned Take() { + unsigned c = codepoint_; + if (c) // No further decoding when '\0' + Decode(); + return c; + } + +private: + void Decode() { + if (!Encoding::Decode(ss_, &codepoint_)) + codepoint_ = 0; + } + + SourceStream& ss_; + unsigned codepoint_; +}; + +/////////////////////////////////////////////////////////////////////////////// +// GenericRegex + +static const SizeType kRegexInvalidState = ~SizeType(0); //!< Represents an invalid index in GenericRegex::State::out, out1 +static const SizeType kRegexInvalidRange = ~SizeType(0); + +template <typename Encoding, typename Allocator> +class GenericRegexSearch; + +//! Regular expression engine with subset of ECMAscript grammar. +/*! + Supported regular expression syntax: + - \c ab Concatenation + - \c a|b Alternation + - \c a? Zero or one + - \c a* Zero or more + - \c a+ One or more + - \c a{3} Exactly 3 times + - \c a{3,} At least 3 times + - \c a{3,5} 3 to 5 times + - \c (ab) Grouping + - \c ^a At the beginning + - \c a$ At the end + - \c . Any character + - \c [abc] Character classes + - \c [a-c] Character class range + - \c [a-z0-9_] Character class combination + - \c [^abc] Negated character classes + - \c [^a-c] Negated character class range + - \c [\b] Backspace (U+0008) + - \c \\| \\\\ ... Escape characters + - \c \\f Form feed (U+000C) + - \c \\n Line feed (U+000A) + - \c \\r Carriage return (U+000D) + - \c \\t Tab (U+0009) + - \c \\v Vertical tab (U+000B) + + \note This is a Thompson NFA engine, implemented with reference to + Cox, Russ. "Regular Expression Matching Can Be Simple And Fast (but is slow in Java, Perl, PHP, Python, Ruby,...).", + https://swtch.com/~rsc/regexp/regexp1.html +*/ +template <typename Encoding, typename Allocator = CrtAllocator> +class GenericRegex { +public: + typedef Encoding EncodingType; + typedef typename Encoding::Ch Ch; + template <typename, typename> friend class GenericRegexSearch; + + GenericRegex(const Ch* source, Allocator* allocator = 0) : + ownAllocator_(allocator ? 0 : RAPIDJSON_NEW(Allocator)()), allocator_(allocator ? allocator : ownAllocator_), + states_(allocator_, 256), ranges_(allocator_, 256), root_(kRegexInvalidState), stateCount_(), rangeCount_(), + anchorBegin_(), anchorEnd_() + { + GenericStringStream<Encoding> ss(source); + DecodedStream<GenericStringStream<Encoding>, Encoding> ds(ss); + Parse(ds); + } + + ~GenericRegex() + { + RAPIDJSON_DELETE(ownAllocator_); + } + + bool IsValid() const { + return root_ != kRegexInvalidState; + } + +private: + enum Operator { + kZeroOrOne, + kZeroOrMore, + kOneOrMore, + kConcatenation, + kAlternation, + kLeftParenthesis + }; + + static const unsigned kAnyCharacterClass = 0xFFFFFFFF; //!< For '.' + static const unsigned kRangeCharacterClass = 0xFFFFFFFE; + static const unsigned kRangeNegationFlag = 0x80000000; + + struct Range { + unsigned start; // + unsigned end; + SizeType next; + }; + + struct State { + SizeType out; //!< Equals to kInvalid for matching state + SizeType out1; //!< Equals to non-kInvalid for split + SizeType rangeStart; + unsigned codepoint; + }; + + struct Frag { + Frag(SizeType s, SizeType o, SizeType m) : start(s), out(o), minIndex(m) {} + SizeType start; + SizeType out; //!< link-list of all output states + SizeType minIndex; + }; + + State& GetState(SizeType index) { + RAPIDJSON_ASSERT(index < stateCount_); + return states_.template Bottom<State>()[index]; + } + + const State& GetState(SizeType index) const { + RAPIDJSON_ASSERT(index < stateCount_); + return states_.template Bottom<State>()[index]; + } + + Range& GetRange(SizeType index) { + RAPIDJSON_ASSERT(index < rangeCount_); + return ranges_.template Bottom<Range>()[index]; + } + + const Range& GetRange(SizeType index) const { + RAPIDJSON_ASSERT(index < rangeCount_); + return ranges_.template Bottom<Range>()[index]; + } + + template <typename InputStream> + void Parse(DecodedStream<InputStream, Encoding>& ds) { + Stack<Allocator> operandStack(allocator_, 256); // Frag + Stack<Allocator> operatorStack(allocator_, 256); // Operator + Stack<Allocator> atomCountStack(allocator_, 256); // unsigned (Atom per parenthesis) + + *atomCountStack.template Push<unsigned>() = 0; + + unsigned codepoint; + while (ds.Peek() != 0) { + switch (codepoint = ds.Take()) { + case '^': + anchorBegin_ = true; + break; + + case '$': + anchorEnd_ = true; + break; + + case '|': + while (!operatorStack.Empty() && *operatorStack.template Top<Operator>() < kAlternation) + if (!Eval(operandStack, *operatorStack.template Pop<Operator>(1))) + return; + *operatorStack.template Push<Operator>() = kAlternation; + *atomCountStack.template Top<unsigned>() = 0; + break; + + case '(': + *operatorStack.template Push<Operator>() = kLeftParenthesis; + *atomCountStack.template Push<unsigned>() = 0; + break; + + case ')': + while (!operatorStack.Empty() && *operatorStack.template Top<Operator>() != kLeftParenthesis) + if (!Eval(operandStack, *operatorStack.template Pop<Operator>(1))) + return; + if (operatorStack.Empty()) + return; + operatorStack.template Pop<Operator>(1); + atomCountStack.template Pop<unsigned>(1); + ImplicitConcatenation(atomCountStack, operatorStack); + break; + + case '?': + if (!Eval(operandStack, kZeroOrOne)) + return; + break; + + case '*': + if (!Eval(operandStack, kZeroOrMore)) + return; + break; + + case '+': + if (!Eval(operandStack, kOneOrMore)) + return; + break; + + case '{': + { + unsigned n, m; + if (!ParseUnsigned(ds, &n)) + return; + + if (ds.Peek() == ',') { + ds.Take(); + if (ds.Peek() == '}') + m = kInfinityQuantifier; + else if (!ParseUnsigned(ds, &m) || m < n) + return; + } + else + m = n; + + if (!EvalQuantifier(operandStack, n, m) || ds.Peek() != '}') + return; + ds.Take(); + } + break; + + case '.': + PushOperand(operandStack, kAnyCharacterClass); + ImplicitConcatenation(atomCountStack, operatorStack); + break; + + case '[': + { + SizeType range; + if (!ParseRange(ds, &range)) + return; + SizeType s = NewState(kRegexInvalidState, kRegexInvalidState, kRangeCharacterClass); + GetState(s).rangeStart = range; + *operandStack.template Push<Frag>() = Frag(s, s, s); + } + ImplicitConcatenation(atomCountStack, operatorStack); + break; + + case '\\': // Escape character + if (!CharacterEscape(ds, &codepoint)) + return; // Unsupported escape character + // fall through to default + + default: // Pattern character + PushOperand(operandStack, codepoint); + ImplicitConcatenation(atomCountStack, operatorStack); + } + } + + while (!operatorStack.Empty()) + if (!Eval(operandStack, *operatorStack.template Pop<Operator>(1))) + return; + + // Link the operand to matching state. + if (operandStack.GetSize() == sizeof(Frag)) { + Frag* e = operandStack.template Pop<Frag>(1); + Patch(e->out, NewState(kRegexInvalidState, kRegexInvalidState, 0)); + root_ = e->start; + +#if RAPIDJSON_REGEX_VERBOSE + printf("root: %d\n", root_); + for (SizeType i = 0; i < stateCount_ ; i++) { + State& s = GetState(i); + printf("[%2d] out: %2d out1: %2d c: '%c'\n", i, s.out, s.out1, (char)s.codepoint); + } + printf("\n"); +#endif + } + } + + SizeType NewState(SizeType out, SizeType out1, unsigned codepoint) { + State* s = states_.template Push<State>(); + s->out = out; + s->out1 = out1; + s->codepoint = codepoint; + s->rangeStart = kRegexInvalidRange; + return stateCount_++; + } + + void PushOperand(Stack<Allocator>& operandStack, unsigned codepoint) { + SizeType s = NewState(kRegexInvalidState, kRegexInvalidState, codepoint); + *operandStack.template Push<Frag>() = Frag(s, s, s); + } + + void ImplicitConcatenation(Stack<Allocator>& atomCountStack, Stack<Allocator>& operatorStack) { + if (*atomCountStack.template Top<unsigned>()) + *operatorStack.template Push<Operator>() = kConcatenation; + (*atomCountStack.template Top<unsigned>())++; + } + + SizeType Append(SizeType l1, SizeType l2) { + SizeType old = l1; + while (GetState(l1).out != kRegexInvalidState) + l1 = GetState(l1).out; + GetState(l1).out = l2; + return old; + } + + void Patch(SizeType l, SizeType s) { + for (SizeType next; l != kRegexInvalidState; l = next) { + next = GetState(l).out; + GetState(l).out = s; + } + } + + bool Eval(Stack<Allocator>& operandStack, Operator op) { + switch (op) { + case kConcatenation: + RAPIDJSON_ASSERT(operandStack.GetSize() >= sizeof(Frag) * 2); + { + Frag e2 = *operandStack.template Pop<Frag>(1); + Frag e1 = *operandStack.template Pop<Frag>(1); + Patch(e1.out, e2.start); + *operandStack.template Push<Frag>() = Frag(e1.start, e2.out, Min(e1.minIndex, e2.minIndex)); + } + return true; + + case kAlternation: + if (operandStack.GetSize() >= sizeof(Frag) * 2) { + Frag e2 = *operandStack.template Pop<Frag>(1); + Frag e1 = *operandStack.template Pop<Frag>(1); + SizeType s = NewState(e1.start, e2.start, 0); + *operandStack.template Push<Frag>() = Frag(s, Append(e1.out, e2.out), Min(e1.minIndex, e2.minIndex)); + return true; + } + return false; + + case kZeroOrOne: + if (operandStack.GetSize() >= sizeof(Frag)) { + Frag e = *operandStack.template Pop<Frag>(1); + SizeType s = NewState(kRegexInvalidState, e.start, 0); + *operandStack.template Push<Frag>() = Frag(s, Append(e.out, s), e.minIndex); + return true; + } + return false; + + case kZeroOrMore: + if (operandStack.GetSize() >= sizeof(Frag)) { + Frag e = *operandStack.template Pop<Frag>(1); + SizeType s = NewState(kRegexInvalidState, e.start, 0); + Patch(e.out, s); + *operandStack.template Push<Frag>() = Frag(s, s, e.minIndex); + return true; + } + return false; + + case kOneOrMore: + if (operandStack.GetSize() >= sizeof(Frag)) { + Frag e = *operandStack.template Pop<Frag>(1); + SizeType s = NewState(kRegexInvalidState, e.start, 0); + Patch(e.out, s); + *operandStack.template Push<Frag>() = Frag(e.start, s, e.minIndex); + return true; + } + return false; + + default: + // syntax error (e.g. unclosed kLeftParenthesis) + return false; + } + } + + bool EvalQuantifier(Stack<Allocator>& operandStack, unsigned n, unsigned m) { + RAPIDJSON_ASSERT(n <= m); + RAPIDJSON_ASSERT(operandStack.GetSize() >= sizeof(Frag)); + + if (n == 0) { + if (m == 0) // a{0} not support + return false; + else if (m == kInfinityQuantifier) + Eval(operandStack, kZeroOrMore); // a{0,} -> a* + else { + Eval(operandStack, kZeroOrOne); // a{0,5} -> a? + for (unsigned i = 0; i < m - 1; i++) + CloneTopOperand(operandStack); // a{0,5} -> a? a? a? a? a? + for (unsigned i = 0; i < m - 1; i++) + Eval(operandStack, kConcatenation); // a{0,5} -> a?a?a?a?a? + } + return true; + } + + for (unsigned i = 0; i < n - 1; i++) // a{3} -> a a a + CloneTopOperand(operandStack); + + if (m == kInfinityQuantifier) + Eval(operandStack, kOneOrMore); // a{3,} -> a a a+ + else if (m > n) { + CloneTopOperand(operandStack); // a{3,5} -> a a a a + Eval(operandStack, kZeroOrOne); // a{3,5} -> a a a a? + for (unsigned i = n; i < m - 1; i++) + CloneTopOperand(operandStack); // a{3,5} -> a a a a? a? + for (unsigned i = n; i < m; i++) + Eval(operandStack, kConcatenation); // a{3,5} -> a a aa?a? + } + + for (unsigned i = 0; i < n - 1; i++) + Eval(operandStack, kConcatenation); // a{3} -> aaa, a{3,} -> aaa+, a{3.5} -> aaaa?a? + + return true; + } + + static SizeType Min(SizeType a, SizeType b) { return a < b ? a : b; } + + void CloneTopOperand(Stack<Allocator>& operandStack) { + const Frag src = *operandStack.template Top<Frag>(); // Copy constructor to prevent invalidation + SizeType count = stateCount_ - src.minIndex; // Assumes top operand contains states in [src->minIndex, stateCount_) + State* s = states_.template Push<State>(count); + memcpy(s, &GetState(src.minIndex), count * sizeof(State)); + for (SizeType j = 0; j < count; j++) { + if (s[j].out != kRegexInvalidState) + s[j].out += count; + if (s[j].out1 != kRegexInvalidState) + s[j].out1 += count; + } + *operandStack.template Push<Frag>() = Frag(src.start + count, src.out + count, src.minIndex + count); + stateCount_ += count; + } + + template <typename InputStream> + bool ParseUnsigned(DecodedStream<InputStream, Encoding>& ds, unsigned* u) { + unsigned r = 0; + if (ds.Peek() < '0' || ds.Peek() > '9') + return false; + while (ds.Peek() >= '0' && ds.Peek() <= '9') { + if (r >= 429496729 && ds.Peek() > '5') // 2^32 - 1 = 4294967295 + return false; // overflow + r = r * 10 + (ds.Take() - '0'); + } + *u = r; + return true; + } + + template <typename InputStream> + bool ParseRange(DecodedStream<InputStream, Encoding>& ds, SizeType* range) { + bool isBegin = true; + bool negate = false; + int step = 0; + SizeType start = kRegexInvalidRange; + SizeType current = kRegexInvalidRange; + unsigned codepoint; + while ((codepoint = ds.Take()) != 0) { + if (isBegin) { + isBegin = false; + if (codepoint == '^') { + negate = true; + continue; + } + } + + switch (codepoint) { + case ']': + if (start == kRegexInvalidRange) + return false; // Error: nothing inside [] + if (step == 2) { // Add trailing '-' + SizeType r = NewRange('-'); + RAPIDJSON_ASSERT(current != kRegexInvalidRange); + GetRange(current).next = r; + } + if (negate) + GetRange(start).start |= kRangeNegationFlag; + *range = start; + return true; + + case '\\': + if (ds.Peek() == 'b') { + ds.Take(); + codepoint = 0x0008; // Escape backspace character + } + else if (!CharacterEscape(ds, &codepoint)) + return false; + // fall through to default + + default: + switch (step) { + case 1: + if (codepoint == '-') { + step++; + break; + } + // fall through to step 0 for other characters + + case 0: + { + SizeType r = NewRange(codepoint); + if (current != kRegexInvalidRange) + GetRange(current).next = r; + if (start == kRegexInvalidRange) + start = r; + current = r; + } + step = 1; + break; + + default: + RAPIDJSON_ASSERT(step == 2); + GetRange(current).end = codepoint; + step = 0; + } + } + } + return false; + } + + SizeType NewRange(unsigned codepoint) { + Range* r = ranges_.template Push<Range>(); + r->start = r->end = codepoint; + r->next = kRegexInvalidRange; + return rangeCount_++; + } + + template <typename InputStream> + bool CharacterEscape(DecodedStream<InputStream, Encoding>& ds, unsigned* escapedCodepoint) { + unsigned codepoint; + switch (codepoint = ds.Take()) { + case '^': + case '$': + case '|': + case '(': + case ')': + case '?': + case '*': + case '+': + case '.': + case '[': + case ']': + case '{': + case '}': + case '\\': + *escapedCodepoint = codepoint; return true; + case 'f': *escapedCodepoint = 0x000C; return true; + case 'n': *escapedCodepoint = 0x000A; return true; + case 'r': *escapedCodepoint = 0x000D; return true; + case 't': *escapedCodepoint = 0x0009; return true; + case 'v': *escapedCodepoint = 0x000B; return true; + default: + return false; // Unsupported escape character + } + } + + Allocator* ownAllocator_; + Allocator* allocator_; + Stack<Allocator> states_; + Stack<Allocator> ranges_; + SizeType root_; + SizeType stateCount_; + SizeType rangeCount_; + + static const unsigned kInfinityQuantifier = ~0u; + + // For SearchWithAnchoring() + bool anchorBegin_; + bool anchorEnd_; +}; + +template <typename RegexType, typename Allocator = CrtAllocator> +class GenericRegexSearch { +public: + typedef typename RegexType::EncodingType Encoding; + typedef typename Encoding::Ch Ch; + + GenericRegexSearch(const RegexType& regex, Allocator* allocator = 0) : + regex_(regex), allocator_(allocator), ownAllocator_(0), + state0_(allocator, 0), state1_(allocator, 0), stateSet_() + { + RAPIDJSON_ASSERT(regex_.IsValid()); + if (!allocator_) + ownAllocator_ = allocator_ = RAPIDJSON_NEW(Allocator)(); + stateSet_ = static_cast<unsigned*>(allocator_->Malloc(GetStateSetSize())); + state0_.template Reserve<SizeType>(regex_.stateCount_); + state1_.template Reserve<SizeType>(regex_.stateCount_); + } + + ~GenericRegexSearch() { + Allocator::Free(stateSet_); + RAPIDJSON_DELETE(ownAllocator_); + } + + template <typename InputStream> + bool Match(InputStream& is) { + return SearchWithAnchoring(is, true, true); + } + + bool Match(const Ch* s) { + GenericStringStream<Encoding> is(s); + return Match(is); + } + + template <typename InputStream> + bool Search(InputStream& is) { + return SearchWithAnchoring(is, regex_.anchorBegin_, regex_.anchorEnd_); + } + + bool Search(const Ch* s) { + GenericStringStream<Encoding> is(s); + return Search(is); + } + +private: + typedef typename RegexType::State State; + typedef typename RegexType::Range Range; + + template <typename InputStream> + bool SearchWithAnchoring(InputStream& is, bool anchorBegin, bool anchorEnd) { + DecodedStream<InputStream, Encoding> ds(is); + + state0_.Clear(); + Stack<Allocator> *current = &state0_, *next = &state1_; + const size_t stateSetSize = GetStateSetSize(); + std::memset(stateSet_, 0, stateSetSize); + + bool matched = AddState(*current, regex_.root_); + unsigned codepoint; + while (!current->Empty() && (codepoint = ds.Take()) != 0) { + std::memset(stateSet_, 0, stateSetSize); + next->Clear(); + matched = false; + for (const SizeType* s = current->template Bottom<SizeType>(); s != current->template End<SizeType>(); ++s) { + const State& sr = regex_.GetState(*s); + if (sr.codepoint == codepoint || + sr.codepoint == RegexType::kAnyCharacterClass || + (sr.codepoint == RegexType::kRangeCharacterClass && MatchRange(sr.rangeStart, codepoint))) + { + matched = AddState(*next, sr.out) || matched; + if (!anchorEnd && matched) + return true; + } + if (!anchorBegin) + AddState(*next, regex_.root_); + } + internal::Swap(current, next); + } + + return matched; + } + + size_t GetStateSetSize() const { + return (regex_.stateCount_ + 31) / 32 * 4; + } + + // Return whether the added states is a match state + bool AddState(Stack<Allocator>& l, SizeType index) { + RAPIDJSON_ASSERT(index != kRegexInvalidState); + + const State& s = regex_.GetState(index); + if (s.out1 != kRegexInvalidState) { // Split + bool matched = AddState(l, s.out); + return AddState(l, s.out1) || matched; + } + else if (!(stateSet_[index >> 5] & (1u << (index & 31)))) { + stateSet_[index >> 5] |= (1u << (index & 31)); + *l.template PushUnsafe<SizeType>() = index; + } + return s.out == kRegexInvalidState; // by using PushUnsafe() above, we can ensure s is not validated due to reallocation. + } + + bool MatchRange(SizeType rangeIndex, unsigned codepoint) const { + bool yes = (regex_.GetRange(rangeIndex).start & RegexType::kRangeNegationFlag) == 0; + while (rangeIndex != kRegexInvalidRange) { + const Range& r = regex_.GetRange(rangeIndex); + if (codepoint >= (r.start & ~RegexType::kRangeNegationFlag) && codepoint <= r.end) + return yes; + rangeIndex = r.next; + } + return !yes; + } + + const RegexType& regex_; + Allocator* allocator_; + Allocator* ownAllocator_; + Stack<Allocator> state0_; + Stack<Allocator> state1_; + uint32_t* stateSet_; +}; + +typedef GenericRegex<UTF8<> > Regex; +typedef GenericRegexSearch<Regex> RegexSearch; + +} // namespace internal +RAPIDJSON_NAMESPACE_END + +#ifdef __GNUC__ +RAPIDJSON_DIAG_POP +#endif + +#if defined(__clang__) || defined(_MSC_VER) +RAPIDJSON_DIAG_POP +#endif + +#endif // RAPIDJSON_INTERNAL_REGEX_H_ + +// End file:internal/regex.h + +#elif RAPIDJSON_SCHEMA_USE_STDREGEX +#include <regex> +#endif + +#if RAPIDJSON_SCHEMA_USE_INTERNALREGEX || RAPIDJSON_SCHEMA_USE_STDREGEX +#define RAPIDJSON_SCHEMA_HAS_REGEX 1 +#else +#define RAPIDJSON_SCHEMA_HAS_REGEX 0 +#endif + +#ifndef RAPIDJSON_SCHEMA_VERBOSE +#define RAPIDJSON_SCHEMA_VERBOSE 0 +#endif + +#if RAPIDJSON_SCHEMA_VERBOSE + +// Begin file: stringbuffer.h +// already included +// End file:stringbuffer.h + +#endif + +RAPIDJSON_DIAG_PUSH + +#if defined(__GNUC__) +RAPIDJSON_DIAG_OFF(effc++) +#endif + +#ifdef __clang__ +RAPIDJSON_DIAG_OFF(weak-vtables) +RAPIDJSON_DIAG_OFF(exit-time-destructors) +RAPIDJSON_DIAG_OFF(c++98-compat-pedantic) +RAPIDJSON_DIAG_OFF(variadic-macros) +#elif defined(_MSC_VER) +RAPIDJSON_DIAG_OFF(4512) // assignment operator could not be generated +#endif + +RAPIDJSON_NAMESPACE_BEGIN + +/////////////////////////////////////////////////////////////////////////////// +// Verbose Utilities + +#if RAPIDJSON_SCHEMA_VERBOSE + +namespace internal { + +inline void PrintInvalidKeyword(const char* keyword) { + printf("Fail keyword: %s\n", keyword); +} + +inline void PrintInvalidKeyword(const wchar_t* keyword) { + wprintf(L"Fail keyword: %ls\n", keyword); +} + +inline void PrintInvalidDocument(const char* document) { + printf("Fail document: %s\n\n", document); +} + +inline void PrintInvalidDocument(const wchar_t* document) { + wprintf(L"Fail document: %ls\n\n", document); +} + +inline void PrintValidatorPointers(unsigned depth, const char* s, const char* d) { + printf("S: %*s%s\nD: %*s%s\n\n", depth * 4, " ", s, depth * 4, " ", d); +} + +inline void PrintValidatorPointers(unsigned depth, const wchar_t* s, const wchar_t* d) { + wprintf(L"S: %*ls%ls\nD: %*ls%ls\n\n", depth * 4, L" ", s, depth * 4, L" ", d); +} + +} // namespace internal + +#endif // RAPIDJSON_SCHEMA_VERBOSE + +/////////////////////////////////////////////////////////////////////////////// +// RAPIDJSON_INVALID_KEYWORD_RETURN + +#if RAPIDJSON_SCHEMA_VERBOSE +#define RAPIDJSON_INVALID_KEYWORD_VERBOSE(keyword) internal::PrintInvalidKeyword(keyword) +#else +#define RAPIDJSON_INVALID_KEYWORD_VERBOSE(keyword) +#endif + +#define RAPIDJSON_INVALID_KEYWORD_RETURN(keyword)\ +RAPIDJSON_MULTILINEMACRO_BEGIN\ + context.invalidKeyword = keyword.GetString();\ + RAPIDJSON_INVALID_KEYWORD_VERBOSE(keyword.GetString());\ + return false;\ +RAPIDJSON_MULTILINEMACRO_END + +/////////////////////////////////////////////////////////////////////////////// +// Forward declarations + +template <typename ValueType, typename Allocator> +class GenericSchemaDocument; + +namespace internal { + +template <typename SchemaDocumentType> +class Schema; + +/////////////////////////////////////////////////////////////////////////////// +// ISchemaValidator + +class ISchemaValidator { +public: + virtual ~ISchemaValidator() {} + virtual bool IsValid() const = 0; +}; + +/////////////////////////////////////////////////////////////////////////////// +// ISchemaStateFactory + +template <typename SchemaType> +class ISchemaStateFactory { +public: + virtual ~ISchemaStateFactory() {} + virtual ISchemaValidator* CreateSchemaValidator(const SchemaType&) = 0; + virtual void DestroySchemaValidator(ISchemaValidator* validator) = 0; + virtual void* CreateHasher() = 0; + virtual uint64_t GetHashCode(void* hasher) = 0; + virtual void DestroryHasher(void* hasher) = 0; + virtual void* MallocState(size_t size) = 0; + virtual void FreeState(void* p) = 0; +}; + +/////////////////////////////////////////////////////////////////////////////// +// IValidationErrorHandler + +template <typename SchemaType> +class IValidationErrorHandler { +public: + typedef typename SchemaType::Ch Ch; + typedef typename SchemaType::SValue SValue; + + virtual ~IValidationErrorHandler() {} + + virtual void NotMultipleOf(int64_t actual, const SValue& expected) = 0; + virtual void NotMultipleOf(uint64_t actual, const SValue& expected) = 0; + virtual void NotMultipleOf(double actual, const SValue& expected) = 0; + virtual void AboveMaximum(int64_t actual, const SValue& expected, bool exclusive) = 0; + virtual void AboveMaximum(uint64_t actual, const SValue& expected, bool exclusive) = 0; + virtual void AboveMaximum(double actual, const SValue& expected, bool exclusive) = 0; + virtual void BelowMinimum(int64_t actual, const SValue& expected, bool exclusive) = 0; + virtual void BelowMinimum(uint64_t actual, const SValue& expected, bool exclusive) = 0; + virtual void BelowMinimum(double actual, const SValue& expected, bool exclusive) = 0; + + virtual void TooLong(const Ch* str, SizeType length, SizeType expected) = 0; + virtual void TooShort(const Ch* str, SizeType length, SizeType expected) = 0; + virtual void DoesNotMatch(const Ch* str, SizeType length) = 0; + + virtual void DisallowedItem(SizeType index) = 0; + virtual void TooFewItems(SizeType actualCount, SizeType expectedCount) = 0; + virtual void TooManyItems(SizeType actualCount, SizeType expectedCount) = 0; + virtual void DuplicateItems(SizeType index1, SizeType index2) = 0; + + virtual void TooManyProperties(SizeType actualCount, SizeType expectedCount) = 0; + virtual void TooFewProperties(SizeType actualCount, SizeType expectedCount) = 0; + virtual void StartMissingProperties() = 0; + virtual void AddMissingProperty(const SValue& name) = 0; + virtual bool EndMissingProperties() = 0; + virtual void PropertyViolations(ISchemaValidator** subvalidators, SizeType count) = 0; + virtual void DisallowedProperty(const Ch* name, SizeType length) = 0; + + virtual void StartDependencyErrors() = 0; + virtual void StartMissingDependentProperties() = 0; + virtual void AddMissingDependentProperty(const SValue& targetName) = 0; + virtual void EndMissingDependentProperties(const SValue& sourceName) = 0; + virtual void AddDependencySchemaError(const SValue& souceName, ISchemaValidator* subvalidator) = 0; + virtual bool EndDependencyErrors() = 0; + + virtual void DisallowedValue() = 0; + virtual void StartDisallowedType() = 0; + virtual void AddExpectedType(const typename SchemaType::ValueType& expectedType) = 0; + virtual void EndDisallowedType(const typename SchemaType::ValueType& actualType) = 0; + virtual void NotAllOf(ISchemaValidator** subvalidators, SizeType count) = 0; + virtual void NoneOf(ISchemaValidator** subvalidators, SizeType count) = 0; + virtual void NotOneOf(ISchemaValidator** subvalidators, SizeType count) = 0; + virtual void Disallowed() = 0; +}; + + +/////////////////////////////////////////////////////////////////////////////// +// Hasher + +// For comparison of compound value +template<typename Encoding, typename Allocator> +class Hasher { +public: + typedef typename Encoding::Ch Ch; + + Hasher(Allocator* allocator = 0, size_t stackCapacity = kDefaultSize) : stack_(allocator, stackCapacity) {} + + bool Null() { return WriteType(kNullType); } + bool Bool(bool b) { return WriteType(b ? kTrueType : kFalseType); } + bool Int(int i) { Number n; n.u.i = i; n.d = static_cast<double>(i); return WriteNumber(n); } + bool Uint(unsigned u) { Number n; n.u.u = u; n.d = static_cast<double>(u); return WriteNumber(n); } + bool Int64(int64_t i) { Number n; n.u.i = i; n.d = static_cast<double>(i); return WriteNumber(n); } + bool Uint64(uint64_t u) { Number n; n.u.u = u; n.d = static_cast<double>(u); return WriteNumber(n); } + bool Double(double d) { + Number n; + if (d < 0) n.u.i = static_cast<int64_t>(d); + else n.u.u = static_cast<uint64_t>(d); + n.d = d; + return WriteNumber(n); + } + + bool RawNumber(const Ch* str, SizeType len, bool) { + WriteBuffer(kNumberType, str, len * sizeof(Ch)); + return true; + } + + bool String(const Ch* str, SizeType len, bool) { + WriteBuffer(kStringType, str, len * sizeof(Ch)); + return true; + } + + bool StartObject() { return true; } + bool Key(const Ch* str, SizeType len, bool copy) { return String(str, len, copy); } + bool EndObject(SizeType memberCount) { + uint64_t h = Hash(0, kObjectType); + uint64_t* kv = stack_.template Pop<uint64_t>(memberCount * 2); + for (SizeType i = 0; i < memberCount; i++) + h ^= Hash(kv[i * 2], kv[i * 2 + 1]); // Use xor to achieve member order insensitive + *stack_.template Push<uint64_t>() = h; + return true; + } + + bool StartArray() { return true; } + bool EndArray(SizeType elementCount) { + uint64_t h = Hash(0, kArrayType); + uint64_t* e = stack_.template Pop<uint64_t>(elementCount); + for (SizeType i = 0; i < elementCount; i++) + h = Hash(h, e[i]); // Use hash to achieve element order sensitive + *stack_.template Push<uint64_t>() = h; + return true; + } + + bool IsValid() const { return stack_.GetSize() == sizeof(uint64_t); } + + uint64_t GetHashCode() const { + RAPIDJSON_ASSERT(IsValid()); + return *stack_.template Top<uint64_t>(); + } + +private: + static const size_t kDefaultSize = 256; + struct Number { + union U { + uint64_t u; + int64_t i; + }u; + double d; + }; + + bool WriteType(Type type) { return WriteBuffer(type, 0, 0); } + + bool WriteNumber(const Number& n) { return WriteBuffer(kNumberType, &n, sizeof(n)); } + + bool WriteBuffer(Type type, const void* data, size_t len) { + // FNV-1a from http://isthe.com/chongo/tech/comp/fnv/ + uint64_t h = Hash(RAPIDJSON_UINT64_C2(0x84222325, 0xcbf29ce4), type); + const unsigned char* d = static_cast<const unsigned char*>(data); + for (size_t i = 0; i < len; i++) + h = Hash(h, d[i]); + *stack_.template Push<uint64_t>() = h; + return true; + } + + static uint64_t Hash(uint64_t h, uint64_t d) { + static const uint64_t kPrime = RAPIDJSON_UINT64_C2(0x00000100, 0x000001b3); + h ^= d; + h *= kPrime; + return h; + } + + Stack<Allocator> stack_; +}; + +/////////////////////////////////////////////////////////////////////////////// +// SchemaValidationContext + +template <typename SchemaDocumentType> +struct SchemaValidationContext { + typedef Schema<SchemaDocumentType> SchemaType; + typedef ISchemaStateFactory<SchemaType> SchemaValidatorFactoryType; + typedef IValidationErrorHandler<SchemaType> ErrorHandlerType; + typedef typename SchemaType::ValueType ValueType; + typedef typename ValueType::Ch Ch; + + enum PatternValidatorType { + kPatternValidatorOnly, + kPatternValidatorWithProperty, + kPatternValidatorWithAdditionalProperty + }; + + SchemaValidationContext(SchemaValidatorFactoryType& f, ErrorHandlerType& eh, const SchemaType* s) : + factory(f), + error_handler(eh), + schema(s), + valueSchema(), + invalidKeyword(), + hasher(), + arrayElementHashCodes(), + validators(), + validatorCount(), + patternPropertiesValidators(), + patternPropertiesValidatorCount(), + patternPropertiesSchemas(), + patternPropertiesSchemaCount(), + valuePatternValidatorType(kPatternValidatorOnly), + propertyExist(), + inArray(false), + valueUniqueness(false), + arrayUniqueness(false) + { + } + + ~SchemaValidationContext() { + if (hasher) + factory.DestroryHasher(hasher); + if (validators) { + for (SizeType i = 0; i < validatorCount; i++) + factory.DestroySchemaValidator(validators[i]); + factory.FreeState(validators); + } + if (patternPropertiesValidators) { + for (SizeType i = 0; i < patternPropertiesValidatorCount; i++) + factory.DestroySchemaValidator(patternPropertiesValidators[i]); + factory.FreeState(patternPropertiesValidators); + } + if (patternPropertiesSchemas) + factory.FreeState(patternPropertiesSchemas); + if (propertyExist) + factory.FreeState(propertyExist); + } + + SchemaValidatorFactoryType& factory; + ErrorHandlerType& error_handler; + const SchemaType* schema; + const SchemaType* valueSchema; + const Ch* invalidKeyword; + void* hasher; // Only validator access + void* arrayElementHashCodes; // Only validator access this + ISchemaValidator** validators; + SizeType validatorCount; + ISchemaValidator** patternPropertiesValidators; + SizeType patternPropertiesValidatorCount; + const SchemaType** patternPropertiesSchemas; + SizeType patternPropertiesSchemaCount; + PatternValidatorType valuePatternValidatorType; + PatternValidatorType objectPatternValidatorType; + SizeType arrayElementIndex; + bool* propertyExist; + bool inArray; + bool valueUniqueness; + bool arrayUniqueness; +}; + +/////////////////////////////////////////////////////////////////////////////// +// Schema + +template <typename SchemaDocumentType> +class Schema { +public: + typedef typename SchemaDocumentType::ValueType ValueType; + typedef typename SchemaDocumentType::AllocatorType AllocatorType; + typedef typename SchemaDocumentType::PointerType PointerType; + typedef typename ValueType::EncodingType EncodingType; + typedef typename EncodingType::Ch Ch; + typedef SchemaValidationContext<SchemaDocumentType> Context; + typedef Schema<SchemaDocumentType> SchemaType; + typedef GenericValue<EncodingType, AllocatorType> SValue; + typedef IValidationErrorHandler<Schema> ErrorHandler; + friend class GenericSchemaDocument<ValueType, AllocatorType>; + + Schema(SchemaDocumentType* schemaDocument, const PointerType& p, const ValueType& value, const ValueType& document, AllocatorType* allocator) : + allocator_(allocator), + uri_(schemaDocument->GetURI(), *allocator), + pointer_(p), + typeless_(schemaDocument->GetTypeless()), + enum_(), + enumCount_(), + not_(), + type_((1 << kTotalSchemaType) - 1), // typeless + validatorCount_(), + notValidatorIndex_(), + properties_(), + additionalPropertiesSchema_(), + patternProperties_(), + patternPropertyCount_(), + propertyCount_(), + minProperties_(), + maxProperties_(SizeType(~0)), + additionalProperties_(true), + hasDependencies_(), + hasRequired_(), + hasSchemaDependencies_(), + additionalItemsSchema_(), + itemsList_(), + itemsTuple_(), + itemsTupleCount_(), + minItems_(), + maxItems_(SizeType(~0)), + additionalItems_(true), + uniqueItems_(false), + pattern_(), + minLength_(0), + maxLength_(~SizeType(0)), + exclusiveMinimum_(false), + exclusiveMaximum_(false), + defaultValueLength_(0) + { + typedef typename SchemaDocumentType::ValueType ValueType; + typedef typename ValueType::ConstValueIterator ConstValueIterator; + typedef typename ValueType::ConstMemberIterator ConstMemberIterator; + + if (!value.IsObject()) + return; + + if (const ValueType* v = GetMember(value, GetTypeString())) { + type_ = 0; + if (v->IsString()) + AddType(*v); + else if (v->IsArray()) + for (ConstValueIterator itr = v->Begin(); itr != v->End(); ++itr) + AddType(*itr); + } + + if (const ValueType* v = GetMember(value, GetEnumString())) + if (v->IsArray() && v->Size() > 0) { + enum_ = static_cast<uint64_t*>(allocator_->Malloc(sizeof(uint64_t) * v->Size())); + for (ConstValueIterator itr = v->Begin(); itr != v->End(); ++itr) { + typedef Hasher<EncodingType, MemoryPoolAllocator<> > EnumHasherType; + char buffer[256u + 24]; + MemoryPoolAllocator<> hasherAllocator(buffer, sizeof(buffer)); + EnumHasherType h(&hasherAllocator, 256); + itr->Accept(h); + enum_[enumCount_++] = h.GetHashCode(); + } + } + + if (schemaDocument) { + AssignIfExist(allOf_, *schemaDocument, p, value, GetAllOfString(), document); + AssignIfExist(anyOf_, *schemaDocument, p, value, GetAnyOfString(), document); + AssignIfExist(oneOf_, *schemaDocument, p, value, GetOneOfString(), document); + } + + if (const ValueType* v = GetMember(value, GetNotString())) { + schemaDocument->CreateSchema(&not_, p.Append(GetNotString(), allocator_), *v, document); + notValidatorIndex_ = validatorCount_; + validatorCount_++; + } + + // Object + + const ValueType* properties = GetMember(value, GetPropertiesString()); + const ValueType* required = GetMember(value, GetRequiredString()); + const ValueType* dependencies = GetMember(value, GetDependenciesString()); + { + // Gather properties from properties/required/dependencies + SValue allProperties(kArrayType); + + if (properties && properties->IsObject()) + for (ConstMemberIterator itr = properties->MemberBegin(); itr != properties->MemberEnd(); ++itr) + AddUniqueElement(allProperties, itr->name); + + if (required && required->IsArray()) + for (ConstValueIterator itr = required->Begin(); itr != required->End(); ++itr) + if (itr->IsString()) + AddUniqueElement(allProperties, *itr); + + if (dependencies && dependencies->IsObject()) + for (ConstMemberIterator itr = dependencies->MemberBegin(); itr != dependencies->MemberEnd(); ++itr) { + AddUniqueElement(allProperties, itr->name); + if (itr->value.IsArray()) + for (ConstValueIterator i = itr->value.Begin(); i != itr->value.End(); ++i) + if (i->IsString()) + AddUniqueElement(allProperties, *i); + } + + if (allProperties.Size() > 0) { + propertyCount_ = allProperties.Size(); + properties_ = static_cast<Property*>(allocator_->Malloc(sizeof(Property) * propertyCount_)); + for (SizeType i = 0; i < propertyCount_; i++) { + new (&properties_[i]) Property(); + properties_[i].name = allProperties[i]; + properties_[i].schema = typeless_; + } + } + } + + if (properties && properties->IsObject()) { + PointerType q = p.Append(GetPropertiesString(), allocator_); + for (ConstMemberIterator itr = properties->MemberBegin(); itr != properties->MemberEnd(); ++itr) { + SizeType index; + if (FindPropertyIndex(itr->name, &index)) + schemaDocument->CreateSchema(&properties_[index].schema, q.Append(itr->name, allocator_), itr->value, document); + } + } + + if (const ValueType* v = GetMember(value, GetPatternPropertiesString())) { + PointerType q = p.Append(GetPatternPropertiesString(), allocator_); + patternProperties_ = static_cast<PatternProperty*>(allocator_->Malloc(sizeof(PatternProperty) * v->MemberCount())); + patternPropertyCount_ = 0; + + for (ConstMemberIterator itr = v->MemberBegin(); itr != v->MemberEnd(); ++itr) { + new (&patternProperties_[patternPropertyCount_]) PatternProperty(); + patternProperties_[patternPropertyCount_].pattern = CreatePattern(itr->name); + schemaDocument->CreateSchema(&patternProperties_[patternPropertyCount_].schema, q.Append(itr->name, allocator_), itr->value, document); + patternPropertyCount_++; + } + } + + if (required && required->IsArray()) + for (ConstValueIterator itr = required->Begin(); itr != required->End(); ++itr) + if (itr->IsString()) { + SizeType index; + if (FindPropertyIndex(*itr, &index)) { + properties_[index].required = true; + hasRequired_ = true; + } + } + + if (dependencies && dependencies->IsObject()) { + PointerType q = p.Append(GetDependenciesString(), allocator_); + hasDependencies_ = true; + for (ConstMemberIterator itr = dependencies->MemberBegin(); itr != dependencies->MemberEnd(); ++itr) { + SizeType sourceIndex; + if (FindPropertyIndex(itr->name, &sourceIndex)) { + if (itr->value.IsArray()) { + properties_[sourceIndex].dependencies = static_cast<bool*>(allocator_->Malloc(sizeof(bool) * propertyCount_)); + std::memset(properties_[sourceIndex].dependencies, 0, sizeof(bool)* propertyCount_); + for (ConstValueIterator targetItr = itr->value.Begin(); targetItr != itr->value.End(); ++targetItr) { + SizeType targetIndex; + if (FindPropertyIndex(*targetItr, &targetIndex)) + properties_[sourceIndex].dependencies[targetIndex] = true; + } + } + else if (itr->value.IsObject()) { + hasSchemaDependencies_ = true; + schemaDocument->CreateSchema(&properties_[sourceIndex].dependenciesSchema, q.Append(itr->name, allocator_), itr->value, document); + properties_[sourceIndex].dependenciesValidatorIndex = validatorCount_; + validatorCount_++; + } + } + } + } + + if (const ValueType* v = GetMember(value, GetAdditionalPropertiesString())) { + if (v->IsBool()) + additionalProperties_ = v->GetBool(); + else if (v->IsObject()) + schemaDocument->CreateSchema(&additionalPropertiesSchema_, p.Append(GetAdditionalPropertiesString(), allocator_), *v, document); + } + + AssignIfExist(minProperties_, value, GetMinPropertiesString()); + AssignIfExist(maxProperties_, value, GetMaxPropertiesString()); + + // Array + if (const ValueType* v = GetMember(value, GetItemsString())) { + PointerType q = p.Append(GetItemsString(), allocator_); + if (v->IsObject()) // List validation + schemaDocument->CreateSchema(&itemsList_, q, *v, document); + else if (v->IsArray()) { // Tuple validation + itemsTuple_ = static_cast<const Schema**>(allocator_->Malloc(sizeof(const Schema*) * v->Size())); + SizeType index = 0; + for (ConstValueIterator itr = v->Begin(); itr != v->End(); ++itr, index++) + schemaDocument->CreateSchema(&itemsTuple_[itemsTupleCount_++], q.Append(index, allocator_), *itr, document); + } + } + + AssignIfExist(minItems_, value, GetMinItemsString()); + AssignIfExist(maxItems_, value, GetMaxItemsString()); + + if (const ValueType* v = GetMember(value, GetAdditionalItemsString())) { + if (v->IsBool()) + additionalItems_ = v->GetBool(); + else if (v->IsObject()) + schemaDocument->CreateSchema(&additionalItemsSchema_, p.Append(GetAdditionalItemsString(), allocator_), *v, document); + } + + AssignIfExist(uniqueItems_, value, GetUniqueItemsString()); + + // String + AssignIfExist(minLength_, value, GetMinLengthString()); + AssignIfExist(maxLength_, value, GetMaxLengthString()); + + if (const ValueType* v = GetMember(value, GetPatternString())) + pattern_ = CreatePattern(*v); + + // Number + if (const ValueType* v = GetMember(value, GetMinimumString())) + if (v->IsNumber()) + minimum_.CopyFrom(*v, *allocator_); + + if (const ValueType* v = GetMember(value, GetMaximumString())) + if (v->IsNumber()) + maximum_.CopyFrom(*v, *allocator_); + + AssignIfExist(exclusiveMinimum_, value, GetExclusiveMinimumString()); + AssignIfExist(exclusiveMaximum_, value, GetExclusiveMaximumString()); + + if (const ValueType* v = GetMember(value, GetMultipleOfString())) + if (v->IsNumber() && v->GetDouble() > 0.0) + multipleOf_.CopyFrom(*v, *allocator_); + + // Default + if (const ValueType* v = GetMember(value, GetDefaultValueString())) + if (v->IsString()) + defaultValueLength_ = v->GetStringLength(); + + } + + ~Schema() { + AllocatorType::Free(enum_); + if (properties_) { + for (SizeType i = 0; i < propertyCount_; i++) + properties_[i].~Property(); + AllocatorType::Free(properties_); + } + if (patternProperties_) { + for (SizeType i = 0; i < patternPropertyCount_; i++) + patternProperties_[i].~PatternProperty(); + AllocatorType::Free(patternProperties_); + } + AllocatorType::Free(itemsTuple_); +#if RAPIDJSON_SCHEMA_HAS_REGEX + if (pattern_) { + pattern_->~RegexType(); + AllocatorType::Free(pattern_); + } +#endif + } + + const SValue& GetURI() const { + return uri_; + } + + const PointerType& GetPointer() const { + return pointer_; + } + + bool BeginValue(Context& context) const { + if (context.inArray) { + if (uniqueItems_) + context.valueUniqueness = true; + + if (itemsList_) + context.valueSchema = itemsList_; + else if (itemsTuple_) { + if (context.arrayElementIndex < itemsTupleCount_) + context.valueSchema = itemsTuple_[context.arrayElementIndex]; + else if (additionalItemsSchema_) + context.valueSchema = additionalItemsSchema_; + else if (additionalItems_) + context.valueSchema = typeless_; + else { + context.error_handler.DisallowedItem(context.arrayElementIndex); + RAPIDJSON_INVALID_KEYWORD_RETURN(GetItemsString()); + } + } + else + context.valueSchema = typeless_; + + context.arrayElementIndex++; + } + return true; + } + + RAPIDJSON_FORCEINLINE bool EndValue(Context& context) const { + if (context.patternPropertiesValidatorCount > 0) { + bool otherValid = false; + SizeType count = context.patternPropertiesValidatorCount; + if (context.objectPatternValidatorType != Context::kPatternValidatorOnly) + otherValid = context.patternPropertiesValidators[--count]->IsValid(); + + bool patternValid = true; + for (SizeType i = 0; i < count; i++) + if (!context.patternPropertiesValidators[i]->IsValid()) { + patternValid = false; + break; + } + + if (context.objectPatternValidatorType == Context::kPatternValidatorOnly) { + if (!patternValid) { + context.error_handler.PropertyViolations(context.patternPropertiesValidators, count); + RAPIDJSON_INVALID_KEYWORD_RETURN(GetPatternPropertiesString()); + } + } + else if (context.objectPatternValidatorType == Context::kPatternValidatorWithProperty) { + if (!patternValid || !otherValid) { + context.error_handler.PropertyViolations(context.patternPropertiesValidators, count + 1); + RAPIDJSON_INVALID_KEYWORD_RETURN(GetPatternPropertiesString()); + } + } + else if (!patternValid && !otherValid) { // kPatternValidatorWithAdditionalProperty) + context.error_handler.PropertyViolations(context.patternPropertiesValidators, count + 1); + RAPIDJSON_INVALID_KEYWORD_RETURN(GetPatternPropertiesString()); + } + } + + if (enum_) { + const uint64_t h = context.factory.GetHashCode(context.hasher); + for (SizeType i = 0; i < enumCount_; i++) + if (enum_[i] == h) + goto foundEnum; + context.error_handler.DisallowedValue(); + RAPIDJSON_INVALID_KEYWORD_RETURN(GetEnumString()); + foundEnum:; + } + + if (allOf_.schemas) + for (SizeType i = allOf_.begin; i < allOf_.begin + allOf_.count; i++) + if (!context.validators[i]->IsValid()) { + context.error_handler.NotAllOf(&context.validators[allOf_.begin], allOf_.count); + RAPIDJSON_INVALID_KEYWORD_RETURN(GetAllOfString()); + } + + if (anyOf_.schemas) { + for (SizeType i = anyOf_.begin; i < anyOf_.begin + anyOf_.count; i++) + if (context.validators[i]->IsValid()) + goto foundAny; + context.error_handler.NoneOf(&context.validators[anyOf_.begin], anyOf_.count); + RAPIDJSON_INVALID_KEYWORD_RETURN(GetAnyOfString()); + foundAny:; + } + + if (oneOf_.schemas) { + bool oneValid = false; + for (SizeType i = oneOf_.begin; i < oneOf_.begin + oneOf_.count; i++) + if (context.validators[i]->IsValid()) { + if (oneValid) { + context.error_handler.NotOneOf(&context.validators[oneOf_.begin], oneOf_.count); + RAPIDJSON_INVALID_KEYWORD_RETURN(GetOneOfString()); + } else + oneValid = true; + } + if (!oneValid) { + context.error_handler.NotOneOf(&context.validators[oneOf_.begin], oneOf_.count); + RAPIDJSON_INVALID_KEYWORD_RETURN(GetOneOfString()); + } + } + + if (not_ && context.validators[notValidatorIndex_]->IsValid()) { + context.error_handler.Disallowed(); + RAPIDJSON_INVALID_KEYWORD_RETURN(GetNotString()); + } + + return true; + } + + bool Null(Context& context) const { + if (!(type_ & (1 << kNullSchemaType))) { + DisallowedType(context, GetNullString()); + RAPIDJSON_INVALID_KEYWORD_RETURN(GetTypeString()); + } + return CreateParallelValidator(context); + } + + bool Bool(Context& context, bool) const { + if (!(type_ & (1 << kBooleanSchemaType))) { + DisallowedType(context, GetBooleanString()); + RAPIDJSON_INVALID_KEYWORD_RETURN(GetTypeString()); + } + return CreateParallelValidator(context); + } + + bool Int(Context& context, int i) const { + if (!CheckInt(context, i)) + return false; + return CreateParallelValidator(context); + } + + bool Uint(Context& context, unsigned u) const { + if (!CheckUint(context, u)) + return false; + return CreateParallelValidator(context); + } + + bool Int64(Context& context, int64_t i) const { + if (!CheckInt(context, i)) + return false; + return CreateParallelValidator(context); + } + + bool Uint64(Context& context, uint64_t u) const { + if (!CheckUint(context, u)) + return false; + return CreateParallelValidator(context); + } + + bool Double(Context& context, double d) const { + if (!(type_ & (1 << kNumberSchemaType))) { + DisallowedType(context, GetNumberString()); + RAPIDJSON_INVALID_KEYWORD_RETURN(GetTypeString()); + } + + if (!minimum_.IsNull() && !CheckDoubleMinimum(context, d)) + return false; + + if (!maximum_.IsNull() && !CheckDoubleMaximum(context, d)) + return false; + + if (!multipleOf_.IsNull() && !CheckDoubleMultipleOf(context, d)) + return false; + + return CreateParallelValidator(context); + } + + bool String(Context& context, const Ch* str, SizeType length, bool) const { + if (!(type_ & (1 << kStringSchemaType))) { + DisallowedType(context, GetStringString()); + RAPIDJSON_INVALID_KEYWORD_RETURN(GetTypeString()); + } + + if (minLength_ != 0 || maxLength_ != SizeType(~0)) { + SizeType count; + if (internal::CountStringCodePoint<EncodingType>(str, length, &count)) { + if (count < minLength_) { + context.error_handler.TooShort(str, length, minLength_); + RAPIDJSON_INVALID_KEYWORD_RETURN(GetMinLengthString()); + } + if (count > maxLength_) { + context.error_handler.TooLong(str, length, maxLength_); + RAPIDJSON_INVALID_KEYWORD_RETURN(GetMaxLengthString()); + } + } + } + + if (pattern_ && !IsPatternMatch(pattern_, str, length)) { + context.error_handler.DoesNotMatch(str, length); + RAPIDJSON_INVALID_KEYWORD_RETURN(GetPatternString()); + } + + return CreateParallelValidator(context); + } + + bool StartObject(Context& context) const { + if (!(type_ & (1 << kObjectSchemaType))) { + DisallowedType(context, GetObjectString()); + RAPIDJSON_INVALID_KEYWORD_RETURN(GetTypeString()); + } + + if (hasDependencies_ || hasRequired_) { + context.propertyExist = static_cast<bool*>(context.factory.MallocState(sizeof(bool) * propertyCount_)); + std::memset(context.propertyExist, 0, sizeof(bool) * propertyCount_); + } + + if (patternProperties_) { // pre-allocate schema array + SizeType count = patternPropertyCount_ + 1; // extra for valuePatternValidatorType + context.patternPropertiesSchemas = static_cast<const SchemaType**>(context.factory.MallocState(sizeof(const SchemaType*) * count)); + context.patternPropertiesSchemaCount = 0; + std::memset(context.patternPropertiesSchemas, 0, sizeof(SchemaType*) * count); + } + + return CreateParallelValidator(context); + } + + bool Key(Context& context, const Ch* str, SizeType len, bool) const { + if (patternProperties_) { + context.patternPropertiesSchemaCount = 0; + for (SizeType i = 0; i < patternPropertyCount_; i++) + if (patternProperties_[i].pattern && IsPatternMatch(patternProperties_[i].pattern, str, len)) { + context.patternPropertiesSchemas[context.patternPropertiesSchemaCount++] = patternProperties_[i].schema; + context.valueSchema = typeless_; + } + } + + SizeType index; + if (FindPropertyIndex(ValueType(str, len).Move(), &index)) { + if (context.patternPropertiesSchemaCount > 0) { + context.patternPropertiesSchemas[context.patternPropertiesSchemaCount++] = properties_[index].schema; + context.valueSchema = typeless_; + context.valuePatternValidatorType = Context::kPatternValidatorWithProperty; + } + else + context.valueSchema = properties_[index].schema; + + if (context.propertyExist) + context.propertyExist[index] = true; + + return true; + } + + if (additionalPropertiesSchema_) { + if (additionalPropertiesSchema_ && context.patternPropertiesSchemaCount > 0) { + context.patternPropertiesSchemas[context.patternPropertiesSchemaCount++] = additionalPropertiesSchema_; + context.valueSchema = typeless_; + context.valuePatternValidatorType = Context::kPatternValidatorWithAdditionalProperty; + } + else + context.valueSchema = additionalPropertiesSchema_; + return true; + } + else if (additionalProperties_) { + context.valueSchema = typeless_; + return true; + } + + if (context.patternPropertiesSchemaCount == 0) { // patternProperties are not additional properties + context.error_handler.DisallowedProperty(str, len); + RAPIDJSON_INVALID_KEYWORD_RETURN(GetAdditionalPropertiesString()); + } + + return true; + } + + bool EndObject(Context& context, SizeType memberCount) const { + if (hasRequired_) { + context.error_handler.StartMissingProperties(); + for (SizeType index = 0; index < propertyCount_; index++) + if (properties_[index].required && !context.propertyExist[index]) + if (properties_[index].schema->defaultValueLength_ == 0 ) + context.error_handler.AddMissingProperty(properties_[index].name); + if (context.error_handler.EndMissingProperties()) + RAPIDJSON_INVALID_KEYWORD_RETURN(GetRequiredString()); + } + + if (memberCount < minProperties_) { + context.error_handler.TooFewProperties(memberCount, minProperties_); + RAPIDJSON_INVALID_KEYWORD_RETURN(GetMinPropertiesString()); + } + + if (memberCount > maxProperties_) { + context.error_handler.TooManyProperties(memberCount, maxProperties_); + RAPIDJSON_INVALID_KEYWORD_RETURN(GetMaxPropertiesString()); + } + + if (hasDependencies_) { + context.error_handler.StartDependencyErrors(); + for (SizeType sourceIndex = 0; sourceIndex < propertyCount_; sourceIndex++) { + const Property& source = properties_[sourceIndex]; + if (context.propertyExist[sourceIndex]) { + if (source.dependencies) { + context.error_handler.StartMissingDependentProperties(); + for (SizeType targetIndex = 0; targetIndex < propertyCount_; targetIndex++) + if (source.dependencies[targetIndex] && !context.propertyExist[targetIndex]) + context.error_handler.AddMissingDependentProperty(properties_[targetIndex].name); + context.error_handler.EndMissingDependentProperties(source.name); + } + else if (source.dependenciesSchema) { + ISchemaValidator* dependenciesValidator = context.validators[source.dependenciesValidatorIndex]; + if (!dependenciesValidator->IsValid()) + context.error_handler.AddDependencySchemaError(source.name, dependenciesValidator); + } + } + } + if (context.error_handler.EndDependencyErrors()) + RAPIDJSON_INVALID_KEYWORD_RETURN(GetDependenciesString()); + } + + return true; + } + + bool StartArray(Context& context) const { + if (!(type_ & (1 << kArraySchemaType))) { + DisallowedType(context, GetArrayString()); + RAPIDJSON_INVALID_KEYWORD_RETURN(GetTypeString()); + } + + context.arrayElementIndex = 0; + context.inArray = true; + + return CreateParallelValidator(context); + } + + bool EndArray(Context& context, SizeType elementCount) const { + context.inArray = false; + + if (elementCount < minItems_) { + context.error_handler.TooFewItems(elementCount, minItems_); + RAPIDJSON_INVALID_KEYWORD_RETURN(GetMinItemsString()); + } + + if (elementCount > maxItems_) { + context.error_handler.TooManyItems(elementCount, maxItems_); + RAPIDJSON_INVALID_KEYWORD_RETURN(GetMaxItemsString()); + } + + return true; + } + + // Generate functions for string literal according to Ch +#define RAPIDJSON_STRING_(name, ...) \ + static const ValueType& Get##name##String() {\ + static const Ch s[] = { __VA_ARGS__, '\0' };\ + static const ValueType v(s, static_cast<SizeType>(sizeof(s) / sizeof(Ch) - 1));\ + return v;\ + } + + RAPIDJSON_STRING_(Null, 'n', 'u', 'l', 'l') + RAPIDJSON_STRING_(Boolean, 'b', 'o', 'o', 'l', 'e', 'a', 'n') + RAPIDJSON_STRING_(Object, 'o', 'b', 'j', 'e', 'c', 't') + RAPIDJSON_STRING_(Array, 'a', 'r', 'r', 'a', 'y') + RAPIDJSON_STRING_(String, 's', 't', 'r', 'i', 'n', 'g') + RAPIDJSON_STRING_(Number, 'n', 'u', 'm', 'b', 'e', 'r') + RAPIDJSON_STRING_(Integer, 'i', 'n', 't', 'e', 'g', 'e', 'r') + RAPIDJSON_STRING_(Type, 't', 'y', 'p', 'e') + RAPIDJSON_STRING_(Enum, 'e', 'n', 'u', 'm') + RAPIDJSON_STRING_(AllOf, 'a', 'l', 'l', 'O', 'f') + RAPIDJSON_STRING_(AnyOf, 'a', 'n', 'y', 'O', 'f') + RAPIDJSON_STRING_(OneOf, 'o', 'n', 'e', 'O', 'f') + RAPIDJSON_STRING_(Not, 'n', 'o', 't') + RAPIDJSON_STRING_(Properties, 'p', 'r', 'o', 'p', 'e', 'r', 't', 'i', 'e', 's') + RAPIDJSON_STRING_(Required, 'r', 'e', 'q', 'u', 'i', 'r', 'e', 'd') + RAPIDJSON_STRING_(Dependencies, 'd', 'e', 'p', 'e', 'n', 'd', 'e', 'n', 'c', 'i', 'e', 's') + RAPIDJSON_STRING_(PatternProperties, 'p', 'a', 't', 't', 'e', 'r', 'n', 'P', 'r', 'o', 'p', 'e', 'r', 't', 'i', 'e', 's') + RAPIDJSON_STRING_(AdditionalProperties, 'a', 'd', 'd', 'i', 't', 'i', 'o', 'n', 'a', 'l', 'P', 'r', 'o', 'p', 'e', 'r', 't', 'i', 'e', 's') + RAPIDJSON_STRING_(MinProperties, 'm', 'i', 'n', 'P', 'r', 'o', 'p', 'e', 'r', 't', 'i', 'e', 's') + RAPIDJSON_STRING_(MaxProperties, 'm', 'a', 'x', 'P', 'r', 'o', 'p', 'e', 'r', 't', 'i', 'e', 's') + RAPIDJSON_STRING_(Items, 'i', 't', 'e', 'm', 's') + RAPIDJSON_STRING_(MinItems, 'm', 'i', 'n', 'I', 't', 'e', 'm', 's') + RAPIDJSON_STRING_(MaxItems, 'm', 'a', 'x', 'I', 't', 'e', 'm', 's') + RAPIDJSON_STRING_(AdditionalItems, 'a', 'd', 'd', 'i', 't', 'i', 'o', 'n', 'a', 'l', 'I', 't', 'e', 'm', 's') + RAPIDJSON_STRING_(UniqueItems, 'u', 'n', 'i', 'q', 'u', 'e', 'I', 't', 'e', 'm', 's') + RAPIDJSON_STRING_(MinLength, 'm', 'i', 'n', 'L', 'e', 'n', 'g', 't', 'h') + RAPIDJSON_STRING_(MaxLength, 'm', 'a', 'x', 'L', 'e', 'n', 'g', 't', 'h') + RAPIDJSON_STRING_(Pattern, 'p', 'a', 't', 't', 'e', 'r', 'n') + RAPIDJSON_STRING_(Minimum, 'm', 'i', 'n', 'i', 'm', 'u', 'm') + RAPIDJSON_STRING_(Maximum, 'm', 'a', 'x', 'i', 'm', 'u', 'm') + RAPIDJSON_STRING_(ExclusiveMinimum, 'e', 'x', 'c', 'l', 'u', 's', 'i', 'v', 'e', 'M', 'i', 'n', 'i', 'm', 'u', 'm') + RAPIDJSON_STRING_(ExclusiveMaximum, 'e', 'x', 'c', 'l', 'u', 's', 'i', 'v', 'e', 'M', 'a', 'x', 'i', 'm', 'u', 'm') + RAPIDJSON_STRING_(MultipleOf, 'm', 'u', 'l', 't', 'i', 'p', 'l', 'e', 'O', 'f') + RAPIDJSON_STRING_(DefaultValue, 'd', 'e', 'f', 'a', 'u', 'l', 't') + +#undef RAPIDJSON_STRING_ + +private: + enum SchemaValueType { + kNullSchemaType, + kBooleanSchemaType, + kObjectSchemaType, + kArraySchemaType, + kStringSchemaType, + kNumberSchemaType, + kIntegerSchemaType, + kTotalSchemaType + }; + +#if RAPIDJSON_SCHEMA_USE_INTERNALREGEX + typedef internal::GenericRegex<EncodingType, AllocatorType> RegexType; +#elif RAPIDJSON_SCHEMA_USE_STDREGEX + typedef std::basic_regex<Ch> RegexType; +#else + typedef char RegexType; +#endif + + struct SchemaArray { + SchemaArray() : schemas(), count() {} + ~SchemaArray() { AllocatorType::Free(schemas); } + const SchemaType** schemas; + SizeType begin; // begin index of context.validators + SizeType count; + }; + + template <typename V1, typename V2> + void AddUniqueElement(V1& a, const V2& v) { + for (typename V1::ConstValueIterator itr = a.Begin(); itr != a.End(); ++itr) + if (*itr == v) + return; + V1 c(v, *allocator_); + a.PushBack(c, *allocator_); + } + + static const ValueType* GetMember(const ValueType& value, const ValueType& name) { + typename ValueType::ConstMemberIterator itr = value.FindMember(name); + return itr != value.MemberEnd() ? &(itr->value) : 0; + } + + static void AssignIfExist(bool& out, const ValueType& value, const ValueType& name) { + if (const ValueType* v = GetMember(value, name)) + if (v->IsBool()) + out = v->GetBool(); + } + + static void AssignIfExist(SizeType& out, const ValueType& value, const ValueType& name) { + if (const ValueType* v = GetMember(value, name)) + if (v->IsUint64() && v->GetUint64() <= SizeType(~0)) + out = static_cast<SizeType>(v->GetUint64()); + } + + void AssignIfExist(SchemaArray& out, SchemaDocumentType& schemaDocument, const PointerType& p, const ValueType& value, const ValueType& name, const ValueType& document) { + if (const ValueType* v = GetMember(value, name)) { + if (v->IsArray() && v->Size() > 0) { + PointerType q = p.Append(name, allocator_); + out.count = v->Size(); + out.schemas = static_cast<const Schema**>(allocator_->Malloc(out.count * sizeof(const Schema*))); + memset(out.schemas, 0, sizeof(Schema*)* out.count); + for (SizeType i = 0; i < out.count; i++) + schemaDocument.CreateSchema(&out.schemas[i], q.Append(i, allocator_), (*v)[i], document); + out.begin = validatorCount_; + validatorCount_ += out.count; + } + } + } + +#if RAPIDJSON_SCHEMA_USE_INTERNALREGEX + template <typename ValueType> + RegexType* CreatePattern(const ValueType& value) { + if (value.IsString()) { + RegexType* r = new (allocator_->Malloc(sizeof(RegexType))) RegexType(value.GetString(), allocator_); + if (!r->IsValid()) { + r->~RegexType(); + AllocatorType::Free(r); + r = 0; + } + return r; + } + return 0; + } + + static bool IsPatternMatch(const RegexType* pattern, const Ch *str, SizeType) { + GenericRegexSearch<RegexType> rs(*pattern); + return rs.Search(str); + } +#elif RAPIDJSON_SCHEMA_USE_STDREGEX + template <typename ValueType> + RegexType* CreatePattern(const ValueType& value) { + if (value.IsString()) + RegexType *r = static_cast<RegexType*>(allocator_->Malloc(sizeof(RegexType))); + try { + return new (r) RegexType(value.GetString(), std::size_t(value.GetStringLength()), std::regex_constants::ECMAScript); + } + catch (const std::regex_error&) { + AllocatorType::Free(r); + } + return 0; + } + + static bool IsPatternMatch(const RegexType* pattern, const Ch *str, SizeType length) { + std::match_results<const Ch*> r; + return std::regex_search(str, str + length, r, *pattern); + } +#else + template <typename ValueType> + RegexType* CreatePattern(const ValueType&) { return 0; } + + static bool IsPatternMatch(const RegexType*, const Ch *, SizeType) { return true; } +#endif // RAPIDJSON_SCHEMA_USE_STDREGEX + + void AddType(const ValueType& type) { + if (type == GetNullString() ) type_ |= 1 << kNullSchemaType; + else if (type == GetBooleanString()) type_ |= 1 << kBooleanSchemaType; + else if (type == GetObjectString() ) type_ |= 1 << kObjectSchemaType; + else if (type == GetArrayString() ) type_ |= 1 << kArraySchemaType; + else if (type == GetStringString() ) type_ |= 1 << kStringSchemaType; + else if (type == GetIntegerString()) type_ |= 1 << kIntegerSchemaType; + else if (type == GetNumberString() ) type_ |= (1 << kNumberSchemaType) | (1 << kIntegerSchemaType); + } + + bool CreateParallelValidator(Context& context) const { + if (enum_ || context.arrayUniqueness) + context.hasher = context.factory.CreateHasher(); + + if (validatorCount_) { + RAPIDJSON_ASSERT(context.validators == 0); + context.validators = static_cast<ISchemaValidator**>(context.factory.MallocState(sizeof(ISchemaValidator*) * validatorCount_)); + context.validatorCount = validatorCount_; + + if (allOf_.schemas) + CreateSchemaValidators(context, allOf_); + + if (anyOf_.schemas) + CreateSchemaValidators(context, anyOf_); + + if (oneOf_.schemas) + CreateSchemaValidators(context, oneOf_); + + if (not_) + context.validators[notValidatorIndex_] = context.factory.CreateSchemaValidator(*not_); + + if (hasSchemaDependencies_) { + for (SizeType i = 0; i < propertyCount_; i++) + if (properties_[i].dependenciesSchema) + context.validators[properties_[i].dependenciesValidatorIndex] = context.factory.CreateSchemaValidator(*properties_[i].dependenciesSchema); + } + } + + return true; + } + + void CreateSchemaValidators(Context& context, const SchemaArray& schemas) const { + for (SizeType i = 0; i < schemas.count; i++) + context.validators[schemas.begin + i] = context.factory.CreateSchemaValidator(*schemas.schemas[i]); + } + + // O(n) + bool FindPropertyIndex(const ValueType& name, SizeType* outIndex) const { + SizeType len = name.GetStringLength(); + const Ch* str = name.GetString(); + for (SizeType index = 0; index < propertyCount_; index++) + if (properties_[index].name.GetStringLength() == len && + (std::memcmp(properties_[index].name.GetString(), str, sizeof(Ch) * len) == 0)) + { + *outIndex = index; + return true; + } + return false; + } + + bool CheckInt(Context& context, int64_t i) const { + if (!(type_ & ((1 << kIntegerSchemaType) | (1 << kNumberSchemaType)))) { + DisallowedType(context, GetIntegerString()); + RAPIDJSON_INVALID_KEYWORD_RETURN(GetTypeString()); + } + + if (!minimum_.IsNull()) { + if (minimum_.IsInt64()) { + if (exclusiveMinimum_ ? i <= minimum_.GetInt64() : i < minimum_.GetInt64()) { + context.error_handler.BelowMinimum(i, minimum_, exclusiveMinimum_); + RAPIDJSON_INVALID_KEYWORD_RETURN(GetMinimumString()); + } + } + else if (minimum_.IsUint64()) { + context.error_handler.BelowMinimum(i, minimum_, exclusiveMinimum_); + RAPIDJSON_INVALID_KEYWORD_RETURN(GetMinimumString()); // i <= max(int64_t) < minimum.GetUint64() + } + else if (!CheckDoubleMinimum(context, static_cast<double>(i))) + return false; + } + + if (!maximum_.IsNull()) { + if (maximum_.IsInt64()) { + if (exclusiveMaximum_ ? i >= maximum_.GetInt64() : i > maximum_.GetInt64()) { + context.error_handler.AboveMaximum(i, maximum_, exclusiveMaximum_); + RAPIDJSON_INVALID_KEYWORD_RETURN(GetMaximumString()); + } + } + else if (maximum_.IsUint64()) { } + /* do nothing */ // i <= max(int64_t) < maximum_.GetUint64() + else if (!CheckDoubleMaximum(context, static_cast<double>(i))) + return false; + } + + if (!multipleOf_.IsNull()) { + if (multipleOf_.IsUint64()) { + if (static_cast<uint64_t>(i >= 0 ? i : -i) % multipleOf_.GetUint64() != 0) { + context.error_handler.NotMultipleOf(i, multipleOf_); + RAPIDJSON_INVALID_KEYWORD_RETURN(GetMultipleOfString()); + } + } + else if (!CheckDoubleMultipleOf(context, static_cast<double>(i))) + return false; + } + + return true; + } + + bool CheckUint(Context& context, uint64_t i) const { + if (!(type_ & ((1 << kIntegerSchemaType) | (1 << kNumberSchemaType)))) { + DisallowedType(context, GetIntegerString()); + RAPIDJSON_INVALID_KEYWORD_RETURN(GetTypeString()); + } + + if (!minimum_.IsNull()) { + if (minimum_.IsUint64()) { + if (exclusiveMinimum_ ? i <= minimum_.GetUint64() : i < minimum_.GetUint64()) { + context.error_handler.BelowMinimum(i, minimum_, exclusiveMinimum_); + RAPIDJSON_INVALID_KEYWORD_RETURN(GetMinimumString()); + } + } + else if (minimum_.IsInt64()) + /* do nothing */; // i >= 0 > minimum.Getint64() + else if (!CheckDoubleMinimum(context, static_cast<double>(i))) + return false; + } + + if (!maximum_.IsNull()) { + if (maximum_.IsUint64()) { + if (exclusiveMaximum_ ? i >= maximum_.GetUint64() : i > maximum_.GetUint64()) { + context.error_handler.AboveMaximum(i, maximum_, exclusiveMaximum_); + RAPIDJSON_INVALID_KEYWORD_RETURN(GetMaximumString()); + } + } + else if (maximum_.IsInt64()) { + context.error_handler.AboveMaximum(i, maximum_, exclusiveMaximum_); + RAPIDJSON_INVALID_KEYWORD_RETURN(GetMaximumString()); // i >= 0 > maximum_ + } + else if (!CheckDoubleMaximum(context, static_cast<double>(i))) + return false; + } + + if (!multipleOf_.IsNull()) { + if (multipleOf_.IsUint64()) { + if (i % multipleOf_.GetUint64() != 0) { + context.error_handler.NotMultipleOf(i, multipleOf_); + RAPIDJSON_INVALID_KEYWORD_RETURN(GetMultipleOfString()); + } + } + else if (!CheckDoubleMultipleOf(context, static_cast<double>(i))) + return false; + } + + return true; + } + + bool CheckDoubleMinimum(Context& context, double d) const { + if (exclusiveMinimum_ ? d <= minimum_.GetDouble() : d < minimum_.GetDouble()) { + context.error_handler.BelowMinimum(d, minimum_, exclusiveMinimum_); + RAPIDJSON_INVALID_KEYWORD_RETURN(GetMinimumString()); + } + return true; + } + + bool CheckDoubleMaximum(Context& context, double d) const { + if (exclusiveMaximum_ ? d >= maximum_.GetDouble() : d > maximum_.GetDouble()) { + context.error_handler.AboveMaximum(d, maximum_, exclusiveMaximum_); + RAPIDJSON_INVALID_KEYWORD_RETURN(GetMaximumString()); + } + return true; + } + + bool CheckDoubleMultipleOf(Context& context, double d) const { + double a = std::abs(d), b = std::abs(multipleOf_.GetDouble()); + double q = std::floor(a / b); + double r = a - q * b; + if (r > 0.0) { + context.error_handler.NotMultipleOf(d, multipleOf_); + RAPIDJSON_INVALID_KEYWORD_RETURN(GetMultipleOfString()); + } + return true; + } + + void DisallowedType(Context& context, const ValueType& actualType) const { + ErrorHandler& eh = context.error_handler; + eh.StartDisallowedType(); + + if (type_ & (1 << kNullSchemaType)) eh.AddExpectedType(GetNullString()); + if (type_ & (1 << kBooleanSchemaType)) eh.AddExpectedType(GetBooleanString()); + if (type_ & (1 << kObjectSchemaType)) eh.AddExpectedType(GetObjectString()); + if (type_ & (1 << kArraySchemaType)) eh.AddExpectedType(GetArrayString()); + if (type_ & (1 << kStringSchemaType)) eh.AddExpectedType(GetStringString()); + + if (type_ & (1 << kNumberSchemaType)) eh.AddExpectedType(GetNumberString()); + else if (type_ & (1 << kIntegerSchemaType)) eh.AddExpectedType(GetIntegerString()); + + eh.EndDisallowedType(actualType); + } + + struct Property { + Property() : schema(), dependenciesSchema(), dependenciesValidatorIndex(), dependencies(), required(false) {} + ~Property() { AllocatorType::Free(dependencies); } + SValue name; + const SchemaType* schema; + const SchemaType* dependenciesSchema; + SizeType dependenciesValidatorIndex; + bool* dependencies; + bool required; + }; + + struct PatternProperty { + PatternProperty() : schema(), pattern() {} + ~PatternProperty() { + if (pattern) { + pattern->~RegexType(); + AllocatorType::Free(pattern); + } + } + const SchemaType* schema; + RegexType* pattern; + }; + + AllocatorType* allocator_; + SValue uri_; + PointerType pointer_; + const SchemaType* typeless_; + uint64_t* enum_; + SizeType enumCount_; + SchemaArray allOf_; + SchemaArray anyOf_; + SchemaArray oneOf_; + const SchemaType* not_; + unsigned type_; // bitmask of kSchemaType + SizeType validatorCount_; + SizeType notValidatorIndex_; + + Property* properties_; + const SchemaType* additionalPropertiesSchema_; + PatternProperty* patternProperties_; + SizeType patternPropertyCount_; + SizeType propertyCount_; + SizeType minProperties_; + SizeType maxProperties_; + bool additionalProperties_; + bool hasDependencies_; + bool hasRequired_; + bool hasSchemaDependencies_; + + const SchemaType* additionalItemsSchema_; + const SchemaType* itemsList_; + const SchemaType** itemsTuple_; + SizeType itemsTupleCount_; + SizeType minItems_; + SizeType maxItems_; + bool additionalItems_; + bool uniqueItems_; + + RegexType* pattern_; + SizeType minLength_; + SizeType maxLength_; + + SValue minimum_; + SValue maximum_; + SValue multipleOf_; + bool exclusiveMinimum_; + bool exclusiveMaximum_; + + SizeType defaultValueLength_; +}; + +template<typename Stack, typename Ch> +struct TokenHelper { + RAPIDJSON_FORCEINLINE static void AppendIndexToken(Stack& documentStack, SizeType index) { + *documentStack.template Push<Ch>() = '/'; + char buffer[21]; + size_t length = static_cast<size_t>((sizeof(SizeType) == 4 ? u32toa(index, buffer) : u64toa(index, buffer)) - buffer); + for (size_t i = 0; i < length; i++) + *documentStack.template Push<Ch>() = static_cast<Ch>(buffer[i]); + } +}; + +// Partial specialized version for char to prevent buffer copying. +template <typename Stack> +struct TokenHelper<Stack, char> { + RAPIDJSON_FORCEINLINE static void AppendIndexToken(Stack& documentStack, SizeType index) { + if (sizeof(SizeType) == 4) { + char *buffer = documentStack.template Push<char>(1 + 10); // '/' + uint + *buffer++ = '/'; + const char* end = internal::u32toa(index, buffer); + documentStack.template Pop<char>(static_cast<size_t>(10 - (end - buffer))); + } + else { + char *buffer = documentStack.template Push<char>(1 + 20); // '/' + uint64 + *buffer++ = '/'; + const char* end = internal::u64toa(index, buffer); + documentStack.template Pop<char>(static_cast<size_t>(20 - (end - buffer))); + } + } +}; + +} // namespace internal + +/////////////////////////////////////////////////////////////////////////////// +// IGenericRemoteSchemaDocumentProvider + +template <typename SchemaDocumentType> +class IGenericRemoteSchemaDocumentProvider { +public: + typedef typename SchemaDocumentType::Ch Ch; + + virtual ~IGenericRemoteSchemaDocumentProvider() {} + virtual const SchemaDocumentType* GetRemoteDocument(const Ch* uri, SizeType length) = 0; +}; + +/////////////////////////////////////////////////////////////////////////////// +// GenericSchemaDocument + +//! JSON schema document. +/*! + A JSON schema document is a compiled version of a JSON schema. + It is basically a tree of internal::Schema. + + \note This is an immutable class (i.e. its instance cannot be modified after construction). + \tparam ValueT Type of JSON value (e.g. \c Value ), which also determine the encoding. + \tparam Allocator Allocator type for allocating memory of this document. +*/ +template <typename ValueT, typename Allocator = CrtAllocator> +class GenericSchemaDocument { +public: + typedef ValueT ValueType; + typedef IGenericRemoteSchemaDocumentProvider<GenericSchemaDocument> IRemoteSchemaDocumentProviderType; + typedef Allocator AllocatorType; + typedef typename ValueType::EncodingType EncodingType; + typedef typename EncodingType::Ch Ch; + typedef internal::Schema<GenericSchemaDocument> SchemaType; + typedef GenericPointer<ValueType, Allocator> PointerType; + typedef GenericValue<EncodingType, Allocator> URIType; + friend class internal::Schema<GenericSchemaDocument>; + template <typename, typename, typename> + friend class GenericSchemaValidator; + + //! Constructor. + /*! + Compile a JSON document into schema document. + + \param document A JSON document as source. + \param uri The base URI of this schema document for purposes of violation reporting. + \param uriLength Length of \c name, in code points. + \param remoteProvider An optional remote schema document provider for resolving remote reference. Can be null. + \param allocator An optional allocator instance for allocating memory. Can be null. + */ + explicit GenericSchemaDocument(const ValueType& document, const Ch* uri = 0, SizeType uriLength = 0, + IRemoteSchemaDocumentProviderType* remoteProvider = 0, Allocator* allocator = 0) : + remoteProvider_(remoteProvider), + allocator_(allocator), + ownAllocator_(), + root_(), + typeless_(), + schemaMap_(allocator, kInitialSchemaMapSize), + schemaRef_(allocator, kInitialSchemaRefSize) + { + if (!allocator_) + ownAllocator_ = allocator_ = RAPIDJSON_NEW(Allocator)(); + + Ch noUri[1] = {0}; + uri_.SetString(uri ? uri : noUri, uriLength, *allocator_); + + typeless_ = static_cast<SchemaType*>(allocator_->Malloc(sizeof(SchemaType))); + new (typeless_) SchemaType(this, PointerType(), ValueType(kObjectType).Move(), ValueType(kObjectType).Move(), allocator_); + + // Generate root schema, it will call CreateSchema() to create sub-schemas, + // And call AddRefSchema() if there are $ref. + CreateSchemaRecursive(&root_, PointerType(), document, document); + + // Resolve $ref + while (!schemaRef_.Empty()) { + SchemaRefEntry* refEntry = schemaRef_.template Pop<SchemaRefEntry>(1); + if (const SchemaType* s = GetSchema(refEntry->target)) { + if (refEntry->schema) + *refEntry->schema = s; + + // Create entry in map if not exist + if (!GetSchema(refEntry->source)) { + new (schemaMap_.template Push<SchemaEntry>()) SchemaEntry(refEntry->source, const_cast<SchemaType*>(s), false, allocator_); + } + } + else if (refEntry->schema) + *refEntry->schema = typeless_; + + refEntry->~SchemaRefEntry(); + } + + RAPIDJSON_ASSERT(root_ != 0); + + schemaRef_.ShrinkToFit(); // Deallocate all memory for ref + } + +#if RAPIDJSON_HAS_CXX11_RVALUE_REFS + //! Move constructor in C++11 + GenericSchemaDocument(GenericSchemaDocument&& rhs) RAPIDJSON_NOEXCEPT : + remoteProvider_(rhs.remoteProvider_), + allocator_(rhs.allocator_), + ownAllocator_(rhs.ownAllocator_), + root_(rhs.root_), + typeless_(rhs.typeless_), + schemaMap_(std::move(rhs.schemaMap_)), + schemaRef_(std::move(rhs.schemaRef_)), + uri_(std::move(rhs.uri_)) + { + rhs.remoteProvider_ = 0; + rhs.allocator_ = 0; + rhs.ownAllocator_ = 0; + rhs.typeless_ = 0; + } +#endif + + //! Destructor + ~GenericSchemaDocument() { + while (!schemaMap_.Empty()) + schemaMap_.template Pop<SchemaEntry>(1)->~SchemaEntry(); + + if (typeless_) { + typeless_->~SchemaType(); + Allocator::Free(typeless_); + } + + RAPIDJSON_DELETE(ownAllocator_); + } + + const URIType& GetURI() const { return uri_; } + + //! Get the root schema. + const SchemaType& GetRoot() const { return *root_; } + +private: + //! Prohibit copying + GenericSchemaDocument(const GenericSchemaDocument&); + //! Prohibit assignment + GenericSchemaDocument& operator=(const GenericSchemaDocument&); + + struct SchemaRefEntry { + SchemaRefEntry(const PointerType& s, const PointerType& t, const SchemaType** outSchema, Allocator *allocator) : source(s, allocator), target(t, allocator), schema(outSchema) {} + PointerType source; + PointerType target; + const SchemaType** schema; + }; + + struct SchemaEntry { + SchemaEntry(const PointerType& p, SchemaType* s, bool o, Allocator* allocator) : pointer(p, allocator), schema(s), owned(o) {} + ~SchemaEntry() { + if (owned) { + schema->~SchemaType(); + Allocator::Free(schema); + } + } + PointerType pointer; + SchemaType* schema; + bool owned; + }; + + void CreateSchemaRecursive(const SchemaType** schema, const PointerType& pointer, const ValueType& v, const ValueType& document) { + if (schema) + *schema = typeless_; + + if (v.GetType() == kObjectType) { + const SchemaType* s = GetSchema(pointer); + if (!s) + CreateSchema(schema, pointer, v, document); + + for (typename ValueType::ConstMemberIterator itr = v.MemberBegin(); itr != v.MemberEnd(); ++itr) + CreateSchemaRecursive(0, pointer.Append(itr->name, allocator_), itr->value, document); + } + else if (v.GetType() == kArrayType) + for (SizeType i = 0; i < v.Size(); i++) + CreateSchemaRecursive(0, pointer.Append(i, allocator_), v[i], document); + } + + void CreateSchema(const SchemaType** schema, const PointerType& pointer, const ValueType& v, const ValueType& document) { + RAPIDJSON_ASSERT(pointer.IsValid()); + if (v.IsObject()) { + if (!HandleRefSchema(pointer, schema, v, document)) { + SchemaType* s = new (allocator_->Malloc(sizeof(SchemaType))) SchemaType(this, pointer, v, document, allocator_); + new (schemaMap_.template Push<SchemaEntry>()) SchemaEntry(pointer, s, true, allocator_); + if (schema) + *schema = s; + } + } + } + + bool HandleRefSchema(const PointerType& source, const SchemaType** schema, const ValueType& v, const ValueType& document) { + static const Ch kRefString[] = { '$', 'r', 'e', 'f', '\0' }; + static const ValueType kRefValue(kRefString, 4); + + typename ValueType::ConstMemberIterator itr = v.FindMember(kRefValue); + if (itr == v.MemberEnd()) + return false; + + if (itr->value.IsString()) { + SizeType len = itr->value.GetStringLength(); + if (len > 0) { + const Ch* s = itr->value.GetString(); + SizeType i = 0; + while (i < len && s[i] != '#') // Find the first # + i++; + + if (i > 0) { // Remote reference, resolve immediately + if (remoteProvider_) { + if (const GenericSchemaDocument* remoteDocument = remoteProvider_->GetRemoteDocument(s, i)) { + PointerType pointer(&s[i], len - i, allocator_); + if (pointer.IsValid()) { + if (const SchemaType* sc = remoteDocument->GetSchema(pointer)) { + if (schema) + *schema = sc; + new (schemaMap_.template Push<SchemaEntry>()) SchemaEntry(source, const_cast<SchemaType*>(sc), false, allocator_); + return true; + } + } + } + } + } + else if (s[i] == '#') { // Local reference, defer resolution + PointerType pointer(&s[i], len - i, allocator_); + if (pointer.IsValid()) { + if (const ValueType* nv = pointer.Get(document)) + if (HandleRefSchema(source, schema, *nv, document)) + return true; + + new (schemaRef_.template Push<SchemaRefEntry>()) SchemaRefEntry(source, pointer, schema, allocator_); + return true; + } + } + } + } + return false; + } + + const SchemaType* GetSchema(const PointerType& pointer) const { + for (const SchemaEntry* target = schemaMap_.template Bottom<SchemaEntry>(); target != schemaMap_.template End<SchemaEntry>(); ++target) + if (pointer == target->pointer) + return target->schema; + return 0; + } + + PointerType GetPointer(const SchemaType* schema) const { + for (const SchemaEntry* target = schemaMap_.template Bottom<SchemaEntry>(); target != schemaMap_.template End<SchemaEntry>(); ++target) + if (schema == target->schema) + return target->pointer; + return PointerType(); + } + + const SchemaType* GetTypeless() const { return typeless_; } + + static const size_t kInitialSchemaMapSize = 64; + static const size_t kInitialSchemaRefSize = 64; + + IRemoteSchemaDocumentProviderType* remoteProvider_; + Allocator *allocator_; + Allocator *ownAllocator_; + const SchemaType* root_; //!< Root schema. + SchemaType* typeless_; + internal::Stack<Allocator> schemaMap_; // Stores created Pointer -> Schemas + internal::Stack<Allocator> schemaRef_; // Stores Pointer from $ref and schema which holds the $ref + URIType uri_; +}; + +//! GenericSchemaDocument using Value type. +typedef GenericSchemaDocument<Value> SchemaDocument; +//! IGenericRemoteSchemaDocumentProvider using SchemaDocument. +typedef IGenericRemoteSchemaDocumentProvider<SchemaDocument> IRemoteSchemaDocumentProvider; + +/////////////////////////////////////////////////////////////////////////////// +// GenericSchemaValidator + +//! JSON Schema Validator. +/*! + A SAX style JSON schema validator. + It uses a \c GenericSchemaDocument to validate SAX events. + It delegates the incoming SAX events to an output handler. + The default output handler does nothing. + It can be reused multiple times by calling \c Reset(). + + \tparam SchemaDocumentType Type of schema document. + \tparam OutputHandler Type of output handler. Default handler does nothing. + \tparam StateAllocator Allocator for storing the internal validation states. +*/ +template < + typename SchemaDocumentType, + typename OutputHandler = BaseReaderHandler<typename SchemaDocumentType::SchemaType::EncodingType>, + typename StateAllocator = CrtAllocator> +class GenericSchemaValidator : + public internal::ISchemaStateFactory<typename SchemaDocumentType::SchemaType>, + public internal::ISchemaValidator, + public internal::IValidationErrorHandler<typename SchemaDocumentType::SchemaType> +{ +public: + typedef typename SchemaDocumentType::SchemaType SchemaType; + typedef typename SchemaDocumentType::PointerType PointerType; + typedef typename SchemaType::EncodingType EncodingType; + typedef typename SchemaType::SValue SValue; + typedef typename EncodingType::Ch Ch; + typedef GenericStringRef<Ch> StringRefType; + typedef GenericValue<EncodingType, StateAllocator> ValueType; + + //! Constructor without output handler. + /*! + \param schemaDocument The schema document to conform to. + \param allocator Optional allocator for storing internal validation states. + \param schemaStackCapacity Optional initial capacity of schema path stack. + \param documentStackCapacity Optional initial capacity of document path stack. + */ + GenericSchemaValidator( + const SchemaDocumentType& schemaDocument, + StateAllocator* allocator = 0, + size_t schemaStackCapacity = kDefaultSchemaStackCapacity, + size_t documentStackCapacity = kDefaultDocumentStackCapacity) + : + schemaDocument_(&schemaDocument), + root_(schemaDocument.GetRoot()), + stateAllocator_(allocator), + ownStateAllocator_(0), + schemaStack_(allocator, schemaStackCapacity), + documentStack_(allocator, documentStackCapacity), + outputHandler_(0), + error_(kObjectType), + currentError_(), + missingDependents_(), + valid_(true) +#if RAPIDJSON_SCHEMA_VERBOSE + , depth_(0) +#endif + { + } + + //! Constructor with output handler. + /*! + \param schemaDocument The schema document to conform to. + \param allocator Optional allocator for storing internal validation states. + \param schemaStackCapacity Optional initial capacity of schema path stack. + \param documentStackCapacity Optional initial capacity of document path stack. + */ + GenericSchemaValidator( + const SchemaDocumentType& schemaDocument, + OutputHandler& outputHandler, + StateAllocator* allocator = 0, + size_t schemaStackCapacity = kDefaultSchemaStackCapacity, + size_t documentStackCapacity = kDefaultDocumentStackCapacity) + : + schemaDocument_(&schemaDocument), + root_(schemaDocument.GetRoot()), + stateAllocator_(allocator), + ownStateAllocator_(0), + schemaStack_(allocator, schemaStackCapacity), + documentStack_(allocator, documentStackCapacity), + outputHandler_(&outputHandler), + error_(kObjectType), + currentError_(), + missingDependents_(), + valid_(true) +#if RAPIDJSON_SCHEMA_VERBOSE + , depth_(0) +#endif + { + } + + //! Destructor. + ~GenericSchemaValidator() { + Reset(); + RAPIDJSON_DELETE(ownStateAllocator_); + } + + //! Reset the internal states. + void Reset() { + while (!schemaStack_.Empty()) + PopSchema(); + documentStack_.Clear(); + error_.SetObject(); + currentError_.SetNull(); + missingDependents_.SetNull(); + valid_ = true; + } + + //! Checks whether the current state is valid. + // Implementation of ISchemaValidator + virtual bool IsValid() const { return valid_; } + + //! Gets the error object. + ValueType& GetError() { return error_; } + const ValueType& GetError() const { return error_; } + + //! Gets the JSON pointer pointed to the invalid schema. + PointerType GetInvalidSchemaPointer() const { + return schemaStack_.Empty() ? PointerType() : CurrentSchema().GetPointer(); + } + + //! Gets the keyword of invalid schema. + const Ch* GetInvalidSchemaKeyword() const { + return schemaStack_.Empty() ? 0 : CurrentContext().invalidKeyword; + } + + //! Gets the JSON pointer pointed to the invalid value. + PointerType GetInvalidDocumentPointer() const { + if (documentStack_.Empty()) { + return PointerType(); + } + else { + return PointerType(documentStack_.template Bottom<Ch>(), documentStack_.GetSize() / sizeof(Ch)); + } + } + + void NotMultipleOf(int64_t actual, const SValue& expected) { + AddNumberError(SchemaType::GetMultipleOfString(), ValueType(actual).Move(), expected); + } + void NotMultipleOf(uint64_t actual, const SValue& expected) { + AddNumberError(SchemaType::GetMultipleOfString(), ValueType(actual).Move(), expected); + } + void NotMultipleOf(double actual, const SValue& expected) { + AddNumberError(SchemaType::GetMultipleOfString(), ValueType(actual).Move(), expected); + } + void AboveMaximum(int64_t actual, const SValue& expected, bool exclusive) { + AddNumberError(SchemaType::GetMaximumString(), ValueType(actual).Move(), expected, + exclusive ? &SchemaType::GetExclusiveMaximumString : 0); + } + void AboveMaximum(uint64_t actual, const SValue& expected, bool exclusive) { + AddNumberError(SchemaType::GetMaximumString(), ValueType(actual).Move(), expected, + exclusive ? &SchemaType::GetExclusiveMaximumString : 0); + } + void AboveMaximum(double actual, const SValue& expected, bool exclusive) { + AddNumberError(SchemaType::GetMaximumString(), ValueType(actual).Move(), expected, + exclusive ? &SchemaType::GetExclusiveMaximumString : 0); + } + void BelowMinimum(int64_t actual, const SValue& expected, bool exclusive) { + AddNumberError(SchemaType::GetMinimumString(), ValueType(actual).Move(), expected, + exclusive ? &SchemaType::GetExclusiveMinimumString : 0); + } + void BelowMinimum(uint64_t actual, const SValue& expected, bool exclusive) { + AddNumberError(SchemaType::GetMinimumString(), ValueType(actual).Move(), expected, + exclusive ? &SchemaType::GetExclusiveMinimumString : 0); + } + void BelowMinimum(double actual, const SValue& expected, bool exclusive) { + AddNumberError(SchemaType::GetMinimumString(), ValueType(actual).Move(), expected, + exclusive ? &SchemaType::GetExclusiveMinimumString : 0); + } + + void TooLong(const Ch* str, SizeType length, SizeType expected) { + AddNumberError(SchemaType::GetMaxLengthString(), + ValueType(str, length, GetStateAllocator()).Move(), SValue(expected).Move()); + } + void TooShort(const Ch* str, SizeType length, SizeType expected) { + AddNumberError(SchemaType::GetMinLengthString(), + ValueType(str, length, GetStateAllocator()).Move(), SValue(expected).Move()); + } + void DoesNotMatch(const Ch* str, SizeType length) { + currentError_.SetObject(); + currentError_.AddMember(GetActualString(), ValueType(str, length, GetStateAllocator()).Move(), GetStateAllocator()); + AddCurrentError(SchemaType::GetPatternString()); + } + + void DisallowedItem(SizeType index) { + currentError_.SetObject(); + currentError_.AddMember(GetDisallowedString(), ValueType(index).Move(), GetStateAllocator()); + AddCurrentError(SchemaType::GetAdditionalItemsString(), true); + } + void TooFewItems(SizeType actualCount, SizeType expectedCount) { + AddNumberError(SchemaType::GetMinItemsString(), + ValueType(actualCount).Move(), SValue(expectedCount).Move()); + } + void TooManyItems(SizeType actualCount, SizeType expectedCount) { + AddNumberError(SchemaType::GetMaxItemsString(), + ValueType(actualCount).Move(), SValue(expectedCount).Move()); + } + void DuplicateItems(SizeType index1, SizeType index2) { + ValueType duplicates(kArrayType); + duplicates.PushBack(index1, GetStateAllocator()); + duplicates.PushBack(index2, GetStateAllocator()); + currentError_.SetObject(); + currentError_.AddMember(GetDuplicatesString(), duplicates, GetStateAllocator()); + AddCurrentError(SchemaType::GetUniqueItemsString(), true); + } + + void TooManyProperties(SizeType actualCount, SizeType expectedCount) { + AddNumberError(SchemaType::GetMaxPropertiesString(), + ValueType(actualCount).Move(), SValue(expectedCount).Move()); + } + void TooFewProperties(SizeType actualCount, SizeType expectedCount) { + AddNumberError(SchemaType::GetMinPropertiesString(), + ValueType(actualCount).Move(), SValue(expectedCount).Move()); + } + void StartMissingProperties() { + currentError_.SetArray(); + } + void AddMissingProperty(const SValue& name) { + currentError_.PushBack(ValueType(name, GetStateAllocator()).Move(), GetStateAllocator()); + } + bool EndMissingProperties() { + if (currentError_.Empty()) + return false; + ValueType error(kObjectType); + error.AddMember(GetMissingString(), currentError_, GetStateAllocator()); + currentError_ = error; + AddCurrentError(SchemaType::GetRequiredString()); + return true; + } + void PropertyViolations(ISchemaValidator** subvalidators, SizeType count) { + for (SizeType i = 0; i < count; ++i) + MergeError(static_cast<GenericSchemaValidator*>(subvalidators[i])->GetError()); + } + void DisallowedProperty(const Ch* name, SizeType length) { + currentError_.SetObject(); + currentError_.AddMember(GetDisallowedString(), ValueType(name, length, GetStateAllocator()).Move(), GetStateAllocator()); + AddCurrentError(SchemaType::GetAdditionalPropertiesString(), true); + } + + void StartDependencyErrors() { + currentError_.SetObject(); + } + void StartMissingDependentProperties() { + missingDependents_.SetArray(); + } + void AddMissingDependentProperty(const SValue& targetName) { + missingDependents_.PushBack(ValueType(targetName, GetStateAllocator()).Move(), GetStateAllocator()); + } + void EndMissingDependentProperties(const SValue& sourceName) { + if (!missingDependents_.Empty()) + currentError_.AddMember(ValueType(sourceName, GetStateAllocator()).Move(), + missingDependents_, GetStateAllocator()); + } + void AddDependencySchemaError(const SValue& sourceName, ISchemaValidator* subvalidator) { + currentError_.AddMember(ValueType(sourceName, GetStateAllocator()).Move(), + static_cast<GenericSchemaValidator*>(subvalidator)->GetError(), GetStateAllocator()); + } + bool EndDependencyErrors() { + if (currentError_.ObjectEmpty()) + return false; + ValueType error(kObjectType); + error.AddMember(GetErrorsString(), currentError_, GetStateAllocator()); + currentError_ = error; + AddCurrentError(SchemaType::GetDependenciesString()); + return true; + } + + void DisallowedValue() { + currentError_.SetObject(); + AddCurrentError(SchemaType::GetEnumString()); + } + void StartDisallowedType() { + currentError_.SetArray(); + } + void AddExpectedType(const typename SchemaType::ValueType& expectedType) { + currentError_.PushBack(ValueType(expectedType, GetStateAllocator()).Move(), GetStateAllocator()); + } + void EndDisallowedType(const typename SchemaType::ValueType& actualType) { + ValueType error(kObjectType); + error.AddMember(GetExpectedString(), currentError_, GetStateAllocator()); + error.AddMember(GetActualString(), ValueType(actualType, GetStateAllocator()).Move(), GetStateAllocator()); + currentError_ = error; + AddCurrentError(SchemaType::GetTypeString()); + } + void NotAllOf(ISchemaValidator** subvalidators, SizeType count) { + for (SizeType i = 0; i < count; ++i) { + MergeError(static_cast<GenericSchemaValidator*>(subvalidators[i])->GetError()); + } + } + void NoneOf(ISchemaValidator** subvalidators, SizeType count) { + AddErrorArray(SchemaType::GetAnyOfString(), subvalidators, count); + } + void NotOneOf(ISchemaValidator** subvalidators, SizeType count) { + AddErrorArray(SchemaType::GetOneOfString(), subvalidators, count); + } + void Disallowed() { + currentError_.SetObject(); + AddCurrentError(SchemaType::GetNotString()); + } + +#define RAPIDJSON_STRING_(name, ...) \ + static const StringRefType& Get##name##String() {\ + static const Ch s[] = { __VA_ARGS__, '\0' };\ + static const StringRefType v(s, static_cast<SizeType>(sizeof(s) / sizeof(Ch) - 1)); \ + return v;\ + } + + RAPIDJSON_STRING_(InstanceRef, 'i', 'n', 's', 't', 'a', 'n', 'c', 'e', 'R', 'e', 'f') + RAPIDJSON_STRING_(SchemaRef, 's', 'c', 'h', 'e', 'm', 'a', 'R', 'e', 'f') + RAPIDJSON_STRING_(Expected, 'e', 'x', 'p', 'e', 'c', 't', 'e', 'd') + RAPIDJSON_STRING_(Actual, 'a', 'c', 't', 'u', 'a', 'l') + RAPIDJSON_STRING_(Disallowed, 'd', 'i', 's', 'a', 'l', 'l', 'o', 'w', 'e', 'd') + RAPIDJSON_STRING_(Missing, 'm', 'i', 's', 's', 'i', 'n', 'g') + RAPIDJSON_STRING_(Errors, 'e', 'r', 'r', 'o', 'r', 's') + RAPIDJSON_STRING_(Duplicates, 'd', 'u', 'p', 'l', 'i', 'c', 'a', 't', 'e', 's') + +#undef RAPIDJSON_STRING_ + +#if RAPIDJSON_SCHEMA_VERBOSE +#define RAPIDJSON_SCHEMA_HANDLE_BEGIN_VERBOSE_() \ +RAPIDJSON_MULTILINEMACRO_BEGIN\ + *documentStack_.template Push<Ch>() = '\0';\ + documentStack_.template Pop<Ch>(1);\ + internal::PrintInvalidDocument(documentStack_.template Bottom<Ch>());\ +RAPIDJSON_MULTILINEMACRO_END +#else +#define RAPIDJSON_SCHEMA_HANDLE_BEGIN_VERBOSE_() +#endif + +#define RAPIDJSON_SCHEMA_HANDLE_BEGIN_(method, arg1)\ + if (!valid_) return false; \ + if (!BeginValue() || !CurrentSchema().method arg1) {\ + RAPIDJSON_SCHEMA_HANDLE_BEGIN_VERBOSE_();\ + return valid_ = false;\ + } + +#define RAPIDJSON_SCHEMA_HANDLE_PARALLEL_(method, arg2)\ + for (Context* context = schemaStack_.template Bottom<Context>(); context != schemaStack_.template End<Context>(); context++) {\ + if (context->hasher)\ + static_cast<HasherType*>(context->hasher)->method arg2;\ + if (context->validators)\ + for (SizeType i_ = 0; i_ < context->validatorCount; i_++)\ + static_cast<GenericSchemaValidator*>(context->validators[i_])->method arg2;\ + if (context->patternPropertiesValidators)\ + for (SizeType i_ = 0; i_ < context->patternPropertiesValidatorCount; i_++)\ + static_cast<GenericSchemaValidator*>(context->patternPropertiesValidators[i_])->method arg2;\ + } + +#define RAPIDJSON_SCHEMA_HANDLE_END_(method, arg2)\ + return valid_ = EndValue() && (!outputHandler_ || outputHandler_->method arg2) + +#define RAPIDJSON_SCHEMA_HANDLE_VALUE_(method, arg1, arg2) \ + RAPIDJSON_SCHEMA_HANDLE_BEGIN_ (method, arg1);\ + RAPIDJSON_SCHEMA_HANDLE_PARALLEL_(method, arg2);\ + RAPIDJSON_SCHEMA_HANDLE_END_ (method, arg2) + + bool Null() { RAPIDJSON_SCHEMA_HANDLE_VALUE_(Null, (CurrentContext()), ( )); } + bool Bool(bool b) { RAPIDJSON_SCHEMA_HANDLE_VALUE_(Bool, (CurrentContext(), b), (b)); } + bool Int(int i) { RAPIDJSON_SCHEMA_HANDLE_VALUE_(Int, (CurrentContext(), i), (i)); } + bool Uint(unsigned u) { RAPIDJSON_SCHEMA_HANDLE_VALUE_(Uint, (CurrentContext(), u), (u)); } + bool Int64(int64_t i) { RAPIDJSON_SCHEMA_HANDLE_VALUE_(Int64, (CurrentContext(), i), (i)); } + bool Uint64(uint64_t u) { RAPIDJSON_SCHEMA_HANDLE_VALUE_(Uint64, (CurrentContext(), u), (u)); } + bool Double(double d) { RAPIDJSON_SCHEMA_HANDLE_VALUE_(Double, (CurrentContext(), d), (d)); } + bool RawNumber(const Ch* str, SizeType length, bool copy) + { RAPIDJSON_SCHEMA_HANDLE_VALUE_(String, (CurrentContext(), str, length, copy), (str, length, copy)); } + bool String(const Ch* str, SizeType length, bool copy) + { RAPIDJSON_SCHEMA_HANDLE_VALUE_(String, (CurrentContext(), str, length, copy), (str, length, copy)); } + + bool StartObject() { + RAPIDJSON_SCHEMA_HANDLE_BEGIN_(StartObject, (CurrentContext())); + RAPIDJSON_SCHEMA_HANDLE_PARALLEL_(StartObject, ()); + return valid_ = !outputHandler_ || outputHandler_->StartObject(); + } + + bool Key(const Ch* str, SizeType len, bool copy) { + if (!valid_) return false; + AppendToken(str, len); + if (!CurrentSchema().Key(CurrentContext(), str, len, copy)) return valid_ = false; + RAPIDJSON_SCHEMA_HANDLE_PARALLEL_(Key, (str, len, copy)); + return valid_ = !outputHandler_ || outputHandler_->Key(str, len, copy); + } + + bool EndObject(SizeType memberCount) { + if (!valid_) return false; + RAPIDJSON_SCHEMA_HANDLE_PARALLEL_(EndObject, (memberCount)); + if (!CurrentSchema().EndObject(CurrentContext(), memberCount)) return valid_ = false; + RAPIDJSON_SCHEMA_HANDLE_END_(EndObject, (memberCount)); + } + + bool StartArray() { + RAPIDJSON_SCHEMA_HANDLE_BEGIN_(StartArray, (CurrentContext())); + RAPIDJSON_SCHEMA_HANDLE_PARALLEL_(StartArray, ()); + return valid_ = !outputHandler_ || outputHandler_->StartArray(); + } + + bool EndArray(SizeType elementCount) { + if (!valid_) return false; + RAPIDJSON_SCHEMA_HANDLE_PARALLEL_(EndArray, (elementCount)); + if (!CurrentSchema().EndArray(CurrentContext(), elementCount)) return valid_ = false; + RAPIDJSON_SCHEMA_HANDLE_END_(EndArray, (elementCount)); + } + +#undef RAPIDJSON_SCHEMA_HANDLE_BEGIN_VERBOSE_ +#undef RAPIDJSON_SCHEMA_HANDLE_BEGIN_ +#undef RAPIDJSON_SCHEMA_HANDLE_PARALLEL_ +#undef RAPIDJSON_SCHEMA_HANDLE_VALUE_ + + // Implementation of ISchemaStateFactory<SchemaType> + virtual ISchemaValidator* CreateSchemaValidator(const SchemaType& root) { + return new (GetStateAllocator().Malloc(sizeof(GenericSchemaValidator))) GenericSchemaValidator(*schemaDocument_, root, documentStack_.template Bottom<char>(), documentStack_.GetSize(), +#if RAPIDJSON_SCHEMA_VERBOSE + depth_ + 1, +#endif + &GetStateAllocator()); + } + + virtual void DestroySchemaValidator(ISchemaValidator* validator) { + GenericSchemaValidator* v = static_cast<GenericSchemaValidator*>(validator); + v->~GenericSchemaValidator(); + StateAllocator::Free(v); + } + + virtual void* CreateHasher() { + return new (GetStateAllocator().Malloc(sizeof(HasherType))) HasherType(&GetStateAllocator()); + } + + virtual uint64_t GetHashCode(void* hasher) { + return static_cast<HasherType*>(hasher)->GetHashCode(); + } + + virtual void DestroryHasher(void* hasher) { + HasherType* h = static_cast<HasherType*>(hasher); + h->~HasherType(); + StateAllocator::Free(h); + } + + virtual void* MallocState(size_t size) { + return GetStateAllocator().Malloc(size); + } + + virtual void FreeState(void* p) { + StateAllocator::Free(p); + } + +private: + typedef typename SchemaType::Context Context; + typedef GenericValue<UTF8<>, StateAllocator> HashCodeArray; + typedef internal::Hasher<EncodingType, StateAllocator> HasherType; + + GenericSchemaValidator( + const SchemaDocumentType& schemaDocument, + const SchemaType& root, + const char* basePath, size_t basePathSize, +#if RAPIDJSON_SCHEMA_VERBOSE + unsigned depth, +#endif + StateAllocator* allocator = 0, + size_t schemaStackCapacity = kDefaultSchemaStackCapacity, + size_t documentStackCapacity = kDefaultDocumentStackCapacity) + : + schemaDocument_(&schemaDocument), + root_(root), + stateAllocator_(allocator), + ownStateAllocator_(0), + schemaStack_(allocator, schemaStackCapacity), + documentStack_(allocator, documentStackCapacity), + outputHandler_(0), + error_(kObjectType), + currentError_(), + missingDependents_(), + valid_(true) +#if RAPIDJSON_SCHEMA_VERBOSE + , depth_(depth) +#endif + { + if (basePath && basePathSize) + memcpy(documentStack_.template Push<char>(basePathSize), basePath, basePathSize); + } + + StateAllocator& GetStateAllocator() { + if (!stateAllocator_) + stateAllocator_ = ownStateAllocator_ = RAPIDJSON_NEW(StateAllocator)(); + return *stateAllocator_; + } + + bool BeginValue() { + if (schemaStack_.Empty()) + PushSchema(root_); + else { + if (CurrentContext().inArray) + internal::TokenHelper<internal::Stack<StateAllocator>, Ch>::AppendIndexToken(documentStack_, CurrentContext().arrayElementIndex); + + if (!CurrentSchema().BeginValue(CurrentContext())) + return false; + + SizeType count = CurrentContext().patternPropertiesSchemaCount; + const SchemaType** sa = CurrentContext().patternPropertiesSchemas; + typename Context::PatternValidatorType patternValidatorType = CurrentContext().valuePatternValidatorType; + bool valueUniqueness = CurrentContext().valueUniqueness; + RAPIDJSON_ASSERT(CurrentContext().valueSchema); + PushSchema(*CurrentContext().valueSchema); + + if (count > 0) { + CurrentContext().objectPatternValidatorType = patternValidatorType; + ISchemaValidator**& va = CurrentContext().patternPropertiesValidators; + SizeType& validatorCount = CurrentContext().patternPropertiesValidatorCount; + va = static_cast<ISchemaValidator**>(MallocState(sizeof(ISchemaValidator*) * count)); + for (SizeType i = 0; i < count; i++) + va[validatorCount++] = CreateSchemaValidator(*sa[i]); + } + + CurrentContext().arrayUniqueness = valueUniqueness; + } + return true; + } + + bool EndValue() { + if (!CurrentSchema().EndValue(CurrentContext())) + return false; + +#if RAPIDJSON_SCHEMA_VERBOSE + GenericStringBuffer<EncodingType> sb; + schemaDocument_->GetPointer(&CurrentSchema()).Stringify(sb); + + *documentStack_.template Push<Ch>() = '\0'; + documentStack_.template Pop<Ch>(1); + internal::PrintValidatorPointers(depth_, sb.GetString(), documentStack_.template Bottom<Ch>()); +#endif + + uint64_t h = CurrentContext().arrayUniqueness ? static_cast<HasherType*>(CurrentContext().hasher)->GetHashCode() : 0; + + PopSchema(); + + if (!schemaStack_.Empty()) { + Context& context = CurrentContext(); + if (context.valueUniqueness) { + HashCodeArray* a = static_cast<HashCodeArray*>(context.arrayElementHashCodes); + if (!a) + CurrentContext().arrayElementHashCodes = a = new (GetStateAllocator().Malloc(sizeof(HashCodeArray))) HashCodeArray(kArrayType); + for (typename HashCodeArray::ConstValueIterator itr = a->Begin(); itr != a->End(); ++itr) + if (itr->GetUint64() == h) { + DuplicateItems(static_cast<SizeType>(itr - a->Begin()), a->Size()); + RAPIDJSON_INVALID_KEYWORD_RETURN(SchemaType::GetUniqueItemsString()); + } + a->PushBack(h, GetStateAllocator()); + } + } + + // Remove the last token of document pointer + while (!documentStack_.Empty() && *documentStack_.template Pop<Ch>(1) != '/') + ; + + return true; + } + + void AppendToken(const Ch* str, SizeType len) { + documentStack_.template Reserve<Ch>(1 + len * 2); // worst case all characters are escaped as two characters + *documentStack_.template PushUnsafe<Ch>() = '/'; + for (SizeType i = 0; i < len; i++) { + if (str[i] == '~') { + *documentStack_.template PushUnsafe<Ch>() = '~'; + *documentStack_.template PushUnsafe<Ch>() = '0'; + } + else if (str[i] == '/') { + *documentStack_.template PushUnsafe<Ch>() = '~'; + *documentStack_.template PushUnsafe<Ch>() = '1'; + } + else + *documentStack_.template PushUnsafe<Ch>() = str[i]; + } + } + + RAPIDJSON_FORCEINLINE void PushSchema(const SchemaType& schema) { new (schemaStack_.template Push<Context>()) Context(*this, *this, &schema); } + + RAPIDJSON_FORCEINLINE void PopSchema() { + Context* c = schemaStack_.template Pop<Context>(1); + if (HashCodeArray* a = static_cast<HashCodeArray*>(c->arrayElementHashCodes)) { + a->~HashCodeArray(); + StateAllocator::Free(a); + } + c->~Context(); + } + + void AddErrorLocation(ValueType& result, bool parent) { + GenericStringBuffer<EncodingType> sb; + PointerType instancePointer = GetInvalidDocumentPointer(); + ((parent && instancePointer.GetTokenCount() > 0) + ? PointerType(instancePointer.GetTokens(), instancePointer.GetTokenCount() - 1) + : instancePointer).StringifyUriFragment(sb); + ValueType instanceRef(sb.GetString(), static_cast<SizeType>(sb.GetSize() / sizeof(Ch)), + GetStateAllocator()); + result.AddMember(GetInstanceRefString(), instanceRef, GetStateAllocator()); + sb.Clear(); + memcpy(sb.Push(CurrentSchema().GetURI().GetStringLength()), + CurrentSchema().GetURI().GetString(), + CurrentSchema().GetURI().GetStringLength() * sizeof(Ch)); + GetInvalidSchemaPointer().StringifyUriFragment(sb); + ValueType schemaRef(sb.GetString(), static_cast<SizeType>(sb.GetSize() / sizeof(Ch)), + GetStateAllocator()); + result.AddMember(GetSchemaRefString(), schemaRef, GetStateAllocator()); + } + + void AddError(ValueType& keyword, ValueType& error) { + typename ValueType::MemberIterator member = error_.FindMember(keyword); + if (member == error_.MemberEnd()) + error_.AddMember(keyword, error, GetStateAllocator()); + else { + if (member->value.IsObject()) { + ValueType errors(kArrayType); + errors.PushBack(member->value, GetStateAllocator()); + member->value = errors; + } + member->value.PushBack(error, GetStateAllocator()); + } + } + + void AddCurrentError(const typename SchemaType::ValueType& keyword, bool parent = false) { + AddErrorLocation(currentError_, parent); + AddError(ValueType(keyword, GetStateAllocator(), false).Move(), currentError_); + } + + void MergeError(ValueType& other) { + for (typename ValueType::MemberIterator it = other.MemberBegin(), end = other.MemberEnd(); it != end; ++it) { + AddError(it->name, it->value); + } + } + + void AddNumberError(const typename SchemaType::ValueType& keyword, ValueType& actual, const SValue& expected, + const typename SchemaType::ValueType& (*exclusive)() = 0) { + currentError_.SetObject(); + currentError_.AddMember(GetActualString(), actual, GetStateAllocator()); + currentError_.AddMember(GetExpectedString(), ValueType(expected, GetStateAllocator()).Move(), GetStateAllocator()); + if (exclusive) + currentError_.AddMember(ValueType(exclusive(), GetStateAllocator()).Move(), true, GetStateAllocator()); + AddCurrentError(keyword); + } + + void AddErrorArray(const typename SchemaType::ValueType& keyword, + ISchemaValidator** subvalidators, SizeType count) { + ValueType errors(kArrayType); + for (SizeType i = 0; i < count; ++i) + errors.PushBack(static_cast<GenericSchemaValidator*>(subvalidators[i])->GetError(), GetStateAllocator()); + currentError_.SetObject(); + currentError_.AddMember(GetErrorsString(), errors, GetStateAllocator()); + AddCurrentError(keyword); + } + + const SchemaType& CurrentSchema() const { return *schemaStack_.template Top<Context>()->schema; } + Context& CurrentContext() { return *schemaStack_.template Top<Context>(); } + const Context& CurrentContext() const { return *schemaStack_.template Top<Context>(); } + + static const size_t kDefaultSchemaStackCapacity = 1024; + static const size_t kDefaultDocumentStackCapacity = 256; + const SchemaDocumentType* schemaDocument_; + const SchemaType& root_; + StateAllocator* stateAllocator_; + StateAllocator* ownStateAllocator_; + internal::Stack<StateAllocator> schemaStack_; //!< stack to store the current path of schema (BaseSchemaType *) + internal::Stack<StateAllocator> documentStack_; //!< stack to store the current path of validating document (Ch) + OutputHandler* outputHandler_; + ValueType error_; + ValueType currentError_; + ValueType missingDependents_; + bool valid_; +#if RAPIDJSON_SCHEMA_VERBOSE + unsigned depth_; +#endif +}; + +typedef GenericSchemaValidator<SchemaDocument> SchemaValidator; + +/////////////////////////////////////////////////////////////////////////////// +// SchemaValidatingReader + +//! A helper class for parsing with validation. +/*! + This helper class is a functor, designed as a parameter of \ref GenericDocument::Populate(). + + \tparam parseFlags Combination of \ref ParseFlag. + \tparam InputStream Type of input stream, implementing Stream concept. + \tparam SourceEncoding Encoding of the input stream. + \tparam SchemaDocumentType Type of schema document. + \tparam StackAllocator Allocator type for stack. +*/ +template < + unsigned parseFlags, + typename InputStream, + typename SourceEncoding, + typename SchemaDocumentType = SchemaDocument, + typename StackAllocator = CrtAllocator> +class SchemaValidatingReader { +public: + typedef typename SchemaDocumentType::PointerType PointerType; + typedef typename InputStream::Ch Ch; + typedef GenericValue<SourceEncoding, StackAllocator> ValueType; + + //! Constructor + /*! + \param is Input stream. + \param sd Schema document. + */ + SchemaValidatingReader(InputStream& is, const SchemaDocumentType& sd) : is_(is), sd_(sd), invalidSchemaKeyword_(), error_(kObjectType), isValid_(true) {} + + template <typename Handler> + bool operator()(Handler& handler) { + GenericReader<SourceEncoding, typename SchemaDocumentType::EncodingType, StackAllocator> reader; + GenericSchemaValidator<SchemaDocumentType, Handler> validator(sd_, handler); + parseResult_ = reader.template Parse<parseFlags>(is_, validator); + + isValid_ = validator.IsValid(); + if (isValid_) { + invalidSchemaPointer_ = PointerType(); + invalidSchemaKeyword_ = 0; + invalidDocumentPointer_ = PointerType(); + error_.SetObject(); + } + else { + invalidSchemaPointer_ = validator.GetInvalidSchemaPointer(); + invalidSchemaKeyword_ = validator.GetInvalidSchemaKeyword(); + invalidDocumentPointer_ = validator.GetInvalidDocumentPointer(); + error_.CopyFrom(validator.GetError(), allocator_); + } + + return parseResult_; + } + + const ParseResult& GetParseResult() const { return parseResult_; } + bool IsValid() const { return isValid_; } + const PointerType& GetInvalidSchemaPointer() const { return invalidSchemaPointer_; } + const Ch* GetInvalidSchemaKeyword() const { return invalidSchemaKeyword_; } + const PointerType& GetInvalidDocumentPointer() const { return invalidDocumentPointer_; } + const ValueType& GetError() const { return error_; } + +private: + InputStream& is_; + const SchemaDocumentType& sd_; + + ParseResult parseResult_; + PointerType invalidSchemaPointer_; + const Ch* invalidSchemaKeyword_; + PointerType invalidDocumentPointer_; + StackAllocator allocator_; + ValueType error_; + bool isValid_; +}; + +RAPIDJSON_NAMESPACE_END +RAPIDJSON_DIAG_POP + +const char* GetParseError_En(rapidjson::ParseErrorCode parseErrorCode); + +#endif // RAPIDJSON_SCHEMA_H_ + +// End file:schema.h + + +// Begin file: stream.h +// already included +// End file:stream.h + + +// Begin file: stringbuffer.h +// already included +// End file:stringbuffer.h + + +// Begin file: writer.h +// already included +// End file:writer.h diff --git a/vendor/texttable/TextTable.h b/vendor/texttable/TextTable.h new file mode 100644 index 000000000..0a6c6d855 --- /dev/null +++ b/vendor/texttable/TextTable.h @@ -0,0 +1,222 @@ +#pragma once + +#include <iomanip> +#include <iostream> +#include <map> +#include <string> +#include <vector> + +#ifdef TEXTTABLE_ENCODE_MULTIBYTE_STRINGS +#include <clocale> +#ifndef TEXTTABLE_USE_EN_US_UTF8 +#define TEXTTABLE_USE_EN_US_UTF8 +#endif +#endif + +class TextTable +{ +public: + enum class Alignment + { + LEFT, + RIGHT + }; + typedef std::vector<std::string> Row; + TextTable() + : _horizontal('-'), _vertical('|'), _corner('+'), _has_ruler(true) {} + + TextTable(char horizontal, char vertical, char corner) + : _horizontal(horizontal), _vertical(vertical), _corner(corner), + _has_ruler(true) {} + + explicit TextTable(char vertical) + : _horizontal('\0'), _vertical(vertical), _corner('\0'), + _has_ruler(false) {} + + void setAlignment(unsigned i, Alignment alignment) + { + _alignment[i] = alignment; + } + + Alignment alignment(unsigned i) const { return _alignment[i]; } + + char vertical() const { return _vertical; } + + char horizontal() const { return _horizontal; } + + void add(const std::string &content) { _current.push_back(content); } + + void endOfRow() + { + _rows.push_back(_current); + _current.assign(0, ""); + } + + template <typename Iterator> + void addRow(Iterator begin, Iterator end) + { + for (auto i = begin; i != end; ++i) + { + add(*i); + } + endOfRow(); + } + + template <typename Container> + void addRow(const Container &container) + { + addRow(container.begin(), container.end()); + } + + const std::vector<Row> &rows() const { return _rows; } + + void setup() const + { + determineWidths(); + setupAlignment(); + } + + std::string ruler() const + { + std::string result; + result += _corner; + for (auto width = _width.begin(); width != _width.end(); ++width) + { + result += repeat(*width, _horizontal); + result += _corner; + } + + return result; + } + + int width(unsigned i) const { return _width[i]; } + + bool has_ruler() const { return _has_ruler; } + + int correctDistance(const std::string &string_to_correct) const + { + return static_cast<int>(string_to_correct.size()) - + static_cast<int>(glyphLength(string_to_correct)); + }; + +private: + const char _horizontal; + const char _vertical; + const char _corner; + const bool _has_ruler; + Row _current; + std::vector<Row> _rows; + std::vector<unsigned> mutable _width; + std::vector<unsigned> mutable _utf8width; + std::map<unsigned, Alignment> mutable _alignment; + + static std::string repeat(unsigned times, char c) + { + std::string result; + for (; times > 0; --times) + result += c; + + return result; + } + + unsigned columns() const { return (unsigned)_rows[0].size(); } + + unsigned glyphLength(const std::string &s) const + { + unsigned int _byteLength = (unsigned int)(s.length()); +#ifdef TEXTTABLE_ENCODE_MULTIBYTE_STRINGS +#ifdef TEXTTABLE_USE_EN_US_UTF8 + std::setlocale(LC_ALL, "en_US.utf8"); +#else +#error You need to specify the encoding if the TextTable library uses multybyte string encoding! +#endif + unsigned int u = 0; + const char *c_str = s.c_str(); + unsigned _glyphLength = 0; + while (u < _byteLength) + { + u += std::mblen(&c_str[u], _byteLength - u); + _glyphLength += 1; + } + return _glyphLength; +#else + return _byteLength; +#endif + } + + void determineWidths() const + { + if (_rows.empty()) + { + return; + } + _width.assign(columns(), 0); + _utf8width.assign(columns(), 0); + for (auto rowIterator = _rows.begin(); rowIterator != _rows.end(); + ++rowIterator) + { + Row const &row = *rowIterator; + for (unsigned i = 0; i < row.size(); ++i) + { + _width[i] = + _width[i] > glyphLength(row[i]) ? _width[i] : glyphLength(row[i]); + } + } + } + + void setupAlignment() const + { + if (_rows.empty()) + { + return; + } + for (unsigned i = 0; i < columns(); ++i) + { + if (_alignment.find(i) == _alignment.end()) + { + _alignment[i] = Alignment::LEFT; + } + } + } +}; + +inline std::ostream &operator<<(std::ostream &stream, const TextTable &table) +{ + if (table.rows().empty()) + { + return stream; + } + table.setup(); + if (table.has_ruler()) + { + stream << table.ruler() << "\n"; + } + for (auto rowIterator = table.rows().begin(); + rowIterator != table.rows().end(); ++rowIterator) + { + TextTable::Row const &row = *rowIterator; + stream << table.vertical(); + for (unsigned i = 0; i < row.size(); ++i) + { + auto alignment = table.alignment(i) == TextTable::Alignment::LEFT + ? std::left + : std::right; + // std::setw( width ) works as follows: a string which goes in the stream + // with byte length (!) l is filled with n spaces so that l+n=width. For a + // utf8 encoded string the glyph length g might be smaller than l. We need + // n spaces so that g+n=width which is equivalent to g+n+l-l=width ==> l+n + // = width+l-g l-g (that means glyph length minus byte length) has to be + // added to the width argument. l-g is computed by correctDistance. + stream << std::setw(table.width(i) + table.correctDistance(row[i])) + << alignment << row[i]; + stream << table.vertical(); + } + stream << "\n"; + if (table.has_ruler()) + { + stream << table.ruler() << "\n"; + } + } + + return stream; +} From 4d30a68428de78613244be7fb4084030735e4a37 Mon Sep 17 00:00:00 2001 From: Andrei Sebastian <andreieurt@gmail.com> Date: Tue, 22 Apr 2025 17:48:11 +0000 Subject: [PATCH 3/3] update(files): Initialize Submodules --- .github/workflows/builder.yml | 1 + alliedmodders/hl2sdk-cs2 | 1 + alliedmodders/hl2sdk-manifests | 1 + alliedmodders/metamod | 1 + vendor/asmjit | 1 + vendor/asmtk | 1 + vendor/dynlibutils | 1 + vendor/embedder | 1 + vendor/lua-rapidjson | 1 + vendor/swiftly-ext | 1 + 10 files changed, 10 insertions(+) create mode 160000 alliedmodders/hl2sdk-cs2 create mode 160000 alliedmodders/hl2sdk-manifests create mode 160000 alliedmodders/metamod create mode 160000 vendor/asmjit create mode 160000 vendor/asmtk create mode 160000 vendor/dynlibutils create mode 160000 vendor/embedder create mode 160000 vendor/lua-rapidjson create mode 160000 vendor/swiftly-ext diff --git a/.github/workflows/builder.yml b/.github/workflows/builder.yml index 318189d9c..f11df61db 100644 --- a/.github/workflows/builder.yml +++ b/.github/workflows/builder.yml @@ -268,6 +268,7 @@ jobs: with: tag_name: v${{ needs.versioning.outputs.version }} make_latest: "true" + body: "Changelog for this version can be found inside [CHANGELOG.md](https://github.com/swiftly-solution/swiftly/blob/master/CHANGELOG.md)" files: | ${{env.PATH_ARTIFACTS}}/Swiftly.Plugin.Linux.zip ${{env.PATH_ARTIFACTS}}/Swiftly.Plugin.Windows.zip diff --git a/alliedmodders/hl2sdk-cs2 b/alliedmodders/hl2sdk-cs2 new file mode 160000 index 000000000..bc5958697 --- /dev/null +++ b/alliedmodders/hl2sdk-cs2 @@ -0,0 +1 @@ +Subproject commit bc59586979ae55578a00e502fcf88f69f5588b52 diff --git a/alliedmodders/hl2sdk-manifests b/alliedmodders/hl2sdk-manifests new file mode 160000 index 000000000..38b4f3670 --- /dev/null +++ b/alliedmodders/hl2sdk-manifests @@ -0,0 +1 @@ +Subproject commit 38b4f3670826bbfe7c536ef33ec53f5971d419e2 diff --git a/alliedmodders/metamod b/alliedmodders/metamod new file mode 160000 index 000000000..6091f1521 --- /dev/null +++ b/alliedmodders/metamod @@ -0,0 +1 @@ +Subproject commit 6091f15217cdde3a043c2d0dc6bf9bdf20bdbc13 diff --git a/vendor/asmjit b/vendor/asmjit new file mode 160000 index 000000000..67847228e --- /dev/null +++ b/vendor/asmjit @@ -0,0 +1 @@ +Subproject commit 67847228e715cb56680827a334335475b0dc6f67 diff --git a/vendor/asmtk b/vendor/asmtk new file mode 160000 index 000000000..e2752c85d --- /dev/null +++ b/vendor/asmtk @@ -0,0 +1 @@ +Subproject commit e2752c85d39da4b0c5c729737a6faa25286b8e0c diff --git a/vendor/dynlibutils b/vendor/dynlibutils new file mode 160000 index 000000000..cc8b6ade9 --- /dev/null +++ b/vendor/dynlibutils @@ -0,0 +1 @@ +Subproject commit cc8b6ade9e912012d21d3fe4d07b98bd215abbe2 diff --git a/vendor/embedder b/vendor/embedder new file mode 160000 index 000000000..743f1f1ec --- /dev/null +++ b/vendor/embedder @@ -0,0 +1 @@ +Subproject commit 743f1f1ec6394e1fcc8f4835fb9df982b4ffb408 diff --git a/vendor/lua-rapidjson b/vendor/lua-rapidjson new file mode 160000 index 000000000..c06b8a64a --- /dev/null +++ b/vendor/lua-rapidjson @@ -0,0 +1 @@ +Subproject commit c06b8a64a1c4173e2c38651952e0ead0372dd5e5 diff --git a/vendor/swiftly-ext b/vendor/swiftly-ext new file mode 160000 index 000000000..9ed414472 --- /dev/null +++ b/vendor/swiftly-ext @@ -0,0 +1 @@ +Subproject commit 9ed4144721605b6c8ff8d70b0c925440012181d0