├── WTT ├── UAssetAPI │ ├── git_commit.txt │ ├── Resources │ │ └── AC7Key.bin │ ├── Kismet │ │ └── Bytecode │ │ │ ├── EScriptInstrumentationType.cs │ │ │ ├── Expressions │ │ │ ├── EX_Self.cs │ │ │ ├── EX_True.cs │ │ │ ├── EX_False.cs │ │ │ ├── EX_EndMap.cs │ │ │ ├── EX_EndSet.cs │ │ │ ├── EX_IntOne.cs │ │ │ ├── EX_IntZero.cs │ │ │ ├── EX_EndArray.cs │ │ │ ├── EX_NoObject.cs │ │ │ ├── EX_Breakpoint.cs │ │ │ ├── EX_Tracepoint.cs │ │ │ ├── EX_EndMapConst.cs │ │ │ ├── EX_EndOfScript.cs │ │ │ ├── EX_EndSetConst.cs │ │ │ ├── EX_NoInterface.cs │ │ │ ├── EX_EndParmValue.cs │ │ │ ├── EX_EndArrayConst.cs │ │ │ ├── EX_Nothing.cs │ │ │ ├── EX_DeprecatedOp4A.cs │ │ │ ├── EX_EndStructConst.cs │ │ │ ├── EX_WireTracepoint.cs │ │ │ ├── EX_EndFunctionParms.cs │ │ │ ├── EX_PopExecutionFlow.cs │ │ │ ├── EX_CallMath.cs │ │ │ ├── EX_ClassContext.cs │ │ │ ├── EX_StringConst.cs │ │ │ ├── EX_Context_FailSilent.cs │ │ │ ├── EX_IntConst.cs │ │ │ ├── EX_ByteConst.cs │ │ │ ├── EX_Int64Const.cs │ │ │ ├── EX_LocalFinalFunction.cs │ │ │ ├── EX_IntConstByte.cs │ │ │ ├── EX_NameConst.cs │ │ │ ├── EX_TextConst.cs │ │ │ ├── EX_UInt64Const.cs │ │ │ ├── EX_LocalVirtualFunction.cs │ │ │ ├── EX_UnicodeStringConst.cs │ │ │ ├── EX_ObjectConst.cs │ │ │ ├── EX_FieldPathConst.cs │ │ │ ├── EX_SoftObjectConst.cs │ │ │ ├── EX_SkipOffsetConst.cs │ │ │ ├── EX_Jump.cs │ │ │ ├── EX_VectorConst.cs │ │ │ ├── EX_LocalVariable.cs │ │ │ ├── EX_PropertyConst.cs │ │ │ ├── EX_Return.cs │ │ │ ├── EX_DefaultVariable.cs │ │ │ ├── EX_InstanceVariable.cs │ │ │ ├── EX_LocalOutVariable.cs │ │ │ ├── EX_InstanceDelegate.cs │ │ │ ├── EX_InterfaceContext.cs │ │ │ ├── EX_PushExecutionFlow.cs │ │ │ ├── EX_ClassSparseDataVariable.cs │ │ │ ├── EX_FloatConst.cs │ │ │ ├── EX_ComputedJump.cs │ │ │ ├── EX_ClearMulticastDelegate.cs │ │ │ ├── EX_PopExecutionFlowIfNot.cs │ │ │ ├── EX_Skip.cs │ │ │ ├── EX_MetaCast.cs │ │ │ ├── EX_PrimitiveCast.cs │ │ │ ├── EX_DynamicCast.cs │ │ │ ├── EX_InterfaceToObjCast.cs │ │ │ ├── EX_CrossInterfaceCast.cs │ │ │ ├── EX_ArrayGetByRef.cs │ │ │ ├── EX_LetBool.cs │ │ │ ├── EX_LetObj.cs │ │ │ ├── EX_Let.cs │ │ │ ├── EX_LetDelegate.cs │ │ │ ├── EX_LetWeakObjPtr.cs │ │ │ ├── EX_InstrumentationEvent.cs │ │ │ └── EX_AddMulticastDelegate.cs │ │ │ ├── EBlueprintTextLiteralType.cs │ │ │ └── KismetPropertyPointer.cs │ ├── PropertyTypes │ │ ├── Objects │ │ │ ├── TextHistoryType.cs │ │ │ ├── BoolPropertyData.cs │ │ │ ├── NamePropertyData.cs │ │ │ ├── IntPropertyData.cs │ │ │ ├── Int64PropertyData.cs │ │ │ ├── Int8PropertyData.cs │ │ │ ├── Int16PropertyData.cs │ │ │ ├── UInt32PropertyData.cs │ │ │ ├── UInt64PropertyData.cs │ │ │ ├── UInt16PropertyData.cs │ │ │ ├── StrPropertyData.cs │ │ │ ├── FloatPropertyData.cs │ │ │ └── DoublePropertyData.cs │ │ └── Structs │ │ │ ├── SoftAssetPathPropertyData.cs │ │ │ ├── SkeletalMeshAreaWeightedTriangleSamplerPropertyData.cs │ │ │ ├── SoftClassPathPropertyData.cs │ │ │ ├── Movies │ │ │ ├── Range.cs │ │ │ ├── MovieSceneTrackIdentifierPropertyData.cs │ │ │ └── MovieSceneSegmentIdentifierPropertyData.cs │ │ │ ├── SkeletalMeshSamplingLODBuiltDataPropertyData.cs │ │ │ └── GuidPropertyData.cs │ ├── FieldTypes │ │ └── EArrayDim.cs │ ├── JSON │ │ ├── UAssetContractResolver.cs │ │ ├── FPackageIndexJsonConverter.cs │ │ ├── FStringJsonConverter.cs │ │ ├── FNameJsonConverter.cs │ │ └── FSignedZeroJsonConverter.cs │ ├── UnrealTypes │ │ ├── FFieldPath.cs │ │ ├── FObjectResource.cs │ │ ├── FVector.cs │ │ ├── FRotator.cs │ │ └── FQuat.cs │ ├── ExportTypes │ │ ├── RawExport.cs │ │ ├── FieldExport.cs │ │ ├── FunctionExport.cs │ │ └── PropertyExport.cs │ ├── Import.cs │ ├── Properties │ │ └── AssemblyInfo.cs │ ├── UAssetAPI.csproj │ └── Unversioned │ │ └── FFragment.cs ├── .idea │ └── .idea.UAssetAPI │ │ └── .idea │ │ ├── encodings.xml │ │ ├── vcs.xml │ │ ├── indexLayout.xml │ │ └── .gitignore ├── WTT │ ├── ImportSettings.cs │ ├── Exceptions │ │ ├── UnhandledTomlError.cs │ │ ├── MissingKeyException.cs │ │ ├── DuplicateKeyException.cs │ │ └── UnsupportedAssetException.cs │ ├── WTT.csproj │ ├── Language.cs │ ├── TomlTableExtensions.cs │ ├── YesNoPrompt.cs │ └── ExportSettings.cs └── LICENSE ├── MercuryPatcher ├── css │ ├── file.eot │ ├── file.ttf │ ├── file.woff │ └── file.svg ├── README.md └── LICENSE ├── galliumhook ├── galliumhook │ ├── framework.h │ ├── pch.cpp │ ├── pch.h │ └── galliumhook.vcxproj.filters ├── minhook-multihook │ ├── AUTHORS.txt │ ├── build │ │ ├── MinGW │ │ │ ├── make.bat │ │ │ └── Makefile │ │ ├── VC10 │ │ │ └── libMinHook.vcxproj.filters │ │ ├── VC11 │ │ │ └── libMinHook.vcxproj.filters │ │ ├── VC12 │ │ │ └── libMinHook.vcxproj.filters │ │ ├── VC14 │ │ │ └── libMinHook.vcxproj.filters │ │ ├── VC15 │ │ │ └── libMinHook.vcxproj.filters │ │ └── VC16 │ │ │ └── libMinHook.vcxproj.filters │ ├── .editorconfig │ ├── dll_resources │ │ ├── MinHook.def │ │ └── MinHook.rc │ ├── .gitignore │ ├── src │ │ ├── hde │ │ │ └── pstdint.h │ │ └── buffer.h │ └── cmake │ │ └── minhook-config.cmake.in ├── README.md └── galliumhook.sln ├── README.md └── .github └── workflows ├── galliumhook.yml └── WTT.yml /WTT/UAssetAPI/git_commit.txt: -------------------------------------------------------------------------------- 1 | 73b79b0 2 | -------------------------------------------------------------------------------- /MercuryPatcher/css/file.eot: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Raymonf/whack/HEAD/MercuryPatcher/css/file.eot -------------------------------------------------------------------------------- /MercuryPatcher/css/file.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Raymonf/whack/HEAD/MercuryPatcher/css/file.ttf -------------------------------------------------------------------------------- /MercuryPatcher/css/file.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Raymonf/whack/HEAD/MercuryPatcher/css/file.woff -------------------------------------------------------------------------------- /WTT/UAssetAPI/Resources/AC7Key.bin: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Raymonf/whack/HEAD/WTT/UAssetAPI/Resources/AC7Key.bin -------------------------------------------------------------------------------- /galliumhook/galliumhook/framework.h: -------------------------------------------------------------------------------- 1 | #pragma once 2 | 3 | #define WIN32_LEAN_AND_MEAN // Exclude rarely-used stuff from Windows headers 4 | // Windows Header Files 5 | #include 6 | -------------------------------------------------------------------------------- /MercuryPatcher/README.md: -------------------------------------------------------------------------------- 1 | # MercuryPatcher 2 | A tool to easily apply known hex edits to the Mercury binary, derived from [BemaniPatcher](https://github.com/mon/BemaniPatcher). 3 | 4 | Currently only has patches for 3.07.01. 5 | -------------------------------------------------------------------------------- /WTT/.idea/.idea.UAssetAPI/.idea/encodings.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /galliumhook/galliumhook/pch.cpp: -------------------------------------------------------------------------------- 1 | // pch.cpp: source file corresponding to the pre-compiled header 2 | 3 | #include "pch.h" 4 | 5 | // When you are using pre-compiled headers, this source file is necessary for compilation to succeed. 6 | -------------------------------------------------------------------------------- /WTT/.idea/.idea.UAssetAPI/.idea/vcs.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /WTT/.idea/.idea.UAssetAPI/.idea/indexLayout.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /galliumhook/minhook-multihook/AUTHORS.txt: -------------------------------------------------------------------------------- 1 | Tsuda Kageyu 2 | Creator, maintainer 3 | 4 | Michael Maltsev 5 | Added "Queue" functions. A lot of bug fixes. 6 | 7 | Andrey Unis 8 | Rewrote the hook engine in plain C. 9 | -------------------------------------------------------------------------------- /WTT/WTT/ImportSettings.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Collections.Generic; 3 | using System.Linq; 4 | using System.Text; 5 | using System.Threading.Tasks; 6 | 7 | namespace WTT 8 | { 9 | internal class ImportSettings 10 | { 11 | public Language Language { get; set; } = Language.EnglishUSA; 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /galliumhook/minhook-multihook/build/MinGW/make.bat: -------------------------------------------------------------------------------- 1 | windres -i ../../dll_resources/MinHook.rc -o MinHook_rc.o && dllwrap --driver-name g++ -o MinHook.dll -masm=intel --def ../../dll_resources/MinHook.def -Wl,-enable-stdcall-fixup -Wall MinHook_rc.o ../../src/*.c ../../src/HDE/*.c -I../../include -I../../src -Werror -std=c++11 -s -static-libgcc -static-libstdc++|| pause -------------------------------------------------------------------------------- /WTT/.idea/.idea.UAssetAPI/.idea/.gitignore: -------------------------------------------------------------------------------- 1 | # Default ignored files 2 | /shelf/ 3 | /workspace.xml 4 | # Rider ignored files 5 | /modules.xml 6 | /contentModel.xml 7 | /.idea.UAssetAPI.iml 8 | /projectSettingsUpdater.xml 9 | # Editor-based HTTP Client requests 10 | /httpRequests/ 11 | # Datasource local storage ignored files 12 | /dataSources/ 13 | /dataSources.local.xml 14 | -------------------------------------------------------------------------------- /WTT/WTT/Exceptions/UnhandledTomlError.cs: -------------------------------------------------------------------------------- 1 | namespace WTT.Exceptions; 2 | 3 | public class UnhandledTomlError : Exception 4 | { 5 | public UnhandledTomlError() 6 | { 7 | } 8 | 9 | public UnhandledTomlError(string message) 10 | : base(message) 11 | { 12 | } 13 | 14 | public UnhandledTomlError(string message, Exception inner) 15 | : base(message, inner) 16 | { 17 | } 18 | } 19 | -------------------------------------------------------------------------------- /WTT/WTT/Exceptions/MissingKeyException.cs: -------------------------------------------------------------------------------- 1 | namespace WTT.Exceptions; 2 | 3 | public class MissingKeyException : Exception 4 | { 5 | public MissingKeyException() 6 | { 7 | } 8 | 9 | public MissingKeyException(string message) 10 | : base(message) 11 | { 12 | } 13 | 14 | public MissingKeyException(string message, Exception inner) 15 | : base(message, inner) 16 | { 17 | } 18 | } 19 | -------------------------------------------------------------------------------- /WTT/WTT/Exceptions/DuplicateKeyException.cs: -------------------------------------------------------------------------------- 1 | namespace WTT.Exceptions; 2 | 3 | public class DuplicateKeyException : Exception 4 | { 5 | public DuplicateKeyException() 6 | { 7 | } 8 | 9 | public DuplicateKeyException(string message) 10 | : base(message) 11 | { 12 | } 13 | 14 | public DuplicateKeyException(string message, Exception inner) 15 | : base(message, inner) 16 | { 17 | } 18 | } 19 | -------------------------------------------------------------------------------- /WTT/WTT/Exceptions/UnsupportedAssetException.cs: -------------------------------------------------------------------------------- 1 | namespace WTT.Exceptions; 2 | 3 | public class UnsupportedAssetException : Exception 4 | { 5 | public UnsupportedAssetException() 6 | { 7 | } 8 | 9 | public UnsupportedAssetException(string message) 10 | : base(message) 11 | { 12 | } 13 | 14 | public UnsupportedAssetException(string message, Exception inner) 15 | : base(message, inner) 16 | { 17 | } 18 | } -------------------------------------------------------------------------------- /WTT/UAssetAPI/Kismet/Bytecode/EScriptInstrumentationType.cs: -------------------------------------------------------------------------------- 1 | namespace UAssetAPI.Kismet.Bytecode 2 | { 3 | public enum EScriptInstrumentationType : byte { 4 | Class = 0, 5 | ClassScope, 6 | Instance, 7 | Event, 8 | InlineEvent, 9 | ResumeEvent, 10 | PureNodeEntry, 11 | NodeDebugSite, 12 | NodeEntry, 13 | NodeExit, 14 | PushState, 15 | RestoreState, 16 | ResetState, 17 | SuspendState, 18 | PopState, 19 | TunnelEndOfThread, 20 | Stop 21 | } 22 | } 23 | -------------------------------------------------------------------------------- /WTT/UAssetAPI/PropertyTypes/Objects/TextHistoryType.cs: -------------------------------------------------------------------------------- 1 | namespace UAssetAPI.PropertyTypes.Objects 2 | { 3 | public enum TextHistoryType 4 | { 5 | None = -1, 6 | Base = 0, 7 | NamedFormat, 8 | OrderedFormat, 9 | ArgumentFormat, 10 | AsNumber, 11 | AsPercent, 12 | AsCurrency, 13 | AsDate, 14 | AsTime, 15 | AsDateTime, 16 | Transform, 17 | StringTableEntry, 18 | TextGenerator 19 | } 20 | } -------------------------------------------------------------------------------- /WTT/WTT/WTT.csproj: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | Exe 5 | net6.0 6 | enable 7 | enable 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | -------------------------------------------------------------------------------- /WTT/WTT/Language.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Collections.Generic; 3 | using System.Linq; 4 | using System.Text; 5 | using System.Text.Json.Serialization; 6 | using System.Threading.Tasks; 7 | 8 | namespace WTT 9 | { 10 | [JsonConverter(typeof(JsonStringEnumConverter))] 11 | public enum Language 12 | { 13 | Japanese, 14 | EnglishUSA, 15 | EnglishSG, 16 | TraditionalChineseTW, 17 | TraditionalChineseHK, 18 | SimplifiedChinese, 19 | Korean 20 | } 21 | } 22 | -------------------------------------------------------------------------------- /WTT/UAssetAPI/FieldTypes/EArrayDim.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Collections.Generic; 3 | using System.Linq; 4 | using System.Text; 5 | using System.Threading.Tasks; 6 | using UAssetAPI.UnrealTypes; 7 | 8 | namespace UAssetAPI.FieldTypes 9 | { 10 | /// 11 | /// The type of array that this property represents. This is represented an integer in the engine. 12 | /// 13 | public enum EArrayDim : int 14 | { 15 | NotAnArray = 0, 16 | TArray = 1, 17 | CArray = 2 18 | } 19 | } 20 | -------------------------------------------------------------------------------- /galliumhook/README.md: -------------------------------------------------------------------------------- 1 | # galliumhook 2 | 3 | Loads `mercuryhook.dll` at startup and then forces created windows to be 1080x1920 regardless of screen resolution (or original size). 4 | 5 | If you want to configure galliumhook without recompiling it, make a file named `galliumhook.toml` and put this in: 6 | 7 | ```toml 8 | [window] 9 | width = 1080 10 | height = 1920 11 | wndproc = 0x72AE80 12 | ``` 13 | 14 | Note that sane defaults (for 3.07.01 ONLY) will be applied when this config file isn't found. Set wndproc to 0 to disable the WndProc hook. -------------------------------------------------------------------------------- /galliumhook/minhook-multihook/.editorconfig: -------------------------------------------------------------------------------- 1 | # EditorConfig is awesome: http://EditorConfig.org 2 | 3 | # top-most EditorConfig file 4 | root = true 5 | 6 | # Windows-style newlines with a newline ending every file 7 | [*] 8 | end_of_line = crlf 9 | insert_final_newline = true 10 | 11 | # 4 space indentation 12 | [*.{c,h,def}] 13 | indent_style = space 14 | indent_size = 4 15 | 16 | # Trim trailing whitespaces 17 | [*.{c,h,def,txt}] 18 | trim_trailing_whitespace = true 19 | 20 | # UTF-8 with BOM 21 | [*.{c,h,def,txt}] 22 | charset=utf-8-bom 23 | -------------------------------------------------------------------------------- /galliumhook/minhook-multihook/dll_resources/MinHook.def: -------------------------------------------------------------------------------- 1 | EXPORTS 2 | MH_Initialize 3 | MH_Uninitialize 4 | MH_SetThreadFreezeMethod 5 | 6 | MH_CreateHook 7 | MH_CreateHookEx 8 | MH_CreateHookApi 9 | MH_CreateHookApiEx 10 | MH_RemoveHook 11 | MH_RemoveHookEx 12 | MH_EnableHook 13 | MH_EnableHookEx 14 | MH_DisableHook 15 | MH_DisableHookEx 16 | MH_QueueEnableHook 17 | MH_QueueEnableHookEx 18 | MH_QueueDisableHook 19 | MH_QueueDisableHookEx 20 | MH_ApplyQueued 21 | MH_StatusToString 22 | -------------------------------------------------------------------------------- /galliumhook/minhook-multihook/.gitignore: -------------------------------------------------------------------------------- 1 | #OS junk files 2 | [Tt]humbs.db 3 | *.DS_Store 4 | 5 | #Visual Studio files 6 | *.[Oo]bj 7 | *.user 8 | *.aps 9 | *.pch 10 | *.vspscc 11 | *.vssscc 12 | *_i.c 13 | *_p.c 14 | *.ncb 15 | *.suo 16 | *.tlb 17 | *.tlh 18 | *.bak 19 | *.[Cc]ache 20 | *.ilk 21 | *.log 22 | *.sbr 23 | *.sdf 24 | *.opensdf 25 | *.unsuccessfulbuild 26 | ipch/ 27 | obj/ 28 | [Ll]ib 29 | [Bb]in 30 | [Dd]ebug*/ 31 | [Rr]elease*/ 32 | Ankh.NoLoad 33 | *.VC.db 34 | .vs/ 35 | 36 | #GCC files 37 | *.o 38 | *.d 39 | *.res 40 | *.dll 41 | *.a 42 | 43 | #Visual Studio Code files 44 | .vscode/ 45 | -------------------------------------------------------------------------------- /galliumhook/galliumhook/pch.h: -------------------------------------------------------------------------------- 1 | // pch.h: This is a precompiled header file. 2 | // Files listed below are compiled only once, improving build performance for future builds. 3 | // This also affects IntelliSense performance, including code completion and many code browsing features. 4 | // However, files listed here are ALL re-compiled if any one of them is updated between builds. 5 | // Do not add files here that you will be updating frequently as this negates the performance advantage. 6 | 7 | #ifndef PCH_H 8 | #define PCH_H 9 | 10 | // add headers that you want to pre-compile here 11 | #include "framework.h" 12 | 13 | #endif //PCH_H 14 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # whack 2 | 3 | A collection of tools and other hacky (read: ugly) things I've made for myself, designed for Arcade Game™. User beware! 4 | 5 | * galliumhook - injects `mercuryhook.dll` (whatever that may be) and forces created windows to be 1080x1920 regardless of screen resolution 6 | * WTT - translation tool that exports message tables to and imports from toml files [(readme)](WTT/README.md) 7 | * MercuryPatcher - web UI that applies some patches, derived from BemaniPatcher [(go there)](https://raymonf.github.io/whack/MercuryPatcher/) 8 | 9 | ### Changelog 10 | 11 | * 11/8/2022: WTT has received an update that will impact your workflow if you're using this tool. See the tool's readme for more details. -------------------------------------------------------------------------------- /WTT/UAssetAPI/PropertyTypes/Structs/SoftAssetPathPropertyData.cs: -------------------------------------------------------------------------------- 1 | using UAssetAPI.UnrealTypes; 2 | 3 | namespace UAssetAPI.PropertyTypes.Structs 4 | { 5 | public class SoftAssetPathPropertyData : SoftObjectPathPropertyData 6 | { 7 | public SoftAssetPathPropertyData(FName name) : base(name) 8 | { 9 | 10 | } 11 | 12 | public SoftAssetPathPropertyData() 13 | { 14 | 15 | } 16 | 17 | private static readonly FString CurrentPropertyType = new FString("SoftAssetPath"); 18 | public override bool HasCustomStructSerialization { get { return true; } } 19 | public override FString PropertyType { get { return CurrentPropertyType; } } 20 | } 21 | } 22 | -------------------------------------------------------------------------------- /MercuryPatcher/css/file.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | Generated by IcoMoon 5 | 6 | 7 | 8 | 9 | 10 | 11 | -------------------------------------------------------------------------------- /WTT/UAssetAPI/PropertyTypes/Structs/SkeletalMeshAreaWeightedTriangleSamplerPropertyData.cs: -------------------------------------------------------------------------------- 1 | using UAssetAPI.UnrealTypes; 2 | 3 | namespace UAssetAPI.PropertyTypes.Structs 4 | { 5 | public class SkeletalMeshAreaWeightedTriangleSamplerPropertyData : WeightedRandomSamplerPropertyData 6 | { 7 | public SkeletalMeshAreaWeightedTriangleSamplerPropertyData(FName name) : base(name) 8 | { 9 | 10 | } 11 | 12 | public SkeletalMeshAreaWeightedTriangleSamplerPropertyData() 13 | { 14 | 15 | } 16 | 17 | private static readonly FString CurrentPropertyType = new FString("SkeletalMeshAreaWeightedTriangleSampler"); 18 | public override bool HasCustomStructSerialization { get { return true; } } 19 | public override FString PropertyType { get { return CurrentPropertyType; } } 20 | } 21 | } -------------------------------------------------------------------------------- /WTT/UAssetAPI/PropertyTypes/Structs/SoftClassPathPropertyData.cs: -------------------------------------------------------------------------------- 1 | using UAssetAPI.UnrealTypes; 2 | 3 | namespace UAssetAPI.PropertyTypes.Structs 4 | { 5 | /// 6 | /// A struct that contains a string reference to a class. Can be used to make soft references to classes. 7 | /// 8 | public class SoftClassPathPropertyData : SoftObjectPathPropertyData 9 | { 10 | public SoftClassPathPropertyData(FName name) : base(name) 11 | { 12 | 13 | } 14 | 15 | public SoftClassPathPropertyData() 16 | { 17 | 18 | } 19 | 20 | private static readonly FString CurrentPropertyType = new FString("SoftClassPath"); 21 | public override bool HasCustomStructSerialization { get { return true; } } 22 | public override FString PropertyType { get { return CurrentPropertyType; } } 23 | } 24 | } 25 | -------------------------------------------------------------------------------- /WTT/UAssetAPI/JSON/UAssetContractResolver.cs: -------------------------------------------------------------------------------- 1 | using Newtonsoft.Json; 2 | using Newtonsoft.Json.Serialization; 3 | using System; 4 | using System.Collections.Generic; 5 | using UAssetAPI.UnrealTypes; 6 | 7 | namespace UAssetAPI.JSON 8 | { 9 | public class UAssetContractResolver : DefaultContractResolver 10 | { 11 | public Dictionary ToBeFilled; 12 | 13 | protected override JsonConverter ResolveContractConverter(Type objectType) 14 | { 15 | if (typeof(FName).IsAssignableFrom(objectType)) 16 | { 17 | return new FNameJsonConverter(ToBeFilled); 18 | } 19 | return base.ResolveContractConverter(objectType); 20 | } 21 | 22 | public UAssetContractResolver(Dictionary toBeFilled) : base() 23 | { 24 | ToBeFilled = toBeFilled; 25 | } 26 | } 27 | } 28 | -------------------------------------------------------------------------------- /WTT/UAssetAPI/UnrealTypes/FFieldPath.cs: -------------------------------------------------------------------------------- 1 | using Newtonsoft.Json; 2 | using UAssetAPI.UnrealTypes; 3 | 4 | namespace UAssetAPI.UnrealTypes 5 | { 6 | [JsonObject(MemberSerialization.OptIn)] 7 | public class FFieldPath 8 | { 9 | /// 10 | /// Path to the FField object from the innermost FField to the outermost UObject (UPackage) 11 | /// 12 | [JsonProperty] 13 | public FName[] Path; 14 | 15 | /// 16 | /// The cached owner of this field. 17 | /// 18 | [JsonProperty] 19 | public FPackageIndex ResolvedOwner; 20 | 21 | public FFieldPath(FName[] path, FPackageIndex resolvedOwner) 22 | { 23 | Path = path; 24 | ResolvedOwner = resolvedOwner; 25 | } 26 | 27 | public FFieldPath() 28 | { 29 | 30 | } 31 | } 32 | } 33 | -------------------------------------------------------------------------------- /WTT/UAssetAPI/ExportTypes/RawExport.cs: -------------------------------------------------------------------------------- 1 | using System.IO; 2 | using UAssetAPI.UnrealTypes; 3 | 4 | namespace UAssetAPI 5 | { 6 | /// 7 | /// An export that could not be properly parsed by UAssetAPI, and is instead represented as an array of bytes as a fallback. 8 | /// 9 | public class RawExport : Export 10 | { 11 | public byte[] Data; 12 | 13 | public RawExport(Export super) 14 | { 15 | Asset = super.Asset; 16 | Extras = super.Extras; 17 | } 18 | 19 | public RawExport(byte[] data, UAsset asset, byte[] extras) : base(asset, extras) 20 | { 21 | Data = data; 22 | } 23 | 24 | public RawExport() 25 | { 26 | 27 | } 28 | 29 | public override void Write(AssetBinaryWriter writer) 30 | { 31 | writer.Write(Data); 32 | } 33 | } 34 | } 35 | -------------------------------------------------------------------------------- /WTT/UAssetAPI/JSON/FPackageIndexJsonConverter.cs: -------------------------------------------------------------------------------- 1 | using Newtonsoft.Json; 2 | using System; 3 | using UAssetAPI.UnrealTypes; 4 | 5 | namespace UAssetAPI.JSON 6 | { 7 | public class FPackageIndexJsonConverter : JsonConverter 8 | { 9 | public override bool CanConvert(Type objectType) 10 | { 11 | return objectType == typeof(FPackageIndex); 12 | } 13 | 14 | public override void WriteJson(JsonWriter writer, object value, JsonSerializer serializer) 15 | { 16 | writer.WriteValue((value as FPackageIndex).Index); 17 | } 18 | 19 | public override bool CanRead 20 | { 21 | get { return true; } 22 | } 23 | 24 | public override object ReadJson(JsonReader reader, Type objectType, object existingValue, JsonSerializer serializer) 25 | { 26 | return new FPackageIndex(Convert.ToInt32(reader.Value)); 27 | } 28 | } 29 | } 30 | -------------------------------------------------------------------------------- /WTT/UAssetAPI/PropertyTypes/Structs/Movies/Range.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Collections.Generic; 3 | using System.Linq; 4 | using System.Text; 5 | using System.Threading.Tasks; 6 | using UAssetAPI.UnrealTypes; 7 | 8 | namespace UAssetAPI.PropertyTypes.Structs.Movies 9 | { 10 | /// 11 | /// Represents a range that has start and end indexes. 12 | /// 13 | public class Range 14 | { 15 | /// 16 | /// Holds the range's lower bound. 17 | /// 18 | public T LowerBound; 19 | 20 | /// 21 | /// Holds the range's upper bound. 22 | /// 23 | public T UpperBound; 24 | 25 | public Range(T lowerBound, T upperBound) 26 | { 27 | LowerBound = lowerBound; 28 | UpperBound = upperBound; 29 | } 30 | 31 | public Range() 32 | { 33 | 34 | } 35 | } 36 | } 37 | -------------------------------------------------------------------------------- /WTT/UAssetAPI/JSON/FStringJsonConverter.cs: -------------------------------------------------------------------------------- 1 | using Newtonsoft.Json; 2 | using System; 3 | using UAssetAPI.UnrealTypes; 4 | 5 | namespace UAssetAPI.JSON 6 | { 7 | public class FStringJsonConverter : JsonConverter 8 | { 9 | public override bool CanConvert(Type objectType) 10 | { 11 | return objectType == typeof(FString); 12 | } 13 | 14 | public override void WriteJson(JsonWriter writer, object value, JsonSerializer serializer) 15 | { 16 | writer.WriteValue((value as FString)?.Value); 17 | } 18 | 19 | public override bool CanRead 20 | { 21 | get { return true; } 22 | } 23 | 24 | public override object ReadJson(JsonReader reader, Type objectType, object existingValue, JsonSerializer serializer) 25 | { 26 | if (reader.Value == null) return null; 27 | return new FString(Convert.ToString(reader.Value)); 28 | } 29 | } 30 | } 31 | -------------------------------------------------------------------------------- /WTT/WTT/TomlTableExtensions.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Collections.Generic; 3 | using System.Linq; 4 | using System.Text; 5 | using System.Threading.Tasks; 6 | using Tommy; 7 | using UAssetAPI.PropertyTypes.Structs; 8 | using UAssetAPI.UnrealTypes; 9 | 10 | namespace WTT 11 | { 12 | public static class TomlTableExtensions 13 | { 14 | private readonly static char[] _multilineChars = { '\n', '"' }; 15 | 16 | public static void AddMessage(this TomlTable tomlTable, StructPropertyData entry, int index, string key) 17 | { 18 | var value = (entry.Value[index].RawValue as FString)?.Value; 19 | if (value != null) 20 | tomlTable.Add(key, new TomlString 21 | { 22 | IsMultiline = value.IndexOfAny(_multilineChars) != -1, 23 | Value = value 24 | }); 25 | else 26 | tomlTable.Add(key, false); 27 | } 28 | } 29 | } 30 | -------------------------------------------------------------------------------- /galliumhook/minhook-multihook/dll_resources/MinHook.rc: -------------------------------------------------------------------------------- 1 | 1 VERSIONINFO 2 | FILEVERSION 1,3,3,0 3 | PRODUCTVERSION 1,3,3,0 4 | FILEFLAGSMASK 0x17L 5 | #ifdef _DEBUG 6 | FILEFLAGS 0x1L 7 | #else 8 | FILEFLAGS 0x0L 9 | #endif 10 | FILEOS 0x4L 11 | FILETYPE 0x2L 12 | FILESUBTYPE 0x0L 13 | BEGIN 14 | BLOCK "StringFileInfo" 15 | BEGIN 16 | BLOCK "040904b0" 17 | BEGIN 18 | VALUE "CompanyName", "Tsuda Kageyu" 19 | VALUE "FileDescription", "MinHook - The Minimalistic API Hook Library for x64/x86" 20 | VALUE "FileVersion", "1.3.3.0" 21 | VALUE "InternalName", "MinHookD" 22 | VALUE "LegalCopyright", "Copyright (C) 2009-2017 Tsuda Kageyu. All rights reserved." 23 | VALUE "LegalTrademarks", "Tsuda Kageyu" 24 | VALUE "ProductName", "MinHook DLL" 25 | VALUE "ProductVersion", "1.3.3.0" 26 | END 27 | END 28 | BLOCK "VarFileInfo" 29 | BEGIN 30 | VALUE "Translation", 0x409, 1200 31 | END 32 | END 33 | -------------------------------------------------------------------------------- /WTT/UAssetAPI/Import.cs: -------------------------------------------------------------------------------- 1 | using UAssetAPI.UnrealTypes; 2 | 3 | namespace UAssetAPI 4 | { 5 | /// 6 | /// UObject resource type for objects that are referenced by this package, but contained within another package. 7 | /// 8 | public class Import : FObjectResource 9 | { 10 | public FName ClassPackage; 11 | public FName ClassName; 12 | 13 | public Import(string classPackage, string className, FPackageIndex outerIndex, string objectName, UAsset asset) : base(new FName(asset, objectName), outerIndex) 14 | { 15 | ClassPackage = new FName(asset, classPackage); 16 | ClassName = new FName(asset, className); 17 | } 18 | 19 | public Import(FName classPackage, FName className, FPackageIndex outerIndex, FName objectName) : base(objectName, outerIndex) 20 | { 21 | ClassPackage = classPackage; 22 | ClassName = className; 23 | } 24 | 25 | public Import() 26 | { 27 | 28 | } 29 | } 30 | } 31 | -------------------------------------------------------------------------------- /WTT/WTT/YesNoPrompt.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | 3 | namespace WTT 4 | { 5 | internal class YesNoPrompt 6 | { 7 | /// 8 | /// Call promptMessageFunc and ask for response 9 | /// Default is always Y with no response 10 | /// 11 | /// Optional function to call before ReadLine() 12 | /// The answer 13 | public static bool Ask(Action? promptMessageFunc = null) 14 | { 15 | while (true) 16 | { 17 | if (promptMessageFunc != null) 18 | promptMessageFunc(); 19 | var response = Console.ReadLine()!.Trim().ToLowerInvariant(); 20 | if (response is "" or "y" or "yes") 21 | { 22 | return true; 23 | } 24 | else if (response is "n") 25 | { 26 | return false; 27 | } 28 | } 29 | } 30 | } 31 | } 32 | -------------------------------------------------------------------------------- /WTT/UAssetAPI/UnrealTypes/FObjectResource.cs: -------------------------------------------------------------------------------- 1 | namespace UAssetAPI.UnrealTypes 2 | { 3 | /// 4 | /// Base class for UObject resource types. FObjectResources are used to store UObjects on disk 5 | /// via the import map (for resources contained in other packages) and export map (for resources 6 | /// contained within the same package). 7 | /// 8 | public class FObjectResource 9 | { 10 | ///The name of the UObject represented by this resource. 11 | [DisplayIndexOrder(0)] 12 | public FName ObjectName; 13 | 14 | ///Location of the resource for this resource's Outer (import/other export). 0 = this resource is a top-level UPackage 15 | [DisplayIndexOrder(1)] 16 | public FPackageIndex OuterIndex; 17 | 18 | public FObjectResource(FName objectName, FPackageIndex outerIndex) 19 | { 20 | ObjectName = objectName; 21 | OuterIndex = outerIndex; 22 | } 23 | 24 | public FObjectResource() 25 | { 26 | 27 | } 28 | } 29 | } 30 | -------------------------------------------------------------------------------- /galliumhook/minhook-multihook/build/MinGW/Makefile: -------------------------------------------------------------------------------- 1 | WINDRES:=$(CROSS_PREFIX)windres 2 | DLLTOOL:=$(CROSS_PREFIX)dlltool 3 | AR:=$(CROSS_PREFIX)ar 4 | CC:=$(CROSS_PREFIX)gcc 5 | CCLD:=$(CC) 6 | SRCS:=$(wildcard src/*.c src/hde/*.c) 7 | OBJS:=$(SRCS:%.c=%.o) 8 | DEPS:=$(SRCS:%.c=%.d) 9 | INCS:=-Isrc -Iinclude 10 | CFLAGS:=-masm=intel -Wall -Werror -std=c11 11 | LDFLAGS:=-Wl,-enable-stdcall-fixup -s -static-libgcc 12 | 13 | all: MinHook.dll libMinHook.dll.a libMinHook.a 14 | 15 | -include $(DEPS) 16 | 17 | libMinHook.a: $(OBJS) 18 | $(AR) r $@ $^ 19 | libMinHook.dll.a: MinHook.dll dll_resources/MinHook.def 20 | $(DLLTOOL) --dllname MinHook.dll --def dll_resources/MinHook.def --output-lib $@ 21 | MinHook.dll: $(OBJS) dll_resources/MinHook.res dll_resources/MinHook.def 22 | $(CCLD) -o $@ -shared $(LDFLAGS) $^ 23 | 24 | .rc.res: 25 | $(WINDRES) -o $@ --input-format=rc --output-format=coff $< 26 | .c.o: 27 | $(CC) -o $@ -c -MMD -MP $(INCS) $(CFLAGS) $< 28 | 29 | clean: 30 | rm -f $(OBJS) $(DEPS) MinHook.dll libMinHook.dll.a libMinHook.a dll_resources/MinHook.res 31 | 32 | .PHONY: clean 33 | .SUFFIXES: .rc .res 34 | -------------------------------------------------------------------------------- /WTT/UAssetAPI/UnrealTypes/FVector.cs: -------------------------------------------------------------------------------- 1 | using Newtonsoft.Json; 2 | using UAssetAPI.JSON; 3 | using UAssetAPI.UnrealTypes; 4 | 5 | namespace UAssetAPI.UnrealTypes 6 | { 7 | /// 8 | /// A vector in 3-D space composed of components (X, Y, Z) with floating point precision. 9 | /// 10 | public class FVector 11 | { 12 | /// Vector's X-component. 13 | [JsonProperty] 14 | [JsonConverter(typeof(FSignedZeroJsonConverter))] 15 | public float X; 16 | 17 | /// Vector's Y-component. 18 | [JsonProperty] 19 | [JsonConverter(typeof(FSignedZeroJsonConverter))] 20 | public float Y; 21 | 22 | /// Vector's Z-component. 23 | [JsonProperty] 24 | [JsonConverter(typeof(FSignedZeroJsonConverter))] 25 | public float Z; 26 | 27 | public FVector(float x, float y, float z) 28 | { 29 | X = x; 30 | Y = y; 31 | Z = z; 32 | } 33 | 34 | public FVector() 35 | { 36 | 37 | } 38 | } 39 | } 40 | -------------------------------------------------------------------------------- /MercuryPatcher/LICENSE: -------------------------------------------------------------------------------- 1 | MIT License 2 | 3 | Copyright (c) 2017 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy 6 | of this software and associated documentation files (the "Software"), to deal 7 | in the Software without restriction, including without limitation the rights 8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | copies of the Software, and to permit persons to whom the Software is 10 | furnished to do so, subject to the following conditions: 11 | 12 | The above copyright notice and this permission notice shall be included in all 13 | copies or substantial portions of the Software. 14 | 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 21 | SOFTWARE. 22 | -------------------------------------------------------------------------------- /WTT/UAssetAPI/ExportTypes/FieldExport.cs: -------------------------------------------------------------------------------- 1 | using System.Linq; 2 | using UAssetAPI.FieldTypes; 3 | using UAssetAPI.UnrealTypes; 4 | 5 | namespace UAssetAPI 6 | { 7 | /// 8 | /// Export data for a . 9 | /// 10 | public class FieldExport : NormalExport 11 | { 12 | public UField Field; 13 | 14 | public FieldExport(Export super) : base(super) 15 | { 16 | 17 | } 18 | 19 | public FieldExport(UAsset asset, byte[] extras) : base(asset, extras) 20 | { 21 | 22 | } 23 | 24 | public FieldExport() 25 | { 26 | 27 | } 28 | 29 | public override void Read(AssetBinaryReader reader, int nextStarting) 30 | { 31 | base.Read(reader, nextStarting); 32 | reader.ReadInt32(); 33 | 34 | Field = new UField(); 35 | Field.Read(reader); 36 | } 37 | 38 | public override void Write(AssetBinaryWriter writer) 39 | { 40 | base.Write(writer); 41 | writer.Write((int)0); 42 | 43 | Field.Write(writer); 44 | } 45 | } 46 | } 47 | -------------------------------------------------------------------------------- /WTT/LICENSE: -------------------------------------------------------------------------------- 1 | MIT License 2 | 3 | Copyright (c) 2022 Atenfyr (UAssetAPI), Raymonf (WTT) 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy 6 | of this software and associated documentation files (the "Software"), to deal 7 | in the Software without restriction, including without limitation the rights 8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | copies of the Software, and to permit persons to whom the Software is 10 | furnished to do so, subject to the following conditions: 11 | 12 | The above copyright notice and this permission notice shall be included in all 13 | copies or substantial portions of the Software. 14 | 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 21 | SOFTWARE. 22 | -------------------------------------------------------------------------------- /WTT/UAssetAPI/ExportTypes/FunctionExport.cs: -------------------------------------------------------------------------------- 1 | using System.IO; 2 | using UAssetAPI.UnrealTypes; 3 | 4 | namespace UAssetAPI 5 | { 6 | /// 7 | /// Export data for a blueprint function. 8 | /// 9 | public class FunctionExport : StructExport 10 | { 11 | public EFunctionFlags FunctionFlags; 12 | public FunctionExport(Export super) : base(super) 13 | { 14 | Asset = super.Asset; 15 | Extras = super.Extras; 16 | } 17 | 18 | public FunctionExport(UAsset asset, byte[] extras) : base(asset, extras) 19 | { 20 | 21 | } 22 | 23 | public FunctionExport() 24 | { 25 | 26 | } 27 | 28 | public override void Read(AssetBinaryReader reader, int nextStarting) 29 | { 30 | base.Read(reader, nextStarting); 31 | FunctionFlags = (EFunctionFlags)reader.ReadUInt32(); 32 | // TODO 33 | } 34 | 35 | public override void Write(AssetBinaryWriter writer) 36 | { 37 | base.Write(writer); 38 | writer.Write((uint)FunctionFlags); 39 | // TODO 40 | } 41 | } 42 | } 43 | -------------------------------------------------------------------------------- /WTT/UAssetAPI/ExportTypes/PropertyExport.cs: -------------------------------------------------------------------------------- 1 | using System.Linq; 2 | using UAssetAPI.FieldTypes; 3 | using UAssetAPI.UnrealTypes; 4 | 5 | namespace UAssetAPI 6 | { 7 | /// 8 | /// Export data for a . 9 | /// 10 | public class PropertyExport : NormalExport 11 | { 12 | public UProperty Property; 13 | 14 | public PropertyExport(Export super) : base(super) 15 | { 16 | 17 | } 18 | 19 | public PropertyExport(UAsset asset, byte[] extras) : base(asset, extras) 20 | { 21 | 22 | } 23 | 24 | public PropertyExport() 25 | { 26 | 27 | } 28 | 29 | public override void Read(AssetBinaryReader reader, int nextStarting) 30 | { 31 | base.Read(reader, nextStarting); 32 | reader.ReadInt32(); 33 | 34 | FName exportClassType = this.GetExportClassType(); 35 | Property = MainSerializer.ReadUProperty(reader, exportClassType); 36 | } 37 | 38 | public override void Write(AssetBinaryWriter writer) 39 | { 40 | base.Write(writer); 41 | writer.Write((int)0); 42 | 43 | MainSerializer.WriteUProperty(Property, writer); 44 | } 45 | } 46 | } 47 | -------------------------------------------------------------------------------- /WTT/UAssetAPI/Kismet/Bytecode/Expressions/EX_Self.cs: -------------------------------------------------------------------------------- 1 | namespace UAssetAPI.Kismet.Bytecode.Expressions 2 | { 3 | /// 4 | /// A single Kismet bytecode instruction, corresponding to the instruction. 5 | /// 6 | public class EX_Self : KismetExpression 7 | { 8 | /// 9 | /// The token of this expression. 10 | /// 11 | public override EExprToken Token { get { return EExprToken.EX_Self; } } 12 | 13 | public EX_Self() 14 | { 15 | 16 | } 17 | 18 | /// 19 | /// Reads out the expression from a BinaryReader. 20 | /// 21 | /// The BinaryReader to read from. 22 | public override void Read(AssetBinaryReader reader) 23 | { 24 | 25 | } 26 | 27 | /// 28 | /// Writes the expression to a BinaryWriter. 29 | /// 30 | /// The BinaryWriter to write from. 31 | /// The iCode offset of the data that was written. 32 | public override int Write(AssetBinaryWriter writer) 33 | { 34 | return 0; 35 | } 36 | } 37 | } 38 | -------------------------------------------------------------------------------- /WTT/UAssetAPI/Kismet/Bytecode/Expressions/EX_True.cs: -------------------------------------------------------------------------------- 1 | namespace UAssetAPI.Kismet.Bytecode.Expressions 2 | { 3 | /// 4 | /// A single Kismet bytecode instruction, corresponding to the instruction. 5 | /// 6 | public class EX_True : KismetExpression 7 | { 8 | /// 9 | /// The token of this expression. 10 | /// 11 | public override EExprToken Token { get { return EExprToken.EX_True; } } 12 | 13 | public EX_True() 14 | { 15 | 16 | } 17 | 18 | /// 19 | /// Reads out the expression from a BinaryReader. 20 | /// 21 | /// The BinaryReader to read from. 22 | public override void Read(AssetBinaryReader reader) 23 | { 24 | 25 | } 26 | 27 | /// 28 | /// Writes the expression to a BinaryWriter. 29 | /// 30 | /// The BinaryWriter to write from. 31 | /// The iCode offset of the data that was written. 32 | public override int Write(AssetBinaryWriter writer) 33 | { 34 | return 0; 35 | } 36 | } 37 | } 38 | -------------------------------------------------------------------------------- /WTT/UAssetAPI/Kismet/Bytecode/Expressions/EX_False.cs: -------------------------------------------------------------------------------- 1 | namespace UAssetAPI.Kismet.Bytecode.Expressions 2 | { 3 | /// 4 | /// A single Kismet bytecode instruction, corresponding to the instruction. 5 | /// 6 | public class EX_False : KismetExpression 7 | { 8 | /// 9 | /// The token of this expression. 10 | /// 11 | public override EExprToken Token { get { return EExprToken.EX_False; } } 12 | 13 | public EX_False() 14 | { 15 | 16 | } 17 | 18 | /// 19 | /// Reads out the expression from a BinaryReader. 20 | /// 21 | /// The BinaryReader to read from. 22 | public override void Read(AssetBinaryReader reader) 23 | { 24 | 25 | } 26 | 27 | /// 28 | /// Writes the expression to a BinaryWriter. 29 | /// 30 | /// The BinaryWriter to write from. 31 | /// The iCode offset of the data that was written. 32 | public override int Write(AssetBinaryWriter writer) 33 | { 34 | return 0; 35 | } 36 | } 37 | } 38 | -------------------------------------------------------------------------------- /WTT/UAssetAPI/Kismet/Bytecode/Expressions/EX_EndMap.cs: -------------------------------------------------------------------------------- 1 | namespace UAssetAPI.Kismet.Bytecode.Expressions 2 | { 3 | /// 4 | /// A single Kismet bytecode instruction, corresponding to the instruction. 5 | /// 6 | public class EX_EndMap : KismetExpression 7 | { 8 | /// 9 | /// The token of this expression. 10 | /// 11 | public override EExprToken Token { get { return EExprToken.EX_EndMap; } } 12 | 13 | public EX_EndMap() 14 | { 15 | 16 | } 17 | 18 | /// 19 | /// Reads out the expression from a BinaryReader. 20 | /// 21 | /// The BinaryReader to read from. 22 | public override void Read(AssetBinaryReader reader) 23 | { 24 | 25 | } 26 | 27 | /// 28 | /// Writes the expression to a BinaryWriter. 29 | /// 30 | /// The BinaryWriter to write from. 31 | /// The iCode offset of the data that was written. 32 | public override int Write(AssetBinaryWriter writer) 33 | { 34 | return 0; 35 | } 36 | } 37 | } 38 | -------------------------------------------------------------------------------- /WTT/UAssetAPI/Kismet/Bytecode/Expressions/EX_EndSet.cs: -------------------------------------------------------------------------------- 1 | namespace UAssetAPI.Kismet.Bytecode.Expressions 2 | { 3 | /// 4 | /// A single Kismet bytecode instruction, corresponding to the instruction. 5 | /// 6 | public class EX_EndSet : KismetExpression 7 | { 8 | /// 9 | /// The token of this expression. 10 | /// 11 | public override EExprToken Token { get { return EExprToken.EX_EndSet; } } 12 | 13 | public EX_EndSet() 14 | { 15 | 16 | } 17 | 18 | /// 19 | /// Reads out the expression from a BinaryReader. 20 | /// 21 | /// The BinaryReader to read from. 22 | public override void Read(AssetBinaryReader reader) 23 | { 24 | 25 | } 26 | 27 | /// 28 | /// Writes the expression to a BinaryWriter. 29 | /// 30 | /// The BinaryWriter to write from. 31 | /// The iCode offset of the data that was written. 32 | public override int Write(AssetBinaryWriter writer) 33 | { 34 | return 0; 35 | } 36 | } 37 | } 38 | -------------------------------------------------------------------------------- /WTT/UAssetAPI/Kismet/Bytecode/Expressions/EX_IntOne.cs: -------------------------------------------------------------------------------- 1 | namespace UAssetAPI.Kismet.Bytecode.Expressions 2 | { 3 | /// 4 | /// A single Kismet bytecode instruction, corresponding to the instruction. 5 | /// 6 | public class EX_IntOne : KismetExpression 7 | { 8 | /// 9 | /// The token of this expression. 10 | /// 11 | public override EExprToken Token { get { return EExprToken.EX_IntOne; } } 12 | 13 | public EX_IntOne() 14 | { 15 | 16 | } 17 | 18 | /// 19 | /// Reads out the expression from a BinaryReader. 20 | /// 21 | /// The BinaryReader to read from. 22 | public override void Read(AssetBinaryReader reader) 23 | { 24 | 25 | } 26 | 27 | /// 28 | /// Writes the expression to a BinaryWriter. 29 | /// 30 | /// The BinaryWriter to write from. 31 | /// The iCode offset of the data that was written. 32 | public override int Write(AssetBinaryWriter writer) 33 | { 34 | return 0; 35 | } 36 | } 37 | } 38 | -------------------------------------------------------------------------------- /WTT/UAssetAPI/Kismet/Bytecode/Expressions/EX_IntZero.cs: -------------------------------------------------------------------------------- 1 | namespace UAssetAPI.Kismet.Bytecode.Expressions 2 | { 3 | /// 4 | /// A single Kismet bytecode instruction, corresponding to the instruction. 5 | /// 6 | public class EX_IntZero : KismetExpression 7 | { 8 | /// 9 | /// The token of this expression. 10 | /// 11 | public override EExprToken Token { get { return EExprToken.EX_IntZero; } } 12 | 13 | public EX_IntZero() 14 | { 15 | 16 | } 17 | 18 | /// 19 | /// Reads out the expression from a BinaryReader. 20 | /// 21 | /// The BinaryReader to read from. 22 | public override void Read(AssetBinaryReader reader) 23 | { 24 | 25 | } 26 | 27 | /// 28 | /// Writes the expression to a BinaryWriter. 29 | /// 30 | /// The BinaryWriter to write from. 31 | /// The iCode offset of the data that was written. 32 | public override int Write(AssetBinaryWriter writer) 33 | { 34 | return 0; 35 | } 36 | } 37 | } 38 | -------------------------------------------------------------------------------- /WTT/UAssetAPI/Kismet/Bytecode/Expressions/EX_EndArray.cs: -------------------------------------------------------------------------------- 1 | namespace UAssetAPI.Kismet.Bytecode.Expressions 2 | { 3 | /// 4 | /// A single Kismet bytecode instruction, corresponding to the instruction. 5 | /// 6 | public class EX_EndArray : KismetExpression 7 | { 8 | /// 9 | /// The token of this expression. 10 | /// 11 | public override EExprToken Token { get { return EExprToken.EX_EndArray; } } 12 | 13 | public EX_EndArray() 14 | { 15 | 16 | } 17 | 18 | /// 19 | /// Reads out the expression from a BinaryReader. 20 | /// 21 | /// The BinaryReader to read from. 22 | public override void Read(AssetBinaryReader reader) 23 | { 24 | 25 | } 26 | 27 | /// 28 | /// Writes the expression to a BinaryWriter. 29 | /// 30 | /// The BinaryWriter to write from. 31 | /// The iCode offset of the data that was written. 32 | public override int Write(AssetBinaryWriter writer) 33 | { 34 | return 0; 35 | } 36 | } 37 | } 38 | -------------------------------------------------------------------------------- /WTT/UAssetAPI/Kismet/Bytecode/Expressions/EX_NoObject.cs: -------------------------------------------------------------------------------- 1 | namespace UAssetAPI.Kismet.Bytecode.Expressions 2 | { 3 | /// 4 | /// A single Kismet bytecode instruction, corresponding to the instruction. 5 | /// 6 | public class EX_NoObject : KismetExpression 7 | { 8 | /// 9 | /// The token of this expression. 10 | /// 11 | public override EExprToken Token { get { return EExprToken.EX_NoObject; } } 12 | 13 | public EX_NoObject() 14 | { 15 | 16 | } 17 | 18 | /// 19 | /// Reads out the expression from a BinaryReader. 20 | /// 21 | /// The BinaryReader to read from. 22 | public override void Read(AssetBinaryReader reader) 23 | { 24 | 25 | } 26 | 27 | /// 28 | /// Writes the expression to a BinaryWriter. 29 | /// 30 | /// The BinaryWriter to write from. 31 | /// The iCode offset of the data that was written. 32 | public override int Write(AssetBinaryWriter writer) 33 | { 34 | return 0; 35 | } 36 | } 37 | } 38 | -------------------------------------------------------------------------------- /WTT/UAssetAPI/Kismet/Bytecode/Expressions/EX_Breakpoint.cs: -------------------------------------------------------------------------------- 1 | namespace UAssetAPI.Kismet.Bytecode.Expressions 2 | { 3 | /// 4 | /// A single Kismet bytecode instruction, corresponding to the instruction. 5 | /// 6 | public class EX_Breakpoint : KismetExpression 7 | { 8 | /// 9 | /// The token of this expression. 10 | /// 11 | public override EExprToken Token { get { return EExprToken.EX_Breakpoint; } } 12 | 13 | public EX_Breakpoint() 14 | { 15 | 16 | } 17 | 18 | /// 19 | /// Reads out the expression from a BinaryReader. 20 | /// 21 | /// The BinaryReader to read from. 22 | public override void Read(AssetBinaryReader reader) 23 | { 24 | 25 | } 26 | 27 | /// 28 | /// Writes the expression to a BinaryWriter. 29 | /// 30 | /// The BinaryWriter to write from. 31 | /// The iCode offset of the data that was written. 32 | public override int Write(AssetBinaryWriter writer) 33 | { 34 | return 0; 35 | } 36 | } 37 | } 38 | -------------------------------------------------------------------------------- /WTT/UAssetAPI/Kismet/Bytecode/Expressions/EX_Tracepoint.cs: -------------------------------------------------------------------------------- 1 | namespace UAssetAPI.Kismet.Bytecode.Expressions 2 | { 3 | /// 4 | /// A single Kismet bytecode instruction, corresponding to the instruction. 5 | /// 6 | public class EX_Tracepoint : KismetExpression 7 | { 8 | /// 9 | /// The token of this expression. 10 | /// 11 | public override EExprToken Token { get { return EExprToken.EX_Tracepoint; } } 12 | 13 | public EX_Tracepoint() 14 | { 15 | 16 | } 17 | 18 | /// 19 | /// Reads out the expression from a BinaryReader. 20 | /// 21 | /// The BinaryReader to read from. 22 | public override void Read(AssetBinaryReader reader) 23 | { 24 | 25 | } 26 | 27 | /// 28 | /// Writes the expression to a BinaryWriter. 29 | /// 30 | /// The BinaryWriter to write from. 31 | /// The iCode offset of the data that was written. 32 | public override int Write(AssetBinaryWriter writer) 33 | { 34 | return 0; 35 | } 36 | } 37 | } 38 | -------------------------------------------------------------------------------- /WTT/UAssetAPI/Kismet/Bytecode/Expressions/EX_EndMapConst.cs: -------------------------------------------------------------------------------- 1 | namespace UAssetAPI.Kismet.Bytecode.Expressions 2 | { 3 | /// 4 | /// A single Kismet bytecode instruction, corresponding to the instruction. 5 | /// 6 | public class EX_EndMapConst : KismetExpression 7 | { 8 | /// 9 | /// The token of this expression. 10 | /// 11 | public override EExprToken Token { get { return EExprToken.EX_EndMapConst; } } 12 | 13 | public EX_EndMapConst() 14 | { 15 | 16 | } 17 | 18 | /// 19 | /// Reads out the expression from a BinaryReader. 20 | /// 21 | /// The BinaryReader to read from. 22 | public override void Read(AssetBinaryReader reader) 23 | { 24 | 25 | } 26 | 27 | /// 28 | /// Writes the expression to a BinaryWriter. 29 | /// 30 | /// The BinaryWriter to write from. 31 | /// The iCode offset of the data that was written. 32 | public override int Write(AssetBinaryWriter writer) 33 | { 34 | return 0; 35 | } 36 | } 37 | } 38 | -------------------------------------------------------------------------------- /WTT/UAssetAPI/Kismet/Bytecode/Expressions/EX_EndOfScript.cs: -------------------------------------------------------------------------------- 1 | namespace UAssetAPI.Kismet.Bytecode.Expressions 2 | { 3 | /// 4 | /// A single Kismet bytecode instruction, corresponding to the instruction. 5 | /// 6 | public class EX_EndOfScript : KismetExpression 7 | { 8 | /// 9 | /// The token of this expression. 10 | /// 11 | public override EExprToken Token { get { return EExprToken.EX_EndOfScript; } } 12 | 13 | public EX_EndOfScript() 14 | { 15 | 16 | } 17 | 18 | /// 19 | /// Reads out the expression from a BinaryReader. 20 | /// 21 | /// The BinaryReader to read from. 22 | public override void Read(AssetBinaryReader reader) 23 | { 24 | 25 | } 26 | 27 | /// 28 | /// Writes the expression to a BinaryWriter. 29 | /// 30 | /// The BinaryWriter to write from. 31 | /// The iCode offset of the data that was written. 32 | public override int Write(AssetBinaryWriter writer) 33 | { 34 | return 0; 35 | } 36 | } 37 | } 38 | -------------------------------------------------------------------------------- /WTT/UAssetAPI/Kismet/Bytecode/Expressions/EX_EndSetConst.cs: -------------------------------------------------------------------------------- 1 | namespace UAssetAPI.Kismet.Bytecode.Expressions 2 | { 3 | /// 4 | /// A single Kismet bytecode instruction, corresponding to the instruction. 5 | /// 6 | public class EX_EndSetConst : KismetExpression 7 | { 8 | /// 9 | /// The token of this expression. 10 | /// 11 | public override EExprToken Token { get { return EExprToken.EX_EndSetConst; } } 12 | 13 | public EX_EndSetConst() 14 | { 15 | 16 | } 17 | 18 | /// 19 | /// Reads out the expression from a BinaryReader. 20 | /// 21 | /// The BinaryReader to read from. 22 | public override void Read(AssetBinaryReader reader) 23 | { 24 | 25 | } 26 | 27 | /// 28 | /// Writes the expression to a BinaryWriter. 29 | /// 30 | /// The BinaryWriter to write from. 31 | /// The iCode offset of the data that was written. 32 | public override int Write(AssetBinaryWriter writer) 33 | { 34 | return 0; 35 | } 36 | } 37 | } 38 | -------------------------------------------------------------------------------- /WTT/UAssetAPI/Kismet/Bytecode/Expressions/EX_NoInterface.cs: -------------------------------------------------------------------------------- 1 | namespace UAssetAPI.Kismet.Bytecode.Expressions 2 | { 3 | /// 4 | /// A single Kismet bytecode instruction, corresponding to the instruction. 5 | /// 6 | public class EX_NoInterface : KismetExpression 7 | { 8 | /// 9 | /// The token of this expression. 10 | /// 11 | public override EExprToken Token { get { return EExprToken.EX_NoInterface; } } 12 | 13 | public EX_NoInterface() 14 | { 15 | 16 | } 17 | 18 | /// 19 | /// Reads out the expression from a BinaryReader. 20 | /// 21 | /// The BinaryReader to read from. 22 | public override void Read(AssetBinaryReader reader) 23 | { 24 | 25 | } 26 | 27 | /// 28 | /// Writes the expression to a BinaryWriter. 29 | /// 30 | /// The BinaryWriter to write from. 31 | /// The iCode offset of the data that was written. 32 | public override int Write(AssetBinaryWriter writer) 33 | { 34 | return 0; 35 | } 36 | } 37 | } 38 | -------------------------------------------------------------------------------- /WTT/UAssetAPI/Kismet/Bytecode/EBlueprintTextLiteralType.cs: -------------------------------------------------------------------------------- 1 | namespace UAssetAPI.Kismet.Bytecode 2 | { 3 | /// 4 | /// Kinds of text literals 5 | /// 6 | public enum EBlueprintTextLiteralType : byte 7 | { 8 | /// 9 | /// Text is an empty string. The bytecode contains no strings, and you should use FText::GetEmpty() to initialize the FText instance. 10 | /// 11 | Empty, 12 | /// 13 | /// Text is localized. The bytecode will contain three strings - source, key, and namespace - and should be loaded via FInternationalization 14 | /// 15 | LocalizedText, 16 | /// 17 | /// Text is culture invariant. The bytecode will contain one string, and you should use FText::AsCultureInvariant to initialize the FText instance. 18 | /// 19 | InvariantText, 20 | /// 21 | /// Text is a literal FString. The bytecode will contain one string, and you should use FText::FromString to initialize the FText instance. 22 | /// 23 | LiteralString, 24 | /// 25 | /// Text is from a string table. The bytecode will contain an object pointer (not used) and two strings - the table ID, and key - and should be found via FText::FromStringTable 26 | /// 27 | StringTableEntry 28 | } 29 | } 30 | -------------------------------------------------------------------------------- /WTT/UAssetAPI/Kismet/Bytecode/Expressions/EX_EndParmValue.cs: -------------------------------------------------------------------------------- 1 | namespace UAssetAPI.Kismet.Bytecode.Expressions 2 | { 3 | /// 4 | /// A single Kismet bytecode instruction, corresponding to the instruction. 5 | /// 6 | public class EX_EndParmValue : KismetExpression 7 | { 8 | /// 9 | /// The token of this expression. 10 | /// 11 | public override EExprToken Token { get { return EExprToken.EX_EndParmValue; } } 12 | 13 | public EX_EndParmValue() 14 | { 15 | 16 | } 17 | 18 | /// 19 | /// Reads out the expression from a BinaryReader. 20 | /// 21 | /// The BinaryReader to read from. 22 | public override void Read(AssetBinaryReader reader) 23 | { 24 | 25 | } 26 | 27 | /// 28 | /// Writes the expression to a BinaryWriter. 29 | /// 30 | /// The BinaryWriter to write from. 31 | /// The iCode offset of the data that was written. 32 | public override int Write(AssetBinaryWriter writer) 33 | { 34 | return 0; 35 | } 36 | } 37 | } 38 | -------------------------------------------------------------------------------- /WTT/UAssetAPI/Kismet/Bytecode/Expressions/EX_EndArrayConst.cs: -------------------------------------------------------------------------------- 1 | namespace UAssetAPI.Kismet.Bytecode.Expressions 2 | { 3 | /// 4 | /// A single Kismet bytecode instruction, corresponding to the instruction. 5 | /// 6 | public class EX_EndArrayConst : KismetExpression 7 | { 8 | /// 9 | /// The token of this expression. 10 | /// 11 | public override EExprToken Token { get { return EExprToken.EX_EndArrayConst; } } 12 | 13 | public EX_EndArrayConst() 14 | { 15 | 16 | } 17 | 18 | /// 19 | /// Reads out the expression from a BinaryReader. 20 | /// 21 | /// The BinaryReader to read from. 22 | public override void Read(AssetBinaryReader reader) 23 | { 24 | 25 | } 26 | 27 | /// 28 | /// Writes the expression to a BinaryWriter. 29 | /// 30 | /// The BinaryWriter to write from. 31 | /// The iCode offset of the data that was written. 32 | public override int Write(AssetBinaryWriter writer) 33 | { 34 | return 0; 35 | } 36 | } 37 | } 38 | -------------------------------------------------------------------------------- /WTT/UAssetAPI/Kismet/Bytecode/Expressions/EX_Nothing.cs: -------------------------------------------------------------------------------- 1 | namespace UAssetAPI.Kismet.Bytecode.Expressions 2 | { 3 | /// 4 | /// A single Kismet bytecode instruction, corresponding to the instruction. 5 | /// Represents a no-op. 6 | /// 7 | public class EX_Nothing : KismetExpression 8 | { 9 | /// 10 | /// The token of this expression. 11 | /// 12 | public override EExprToken Token { get { return EExprToken.EX_Nothing; } } 13 | 14 | public EX_Nothing() 15 | { 16 | 17 | } 18 | 19 | /// 20 | /// Reads out the expression from a BinaryReader. 21 | /// 22 | /// The BinaryReader to read from. 23 | public override void Read(AssetBinaryReader reader) 24 | { 25 | 26 | } 27 | 28 | /// 29 | /// Writes the expression to a BinaryWriter. 30 | /// 31 | /// The BinaryWriter to write from. 32 | /// The iCode offset of the data that was written. 33 | public override int Write(AssetBinaryWriter writer) 34 | { 35 | return 0; 36 | } 37 | } 38 | } 39 | -------------------------------------------------------------------------------- /WTT/UAssetAPI/Kismet/Bytecode/Expressions/EX_DeprecatedOp4A.cs: -------------------------------------------------------------------------------- 1 | namespace UAssetAPI.Kismet.Bytecode.Expressions 2 | { 3 | /// 4 | /// A single Kismet bytecode instruction, corresponding to the instruction. 5 | /// 6 | public class EX_DeprecatedOp4A : KismetExpression 7 | { 8 | /// 9 | /// The token of this expression. 10 | /// 11 | public override EExprToken Token { get { return EExprToken.EX_DeprecatedOp4A; } } 12 | 13 | public EX_DeprecatedOp4A() 14 | { 15 | 16 | } 17 | 18 | /// 19 | /// Reads out the expression from a BinaryReader. 20 | /// 21 | /// The BinaryReader to read from. 22 | public override void Read(AssetBinaryReader reader) 23 | { 24 | 25 | } 26 | 27 | /// 28 | /// Writes the expression to a BinaryWriter. 29 | /// 30 | /// The BinaryWriter to write from. 31 | /// The iCode offset of the data that was written. 32 | public override int Write(AssetBinaryWriter writer) 33 | { 34 | return 0; 35 | } 36 | } 37 | } 38 | -------------------------------------------------------------------------------- /WTT/UAssetAPI/Kismet/Bytecode/Expressions/EX_EndStructConst.cs: -------------------------------------------------------------------------------- 1 | namespace UAssetAPI.Kismet.Bytecode.Expressions 2 | { 3 | /// 4 | /// A single Kismet bytecode instruction, corresponding to the instruction. 5 | /// 6 | public class EX_EndStructConst : KismetExpression 7 | { 8 | /// 9 | /// The token of this expression. 10 | /// 11 | public override EExprToken Token { get { return EExprToken.EX_EndStructConst; } } 12 | 13 | public EX_EndStructConst() 14 | { 15 | 16 | } 17 | 18 | /// 19 | /// Reads out the expression from a BinaryReader. 20 | /// 21 | /// The BinaryReader to read from. 22 | public override void Read(AssetBinaryReader reader) 23 | { 24 | 25 | } 26 | 27 | /// 28 | /// Writes the expression to a BinaryWriter. 29 | /// 30 | /// The BinaryWriter to write from. 31 | /// The iCode offset of the data that was written. 32 | public override int Write(AssetBinaryWriter writer) 33 | { 34 | return 0; 35 | } 36 | } 37 | } 38 | -------------------------------------------------------------------------------- /WTT/UAssetAPI/Kismet/Bytecode/Expressions/EX_WireTracepoint.cs: -------------------------------------------------------------------------------- 1 | namespace UAssetAPI.Kismet.Bytecode.Expressions 2 | { 3 | /// 4 | /// A single Kismet bytecode instruction, corresponding to the instruction. 5 | /// 6 | public class EX_WireTracepoint : KismetExpression 7 | { 8 | /// 9 | /// The token of this expression. 10 | /// 11 | public override EExprToken Token { get { return EExprToken.EX_WireTracepoint; } } 12 | 13 | public EX_WireTracepoint() 14 | { 15 | 16 | } 17 | 18 | /// 19 | /// Reads out the expression from a BinaryReader. 20 | /// 21 | /// The BinaryReader to read from. 22 | public override void Read(AssetBinaryReader reader) 23 | { 24 | 25 | } 26 | 27 | /// 28 | /// Writes the expression to a BinaryWriter. 29 | /// 30 | /// The BinaryWriter to write from. 31 | /// The iCode offset of the data that was written. 32 | public override int Write(AssetBinaryWriter writer) 33 | { 34 | return 0; 35 | } 36 | } 37 | } 38 | -------------------------------------------------------------------------------- /WTT/UAssetAPI/Kismet/Bytecode/Expressions/EX_EndFunctionParms.cs: -------------------------------------------------------------------------------- 1 | namespace UAssetAPI.Kismet.Bytecode.Expressions 2 | { 3 | /// 4 | /// A single Kismet bytecode instruction, corresponding to the instruction. 5 | /// 6 | public class EX_EndFunctionParms : KismetExpression 7 | { 8 | /// 9 | /// The token of this expression. 10 | /// 11 | public override EExprToken Token { get { return EExprToken.EX_EndFunctionParms; } } 12 | 13 | public EX_EndFunctionParms() 14 | { 15 | 16 | } 17 | 18 | /// 19 | /// Reads out the expression from a BinaryReader. 20 | /// 21 | /// The BinaryReader to read from. 22 | public override void Read(AssetBinaryReader reader) 23 | { 24 | 25 | } 26 | 27 | /// 28 | /// Writes the expression to a BinaryWriter. 29 | /// 30 | /// The BinaryWriter to write from. 31 | /// The iCode offset of the data that was written. 32 | public override int Write(AssetBinaryWriter writer) 33 | { 34 | return 0; 35 | } 36 | } 37 | } 38 | -------------------------------------------------------------------------------- /WTT/UAssetAPI/Kismet/Bytecode/Expressions/EX_PopExecutionFlow.cs: -------------------------------------------------------------------------------- 1 | namespace UAssetAPI.Kismet.Bytecode.Expressions 2 | { 3 | /// 4 | /// A single Kismet bytecode instruction, corresponding to the instruction. 5 | /// 6 | public class EX_PopExecutionFlow : KismetExpression 7 | { 8 | /// 9 | /// The token of this expression. 10 | /// 11 | public override EExprToken Token { get { return EExprToken.EX_PopExecutionFlow; } } 12 | 13 | public EX_PopExecutionFlow() 14 | { 15 | 16 | } 17 | 18 | /// 19 | /// Reads out the expression from a BinaryReader. 20 | /// 21 | /// The BinaryReader to read from. 22 | public override void Read(AssetBinaryReader reader) 23 | { 24 | 25 | } 26 | 27 | /// 28 | /// Writes the expression to a BinaryWriter. 29 | /// 30 | /// The BinaryWriter to write from. 31 | /// The iCode offset of the data that was written. 32 | public override int Write(AssetBinaryWriter writer) 33 | { 34 | return 0; 35 | } 36 | } 37 | } 38 | -------------------------------------------------------------------------------- /WTT/UAssetAPI/Kismet/Bytecode/Expressions/EX_CallMath.cs: -------------------------------------------------------------------------------- 1 | namespace UAssetAPI.Kismet.Bytecode.Expressions 2 | { 3 | /// 4 | /// A single Kismet bytecode instruction, corresponding to the instruction. 5 | /// 6 | public class EX_CallMath : EX_FinalFunction 7 | { 8 | /// 9 | /// The token of this expression. 10 | /// 11 | public override EExprToken Token { get { return EExprToken.EX_CallMath; } } 12 | 13 | public EX_CallMath() : base() 14 | { 15 | 16 | } 17 | 18 | /// 19 | /// Reads out the expression from a BinaryReader. 20 | /// 21 | /// The BinaryReader to read from. 22 | public override void Read(AssetBinaryReader reader) 23 | { 24 | base.Read(reader); 25 | } 26 | 27 | /// 28 | /// Writes the expression to a BinaryWriter. 29 | /// 30 | /// The BinaryWriter to write from. 31 | /// The iCode offset of the data that was written. 32 | public override int Write(AssetBinaryWriter writer) 33 | { 34 | return base.Write(writer); 35 | } 36 | } 37 | } 38 | -------------------------------------------------------------------------------- /WTT/UAssetAPI/Kismet/Bytecode/Expressions/EX_ClassContext.cs: -------------------------------------------------------------------------------- 1 | namespace UAssetAPI.Kismet.Bytecode.Expressions 2 | { 3 | /// 4 | /// A single Kismet bytecode instruction, corresponding to the instruction. 5 | /// 6 | public class EX_ClassContext : EX_Context 7 | { 8 | /// 9 | /// The token of this expression. 10 | /// 11 | public override EExprToken Token { get { return EExprToken.EX_ClassContext; } } 12 | 13 | public EX_ClassContext() 14 | { 15 | 16 | } 17 | 18 | /// 19 | /// Reads out the expression from a BinaryReader. 20 | /// 21 | /// The BinaryReader to read from. 22 | public override void Read(AssetBinaryReader reader) 23 | { 24 | base.Read(reader); 25 | } 26 | 27 | /// 28 | /// Writes the expression to a BinaryWriter. 29 | /// 30 | /// The BinaryWriter to write from. 31 | /// The iCode offset of the data that was written. 32 | public override int Write(AssetBinaryWriter writer) 33 | { 34 | return base.Write(writer); 35 | } 36 | } 37 | } 38 | -------------------------------------------------------------------------------- /WTT/UAssetAPI/Kismet/Bytecode/Expressions/EX_StringConst.cs: -------------------------------------------------------------------------------- 1 | namespace UAssetAPI.Kismet.Bytecode.Expressions 2 | { 3 | /// 4 | /// A single Kismet bytecode instruction, corresponding to the instruction. 5 | /// 6 | public class EX_StringConst : KismetExpression 7 | { 8 | /// 9 | /// The token of this expression. 10 | /// 11 | public override EExprToken Token { get { return EExprToken.EX_StringConst; } } 12 | 13 | public EX_StringConst() 14 | { 15 | 16 | } 17 | 18 | /// 19 | /// Reads out the expression from a BinaryReader. 20 | /// 21 | /// The BinaryReader to read from. 22 | public override void Read(AssetBinaryReader reader) 23 | { 24 | Value = reader.XFERSTRING(); 25 | } 26 | 27 | /// 28 | /// Writes the expression to a BinaryWriter. 29 | /// 30 | /// The BinaryWriter to write from. 31 | /// The iCode offset of the data that was written. 32 | public override int Write(AssetBinaryWriter writer) 33 | { 34 | return writer.XFERSTRING(Value); 35 | } 36 | } 37 | } 38 | -------------------------------------------------------------------------------- /WTT/UAssetAPI/Kismet/Bytecode/Expressions/EX_Context_FailSilent.cs: -------------------------------------------------------------------------------- 1 | namespace UAssetAPI.Kismet.Bytecode.Expressions 2 | { 3 | /// 4 | /// A single Kismet bytecode instruction, corresponding to the instruction. 5 | /// 6 | public class EX_Context_FailSilent : EX_Context 7 | { 8 | /// 9 | /// The token of this expression. 10 | /// 11 | public override EExprToken Token { get { return EExprToken.EX_Context_FailSilent; } } 12 | 13 | public EX_Context_FailSilent() 14 | { 15 | 16 | } 17 | 18 | /// 19 | /// Reads out the expression from a BinaryReader. 20 | /// 21 | /// The BinaryReader to read from. 22 | public override void Read(AssetBinaryReader reader) 23 | { 24 | base.Read(reader); 25 | } 26 | 27 | /// 28 | /// Writes the expression to a BinaryWriter. 29 | /// 30 | /// The BinaryWriter to write from. 31 | /// The iCode offset of the data that was written. 32 | public override int Write(AssetBinaryWriter writer) 33 | { 34 | return base.Write(writer); 35 | } 36 | } 37 | } 38 | -------------------------------------------------------------------------------- /WTT/UAssetAPI/Kismet/Bytecode/Expressions/EX_IntConst.cs: -------------------------------------------------------------------------------- 1 | namespace UAssetAPI.Kismet.Bytecode.Expressions 2 | { 3 | /// 4 | /// A single Kismet bytecode instruction, corresponding to the instruction. 5 | /// 6 | public class EX_IntConst : KismetExpression 7 | { 8 | /// 9 | /// The token of this expression. 10 | /// 11 | public override EExprToken Token { get { return EExprToken.EX_IntConst; } } 12 | 13 | public EX_IntConst() 14 | { 15 | 16 | } 17 | 18 | /// 19 | /// Reads out the expression from a BinaryReader. 20 | /// 21 | /// The BinaryReader to read from. 22 | public override void Read(AssetBinaryReader reader) 23 | { 24 | Value = reader.ReadInt32(); 25 | } 26 | 27 | /// 28 | /// Writes the expression to a BinaryWriter. 29 | /// 30 | /// The BinaryWriter to write from. 31 | /// The iCode offset of the data that was written. 32 | public override int Write(AssetBinaryWriter writer) 33 | { 34 | writer.Write(Value); 35 | return sizeof(int); 36 | } 37 | } 38 | } 39 | -------------------------------------------------------------------------------- /WTT/UAssetAPI/Kismet/Bytecode/Expressions/EX_ByteConst.cs: -------------------------------------------------------------------------------- 1 | namespace UAssetAPI.Kismet.Bytecode.Expressions 2 | { 3 | /// 4 | /// A single Kismet bytecode instruction, corresponding to the instruction. 5 | /// 6 | public class EX_ByteConst : KismetExpression 7 | { 8 | /// 9 | /// The token of this expression. 10 | /// 11 | public override EExprToken Token { get { return EExprToken.EX_ByteConst; } } 12 | 13 | public EX_ByteConst() 14 | { 15 | 16 | } 17 | 18 | /// 19 | /// Reads out the expression from a BinaryReader. 20 | /// 21 | /// The BinaryReader to read from. 22 | public override void Read(AssetBinaryReader reader) 23 | { 24 | Value = reader.ReadByte(); 25 | } 26 | 27 | /// 28 | /// Writes the expression to a BinaryWriter. 29 | /// 30 | /// The BinaryWriter to write from. 31 | /// The iCode offset of the data that was written. 32 | public override int Write(AssetBinaryWriter writer) 33 | { 34 | writer.Write(Value); 35 | return sizeof(byte); 36 | } 37 | } 38 | } 39 | -------------------------------------------------------------------------------- /WTT/UAssetAPI/Kismet/Bytecode/Expressions/EX_Int64Const.cs: -------------------------------------------------------------------------------- 1 | namespace UAssetAPI.Kismet.Bytecode.Expressions 2 | { 3 | /// 4 | /// A single Kismet bytecode instruction, corresponding to the instruction. 5 | /// 6 | public class EX_Int64Const : KismetExpression 7 | { 8 | /// 9 | /// The token of this expression. 10 | /// 11 | public override EExprToken Token { get { return EExprToken.EX_Int64Const; } } 12 | 13 | public EX_Int64Const() 14 | { 15 | 16 | } 17 | 18 | /// 19 | /// Reads out the expression from a BinaryReader. 20 | /// 21 | /// The BinaryReader to read from. 22 | public override void Read(AssetBinaryReader reader) 23 | { 24 | Value = reader.ReadInt64(); 25 | } 26 | 27 | /// 28 | /// Writes the expression to a BinaryWriter. 29 | /// 30 | /// The BinaryWriter to write from. 31 | /// The iCode offset of the data that was written. 32 | public override int Write(AssetBinaryWriter writer) 33 | { 34 | writer.Write(Value); 35 | return sizeof(long); 36 | } 37 | } 38 | } 39 | -------------------------------------------------------------------------------- /WTT/WTT/ExportSettings.cs: -------------------------------------------------------------------------------- 1 | namespace WTT; 2 | 3 | public class ExportSettings 4 | { 5 | /// 6 | /// Export Japanese message. 7 | /// 8 | public bool ExportJapaneseMessage { get; set; } = true; 9 | 10 | /// 11 | /// Export English (USA) message. 12 | /// 13 | public bool ExportEnglishUSAMessage { get; set; } = true; 14 | 15 | /// 16 | /// Export English (SG) message. 17 | /// 18 | public bool ExportEnglishSGMessage { get; set; } = false; 19 | 20 | /// 21 | /// Export Traditional Chinese (TW) message. 22 | /// 23 | public bool ExportTChineseTWMessage { get; set; } = false; 24 | 25 | /// 26 | /// Export Traditional Chinese (HK) message. 27 | /// 28 | public bool ExportTChineseHKMessage { get; set; } = false; 29 | 30 | /// 31 | /// Export Simplified Chinese message along with the Japanese message. 32 | /// Useful for cross-referencing meaning of a phrase or word. 33 | /// 34 | public bool ExportSChineseMessage { get; set; } = false; 35 | 36 | /// 37 | /// Export Korean message along with the Japanese message. 38 | /// Useful for cross-referencing meaning of a phrase or word. 39 | /// 40 | public bool ExportKoreanMessage { get; set; } = true; 41 | } -------------------------------------------------------------------------------- /WTT/UAssetAPI/Kismet/Bytecode/Expressions/EX_LocalFinalFunction.cs: -------------------------------------------------------------------------------- 1 | namespace UAssetAPI.Kismet.Bytecode.Expressions 2 | { 3 | /// 4 | /// A single Kismet bytecode instruction, corresponding to the instruction. 5 | /// 6 | public class EX_LocalFinalFunction : EX_FinalFunction 7 | { 8 | /// 9 | /// The token of this expression. 10 | /// 11 | public override EExprToken Token { get { return EExprToken.EX_LocalFinalFunction; } } 12 | 13 | public EX_LocalFinalFunction() : base() 14 | { 15 | 16 | } 17 | 18 | /// 19 | /// Reads out the expression from a BinaryReader. 20 | /// 21 | /// The BinaryReader to read from. 22 | public override void Read(AssetBinaryReader reader) 23 | { 24 | base.Read(reader); 25 | } 26 | 27 | /// 28 | /// Writes the expression to a BinaryWriter. 29 | /// 30 | /// The BinaryWriter to write from. 31 | /// The iCode offset of the data that was written. 32 | public override int Write(AssetBinaryWriter writer) 33 | { 34 | return base.Write(writer); 35 | } 36 | } 37 | } 38 | -------------------------------------------------------------------------------- /WTT/UAssetAPI/Kismet/Bytecode/Expressions/EX_IntConstByte.cs: -------------------------------------------------------------------------------- 1 | namespace UAssetAPI.Kismet.Bytecode.Expressions 2 | { 3 | /// 4 | /// A single Kismet bytecode instruction, corresponding to the instruction. 5 | /// 6 | public class EX_IntConstByte : KismetExpression 7 | { 8 | /// 9 | /// The token of this expression. 10 | /// 11 | public override EExprToken Token { get { return EExprToken.EX_IntConstByte; } } 12 | 13 | public EX_IntConstByte() 14 | { 15 | 16 | } 17 | 18 | /// 19 | /// Reads out the expression from a BinaryReader. 20 | /// 21 | /// The BinaryReader to read from. 22 | public override void Read(AssetBinaryReader reader) 23 | { 24 | Value = reader.ReadByte(); 25 | } 26 | 27 | /// 28 | /// Writes the expression to a BinaryWriter. 29 | /// 30 | /// The BinaryWriter to write from. 31 | /// The iCode offset of the data that was written. 32 | public override int Write(AssetBinaryWriter writer) 33 | { 34 | writer.Write(Value); 35 | return sizeof(byte); 36 | } 37 | } 38 | } 39 | -------------------------------------------------------------------------------- /WTT/UAssetAPI/Kismet/Bytecode/Expressions/EX_NameConst.cs: -------------------------------------------------------------------------------- 1 | using UAssetAPI.UnrealTypes; 2 | 3 | namespace UAssetAPI.Kismet.Bytecode.Expressions 4 | { 5 | /// 6 | /// A single Kismet bytecode instruction, corresponding to the instruction. 7 | /// 8 | public class EX_NameConst : KismetExpression 9 | { 10 | /// 11 | /// The token of this expression. 12 | /// 13 | public override EExprToken Token { get { return EExprToken.EX_NameConst; } } 14 | 15 | public EX_NameConst() 16 | { 17 | 18 | } 19 | 20 | /// 21 | /// Reads out the expression from a BinaryReader. 22 | /// 23 | /// The BinaryReader to read from. 24 | public override void Read(AssetBinaryReader reader) 25 | { 26 | Value = reader.XFERNAME(); 27 | } 28 | 29 | /// 30 | /// Writes the expression to a BinaryWriter. 31 | /// 32 | /// The BinaryWriter to write from. 33 | /// The iCode offset of the data that was written. 34 | public override int Write(AssetBinaryWriter writer) 35 | { 36 | return writer.XFERNAME(Value); 37 | } 38 | } 39 | } 40 | -------------------------------------------------------------------------------- /WTT/UAssetAPI/Kismet/Bytecode/Expressions/EX_TextConst.cs: -------------------------------------------------------------------------------- 1 | namespace UAssetAPI.Kismet.Bytecode.Expressions 2 | { 3 | /// 4 | /// A single Kismet bytecode instruction, corresponding to the instruction. 5 | /// 6 | public class EX_TextConst : KismetExpression 7 | { 8 | /// 9 | /// The token of this expression. 10 | /// 11 | public override EExprToken Token { get { return EExprToken.EX_TextConst; } } 12 | 13 | public EX_TextConst() 14 | { 15 | 16 | } 17 | 18 | /// 19 | /// Reads out the expression from a BinaryReader. 20 | /// 21 | /// The BinaryReader to read from. 22 | public override void Read(AssetBinaryReader reader) 23 | { 24 | Value = new FScriptText(); 25 | Value.Read(reader); 26 | } 27 | 28 | /// 29 | /// Writes the expression to a BinaryWriter. 30 | /// 31 | /// The BinaryWriter to write from. 32 | /// The iCode offset of the data that was written. 33 | public override int Write(AssetBinaryWriter writer) 34 | { 35 | return Value.Write(writer); 36 | } 37 | } 38 | } 39 | -------------------------------------------------------------------------------- /WTT/UAssetAPI/Kismet/Bytecode/Expressions/EX_UInt64Const.cs: -------------------------------------------------------------------------------- 1 | namespace UAssetAPI.Kismet.Bytecode.Expressions 2 | { 3 | /// 4 | /// A single Kismet bytecode instruction, corresponding to the instruction. 5 | /// 6 | public class EX_UInt64Const : KismetExpression 7 | { 8 | /// 9 | /// The token of this expression. 10 | /// 11 | public override EExprToken Token { get { return EExprToken.EX_UInt64Const; } } 12 | 13 | public EX_UInt64Const() 14 | { 15 | 16 | } 17 | 18 | /// 19 | /// Reads out the expression from a BinaryReader. 20 | /// 21 | /// The BinaryReader to read from. 22 | public override void Read(AssetBinaryReader reader) 23 | { 24 | Value = reader.ReadUInt64(); 25 | } 26 | 27 | /// 28 | /// Writes the expression to a BinaryWriter. 29 | /// 30 | /// The BinaryWriter to write from. 31 | /// The iCode offset of the data that was written. 32 | public override int Write(AssetBinaryWriter writer) 33 | { 34 | writer.Write(Value); 35 | return sizeof(ulong); 36 | } 37 | } 38 | } 39 | -------------------------------------------------------------------------------- /WTT/UAssetAPI/Kismet/Bytecode/Expressions/EX_LocalVirtualFunction.cs: -------------------------------------------------------------------------------- 1 | namespace UAssetAPI.Kismet.Bytecode.Expressions 2 | { 3 | /// 4 | /// A single Kismet bytecode instruction, corresponding to the instruction. 5 | /// 6 | public class EX_LocalVirtualFunction : EX_VirtualFunction 7 | { 8 | /// 9 | /// The token of this expression. 10 | /// 11 | public override EExprToken Token { get { return EExprToken.EX_LocalVirtualFunction; } } 12 | 13 | public EX_LocalVirtualFunction() : base() 14 | { 15 | 16 | } 17 | 18 | /// 19 | /// Reads out the expression from a BinaryReader. 20 | /// 21 | /// The BinaryReader to read from. 22 | public override void Read(AssetBinaryReader reader) 23 | { 24 | base.Read(reader); 25 | } 26 | 27 | /// 28 | /// Writes the expression to a BinaryWriter. 29 | /// 30 | /// The BinaryWriter to write from. 31 | /// The iCode offset of the data that was written. 32 | public override int Write(AssetBinaryWriter writer) 33 | { 34 | return base.Write(writer); 35 | } 36 | } 37 | } 38 | -------------------------------------------------------------------------------- /WTT/UAssetAPI/Kismet/Bytecode/Expressions/EX_UnicodeStringConst.cs: -------------------------------------------------------------------------------- 1 | namespace UAssetAPI.Kismet.Bytecode.Expressions 2 | { 3 | /// 4 | /// A single Kismet bytecode instruction, corresponding to the instruction. 5 | /// 6 | public class EX_UnicodeStringConst : KismetExpression 7 | { 8 | /// 9 | /// The token of this expression. 10 | /// 11 | public override EExprToken Token { get { return EExprToken.EX_UnicodeStringConst; } } 12 | 13 | public EX_UnicodeStringConst() 14 | { 15 | 16 | } 17 | 18 | /// 19 | /// Reads out the expression from a BinaryReader. 20 | /// 21 | /// The BinaryReader to read from. 22 | public override void Read(AssetBinaryReader reader) 23 | { 24 | Value = reader.XFERUNICODESTRING(); 25 | } 26 | 27 | /// 28 | /// Writes the expression to a BinaryWriter. 29 | /// 30 | /// The BinaryWriter to write from. 31 | /// The iCode offset of the data that was written. 32 | public override int Write(AssetBinaryWriter writer) 33 | { 34 | return writer.XFERUNICODESTRING(Value); 35 | } 36 | } 37 | } 38 | -------------------------------------------------------------------------------- /WTT/UAssetAPI/Kismet/Bytecode/Expressions/EX_ObjectConst.cs: -------------------------------------------------------------------------------- 1 | using UAssetAPI.UnrealTypes; 2 | 3 | namespace UAssetAPI.Kismet.Bytecode.Expressions 4 | { 5 | /// 6 | /// A single Kismet bytecode instruction, corresponding to the instruction. 7 | /// 8 | public class EX_ObjectConst : KismetExpression 9 | { 10 | /// 11 | /// The token of this expression. 12 | /// 13 | public override EExprToken Token { get { return EExprToken.EX_ObjectConst; } } 14 | 15 | public EX_ObjectConst() 16 | { 17 | 18 | } 19 | 20 | /// 21 | /// Reads out the expression from a BinaryReader. 22 | /// 23 | /// The BinaryReader to read from. 24 | public override void Read(AssetBinaryReader reader) 25 | { 26 | Value = reader.XFER_OBJECT_POINTER(); 27 | } 28 | 29 | /// 30 | /// Writes the expression to a BinaryWriter. 31 | /// 32 | /// The BinaryWriter to write from. 33 | /// The iCode offset of the data that was written. 34 | public override int Write(AssetBinaryWriter writer) 35 | { 36 | return writer.XFER_OBJECT_POINTER(Value); 37 | } 38 | } 39 | } 40 | -------------------------------------------------------------------------------- /WTT/UAssetAPI/UnrealTypes/FRotator.cs: -------------------------------------------------------------------------------- 1 | using Newtonsoft.Json; 2 | using UAssetAPI.JSON; 3 | using UAssetAPI.UnrealTypes; 4 | 5 | namespace UAssetAPI.UnrealTypes 6 | { 7 | /// 8 | /// Implements a container for rotation information. 9 | /// All rotation values are stored in degrees. 10 | /// 11 | [JsonObject(MemberSerialization.OptIn)] 12 | public class FRotator 13 | { 14 | /// Rotation around the right axis (around Y axis), Looking up and down (0=Straight Ahead, +Up, -Down) 15 | [JsonProperty] 16 | [JsonConverter(typeof(FSignedZeroJsonConverter))] 17 | public float Pitch; 18 | 19 | /// Rotation around the up axis (around Z axis), Running in circles 0=East, +North, -South. 20 | [JsonProperty] 21 | [JsonConverter(typeof(FSignedZeroJsonConverter))] 22 | public float Yaw; 23 | 24 | /// Rotation around the forward axis (around X axis), Tilting your head, 0=Straight, +Clockwise, -CCW. 25 | [JsonProperty] 26 | [JsonConverter(typeof(FSignedZeroJsonConverter))] 27 | public float Roll; 28 | 29 | public FRotator(float pitch, float yaw, float roll) 30 | { 31 | Pitch = pitch; 32 | Yaw = yaw; 33 | Roll = roll; 34 | } 35 | 36 | public FRotator() 37 | { 38 | 39 | } 40 | } 41 | } 42 | -------------------------------------------------------------------------------- /WTT/UAssetAPI/Kismet/Bytecode/Expressions/EX_FieldPathConst.cs: -------------------------------------------------------------------------------- 1 | namespace UAssetAPI.Kismet.Bytecode.Expressions 2 | { 3 | /// 4 | /// A single Kismet bytecode instruction, corresponding to the instruction. 5 | /// 6 | public class EX_FieldPathConst : KismetExpression 7 | { 8 | /// 9 | /// The token of this expression. 10 | /// 11 | public override EExprToken Token { get { return EExprToken.EX_FieldPathConst; } } 12 | 13 | public EX_FieldPathConst() 14 | { 15 | 16 | } 17 | 18 | /// 19 | /// Reads out the expression from a BinaryReader. 20 | /// 21 | /// The BinaryReader to read from. 22 | public override void Read(AssetBinaryReader reader) 23 | { 24 | Value = ExpressionSerializer.ReadExpression(reader); 25 | } 26 | 27 | /// 28 | /// Writes the expression to a BinaryWriter. 29 | /// 30 | /// The BinaryWriter to write from. 31 | /// The iCode offset of the data that was written. 32 | public override int Write(AssetBinaryWriter writer) 33 | { 34 | return ExpressionSerializer.WriteExpression(Value, writer); 35 | } 36 | } 37 | } 38 | -------------------------------------------------------------------------------- /WTT/UAssetAPI/Kismet/Bytecode/Expressions/EX_SoftObjectConst.cs: -------------------------------------------------------------------------------- 1 | namespace UAssetAPI.Kismet.Bytecode.Expressions 2 | { 3 | /// 4 | /// A single Kismet bytecode instruction, corresponding to the instruction. 5 | /// 6 | public class EX_SoftObjectConst : KismetExpression 7 | { 8 | /// 9 | /// The token of this expression. 10 | /// 11 | public override EExprToken Token { get { return EExprToken.EX_SoftObjectConst; } } 12 | 13 | public EX_SoftObjectConst() 14 | { 15 | 16 | } 17 | 18 | /// 19 | /// Reads out the expression from a BinaryReader. 20 | /// 21 | /// The BinaryReader to read from. 22 | public override void Read(AssetBinaryReader reader) 23 | { 24 | Value = ExpressionSerializer.ReadExpression(reader); 25 | } 26 | 27 | /// 28 | /// Writes the expression to a BinaryWriter. 29 | /// 30 | /// The BinaryWriter to write from. 31 | /// The iCode offset of the data that was written. 32 | public override int Write(AssetBinaryWriter writer) 33 | { 34 | return ExpressionSerializer.WriteExpression(Value, writer); 35 | } 36 | } 37 | } 38 | -------------------------------------------------------------------------------- /WTT/UAssetAPI/Kismet/Bytecode/Expressions/EX_SkipOffsetConst.cs: -------------------------------------------------------------------------------- 1 | namespace UAssetAPI.Kismet.Bytecode.Expressions 2 | { 3 | /// 4 | /// A single Kismet bytecode instruction, corresponding to the instruction. 5 | /// Represents a code offset constant. 6 | /// 7 | public class EX_SkipOffsetConst : KismetExpression 8 | { 9 | /// 10 | /// The token of this expression. 11 | /// 12 | public override EExprToken Token { get { return EExprToken.EX_SkipOffsetConst; } } 13 | 14 | public EX_SkipOffsetConst() 15 | { 16 | 17 | } 18 | 19 | /// 20 | /// Reads out the expression from a BinaryReader. 21 | /// 22 | /// The BinaryReader to read from. 23 | public override void Read(AssetBinaryReader reader) 24 | { 25 | Value = reader.ReadUInt32(); 26 | } 27 | 28 | /// 29 | /// Writes the expression to a BinaryWriter. 30 | /// 31 | /// The BinaryWriter to write from. 32 | /// The iCode offset of the data that was written. 33 | public override int Write(AssetBinaryWriter writer) 34 | { 35 | writer.Write(Value); 36 | return sizeof(uint); 37 | } 38 | } 39 | } 40 | -------------------------------------------------------------------------------- /WTT/UAssetAPI/UnrealTypes/FQuat.cs: -------------------------------------------------------------------------------- 1 | using Newtonsoft.Json; 2 | using UAssetAPI.JSON; 3 | using UAssetAPI.UnrealTypes; 4 | 5 | namespace UAssetAPI.UnrealTypes 6 | { 7 | /// 8 | /// Floating point quaternion that can represent a rotation about an axis in 3-D space. 9 | /// The X, Y, Z, W components also double as the Axis/Angle format. 10 | /// 11 | [JsonObject(MemberSerialization.OptIn)] 12 | public class FQuat 13 | { 14 | /// The quaternion's X-component. 15 | [JsonProperty] 16 | [JsonConverter(typeof(FSignedZeroJsonConverter))] 17 | public float X; 18 | 19 | /// The quaternion's Y-component. 20 | [JsonProperty] 21 | [JsonConverter(typeof(FSignedZeroJsonConverter))] 22 | public float Y; 23 | 24 | /// The quaternion's Z-component. 25 | [JsonProperty] 26 | [JsonConverter(typeof(FSignedZeroJsonConverter))] 27 | public float Z; 28 | 29 | /// The quaternion's W-component. 30 | [JsonProperty] 31 | [JsonConverter(typeof(FSignedZeroJsonConverter))] 32 | public float W; 33 | 34 | public FQuat(float x, float y, float z, float w) 35 | { 36 | X = x; 37 | Y = y; 38 | Z = z; 39 | W = w; 40 | } 41 | 42 | public FQuat() 43 | { 44 | 45 | } 46 | } 47 | } 48 | -------------------------------------------------------------------------------- /WTT/UAssetAPI/JSON/FNameJsonConverter.cs: -------------------------------------------------------------------------------- 1 | using Newtonsoft.Json; 2 | using System; 3 | using System.Collections.Generic; 4 | using System.Diagnostics; 5 | using UAssetAPI.UnrealTypes; 6 | 7 | namespace UAssetAPI 8 | { 9 | public class FNameJsonConverter : JsonConverter 10 | { 11 | public Dictionary ToBeFilled; 12 | public int currentI = 0; 13 | 14 | public override bool CanConvert(Type objectType) 15 | { 16 | return objectType == typeof(FName); 17 | } 18 | 19 | public override void WriteJson(JsonWriter writer, object value, JsonSerializer serializer) 20 | { 21 | var realVal = (FName)value; 22 | writer.WriteValue(realVal.DummyValue == null ? (realVal is null ? "null" : realVal.ToString()) : string.Empty); 23 | } 24 | 25 | public override bool CanRead 26 | { 27 | get { return true; } 28 | } 29 | 30 | public override object ReadJson(JsonReader reader, Type objectType, object existingValue, JsonSerializer serializer) 31 | { 32 | if (reader.Value == null) return null; 33 | var res = FName.DefineDummy(null, "temp", ++currentI); 34 | ToBeFilled[res] = Convert.ToString(reader.Value); 35 | return res; 36 | } 37 | 38 | public FNameJsonConverter(Dictionary dict) : base() 39 | { 40 | ToBeFilled = dict; 41 | } 42 | } 43 | } 44 | -------------------------------------------------------------------------------- /galliumhook/galliumhook/galliumhook.vcxproj.filters: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | {4FC737F1-C7A5-4376-A066-2A32D752A2FF} 6 | cpp;c;cc;cxx;c++;cppm;ixx;def;odl;idl;hpj;bat;asm;asmx 7 | 8 | 9 | {93995380-89BD-4b04-88EB-625FBE52EBFB} 10 | h;hh;hpp;hxx;h++;hm;inl;inc;ipp;xsd 11 | 12 | 13 | {67DA6AB6-F800-4c08-8B7A-83BB121AAD01} 14 | rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav;mfcribbon-ms 15 | 16 | 17 | 18 | 19 | Header Files 20 | 21 | 22 | Header Files 23 | 24 | 25 | Header Files 26 | 27 | 28 | 29 | 30 | Source Files 31 | 32 | 33 | Source Files 34 | 35 | 36 | -------------------------------------------------------------------------------- /.github/workflows/galliumhook.yml: -------------------------------------------------------------------------------- 1 | name: galliumhook Build 2 | 3 | on: 4 | push: 5 | branches: [ "master" ] 6 | pull_request: 7 | branches: [ "master" ] 8 | 9 | jobs: 10 | build: 11 | strategy: 12 | matrix: 13 | configuration: [Debug, Release] 14 | platform: [x64] 15 | 16 | runs-on: windows-latest 17 | 18 | steps: 19 | - name: Checkout 20 | uses: actions/checkout@v3 21 | with: 22 | fetch-depth: 0 23 | 24 | # Add MSBuild to the PATH: https://github.com/microsoft/setup-msbuild 25 | - name: Setup MSBuild.exe 26 | uses: microsoft/setup-msbuild@v1.0.2 27 | 28 | # Enable MSVC Developer Command Prompt 29 | - name: Enable Developer Command Prompt 30 | uses: ilammy/msvc-dev-cmd@v1.12.0 31 | with: 32 | vsversion: "2022" 33 | arch: "amd64" 34 | 35 | # Build the library 36 | - name: Build galliumhook 37 | run: msbuild galliumhook\galliumhook.sln /p:Configuration=$env:Configuration /p:Platform=$env:Platform 38 | env: 39 | Configuration: ${{ matrix.configuration }} 40 | Platform: ${{ matrix.platform }} 41 | 42 | # Upload the built files 43 | - name: Upload build artifacts 44 | uses: actions/upload-artifact@v3 45 | with: 46 | name: galliumhook - ${{ env.Platform }} ${{ env.Configuration }} 47 | path: galliumhook\${{ env.Platform }}\${{ env.Configuration }} 48 | env: 49 | Configuration: ${{ matrix.configuration }} 50 | Platform: ${{ matrix.platform }} 51 | -------------------------------------------------------------------------------- /WTT/UAssetAPI/Properties/AssemblyInfo.cs: -------------------------------------------------------------------------------- 1 | using System.Reflection; 2 | using System.Runtime.CompilerServices; 3 | using System.Runtime.InteropServices; 4 | 5 | // General Information about an assembly is controlled through the following 6 | // set of attributes. Change these attribute values to modify the information 7 | // associated with an assembly. 8 | [assembly: AssemblyTitle("UAssetAPI")] 9 | [assembly: AssemblyDescription("")] 10 | [assembly: AssemblyConfiguration("")] 11 | [assembly: AssemblyCompany("")] 12 | [assembly: AssemblyProduct("UAssetAPI")] 13 | [assembly: AssemblyCopyright("Copyright © Atenfyr 2022")] 14 | [assembly: AssemblyTrademark("")] 15 | [assembly: AssemblyCulture("")] 16 | 17 | // Setting ComVisible to false makes the types in this assembly not visible 18 | // to COM components. If you need to access a type in this assembly from 19 | // COM, set the ComVisible attribute to true on that type. 20 | [assembly: ComVisible(false)] 21 | 22 | // The following GUID is for the ID of the typelib if this project is exposed to COM 23 | [assembly: Guid("178417ec-1177-413e-be85-c83aecd64279")] 24 | 25 | // Version information for an assembly consists of the following four values: 26 | // 27 | // Major Version 28 | // Minor Version 29 | // Build Number 30 | // Revision 31 | // 32 | // You can specify all the values or you can default the Build and Revision Numbers 33 | // by using the '*' as shown below: 34 | // [assembly: AssemblyVersion("1.0.*")] 35 | [assembly: AssemblyVersion("1.0.0.0")] 36 | [assembly: AssemblyFileVersion("1.0.0.0")] 37 | -------------------------------------------------------------------------------- /WTT/UAssetAPI/Kismet/Bytecode/Expressions/EX_Jump.cs: -------------------------------------------------------------------------------- 1 | using Newtonsoft.Json; 2 | using UAssetAPI.UnrealTypes; 3 | 4 | namespace UAssetAPI.Kismet.Bytecode.Expressions 5 | { 6 | /// 7 | /// A single Kismet bytecode instruction, corresponding to the instruction. 8 | /// 9 | public class EX_Jump : KismetExpression 10 | { 11 | /// 12 | /// The token of this expression. 13 | /// 14 | public override EExprToken Token { get { return EExprToken.EX_Jump; } } 15 | 16 | /// 17 | /// The offset to jump to. 18 | /// 19 | [JsonProperty] 20 | public uint CodeOffset; 21 | 22 | public EX_Jump() 23 | { 24 | 25 | } 26 | 27 | /// 28 | /// Reads out the expression from a BinaryReader. 29 | /// 30 | /// The BinaryReader to read from. 31 | public override void Read(AssetBinaryReader reader) 32 | { 33 | CodeOffset = reader.ReadUInt32(); 34 | } 35 | 36 | /// 37 | /// Writes the expression to a BinaryWriter. 38 | /// 39 | /// The BinaryWriter to write from. 40 | /// The iCode offset of the data that was written. 41 | public override int Write(AssetBinaryWriter writer) 42 | { 43 | writer.Write(CodeOffset); 44 | return sizeof(uint); 45 | } 46 | } 47 | } 48 | -------------------------------------------------------------------------------- /WTT/UAssetAPI/Kismet/Bytecode/Expressions/EX_VectorConst.cs: -------------------------------------------------------------------------------- 1 | using Newtonsoft.Json; 2 | using UAssetAPI.UnrealTypes; 3 | 4 | namespace UAssetAPI.Kismet.Bytecode.Expressions 5 | { 6 | /// 7 | /// A single Kismet bytecode instruction, corresponding to the instruction. 8 | /// 9 | public class EX_VectorConst : KismetExpression 10 | { 11 | /// 12 | /// The token of this expression. 13 | /// 14 | public override EExprToken Token { get { return EExprToken.EX_VectorConst; } } 15 | 16 | public EX_VectorConst() 17 | { 18 | 19 | } 20 | 21 | /// 22 | /// Reads out the expression from a BinaryReader. 23 | /// 24 | /// The BinaryReader to read from. 25 | public override void Read(AssetBinaryReader reader) 26 | { 27 | Value = new FVector(reader.ReadSingle(), reader.ReadSingle(), reader.ReadSingle()); 28 | } 29 | 30 | /// 31 | /// Writes the expression to a BinaryWriter. 32 | /// 33 | /// The BinaryWriter to write from. 34 | /// The iCode offset of the data that was written. 35 | public override int Write(AssetBinaryWriter writer) 36 | { 37 | writer.Write(Value.X); 38 | writer.Write(Value.Y); 39 | writer.Write(Value.Z); 40 | return sizeof(float) * 3; 41 | } 42 | } 43 | } 44 | -------------------------------------------------------------------------------- /.github/workflows/WTT.yml: -------------------------------------------------------------------------------- 1 | name: WTT Build 2 | 3 | on: 4 | push: 5 | branches: [ "master" ] 6 | pull_request: 7 | branches: [ "master" ] 8 | 9 | jobs: 10 | build: 11 | strategy: 12 | matrix: 13 | configuration: [Debug, Release] 14 | 15 | runs-on: windows-latest 16 | env: 17 | Solution_Name: WTT\WTT.sln 18 | WTT_Project_Directory: WTT\WTT 19 | 20 | steps: 21 | - name: Checkout 22 | uses: actions/checkout@v3 23 | with: 24 | fetch-depth: 0 25 | 26 | # Install the .NET Core workload 27 | - name: Install .NET Core 28 | uses: actions/setup-dotnet@v3 29 | with: 30 | dotnet-version: 6.0.x 31 | 32 | # Add MSBuild to the PATH: https://github.com/microsoft/setup-msbuild 33 | - name: Setup MSBuild.exe 34 | uses: microsoft/setup-msbuild@v1.0.2 35 | 36 | # Restore WTT dependencies 37 | - name: Restore the application 38 | run: msbuild $env:Solution_Name /t:Restore /p:Configuration=$env:Configuration 39 | env: 40 | Configuration: ${{ matrix.configuration }} 41 | 42 | # Build WTT 43 | - name: Build the application 44 | run: msbuild $env:Solution_Name /p:Configuration=$env:Configuration 45 | env: 46 | Configuration: ${{ matrix.configuration }} 47 | 48 | # Upload the built files 49 | - name: Upload build artifacts 50 | uses: actions/upload-artifact@v3 51 | with: 52 | name: WTT Binaries - ${{ env.Configuration }} 53 | path: ${{ env.WTT_Project_Directory }}\bin\${{ env.Configuration }} 54 | env: 55 | Configuration: ${{ matrix.configuration }} 56 | -------------------------------------------------------------------------------- /WTT/UAssetAPI/PropertyTypes/Objects/BoolPropertyData.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using UAssetAPI.UnrealTypes; 3 | 4 | namespace UAssetAPI.PropertyTypes.Objects 5 | { 6 | /// 7 | /// Describes a boolean (). 8 | /// 9 | public class BoolPropertyData : PropertyData 10 | { 11 | public BoolPropertyData(FName name) : base(name) 12 | { 13 | 14 | } 15 | 16 | public BoolPropertyData() 17 | { 18 | 19 | } 20 | 21 | private static readonly FString CurrentPropertyType = new FString("BoolProperty"); 22 | public override FString PropertyType { get { return CurrentPropertyType; } } 23 | 24 | public override void Read(AssetBinaryReader reader, bool includeHeader, long leng1, long leng2 = 0) 25 | { 26 | Value = reader.ReadBoolean(); 27 | if (includeHeader) 28 | { 29 | PropertyGuid = reader.ReadPropertyGuid(); 30 | } 31 | } 32 | 33 | public override int Write(AssetBinaryWriter writer, bool includeHeader) 34 | { 35 | writer.Write(Value); 36 | if (includeHeader) 37 | { 38 | writer.WritePropertyGuid(PropertyGuid); 39 | } 40 | return 0; 41 | } 42 | 43 | public override string ToString() 44 | { 45 | return Convert.ToString(Value); 46 | } 47 | 48 | public override void FromString(string[] d, UAsset asset) 49 | { 50 | Value = d[0].Equals("1") || d[0].ToLowerInvariant().Equals("true"); 51 | } 52 | } 53 | } -------------------------------------------------------------------------------- /WTT/UAssetAPI/UAssetAPI.csproj: -------------------------------------------------------------------------------- 1 | 2 | 3 | netstandard2.1 4 | Library 5 | false 6 | 7 | 8 | bin\Debug\UAssetAPI.xml 9 | 1591 10 | 11 | 12 | 13 | True 14 | True 15 | Resources.resx 16 | 17 | 18 | 19 | 20 | 21 | 13.0.2-beta2 22 | 23 | 24 | 25 | all 26 | 27 | 28 | 29 | 30 | ResXFileCodeGenerator 31 | Resources.Designer.cs 32 | 33 | 34 | 35 | 36 | 37 | 38 | -------------------------------------------------------------------------------- /WTT/UAssetAPI/Kismet/Bytecode/Expressions/EX_LocalVariable.cs: -------------------------------------------------------------------------------- 1 | using Newtonsoft.Json; 2 | using UAssetAPI.UnrealTypes; 3 | 4 | namespace UAssetAPI.Kismet.Bytecode.Expressions 5 | { 6 | /// 7 | /// A single Kismet bytecode instruction, corresponding to the instruction. 8 | /// 9 | public class EX_LocalVariable : KismetExpression 10 | { 11 | /// 12 | /// The token of this expression. 13 | /// 14 | public override EExprToken Token { get { return EExprToken.EX_LocalVariable; } } 15 | 16 | /// 17 | /// A pointer to the variable in question. 18 | /// 19 | [JsonProperty] 20 | public KismetPropertyPointer Variable; 21 | 22 | public EX_LocalVariable() 23 | { 24 | 25 | } 26 | 27 | /// 28 | /// Reads out the expression from a BinaryReader. 29 | /// 30 | /// The BinaryReader to read from. 31 | public override void Read(AssetBinaryReader reader) 32 | { 33 | Variable = reader.XFER_PROP_POINTER(); 34 | } 35 | 36 | /// 37 | /// Writes the expression to a BinaryWriter. 38 | /// 39 | /// The BinaryWriter to write from. 40 | /// The iCode offset of the data that was written. 41 | public override int Write(AssetBinaryWriter writer) 42 | { 43 | return writer.XFER_PROP_POINTER(Variable); 44 | } 45 | } 46 | } 47 | -------------------------------------------------------------------------------- /WTT/UAssetAPI/Kismet/Bytecode/Expressions/EX_PropertyConst.cs: -------------------------------------------------------------------------------- 1 | using Newtonsoft.Json; 2 | using UAssetAPI.UnrealTypes; 3 | 4 | namespace UAssetAPI.Kismet.Bytecode.Expressions 5 | { 6 | /// 7 | /// A single Kismet bytecode instruction, corresponding to the instruction. 8 | /// 9 | public class EX_PropertyConst : KismetExpression 10 | { 11 | /// 12 | /// The token of this expression. 13 | /// 14 | public override EExprToken Token { get { return EExprToken.EX_PropertyConst; } } 15 | 16 | /// 17 | /// A pointer to the property in question. 18 | /// 19 | [JsonProperty] 20 | public KismetPropertyPointer Property; 21 | 22 | public EX_PropertyConst() 23 | { 24 | 25 | } 26 | 27 | /// 28 | /// Reads out the expression from a BinaryReader. 29 | /// 30 | /// The BinaryReader to read from. 31 | public override void Read(AssetBinaryReader reader) 32 | { 33 | Property = reader.XFER_PROP_POINTER(); 34 | } 35 | 36 | /// 37 | /// Writes the expression to a BinaryWriter. 38 | /// 39 | /// The BinaryWriter to write from. 40 | /// The iCode offset of the data that was written. 41 | public override int Write(AssetBinaryWriter writer) 42 | { 43 | return writer.XFER_PROP_POINTER(Property); 44 | } 45 | } 46 | } 47 | -------------------------------------------------------------------------------- /WTT/UAssetAPI/PropertyTypes/Objects/NamePropertyData.cs: -------------------------------------------------------------------------------- 1 | using System.IO; 2 | using UAssetAPI.UnrealTypes; 3 | 4 | namespace UAssetAPI.PropertyTypes.Objects 5 | { 6 | /// 7 | /// Describes an . 8 | /// 9 | public class NamePropertyData : PropertyData 10 | { 11 | public NamePropertyData(FName name) : base(name) 12 | { 13 | 14 | } 15 | 16 | public NamePropertyData() 17 | { 18 | 19 | } 20 | 21 | private static readonly FString CurrentPropertyType = new FString("NameProperty"); 22 | public override FString PropertyType { get { return CurrentPropertyType; } } 23 | 24 | public override void Read(AssetBinaryReader reader, bool includeHeader, long leng1, long leng2 = 0) 25 | { 26 | if (includeHeader) 27 | { 28 | PropertyGuid = reader.ReadPropertyGuid(); 29 | } 30 | 31 | Value = reader.ReadFName(); 32 | } 33 | 34 | public override int Write(AssetBinaryWriter writer, bool includeHeader) 35 | { 36 | if (includeHeader) 37 | { 38 | writer.WritePropertyGuid(PropertyGuid); 39 | } 40 | 41 | writer.Write(Value); 42 | return sizeof(int) * 2; 43 | } 44 | 45 | public override string ToString() 46 | { 47 | return Value == null ? "null" : Value.ToString(); 48 | } 49 | 50 | public override void FromString(string[] d, UAsset asset) 51 | { 52 | Value = FName.FromString(asset, d[0]); 53 | } 54 | } 55 | } -------------------------------------------------------------------------------- /galliumhook/galliumhook.sln: -------------------------------------------------------------------------------- 1 | 2 | Microsoft Visual Studio Solution File, Format Version 12.00 3 | # Visual Studio Version 17 4 | VisualStudioVersion = 17.2.32602.215 5 | MinimumVisualStudioVersion = 10.0.40219.1 6 | Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "galliumhook", "galliumhook\galliumhook.vcxproj", "{34E927A3-13A1-4869-B262-C7AC8222C5ED}" 7 | EndProject 8 | Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "libMinHook", "minhook-multihook\build\VC16\libMinHook.vcxproj", "{F142A341-5EE0-442D-A15F-98AE9B48DBAE}" 9 | EndProject 10 | Global 11 | GlobalSection(SolutionConfigurationPlatforms) = preSolution 12 | Debug|x64 = Debug|x64 13 | Release|x64 = Release|x64 14 | EndGlobalSection 15 | GlobalSection(ProjectConfigurationPlatforms) = postSolution 16 | {34E927A3-13A1-4869-B262-C7AC8222C5ED}.Debug|x64.ActiveCfg = Debug|x64 17 | {34E927A3-13A1-4869-B262-C7AC8222C5ED}.Debug|x64.Build.0 = Debug|x64 18 | {34E927A3-13A1-4869-B262-C7AC8222C5ED}.Release|x64.ActiveCfg = Release|x64 19 | {34E927A3-13A1-4869-B262-C7AC8222C5ED}.Release|x64.Build.0 = Release|x64 20 | {F142A341-5EE0-442D-A15F-98AE9B48DBAE}.Debug|x64.ActiveCfg = Debug|x64 21 | {F142A341-5EE0-442D-A15F-98AE9B48DBAE}.Debug|x64.Build.0 = Debug|x64 22 | {F142A341-5EE0-442D-A15F-98AE9B48DBAE}.Release|x64.ActiveCfg = Release|x64 23 | {F142A341-5EE0-442D-A15F-98AE9B48DBAE}.Release|x64.Build.0 = Release|x64 24 | EndGlobalSection 25 | GlobalSection(SolutionProperties) = preSolution 26 | HideSolutionNode = FALSE 27 | EndGlobalSection 28 | GlobalSection(ExtensibilityGlobals) = postSolution 29 | SolutionGuid = {BCD16084-010A-4B9A-B9F8-FE7666558CBD} 30 | EndGlobalSection 31 | EndGlobal 32 | -------------------------------------------------------------------------------- /WTT/UAssetAPI/Kismet/Bytecode/Expressions/EX_Return.cs: -------------------------------------------------------------------------------- 1 | using Newtonsoft.Json; 2 | using UAssetAPI.UnrealTypes; 3 | 4 | namespace UAssetAPI.Kismet.Bytecode.Expressions 5 | { 6 | /// 7 | /// A single Kismet bytecode instruction, corresponding to the instruction. 8 | /// 9 | public class EX_Return : KismetExpression 10 | { 11 | /// 12 | /// The token of this expression. 13 | /// 14 | public override EExprToken Token { get { return EExprToken.EX_Return; } } 15 | 16 | /// 17 | /// The return expression. 18 | /// 19 | [JsonProperty] 20 | public KismetExpression ReturnExpression; 21 | 22 | public EX_Return() 23 | { 24 | 25 | } 26 | 27 | /// 28 | /// Reads out the expression from a BinaryReader. 29 | /// 30 | /// The BinaryReader to read from. 31 | public override void Read(AssetBinaryReader reader) 32 | { 33 | ReturnExpression = ExpressionSerializer.ReadExpression(reader); 34 | } 35 | 36 | /// 37 | /// Writes the expression to a BinaryWriter. 38 | /// 39 | /// The BinaryWriter to write from. 40 | /// The iCode offset of the data that was written. 41 | public override int Write(AssetBinaryWriter writer) 42 | { 43 | return ExpressionSerializer.WriteExpression(ReturnExpression, writer); 44 | } 45 | } 46 | } 47 | -------------------------------------------------------------------------------- /WTT/UAssetAPI/Kismet/Bytecode/Expressions/EX_DefaultVariable.cs: -------------------------------------------------------------------------------- 1 | using Newtonsoft.Json; 2 | using UAssetAPI.UnrealTypes; 3 | 4 | namespace UAssetAPI.Kismet.Bytecode.Expressions 5 | { 6 | /// 7 | /// A single Kismet bytecode instruction, corresponding to the instruction. 8 | /// 9 | public class EX_DefaultVariable : KismetExpression 10 | { 11 | /// 12 | /// The token of this expression. 13 | /// 14 | public override EExprToken Token { get { return EExprToken.EX_DefaultVariable; } } 15 | 16 | /// 17 | /// A pointer to the variable in question. 18 | /// 19 | [JsonProperty] 20 | public KismetPropertyPointer Variable; 21 | 22 | public EX_DefaultVariable() 23 | { 24 | 25 | } 26 | 27 | /// 28 | /// Reads out the expression from a BinaryReader. 29 | /// 30 | /// The BinaryReader to read from. 31 | public override void Read(AssetBinaryReader reader) 32 | { 33 | Variable = reader.XFER_PROP_POINTER(); 34 | } 35 | 36 | /// 37 | /// Writes the expression to a BinaryWriter. 38 | /// 39 | /// The BinaryWriter to write from. 40 | /// The iCode offset of the data that was written. 41 | public override int Write(AssetBinaryWriter writer) 42 | { 43 | return writer.XFER_PROP_POINTER(Variable); 44 | } 45 | } 46 | } 47 | -------------------------------------------------------------------------------- /WTT/UAssetAPI/Kismet/Bytecode/Expressions/EX_InstanceVariable.cs: -------------------------------------------------------------------------------- 1 | using Newtonsoft.Json; 2 | using UAssetAPI.UnrealTypes; 3 | 4 | namespace UAssetAPI.Kismet.Bytecode.Expressions 5 | { 6 | /// 7 | /// A single Kismet bytecode instruction, corresponding to the instruction. 8 | /// 9 | public class EX_InstanceVariable : KismetExpression 10 | { 11 | /// 12 | /// The token of this expression. 13 | /// 14 | public override EExprToken Token { get { return EExprToken.EX_InstanceVariable; } } 15 | 16 | /// 17 | /// A pointer to the variable in question. 18 | /// 19 | [JsonProperty] 20 | public KismetPropertyPointer Variable; 21 | 22 | public EX_InstanceVariable() 23 | { 24 | 25 | } 26 | 27 | /// 28 | /// Reads out the expression from a BinaryReader. 29 | /// 30 | /// The BinaryReader to read from. 31 | public override void Read(AssetBinaryReader reader) 32 | { 33 | Variable = reader.XFER_PROP_POINTER(); 34 | } 35 | 36 | /// 37 | /// Writes the expression to a BinaryWriter. 38 | /// 39 | /// The BinaryWriter to write from. 40 | /// The iCode offset of the data that was written. 41 | public override int Write(AssetBinaryWriter writer) 42 | { 43 | return writer.XFER_PROP_POINTER(Variable); 44 | } 45 | } 46 | } 47 | -------------------------------------------------------------------------------- /WTT/UAssetAPI/Kismet/Bytecode/Expressions/EX_LocalOutVariable.cs: -------------------------------------------------------------------------------- 1 | using Newtonsoft.Json; 2 | using UAssetAPI.UnrealTypes; 3 | 4 | namespace UAssetAPI.Kismet.Bytecode.Expressions 5 | { 6 | /// 7 | /// A single Kismet bytecode instruction, corresponding to the instruction. 8 | /// 9 | public class EX_LocalOutVariable : KismetExpression 10 | { 11 | /// 12 | /// The token of this expression. 13 | /// 14 | public override EExprToken Token { get { return EExprToken.EX_LocalOutVariable; } } 15 | 16 | /// 17 | /// A pointer to the variable in question. 18 | /// 19 | [JsonProperty] 20 | public KismetPropertyPointer Variable; 21 | 22 | public EX_LocalOutVariable() 23 | { 24 | 25 | } 26 | 27 | /// 28 | /// Reads out the expression from a BinaryReader. 29 | /// 30 | /// The BinaryReader to read from. 31 | public override void Read(AssetBinaryReader reader) 32 | { 33 | Variable = reader.XFER_PROP_POINTER(); 34 | } 35 | 36 | /// 37 | /// Writes the expression to a BinaryWriter. 38 | /// 39 | /// The BinaryWriter to write from. 40 | /// The iCode offset of the data that was written. 41 | public override int Write(AssetBinaryWriter writer) 42 | { 43 | return writer.XFER_PROP_POINTER(Variable); 44 | } 45 | } 46 | } 47 | -------------------------------------------------------------------------------- /WTT/UAssetAPI/Kismet/Bytecode/Expressions/EX_InstanceDelegate.cs: -------------------------------------------------------------------------------- 1 | using Newtonsoft.Json; 2 | using UAssetAPI.UnrealTypes; 3 | 4 | namespace UAssetAPI.Kismet.Bytecode.Expressions 5 | { 6 | /// 7 | /// A single Kismet bytecode instruction, corresponding to the instruction. 8 | /// 9 | public class EX_InstanceDelegate : KismetExpression 10 | { 11 | /// 12 | /// The token of this expression. 13 | /// 14 | public override EExprToken Token { get { return EExprToken.EX_InstanceDelegate; } } 15 | 16 | /// 17 | /// The name of the function assigned to the delegate. 18 | /// 19 | [JsonProperty] 20 | public FName FunctionName; 21 | 22 | public EX_InstanceDelegate() 23 | { 24 | 25 | } 26 | 27 | /// 28 | /// Reads out the expression from a BinaryReader. 29 | /// 30 | /// The BinaryReader to read from. 31 | public override void Read(AssetBinaryReader reader) 32 | { 33 | FunctionName = reader.XFER_FUNC_NAME(); 34 | } 35 | 36 | /// 37 | /// Writes the expression to a BinaryWriter. 38 | /// 39 | /// The BinaryWriter to write from. 40 | /// The iCode offset of the data that was written. 41 | public override int Write(AssetBinaryWriter writer) 42 | { 43 | return writer.XFER_FUNC_NAME(FunctionName); 44 | } 45 | } 46 | } 47 | -------------------------------------------------------------------------------- /WTT/UAssetAPI/Kismet/Bytecode/Expressions/EX_InterfaceContext.cs: -------------------------------------------------------------------------------- 1 | using Newtonsoft.Json; 2 | using UAssetAPI.UnrealTypes; 3 | 4 | namespace UAssetAPI.Kismet.Bytecode.Expressions 5 | { 6 | /// 7 | /// A single Kismet bytecode instruction, corresponding to the instruction. 8 | /// 9 | public class EX_InterfaceContext : KismetExpression 10 | { 11 | /// 12 | /// The token of this expression. 13 | /// 14 | public override EExprToken Token { get { return EExprToken.EX_InterfaceContext; } } 15 | 16 | /// 17 | /// Interface value. 18 | /// 19 | [JsonProperty] 20 | public KismetExpression InterfaceValue; 21 | 22 | public EX_InterfaceContext() 23 | { 24 | 25 | } 26 | 27 | /// 28 | /// Reads out the expression from a BinaryReader. 29 | /// 30 | /// The BinaryReader to read from. 31 | public override void Read(AssetBinaryReader reader) 32 | { 33 | InterfaceValue = ExpressionSerializer.ReadExpression(reader); 34 | } 35 | 36 | /// 37 | /// Writes the expression to a BinaryWriter. 38 | /// 39 | /// The BinaryWriter to write from. 40 | /// The iCode offset of the data that was written. 41 | public override int Write(AssetBinaryWriter writer) 42 | { 43 | return ExpressionSerializer.WriteExpression(InterfaceValue, writer); 44 | } 45 | } 46 | } 47 | -------------------------------------------------------------------------------- /WTT/UAssetAPI/Kismet/Bytecode/Expressions/EX_PushExecutionFlow.cs: -------------------------------------------------------------------------------- 1 | using Newtonsoft.Json; 2 | using UAssetAPI.UnrealTypes; 3 | 4 | namespace UAssetAPI.Kismet.Bytecode.Expressions 5 | { 6 | /// 7 | /// A single Kismet bytecode instruction, corresponding to the instruction. 8 | /// 9 | public class EX_PushExecutionFlow : KismetExpression 10 | { 11 | /// 12 | /// The token of this expression. 13 | /// 14 | public override EExprToken Token { get { return EExprToken.EX_PushExecutionFlow; } } 15 | 16 | /// 17 | /// The address to push onto the execution flow stack. 18 | /// 19 | [JsonProperty] 20 | public uint PushingAddress; 21 | 22 | public EX_PushExecutionFlow() 23 | { 24 | 25 | } 26 | 27 | /// 28 | /// Reads out the expression from a BinaryReader. 29 | /// 30 | /// The BinaryReader to read from. 31 | public override void Read(AssetBinaryReader reader) 32 | { 33 | PushingAddress = reader.ReadUInt32(); 34 | } 35 | 36 | /// 37 | /// Writes the expression to a BinaryWriter. 38 | /// 39 | /// The BinaryWriter to write from. 40 | /// The iCode offset of the data that was written. 41 | public override int Write(AssetBinaryWriter writer) 42 | { 43 | writer.Write(PushingAddress); 44 | return sizeof(uint); 45 | } 46 | } 47 | } 48 | -------------------------------------------------------------------------------- /WTT/UAssetAPI/Kismet/Bytecode/Expressions/EX_ClassSparseDataVariable.cs: -------------------------------------------------------------------------------- 1 | using Newtonsoft.Json; 2 | using UAssetAPI.UnrealTypes; 3 | 4 | namespace UAssetAPI.Kismet.Bytecode.Expressions 5 | { 6 | /// 7 | /// A single Kismet bytecode instruction, corresponding to the instruction. 8 | /// 9 | public class EX_ClassSparseDataVariable : KismetExpression 10 | { 11 | /// 12 | /// The token of this expression. 13 | /// 14 | public override EExprToken Token { get { return EExprToken.EX_ClassSparseDataVariable; } } 15 | 16 | /// 17 | /// A pointer to the variable in question. 18 | /// 19 | [JsonProperty] 20 | public KismetPropertyPointer Variable; 21 | 22 | public EX_ClassSparseDataVariable() 23 | { 24 | 25 | } 26 | 27 | /// 28 | /// Reads out the expression from a BinaryReader. 29 | /// 30 | /// The BinaryReader to read from. 31 | public override void Read(AssetBinaryReader reader) 32 | { 33 | Variable = reader.XFER_PROP_POINTER(); 34 | } 35 | 36 | /// 37 | /// Writes the expression to a BinaryWriter. 38 | /// 39 | /// The BinaryWriter to write from. 40 | /// The iCode offset of the data that was written. 41 | public override int Write(AssetBinaryWriter writer) 42 | { 43 | return writer.XFER_PROP_POINTER(Variable); 44 | } 45 | } 46 | } 47 | -------------------------------------------------------------------------------- /WTT/UAssetAPI/PropertyTypes/Objects/IntPropertyData.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.IO; 3 | using UAssetAPI.UnrealTypes; 4 | 5 | namespace UAssetAPI.PropertyTypes.Objects 6 | { 7 | /// 8 | /// Describes a 32-bit signed integer variable (). 9 | /// 10 | public class IntPropertyData : PropertyData 11 | { 12 | public IntPropertyData(FName name) : base(name) 13 | { 14 | 15 | } 16 | 17 | public IntPropertyData() 18 | { 19 | 20 | } 21 | 22 | private static readonly FString CurrentPropertyType = new FString("IntProperty"); 23 | public override FString PropertyType { get { return CurrentPropertyType; } } 24 | 25 | public override void Read(AssetBinaryReader reader, bool includeHeader, long leng1, long leng2 = 0) 26 | { 27 | if (includeHeader) 28 | { 29 | PropertyGuid = reader.ReadPropertyGuid(); 30 | } 31 | 32 | Value = reader.ReadInt32(); 33 | } 34 | 35 | public override int Write(AssetBinaryWriter writer, bool includeHeader) 36 | { 37 | if (includeHeader) 38 | { 39 | writer.WritePropertyGuid(PropertyGuid); 40 | } 41 | 42 | writer.Write(Value); 43 | return sizeof(int); 44 | } 45 | 46 | public override string ToString() 47 | { 48 | return Convert.ToString(Value); 49 | } 50 | 51 | public override void FromString(string[] d, UAsset asset) 52 | { 53 | Value = 0; 54 | if (int.TryParse(d[0], out int res)) Value = res; 55 | } 56 | } 57 | } 58 | -------------------------------------------------------------------------------- /WTT/UAssetAPI/Kismet/Bytecode/Expressions/EX_FloatConst.cs: -------------------------------------------------------------------------------- 1 | using Newtonsoft.Json; 2 | using UAssetAPI.JSON; 3 | using UAssetAPI.UnrealTypes; 4 | 5 | namespace UAssetAPI.Kismet.Bytecode.Expressions 6 | { 7 | /// 8 | /// A single Kismet bytecode instruction, corresponding to the instruction. 9 | /// 10 | public class EX_FloatConst : KismetExpression 11 | { 12 | /// 13 | /// The token of this expression. 14 | /// 15 | public override EExprToken Token { get { return EExprToken.EX_FloatConst; } } 16 | 17 | /// 18 | /// The value of this float constant expression. 19 | /// 20 | [JsonProperty] 21 | [JsonConverter(typeof(FSignedZeroJsonConverter))] 22 | public float Value; 23 | 24 | public EX_FloatConst() 25 | { 26 | 27 | } 28 | 29 | /// 30 | /// Reads out the expression from a BinaryReader. 31 | /// 32 | /// The BinaryReader to read from. 33 | public override void Read(AssetBinaryReader reader) 34 | { 35 | Value = reader.ReadSingle(); 36 | } 37 | 38 | /// 39 | /// Writes the expression to a BinaryWriter. 40 | /// 41 | /// The BinaryWriter to write from. 42 | /// The iCode offset of the data that was written. 43 | public override int Write(AssetBinaryWriter writer) 44 | { 45 | writer.Write(Value); 46 | return sizeof(float); 47 | } 48 | } 49 | } 50 | -------------------------------------------------------------------------------- /WTT/UAssetAPI/PropertyTypes/Objects/Int64PropertyData.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.IO; 3 | using UAssetAPI.UnrealTypes; 4 | 5 | namespace UAssetAPI.PropertyTypes.Objects 6 | { 7 | /// 8 | /// Describes a 64-bit signed integer variable (). 9 | /// 10 | public class Int64PropertyData : PropertyData 11 | { 12 | public Int64PropertyData(FName name) : base(name) 13 | { 14 | 15 | } 16 | 17 | public Int64PropertyData() 18 | { 19 | 20 | } 21 | 22 | private static readonly FString CurrentPropertyType = new FString("Int64Property"); 23 | public override FString PropertyType { get { return CurrentPropertyType; } } 24 | 25 | public override void Read(AssetBinaryReader reader, bool includeHeader, long leng1, long leng2 = 0) 26 | { 27 | if (includeHeader) 28 | { 29 | PropertyGuid = reader.ReadPropertyGuid(); 30 | } 31 | 32 | Value = reader.ReadInt64(); 33 | } 34 | 35 | public override int Write(AssetBinaryWriter writer, bool includeHeader) 36 | { 37 | if (includeHeader) 38 | { 39 | writer.WritePropertyGuid(PropertyGuid); 40 | } 41 | 42 | writer.Write(Value); 43 | return sizeof(long); 44 | } 45 | 46 | public override string ToString() 47 | { 48 | return Convert.ToString(Value); 49 | } 50 | 51 | public override void FromString(string[] d, UAsset asset) 52 | { 53 | Value = 0; 54 | if (long.TryParse(d[0], out long res)) Value = res; 55 | } 56 | } 57 | } -------------------------------------------------------------------------------- /WTT/UAssetAPI/PropertyTypes/Objects/Int8PropertyData.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.IO; 3 | using UAssetAPI.UnrealTypes; 4 | 5 | namespace UAssetAPI.PropertyTypes.Objects 6 | { 7 | /// 8 | /// Describes an 8-bit signed integer variable (). 9 | /// 10 | public class Int8PropertyData : PropertyData 11 | { 12 | public Int8PropertyData(FName name) : base(name) 13 | { 14 | 15 | } 16 | 17 | public Int8PropertyData() 18 | { 19 | 20 | } 21 | 22 | private static readonly FString CurrentPropertyType = new FString("Int8Property"); 23 | public override FString PropertyType { get { return CurrentPropertyType; } } 24 | 25 | public override void Read(AssetBinaryReader reader, bool includeHeader, long leng1, long leng2 = 0) 26 | { 27 | if (includeHeader) 28 | { 29 | PropertyGuid = reader.ReadPropertyGuid(); 30 | } 31 | 32 | Value = reader.ReadSByte(); 33 | } 34 | 35 | public override int Write(AssetBinaryWriter writer, bool includeHeader) 36 | { 37 | if (includeHeader) 38 | { 39 | writer.WritePropertyGuid(PropertyGuid); 40 | } 41 | 42 | writer.Write(Value); 43 | return sizeof(sbyte); 44 | } 45 | 46 | public override string ToString() 47 | { 48 | return Convert.ToString(Value); 49 | } 50 | 51 | public override void FromString(string[] d, UAsset asset) 52 | { 53 | Value = 0; 54 | if (sbyte.TryParse(d[0], out sbyte res)) Value = res; 55 | } 56 | } 57 | } -------------------------------------------------------------------------------- /WTT/UAssetAPI/PropertyTypes/Objects/Int16PropertyData.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.IO; 3 | using UAssetAPI.UnrealTypes; 4 | 5 | namespace UAssetAPI.PropertyTypes.Objects 6 | { 7 | /// 8 | /// Describes a 16-bit signed integer variable (). 9 | /// 10 | public class Int16PropertyData : PropertyData 11 | { 12 | public Int16PropertyData(FName name) : base(name) 13 | { 14 | 15 | } 16 | 17 | public Int16PropertyData() 18 | { 19 | 20 | } 21 | 22 | private static readonly FString CurrentPropertyType = new FString("Int16Property"); 23 | public override FString PropertyType { get { return CurrentPropertyType; } } 24 | 25 | public override void Read(AssetBinaryReader reader, bool includeHeader, long leng1, long leng2 = 0) 26 | { 27 | if (includeHeader) 28 | { 29 | PropertyGuid = reader.ReadPropertyGuid(); 30 | } 31 | 32 | Value = reader.ReadInt16(); 33 | } 34 | 35 | public override int Write(AssetBinaryWriter writer, bool includeHeader) 36 | { 37 | if (includeHeader) 38 | { 39 | writer.WritePropertyGuid(PropertyGuid); 40 | } 41 | 42 | writer.Write(Value); 43 | return sizeof(short); 44 | } 45 | 46 | public override string ToString() 47 | { 48 | return Convert.ToString(Value); 49 | } 50 | 51 | public override void FromString(string[] d, UAsset asset) 52 | { 53 | Value = 0; 54 | if (short.TryParse(d[0], out short res)) Value = res; 55 | } 56 | } 57 | } -------------------------------------------------------------------------------- /WTT/UAssetAPI/Kismet/Bytecode/Expressions/EX_ComputedJump.cs: -------------------------------------------------------------------------------- 1 | using Newtonsoft.Json; 2 | using UAssetAPI.UnrealTypes; 3 | 4 | namespace UAssetAPI.Kismet.Bytecode.Expressions 5 | { 6 | /// 7 | /// A single Kismet bytecode instruction, corresponding to the instruction. 8 | /// 9 | public class EX_ComputedJump : KismetExpression 10 | { 11 | /// 12 | /// The token of this expression. 13 | /// 14 | public override EExprToken Token { get { return EExprToken.EX_ComputedJump; } } 15 | 16 | /// 17 | /// An integer expression corresponding to the offset to jump to. 18 | /// 19 | [JsonProperty] 20 | public KismetExpression CodeOffsetExpression; 21 | 22 | public EX_ComputedJump() 23 | { 24 | 25 | } 26 | 27 | /// 28 | /// Reads out the expression from a BinaryReader. 29 | /// 30 | /// The BinaryReader to read from. 31 | public override void Read(AssetBinaryReader reader) 32 | { 33 | CodeOffsetExpression = ExpressionSerializer.ReadExpression(reader); 34 | } 35 | 36 | /// 37 | /// Writes the expression to a BinaryWriter. 38 | /// 39 | /// The BinaryWriter to write from. 40 | /// The iCode offset of the data that was written. 41 | public override int Write(AssetBinaryWriter writer) 42 | { 43 | return ExpressionSerializer.WriteExpression(CodeOffsetExpression, writer); 44 | } 45 | } 46 | } 47 | -------------------------------------------------------------------------------- /WTT/UAssetAPI/PropertyTypes/Objects/UInt32PropertyData.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.IO; 3 | using UAssetAPI.UnrealTypes; 4 | 5 | namespace UAssetAPI.PropertyTypes.Objects 6 | { 7 | /// 8 | /// Describes a 32-bit unsigned integer variable (). 9 | /// 10 | public class UInt32PropertyData : PropertyData 11 | { 12 | public UInt32PropertyData(FName name) : base(name) 13 | { 14 | 15 | } 16 | 17 | public UInt32PropertyData() 18 | { 19 | 20 | } 21 | 22 | private static readonly FString CurrentPropertyType = new FString("UInt32Property"); 23 | public override FString PropertyType { get { return CurrentPropertyType; } } 24 | 25 | public override void Read(AssetBinaryReader reader, bool includeHeader, long leng1, long leng2 = 0) 26 | { 27 | if (includeHeader) 28 | { 29 | PropertyGuid = reader.ReadPropertyGuid(); 30 | } 31 | 32 | Value = reader.ReadUInt32(); 33 | } 34 | 35 | public override int Write(AssetBinaryWriter writer, bool includeHeader) 36 | { 37 | if (includeHeader) 38 | { 39 | writer.WritePropertyGuid(PropertyGuid); 40 | } 41 | 42 | writer.Write(Value); 43 | return sizeof(uint); 44 | } 45 | 46 | public override string ToString() 47 | { 48 | return Convert.ToString(Value); 49 | } 50 | 51 | public override void FromString(string[] d, UAsset asset) 52 | { 53 | Value = 0; 54 | if (uint.TryParse(d[0], out uint res)) Value = res; 55 | } 56 | } 57 | } -------------------------------------------------------------------------------- /WTT/UAssetAPI/Kismet/Bytecode/Expressions/EX_ClearMulticastDelegate.cs: -------------------------------------------------------------------------------- 1 | using Newtonsoft.Json; 2 | using UAssetAPI.UnrealTypes; 3 | 4 | namespace UAssetAPI.Kismet.Bytecode.Expressions 5 | { 6 | /// 7 | /// A single Kismet bytecode instruction, corresponding to the instruction. 8 | /// 9 | public class EX_ClearMulticastDelegate : KismetExpression 10 | { 11 | /// 12 | /// The token of this expression. 13 | /// 14 | public override EExprToken Token { get { return EExprToken.EX_ClearMulticastDelegate; } } 15 | 16 | /// 17 | /// Delegate property to clear. 18 | /// 19 | [JsonProperty] 20 | public KismetExpression DelegateToClear; 21 | 22 | public EX_ClearMulticastDelegate() 23 | { 24 | 25 | } 26 | 27 | /// 28 | /// Reads out the expression from a BinaryReader. 29 | /// 30 | /// The BinaryReader to read from. 31 | public override void Read(AssetBinaryReader reader) 32 | { 33 | DelegateToClear = ExpressionSerializer.ReadExpression(reader); 34 | } 35 | 36 | /// 37 | /// Writes the expression to a BinaryWriter. 38 | /// 39 | /// The BinaryWriter to write from. 40 | /// The iCode offset of the data that was written. 41 | public override int Write(AssetBinaryWriter writer) 42 | { 43 | return ExpressionSerializer.WriteExpression(DelegateToClear, writer); 44 | } 45 | } 46 | } 47 | -------------------------------------------------------------------------------- /WTT/UAssetAPI/PropertyTypes/Objects/UInt64PropertyData.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.IO; 3 | using UAssetAPI.UnrealTypes; 4 | 5 | namespace UAssetAPI.PropertyTypes.Objects 6 | { 7 | /// 8 | /// Describes a 64-bit unsigned integer variable (). 9 | /// 10 | public class UInt64PropertyData : PropertyData 11 | { 12 | public UInt64PropertyData(FName name) : base(name) 13 | { 14 | 15 | } 16 | 17 | public UInt64PropertyData() 18 | { 19 | 20 | } 21 | 22 | private static readonly FString CurrentPropertyType = new FString("UInt64Property"); 23 | public override FString PropertyType { get { return CurrentPropertyType; } } 24 | 25 | public override void Read(AssetBinaryReader reader, bool includeHeader, long leng1, long leng2 = 0) 26 | { 27 | if (includeHeader) 28 | { 29 | PropertyGuid = reader.ReadPropertyGuid(); 30 | } 31 | 32 | Value = reader.ReadUInt64(); 33 | } 34 | 35 | public override int Write(AssetBinaryWriter writer, bool includeHeader) 36 | { 37 | if (includeHeader) 38 | { 39 | writer.WritePropertyGuid(PropertyGuid); 40 | } 41 | 42 | writer.Write(Value); 43 | return sizeof(ulong); 44 | } 45 | 46 | public override string ToString() 47 | { 48 | return Convert.ToString(Value); 49 | } 50 | 51 | public override void FromString(string[] d, UAsset asset) 52 | { 53 | Value = 0; 54 | if (ulong.TryParse(d[0], out ulong res)) Value = res; 55 | } 56 | } 57 | } -------------------------------------------------------------------------------- /WTT/UAssetAPI/PropertyTypes/Objects/UInt16PropertyData.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.IO; 3 | using UAssetAPI.UnrealTypes; 4 | 5 | namespace UAssetAPI.PropertyTypes.Objects 6 | { 7 | /// 8 | /// Describes a 16-bit unsigned integer variable (). 9 | /// 10 | public class UInt16PropertyData : PropertyData 11 | { 12 | public UInt16PropertyData(FName name) : base(name) 13 | { 14 | 15 | } 16 | 17 | public UInt16PropertyData() 18 | { 19 | 20 | } 21 | 22 | private static readonly FString CurrentPropertyType = new FString("UInt16Property"); 23 | public override FString PropertyType { get { return CurrentPropertyType; } } 24 | 25 | public override void Read(AssetBinaryReader reader, bool includeHeader, long leng1, long leng2 = 0) 26 | { 27 | if (includeHeader) 28 | { 29 | PropertyGuid = reader.ReadPropertyGuid(); 30 | } 31 | 32 | Value = reader.ReadUInt16(); 33 | } 34 | 35 | public override int Write(AssetBinaryWriter writer, bool includeHeader) 36 | { 37 | if (includeHeader) 38 | { 39 | writer.WritePropertyGuid(PropertyGuid); 40 | } 41 | 42 | writer.Write(Value); 43 | return sizeof(ushort); 44 | } 45 | 46 | public override string ToString() 47 | { 48 | return Convert.ToString(Value); 49 | } 50 | 51 | public override void FromString(string[] d, UAsset asset) 52 | { 53 | Value = 0; 54 | if (ushort.TryParse(d[0], out ushort res)) Value = res; 55 | } 56 | } 57 | } -------------------------------------------------------------------------------- /WTT/UAssetAPI/Kismet/Bytecode/KismetPropertyPointer.cs: -------------------------------------------------------------------------------- 1 | using Newtonsoft.Json; 2 | using System.ComponentModel; 3 | using UAssetAPI.UnrealTypes; 4 | 5 | namespace UAssetAPI.Kismet.Bytecode 6 | { 7 | /// 8 | /// Represents a Kismet bytecode pointer to an FProperty or FField. 9 | /// 10 | [JsonObject(MemberSerialization.OptIn)] 11 | public class KismetPropertyPointer 12 | { 13 | public static readonly UE4Version XFER_PROP_POINTER_SWITCH_TO_SERIALIZING_AS_FIELD_PATH_VERSION = UE4Version.VER_UE4_ADDED_PACKAGE_OWNER; 14 | 15 | /// 16 | /// The pointer serialized as an FPackageIndex. Used in versions older than . 17 | /// 18 | [JsonProperty] 19 | [DefaultValue(null)] 20 | public FPackageIndex Old; 21 | 22 | /// 23 | /// The pointer serialized as an FFieldPath. Used in versions newer than . 24 | /// 25 | [JsonProperty] 26 | [DefaultValue(null)] 27 | public FFieldPath New; 28 | 29 | public bool ShouldSerializeOld() 30 | { 31 | return Old != null; 32 | } 33 | 34 | public bool ShouldSerializeNew() 35 | { 36 | return New != null; 37 | } 38 | 39 | public KismetPropertyPointer(FPackageIndex older) 40 | { 41 | Old = older; 42 | } 43 | 44 | public KismetPropertyPointer(FFieldPath newer) 45 | { 46 | New = newer; 47 | } 48 | 49 | public KismetPropertyPointer() 50 | { 51 | 52 | } 53 | } 54 | } 55 | -------------------------------------------------------------------------------- /WTT/UAssetAPI/PropertyTypes/Structs/Movies/MovieSceneTrackIdentifierPropertyData.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.IO; 3 | using UAssetAPI.PropertyTypes.Objects; 4 | using UAssetAPI.UnrealTypes; 5 | 6 | namespace UAssetAPI.PropertyTypes.Structs.Movies 7 | { 8 | public class MovieSceneTrackIdentifierPropertyData : PropertyData 9 | { 10 | public MovieSceneTrackIdentifierPropertyData(FName name) : base(name) 11 | { 12 | 13 | } 14 | 15 | public MovieSceneTrackIdentifierPropertyData() 16 | { 17 | 18 | } 19 | 20 | private static readonly FString CurrentPropertyType = new FString("MovieSceneTrackIdentifier"); 21 | public override bool HasCustomStructSerialization { get { return true; } } 22 | public override FString PropertyType { get { return CurrentPropertyType; } } 23 | 24 | public override void Read(AssetBinaryReader reader, bool includeHeader, long leng1, long leng2 = 0) 25 | { 26 | if (includeHeader) 27 | { 28 | PropertyGuid = reader.ReadPropertyGuid(); 29 | } 30 | 31 | Value = reader.ReadUInt32(); 32 | } 33 | 34 | public override int Write(AssetBinaryWriter writer, bool includeHeader) 35 | { 36 | if (includeHeader) 37 | { 38 | writer.WritePropertyGuid(PropertyGuid); 39 | } 40 | 41 | writer.Write(Value); 42 | return sizeof(uint); 43 | } 44 | 45 | public override void FromString(string[] d, UAsset asset) 46 | { 47 | Value = uint.Parse(d[0]); 48 | } 49 | 50 | public override string ToString() 51 | { 52 | return Value.ToString(); 53 | } 54 | } 55 | } -------------------------------------------------------------------------------- /WTT/UAssetAPI/PropertyTypes/Structs/SkeletalMeshSamplingLODBuiltDataPropertyData.cs: -------------------------------------------------------------------------------- 1 | using System.IO; 2 | using UAssetAPI.PropertyTypes.Objects; 3 | using UAssetAPI.UnrealTypes; 4 | 5 | namespace UAssetAPI.PropertyTypes.Structs 6 | { 7 | public class SkeletalMeshSamplingLODBuiltDataPropertyData : PropertyData 8 | { 9 | public SkeletalMeshSamplingLODBuiltDataPropertyData(FName name) : base(name) 10 | { 11 | 12 | } 13 | 14 | public SkeletalMeshSamplingLODBuiltDataPropertyData() 15 | { 16 | 17 | } 18 | 19 | public override void Read(AssetBinaryReader reader, bool includeHeader, long leng1, long leng2 = 0) 20 | { 21 | if (includeHeader) 22 | { 23 | PropertyGuid = reader.ReadPropertyGuid(); 24 | } 25 | 26 | Value = new SkeletalMeshAreaWeightedTriangleSamplerPropertyData(FName.DefineDummy(reader.Asset, "AreaWeightedTriangleSampler")); 27 | Value.Read(reader, false, 0); 28 | } 29 | 30 | public override int Write(AssetBinaryWriter writer, bool includeHeader) 31 | { 32 | if (includeHeader) 33 | { 34 | writer.WritePropertyGuid(PropertyGuid); 35 | } 36 | 37 | return Value.Write(writer, false); 38 | } 39 | 40 | private static readonly FString CurrentPropertyType = new FString("SkeletalMeshSamplingLODBuiltData"); 41 | public override bool HasCustomStructSerialization { get { return true; } } 42 | public override FString PropertyType { get { return CurrentPropertyType; } } 43 | 44 | public override string ToString() 45 | { 46 | return Value.ToString(); 47 | } 48 | } 49 | } -------------------------------------------------------------------------------- /galliumhook/minhook-multihook/src/hde/pstdint.h: -------------------------------------------------------------------------------- 1 | /* 2 | * MinHook - The Minimalistic API Hooking Library for x64/x86 3 | * Copyright (C) 2009-2017 Tsuda Kageyu. All rights reserved. 4 | * 5 | * Redistribution and use in source and binary forms, with or without 6 | * modification, are permitted provided that the following conditions 7 | * are met: 8 | * 9 | * 1. Redistributions of source code must retain the above copyright 10 | * notice, this list of conditions and the following disclaimer. 11 | * 2. Redistributions in binary form must reproduce the above copyright 12 | * notice, this list of conditions and the following disclaimer in the 13 | * documentation and/or other materials provided with the distribution. 14 | * 15 | * THIS SOFTWARE IS PROVIDED BY THE AUTHOR "AS IS" AND ANY EXPRESS OR 16 | * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES 17 | * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. 18 | * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, 19 | * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT 20 | * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, 21 | * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY 22 | * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 23 | * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF 24 | * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 25 | */ 26 | 27 | #pragma once 28 | 29 | #include 30 | 31 | // Integer types for HDE. 32 | typedef INT8 int8_t; 33 | typedef INT16 int16_t; 34 | typedef INT32 int32_t; 35 | typedef INT64 int64_t; 36 | typedef UINT8 uint8_t; 37 | typedef UINT16 uint16_t; 38 | typedef UINT32 uint32_t; 39 | typedef UINT64 uint64_t; 40 | -------------------------------------------------------------------------------- /WTT/UAssetAPI/Unversioned/FFragment.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Collections.Generic; 3 | using System.Linq; 4 | using System.Text; 5 | using System.Threading.Tasks; 6 | using UAssetAPI.UnrealTypes; 7 | 8 | namespace UAssetAPI.Unversioned 9 | { 10 | /// 11 | /// Unversioned header fragment. 12 | /// 13 | public class FFragment 14 | { 15 | /// 16 | /// Number of properties to skip before values. 17 | /// 18 | public byte SkipNum; 19 | 20 | public bool bHasAnyZeroes = false; 21 | 22 | /// 23 | /// Number of subsequent property values stored. 24 | /// 25 | public byte ValueNum = 0; 26 | 27 | /// 28 | /// Is this the last fragment of the header? 29 | /// 30 | public bool bIsLast = false; 31 | 32 | private static readonly uint SkipMax = 127; 33 | private static readonly uint ValueMax = 127; 34 | private static readonly uint SkipNumMask = 0x007fu; 35 | private static readonly uint HasZeroMask = 0x0080u; 36 | private static readonly int ValueNumShift = 9; 37 | private static readonly uint IsLastMask = 0x0100u; 38 | 39 | public ushort Pack() 40 | { 41 | return (ushort)(SkipNum | (bHasAnyZeroes ? HasZeroMask : 0) | (ushort)(ValueNum << ValueNumShift) | (bIsLast ? IsLastMask : 0)); 42 | } 43 | 44 | public static FFragment Unpack(ushort Int) 45 | { 46 | FFragment Fragment = new FFragment(); 47 | Fragment.SkipNum = (byte)(Int & SkipNumMask); 48 | Fragment.bHasAnyZeroes = (Int & HasZeroMask) != 0; 49 | Fragment.ValueNum = (byte)(Int >> ValueNumShift); 50 | Fragment.bIsLast = (Int & IsLastMask) != 0; 51 | return Fragment; 52 | } 53 | } 54 | } 55 | -------------------------------------------------------------------------------- /WTT/UAssetAPI/Kismet/Bytecode/Expressions/EX_PopExecutionFlowIfNot.cs: -------------------------------------------------------------------------------- 1 | using Newtonsoft.Json; 2 | using UAssetAPI.UnrealTypes; 3 | 4 | namespace UAssetAPI.Kismet.Bytecode.Expressions 5 | { 6 | /// 7 | /// A single Kismet bytecode instruction, corresponding to the instruction. 8 | /// Conditional equivalent of the expression. 9 | /// 10 | public class EX_PopExecutionFlowIfNot : KismetExpression 11 | { 12 | /// 13 | /// The token of this expression. 14 | /// 15 | public override EExprToken Token { get { return EExprToken.EX_PopExecutionFlowIfNot; } } 16 | 17 | /// 18 | /// Expression to evaluate to determine whether or not a pop should be performed. 19 | /// 20 | [JsonProperty] 21 | public KismetExpression BooleanExpression; 22 | 23 | public EX_PopExecutionFlowIfNot() 24 | { 25 | 26 | } 27 | 28 | /// 29 | /// Reads out the expression from a BinaryReader. 30 | /// 31 | /// The BinaryReader to read from. 32 | public override void Read(AssetBinaryReader reader) 33 | { 34 | BooleanExpression = ExpressionSerializer.ReadExpression(reader); 35 | } 36 | 37 | /// 38 | /// Writes the expression to a BinaryWriter. 39 | /// 40 | /// The BinaryWriter to write from. 41 | /// The iCode offset of the data that was written. 42 | public override int Write(AssetBinaryWriter writer) 43 | { 44 | return ExpressionSerializer.WriteExpression(BooleanExpression, writer); 45 | } 46 | } 47 | } 48 | -------------------------------------------------------------------------------- /WTT/UAssetAPI/PropertyTypes/Objects/StrPropertyData.cs: -------------------------------------------------------------------------------- 1 | using System.IO; 2 | using System.Text; 3 | using UAssetAPI.UnrealTypes; 4 | 5 | namespace UAssetAPI.PropertyTypes.Objects 6 | { 7 | /// 8 | /// Describes an . 9 | /// 10 | public class StrPropertyData : PropertyData 11 | { 12 | public StrPropertyData(FName name) : base(name) 13 | { 14 | 15 | } 16 | 17 | public StrPropertyData() 18 | { 19 | 20 | } 21 | 22 | private static readonly FString CurrentPropertyType = new FString("StrProperty"); 23 | public override FString PropertyType { get { return CurrentPropertyType; } } 24 | 25 | public override void Read(AssetBinaryReader reader, bool includeHeader, long leng1, long leng2 = 0) 26 | { 27 | if (includeHeader) 28 | { 29 | PropertyGuid = reader.ReadPropertyGuid(); 30 | } 31 | 32 | Value = reader.ReadFString(); 33 | } 34 | 35 | public override int Write(AssetBinaryWriter writer, bool includeHeader) 36 | { 37 | if (includeHeader) 38 | { 39 | writer.WritePropertyGuid(PropertyGuid); 40 | } 41 | 42 | int here = (int)writer.BaseStream.Position; 43 | writer.Write(Value); 44 | return (int)writer.BaseStream.Position - here; 45 | } 46 | 47 | public override string ToString() 48 | { 49 | return Value.ToString(); 50 | } 51 | 52 | public override void FromString(string[] d, UAsset asset) 53 | { 54 | var encoding = Encoding.ASCII; 55 | if (d.Length >= 5) encoding = (d[4].Equals("utf-16") ? Encoding.Unicode : Encoding.ASCII); 56 | Value = FString.FromString(d[0], encoding); 57 | } 58 | } 59 | } -------------------------------------------------------------------------------- /WTT/UAssetAPI/JSON/FSignedZeroJsonConverter.cs: -------------------------------------------------------------------------------- 1 | using Newtonsoft.Json; 2 | using System; 3 | using System.Diagnostics; 4 | using UAssetAPI.UnrealTypes; 5 | 6 | namespace UAssetAPI.JSON 7 | { 8 | public class FSignedZeroJsonConverter : JsonConverter 9 | { 10 | private static readonly decimal negativeZero = decimal.Negate(decimal.Zero); 11 | 12 | private static bool IsNegativeZero(double x) 13 | { 14 | return x == 0.0 && double.IsNegativeInfinity(1.0 / x); 15 | } 16 | 17 | public override bool CanConvert(Type objectType) 18 | { 19 | return objectType == typeof(decimal) || objectType == typeof(float) || objectType == typeof(double); 20 | } 21 | 22 | public override void WriteJson(JsonWriter writer, object value, JsonSerializer serializer) 23 | { 24 | double us = Convert.ToDouble(value); 25 | if (us == 0) 26 | { 27 | writer.WriteValue(IsNegativeZero(us) ? "-0" : "+0"); 28 | } 29 | else 30 | { 31 | writer.WriteValue(us); 32 | } 33 | } 34 | 35 | public override bool CanRead 36 | { 37 | get { return true; } 38 | } 39 | 40 | public override object ReadJson(JsonReader reader, Type objectType, object existingValue, JsonSerializer serializer) 41 | { 42 | if (reader.Value is null) return 0; 43 | 44 | if (reader.Value is string) 45 | { 46 | if (reader.Value == null || reader.Value.Equals("+0")) return Convert.ChangeType(0.0, objectType); 47 | if (reader.Value.Equals("-0")) return Convert.ChangeType(negativeZero, objectType); 48 | } 49 | 50 | object res = Convert.ChangeType(reader.Value, objectType); 51 | if (res is null) return 0; 52 | return res; 53 | } 54 | } 55 | } 56 | -------------------------------------------------------------------------------- /WTT/UAssetAPI/PropertyTypes/Structs/Movies/MovieSceneSegmentIdentifierPropertyData.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.IO; 3 | using UAssetAPI.PropertyTypes.Objects; 4 | using UAssetAPI.UnrealTypes; 5 | 6 | namespace UAssetAPI.PropertyTypes.Structs.Movies 7 | { 8 | /// 9 | /// A unique identifier for a segment within a FMovieSceneEvaluationTrackSegments container (IdentifierIndex) 10 | /// 11 | public class MovieSceneSegmentIdentifierPropertyData : PropertyData 12 | { 13 | public MovieSceneSegmentIdentifierPropertyData(FName name) : base(name) 14 | { 15 | 16 | } 17 | 18 | public MovieSceneSegmentIdentifierPropertyData() 19 | { 20 | 21 | } 22 | 23 | private static readonly FString CurrentPropertyType = new FString("MovieSceneSegmentIdentifier"); 24 | public override bool HasCustomStructSerialization { get { return true; } } 25 | public override FString PropertyType { get { return CurrentPropertyType; } } 26 | 27 | public override void Read(AssetBinaryReader reader, bool includeHeader, long leng1, long leng2 = 0) 28 | { 29 | if (includeHeader) 30 | { 31 | PropertyGuid = reader.ReadPropertyGuid(); 32 | } 33 | 34 | Value = reader.ReadInt32(); 35 | } 36 | 37 | public override int Write(AssetBinaryWriter writer, bool includeHeader) 38 | { 39 | if (includeHeader) 40 | { 41 | writer.WritePropertyGuid(PropertyGuid); 42 | } 43 | 44 | writer.Write(Value); 45 | return sizeof(int); 46 | } 47 | 48 | public override void FromString(string[] d, UAsset asset) 49 | { 50 | Value = int.Parse(d[0]); 51 | } 52 | 53 | public override string ToString() 54 | { 55 | return Value.ToString(); 56 | } 57 | } 58 | } -------------------------------------------------------------------------------- /WTT/UAssetAPI/Kismet/Bytecode/Expressions/EX_Skip.cs: -------------------------------------------------------------------------------- 1 | using Newtonsoft.Json; 2 | using UAssetAPI.UnrealTypes; 3 | 4 | namespace UAssetAPI.Kismet.Bytecode.Expressions 5 | { 6 | /// 7 | /// A single Kismet bytecode instruction, corresponding to the instruction. 8 | /// 9 | public class EX_Skip : KismetExpression 10 | { 11 | /// 12 | /// The token of this expression. 13 | /// 14 | public override EExprToken Token { get { return EExprToken.EX_Skip; } } 15 | 16 | /// 17 | /// The offset to skip to. 18 | /// 19 | [JsonProperty] 20 | public uint CodeOffset; 21 | 22 | /// 23 | /// An expression to possibly skip. 24 | /// 25 | [JsonProperty] 26 | public KismetExpression SkipExpression; 27 | 28 | public EX_Skip() 29 | { 30 | 31 | } 32 | 33 | /// 34 | /// Reads out the expression from a BinaryReader. 35 | /// 36 | /// The BinaryReader to read from. 37 | public override void Read(AssetBinaryReader reader) 38 | { 39 | CodeOffset = reader.ReadUInt32(); 40 | SkipExpression = ExpressionSerializer.ReadExpression(reader); 41 | } 42 | 43 | /// 44 | /// Writes the expression to a BinaryWriter. 45 | /// 46 | /// The BinaryWriter to write from. 47 | /// The iCode offset of the data that was written. 48 | public override int Write(AssetBinaryWriter writer) 49 | { 50 | int offset = 0; 51 | writer.Write(CodeOffset); offset += sizeof(uint); 52 | offset += ExpressionSerializer.WriteExpression(SkipExpression, writer); 53 | return offset; 54 | } 55 | } 56 | } 57 | -------------------------------------------------------------------------------- /WTT/UAssetAPI/PropertyTypes/Objects/FloatPropertyData.cs: -------------------------------------------------------------------------------- 1 | using Newtonsoft.Json; 2 | using System; 3 | using UAssetAPI.JSON; 4 | using UAssetAPI.UnrealTypes; 5 | 6 | namespace UAssetAPI.PropertyTypes.Objects 7 | { 8 | /// 9 | /// Describes an IEEE 32-bit floating point variable (). 10 | /// 11 | public class FloatPropertyData : PropertyData 12 | { 13 | /// 14 | /// The float that this property represents. 15 | /// 16 | [JsonProperty] 17 | [JsonConverter(typeof(FSignedZeroJsonConverter))] 18 | public float Value; 19 | 20 | public FloatPropertyData(FName name) : base(name) 21 | { 22 | 23 | } 24 | 25 | public FloatPropertyData() 26 | { 27 | 28 | } 29 | 30 | private static readonly FString CurrentPropertyType = new FString("FloatProperty"); 31 | public override FString PropertyType { get { return CurrentPropertyType; } } 32 | 33 | public override void Read(AssetBinaryReader reader, bool includeHeader, long leng1, long leng2 = 0) 34 | { 35 | if (includeHeader) 36 | { 37 | PropertyGuid = reader.ReadPropertyGuid(); 38 | } 39 | 40 | Value = reader.ReadSingle(); 41 | } 42 | 43 | public override int Write(AssetBinaryWriter writer, bool includeHeader) 44 | { 45 | if (includeHeader) 46 | { 47 | writer.WritePropertyGuid(PropertyGuid); 48 | } 49 | 50 | writer.Write(Value); 51 | return sizeof(float); 52 | } 53 | 54 | public override string ToString() 55 | { 56 | return Convert.ToString(Value); 57 | } 58 | 59 | public override void FromString(string[] d, UAsset asset) 60 | { 61 | Value = 0; 62 | if (float.TryParse(d[0], out float res)) Value = res; 63 | } 64 | } 65 | } -------------------------------------------------------------------------------- /galliumhook/minhook-multihook/src/buffer.h: -------------------------------------------------------------------------------- 1 | /* 2 | * MinHook - The Minimalistic API Hooking Library for x64/x86 3 | * Copyright (C) 2009-2017 Tsuda Kageyu. 4 | * All rights reserved. 5 | * 6 | * Redistribution and use in source and binary forms, with or without 7 | * modification, are permitted provided that the following conditions 8 | * are met: 9 | * 10 | * 1. Redistributions of source code must retain the above copyright 11 | * notice, this list of conditions and the following disclaimer. 12 | * 2. Redistributions in binary form must reproduce the above copyright 13 | * notice, this list of conditions and the following disclaimer in the 14 | * documentation and/or other materials provided with the distribution. 15 | * 16 | * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS 17 | * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED 18 | * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A 19 | * PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER 20 | * OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, 21 | * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, 22 | * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR 23 | * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF 24 | * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING 25 | * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS 26 | * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 27 | */ 28 | 29 | #pragma once 30 | 31 | // Size of each memory slot. 32 | #if defined(_M_X64) || defined(__x86_64__) 33 | #define MEMORY_SLOT_SIZE 64 34 | #else 35 | #define MEMORY_SLOT_SIZE 64 36 | #endif 37 | 38 | VOID InitializeBuffer(VOID); 39 | VOID UninitializeBuffer(VOID); 40 | LPVOID AllocateBuffer(LPVOID pOrigin); 41 | VOID FreeBuffer(LPVOID pBuffer); 42 | BOOL IsExecutableAddress(LPVOID pAddress); 43 | -------------------------------------------------------------------------------- /WTT/UAssetAPI/PropertyTypes/Objects/DoublePropertyData.cs: -------------------------------------------------------------------------------- 1 | using Newtonsoft.Json; 2 | using System; 3 | using UAssetAPI.JSON; 4 | using UAssetAPI.UnrealTypes; 5 | 6 | namespace UAssetAPI.PropertyTypes.Objects 7 | { 8 | /// 9 | /// Describes an IEEE 64-bit floating point variable (). 10 | /// 11 | public class DoublePropertyData : PropertyData 12 | { 13 | /// 14 | /// The double that this property represents. 15 | /// 16 | [JsonProperty] 17 | [JsonConverter(typeof(FSignedZeroJsonConverter))] 18 | public double Value; 19 | 20 | public DoublePropertyData(FName name) : base(name) 21 | { 22 | 23 | } 24 | 25 | public DoublePropertyData() 26 | { 27 | 28 | } 29 | 30 | private static readonly FString CurrentPropertyType = new FString("DoubleProperty"); 31 | public override FString PropertyType { get { return CurrentPropertyType; } } 32 | 33 | public override void Read(AssetBinaryReader reader, bool includeHeader, long leng1, long leng2 = 0) 34 | { 35 | if (includeHeader) 36 | { 37 | PropertyGuid = reader.ReadPropertyGuid(); 38 | } 39 | 40 | Value = reader.ReadDouble(); 41 | } 42 | 43 | public override int Write(AssetBinaryWriter writer, bool includeHeader) 44 | { 45 | if (includeHeader) 46 | { 47 | writer.WritePropertyGuid(PropertyGuid); 48 | } 49 | 50 | writer.Write(Value); 51 | return sizeof(double); 52 | } 53 | 54 | public override string ToString() 55 | { 56 | return Convert.ToString(Value); 57 | } 58 | 59 | public override void FromString(string[] d, UAsset asset) 60 | { 61 | Value = 0; 62 | if (double.TryParse(d[0], out double res)) Value = res; 63 | } 64 | } 65 | } -------------------------------------------------------------------------------- /WTT/UAssetAPI/PropertyTypes/Structs/GuidPropertyData.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.IO; 3 | using UAssetAPI.PropertyTypes.Objects; 4 | using UAssetAPI.UnrealTypes; 5 | 6 | namespace UAssetAPI.PropertyTypes.Structs 7 | { 8 | /// 9 | /// Describes a 128-bit . 10 | /// 11 | public class GuidPropertyData : PropertyData 12 | { 13 | public GuidPropertyData(FName name) : base(name) 14 | { 15 | 16 | } 17 | 18 | public GuidPropertyData() 19 | { 20 | 21 | } 22 | 23 | private static readonly FString CurrentPropertyType = new FString("Guid"); 24 | public override bool HasCustomStructSerialization { get { return true; } } 25 | public override FString PropertyType { get { return CurrentPropertyType; } } 26 | 27 | public override void Read(AssetBinaryReader reader, bool includeHeader, long leng1, long leng2 = 0) 28 | { 29 | if (includeHeader) 30 | { 31 | PropertyGuid = reader.ReadPropertyGuid(); 32 | } 33 | 34 | Value = new Guid(reader.ReadBytes(16)); 35 | } 36 | 37 | public override int Write(AssetBinaryWriter writer, bool includeHeader) 38 | { 39 | if (includeHeader) 40 | { 41 | writer.WritePropertyGuid(PropertyGuid); 42 | } 43 | 44 | writer.Write(Value.ToByteArray()); 45 | return 16; 46 | } 47 | 48 | public override string ToString() 49 | { 50 | return Value.ConvertToString(); 51 | } 52 | 53 | public override void FromString(string[] d, UAsset asset) 54 | { 55 | Value = d[0].ConvertToGUID(); 56 | } 57 | 58 | protected override void HandleCloned(PropertyData res) 59 | { 60 | GuidPropertyData cloningProperty = (GuidPropertyData)res; 61 | 62 | cloningProperty.Value = new Guid(Value.ToByteArray()); 63 | } 64 | } 65 | } -------------------------------------------------------------------------------- /WTT/UAssetAPI/Kismet/Bytecode/Expressions/EX_MetaCast.cs: -------------------------------------------------------------------------------- 1 | using Newtonsoft.Json; 2 | using UAssetAPI.UnrealTypes; 3 | 4 | namespace UAssetAPI.Kismet.Bytecode.Expressions 5 | { 6 | /// 7 | /// A single Kismet bytecode instruction, corresponding to the instruction. 8 | /// 9 | public class EX_MetaCast : KismetExpression 10 | { 11 | /// 12 | /// The token of this expression. 13 | /// 14 | public override EExprToken Token { get { return EExprToken.EX_MetaCast; } } 15 | 16 | /// 17 | /// A pointer to the relevant class (UClass*). 18 | /// 19 | [JsonProperty] 20 | public FPackageIndex ClassPtr; 21 | 22 | /// 23 | /// The target expression. 24 | /// 25 | [JsonProperty] 26 | public KismetExpression TargetExpression; 27 | 28 | public EX_MetaCast() 29 | { 30 | 31 | } 32 | 33 | /// 34 | /// Reads out the expression from a BinaryReader. 35 | /// 36 | /// The BinaryReader to read from. 37 | public override void Read(AssetBinaryReader reader) 38 | { 39 | ClassPtr = reader.XFER_OBJECT_POINTER(); 40 | TargetExpression = ExpressionSerializer.ReadExpression(reader); 41 | } 42 | 43 | /// 44 | /// Writes the expression to a BinaryWriter. 45 | /// 46 | /// The BinaryWriter to write from. 47 | /// The iCode offset of the data that was written. 48 | public override int Write(AssetBinaryWriter writer) 49 | { 50 | int offset = 0; 51 | offset += writer.XFER_OBJECT_POINTER(ClassPtr); 52 | offset += ExpressionSerializer.WriteExpression(TargetExpression, writer); 53 | return offset; 54 | } 55 | } 56 | } 57 | -------------------------------------------------------------------------------- /WTT/UAssetAPI/Kismet/Bytecode/Expressions/EX_PrimitiveCast.cs: -------------------------------------------------------------------------------- 1 | using Newtonsoft.Json; 2 | using UAssetAPI.UnrealTypes; 3 | 4 | namespace UAssetAPI.Kismet.Bytecode.Expressions 5 | { 6 | /// 7 | /// A single Kismet bytecode instruction, corresponding to the instruction. 8 | /// 9 | public class EX_PrimitiveCast : KismetExpression 10 | { 11 | /// 12 | /// The type to cast to. 13 | /// 14 | [JsonProperty] 15 | public ECastToken ConversionType; 16 | 17 | /// 18 | /// The target of this expression. 19 | /// 20 | [JsonProperty] 21 | public KismetExpression Target; 22 | 23 | /// 24 | /// The token of this expression. 25 | /// 26 | public override EExprToken Token { get { return EExprToken.EX_PrimitiveCast; } } 27 | 28 | public EX_PrimitiveCast() 29 | { 30 | 31 | } 32 | 33 | /// 34 | /// Reads out the expression from a BinaryReader. 35 | /// 36 | /// The BinaryReader to read from. 37 | public override void Read(AssetBinaryReader reader) 38 | { 39 | ConversionType = (ECastToken)reader.ReadByte(); 40 | Target = ExpressionSerializer.ReadExpression(reader); 41 | } 42 | 43 | /// 44 | /// Writes the expression to a BinaryWriter. 45 | /// 46 | /// The BinaryWriter to write from. 47 | /// The iCode offset of the data that was written. 48 | public override int Write(AssetBinaryWriter writer) 49 | { 50 | int offset = 0; 51 | writer.Write((byte)ConversionType); offset += sizeof(byte); 52 | offset += ExpressionSerializer.WriteExpression(Target, writer); 53 | return offset; 54 | } 55 | } 56 | } 57 | -------------------------------------------------------------------------------- /WTT/UAssetAPI/Kismet/Bytecode/Expressions/EX_DynamicCast.cs: -------------------------------------------------------------------------------- 1 | using Newtonsoft.Json; 2 | using UAssetAPI.UnrealTypes; 3 | 4 | namespace UAssetAPI.Kismet.Bytecode.Expressions 5 | { 6 | /// 7 | /// A single Kismet bytecode instruction, corresponding to the instruction. 8 | /// 9 | public class EX_DynamicCast : KismetExpression 10 | { 11 | /// 12 | /// The token of this expression. 13 | /// 14 | public override EExprToken Token { get { return EExprToken.EX_DynamicCast; } } 15 | 16 | /// 17 | /// A pointer to the relevant class (UClass*). 18 | /// 19 | [JsonProperty] 20 | public FPackageIndex ClassPtr; 21 | 22 | /// 23 | /// The target expression. 24 | /// 25 | [JsonProperty] 26 | public KismetExpression TargetExpression; 27 | 28 | public EX_DynamicCast() 29 | { 30 | 31 | } 32 | 33 | /// 34 | /// Reads out the expression from a BinaryReader. 35 | /// 36 | /// The BinaryReader to read from. 37 | public override void Read(AssetBinaryReader reader) 38 | { 39 | ClassPtr = reader.XFER_OBJECT_POINTER(); 40 | TargetExpression = ExpressionSerializer.ReadExpression(reader); 41 | } 42 | 43 | /// 44 | /// Writes the expression to a BinaryWriter. 45 | /// 46 | /// The BinaryWriter to write from. 47 | /// The iCode offset of the data that was written. 48 | public override int Write(AssetBinaryWriter writer) 49 | { 50 | int offset = 0; 51 | offset += writer.XFER_OBJECT_POINTER(ClassPtr); 52 | offset += ExpressionSerializer.WriteExpression(TargetExpression, writer); 53 | return offset; 54 | } 55 | } 56 | } 57 | -------------------------------------------------------------------------------- /WTT/UAssetAPI/Kismet/Bytecode/Expressions/EX_InterfaceToObjCast.cs: -------------------------------------------------------------------------------- 1 | using Newtonsoft.Json; 2 | using UAssetAPI.UnrealTypes; 3 | 4 | namespace UAssetAPI.Kismet.Bytecode.Expressions 5 | { 6 | /// 7 | /// A single Kismet bytecode instruction, corresponding to the instruction. 8 | /// 9 | public class EX_InterfaceToObjCast : KismetExpression 10 | { 11 | /// 12 | /// The token of this expression. 13 | /// 14 | public override EExprToken Token { get { return EExprToken.EX_InterfaceToObjCast; } } 15 | 16 | /// 17 | /// The interface class to convert to. 18 | /// 19 | [JsonProperty] 20 | public FPackageIndex ClassPtr; 21 | 22 | /// 23 | /// The target of this expression. 24 | /// 25 | [JsonProperty] 26 | public KismetExpression Target; 27 | 28 | public EX_InterfaceToObjCast() 29 | { 30 | 31 | } 32 | 33 | /// 34 | /// Reads out the expression from a BinaryReader. 35 | /// 36 | /// The BinaryReader to read from. 37 | public override void Read(AssetBinaryReader reader) 38 | { 39 | ClassPtr = reader.XFER_OBJECT_POINTER(); 40 | Target = ExpressionSerializer.ReadExpression(reader); 41 | } 42 | 43 | /// 44 | /// Writes the expression to a BinaryWriter. 45 | /// 46 | /// The BinaryWriter to write from. 47 | /// The iCode offset of the data that was written. 48 | public override int Write(AssetBinaryWriter writer) 49 | { 50 | int offset = 0; 51 | offset += writer.XFER_OBJECT_POINTER(ClassPtr); 52 | offset += ExpressionSerializer.WriteExpression(Target, writer); 53 | return offset; 54 | } 55 | } 56 | } 57 | -------------------------------------------------------------------------------- /galliumhook/minhook-multihook/cmake/minhook-config.cmake.in: -------------------------------------------------------------------------------- 1 | # MinHook - The Minimalistic API Hooking Library for x64/x86 2 | # Copyright (C) 2009-2017 Tsuda Kageyu. 3 | # All rights reserved. 4 | # 5 | # Redistribution and use in source and binary forms, with or without 6 | # modification, are permitted provided that the following conditions 7 | # are met: 8 | # 9 | # 1. Redistributions of source code must retain the above copyright 10 | # notice, this list of conditions and the following disclaimer. 11 | # 2. Redistributions in binary form must reproduce the above copyright 12 | # notice, this list of conditions and the following disclaimer in the 13 | # documentation and/or other materials provided with the distribution. 14 | # 15 | # THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS 16 | # "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED 17 | # TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A 18 | # PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER 19 | # OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, 20 | # EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, 21 | # PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR 22 | # PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF 23 | # LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING 24 | # NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS 25 | # SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 26 | 27 | set(MINHOOK_MAJOR_VERSION "@MINHOOK_MAJOR_VERSION@") 28 | set(MINHOOK_MINOR_VERSION "@MINHOOK_MINOR_VERSION@") 29 | set(MINHOOK_PATCH_VERSION "@MINHOOK_PATCH_VERSION@") 30 | set(MINHOOK_VERSION "@MINHOOK_VERSION@") 31 | 32 | @PACKAGE_INIT@ 33 | 34 | set(MINHOOK_FOUND ON) 35 | 36 | set_and_check(MINHOOK_INCLUDE_DIRS "${PACKAGE_PREFIX_DIR}/include/") 37 | set_and_check(MINHOOK_LIBRARY_DIRS "${PACKAGE_PREFIX_DIR}/lib") 38 | 39 | include("${PACKAGE_PREFIX_DIR}/lib/minhook/minhook-targets.cmake") 40 | -------------------------------------------------------------------------------- /WTT/UAssetAPI/Kismet/Bytecode/Expressions/EX_CrossInterfaceCast.cs: -------------------------------------------------------------------------------- 1 | using Newtonsoft.Json; 2 | using UAssetAPI.UnrealTypes; 3 | 4 | namespace UAssetAPI.Kismet.Bytecode.Expressions 5 | { 6 | /// 7 | /// A single Kismet bytecode instruction, corresponding to the instruction. 8 | /// 9 | public class EX_CrossInterfaceCast : KismetExpression 10 | { 11 | /// 12 | /// The token of this expression. 13 | /// 14 | public override EExprToken Token { get { return EExprToken.EX_CrossInterfaceCast; } } 15 | 16 | /// 17 | /// A pointer to the interface class to convert to. 18 | /// 19 | [JsonProperty] 20 | public FPackageIndex ClassPtr; 21 | 22 | /// 23 | /// The target of this expression. 24 | /// 25 | [JsonProperty] 26 | public KismetExpression Target; 27 | 28 | public EX_CrossInterfaceCast() 29 | { 30 | 31 | } 32 | 33 | /// 34 | /// Reads out the expression from a BinaryReader. 35 | /// 36 | /// The BinaryReader to read from. 37 | public override void Read(AssetBinaryReader reader) 38 | { 39 | ClassPtr = reader.XFER_OBJECT_POINTER(); 40 | Target = ExpressionSerializer.ReadExpression(reader); 41 | } 42 | 43 | /// 44 | /// Writes the expression to a BinaryWriter. 45 | /// 46 | /// The BinaryWriter to write from. 47 | /// The iCode offset of the data that was written. 48 | public override int Write(AssetBinaryWriter writer) 49 | { 50 | int offset = 0; 51 | offset += writer.XFER_OBJECT_POINTER(ClassPtr); 52 | offset += ExpressionSerializer.WriteExpression(Target, writer); 53 | return offset; 54 | } 55 | } 56 | } 57 | -------------------------------------------------------------------------------- /galliumhook/minhook-multihook/build/VC10/libMinHook.vcxproj.filters: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | Source Files 6 | 7 | 8 | Source Files 9 | 10 | 11 | Source Files 12 | 13 | 14 | HDE 15 | 16 | 17 | HDE 18 | 19 | 20 | 21 | 22 | Header Files 23 | 24 | 25 | Header Files 26 | 27 | 28 | 29 | HDE 30 | 31 | 32 | HDE 33 | 34 | 35 | HDE 36 | 37 | 38 | HDE 39 | 40 | 41 | HDE 42 | 43 | 44 | 45 | 46 | {9d24b740-be2e-4cfd-b9a4-340a50946ee9} 47 | 48 | 49 | {76381bc7-2863-4cc5-aede-926ec2c506e4} 50 | 51 | 52 | {56ddb326-6179-430d-ae19-e13bfd767bfa} 53 | 54 | 55 | -------------------------------------------------------------------------------- /galliumhook/minhook-multihook/build/VC11/libMinHook.vcxproj.filters: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | Source Files 6 | 7 | 8 | Source Files 9 | 10 | 11 | Source Files 12 | 13 | 14 | HDE 15 | 16 | 17 | HDE 18 | 19 | 20 | 21 | 22 | Header Files 23 | 24 | 25 | Header Files 26 | 27 | 28 | 29 | HDE 30 | 31 | 32 | HDE 33 | 34 | 35 | HDE 36 | 37 | 38 | HDE 39 | 40 | 41 | HDE 42 | 43 | 44 | 45 | 46 | {9d24b740-be2e-4cfd-b9a4-340a50946ee9} 47 | 48 | 49 | {76381bc7-2863-4cc5-aede-926ec2c506e4} 50 | 51 | 52 | {56ddb326-6179-430d-ae19-e13bfd767bfa} 53 | 54 | 55 | -------------------------------------------------------------------------------- /galliumhook/minhook-multihook/build/VC12/libMinHook.vcxproj.filters: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | Source Files 6 | 7 | 8 | Source Files 9 | 10 | 11 | Source Files 12 | 13 | 14 | HDE 15 | 16 | 17 | HDE 18 | 19 | 20 | 21 | 22 | Header Files 23 | 24 | 25 | Header Files 26 | 27 | 28 | 29 | HDE 30 | 31 | 32 | HDE 33 | 34 | 35 | HDE 36 | 37 | 38 | HDE 39 | 40 | 41 | HDE 42 | 43 | 44 | 45 | 46 | {9d24b740-be2e-4cfd-b9a4-340a50946ee9} 47 | 48 | 49 | {76381bc7-2863-4cc5-aede-926ec2c506e4} 50 | 51 | 52 | {56ddb326-6179-430d-ae19-e13bfd767bfa} 53 | 54 | 55 | -------------------------------------------------------------------------------- /galliumhook/minhook-multihook/build/VC14/libMinHook.vcxproj.filters: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | Source Files 6 | 7 | 8 | Source Files 9 | 10 | 11 | Source Files 12 | 13 | 14 | HDE 15 | 16 | 17 | HDE 18 | 19 | 20 | 21 | 22 | Header Files 23 | 24 | 25 | Header Files 26 | 27 | 28 | 29 | HDE 30 | 31 | 32 | HDE 33 | 34 | 35 | HDE 36 | 37 | 38 | HDE 39 | 40 | 41 | HDE 42 | 43 | 44 | 45 | 46 | {9d24b740-be2e-4cfd-b9a4-340a50946ee9} 47 | 48 | 49 | {76381bc7-2863-4cc5-aede-926ec2c506e4} 50 | 51 | 52 | {56ddb326-6179-430d-ae19-e13bfd767bfa} 53 | 54 | 55 | -------------------------------------------------------------------------------- /galliumhook/minhook-multihook/build/VC15/libMinHook.vcxproj.filters: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | Source Files 6 | 7 | 8 | Source Files 9 | 10 | 11 | Source Files 12 | 13 | 14 | HDE 15 | 16 | 17 | HDE 18 | 19 | 20 | 21 | 22 | Header Files 23 | 24 | 25 | Header Files 26 | 27 | 28 | 29 | HDE 30 | 31 | 32 | HDE 33 | 34 | 35 | HDE 36 | 37 | 38 | HDE 39 | 40 | 41 | HDE 42 | 43 | 44 | 45 | 46 | {9d24b740-be2e-4cfd-b9a4-340a50946ee9} 47 | 48 | 49 | {76381bc7-2863-4cc5-aede-926ec2c506e4} 50 | 51 | 52 | {56ddb326-6179-430d-ae19-e13bfd767bfa} 53 | 54 | 55 | -------------------------------------------------------------------------------- /galliumhook/minhook-multihook/build/VC16/libMinHook.vcxproj.filters: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | Source Files 6 | 7 | 8 | Source Files 9 | 10 | 11 | Source Files 12 | 13 | 14 | HDE 15 | 16 | 17 | HDE 18 | 19 | 20 | 21 | 22 | Header Files 23 | 24 | 25 | Header Files 26 | 27 | 28 | 29 | HDE 30 | 31 | 32 | HDE 33 | 34 | 35 | HDE 36 | 37 | 38 | HDE 39 | 40 | 41 | HDE 42 | 43 | 44 | 45 | 46 | {9d24b740-be2e-4cfd-b9a4-340a50946ee9} 47 | 48 | 49 | {76381bc7-2863-4cc5-aede-926ec2c506e4} 50 | 51 | 52 | {56ddb326-6179-430d-ae19-e13bfd767bfa} 53 | 54 | 55 | -------------------------------------------------------------------------------- /WTT/UAssetAPI/Kismet/Bytecode/Expressions/EX_ArrayGetByRef.cs: -------------------------------------------------------------------------------- 1 | using Newtonsoft.Json; 2 | using UAssetAPI.UnrealTypes; 3 | 4 | namespace UAssetAPI.Kismet.Bytecode.Expressions 5 | { 6 | /// 7 | /// A single Kismet bytecode instruction, corresponding to the instruction. 8 | /// 9 | public class EX_ArrayGetByRef : KismetExpression 10 | { 11 | /// 12 | /// The token of this expression. 13 | /// 14 | public override EExprToken Token { get { return EExprToken.EX_ArrayGetByRef; } } 15 | 16 | /// 17 | /// The array variable. 18 | /// 19 | [JsonProperty] 20 | public KismetExpression ArrayVariable; 21 | 22 | /// 23 | /// The index to access in the array. 24 | /// 25 | [JsonProperty] 26 | public KismetExpression ArrayIndex; 27 | 28 | public EX_ArrayGetByRef() 29 | { 30 | 31 | } 32 | 33 | /// 34 | /// Reads out the expression from a BinaryReader. 35 | /// 36 | /// The BinaryReader to read from. 37 | public override void Read(AssetBinaryReader reader) 38 | { 39 | ArrayVariable = ExpressionSerializer.ReadExpression(reader); 40 | ArrayIndex = ExpressionSerializer.ReadExpression(reader); 41 | } 42 | 43 | /// 44 | /// Writes the expression to a BinaryWriter. 45 | /// 46 | /// The BinaryWriter to write from. 47 | /// The iCode offset of the data that was written. 48 | public override int Write(AssetBinaryWriter writer) 49 | { 50 | int offset = 0; 51 | offset += ExpressionSerializer.WriteExpression(ArrayVariable, writer); 52 | offset += ExpressionSerializer.WriteExpression(ArrayIndex, writer); 53 | return offset; 54 | } 55 | } 56 | } 57 | -------------------------------------------------------------------------------- /WTT/UAssetAPI/Kismet/Bytecode/Expressions/EX_LetBool.cs: -------------------------------------------------------------------------------- 1 | using Newtonsoft.Json; 2 | using UAssetAPI.UnrealTypes; 3 | 4 | namespace UAssetAPI.Kismet.Bytecode.Expressions 5 | { 6 | /// 7 | /// A single Kismet bytecode instruction, corresponding to the instruction. 8 | /// 9 | public class EX_LetBool : KismetExpression 10 | { 11 | /// 12 | /// The token of this expression. 13 | /// 14 | public override EExprToken Token { get { return EExprToken.EX_LetBool; } } 15 | 16 | /// 17 | /// Variable expression. 18 | /// 19 | [JsonProperty] 20 | public KismetExpression VariableExpression; 21 | 22 | /// 23 | /// Assignment expression. 24 | /// 25 | [JsonProperty] 26 | public KismetExpression AssignmentExpression; 27 | public EX_LetBool() 28 | { 29 | 30 | } 31 | 32 | /// 33 | /// Reads out the expression from a BinaryReader. 34 | /// 35 | /// The BinaryReader to read from. 36 | public override void Read(AssetBinaryReader reader) 37 | { 38 | VariableExpression = ExpressionSerializer.ReadExpression(reader); 39 | AssignmentExpression = ExpressionSerializer.ReadExpression(reader); 40 | } 41 | 42 | /// 43 | /// Writes the expression to a BinaryWriter. 44 | /// 45 | /// The BinaryWriter to write from. 46 | /// The iCode offset of the data that was written. 47 | public override int Write(AssetBinaryWriter writer) 48 | { 49 | int offset = 0; 50 | offset += ExpressionSerializer.WriteExpression(VariableExpression, writer); 51 | offset += ExpressionSerializer.WriteExpression(AssignmentExpression, writer); 52 | return offset; 53 | } 54 | } 55 | } 56 | -------------------------------------------------------------------------------- /WTT/UAssetAPI/Kismet/Bytecode/Expressions/EX_LetObj.cs: -------------------------------------------------------------------------------- 1 | using Newtonsoft.Json; 2 | using UAssetAPI.UnrealTypes; 3 | 4 | namespace UAssetAPI.Kismet.Bytecode.Expressions 5 | { 6 | /// 7 | /// A single Kismet bytecode instruction, corresponding to the instruction. 8 | /// 9 | public class EX_LetObj : KismetExpression 10 | { 11 | /// 12 | /// The token of this expression. 13 | /// 14 | public override EExprToken Token { get { return EExprToken.EX_LetObj; } } 15 | 16 | /// 17 | /// Variable expression. 18 | /// 19 | [JsonProperty] 20 | public KismetExpression VariableExpression; 21 | 22 | /// 23 | /// Assignment expression. 24 | /// 25 | [JsonProperty] 26 | public KismetExpression AssignmentExpression; 27 | 28 | public EX_LetObj() 29 | { 30 | 31 | } 32 | 33 | /// 34 | /// Reads out the expression from a BinaryReader. 35 | /// 36 | /// The BinaryReader to read from. 37 | public override void Read(AssetBinaryReader reader) 38 | { 39 | VariableExpression = ExpressionSerializer.ReadExpression(reader); 40 | AssignmentExpression = ExpressionSerializer.ReadExpression(reader); 41 | } 42 | 43 | /// 44 | /// Writes the expression to a BinaryWriter. 45 | /// 46 | /// The BinaryWriter to write from. 47 | /// The iCode offset of the data that was written. 48 | public override int Write(AssetBinaryWriter writer) 49 | { 50 | int offset = 0; 51 | offset += ExpressionSerializer.WriteExpression(VariableExpression, writer); 52 | offset += ExpressionSerializer.WriteExpression(AssignmentExpression, writer); 53 | return offset; 54 | } 55 | } 56 | } 57 | -------------------------------------------------------------------------------- /WTT/UAssetAPI/Kismet/Bytecode/Expressions/EX_Let.cs: -------------------------------------------------------------------------------- 1 | using Newtonsoft.Json; 2 | using UAssetAPI.UnrealTypes; 3 | 4 | namespace UAssetAPI.Kismet.Bytecode.Expressions 5 | { 6 | /// 7 | /// A single Kismet bytecode instruction, corresponding to the instruction. 8 | /// 9 | public class EX_Let : KismetExpression 10 | { 11 | /// 12 | /// The token of this expression. 13 | /// 14 | public override EExprToken Token { get { return EExprToken.EX_Let; } } 15 | 16 | /// 17 | /// A pointer to the variable. 18 | /// 19 | [JsonProperty] 20 | public KismetPropertyPointer Value; 21 | [JsonProperty] 22 | public KismetExpression Variable; 23 | [JsonProperty] 24 | public KismetExpression Expression; 25 | 26 | public EX_Let() 27 | { 28 | 29 | } 30 | 31 | /// 32 | /// Reads out the expression from a BinaryReader. 33 | /// 34 | /// The BinaryReader to read from. 35 | public override void Read(AssetBinaryReader reader) 36 | { 37 | Value = reader.XFER_PROP_POINTER(); 38 | Variable = ExpressionSerializer.ReadExpression(reader); 39 | Expression = ExpressionSerializer.ReadExpression(reader); 40 | } 41 | 42 | /// 43 | /// Writes the expression to a BinaryWriter. 44 | /// 45 | /// The BinaryWriter to write from. 46 | /// The iCode offset of the data that was written. 47 | public override int Write(AssetBinaryWriter writer) 48 | { 49 | int offset = 0; 50 | offset += writer.XFER_PROP_POINTER(Value); 51 | offset += ExpressionSerializer.WriteExpression(Variable, writer); 52 | offset += ExpressionSerializer.WriteExpression(Expression, writer); 53 | return offset; 54 | } 55 | } 56 | } 57 | -------------------------------------------------------------------------------- /WTT/UAssetAPI/Kismet/Bytecode/Expressions/EX_LetDelegate.cs: -------------------------------------------------------------------------------- 1 | using Newtonsoft.Json; 2 | using UAssetAPI.UnrealTypes; 3 | 4 | namespace UAssetAPI.Kismet.Bytecode.Expressions 5 | { 6 | /// 7 | /// A single Kismet bytecode instruction, corresponding to the instruction. 8 | /// 9 | public class EX_LetDelegate : KismetExpression 10 | { 11 | /// 12 | /// The token of this expression. 13 | /// 14 | public override EExprToken Token { get { return EExprToken.EX_LetDelegate; } } 15 | 16 | /// 17 | /// Variable expression. 18 | /// 19 | [JsonProperty] 20 | public KismetExpression VariableExpression; 21 | 22 | /// 23 | /// Assignment expression. 24 | /// 25 | [JsonProperty] 26 | public KismetExpression AssignmentExpression; 27 | 28 | public EX_LetDelegate() 29 | { 30 | 31 | } 32 | 33 | /// 34 | /// Reads out the expression from a BinaryReader. 35 | /// 36 | /// The BinaryReader to read from. 37 | public override void Read(AssetBinaryReader reader) 38 | { 39 | VariableExpression = ExpressionSerializer.ReadExpression(reader); 40 | AssignmentExpression = ExpressionSerializer.ReadExpression(reader); 41 | } 42 | 43 | /// 44 | /// Writes the expression to a BinaryWriter. 45 | /// 46 | /// The BinaryWriter to write from. 47 | /// The iCode offset of the data that was written. 48 | public override int Write(AssetBinaryWriter writer) 49 | { 50 | int offset = 0; 51 | offset += ExpressionSerializer.WriteExpression(VariableExpression, writer); 52 | offset += ExpressionSerializer.WriteExpression(AssignmentExpression, writer); 53 | return offset; 54 | } 55 | } 56 | } 57 | -------------------------------------------------------------------------------- /WTT/UAssetAPI/Kismet/Bytecode/Expressions/EX_LetWeakObjPtr.cs: -------------------------------------------------------------------------------- 1 | using Newtonsoft.Json; 2 | using UAssetAPI.UnrealTypes; 3 | 4 | namespace UAssetAPI.Kismet.Bytecode.Expressions 5 | { 6 | /// 7 | /// A single Kismet bytecode instruction, corresponding to the instruction. 8 | /// 9 | public class EX_LetWeakObjPtr : KismetExpression 10 | { 11 | /// 12 | /// The token of this expression. 13 | /// 14 | public override EExprToken Token { get { return EExprToken.EX_LetWeakObjPtr; } } 15 | 16 | /// 17 | /// Variable expression. 18 | /// 19 | [JsonProperty] 20 | public KismetExpression VariableExpression; 21 | 22 | /// 23 | /// Assignment expression. 24 | /// 25 | [JsonProperty] 26 | public KismetExpression AssignmentExpression; 27 | 28 | public EX_LetWeakObjPtr() 29 | { 30 | 31 | } 32 | 33 | /// 34 | /// Reads out the expression from a BinaryReader. 35 | /// 36 | /// The BinaryReader to read from. 37 | public override void Read(AssetBinaryReader reader) 38 | { 39 | VariableExpression = ExpressionSerializer.ReadExpression(reader); 40 | AssignmentExpression = ExpressionSerializer.ReadExpression(reader); 41 | } 42 | 43 | /// 44 | /// Writes the expression to a BinaryWriter. 45 | /// 46 | /// The BinaryWriter to write from. 47 | /// The iCode offset of the data that was written. 48 | public override int Write(AssetBinaryWriter writer) 49 | { 50 | int offset = 0; 51 | offset += ExpressionSerializer.WriteExpression(VariableExpression, writer); 52 | offset += ExpressionSerializer.WriteExpression(AssignmentExpression, writer); 53 | return offset; 54 | } 55 | } 56 | } 57 | -------------------------------------------------------------------------------- /WTT/UAssetAPI/Kismet/Bytecode/Expressions/EX_InstrumentationEvent.cs: -------------------------------------------------------------------------------- 1 | using Newtonsoft.Json; 2 | using System; 3 | using UAssetAPI.UnrealTypes; 4 | 5 | namespace UAssetAPI.Kismet.Bytecode.Expressions 6 | { 7 | 8 | /// 9 | /// A single Kismet bytecode instruction, corresponding to the instruction. 10 | /// 11 | public class EX_InstrumentationEvent : KismetExpression 12 | { 13 | /// 14 | /// The token of this expression. 15 | /// 16 | public override EExprToken Token { get { return EExprToken.EX_InstrumentationEvent; } } 17 | 18 | [JsonProperty] 19 | public EScriptInstrumentationType EventType; 20 | [JsonProperty] 21 | public FName EventName; 22 | 23 | public EX_InstrumentationEvent() 24 | { 25 | 26 | } 27 | 28 | /// 29 | /// Reads out the expression from a BinaryReader. 30 | /// 31 | /// The BinaryReader to read from. 32 | public override void Read(AssetBinaryReader reader) 33 | { 34 | EventType = (EScriptInstrumentationType)reader.ReadByte(); 35 | 36 | if (EventType.Equals(EScriptInstrumentationType.InlineEvent)) 37 | { 38 | EventName = reader.XFER_FUNC_NAME(); 39 | } 40 | } 41 | 42 | /// 43 | /// Writes the expression to a BinaryWriter. 44 | /// 45 | /// The BinaryWriter to write from. 46 | /// The iCode offset of the data that was written. 47 | public override int Write(AssetBinaryWriter writer) 48 | { 49 | writer.Write((byte)EventType); 50 | if (EventType.Equals(EScriptInstrumentationType.InlineEvent)) { 51 | writer.XFER_FUNC_NAME(EventName); 52 | return 1 + 2 * sizeof(int); 53 | } else { 54 | return 1; 55 | } 56 | } 57 | } 58 | } 59 | -------------------------------------------------------------------------------- /WTT/UAssetAPI/Kismet/Bytecode/Expressions/EX_AddMulticastDelegate.cs: -------------------------------------------------------------------------------- 1 | using Newtonsoft.Json; 2 | using UAssetAPI.UnrealTypes; 3 | 4 | namespace UAssetAPI.Kismet.Bytecode.Expressions 5 | { 6 | /// 7 | /// A single Kismet bytecode instruction, corresponding to the instruction. 8 | /// 9 | public class EX_AddMulticastDelegate : KismetExpression 10 | { 11 | /// 12 | /// The token of this expression. 13 | /// 14 | public override EExprToken Token { get { return EExprToken.EX_AddMulticastDelegate; } } 15 | 16 | /// 17 | /// Delegate property to assign to. 18 | /// 19 | [JsonProperty] 20 | public KismetExpression Delegate; 21 | 22 | /// 23 | /// Delegate to add to the MC delegate for broadcast. 24 | /// 25 | [JsonProperty] 26 | public KismetExpression DelegateToAdd; 27 | 28 | public EX_AddMulticastDelegate() 29 | { 30 | 31 | } 32 | 33 | /// 34 | /// Reads out the expression from a BinaryReader. 35 | /// 36 | /// The BinaryReader to read from. 37 | public override void Read(AssetBinaryReader reader) 38 | { 39 | Delegate = ExpressionSerializer.ReadExpression(reader); 40 | DelegateToAdd = ExpressionSerializer.ReadExpression(reader); 41 | } 42 | 43 | /// 44 | /// Writes the expression to a BinaryWriter. 45 | /// 46 | /// The BinaryWriter to write from. 47 | /// The iCode offset of the data that was written. 48 | public override int Write(AssetBinaryWriter writer) 49 | { 50 | int offset = 0; 51 | offset += ExpressionSerializer.WriteExpression(Delegate, writer); 52 | offset += ExpressionSerializer.WriteExpression(DelegateToAdd, writer); 53 | return offset; 54 | } 55 | } 56 | } 57 | --------------------------------------------------------------------------------