diff --git a/tools/cdb/a6-probe.cdb b/tools/cdb/a6-probe.cdb index 1f84682..28a0025 100644 --- a/tools/cdb/a6-probe.cdb +++ b/tools/cdb/a6-probe.cdb @@ -1,14 +1,33 @@ $$ -$$ Phase A6.P1 cdb probe spike — 2026-05-21 +$$ Phase A6.P1 cdb probe spike v2 — 2026-05-21 $$ -$$ 7 breakpoints on retail's BSP collision response sites. Each BP fires -$$ a non-blocking action (printf + gc), incrementing a per-BP counter. -$$ Auto-detaches via 'qd' after 50,000 total hits to avoid retail lag. +$$ v2 changes (from v1 dry-run lessons + type dumper offsets): +$$ - All struct offsets verified against PDB via dt acclient!TYPENAME +$$ (see tools/cdb/a6-types-dump.txt for the source). +$$ - BP6 symbol fixed: CTransition::check_walkable (v1 had +$$ validate_walkable which doesn't exist in the PDB). +$$ - Stack-arg reads use [esp+N] with double-indirect (poi(...)+offset) +$$ for pointer args. v1 used arbitrary registers (@edx, @edi) and +$$ produced all-zero data fields. $$ -$$ Symbol lookup convention per CLAUDE.md "Retail debugger toolchain": -$$ - snake_case for BSPTREE, CTransition, OBJECTINFO, COLLISIONINFO, SPHEREPATH -$$ - PascalCase for CPhysicsObj -$$ - Always 'x' first to confirm the actual name +$$ Calling convention: all functions __thiscall. ecx = this; non-this +$$ args at [esp+4], [esp+8], [esp+0xC] in order, after the return +$$ address at [esp+0]. +$$ +$$ 7 breakpoints, each with non-blocking action (printf + gc). +$$ Auto-detach via qd after 50,000 total hits (CLAUDE.md gotcha: +$$ high BP rates lag retail enough to trigger ACE timeout). +$$ +$$ Field offsets used (from PDB dt dump): +$$ Plane: N.x +0x00, N.y +0x04, N.z +0x08, d +0x0c +$$ CSphere: center.x +0x00, .y +0x04, .z +0x08, radius +0x0c +$$ CPolygon: plane +0x20 (so plane.N.x = polygon+0x20, .d = +0x2c) +$$ SPHEREPATH: collide +0x104, insert_type +0x154, +$$ walkable_allowance +0x1b8, walk_interp +0x1bc +$$ CTransition:object_info +0x000, sphere_path +0x020, +$$ (so sphere_path.collide = trans+0x124, +$$ sphere_path.insert_type = trans+0x174, +$$ sphere_path.walkable_allowance = trans+0x1d8) $$ .logopen /t a6-probe-${ARG_LOG_TAG}.log @@ -26,28 +45,50 @@ r $t5 = 0 r $t6 = 0 r $t7 = 0 -$$ BP1: CTransition::transitional_insert -bp acclient!CTransition::transitional_insert "r $t1 = @$t1 + 1; r $t0 = @$t0 + 1; .printf /D \"[BP1] transitional_insert hit#%d eax_2=%d insertType=%d\\n\", @$t1, poi(@ecx+0x18), poi(@ecx+0x1c); .if (@$t0 >= 50000) { qd } .else { gc }" +$$ BP1: CTransition::transitional_insert(this, sub_step_count) +$$ ecx = CTransition*; [esp+4] = sub_step_count (int) +$$ read: sub_step_count, sphere_path.insert_type (trans+0x174) +bp acclient!CTransition::transitional_insert "r $t1 = @$t1 + 1; r $t0 = @$t0 + 1; .printf /D \"[BP1] transitional_insert hit#%d substeps=%d insertType=%d\\n\", @$t1, dwo(@esp+4), dwo(@ecx+0x174); .if (@$t0 >= 50000) { qd } .else { gc }" -$$ BP2: CTransition::step_up -bp acclient!CTransition::step_up "r $t2 = @$t2 + 1; r $t0 = @$t0 + 1; .printf /D \"[BP2] step_up hit#%d walkable_allowance=%f\\n\", @$t2, poi(@ecx+0x60); .if (@$t0 >= 50000) { qd } .else { gc }" +$$ BP2: CTransition::step_up(this, step_up_normal) +$$ ecx = CTransition*; [esp+4] = Vector3* step_up_normal +$$ read: walkable_allowance (trans+0x1d8), step_up_normal.z (arg+8) +bp acclient!CTransition::step_up "r $t2 = @$t2 + 1; r $t0 = @$t0 + 1; .printf /D \"[BP2] step_up hit#%d walkAllow=%f normalZ=%f\\n\", @$t2, dwo(@ecx+0x1d8), dwo(poi(@esp+4)+8); .if (@$t0 >= 50000) { qd } .else { gc }" -$$ BP3: SPHEREPATH::set_collide -bp acclient!SPHEREPATH::set_collide "r $t3 = @$t3 + 1; r $t0 = @$t0 + 1; .printf /D \"[BP3] set_collide hit#%d normalZ=%f\\n\", @$t3, dwo(@edx+0x8); .if (@$t0 >= 50000) { qd } .else { gc }" +$$ BP3: SPHEREPATH::set_collide(this, collision_normal) +$$ ecx = SPHEREPATH*; [esp+4] = Vector3* collision_normal +$$ read: normal.x, .y, .z via *arg +bp acclient!SPHEREPATH::set_collide "r $t3 = @$t3 + 1; r $t0 = @$t0 + 1; .printf /D \"[BP3] set_collide hit#%d nx=%f ny=%f nz=%f\\n\", @$t3, dwo(poi(@esp+4)+0), dwo(poi(@esp+4)+4), dwo(poi(@esp+4)+8); .if (@$t0 >= 50000) { qd } .else { gc }" -$$ BP4: BSPTREE::find_collisions -bp acclient!BSPTREE::find_collisions "r $t4 = @$t4 + 1; r $t0 = @$t0 + 1; .printf /D \"[BP4] find_collisions hit#%d collide=%d insertType=%d\\n\", @$t4, poi(@ecx+0x40), poi(@ecx+0x1c); .if (@$t0 >= 50000) { qd } .else { gc }" +$$ BP4: BSPTREE::find_collisions(this, transition, walkable_allowance) +$$ ecx = BSPTREE*; [esp+4] = CTransition*; [esp+8] = float walkable_allowance +$$ read: trans.sphere_path.collide (trans+0x124), +$$ trans.sphere_path.insert_type (trans+0x174), +$$ walkable_allowance from arg3 (float-by-value at esp+8) +bp acclient!BSPTREE::find_collisions "r $t4 = @$t4 + 1; r $t0 = @$t0 + 1; .printf /D \"[BP4] find_collisions hit#%d collide=%d insertType=%d walkAllow=%f\\n\", @$t4, dwo(poi(@esp+4)+0x124), dwo(poi(@esp+4)+0x174), dwo(@esp+8); .if (@$t0 >= 50000) { qd } .else { gc }" -$$ BP5: CPolygon::adjust_sphere_to_plane (the over-correction suspect) -bp acclient!CPolygon::adjust_sphere_to_plane "r $t5 = @$t5 + 1; r $t0 = @$t0 + 1; .printf /D \"[BP5] adjust_sphere hit#%d Nx=%f Ny=%f Nz=%f d=%f cx=%f cy=%f cz=%f r=%f winterp=%f\\n\", @$t5, dwo(@ecx+0x0), dwo(@ecx+0x4), dwo(@ecx+0x8), dwo(@ecx+0xc), dwo(@edx+0x0), dwo(@edx+0x4), dwo(@edx+0x8), dwo(@edx+0xc), dwo(@edi+0x40); .if (@$t0 >= 50000) { qd } .else { gc }" +$$ BP5: CPolygon::adjust_sphere_to_plane(this, sphere_path, sphere, movement) +$$ ecx = CPolygon*; [esp+4] = SPHEREPATH*; [esp+8] = CSphere*; [esp+0xC] = Vector3* movement +$$ THE OVER-CORRECTION SUSPECT. Captures EVERY arg field for paired delta analysis. +$$ read: plane.N.{x,y,z} + plane.d (poly+0x20..+0x2c), +$$ sphere.center.{x,y,z} + sphere.radius (via arg2), +$$ sphere_path.walk_interp (sphere_path+0x1bc), +$$ movement.{x,y,z} (via arg4) +bp acclient!CPolygon::adjust_sphere_to_plane "r $t5 = @$t5 + 1; r $t0 = @$t0 + 1; .printf /D \"[BP5] adjust_sphere hit#%d Nx=%f Ny=%f Nz=%f d=%f cx=%f cy=%f cz=%f r=%f winterp=%f mvx=%f mvy=%f mvz=%f\\n\", @$t5, dwo(@ecx+0x20), dwo(@ecx+0x24), dwo(@ecx+0x28), dwo(@ecx+0x2c), dwo(poi(@esp+8)+0), dwo(poi(@esp+8)+4), dwo(poi(@esp+8)+8), dwo(poi(@esp+8)+0xc), dwo(poi(@esp+4)+0x1bc), dwo(poi(@esp+0xc)+0), dwo(poi(@esp+0xc)+4), dwo(poi(@esp+0xc)+8); .if (@$t0 >= 50000) { qd } .else { gc }" -$$ BP6: CTransition::validate_walkable -bp acclient!CTransition::validate_walkable "r $t6 = @$t6 + 1; r $t0 = @$t0 + 1; .printf /D \"[BP6] validate_walkable hit#%d arg2=%f\\n\", @$t6, dwo(@esp+0x4); .if (@$t0 >= 50000) { qd } .else { gc }" +$$ BP6: CTransition::check_walkable(this, threshold) +$$ ecx = CTransition*; [esp+4] = float threshold +$$ v1 used "validate_walkable" — that symbol doesn't exist in the PDB. +$$ The actual function is check_walkable (verified against symbols.json +$$ and decomp at acclient_2013_pseudo_c.txt:272811). +bp acclient!CTransition::check_walkable "r $t6 = @$t6 + 1; r $t0 = @$t0 + 1; .printf /D \"[BP6] check_walkable hit#%d threshold=%f\\n\", @$t6, dwo(@esp+4); .if (@$t0 >= 50000) { qd } .else { gc }" -$$ BP7: COLLISIONINFO::set_contact_plane -bp acclient!COLLISIONINFO::set_contact_plane "r $t7 = @$t7 + 1; r $t0 = @$t0 + 1; .printf /D \"[BP7] set_contact_plane hit#%d isWater=%d\\n\", @$t7, dwo(@esp+0x8); .if (@$t0 >= 50000) { qd } .else { gc }" +$$ BP7: COLLISIONINFO::set_contact_plane(this, plane, is_water) +$$ ecx = COLLISIONINFO*; [esp+4] = Plane*; [esp+8] = int is_water +$$ read: plane.N + plane.d (via arg2), is_water (via arg3) +bp acclient!COLLISIONINFO::set_contact_plane "r $t7 = @$t7 + 1; r $t0 = @$t0 + 1; .printf /D \"[BP7] set_contact_plane hit#%d Nx=%f Ny=%f Nz=%f d=%f isWater=%d\\n\", @$t7, dwo(poi(@esp+4)+0), dwo(poi(@esp+4)+4), dwo(poi(@esp+4)+8), dwo(poi(@esp+4)+0xc), dwo(@esp+8); .if (@$t0 >= 50000) { qd } .else { gc }" -.printf "a6-probe armed: BPs 1-7 set, threshold=50000 total hits, qd on threshold\n" +.printf "a6-probe v2 armed: BPs 1-7 set with PDB-verified offsets, threshold=50000 total hits, qd on threshold\n" $$ Continue execution g diff --git a/tools/cdb/a6-types-dump.txt b/tools/cdb/a6-types-dump.txt new file mode 100644 index 0000000..94c363e --- /dev/null +++ b/tools/cdb/a6-types-dump.txt @@ -0,0 +1,2935 @@ + +************* Preparing the environment for Debugger Extensions Gallery repositories ************** + ExtensionRepository : Implicit + UseExperimentalFeatureForNugetShare : true + AllowNugetExeUpdate : true + NonInteractiveNuget : true + AllowNugetMSCredentialProviderInstall : true + AllowParallelInitializationOfLocalRepositories : true + EnableRedirectToChakraJsProvider : false + + -- Configuring repositories + ----> Repository : LocalInstalled, Enabled: true + ----> Repository : UserExtensions, Enabled: true + +>>>>>>>>>>>>> Preparing the environment for Debugger Extensions Gallery repositories completed, duration 0.000 seconds + +************* Waiting for Debugger Extensions Gallery to Initialize ************** + +>>>>>>>>>>>>> Waiting for Debugger Extensions Gallery to Initialize completed, duration 0.031 seconds + ----> Repository : UserExtensions, Enabled: true, Packages count: 0 + ----> Repository : LocalInstalled, Enabled: true, Packages count: 29 + +Microsoft (R) Windows Debugger Version 10.0.28000.1839 X86 +Copyright (c) Microsoft Corporation. All rights reserved. + +*** wait with pending attach + +************* Path validation summary ************** +Response Time (ms) Location +Deferred srv* +Symbol search path is: srv* +Executable search path is: +ModLoad: 00400000 0096c000 C:\Turbine\Asheron's Call\acclient.exe +ModLoad: 77410000 775cf000 C:\WINDOWS\SYSTEM32\ntdll.dll +ModLoad: 76430000 76520000 C:\WINDOWS\System32\KERNEL32.DLL +ModLoad: 76880000 76b4d000 C:\WINDOWS\System32\KERNELBASE.dll +ModLoad: 74740000 747ee000 C:\WINDOWS\SYSTEM32\apphelp.dll +ModLoad: 70f90000 71221000 C:\WINDOWS\SYSTEM32\AcLayers.DLL +ModLoad: 76ed0000 76f97000 C:\WINDOWS\System32\msvcrt.dll +ModLoad: 753e0000 75402000 C:\WINDOWS\System32\GDI32.dll +ModLoad: 752b0000 752cb000 C:\WINDOWS\System32\win32u.dll +ModLoad: 74860000 7494c000 C:\WINDOWS\System32\gdi32full.dll +ModLoad: 75a80000 75b05000 C:\WINDOWS\System32\msvcp_win.dll +ModLoad: 76c60000 76d70000 C:\WINDOWS\System32\ucrtbase.dll +ModLoad: 766a0000 76876000 C:\WINDOWS\System32\USER32.dll +ModLoad: 76e10000 76ecc000 C:\WINDOWS\System32\RPCRT4.dll +ModLoad: 69c00000 69e65000 C:\WINDOWS\SYSTEM32\AcGenral.DLL +ModLoad: 76d80000 76e03000 C:\WINDOWS\System32\sechost.dll +ModLoad: 75250000 752a2000 C:\WINDOWS\System32\SHLWAPI.dll +ModLoad: 75c90000 76376000 C:\WINDOWS\System32\Windows.Storage.dll +ModLoad: 74e20000 750b3000 C:\WINDOWS\System32\combase.dll +ModLoad: 765a0000 76622000 C:\WINDOWS\System32\advapi32.dll +ModLoad: 771c0000 77313000 C:\WINDOWS\System32\ole32.dll +ModLoad: 76380000 7641f000 C:\WINDOWS\System32\OLEAUT32.dll +ModLoad: 770e0000 771b1000 C:\WINDOWS\System32\shcore.dll +ModLoad: 75410000 75a53000 C:\WINDOWS\System32\SHELL32.dll +ModLoad: 70f00000 70f80000 C:\WINDOWS\SYSTEM32\UxTheme.dll +ModLoad: 69f40000 69f73000 C:\WINDOWS\SYSTEM32\WINMM.dll +ModLoad: 6a120000 6a136000 C:\WINDOWS\SYSTEM32\samcli.dll +ModLoad: 69be0000 69bfa000 C:\WINDOWS\SYSTEM32\MSACM32.dll +ModLoad: 74680000 74688000 C:\WINDOWS\SYSTEM32\VERSION.dll +ModLoad: 6cf40000 6cf68000 C:\WINDOWS\SYSTEM32\USERENV.dll +ModLoad: 6c450000 6c476000 C:\WINDOWS\SYSTEM32\dwmapi.dll +ModLoad: 6cd10000 6cea8000 C:\WINDOWS\SYSTEM32\urlmon.dll +ModLoad: 69b50000 69bdb000 C:\WINDOWS\SYSTEM32\WINSPOOL.DRV +ModLoad: 718f0000 71919000 C:\WINDOWS\SYSTEM32\ntmarta.dll +ModLoad: 69b30000 69b49000 C:\WINDOWS\SYSTEM32\MPR.dll +ModLoad: 6ca60000 6ca8b000 C:\WINDOWS\SYSTEM32\SspiCli.dll +ModLoad: 6cad0000 6cd0d000 C:\WINDOWS\SYSTEM32\iertutil.dll +ModLoad: 71c20000 71c5e000 C:\WINDOWS\SYSTEM32\cfgmgr32.dll +ModLoad: 6caa0000 6cabe000 C:\WINDOWS\SYSTEM32\srvcli.dll +ModLoad: 6ca90000 6ca9b000 C:\WINDOWS\SYSTEM32\netutils.dll +ModLoad: 77320000 77345000 C:\WINDOWS\System32\IMM32.DLL +ModLoad: 69a90000 69b21000 C:\WINDOWS\WinSxS\x86_microsoft.windows.common-controls_6595b64144ccf1df_5.82.26100.8328_none_cf9c156c8ea8f6e3\COMCTL32.dll +ModLoad: 7c080000 7c0f7000 C:\Turbine\Asheron's Call\MSVCP70.dll +ModLoad: 7c000000 7c054000 C:\Turbine\Asheron's Call\MSVCR70.dll +ModLoad: 10000000 10012000 C:\Turbine\Asheron's Call\zlib1.dll +ModLoad: 6a110000 6a118000 C:\WINDOWS\SYSTEM32\WSOCK32.dll +ModLoad: 76530000 76599000 C:\WINDOWS\System32\WS2_32.dll +ModLoad: 69a10000 69a86000 C:\WINDOWS\SYSTEM32\DSOUND.dll +ModLoad: 69fa0000 69ff5000 C:\WINDOWS\SYSTEM32\powrprof.dll +ModLoad: 69970000 69a0a000 C:\WINDOWS\SYSTEM32\ResampleDmo.DLL +ModLoad: 69940000 69965000 C:\WINDOWS\SYSTEM32\winmmbase.dll +ModLoad: 69930000 69939000 C:\WINDOWS\SYSTEM32\msdmo.dll +ModLoad: 69f80000 69f8e000 C:\WINDOWS\SYSTEM32\UMPDC.dll +ModLoad: 698c0000 6992b000 C:\Program Files (x86)\Decal 3.0\Inject.dll +ModLoad: 69810000 69816000 C:\WINDOWS\SYSTEM32\MSIMG32.dll +ModLoad: 697f0000 6980d000 C:\WINDOWS\SYSTEM32\VCRUNTIME140.dll +ModLoad: 69820000 698b6000 C:\WINDOWS\SYSTEM32\MSVCP140.dll +ModLoad: 02e50000 030b0000 C:\WINDOWS\SYSTEM32\d3dx9_30.dll +ModLoad: 6c2d0000 6c44a000 C:\WINDOWS\SYSTEM32\d3d9.dll +ModLoad: 6c290000 6c2c8000 C:\WINDOWS\SYSTEM32\dxcore.dll +ModLoad: 001d0000 001d5000 C:\Turbine\Asheron's Call\corestrings.dll +ModLoad: 6d290000 6d2ad000 C:\WINDOWS\SYSTEM32\profapi.dll +ModLoad: 74690000 746a5000 C:\WINDOWS\SYSTEM32\kernel.appcore.dll +ModLoad: 752d0000 75347000 C:\WINDOWS\System32\bcryptPrimitives.dll +ModLoad: 75350000 753d6000 C:\WINDOWS\System32\clbcatq.dll +ModLoad: 69620000 697e1000 C:\Windows\System32\msxml6.dll +ModLoad: 6a000000 6a109000 C:\WINDOWS\SYSTEM32\dxgi.dll +ModLoad: 72900000 7291c000 C:\WINDOWS\SYSTEM32\BCrypt.dll +ModLoad: 69ee0000 69f2f000 C:\WINDOWS\SYSTEM32\directxdatabasehelper.dll +ModLoad: 750c0000 751d7000 C:\WINDOWS\System32\MSCTF.dll +ModLoad: 6aa20000 6ab22000 C:\WINDOWS\SYSTEM32\textinputframework.dll +ModLoad: 6a940000 6aa1d000 C:\WINDOWS\SYSTEM32\CoreMessaging.dll +ModLoad: 6a6a0000 6a932000 C:\WINDOWS\SYSTEM32\CoreUIComponents.dll +ModLoad: 6c7c0000 6c8b9000 C:\WINDOWS\SYSTEM32\wintypes.dll +ModLoad: 73e90000 73e9a000 C:\WINDOWS\SYSTEM32\CRYPTBASE.DLL +ModLoad: 695e0000 69618000 C:\WINDOWS\SYSTEM32\DINPUT8.DLL +ModLoad: 69460000 695d2000 C:\WINDOWS\SYSTEM32\inputhost.dll +ModLoad: 69450000 6945b000 C:\WINDOWS\SYSTEM32\HID.DLL +ModLoad: 749c0000 74e11000 C:\WINDOWS\System32\SETUPAPI.DLL +ModLoad: 71c70000 71c94000 C:\WINDOWS\SYSTEM32\DEVOBJ.dll +ModLoad: 77060000 770c7000 C:\WINDOWS\System32\WINTRUST.dll +ModLoad: 76b50000 76c59000 C:\WINDOWS\System32\CRYPT32.dll +ModLoad: 71c00000 71c0e000 C:\WINDOWS\SYSTEM32\MSASN1.dll +ModLoad: 6b1c0000 6b20d000 C:\WINDOWS\SYSTEM32\WINSTA.dll +ModLoad: 693f0000 69447000 C:\Program Files (x86)\Decal 3.0\Decal.dll +ModLoad: 73ea0000 73eb4000 C:\WINDOWS\SYSTEM32\CRYPTSP.dll +ModLoad: 72920000 72952000 C:\WINDOWS\system32\rsaenh.dll +ModLoad: 693d0000 693ea000 C:\WINDOWS\System32\DriverStore\FileRepository\u0200691.inf_amd64_84c885aed7de6324\B026021\atidx9loader32.dll +ModLoad: 672b0000 693d0000 C:\WINDOWS\System32\DriverStore\FileRepository\u0200691.inf_amd64_84c885aed7de6324\B026021\AMDXN32.DLL +ModLoad: 67270000 672a2000 C:\WINDOWS\System32\DriverStore\FileRepository\u0200691.inf_amd64_84c885aed7de6324\B026021\amdihk32.dll +ModLoad: 671e0000 6725e000 C:\WINDOWS\System32\MMDevApi.dll +ModLoad: 67190000 671dc000 C:\WINDOWS\SYSTEM32\rdpendp.dll +ModLoad: 6b210000 6b22f000 C:\WINDOWS\SYSTEM32\WTSAPI32.dll +ModLoad: 6c980000 6ca56000 C:\WINDOWS\SYSTEM32\PROPSYS.dll +ModLoad: 67010000 6717e000 C:\WINDOWS\SYSTEM32\AUDIOSES.DLL +ModLoad: 66ff0000 67000000 C:\WINDOWS\SYSTEM32\resourcepolicyclient.dll +ModLoad: 66fb0000 66fed000 C:\WINDOWS\SYSTEM32\wdmaud.drv +ModLoad: 66f90000 66fac000 C:\WINDOWS\SYSTEM32\wdmaud2.drv +ModLoad: 66f80000 66f89000 C:\WINDOWS\SYSTEM32\AVRT.dll +ModLoad: 66f70000 66f7b000 C:\WINDOWS\SYSTEM32\msacm32.drv +ModLoad: 66f60000 66f68000 C:\WINDOWS\SYSTEM32\midimap.dll +ModLoad: 66e40000 66f51000 C:\Windows\System32\Windows.UI.dll +ModLoad: 71d60000 71db4000 C:\WINDOWS\system32\mswsock.dll +ModLoad: 718d0000 718e2000 C:\WINDOWS\system32\napinsp.dll +ModLoad: 717e0000 718cc000 C:\WINDOWS\SYSTEM32\DNSAPI.dll +ModLoad: 717b0000 717d5000 C:\WINDOWS\SYSTEM32\IPHLPAPI.DLL +ModLoad: 76690000 76697000 C:\WINDOWS\System32\NSI.dll +ModLoad: 71790000 7179f000 C:\WINDOWS\System32\winrnr.dll +ModLoad: 71770000 71789000 C:\WINDOWS\system32\nlansp_c.dll +ModLoad: 71750000 71762000 C:\WINDOWS\system32\wshbth.dll +ModLoad: 6a5b0000 6a612000 C:\WINDOWS\System32\fwpuclnt.dll +ModLoad: 6a620000 6a628000 C:\Windows\System32\rasadhlp.dll +ModLoad: 10ed0000 10ee8000 C:\Turbine\Asheron's Call\chatclient.dll +(38d4.27e4): Break instruction exception - code 80000003 (first chance) +eax=003f3000 ebx=00000000 ecx=774de070 edx=774de070 esi=774de070 edi=774de070 +eip=7748b440 esp=1819ff48 ebp=1819ff74 iopl=0 nv up ei pl zr na pe nc +cs=0023 ss=002b ds=002b es=002b fs=0053 gs=002b efl=00000246 +ntdll!DbgBreakPoint: +7748b440 cc int 3 +0:021> $$ +0:021> $$ Phase A6.P1 type dumper ??? authoritative struct offsets from PDB +0:021> $$ +0:021> $$ Dumps the layouts of the 6 retail types A6's probe BPs need to read: +0:021> $$ - CPolygon (BP5 ??? adjust_sphere_to_plane) +0:021> $$ - CSphere (BP5) +0:021> $$ - Plane (BP5, BP7) +0:021> $$ - SPHEREPATH (BP2, BP3, BP5, BP6) +0:021> $$ - CTransition (BP1, BP2, BP6) +0:021> $$ - COLLISIONINFO (BP7) +0:021> $$ - Position (containing struct in several of the above) +0:021> $$ - OBJECTINFO (BP2 ??? walkable_z) +0:021> $$ +0:021> $$ No breakpoints. Just dt + qd. Run once before authoring v2 probe. +0:021> $$ Usage: .\tools\cdb\a6-types-dump-runner.ps1 +0:021> $$ +0:021> +0:021> .sympath C:\Users\erikn\source\repos\acdream\refs +Symbol search path is: C:\Users\erikn\source\repos\acdream\refs +Expanded Symbol search path is: c:\users\erikn\source\repos\acdream\refs + +************* Path validation summary ************** +Response Time (ms) Location +OK C:\Users\erikn\source\repos\acdream\refs +0:021> .symopt+ 0x40 +Symbol options are 0xB0367: + 0x00000001 - SYMOPT_CASE_INSENSITIVE + 0x00000002 - SYMOPT_UNDNAME + 0x00000004 - SYMOPT_DEFERRED_LOADS + 0x00000020 - SYMOPT_OMAP_FIND_NEAREST + 0x00000040 - SYMOPT_LOAD_ANYTHING + 0x00000100 - SYMOPT_NO_UNQUALIFIED_LOADS + 0x00000200 - SYMOPT_FAIL_CRITICAL_ERRORS + 0x00010000 - SYMOPT_AUTO_PUBLICS + 0x00020000 - SYMOPT_NO_IMAGE_SEARCH + 0x00080000 - SYMOPT_NO_PROMPTS +0:021> .reload /f acclient.exe +0:021> +0:021> .printf "\n===== Type dump for A6.P1 cdb script offset derivation =====\n\n" + +===== Type dump for A6.P1 cdb script offset derivation ===== + +0:021> + +===== Type dump for A6.P1 cdb script offset derivation ===== + +0:021> .printf "=== Plane ===\n" +=== Plane === +0:021> dt -v acclient!Plane +class Plane, 39 elements, 0x10 bytes + +0x000 N : class AC1Legacy::Vector3, 42 elements, 0xc bytes + +0x00c d : Float + Plane void ( + AC1Legacy::Vector3*, + float) + Plane::Plane void ( + AC1Legacy::Vector3*, + AC1Legacy::Vector3*) + Plane void ( + Plane*) + Plane void ( void ) + InitPlane void ( + AC1Legacy::Vector3*, + AC1Legacy::Vector3*) + init_Plane void ( + AC1Legacy::Vector3*, + AC1Legacy::Vector3*) + Plane::localtoglobal Plane ( + Position*, + Position*, + Plane*) + convert_to_global void ( + Frame*) + make_plane int ( + AC1Legacy::Vector3*, + AC1Legacy::Vector3*, + AC1Legacy::Vector3*, + Plane**) + ~Plane void ( void ) + distance_to_point float ( + AC1Legacy::Vector3*) + distance_to_point_scaled float ( + AC1Legacy::Vector3*, + float) + get_height float ( + AC1Legacy::Vector3) + Plane::snap_to_plane void ( + AC1Legacy::Vector3*) + clip_above_plane int ( + AC1Legacy::Vector3*, + int*, + AC1Legacy::Vector3*, + int*) + Plane::which_side Sidedness ( + AC1Legacy::Vector3*, + float) + Plane::which_side2 Sidedness ( + AC1Legacy::Vector3*, + float, + float) + facing_up int ( + Sidedness) + which_side_scaled Sidedness ( + AC1Legacy::Vector3*, + float, + float) + Plane::set_height int ( + AC1Legacy::Vector3*) + intersect_line int ( + AC1Legacy::Vector3*, + AC1Legacy::Vector3*, + double*, + AC1Legacy::Vector3*) + Plane::intersect_box Sidedness ( + BBox*) + Plane::compute_time_of_intersection int ( + Ray*, + double*) + Plane::operator== int ( + Plane*) + Plane::Pack unsigned int ( + void**, + unsigned int) + UnPack int ( + void**, + unsigned int) + ClipRayToPositive bool ( + Ray*, + float*, + float*) + ClipRayToPositive bool ( + Ray*) + ClipRayToNegative bool ( + Ray*) + ClipRay bool ( + Ray*, + Sidedness) + CutRay bool ( + Ray*, + bool*, + bool*, + Ray*, + Ray*) + SplitRay bool ( + Ray*, + AC1Legacy::Vector3*, + AC1Legacy::Vector3*, + AC1Legacy::Vector3*) + SplitPolygon bool ( + SimplePolygon*, + SimplePolygon*, + SimplePolygon*, + Ray*, + float) + FindIntercept bool ( + Ray*, + AC1Legacy::Vector3*) + PrevIndex unsigned long ( + unsigned long, + unsigned long) + NextIndex unsigned long ( + unsigned long, + unsigned long) + __vecDelDtor void* ( + unsigned int) +0:021> +class Plane, 39 elements, 0x10 bytes + +0x000 N : class AC1Legacy::Vector3, 42 elements, 0xc bytes + +0x00c d : Float + Plane void ( + AC1Legacy::Vector3*, + float) + Plane::Plane void ( + AC1Legacy::Vector3*, + AC1Legacy::Vector3*) + Plane void ( + Plane*) + Plane void ( void ) + InitPlane void ( + AC1Legacy::Vector3*, + AC1Legacy::Vector3*) + init_Plane void ( + AC1Legacy::Vector3*, + AC1Legacy::Vector3*) + Plane::localtoglobal Plane ( + Position*, + Position*, + Plane*) + convert_to_global void ( + Frame*) + make_plane int ( + AC1Legacy::Vector3*, + AC1Legacy::Vector3*, + AC1Legacy::Vector3*, + Plane**) + ~Plane void ( void ) + distance_to_point float ( + AC1Legacy::Vector3*) + distance_to_point_scaled float ( + AC1Legacy::Vector3*, + float) + get_height float ( + AC1Legacy::Vector3) + Plane::snap_to_plane void ( + AC1Legacy::Vector3*) + clip_above_plane int ( + AC1Legacy::Vector3*, + int*, + AC1Legacy::Vector3*, + int*) + Plane::which_side Sidedness ( + AC1Legacy::Vector3*, + float) + Plane::which_side2 Sidedness ( + AC1Legacy::Vector3*, + float, + float) + facing_up int ( + Sidedness) + which_side_scaled Sidedness ( + AC1Legacy::Vector3*, + float, + float) + Plane::set_height int ( + AC1Legacy::Vector3*) + intersect_line int ( + AC1Legacy::Vector3*, + AC1Legacy::Vector3*, + double*, + AC1Legacy::Vector3*) + Plane::intersect_box Sidedness ( + BBox*) + Plane::compute_time_of_intersection int ( + Ray*, + double*) + Plane::operator== int ( + Plane*) + Plane::Pack unsigned int ( + void**, + unsigned int) + UnPack int ( + void**, + unsigned int) + ClipRayToPositive bool ( + Ray*, + float*, + float*) + ClipRayToPositive bool ( + Ray*) + ClipRayToNegative bool ( + Ray*) + ClipRay bool ( + Ray*, + Sidedness) + CutRay bool ( + Ray*, + bool*, + bool*, + Ray*, + Ray*) + SplitRay bool ( + Ray*, + AC1Legacy::Vector3*, + AC1Legacy::Vector3*, + AC1Legacy::Vector3*) + SplitPolygon bool ( + SimplePolygon*, + SimplePolygon*, + SimplePolygon*, + Ray*, + float) + FindIntercept bool ( + Ray*, + AC1Legacy::Vector3*) + PrevIndex unsigned long ( + unsigned long, + unsigned long) + NextIndex unsigned long ( + unsigned long, + unsigned long) + __vecDelDtor void* ( + unsigned int) +0:021> .printf "\n=== CSphere ===\n" + +=== CSphere === +0:021> dt -v acclient!CSphere +class CSphere, 42 elements, 0x10 bytes + CSphere::intersects_sphere TransitionState ( + Position*, + float, + CTransition*, + int) + CSphere::intersects_sphere TransitionState ( + CTransition*, + int) + intersects_sphere int ( + SPHEREPATH*, + AC1Legacy::Vector3*) + curr_intersects_sphere int ( + SPHEREPATH*) + find_time_of_collision float ( + AC1Legacy::Vector3*, + AC1Legacy::Vector3*) + CSphere::find_time_of_collision double ( + AC1Legacy::Vector3*, + AC1Legacy::Vector3*, + float) + CSphere::collides_with_sphere int ( + AC1Legacy::Vector3*, + float) + CSphere::step_sphere_down TransitionState ( + OBJECTINFO*, + SPHEREPATH*, + COLLISIONINFO*, + CSphere*, + AC1Legacy::Vector3*, + float) + CSphere::step_sphere_up TransitionState ( + CTransition*, + CSphere*, + AC1Legacy::Vector3*, + float) + CSphere::slide_sphere TransitionState ( + OBJECTINFO*, + SPHEREPATH*, + COLLISIONINFO*, + CSphere*, + AC1Legacy::Vector3*, + float*, + int) + CSphere::slide_sphere TransitionState ( + SPHEREPATH*, + COLLISIONINFO*, + AC1Legacy::Vector3*, + AC1Legacy::Vector3*) + CSphere::slide_sphere TransitionState ( + OBJECTINFO*, + SPHEREPATH*, + COLLISIONINFO*, + AC1Legacy::Vector3*, + float, + int) + CSphere::collide_with_point TransitionState ( + OBJECTINFO*, + SPHEREPATH*, + COLLISIONINFO*, + CSphere*, + AC1Legacy::Vector3*, + float, + int) + CSphere::land_on_sphere TransitionState ( + OBJECTINFO*, + SPHEREPATH*, + COLLISIONINFO*, + CSphere*, + AC1Legacy::Vector3*, + float) + +0x000 center : class AC1Legacy::Vector3, 42 elements, 0xc bytes + +0x00c radius : Float + CSphere void ( + CSphere*) + CSphere void ( + AC1Legacy::Vector3*, + float) + CSphere void ( void ) + ~CSphere void ( void ) + get_center AC1Legacy::Vector3* ( void ) + get_radius float ( void ) + set_center void ( + AC1Legacy::Vector3*) + set_radius void ( + float) + CSphere::sphere_intersects_ray bool ( + Ray*, + double*) + sphere_intersects_ray bool ( + Ray*) + sphere_contained_in_portal BoundingType ( + Plane*, + unsigned long*, + AC1Legacy::Vector3*, + float*) + adjust_to_plane int ( + AC1Legacy::Vector3*, + AC1Legacy::Vector3*, + int, + float*, + Plane**, + Plane**, + int, + double*, + double*, + double*, + AC1Legacy::Vector3*) + adjust_to_point void ( + AC1Legacy::Vector3*, + AC1Legacy::Vector3*) + adjust_to_point double ( + AC1Legacy::Vector3*, + AC1Legacy::Vector3*, + AC1Legacy::Vector3*) + calc_start_point void ( + unsigned long, + CSphere*, + float, + AC1Legacy::Vector3*, + CSphere*, + AC1Legacy::Vector3*, + AC1Legacy::Vector3*) + calc_firing_vector int ( + unsigned long, + CSphere*, + AC1Legacy::Vector3*, + AC1Legacy::Vector3*, + CSphere*, + AC1Legacy::Vector3*, + float, + float, + int, + AC1Legacy::Vector3*, + float*, + AC1Legacy::Vector3*) + CSphere::attack unsigned long ( + Position*, + float, + float, + Position*, + Vec2D*, + Vec2D*, + float, + float) + attack_sphere unsigned long ( + Position*, + float, + float, + Position*, + float, + float) + intersects int ( + AC1Legacy::Vector3*, + float) + CSphere::intersects int ( + CSphere*) + TraceRay bool ( + Ray*, + float*) + localtoglobal void ( + Frame*) + pack_size unsigned int ( void ) + CSphere::Pack unsigned int ( + void**, + unsigned int) + CSphere::UnPack int ( + void**, + unsigned int) + __vecDelDtor void* ( + unsigned int) +0:021> +class CSphere, 42 elements, 0x10 bytes + CSphere::intersects_sphere TransitionState ( + Position*, + float, + CTransition*, + int) + CSphere::intersects_sphere TransitionState ( + CTransition*, + int) + intersects_sphere int ( + SPHEREPATH*, + AC1Legacy::Vector3*) + curr_intersects_sphere int ( + SPHEREPATH*) + find_time_of_collision float ( + AC1Legacy::Vector3*, + AC1Legacy::Vector3*) + CSphere::find_time_of_collision double ( + AC1Legacy::Vector3*, + AC1Legacy::Vector3*, + float) + CSphere::collides_with_sphere int ( + AC1Legacy::Vector3*, + float) + CSphere::step_sphere_down TransitionState ( + OBJECTINFO*, + SPHEREPATH*, + COLLISIONINFO*, + CSphere*, + AC1Legacy::Vector3*, + float) + CSphere::step_sphere_up TransitionState ( + CTransition*, + CSphere*, + AC1Legacy::Vector3*, + float) + CSphere::slide_sphere TransitionState ( + OBJECTINFO*, + SPHEREPATH*, + COLLISIONINFO*, + CSphere*, + AC1Legacy::Vector3*, + float*, + int) + CSphere::slide_sphere TransitionState ( + SPHEREPATH*, + COLLISIONINFO*, + AC1Legacy::Vector3*, + AC1Legacy::Vector3*) + CSphere::slide_sphere TransitionState ( + OBJECTINFO*, + SPHEREPATH*, + COLLISIONINFO*, + AC1Legacy::Vector3*, + float, + int) + CSphere::collide_with_point TransitionState ( + OBJECTINFO*, + SPHEREPATH*, + COLLISIONINFO*, + CSphere*, + AC1Legacy::Vector3*, + float, + int) + CSphere::land_on_sphere TransitionState ( + OBJECTINFO*, + SPHEREPATH*, + COLLISIONINFO*, + CSphere*, + AC1Legacy::Vector3*, + float) + +0x000 center : class AC1Legacy::Vector3, 42 elements, 0xc bytes + +0x00c radius : Float + CSphere void ( + CSphere*) + CSphere void ( + AC1Legacy::Vector3*, + float) + CSphere void ( void ) + ~CSphere void ( void ) + get_center AC1Legacy::Vector3* ( void ) + get_radius float ( void ) + set_center void ( + AC1Legacy::Vector3*) + set_radius void ( + float) + CSphere::sphere_intersects_ray bool ( + Ray*, + double*) + sphere_intersects_ray bool ( + Ray*) + sphere_contained_in_portal BoundingType ( + Plane*, + unsigned long*, + AC1Legacy::Vector3*, + float*) + adjust_to_plane int ( + AC1Legacy::Vector3*, + AC1Legacy::Vector3*, + int, + float*, + Plane**, + Plane**, + int, + double*, + double*, + double*, + AC1Legacy::Vector3*) + adjust_to_point void ( + AC1Legacy::Vector3*, + AC1Legacy::Vector3*) + adjust_to_point double ( + AC1Legacy::Vector3*, + AC1Legacy::Vector3*, + AC1Legacy::Vector3*) + calc_start_point void ( + unsigned long, + CSphere*, + float, + AC1Legacy::Vector3*, + CSphere*, + AC1Legacy::Vector3*, + AC1Legacy::Vector3*) + calc_firing_vector int ( + unsigned long, + CSphere*, + AC1Legacy::Vector3*, + AC1Legacy::Vector3*, + CSphere*, + AC1Legacy::Vector3*, + float, + float, + int, + AC1Legacy::Vector3*, + float*, + AC1Legacy::Vector3*) + CSphere::attack unsigned long ( + Position*, + float, + float, + Position*, + Vec2D*, + Vec2D*, + float, + float) + attack_sphere unsigned long ( + Position*, + float, + float, + Position*, + float, + float) + intersects int ( + AC1Legacy::Vector3*, + float) + CSphere::intersects int ( + CSphere*) + TraceRay bool ( + Ray*, + float*) + localtoglobal void ( + Frame*) + pack_size unsigned int ( void ) + CSphere::Pack unsigned int ( + void**, + unsigned int) + CSphere::UnPack int ( + void**, + unsigned int) + __vecDelDtor void* ( + unsigned int) +0:021> .printf "\n=== Position ===\n" + +=== Position === +0:021> dt -v acclient!Position +Ambiguous matches found for acclient!Position (dumping largest sized): + acclient!Position {0x004 bytes} + acclient!Position {0x048 bytes} +class Position, 85 elements, 0x48 bytes + +0x000 __BaseClass class PackObj, 125 elements, 0x4 bytes + +0x000 __VFN_table : Ptr32 to 5 entries + PackObj void ( + PackObj*) + PackObj void ( void ) + ~PackObj void ( void ) + GetPackSize unsigned int ( + sockaddr_in) + GetPackSize unsigned int ( + unsigned int64) + GetPackSize unsigned int ( + int64) + GetPackSize unsigned int ( + float) + GetPackSize unsigned int ( + double) + GetPackSize unsigned int ( + unsigned long) + GetPackSize unsigned int ( + long) + GetPackSize unsigned int ( + unsigned char) + GetPackSize unsigned int ( + char) + GetPackSize unsigned int ( + unsigned short) + GetPackSize unsigned int ( + short) + GetPackSize unsigned int ( + unsigned int) + GetPackSize unsigned int ( + int) + GetPackSize unsigned int ( + IDClass<_tagDataID,32,0>) + GetPackSize unsigned int ( + bool) + GetPackSize unsigned int ( + PackObj*) + PackObj::GetPackSize unsigned int ( void ) + PackObj::GetPackSize unsigned int ( void ) + Pack unsigned int ( + sockaddr_in, + void**, + unsigned int) + Pack unsigned int ( + unsigned int64, + void**, + unsigned int) + Pack unsigned int ( + int64, + void**, + unsigned int) + Pack unsigned int ( + float, + void**, + unsigned int) + Pack unsigned int ( + double, + void**, + unsigned int) + Pack unsigned int ( + unsigned long, + void**, + unsigned int) + Pack unsigned int ( + long, + void**, + unsigned int) + Pack unsigned int ( + unsigned char, + void**, + unsigned int) + Pack unsigned int ( + char, + void**, + unsigned int) + Pack unsigned int ( + unsigned short, + void**, + unsigned int) + Pack unsigned int ( + short, + void**, + unsigned int) + Pack unsigned int ( + unsigned int, + void**, + unsigned int) + Pack unsigned int ( + int, + void**, + unsigned int) + Pack unsigned int ( + IDClass<_tagDataID,32,0>, + void**, + unsigned int) + Pack unsigned int ( + bool, + void**, + unsigned int) + Pack unsigned int ( + PackObj*, + void**, + unsigned int) + Pack unsigned int ( + void**, + unsigned int) + UnPack int ( + sockaddr_in*, + void**, + unsigned int) + UnPack int ( + unsigned int64*, + void**, + unsigned int) + UnPack int ( + int64*, + void**, + unsigned int) + UnPack int ( + float*, + void**, + unsigned int) + UnPack int ( + double*, + void**, + unsigned int) + UnPack int ( + unsigned long*, + void**, + unsigned int) + UnPack int ( + long*, + void**, + unsigned int) + UnPack int ( + unsigned char*, + void**, + unsigned int) + UnPack int ( + char*, + void**, + unsigned int) + UnPack int ( + unsigned short*, + void**, + unsigned int) + UnPack int ( + short*, + void**, + unsigned int) + UnPack int ( + unsigned int*, + void**, + unsigned int) + UnPack int ( + int*, + void**, + unsigned int) + UnPack int ( + IDClass<_tagDataID,32,0>*, + void**, + unsigned int) + UnPack int ( + bool*, + void**, + unsigned int) + UnPack int ( + PackObj*, + void**, + unsigned int) + UnPack int ( + void**, + unsigned int) + PACK_TYPE int ( + sockaddr_in, + void**, + unsigned int*) + PACK_TYPE void ( + sockaddr_in, + void**) + PACK_TYPE int ( + unsigned int64, + void**, + unsigned int*) + PACK_TYPE void ( + unsigned int64, + void**) + PACK_TYPE int ( + int64, + void**, + unsigned int*) + PACK_TYPE void ( + int64, + void**) + PACK_TYPE int ( + float, + void**, + unsigned int*) + PACK_TYPE void ( + float, + void**) + PACK_TYPE int ( + double, + void**, + unsigned int*) + PACK_TYPE void ( + double, + void**) + PACK_TYPE int ( + unsigned long, + void**, + unsigned int*) + PACK_TYPE void ( + unsigned long, + void**) + PACK_TYPE int ( + long, + void**, + unsigned int*) + PACK_TYPE void ( + long, + void**) + PACK_TYPE int ( + unsigned char, + void**, + unsigned int*) + PACK_TYPE void ( + unsigned char, + void**) + PACK_TYPE int ( + char, + void**, + unsigned int*) + PACK_TYPE void ( + char, + void**) + PACK_TYPE int ( + unsigned short, + void**, + unsigned int*) + PACK_TYPE void ( + unsigned short, + void**) + PACK_TYPE int ( + short, + void**, + unsigned int*) + PACK_TYPE void ( + short, + void**) + PACK_TYPE int ( + unsigned int, + void**, + unsigned int*) + PACK_TYPE void ( + unsigned int, + void**) + PACK_TYPE int ( + int, + void**, + unsigned int*) + PACK_TYPE void ( + int, + void**) + PACK_TYPE int ( + IDClass<_tagDataID,32,0>, + void**, + unsigned int*) + PACK_TYPE void ( + IDClass<_tagDataID,32,0>, + void**) + PACK_TYPE int ( + bool, + void**, + unsigned int*) + PACK_TYPE void ( + bool, + void**) + UNPACK_TYPE int ( + sockaddr_in*, + void**, + unsigned int*) + UNPACK_TYPE void ( + sockaddr_in*, + void**) + UNPACK_TYPE int ( + unsigned int64*, + void**, + unsigned int*) + UNPACK_TYPE void ( + unsigned int64*, + void**) + UNPACK_TYPE int ( + int64*, + void**, + unsigned int*) + UNPACK_TYPE void ( + int64*, + void**) + UNPACK_TYPE int ( + float*, + void**, + unsigned int*) + UNPACK_TYPE void ( + float*, + void**) + UNPACK_TYPE int ( + double*, + void**, + unsigned int*) + UNPACK_TYPE void ( + double*, + void**) + PackObj::UNPACK_TYPE int ( + unsigned long*, + void**, + unsigned int*) + UNPACK_TYPE void ( + unsigned long*, + void**) + PackObj::UNPACK_TYPE int ( + long*, + void**, + unsigned int*) + UNPACK_TYPE void ( + long*, + void**) + UNPACK_TYPE int ( + unsigned char*, + void**, + unsigned int*) + UNPACK_TYPE void ( + unsigned char*, + void**) + UNPACK_TYPE int ( + char*, + void**, + unsigned int*) + UNPACK_TYPE void ( + char*, + void**) + UNPACK_TYPE int ( + unsigned short*, + void**, + unsigned int*) + UNPACK_TYPE void ( + unsigned short*, + void**) + UNPACK_TYPE int ( + short*, + void**, + unsigned int*) + UNPACK_TYPE void ( + short*, + void**) + UNPACK_TYPE int ( + unsigned int*, + void**, + unsigned int*) + UNPACK_TYPE void ( + unsigned int*, + void**) + PackObj::UNPACK_TYPE int ( + int*, + void**, + unsigned int*) + UNPACK_TYPE void ( + int*, + void**) + UNPACK_TYPE int ( + IDClass<_tagDataID,32,0>*, + void**, + unsigned int*) + UNPACK_TYPE void ( + IDClass<_tagDataID,32,0>*, + void**) + UNPACK_TYPE int ( + bool*, + void**, + unsigned int*) + UNPACK_TYPE void ( + bool*, + void**) + GET_PAD unsigned int ( + unsigned int) + PackObj::ALIGN_PTR int ( + void**, + unsigned int*) + PackObj::ALIGN_PTR unsigned int ( + void**) + ALIGN_PTR_UNPACK int ( + void**, + unsigned int*) + ALIGN_PTR_UNPACK int ( + void**) + PackObj::GET_SIZE_LEFT unsigned int ( + void*, + void*, + unsigned int) + PackObj::VERIFY_ADDR int ( + void*, + void*, + unsigned int) + __local_vftable_ctor_closure void ( void ) + __vecDelDtor void* ( + unsigned int) + Position::Position void ( + Position*) + Position::Position void ( void ) + Position::Position void ( + unsigned long, + Frame*) + +0x004 objcell_id : Uint4B + +0x008 frame : class Frame, 82 elements, 0x40 bytes + static_pack_size unsigned int ( void ) + Position::pack_size unsigned int ( void ) + min_pack_size unsigned int ( void ) + Position::Pack unsigned int ( + void**, + unsigned int) + Position::UnPack int ( + void**, + unsigned int) + Position::Serialize void ( + Archive*) + Position::PackSizeOrigin unsigned int ( void ) + Position::PackOrigin unsigned int ( + void**, + unsigned int) + Position::UnPackOrigin int ( + void**, + unsigned int) + Position::ToString unsigned int ( + char*, + unsigned int) + Position::ToDisplayString PStringBase ( void ) + Position::FromString int ( + char*) + get_height float ( void ) + set_height void ( + float) + Position::get_origin AC1Legacy::Vector3* ( void ) + get_origin AC1Legacy::Vector3* ( void ) + origin AC1Legacy::Vector3* ( void ) + Position::origin AC1Legacy::Vector3* ( void ) + set_origin void ( + Frame*) + set_origin void ( + AC1Legacy::Vector3*) + Position::get_outside_cell_id unsigned long ( void ) + Position::adjust_to_outside void ( void ) + get_cell_id unsigned long ( void ) + set_cell_id void ( + unsigned long) + set_frame void ( + Frame*) + get_frame Frame* ( void ) + get_frame Frame* ( void ) + GetFrame Frame* ( void ) + Position::distance float ( + Position*) + Position::xy_distance float ( + Position*) + Position::heading float ( + Position*) + pitch float ( + Position*) + set_rotate void ( + Frame*) + set_heading void ( + float) + get_heading float ( void ) + set_pitch void ( + float) + get_pitch float ( void ) + set_vector_heading void ( + AC1Legacy::Vector3*) + get_vector_heading AC1Legacy::Vector3 ( void ) + in_same_block int ( + Position*) + in_same_block int ( + unsigned long) + get_block_offset AC1Legacy::Vector3 ( + Position*) + get_block_offset AC1Legacy::Vector3 ( + unsigned long) + outside int ( void ) + IsOutside bool ( void ) + get_landblock_gid unsigned long ( void ) + combine void ( + Position*, + Frame*) + Position::subtract2 Frame ( + Position*) + Position::get_offset AC1Legacy::Vector3 ( + Position*, + AC1Legacy::Vector3*) + Position::get_offset AC1Legacy::Vector3 ( + Position*) + Position::localtolocal AC1Legacy::Vector3 ( + Position*, + AC1Legacy::Vector3*) + ComputeLocalToLocal AC1Legacy::Vector3 ( + Position*, + AC1Legacy::Vector3*) + localtoglobal AC1Legacy::Vector3 ( + AC1Legacy::Vector3*) + Position::localtoglobal AC1Legacy::Vector3 ( + Position*, + AC1Legacy::Vector3*) + Position::localtoglobal AC1Legacy::Vector3 ( + Position*) + ComputeLocalToGlobal AC1Legacy::Vector3 ( + AC1Legacy::Vector3*) + ComputeLocalToGlobal AC1Legacy::Vector3 ( + Position*, + AC1Legacy::Vector3*) + ComputeLocalToGlobal AC1Legacy::Vector3 ( + Position*) + globaltolocal AC1Legacy::Vector3 ( + AC1Legacy::Vector3*) + globaltolocal AC1Legacy::Vector3 ( + Position*, + AC1Legacy::Vector3*) + globaltolocal AC1Legacy::Vector3 ( + Position*) + Position::localtoglobalvec AC1Legacy::Vector3 ( + AC1Legacy::Vector3*) + Position::globaltolocalvec AC1Legacy::Vector3 ( + AC1Legacy::Vector3*) + add_local_offset void ( + AC1Legacy::Vector3*) + add_global_offset void ( + AC1Legacy::Vector3*) + Position::determine_quadrant unsigned long ( + float, + Position*) + operator== int ( + Position*) + operator!= int ( + Position*) + Position::cylinder_distance float ( + float, + float, + Position*, + float, + float, + Position*) + Position::cylinder_distance_no_z float ( + float, + Position*, + float, + Position*) + NotInWorld bool ( void ) + IsInWorld bool ( void ) + Position::IsValid int ( void ) + WithinBlocks int ( + unsigned long, + unsigned long, + int*) + NoCorpseRun int ( void ) + CoordsToPosition int ( + double, + double, + Position*) + ~Position void ( void ) + __local_vftable_ctor_closure void ( void ) + __vecDelDtor void* ( + unsigned int) +0:021> +Ambiguous matches found for acclient!Position (dumping largest sized): + acclient!Position {0x004 bytes} + acclient!Position {0x048 bytes} +class Position, 85 elements, 0x48 bytes + +0x000 __BaseClass class PackObj, 125 elements, 0x4 bytes + +0x000 __VFN_table : Ptr32 to 5 entries + PackObj void ( + PackObj*) + PackObj void ( void ) + ~PackObj void ( void ) + GetPackSize unsigned int ( + sockaddr_in) + GetPackSize unsigned int ( + unsigned int64) + GetPackSize unsigned int ( + int64) + GetPackSize unsigned int ( + float) + GetPackSize unsigned int ( + double) + GetPackSize unsigned int ( + unsigned long) + GetPackSize unsigned int ( + long) + GetPackSize unsigned int ( + unsigned char) + GetPackSize unsigned int ( + char) + GetPackSize unsigned int ( + unsigned short) + GetPackSize unsigned int ( + short) + GetPackSize unsigned int ( + unsigned int) + GetPackSize unsigned int ( + int) + GetPackSize unsigned int ( + IDClass<_tagDataID,32,0>) + GetPackSize unsigned int ( + bool) + GetPackSize unsigned int ( + PackObj*) + PackObj::GetPackSize unsigned int ( void ) + PackObj::GetPackSize unsigned int ( void ) + Pack unsigned int ( + sockaddr_in, + void**, + unsigned int) + Pack unsigned int ( + unsigned int64, + void**, + unsigned int) + Pack unsigned int ( + int64, + void**, + unsigned int) + Pack unsigned int ( + float, + void**, + unsigned int) + Pack unsigned int ( + double, + void**, + unsigned int) + Pack unsigned int ( + unsigned long, + void**, + unsigned int) + Pack unsigned int ( + long, + void**, + unsigned int) + Pack unsigned int ( + unsigned char, + void**, + unsigned int) + Pack unsigned int ( + char, + void**, + unsigned int) + Pack unsigned int ( + unsigned short, + void**, + unsigned int) + Pack unsigned int ( + short, + void**, + unsigned int) + Pack unsigned int ( + unsigned int, + void**, + unsigned int) + Pack unsigned int ( + int, + void**, + unsigned int) + Pack unsigned int ( + IDClass<_tagDataID,32,0>, + void**, + unsigned int) + Pack unsigned int ( + bool, + void**, + unsigned int) + Pack unsigned int ( + PackObj*, + void**, + unsigned int) + Pack unsigned int ( + void**, + unsigned int) + UnPack int ( + sockaddr_in*, + void**, + unsigned int) + UnPack int ( + unsigned int64*, + void**, + unsigned int) + UnPack int ( + int64*, + void**, + unsigned int) + UnPack int ( + float*, + void**, + unsigned int) + UnPack int ( + double*, + void**, + unsigned int) + UnPack int ( + unsigned long*, + void**, + unsigned int) + UnPack int ( + long*, + void**, + unsigned int) + UnPack int ( + unsigned char*, + void**, + unsigned int) + UnPack int ( + char*, + void**, + unsigned int) + UnPack int ( + unsigned short*, + void**, + unsigned int) + UnPack int ( + short*, + void**, + unsigned int) + UnPack int ( + unsigned int*, + void**, + unsigned int) + UnPack int ( + int*, + void**, + unsigned int) + UnPack int ( + IDClass<_tagDataID,32,0>*, + void**, + unsigned int) + UnPack int ( + bool*, + void**, + unsigned int) + UnPack int ( + PackObj*, + void**, + unsigned int) + UnPack int ( + void**, + unsigned int) + PACK_TYPE int ( + sockaddr_in, + void**, + unsigned int*) + PACK_TYPE void ( + sockaddr_in, + void**) + PACK_TYPE int ( + unsigned int64, + void**, + unsigned int*) + PACK_TYPE void ( + unsigned int64, + void**) + PACK_TYPE int ( + int64, + void**, + unsigned int*) + PACK_TYPE void ( + int64, + void**) + PACK_TYPE int ( + float, + void**, + unsigned int*) + PACK_TYPE void ( + float, + void**) + PACK_TYPE int ( + double, + void**, + unsigned int*) + PACK_TYPE void ( + double, + void**) + PACK_TYPE int ( + unsigned long, + void**, + unsigned int*) + PACK_TYPE void ( + unsigned long, + void**) + PACK_TYPE int ( + long, + void**, + unsigned int*) + PACK_TYPE void ( + long, + void**) + PACK_TYPE int ( + unsigned char, + void**, + unsigned int*) + PACK_TYPE void ( + unsigned char, + void**) + PACK_TYPE int ( + char, + void**, + unsigned int*) + PACK_TYPE void ( + char, + void**) + PACK_TYPE int ( + unsigned short, + void**, + unsigned int*) + PACK_TYPE void ( + unsigned short, + void**) + PACK_TYPE int ( + short, + void**, + unsigned int*) + PACK_TYPE void ( + short, + void**) + PACK_TYPE int ( + unsigned int, + void**, + unsigned int*) + PACK_TYPE void ( + unsigned int, + void**) + PACK_TYPE int ( + int, + void**, + unsigned int*) + PACK_TYPE void ( + int, + void**) + PACK_TYPE int ( + IDClass<_tagDataID,32,0>, + void**, + unsigned int*) + PACK_TYPE void ( + IDClass<_tagDataID,32,0>, + void**) + PACK_TYPE int ( + bool, + void**, + unsigned int*) + PACK_TYPE void ( + bool, + void**) + UNPACK_TYPE int ( + sockaddr_in*, + void**, + unsigned int*) + UNPACK_TYPE void ( + sockaddr_in*, + void**) + UNPACK_TYPE int ( + unsigned int64*, + void**, + unsigned int*) + UNPACK_TYPE void ( + unsigned int64*, + void**) + UNPACK_TYPE int ( + int64*, + void**, + unsigned int*) + UNPACK_TYPE void ( + int64*, + void**) + UNPACK_TYPE int ( + float*, + void**, + unsigned int*) + UNPACK_TYPE void ( + float*, + void**) + UNPACK_TYPE int ( + double*, + void**, + unsigned int*) + UNPACK_TYPE void ( + double*, + void**) + PackObj::UNPACK_TYPE int ( + unsigned long*, + void**, + unsigned int*) + UNPACK_TYPE void ( + unsigned long*, + void**) + PackObj::UNPACK_TYPE int ( + long*, + void**, + unsigned int*) + UNPACK_TYPE void ( + long*, + void**) + UNPACK_TYPE int ( + unsigned char*, + void**, + unsigned int*) + UNPACK_TYPE void ( + unsigned char*, + void**) + UNPACK_TYPE int ( + char*, + void**, + unsigned int*) + UNPACK_TYPE void ( + char*, + void**) + UNPACK_TYPE int ( + unsigned short*, + void**, + unsigned int*) + UNPACK_TYPE void ( + unsigned short*, + void**) + UNPACK_TYPE int ( + short*, + void**, + unsigned int*) + UNPACK_TYPE void ( + short*, + void**) + UNPACK_TYPE int ( + unsigned int*, + void**, + unsigned int*) + UNPACK_TYPE void ( + unsigned int*, + void**) + PackObj::UNPACK_TYPE int ( + int*, + void**, + unsigned int*) + UNPACK_TYPE void ( + int*, + void**) + UNPACK_TYPE int ( + IDClass<_tagDataID,32,0>*, + void**, + unsigned int*) + UNPACK_TYPE void ( + IDClass<_tagDataID,32,0>*, + void**) + UNPACK_TYPE int ( + bool*, + void**, + unsigned int*) + UNPACK_TYPE void ( + bool*, + void**) + GET_PAD unsigned int ( + unsigned int) + PackObj::ALIGN_PTR int ( + void**, + unsigned int*) + PackObj::ALIGN_PTR unsigned int ( + void**) + ALIGN_PTR_UNPACK int ( + void**, + unsigned int*) + ALIGN_PTR_UNPACK int ( + void**) + PackObj::GET_SIZE_LEFT unsigned int ( + void*, + void*, + unsigned int) + PackObj::VERIFY_ADDR int ( + void*, + void*, + unsigned int) + __local_vftable_ctor_closure void ( void ) + __vecDelDtor void* ( + unsigned int) + Position::Position void ( + Position*) + Position::Position void ( void ) + Position::Position void ( + unsigned long, + Frame*) + +0x004 objcell_id : Uint4B + +0x008 frame : class Frame, 82 elements, 0x40 bytes + static_pack_size unsigned int ( void ) + Position::pack_size unsigned int ( void ) + min_pack_size unsigned int ( void ) + Position::Pack unsigned int ( + void**, + unsigned int) + Position::UnPack int ( + void**, + unsigned int) + Position::Serialize void ( + Archive*) + Position::PackSizeOrigin unsigned int ( void ) + Position::PackOrigin unsigned int ( + void**, + unsigned int) + Position::UnPackOrigin int ( + void**, + unsigned int) + Position::ToString unsigned int ( + char*, + unsigned int) + Position::ToDisplayString PStringBase ( void ) + Position::FromString int ( + char*) + get_height float ( void ) + set_height void ( + float) + Position::get_origin AC1Legacy::Vector3* ( void ) + get_origin AC1Legacy::Vector3* ( void ) + origin AC1Legacy::Vector3* ( void ) + Position::origin AC1Legacy::Vector3* ( void ) + set_origin void ( + Frame*) + set_origin void ( + AC1Legacy::Vector3*) + Position::get_outside_cell_id unsigned long ( void ) + Position::adjust_to_outside void ( void ) + get_cell_id unsigned long ( void ) + set_cell_id void ( + unsigned long) + set_frame void ( + Frame*) + get_frame Frame* ( void ) + get_frame Frame* ( void ) + GetFrame Frame* ( void ) + Position::distance float ( + Position*) + Position::xy_distance float ( + Position*) + Position::heading float ( + Position*) + pitch float ( + Position*) + set_rotate void ( + Frame*) + set_heading void ( + float) + get_heading float ( void ) + set_pitch void ( + float) + get_pitch float ( void ) + set_vector_heading void ( + AC1Legacy::Vector3*) + get_vector_heading AC1Legacy::Vector3 ( void ) + in_same_block int ( + Position*) + in_same_block int ( + unsigned long) + get_block_offset AC1Legacy::Vector3 ( + Position*) + get_block_offset AC1Legacy::Vector3 ( + unsigned long) + outside int ( void ) + IsOutside bool ( void ) + get_landblock_gid unsigned long ( void ) + combine void ( + Position*, + Frame*) + Position::subtract2 Frame ( + Position*) + Position::get_offset AC1Legacy::Vector3 ( + Position*, + AC1Legacy::Vector3*) + Position::get_offset AC1Legacy::Vector3 ( + Position*) + Position::localtolocal AC1Legacy::Vector3 ( + Position*, + AC1Legacy::Vector3*) + ComputeLocalToLocal AC1Legacy::Vector3 ( + Position*, + AC1Legacy::Vector3*) + localtoglobal AC1Legacy::Vector3 ( + AC1Legacy::Vector3*) + Position::localtoglobal AC1Legacy::Vector3 ( + Position*, + AC1Legacy::Vector3*) + Position::localtoglobal AC1Legacy::Vector3 ( + Position*) + ComputeLocalToGlobal AC1Legacy::Vector3 ( + AC1Legacy::Vector3*) + ComputeLocalToGlobal AC1Legacy::Vector3 ( + Position*, + AC1Legacy::Vector3*) + ComputeLocalToGlobal AC1Legacy::Vector3 ( + Position*) + globaltolocal AC1Legacy::Vector3 ( + AC1Legacy::Vector3*) + globaltolocal AC1Legacy::Vector3 ( + Position*, + AC1Legacy::Vector3*) + globaltolocal AC1Legacy::Vector3 ( + Position*) + Position::localtoglobalvec AC1Legacy::Vector3 ( + AC1Legacy::Vector3*) + Position::globaltolocalvec AC1Legacy::Vector3 ( + AC1Legacy::Vector3*) + add_local_offset void ( + AC1Legacy::Vector3*) + add_global_offset void ( + AC1Legacy::Vector3*) + Position::determine_quadrant unsigned long ( + float, + Position*) + operator== int ( + Position*) + operator!= int ( + Position*) + Position::cylinder_distance float ( + float, + float, + Position*, + float, + float, + Position*) + Position::cylinder_distance_no_z float ( + float, + Position*, + float, + Position*) + NotInWorld bool ( void ) + IsInWorld bool ( void ) + Position::IsValid int ( void ) + WithinBlocks int ( + unsigned long, + unsigned long, + int*) + NoCorpseRun int ( void ) + CoordsToPosition int ( + double, + double, + Position*) + ~Position void ( void ) + __local_vftable_ctor_closure void ( void ) + __vecDelDtor void* ( + unsigned int) +0:021> .printf "\n=== CPolygon ===\n" + +=== CPolygon === +0:021> dt -v acclient!CPolygon +class CPolygon, 45 elements, 0x30 bytes + +0x000 vertices : Ptr32 to Ptr32 to class CVertex, 14 elements, 0x20 bytes + +0x004 vertex_ids : Ptr32 to Uint2B + +0x008 screen : Ptr32 to Ptr32 to struct Vec2Dscreen, 7 elements, 0x10 bytes + +0x00c poly_id : Int2B + +0x00e num_pts : UChar + +0x00f stippling : Char + +0x010 sides_type : Int4B + +0x014 pos_uv_indices : Ptr32 to Char + +0x018 neg_uv_indices : Ptr32 to Char + +0x01c pos_surface : Uint2B + +0x01e neg_surface : Uint2B + +0x020 plane : class Plane, 39 elements, 0x10 bytes + CPolygon::make_plane void ( void ) + CPolygon::polygon_hits_sphere int ( + CSphere*, + AC1Legacy::Vector3*) + after_edge int ( + int, + int, + float, + CSphere*, + AC1Legacy::Vector3*) + before_edge int ( + int, + int, + float, + CSphere*, + AC1Legacy::Vector3*) + CPolygon::polygon_hits_sphere_slow_but_sure int ( + CSphere*, + AC1Legacy::Vector3*) + CPolygon void ( + CPolygon*) + CPolygon::CPolygon void ( void ) + ~CPolygon void ( void ) + get_num_pts unsigned char* ( void ) + get_vertex CVertex* ( + int) + CPolygon::check_walkable int ( + CSphere*, + AC1Legacy::Vector3*) + CPolygon::check_small_walkable int ( + CSphere*, + AC1Legacy::Vector3*) + CPolygon::find_crossed_edge int ( + CSphere*, + AC1Legacy::Vector3*, + AC1Legacy::Vector3*) + get_poly_id short ( void ) + get_plane Plane* ( void ) + TraceRay unsigned long ( + Ray*, + float*) + get_height float ( + AC1Legacy::Vector3) + CPolygon::point_in_polygon int ( + AC1Legacy::Vector3*) + CPolygon::polygon_hits_ray int ( + Ray*, + double*) + CPolygon::adjust_sphere_to_poly double ( + CSphere*, + AC1Legacy::Vector3*, + AC1Legacy::Vector3*) + CPolygon::adjust_sphere_to_plane int ( + SPHEREPATH*, + CSphere*, + AC1Legacy::Vector3*) + CPolygon::pos_hits_sphere int ( + CSphere*, + AC1Legacy::Vector3*, + AC1Legacy::Vector3*, + CPolygon**) + CPolygon::hits_sphere int ( + CSphere*) + CPolygon::walkable_hits_sphere int ( + SPHEREPATH*, + CSphere*, + AC1Legacy::Vector3*) + get_vertical_extent void ( + float*, + float*) + CPolygon::adjust_to_placement_poly void ( + CSphere*, + CSphere*, + float, + int, + int) + CPolygon::point_in_poly2D int ( + AC1Legacy::Vector3*, + Sidedness) + pack_size unsigned int ( void ) + CPolygon::Pack unsigned int ( + void**, + unsigned int) + CPolygon::UnPack int ( + void**, + unsigned int) + CPolygon::Destroy void ( void ) + =008450fc pack_verts : (null) + __vecDelDtor void* ( + unsigned int) +0:021> +class CPolygon, 45 elements, 0x30 bytes + +0x000 vertices : Ptr32 to Ptr32 to class CVertex, 14 elements, 0x20 bytes + +0x004 vertex_ids : Ptr32 to Uint2B + +0x008 screen : Ptr32 to Ptr32 to struct Vec2Dscreen, 7 elements, 0x10 bytes + +0x00c poly_id : Int2B + +0x00e num_pts : UChar + +0x00f stippling : Char + +0x010 sides_type : Int4B + +0x014 pos_uv_indices : Ptr32 to Char + +0x018 neg_uv_indices : Ptr32 to Char + +0x01c pos_surface : Uint2B + +0x01e neg_surface : Uint2B + +0x020 plane : class Plane, 39 elements, 0x10 bytes + CPolygon::make_plane void ( void ) + CPolygon::polygon_hits_sphere int ( + CSphere*, + AC1Legacy::Vector3*) + after_edge int ( + int, + int, + float, + CSphere*, + AC1Legacy::Vector3*) + before_edge int ( + int, + int, + float, + CSphere*, + AC1Legacy::Vector3*) + CPolygon::polygon_hits_sphere_slow_but_sure int ( + CSphere*, + AC1Legacy::Vector3*) + CPolygon void ( + CPolygon*) + CPolygon::CPolygon void ( void ) + ~CPolygon void ( void ) + get_num_pts unsigned char* ( void ) + get_vertex CVertex* ( + int) + CPolygon::check_walkable int ( + CSphere*, + AC1Legacy::Vector3*) + CPolygon::check_small_walkable int ( + CSphere*, + AC1Legacy::Vector3*) + CPolygon::find_crossed_edge int ( + CSphere*, + AC1Legacy::Vector3*, + AC1Legacy::Vector3*) + get_poly_id short ( void ) + get_plane Plane* ( void ) + TraceRay unsigned long ( + Ray*, + float*) + get_height float ( + AC1Legacy::Vector3) + CPolygon::point_in_polygon int ( + AC1Legacy::Vector3*) + CPolygon::polygon_hits_ray int ( + Ray*, + double*) + CPolygon::adjust_sphere_to_poly double ( + CSphere*, + AC1Legacy::Vector3*, + AC1Legacy::Vector3*) + CPolygon::adjust_sphere_to_plane int ( + SPHEREPATH*, + CSphere*, + AC1Legacy::Vector3*) + CPolygon::pos_hits_sphere int ( + CSphere*, + AC1Legacy::Vector3*, + AC1Legacy::Vector3*, + CPolygon**) + CPolygon::hits_sphere int ( + CSphere*) + CPolygon::walkable_hits_sphere int ( + SPHEREPATH*, + CSphere*, + AC1Legacy::Vector3*) + get_vertical_extent void ( + float*, + float*) + CPolygon::adjust_to_placement_poly void ( + CSphere*, + CSphere*, + float, + int, + int) + CPolygon::point_in_poly2D int ( + AC1Legacy::Vector3*, + Sidedness) + pack_size unsigned int ( void ) + CPolygon::Pack unsigned int ( + void**, + unsigned int) + CPolygon::UnPack int ( + void**, + unsigned int) + CPolygon::Destroy void ( void ) + =008450fc pack_verts : (null) + __vecDelDtor void* ( + unsigned int) +0:021> .printf "\n=== SPHEREPATH ===\n" + +=== SPHEREPATH === +0:021> dt -v acclient!SPHEREPATH +class SPHEREPATH, 135 elements, 0x250 bytes +Enum InsertType, 4 total enums + + +0x000 num_sphere : Uint4B + +0x004 local_sphere : Ptr32 to class CSphere, 42 elements, 0x10 bytes + +0x008 local_low_point : class AC1Legacy::Vector3, 42 elements, 0xc bytes + +0x014 global_sphere : Ptr32 to class CSphere, 42 elements, 0x10 bytes + +0x018 global_low_point : class AC1Legacy::Vector3, 42 elements, 0xc bytes + +0x024 localspace_sphere : Ptr32 to class CSphere, 42 elements, 0x10 bytes + +0x028 localspace_low_point : class AC1Legacy::Vector3, 42 elements, 0xc bytes + +0x034 localspace_curr_center : Ptr32 to class AC1Legacy::Vector3, 42 elements, 0xc bytes + +0x038 global_curr_center : Ptr32 to class AC1Legacy::Vector3, 42 elements, 0xc bytes + +0x03c localspace_pos : class Position, 85 elements, 0x48 bytes + +0x084 localspace_z : class AC1Legacy::Vector3, 42 elements, 0xc bytes + +0x090 begin_cell : Ptr32 to class CObjCell, 92 elements, 0xf8 bytes + +0x094 begin_pos : Ptr32 to class Position, 85 elements, 0x48 bytes + +0x098 end_pos : Ptr32 to class Position, 85 elements, 0x48 bytes + +0x09c curr_cell : Ptr32 to class CObjCell, 92 elements, 0xf8 bytes + +0x0a0 curr_pos : class Position, 85 elements, 0x48 bytes + +0x0e8 global_offset : class AC1Legacy::Vector3, 42 elements, 0xc bytes + +0x0f4 step_up : Int4B + +0x0f8 step_up_normal : class AC1Legacy::Vector3, 42 elements, 0xc bytes + +0x104 collide : Int4B + +0x108 check_cell : Ptr32 to class CObjCell, 92 elements, 0xf8 bytes + +0x10c check_pos : class Position, 85 elements, 0x48 bytes + +0x154 insert_type : Enum SPHEREPATH::InsertType, 4 total enums + + +0x158 step_down : Int4B + +0x15c backup : Enum SPHEREPATH::InsertType, 4 total enums + + +0x160 backup_cell : Ptr32 to class CObjCell, 92 elements, 0xf8 bytes + +0x164 backup_check_pos : class Position, 85 elements, 0x48 bytes + +0x1ac obstruction_ethereal : Int4B + +0x1b0 hits_interior_cell : Int4B + +0x1b4 bldg_check : Int4B + +0x1b8 walkable_allowance : Float + +0x1bc walk_interp : Float + +0x1c0 step_down_amt : Float + +0x1c4 walkable_check_pos : class CSphere, 42 elements, 0x10 bytes + +0x1d4 walkable : Ptr32 to class CPolygon, 45 elements, 0x30 bytes + +0x1d8 check_walkable : Int4B + +0x1dc walkable_up : class AC1Legacy::Vector3, 42 elements, 0xc bytes + +0x1e8 walkable_pos : class Position, 85 elements, 0x48 bytes + +0x230 walkable_scale : Float + +0x234 cell_array_valid : Int4B + +0x238 neg_step_up : Int4B + +0x23c neg_collision_normal : class AC1Legacy::Vector3, 42 elements, 0xc bytes + +0x248 neg_poly_hit : Int4B + +0x24c placement_allows_sliding : Int4B + SPHEREPATH::cache_global_sphere void ( + AC1Legacy::Vector3*) + SPHEREPATH void ( + SPHEREPATH*) + SPHEREPATH::SPHEREPATH void ( void ) + SPHEREPATH::~SPHEREPATH void ( void ) + SPHEREPATH::init void ( void ) + SPHEREPATH::init_sphere void ( + unsigned long, + CSphere*, + float) + SPHEREPATH::init_path void ( + CObjCell*, + Position*, + Position*) + set_cell_array_valid void ( + int) + get_cell_array_valid int ( void ) + get_hits_interior_cell int ( void ) + set_hits_interior_cell void ( + int) + get_bldg_check int ( void ) + set_bldg_check void ( + int) + get_localspace_z AC1Legacy::Vector3* ( void ) + SPHEREPATH::cache_global_curr_center void ( void ) + collide_with_point TransitionState ( + COLLISIONINFO*) + set_walkable_allowance void ( + float) + SPHEREPATH::is_walkable_allowable int ( + float) + SPHEREPATH::set_neg_poly_hit void ( + int, + AC1Legacy::Vector3*) + reset_neg_poly_hit void ( void ) + restore_check_cell void ( void ) + set_walk_interp void ( + float) + get_walk_interp float ( void ) + SPHEREPATH::save_check_pos void ( void ) + set_step_down_amt void ( + float) + get_step_down_amt float ( void ) + set_check_walkable void ( void ) + reset_check_walkable void ( void ) + is_check_walkable int ( void ) + SPHEREPATH::set_collide void ( + AC1Legacy::Vector3*) + SPHEREPATH::check_walkables int ( void ) + backup_check_cell void ( void ) + SPHEREPATH::restore_check_pos void ( void ) + is_collide int ( void ) + reset_collide void ( void ) + set_step_up void ( + AC1Legacy::Vector3*) + SPHEREPATH::step_up_slide TransitionState ( + OBJECTINFO*, + COLLISIONINFO*) + is_step_up int ( void ) + get_step_up_normal AC1Legacy::Vector3* ( void ) + reset_step_up void ( void ) + is_transition int ( void ) + is_placement int ( void ) + is_initial_placement int ( void ) + set_ethereal void ( + int) + is_obstruction_ethereal int ( void ) + is_step_down int ( void ) + set_step_down void ( + int) + can_slide int ( void ) + no_placement_sliding void ( void ) + SPHEREPATH::set_check_pos void ( + Position*, + CObjCell*) + SPHEREPATH::get_curr_pos_check_pos_block_offset AC1Legacy::Vector3 ( void ) + SPHEREPATH::set_walkable_check_pos void ( + CSphere*) + get_walkable_scale float ( void ) + SPHEREPATH::get_walkable_pos Position ( void ) + get_walkable_check_pos CSphere* ( void ) + reset_walkable void ( void ) + SPHEREPATH::set_walkable void ( + CSphere*, + CPolygon*, + AC1Legacy::Vector3*, + Position*, + float) + get_walkable CPolygon* ( void ) + set_curr_pos void ( + Position*, + CObjCell*) + SPHEREPATH::add_offset_to_check_pos void ( + AC1Legacy::Vector3*) + SPHEREPATH::add_offset_to_check_pos void ( + AC1Legacy::Vector3*, + float) + set_insert_type void ( + SPHEREPATH::InsertType) + set_to_placement void ( void ) + set_to_transition void ( void ) + restore_insert_type void ( void ) + get_global_offset AC1Legacy::Vector3* ( void ) + SPHEREPATH::adjust_check_pos void ( + unsigned long) + get_cell_id unsigned long ( void ) + get_check_pos Position* ( void ) + get_begin_pos Position* ( void ) + get_end_pos Position* ( void ) + get_curr_cell CObjCell* ( void ) + get_curr_pos Position* ( void ) + get_num_sphere unsigned long ( void ) + get_local_sphere CSphere* ( + unsigned long) + get_local_sphere CSphere* ( void ) + get_local_low_point AC1Legacy::Vector3* ( void ) + get_global_sphere CSphere* ( + unsigned long) + get_global_sphere CSphere* ( void ) + get_global_low_point AC1Legacy::Vector3* ( void ) + get_localspace_sphere CSphere* ( + unsigned long) + get_localspace_sphere CSphere* ( void ) + get_localspace_low_point AC1Legacy::Vector3* ( void ) + get_radius float ( void ) + SPHEREPATH::cache_localspace_sphere void ( + Position*, + float) + get_localspace_position Position* ( void ) + get_localspace_curr_center AC1Legacy::Vector3* ( + unsigned long) + get_global_curr_center AC1Legacy::Vector3* ( + unsigned long) + SPHEREPATH::precipice_slide TransitionState ( + COLLISIONINFO*) + __vecDelDtor void* ( + unsigned int) +0:021> +class SPHEREPATH, 135 elements, 0x250 bytes +Enum InsertType, 4 total enums + + +0x000 num_sphere : Uint4B + +0x004 local_sphere : Ptr32 to class CSphere, 42 elements, 0x10 bytes + +0x008 local_low_point : class AC1Legacy::Vector3, 42 elements, 0xc bytes + +0x014 global_sphere : Ptr32 to class CSphere, 42 elements, 0x10 bytes + +0x018 global_low_point : class AC1Legacy::Vector3, 42 elements, 0xc bytes + +0x024 localspace_sphere : Ptr32 to class CSphere, 42 elements, 0x10 bytes + +0x028 localspace_low_point : class AC1Legacy::Vector3, 42 elements, 0xc bytes + +0x034 localspace_curr_center : Ptr32 to class AC1Legacy::Vector3, 42 elements, 0xc bytes + +0x038 global_curr_center : Ptr32 to class AC1Legacy::Vector3, 42 elements, 0xc bytes + +0x03c localspace_pos : class Position, 85 elements, 0x48 bytes + +0x084 localspace_z : class AC1Legacy::Vector3, 42 elements, 0xc bytes + +0x090 begin_cell : Ptr32 to class CObjCell, 92 elements, 0xf8 bytes + +0x094 begin_pos : Ptr32 to class Position, 85 elements, 0x48 bytes + +0x098 end_pos : Ptr32 to class Position, 85 elements, 0x48 bytes + +0x09c curr_cell : Ptr32 to class CObjCell, 92 elements, 0xf8 bytes + +0x0a0 curr_pos : class Position, 85 elements, 0x48 bytes + +0x0e8 global_offset : class AC1Legacy::Vector3, 42 elements, 0xc bytes + +0x0f4 step_up : Int4B + +0x0f8 step_up_normal : class AC1Legacy::Vector3, 42 elements, 0xc bytes + +0x104 collide : Int4B + +0x108 check_cell : Ptr32 to class CObjCell, 92 elements, 0xf8 bytes + +0x10c check_pos : class Position, 85 elements, 0x48 bytes + +0x154 insert_type : Enum SPHEREPATH::InsertType, 4 total enums + + +0x158 step_down : Int4B + +0x15c backup : Enum SPHEREPATH::InsertType, 4 total enums + + +0x160 backup_cell : Ptr32 to class CObjCell, 92 elements, 0xf8 bytes + +0x164 backup_check_pos : class Position, 85 elements, 0x48 bytes + +0x1ac obstruction_ethereal : Int4B + +0x1b0 hits_interior_cell : Int4B + +0x1b4 bldg_check : Int4B + +0x1b8 walkable_allowance : Float + +0x1bc walk_interp : Float + +0x1c0 step_down_amt : Float + +0x1c4 walkable_check_pos : class CSphere, 42 elements, 0x10 bytes + +0x1d4 walkable : Ptr32 to class CPolygon, 45 elements, 0x30 bytes + +0x1d8 check_walkable : Int4B + +0x1dc walkable_up : class AC1Legacy::Vector3, 42 elements, 0xc bytes + +0x1e8 walkable_pos : class Position, 85 elements, 0x48 bytes + +0x230 walkable_scale : Float + +0x234 cell_array_valid : Int4B + +0x238 neg_step_up : Int4B + +0x23c neg_collision_normal : class AC1Legacy::Vector3, 42 elements, 0xc bytes + +0x248 neg_poly_hit : Int4B + +0x24c placement_allows_sliding : Int4B + SPHEREPATH::cache_global_sphere void ( + AC1Legacy::Vector3*) + SPHEREPATH void ( + SPHEREPATH*) + SPHEREPATH::SPHEREPATH void ( void ) + SPHEREPATH::~SPHEREPATH void ( void ) + SPHEREPATH::init void ( void ) + SPHEREPATH::init_sphere void ( + unsigned long, + CSphere*, + float) + SPHEREPATH::init_path void ( + CObjCell*, + Position*, + Position*) + set_cell_array_valid void ( + int) + get_cell_array_valid int ( void ) + get_hits_interior_cell int ( void ) + set_hits_interior_cell void ( + int) + get_bldg_check int ( void ) + set_bldg_check void ( + int) + get_localspace_z AC1Legacy::Vector3* ( void ) + SPHEREPATH::cache_global_curr_center void ( void ) + collide_with_point TransitionState ( + COLLISIONINFO*) + set_walkable_allowance void ( + float) + SPHEREPATH::is_walkable_allowable int ( + float) + SPHEREPATH::set_neg_poly_hit void ( + int, + AC1Legacy::Vector3*) + reset_neg_poly_hit void ( void ) + restore_check_cell void ( void ) + set_walk_interp void ( + float) + get_walk_interp float ( void ) + SPHEREPATH::save_check_pos void ( void ) + set_step_down_amt void ( + float) + get_step_down_amt float ( void ) + set_check_walkable void ( void ) + reset_check_walkable void ( void ) + is_check_walkable int ( void ) + SPHEREPATH::set_collide void ( + AC1Legacy::Vector3*) + SPHEREPATH::check_walkables int ( void ) + backup_check_cell void ( void ) + SPHEREPATH::restore_check_pos void ( void ) + is_collide int ( void ) + reset_collide void ( void ) + set_step_up void ( + AC1Legacy::Vector3*) + SPHEREPATH::step_up_slide TransitionState ( + OBJECTINFO*, + COLLISIONINFO*) + is_step_up int ( void ) + get_step_up_normal AC1Legacy::Vector3* ( void ) + reset_step_up void ( void ) + is_transition int ( void ) + is_placement int ( void ) + is_initial_placement int ( void ) + set_ethereal void ( + int) + is_obstruction_ethereal int ( void ) + is_step_down int ( void ) + set_step_down void ( + int) + can_slide int ( void ) + no_placement_sliding void ( void ) + SPHEREPATH::set_check_pos void ( + Position*, + CObjCell*) + SPHEREPATH::get_curr_pos_check_pos_block_offset AC1Legacy::Vector3 ( void ) + SPHEREPATH::set_walkable_check_pos void ( + CSphere*) + get_walkable_scale float ( void ) + SPHEREPATH::get_walkable_pos Position ( void ) + get_walkable_check_pos CSphere* ( void ) + reset_walkable void ( void ) + SPHEREPATH::set_walkable void ( + CSphere*, + CPolygon*, + AC1Legacy::Vector3*, + Position*, + float) + get_walkable CPolygon* ( void ) + set_curr_pos void ( + Position*, + CObjCell*) + SPHEREPATH::add_offset_to_check_pos void ( + AC1Legacy::Vector3*) + SPHEREPATH::add_offset_to_check_pos void ( + AC1Legacy::Vector3*, + float) + set_insert_type void ( + SPHEREPATH::InsertType) + set_to_placement void ( void ) + set_to_transition void ( void ) + restore_insert_type void ( void ) + get_global_offset AC1Legacy::Vector3* ( void ) + SPHEREPATH::adjust_check_pos void ( + unsigned long) + get_cell_id unsigned long ( void ) + get_check_pos Position* ( void ) + get_begin_pos Position* ( void ) + get_end_pos Position* ( void ) + get_curr_cell CObjCell* ( void ) + get_curr_pos Position* ( void ) + get_num_sphere unsigned long ( void ) + get_local_sphere CSphere* ( + unsigned long) + get_local_sphere CSphere* ( void ) + get_local_low_point AC1Legacy::Vector3* ( void ) + get_global_sphere CSphere* ( + unsigned long) + get_global_sphere CSphere* ( void ) + get_global_low_point AC1Legacy::Vector3* ( void ) + get_localspace_sphere CSphere* ( + unsigned long) + get_localspace_sphere CSphere* ( void ) + get_localspace_low_point AC1Legacy::Vector3* ( void ) + get_radius float ( void ) + SPHEREPATH::cache_localspace_sphere void ( + Position*, + float) + get_localspace_position Position* ( void ) + get_localspace_curr_center AC1Legacy::Vector3* ( + unsigned long) + get_global_curr_center AC1Legacy::Vector3* ( + unsigned long) + SPHEREPATH::precipice_slide TransitionState ( + COLLISIONINFO*) + __vecDelDtor void* ( + unsigned int) +0:021> .printf "\n=== CTransition ===\n" + +=== CTransition === +0:021> dt -v acclient!CTransition +class CTransition, 56 elements, 0x314 bytes + validate_check_pos TransitionState ( + char*) + =00841c5c transition_level : Int4B + +0x000 object_info : class OBJECTINFO, 40 elements, 0x20 bytes + +0x020 sphere_path : class SPHEREPATH, 135 elements, 0x250 bytes + +0x270 collision_info : class COLLISIONINFO, 57 elements, 0x84 bytes + +0x2f4 cell_array : class CELLARRAY, 19 elements, 0x1c bytes + CTransition::init void ( void ) + CTransition::insert_into_cell TransitionState ( + CObjCell*, + int) + CTransition::check_other_cells TransitionState ( + CObjCell*) + CTransition::calc_num_steps void ( + AC1Legacy::Vector3*, + AC1Legacy::Vector3*, + unsigned long*) + CTransition::adjust_offset AC1Legacy::Vector3 ( + AC1Legacy::Vector3*) + CTransition::find_placement_pos int ( void ) + CTransition::find_transitional_position int ( void ) + CTransition::transitional_insert TransitionState ( + int) + CTransition::validate_transition TransitionState ( + TransitionState, + int*) + CTransition::validate_placement_transition TransitionState ( + TransitionState, + int*) + CTransition::find_placement_position int ( void ) + placement_insert int ( + CObjCell*, + Position*, + AC1Legacy::Vector3*) + CTransition::placement_insert TransitionState ( void ) + CTransition::step_down int ( + float, + float) + CTransition::edge_slide int ( + TransitionState*, + float, + float) + CTransition::validate_placement TransitionState ( + TransitionState, + int) + +0x310 new_cell_ptr : Ptr32 to class CObjCell, 92 elements, 0xf8 bytes + CTransition void ( + CTransition*) + CTransition::CTransition void ( void ) + ~CTransition void ( void ) + get_object_info OBJECTINFO* ( void ) + get_sphere_path SPHEREPATH* ( void ) + get_sphere_path SPHEREPATH* ( void ) + get_collision_info COLLISIONINFO* ( void ) + get_collision_info COLLISIONINFO* ( void ) + SetNoLoadCells void ( + int) + set_new_cell void ( + CObjCell*) + CTransition::build_cell_array void ( + CObjCell**) + CTransition::makeTransition CTransition* ( void ) + CTransition::cleanupTransition void ( + CTransition*) + CTransition::init_object void ( + CPhysicsObj*, + int) + CTransition::init_sphere void ( + unsigned long, + CSphere*, + float) + CTransition::init_path void ( + CObjCell*, + Position*, + Position*) + no_placement_sliding void ( void ) + make_missile void ( + int) + CTransition::cliff_slide TransitionState ( + Plane*) + CTransition::init_contact_plane void ( + unsigned long, + Plane*, + int) + CTransition::init_last_known_contact_plane void ( + unsigned long, + Plane*, + int) + CTransition::init_sliding_normal void ( + AC1Legacy::Vector3*) + CTransition::find_valid_position int ( void ) + CTransition::check_collisions int ( + CPhysicsObj*) + get_valid_cell CObjCell* ( void ) + get_valid_pos Position* ( void ) + get_collision_normal int ( + AC1Legacy::Vector3*) + get_sliding_normal int ( + AC1Legacy::Vector3*) + get_contact_plane int ( + unsigned long*, + Plane*, + int*) + get_cell_array CELLARRAY* ( void ) + CTransition::step_up int ( + AC1Legacy::Vector3*) + CTransition::check_walkable int ( + float) + __vecDelDtor void* ( + unsigned int) +0:021> +class CTransition, 56 elements, 0x314 bytes + validate_check_pos TransitionState ( + char*) + =00841c5c transition_level : Int4B + +0x000 object_info : class OBJECTINFO, 40 elements, 0x20 bytes + +0x020 sphere_path : class SPHEREPATH, 135 elements, 0x250 bytes + +0x270 collision_info : class COLLISIONINFO, 57 elements, 0x84 bytes + +0x2f4 cell_array : class CELLARRAY, 19 elements, 0x1c bytes + CTransition::init void ( void ) + CTransition::insert_into_cell TransitionState ( + CObjCell*, + int) + CTransition::check_other_cells TransitionState ( + CObjCell*) + CTransition::calc_num_steps void ( + AC1Legacy::Vector3*, + AC1Legacy::Vector3*, + unsigned long*) + CTransition::adjust_offset AC1Legacy::Vector3 ( + AC1Legacy::Vector3*) + CTransition::find_placement_pos int ( void ) + CTransition::find_transitional_position int ( void ) + CTransition::transitional_insert TransitionState ( + int) + CTransition::validate_transition TransitionState ( + TransitionState, + int*) + CTransition::validate_placement_transition TransitionState ( + TransitionState, + int*) + CTransition::find_placement_position int ( void ) + placement_insert int ( + CObjCell*, + Position*, + AC1Legacy::Vector3*) + CTransition::placement_insert TransitionState ( void ) + CTransition::step_down int ( + float, + float) + CTransition::edge_slide int ( + TransitionState*, + float, + float) + CTransition::validate_placement TransitionState ( + TransitionState, + int) + +0x310 new_cell_ptr : Ptr32 to class CObjCell, 92 elements, 0xf8 bytes + CTransition void ( + CTransition*) + CTransition::CTransition void ( void ) + ~CTransition void ( void ) + get_object_info OBJECTINFO* ( void ) + get_sphere_path SPHEREPATH* ( void ) + get_sphere_path SPHEREPATH* ( void ) + get_collision_info COLLISIONINFO* ( void ) + get_collision_info COLLISIONINFO* ( void ) + SetNoLoadCells void ( + int) + set_new_cell void ( + CObjCell*) + CTransition::build_cell_array void ( + CObjCell**) + CTransition::makeTransition CTransition* ( void ) + CTransition::cleanupTransition void ( + CTransition*) + CTransition::init_object void ( + CPhysicsObj*, + int) + CTransition::init_sphere void ( + unsigned long, + CSphere*, + float) + CTransition::init_path void ( + CObjCell*, + Position*, + Position*) + no_placement_sliding void ( void ) + make_missile void ( + int) + CTransition::cliff_slide TransitionState ( + Plane*) + CTransition::init_contact_plane void ( + unsigned long, + Plane*, + int) + CTransition::init_last_known_contact_plane void ( + unsigned long, + Plane*, + int) + CTransition::init_sliding_normal void ( + AC1Legacy::Vector3*) + CTransition::find_valid_position int ( void ) + CTransition::check_collisions int ( + CPhysicsObj*) + get_valid_cell CObjCell* ( void ) + get_valid_pos Position* ( void ) + get_collision_normal int ( + AC1Legacy::Vector3*) + get_sliding_normal int ( + AC1Legacy::Vector3*) + get_contact_plane int ( + unsigned long*, + Plane*, + int*) + get_cell_array CELLARRAY* ( void ) + CTransition::step_up int ( + AC1Legacy::Vector3*) + CTransition::check_walkable int ( + float) + __vecDelDtor void* ( + unsigned int) +0:021> .printf "\n=== COLLISIONINFO ===\n" + +=== COLLISIONINFO === +0:021> dt -v acclient!COLLISIONINFO +class COLLISIONINFO, 57 elements, 0x84 bytes + +0x000 last_known_contact_plane_valid : Int4B + +0x004 last_known_contact_plane : class Plane, 39 elements, 0x10 bytes + +0x014 last_known_contact_plane_is_water : Int4B + +0x018 contact_plane_valid : Int4B + +0x01c contact_plane : class Plane, 39 elements, 0x10 bytes + +0x02c contact_plane_cell_id : Uint4B + +0x030 last_known_contact_plane_cell_id : Uint4B + +0x034 contact_plane_is_water : Int4B + +0x038 sliding_normal_valid : Int4B + +0x03c sliding_normal : class AC1Legacy::Vector3, 42 elements, 0xc bytes + +0x048 collision_normal_valid : Int4B + +0x04c collision_normal : class AC1Legacy::Vector3, 42 elements, 0xc bytes + +0x058 adjust_offset : class AC1Legacy::Vector3, 42 elements, 0xc bytes + +0x064 num_collide_object : Uint4B + +0x068 collide_object : class DArray, 17 elements, 0x10 bytes + +0x078 last_collided_object : Ptr32 to class CPhysicsObj, 510 elements, 0x178 bytes + +0x07c collided_with_environment : Int4B + +0x080 frames_stationary_fall : Int4B + COLLISIONINFO void ( + COLLISIONINFO*) + COLLISIONINFO void ( void ) + ~COLLISIONINFO void ( void ) + COLLISIONINFO::init void ( void ) + get_frames_stationary_fall int ( void ) + set_frames_stationary_fall void ( + int) + get_collision_normal AC1Legacy::Vector3* ( void ) + get_collision_normal int ( + AC1Legacy::Vector3*) + is_collision_normal_valid int ( void ) + COLLISIONINFO::set_collision_normal void ( + AC1Legacy::Vector3*) + invalidate_collision_normal void ( void ) + clone_last_known_contact_plane void ( void ) + update_last_known_contact_plane void ( void ) + get_sliding_normal AC1Legacy::Vector3* ( void ) + get_sliding_normal int ( + AC1Legacy::Vector3*) + is_sliding_normal_valid int ( void ) + COLLISIONINFO::set_sliding_normal void ( + AC1Legacy::Vector3*) + invalidate_sliding_normal void ( void ) + get_contact_plane Plane* ( void ) + get_contact_plane int ( + Plane*) + get_adjust_offset AC1Legacy::Vector3* ( void ) + is_last_known_contact_plane_valid int ( void ) + invalidate_last_known_contact_plane void ( void ) + get_last_known_contact_plane Plane* ( void ) + set_last_known_contact_plane void ( + Plane*, + int) + is_contact_plane_valid int ( void ) + is_contact_plane_water int ( void ) + get_contact_plane_cell_id unsigned long ( void ) + set_contact_plane_cell_id void ( + unsigned long) + set_last_known_contact_plane_cell_id void ( + unsigned long) + COLLISIONINFO::set_contact_plane void ( + Plane*, + int) + invalidate_contact_plane void ( void ) + get_num_collide_object unsigned long ( void ) + get_collide_object CPhysicsObj* ( void ) + get_collide_object CPhysicsObj* ( + unsigned long) + set_collided_with_environment void ( void ) + did_collide_with_environment int ( void ) + COLLISIONINFO::add_object void ( + CPhysicsObj*, + TransitionState) + __vecDelDtor void* ( + unsigned int) +0:021> +class COLLISIONINFO, 57 elements, 0x84 bytes + +0x000 last_known_contact_plane_valid : Int4B + +0x004 last_known_contact_plane : class Plane, 39 elements, 0x10 bytes + +0x014 last_known_contact_plane_is_water : Int4B + +0x018 contact_plane_valid : Int4B + +0x01c contact_plane : class Plane, 39 elements, 0x10 bytes + +0x02c contact_plane_cell_id : Uint4B + +0x030 last_known_contact_plane_cell_id : Uint4B + +0x034 contact_plane_is_water : Int4B + +0x038 sliding_normal_valid : Int4B + +0x03c sliding_normal : class AC1Legacy::Vector3, 42 elements, 0xc bytes + +0x048 collision_normal_valid : Int4B + +0x04c collision_normal : class AC1Legacy::Vector3, 42 elements, 0xc bytes + +0x058 adjust_offset : class AC1Legacy::Vector3, 42 elements, 0xc bytes + +0x064 num_collide_object : Uint4B + +0x068 collide_object : class DArray, 17 elements, 0x10 bytes + +0x078 last_collided_object : Ptr32 to class CPhysicsObj, 510 elements, 0x178 bytes + +0x07c collided_with_environment : Int4B + +0x080 frames_stationary_fall : Int4B + COLLISIONINFO void ( + COLLISIONINFO*) + COLLISIONINFO void ( void ) + ~COLLISIONINFO void ( void ) + COLLISIONINFO::init void ( void ) + get_frames_stationary_fall int ( void ) + set_frames_stationary_fall void ( + int) + get_collision_normal AC1Legacy::Vector3* ( void ) + get_collision_normal int ( + AC1Legacy::Vector3*) + is_collision_normal_valid int ( void ) + COLLISIONINFO::set_collision_normal void ( + AC1Legacy::Vector3*) + invalidate_collision_normal void ( void ) + clone_last_known_contact_plane void ( void ) + update_last_known_contact_plane void ( void ) + get_sliding_normal AC1Legacy::Vector3* ( void ) + get_sliding_normal int ( + AC1Legacy::Vector3*) + is_sliding_normal_valid int ( void ) + COLLISIONINFO::set_sliding_normal void ( + AC1Legacy::Vector3*) + invalidate_sliding_normal void ( void ) + get_contact_plane Plane* ( void ) + get_contact_plane int ( + Plane*) + get_adjust_offset AC1Legacy::Vector3* ( void ) + is_last_known_contact_plane_valid int ( void ) + invalidate_last_known_contact_plane void ( void ) + get_last_known_contact_plane Plane* ( void ) + set_last_known_contact_plane void ( + Plane*, + int) + is_contact_plane_valid int ( void ) + is_contact_plane_water int ( void ) + get_contact_plane_cell_id unsigned long ( void ) + set_contact_plane_cell_id void ( + unsigned long) + set_last_known_contact_plane_cell_id void ( + unsigned long) + COLLISIONINFO::set_contact_plane void ( + Plane*, + int) + invalidate_contact_plane void ( void ) + get_num_collide_object unsigned long ( void ) + get_collide_object CPhysicsObj* ( void ) + get_collide_object CPhysicsObj* ( + unsigned long) + set_collided_with_environment void ( void ) + did_collide_with_environment int ( void ) + COLLISIONINFO::add_object void ( + CPhysicsObj*, + TransitionState) + __vecDelDtor void* ( + unsigned int) +0:021> .printf "\n=== OBJECTINFO ===\n" + +=== OBJECTINFO === +0:021> dt -v acclient!OBJECTINFO +class ObjectInfo, 2 elements, 0x8 bytes + +0x000 object_id : Uint4B + +0x004 hit_location : Uint4B +0:021> +class ObjectInfo, 2 elements, 0x8 bytes + +0x000 object_id : Uint4B + +0x004 hit_location : Uint4B +0:021> .printf "\n===== Done =====\n" + +===== Done ===== +0:021> + +===== Done ===== +0:021> qd +quit: +NatVis script unloaded from 'C:\Program Files (x86)\Windows Kits\10\Debuggers\x86\Visualizers\atlmfc.natvis' +NatVis script unloaded from 'C:\Program Files (x86)\Windows Kits\10\Debuggers\x86\Visualizers\concurrency.natvis' +NatVis script unloaded from 'C:\Program Files (x86)\Windows Kits\10\Debuggers\x86\Visualizers\cpp_rest.natvis' +NatVis script unloaded from 'C:\Program Files (x86)\Windows Kits\10\Debuggers\x86\Visualizers\ObjectiveC.natvis' +NatVis script unloaded from 'C:\Program Files (x86)\Windows Kits\10\Debuggers\x86\Visualizers\stl.natvis' +NatVis script unloaded from 'C:\Program Files (x86)\Windows Kits\10\Debuggers\x86\Visualizers\Windows.Data.Json.natvis' +NatVis script unloaded from 'C:\Program Files (x86)\Windows Kits\10\Debuggers\x86\Visualizers\Windows.Devices.Geolocation.natvis' +NatVis script unloaded from 'C:\Program Files (x86)\Windows Kits\10\Debuggers\x86\Visualizers\Windows.Devices.Sensors.natvis' +NatVis script unloaded from 'C:\Program Files (x86)\Windows Kits\10\Debuggers\x86\Visualizers\Windows.Media.natvis' +NatVis script unloaded from 'C:\Program Files (x86)\Windows Kits\10\Debuggers\x86\Visualizers\windows.natvis' +NatVis script unloaded from 'C:\Program Files (x86)\Windows Kits\10\Debuggers\x86\Visualizers\winrt.natvis'