/
engine.h
237 lines (195 loc) · 5.76 KB
/
engine.h
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
#pragma once
#include <cstdint>
#include <windows.h>
#include <string>
#undef DrawText
struct FVector {
float X, Y, Z;
FVector() : X(0.f), Y(0.f), Z(0.f) {}
FVector(float X, float Y, float Z) : X(X), Y(Y), Z(Z) {}
FVector(float InF) : X(InF), Y(InF), Z(InF) { }
float Size() const { return sqrtf(X * X + Y * Y + Z * Z); }
float DistTo(const FVector& V) const { return (*this - V).Size(); }
FVector operator-(const FVector& other) const { return FVector(X - other.X, Y - other.Y, Z - other.Z); }
};
struct FVector2D {
float X, Y;
};
struct FRotator {
float Pitch, Yaw, Roll;
};
struct FLinearColor {
float R, G, B, A;
FLinearColor() : R(0.f), G(0.f), B(0.f), A(0.f) {};
FLinearColor(float R, float G, float B, float A) : R(R), G(G), B(B), A(A) {};
};
template<typename T>
struct TArray {
T* Data;
int Count;
int Size;
};
struct FString : TArray<wchar_t> {};
struct FNameEntryHandle {
uint32_t Block = 0;
uint32_t Offset = 0;
FNameEntryHandle(uint32_t block, uint32_t offset) : Block(block), Offset(offset) {};
FNameEntryHandle(uint32_t id) : Block(id >> 16), Offset(id & 65535) {};
operator uint32_t() const { return (Block << 16 | Offset); }
};
struct FNameEntry {
uint16_t bIsWide : 1;
uint16_t LowercaseProbeHash : 5;
uint16_t Len : 10;
union
{
char AnsiName[1024];
wchar_t WideName[1024];
};
std::string String();
};
struct FNamePool
{
byte Lock[8];
uint32_t CurrentBlock;
uint32_t CurrentByteCursor;
byte* Blocks[8192];
FNameEntry* GetEntry(FNameEntryHandle handle) const;
};
struct FName {
uint32_t Index;
uint32_t Number;
std::string GetName();
};
struct UObject {
void** VFTable;
uint32_t ObjectFlags;
uint32_t InternalIndex;
struct UClass* ClassPrivate;
FName NamePrivate;
UObject* OuterPrivate;
std::string GetName();
std::string GetFullName();
bool IsA(void* cmp);
void ProcessEvent(void* fn, void* parms);
};
// Class CoreUObject.Field
// Size: 0x30 (Inherited: 0x28)
struct UField : UObject {
char UnknownData_28[0x8]; // 0x28(0x08)
};
// Class CoreUObject.Struct
// Size: 0xb0 (Inherited: 0x30)
struct UStruct : UField {
char UnknownData_30[0x10]; // 0x30(0x10)
UStruct* SuperStruct; // 0x40(0x8)
char UnknownData_48[0x68]; // 0x48(0x80)
};
// Class CoreUObject.Class
// Size: 0x230 (Inherited: 0xb0)
struct UClass : UStruct {
char UnknownData_B0[0x180]; // 0xb0(0x180)
};
struct TUObjectArray {
byte** Objects;
byte* PreAllocatedObjects;
uint32_t MaxElements;
uint32_t NumElements;
uint32_t MaxChunks;
uint32_t NumChunks;
UObject* GetObjectPtr(uint32_t id) const;
UObject* FindObject(const char* name) const;
};
// Class Engine.Canvas
// Size: 0x2c0 (Inherited: 0x28)
struct UCanvas : UObject {
void K2_DrawText(void* RenderFont, FString& RenderText, FVector2D& ScreenPosition, FVector2D& Scale, FLinearColor& RenderColor, float Kerning, FLinearColor& ShadowColor, FVector2D& ShadowOffset, bool bCentreX, bool bCentreY, bool bOutlined, FLinearColor& OutlineColor); // Function Engine.Canvas.K2_DrawText
};
// Class Engine.Actor
// Size: 0x220 (Inherited: 0x28)
struct AActor : UObject {
char pad_28[0x1F8]; // 0x28(0x1F8)
FVector K2_GetActorLocation();
};
// Class Engine.Pawn
// Size: 0x280 (Inherited: 0x220)
struct APawn : AActor {
char pad_220[0x60];
};
// Class Engine.PlayerCameraManager
// Size: 0x2740 (Inherited: 0x220)
struct APlayerCameraManager : AActor {
char pad_220[0x2520]; // 0x220
};
// Class Engine.Controller
// Size: 0x298 (Inherited: 0x220)
struct AController : AActor {
char pad_220[0x78];
struct APawn* K2_GetPawn();
};
// Class Engine.PlayerController
// Size: 0x570 (Inherited: 0x298)
struct APlayerController : AController {
char pad_298[0x20]; // 0x298(0x08)
struct APlayerCameraManager* PlayerCameraManager; // 0x2b8(0x08)
bool ProjectWorldLocationToScreen(struct FVector& WorldLocation, struct FVector2D& ScreenLocation, bool bPlayerViewportRelative); // Function Engine.PlayerController.ProjectWorldLocationToScreen
};
// Class Engine.Player
// Size: 0x48 (Inherited: 0x28)
struct UPlayer : UObject {
char UnknownData_28[0x8]; // 0x28(0x08)
struct APlayerController* PlayerController; // 0x30(0x08)
};
// Class Engine.PlayerState
// Size: 0x320 (Inherited: 0x220)
struct APlayerState : AActor {
char pad_220[0x60]; // 0x220(0x04)
struct APawn* PawnPrivate; // 0x280(0x08)
char pad_288[0x78]; // 0x288
struct FString PlayerNamePrivate; // 0x300(0x10)
};
// Class Engine.GameStateBase
// Size: 0x270 (Inherited: 0x220)
struct AGameStateBase : AActor {
char pad_220[0x18]; // 0x220
struct TArray<struct APlayerState*> PlayerArray; // 0x238(0x10)
};
// Class Engine.GameInstance
// Size: 0x198 (Inherited: 0x28)
struct UGameInstance : UObject {
char UnknownData_28[0x10]; // 0x28(0x10)
struct TArray<struct UPlayer*> LocalPlayers; // 0x38(0x10)
};
// Class Engine.World
// Size: 0x710 (Inherited: 0x28)
struct UWorld : UObject {
char pad_28[0x108]; // 0x28(0x108)
struct AGameStateBase* GameState; // 0x130(0x08)
char pad_0x138[0x50]; // 0x138(0x50)
struct UGameInstance* OwningGameInstance; // 0x188(0x08)
};
// Class Engine.ScriptViewportClient
// Size: 0x38 (Inherited: 0x28)
struct UScriptViewportClient : UObject {
char UnknownData_28[0x10]; // 0x28(0x10)
};
// Class Engine.GameViewportClient
// Size: 0x330 (Inherited: 0x38)
struct UGameViewportClient : UScriptViewportClient {
char UnknownData_38[0x40]; // 0x38(0x08)
struct UWorld* World; // 0x78(0x08)
struct UGameInstance* GameInstance; // 0x80(0x08)
char UnknownData_88[0x2a8]; // 0x88(0x2a8)
};
// Class Engine.Engine
// Size: 0xde0 (Inherited: 0x28)
struct UEngine : UObject {
char UnknownData_28[0x88]; // 0x28(0x08)
struct UFont* SubtitleFont; // 0xb0(0x08)
char pad_b8[0x6D0]; // 0xb8
struct UGameViewportClient* GameViewport; // 0x788(0x08)
};
extern UEngine** Engine;
extern FNamePool* NamePoolData;
extern TUObjectArray* ObjObjects;
bool EngineInit();