Skip to content

Commit

Permalink
Update MapMenu runtime-data members
Browse files Browse the repository at this point in the history
Members updated in this commit are used in MapMenu.as and LocalMap.as.
The BSTArray<GFxValue> is the content of WorldMap.MarkerData, and
changes depending on the function being called (CreateMarkers/RefreshMarkers).
The cameraPickDirection seems to be 3 floats used to calculate the custom
marker position based on cameraPickOrigin, updated when the custom
marker is created but only when the map is moved.
  • Loading branch information
epinter committed Aug 4, 2024
1 parent 62ba0d6 commit 2ea6a02
Show file tree
Hide file tree
Showing 6 changed files with 45 additions and 9 deletions.
1 change: 1 addition & 0 deletions cmake/sourcelist.cmake
Original file line number Diff line number Diff line change
Expand Up @@ -1196,6 +1196,7 @@ set(SOURCES
include/RE/M/MapInputHandler.h
include/RE/M/MapLookHandler.h
include/RE/M/MapMenu.h
include/RE/M/MapMenuMarker.h
include/RE/M/MapMoveHandler.h
include/RE/M/MapZoomHandler.h
include/RE/M/MarkerUsedData.h
Expand Down
13 changes: 9 additions & 4 deletions include/RE/L/LocalMapMenu.h
Original file line number Diff line number Diff line change
Expand Up @@ -15,6 +15,7 @@ namespace RE
class BSShaderAccumulator;
class NiCamera;
class NiNode;
struct MapMenuMarker;

struct LocalMapMenu
{
Expand Down Expand Up @@ -73,19 +74,23 @@ namespace RE
static_assert(sizeof(InputHandler) == 0x18);

// members
BSTArray<void*> unk00000; // 00000
BSTArray<MapMenuMarker> mapMarkers; // 00000
GFxValue unk00018; // 00018
float unk00030; // 00030
float unk00034; // 00034
float unk00038; // 00038
float unk0003C; // 0003C
LocalMapCullingProcess localCullingProcess; // 00040
BSScaleformExternalTexture unk303A0; // 303A0
GFxValue unk303B8; // 303B8
GFxValue unk303D0; // 303D0
GFxValue localMapMovie; // 303B8
GFxValue mapMovie; // 303D0
void* unk303E8; // 303E8
BSTSmartPointer<InputHandler> unk303F0; // 303F0
std::uint64_t unk303F8; // 303F8
std::int32_t selectedMarker; // 303F8
bool showingMap; // 303FC
bool dragging; // 303FD
bool controlsReady; // 303FE
std::uint8_t unk303FF; // 303FF
};
static_assert(sizeof(LocalMapMenu) == 0x30400);
}
1 change: 1 addition & 0 deletions include/RE/M/MainMenu.h
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,7 @@ namespace RE
{
class BSSaveDataEvent;
class BSSystemEvent;
struct MapMenuMarker;

// menuDepth = 0
// flags = kPausesGame | kDisablePauseMenu | kRequiresUpdate | kUpdateUsesCursor | kApplicationMenu
Expand Down
13 changes: 8 additions & 5 deletions include/RE/M/MapMenu.h
Original file line number Diff line number Diff line change
Expand Up @@ -57,18 +57,21 @@ namespace RE
LocalMapMenu localMapMenu; // 00060
RefHandle unk30460; // 30460
NiPoint3 playerMarkerPosition; // 30464
BSTArray<void*> unk30470; // 30470
BSTArray<void*> unk30488; // 30488
BSTArray<MapMenuMarker> mapMarkers; // 30470
BSTArray<GFxValue> markerData; // 30488
MapCamera camera; // 304A0
std::uint64_t unk30530; // 30530
TESWorldSpace* worldSpace; // 30538
GFxValue unk30540; // 30540
std::uint32_t unk30558; // 30558
GFxValue mapMovie; // 30540
std::int32_t selectedMarker; // 30558
NiPoint3 cameraPickOrigin; // 3055C
NiPoint3 cameraPickDirection; // 30568
BSSoundHandle unk30574; // 30574
std::uint64_t unk30580; // 30580
std::uint64_t unk30588; // 30588
std::uint32_t unk30588; // 30588
bool controlsReady; // 3058C
std::uint8_t unk3058D; // 3058D
std::uint16_t unk3058E; // 3058E
std::uint64_t unk30590; // 30590
};
static_assert(sizeof(MapMenu) == 0x30598);
Expand Down
25 changes: 25 additions & 0 deletions include/RE/M/MapMenuMarker.h
Original file line number Diff line number Diff line change
@@ -0,0 +1,25 @@
#pragma once

#include "RE/T/TESForm.h"
#include "RE/T/TESFullName.h"

namespace RE
{
struct MapMenuMarker
{
TESFullName* fullName; // 00
RefHandle ref; // 08
std::uint32_t pad0C; // 0C
const char* customMarker; // 10
std::uint32_t type; // 18
std::uint32_t door; // 1C
std::int32_t index; // 20
std::uint32_t pad24; // 24
TESForm* form; // 28
std::uint8_t unk30; // 30
std::uint8_t pad31; // 31
std::uint16_t pad32; // 32
std::uint32_t pad34; // 34
};
static_assert(sizeof(MapMenuMarker) == 0x38);
}
1 change: 1 addition & 0 deletions include/RE/Skyrim.h
Original file line number Diff line number Diff line change
Expand Up @@ -1198,6 +1198,7 @@
#include "RE/M/MapInputHandler.h"
#include "RE/M/MapLookHandler.h"
#include "RE/M/MapMenu.h"
#include "RE/M/MapMenuMarker.h"
#include "RE/M/MapMoveHandler.h"
#include "RE/M/MapZoomHandler.h"
#include "RE/M/MarkerUsedData.h"
Expand Down

0 comments on commit 2ea6a02

Please sign in to comment.