Appearance
aowlspt_scene.h
Source: abi/aowlspt_scene.h — 429 lines, 26 file-scope functions.
What this header owns
Reproduced verbatim from the header's own banner comment — these notes are frequently the only written record of why the subsystem is shaped the way it is.
text
aowlspt_scene.h -- the LIVE SCENE surface, native half.
===========================================================================
WHAT THIS IS
===========================================================================
The guarded native primitives beneath `aowlscene.nim`, the "talk to the
running Unity scene" library that the UI framework and mods build on. It adds
NOTHING to the calling-convention story that `aowlspt_invoke2.h` and
`aowlspt_nativeui.h` already proved -- it REUSES their machinery (the shaped
call thunks, the byte-verify discipline, the SEH guard from shim.h) and adds
the small, verified set of Transform-hierarchy and Component RVAs a scene API
needs, plus the liveness / typed-field / struct-decode / sharedness helpers.
Every RVA below was resolved OFFLINE against build 1.1.0.1.46777
(GameAssembly.dll imagebase 0x180000000) with `tools/il2cpp_resolve.py`
(`type UnityEngine.Transform` / `UnityEngine.Component`, then `bytes <rva>`
for the 16 prologue bytes), the same resolver+ground-truth path that produced
`abi/aowlspt_invoke2.h`. The 16 prologue bytes are re-verified at runtime,
exactly as `aowl_mi2_fn` does, so a stale RVA on any other build simply
yields NULL and every call declines.
NOTHING here calls anything on its own. It is a table, a set of thunks and a
set of pure helpers; `host/Aowlspt.Host.Il2Cpp/aowlscene.nim` drives it, from
inside a proven Unity-thread context, under ONE non-nested `aowl_p_p_seh`.
===========================================================================Constants
AOWLSPT_SCENE_HAOWL_SCENE_CACHEDPTR_OFFAOWL_SCENE_CALL_ONLYAOWL_SCENE_DETOUR_OKAOWL_SCENE_FINDAOWL_SCENE_GET_CHILDAOWL_SCENE_GET_CHILDCOUNTAOWL_SCENE_GET_COMPONENTAOWL_SCENE_GET_PARENTAOWL_SCENE_PROOF_STEPSAOWL_SCENE_REFUSEAOWL_SCENE_TARGET_COUNT
Types
struct AowlSceneTarget
Functions
| Signature | Line |
|---|---|
void aowl_scene_fn(int32_t i) | 110 |
char aowl_scene_name(int32_t i) | 133 |
uint32_t aowl_scene_rva(int32_t i) | 137 |
int32_t aowl_scene_target_count(void) | 141 |
int32_t aowl_scene_base_ok(void) | 142 |
int32_t aowl_scene_ok_count(void) | 143 |
int32_t aowl_scene_bad_count(void) | 144 |
void aowl_scene_call_p_pi(void* fn, void* self, int32_t a0) | 156 |
int32_t aowl_scene_cachedptr_alive(uint64_t cached) | 175 |
int32_t aowl_scene_alive(void* obj) | 181 |
int32_t aowl_scene_field_readable(void* obj, int32_t off, int32_t n) | 200 |
uint64_t aowl_scene_read_bits(void* obj, int32_t off, int32_t n, int32_t* ok) | 205 |
int32_t aowl_scene_write_bits(void* obj, int32_t off, int32_t n, uint64_t val) | 218 |
float aowl_scene_bits_f32(uint32_t b) | 238 |
double aowl_scene_bits_f64(uint64_t b) | 239 |
uint32_t aowl_scene_f32_bits(float v) | 240 |
uint64_t aowl_scene_f64_bits(double v) | 241 |
double aowl_scene_vec2_x(uint64_t packed) | 253 |
double aowl_scene_vec2_y(uint64_t packed) | 256 |
int32_t aowl_scene_share_verdict(int32_t owners) | 272 |
int32_t aowl_scene_proof_step_get(int32_t i) | 312 |
int32_t aowl_scene_proof_instanceid_get(void) | 316 |
int32_t aowl_scene_proof_childcount_get(void) | 317 |
int32_t aowl_scene_proof_ran_get(void) | 318 |
void aowl_scene_proof_body(void* self) | 321 |
void aowl_scene_proof_guarded(void* self) | 424 |

