mirror of
https://github.com/Dingo-Shenanigans/ReSkate.git
synced 2026-10-29 03:46:50 +01:00
Add permission-gated effect handles, native surface attachments, and world lifetime cleanup. Extend physics_step with optional contact geometry and body poses. Document the generic API and validate it with self-contained plugin and geometry fixtures.
67 lines
5.9 KiB
C++
67 lines
5.9 KiB
C++
#pragma once
|
|
#include "Engine/Game/Build/fingerprint.h"
|
|
#include <utility>
|
|
namespace dingosdk::game::build::v20260929::decals {
|
|
// Steam build 25414733; executable SHA256 fbce74d5e28ef525dbba2cb4adbebc13405bdbd88f31bc940bca45e4ae88b8f9.
|
|
// Native EnvironmentDecalVolume factory 0x199f740 and service constructor 0x198f450.
|
|
inline constexpr std::uintptr_t manager=0x749b1d8, manager_vtable=0x6289f70;
|
|
inline constexpr std::uintptr_t manager_realm = 0x70, realm_update_queue = 0x400;
|
|
inline constexpr std::uintptr_t create=0x1987220;
|
|
inline constexpr std::uintptr_t release=0x19862f0;
|
|
inline constexpr std::uintptr_t properties_init=0x5b09bb0;
|
|
inline constexpr std::uintptr_t settings_init=0x5b09c70;
|
|
inline constexpr std::uintptr_t reference_assign=0x3dd1d70;
|
|
inline constexpr std::uintptr_t reference_release=0x3dc5e90;
|
|
inline constexpr std::uintptr_t manager_create=0x1991bf0;
|
|
inline constexpr std::uintptr_t manager_release=0x19925c0;
|
|
inline constexpr std::uintptr_t resource_release=0x48a9f80;
|
|
inline constexpr std::uintptr_t current_context=0x18b6ae0;
|
|
// Service vtable +0x20: (manager, owned decal id, Properties*). This merges
|
|
// flagged fields into the realm's queued properties; it is not the +0x30
|
|
// time setter. Properties +0x60 is opacity, selected by flag 4 at +0x70.
|
|
inline constexpr std::uintptr_t update_properties=0x19939a0;
|
|
// Service vtable +0x40 forwards the owned decal's resource and a 64-byte
|
|
// world matrix to resource transform setter 0x48c2e50.
|
|
inline constexpr std::uintptr_t update_transform=0x1993590;
|
|
// Properties merge 0x5b0a460 selects receiver mask +0x6c with flag 0x2000.
|
|
inline constexpr std::array<Fingerprint,3> surface_contracts{{
|
|
{0x1993590, {0x48,0x89,0x5c,0x24,0x08,0x48,0x89,0x74,0x24,0x10,0x57,0x48,0x83,0xec,0x20,0x4c,0x8d,0x91,0xc8,0x00,0x00,0x00,0x48,0xbb,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x7f}},
|
|
{0x48c2e50, {0x4c,0x8b,0xc9,0x4c,0x8b,0xc2,0x48,0x8b,0x0d,0x9b,0x12,0xef,0x02,0x41,0x8b,0x11,0x48,0x8b,0x01,0x48,0xff,0x60,0x38,0xcc,0xcc,0xcc,0xcc,0xcc,0xcc,0xcc,0xcc,0xcc}},
|
|
{0x5b0a607, {0xba,0x00,0x20,0x00,0x00,0x66,0x85,0x16,0x48,0x8b,0x74,0x24,0x48,0x74,0x0d,0x8b,0x45,0x6c,0x66,0x0b,0x11,0x66,0x41,0x89,0x10,0x89,0x47,0x6c,0x48,0x83,0xc4,0x28}},
|
|
}};
|
|
inline constexpr std::array<Fingerprint,3> opacity_contracts{{
|
|
{0x19939a0, {0x40,0x53,0x56,0x41,0x57,0x48,0x83,0xec,0x40,0x44,0x8b,0xfa,0x48,0x8b,0xd9,0x48,0x8d,0x54,0x24,0x78,0x49,0x8b,0xc8,0x49,0x8b,0xf0,0xe8,0x21,0x71,0x17,0x04,0x66}},
|
|
{0x5b0a220, {0x48,0x89,0x54,0x24,0x10,0x53,0x55,0x56,0x57,0x41,0x54,0x41,0x55,0x41,0x56,0x41,0x57,0x48,0x83,0xec,0x38,0x41,0x0f,0xb6,0x40,0x72,0x45,0x33,0xdb,0xc4,0xc1,0x7a}},
|
|
{0x5b0a460, {0x40,0x55,0x57,0x48,0x83,0xec,0x28,0x41,0xf6,0x00,0x01,0x48,0x8b,0xea,0x48,0x89,0x74,0x24,0x48,0x48,0x8b,0xf9,0x49,0x8b,0xf0,0x74,0x0c,0x0f,0xb6,0x42,0x72,0x66}},
|
|
}};
|
|
inline constexpr std::array<Fingerprint,16> contracts{{
|
|
{0x1987220, {0x48,0x89,0x5c,0x24,0x10,0x48,0x89,0x6c,0x24,0x18,0x57,0x48,0x83,0xec,0x50,0x41,0x0f,0xb6,0x40,0x10,0x48,0x8b,0xda,0xc4,0xc1,0x78,0x10,0x00,0x88,0x44,0x24,0x40}},
|
|
{0x19862f0, {0x8b,0x11,0x45,0x33,0xc0,0x44,0x38,0x41,0x04,0x41,0x0f,0x94,0xc0,0x33,0xc0,0x85,0xd2,0x0f,0x95,0xc0,0x44,0x85,0xc0,0x74,0x0e,0x48,0x8b,0x0d,0xc8,0x4e,0xb1,0x05}},
|
|
{0x5b09bb0, {0x40,0x53,0x48,0x83,0xec,0x20,0x48,0x8b,0xd9,0xc7,0x01,0x00,0x00,0x80,0x3f,0xc7,0x41,0x04,0x00,0x00,0x80,0x3f,0x48,0xc7,0x41,0x08,0x00,0x00,0x80,0x3f,0x48,0x83}},
|
|
{0x5b09c70, {0x40,0x53,0x48,0x83,0xec,0x30,0xc5,0xfa,0x10,0x1d,0x76,0x22,0x5e,0x00,0xc5,0xfa,0x10,0x15,0x5e,0x22,0x5e,0x00,0xc5,0xfa,0x10,0x0d,0x42,0x22,0x5e,0x00,0xc5,0xfa}},
|
|
{0x3dd1d70, {0x4c,0x8b,0x01,0x4c,0x8b,0xc9,0x49,0x8b,0xc8,0x48,0x8b,0xc2,0x48,0x83,0xe1,0xfb,0x48,0x83,0xe0,0xfb,0x48,0x3b,0xc8,0x74,0x31,0xb8,0x00,0x20,0x00,0x00,0x48,0x85}},
|
|
{0x3dc5e90, {0x48,0x8b,0x01,0x48,0x85,0xc0,0x74,0x1c,0x48,0x8b,0xc8,0x48,0x83,0xe1,0xfb,0x74,0x13,0xa8,0x04,0x75,0x0f,0xb8,0x00,0x20,0x00,0x00,0x66,0x85,0x41,0x14,0x0f,0x84}},
|
|
{0x1991bf0, {0x40,0x53,0x55,0x56,0x57,0x41,0x56,0x41,0x57,0x48,0x83,0xec,0x28,0x48,0x8d,0x69,0x10,0x45,0x0f,0xb6,0xf9,0x48,0x8d,0x8d,0xb8,0x00,0x00,0x00,0x49,0x8b,0xf0,0x48}},
|
|
{0x19925c0, {0x40,0x56,0x57,0x41,0x57,0x48,0x83,0xec,0x20,0x48,0x8d,0x71,0x10,0x44,0x8d,0x7a,0xfe,0x41,0x8b,0xd7,0x48,0x8d,0x8e,0xb8,0x00,0x00,0x00,0xe8,0xc0,0x8c,0xeb,0xff}},
|
|
{0x48a9f80, {0x8b,0x11,0x45,0x33,0xc0,0x44,0x38,0x41,0x04,0x41,0x0f,0x94,0xc0,0x33,0xc0,0x85,0xd2,0x0f,0x95,0xc0,0x44,0x85,0xc0,0x74,0x0e,0x48,0x8b,0x0d,0x58,0xa1,0xf0,0x02}},
|
|
{0x18b6ae0, {0x48,0x89,0x5c,0x24,0x08,0x57,0x48,0x83,0xec,0x20,0x65,0x48,0x8b,0x04,0x25,0x58,0x00,0x00,0x00,0x48,0x8b,0xd9,0x8b,0x15,0xe4,0xd5,0x01,0x06,0x48,0x8b,0x3c,0xd0}},
|
|
{0x1986260, {0x48,0x89,0x74,0x24,0x18,0x41,0x56,0x48,0x83,0xec,0x20,0x48,0x8b,0x31,0x4c,0x8b,0xf1,0xe8,0x8a,0x58,0x44,0x02,0x48,0x3b,0xf0,0x74,0x64,0x49,0x8b,0x16,0x48,0x89}},
|
|
{0xc89ce0, {0x48,0x89,0x74,0x24,0x18,0x41,0x56,0x48,0x83,0xec,0x20,0x48,0x8b,0x31,0x4c,0x8b,0xf1,0xe8,0x0a,0x1e,0x14,0x03,0x48,0x3b,0xf0,0x74,0x70,0x49,0x8b,0x06,0x48,0x89}},
|
|
{0x1586050, {0x48,0x8b,0x09,0x48,0x8d,0x05,0xaa,0x86,0xd7,0x05,0x48,0x3b,0xc8,0x0f,0x85,0xbd,0x9b,0xff,0xff,0xc3,0xcc,0xcc,0xcc,0xcc,0xcc,0xcc,0xcc,0xcc,0xcc,0xcc,0xcc,0xcc}},
|
|
{0x1355e50, {0x48,0x89,0x74,0x24,0x18,0x41,0x56,0x48,0x83,0xec,0x20,0x48,0x8b,0x31,0x4c,0x8b,0xf1,0xe8,0x9a,0x5c,0xa7,0x02,0x48,0x3b,0xf0,0x74,0x68,0x49,0x8b,0x16,0x48,0x89}},
|
|
{0xadd970, {0x48,0x89,0x74,0x24,0x18,0x41,0x56,0x48,0x83,0xec,0x20,0x48,0x8b,0x31,0x4c,0x8b,0xf1,0xe8,0x7a,0xe1,0x2e,0x03,0x48,0x3b,0xf0,0x74,0x68,0x49,0x8b,0x06,0x48,0x89}},
|
|
{0x2aab10, {0x48,0x89,0x74,0x24,0x18,0x41,0x56,0x48,0x83,0xec,0x20,0x48,0x8b,0x31,0x4c,0x8b,0xf1,0xe8,0xda,0x0f,0xb2,0x03,0x48,0x3b,0xf0,0x74,0x67,0x49,0x8b,0x06,0x48,0x89}},
|
|
}};
|
|
inline constexpr std::array<std::pair<unsigned,std::uintptr_t>,9> property_cleanup{{
|
|
{0x58,0x3dc5e90},
|
|
{0x50,0x1986260},
|
|
{0x40,0xc89ce0},
|
|
{0x38,0x1586050},
|
|
{0x30,0xc89ce0},
|
|
{0x28,0x3dc5e90},
|
|
{0x20,0x1355e50},
|
|
{0x18,0xadd970},
|
|
{0x10,0x2aab10},
|
|
}};
|
|
}
|