Skip to content

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_H
  • AOWL_SCENE_CACHEDPTR_OFF
  • AOWL_SCENE_CALL_ONLY
  • AOWL_SCENE_DETOUR_OK
  • AOWL_SCENE_FIND
  • AOWL_SCENE_GET_CHILD
  • AOWL_SCENE_GET_CHILDCOUNT
  • AOWL_SCENE_GET_COMPONENT
  • AOWL_SCENE_GET_PARENT
  • AOWL_SCENE_PROOF_STEPS
  • AOWL_SCENE_REFUSE
  • AOWL_SCENE_TARGET_COUNT

Types

  • struct AowlSceneTarget

Functions

SignatureLine
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

aoughwl — self-hosted platform for things n stuff. Contact / Support on Discord for access to the private backends.