diff --git a/config/SZBE69/objects.json b/config/SZBE69/objects.json index 0394f2b5..b2c7a6e8 100644 --- a/config/SZBE69/objects.json +++ b/config/SZBE69/objects.json @@ -219,7 +219,16 @@ "system/utl/Symbols.cpp": "NonMatching", "system/utl/Symbols2.cpp": "NonMatching", "system/utl/Symbols3.cpp": "NonMatching", - "system/utl/Symbols4.cpp": "NonMatching" + "system/utl/Symbols4.cpp": "NonMatching", + + "system/world/CameraManager.cpp": "NonMatching", + "system/world/CameraShot.cpp": "NonMatching", + "system/world/ColorPalette.cpp": "NonMatching", + "system/world/Crowd.cpp": "NonMatching", + "system/world/Dir.cpp": "NonMatching", + "system/world/FreeCamera.cpp": "NonMatching", + "system/world/LightHue.cpp": "NonMatching", + "system/world/LightPreset.cpp": "NonMatching" } }, "RVL_SDK": { diff --git a/config/SZBE69/splits.txt b/config/SZBE69/splits.txt index 61fa0699..0bc0011e 100644 --- a/config/SZBE69/splits.txt +++ b/config/SZBE69/splits.txt @@ -1351,17 +1351,32 @@ system/ui/UIGuide.cpp: system/ui/Utl.cpp: .text start:0x8057D224 end:0x8057D398 -rb3/unknown/805/unk_8057464C.cpp: - .text start:0x8057D398 end:0x80581A8C +system/world/CameraManager.cpp: + .text start:0x8057D398 end:0x80581A9C + .ctors start:0x807EFFCC end:0x807EFFD0 + +system/world/CameraShot.cpp: + .text start:0x80581A9C end:0x8058CD34 system/world/Crowd.cpp: - .text start:0x8058D868 end:0x80597134 + .text start:0x8058CD34 end:0x80597134 -rb3/colorpalette.cpp: +system/world/ColorPalette.cpp: .text start:0x80597134 end:0x80598310 -rb3/stubs/stubonef.cpp: - .text start:0x8059FF1C end:0x8059FF28 +system/world/Dir.cpp: + .text start:0x80598310 end:0x8059FD9C + .ctors start:0x807EFFD0 end:0x807EFFD4 + +system/world/FreeCamera.cpp: + .text start:0x8059FD9C end:0x805A0734 + +system/world/LightPreset.cpp: + .text start:0x805A0734 end:0x805AECCC + .ctors start:0x807EFFD4 end:0x807EFFD8 + +system/world/LightHue.cpp: + .text start:0x805AECCC end:0x805B04EC system/rndobj/Anim.cpp: .text start:0x805C6814 end:0x805C8850 diff --git a/config/SZBE69/symbols.txt b/config/SZBE69/symbols.txt index ed8a677a..f2c3e68b 100644 --- a/config/SZBE69/symbols.txt +++ b/config/SZBE69/symbols.txt @@ -930,8 +930,8 @@ fn_8000FF10 = .text:0x8000FF10; // type:function size:0x50 MaxEq__FRfRCf_b = .text:0x8000FF60; // type:function size:0x24 fn_8000FF84 = .text:0x8000FF84; // type:function size:0x44 MergedGet0xC__FPv = .text:0x8000FFC8; // type:function size:0x8 -FirstFromStart__35KeylessHashFv = .text:0x8000FFD0; // type:function size:0x8 -FirstFromNext__35KeylessHashFPQ29ObjectDir5Entry = .text:0x8000FFD8; // type:function size:0x8 +Begin__35KeylessHashFv = .text:0x8000FFD0; // type:function size:0x8 +Next__35KeylessHashFPQ29ObjectDir5Entry = .text:0x8000FFD8; // type:function size:0x8 __ct__7MessageF6Symbol = .text:0x8000FFE0; // type:function size:0x9C scope:weak IsTransitioning__9UIManagerCFv = .text:0x8001007C; // type:function size:0x10 __ct__7MessageF6SymbolRC8DataNode = .text:0x8001008C; // type:function size:0xB4 scope:weak @@ -5994,7 +5994,7 @@ fn_800A8CBC = .text:0x800A8CBC; // type:function size:0x5C fn_800A8D18 = .text:0x800A8D18; // type:function size:0x28 fn_800A8D40 = .text:0x800A8D40; // type:function size:0x68 fn_800A8DA8 = .text:0x800A8DA8; // type:function size:0x40 -fn_800A8DE8 = .text:0x800A8DE8; // type:function size:0x14 +end__Q211stlpmtx_std111_Vector_impl>Fv = .text:0x800A8DE8; // type:function size:0x14 fn_800A8DFC = .text:0x800A8DFC; // type:function size:0x30 fn_800A8E2C = .text:0x800A8E2C; // type:function size:0x30 fn_800A8E5C = .text:0x800A8E5C; // type:function size:0x40 @@ -6027,13 +6027,13 @@ fn_800A990C = .text:0x800A990C; // type:function size:0x58 fn_800A9964 = .text:0x800A9964; // type:function size:0x80 fn_800A99E4 = .text:0x800A99E4; // type:function size:0x80 fn_800A9A64 = .text:0x800A9A64; // type:function size:0x58 -fn_800A9ABC = .text:0x800A9ABC; // type:function size:0x10 +deallocate__Q211stlpmtx_std45StlNodeAllocCFPQ211LightPreset14SpotlightEntryUl = .text:0x800A9ABC; // type:function size:0x10 fn_800A9ACC = .text:0x800A9ACC; // type:function size:0x54 fn_800A9B20 = .text:0x800A9B20; // type:function size:0x5C fn_800A9B7C = .text:0x800A9B7C; // type:function size:0x6C fn_800A9BE8 = .text:0x800A9BE8; // type:function size:0x28 -fn_800A9C10 = .text:0x800A9C10; // type:function size:0x10 -fn_800A9C20 = .text:0x800A9C20; // type:function size:0xC +__pp__Q211stlpmtx_std50reverse_iteratorFv = .text:0x800A9C10; // type:function size:0x10 +__ml__Q211stlpmtx_std50reverse_iteratorCFv = .text:0x800A9C20; // type:function size:0xC fn_800A9C2C = .text:0x800A9C2C; // type:function size:0x8 fn_800A9C34 = .text:0x800A9C34; // type:function size:0x3C Tell__9BufStreamFv = .text:0x800A9C70; // type:function size:0x8 @@ -6148,7 +6148,7 @@ fn_800ABB40 = .text:0x800ABB40; // type:function size:0x44 end__Q211stlpmtx_std89vector>Fv = .text:0x800ABB84; // type:function size:0x14 fn_800ABB98 = .text:0x800ABB98; // type:function size:0x30 GetNetMessageByteCode__17NetMessageFactoryCF6String = .text:0x800ABBC8; // type:function size:0xA0 -fn_800ABC68 = .text:0x800ABC68; // type:function size:0x10 +__vc__Q211stlpmtx_std117vector>FUl = .text:0x800ABC68; // type:function size:0x10 fn_800ABC78 = .text:0x800ABC78; // type:function size:0x50 fn_800ABCC8 = .text:0x800ABCC8; // type:function size:0x114 fn_800ABDDC = .text:0x800ABDDC; // type:function size:0x60 @@ -6158,9 +6158,9 @@ fn_800ABEA8 = .text:0x800ABEA8; // type:function size:0x54 fn_800ABEFC = .text:0x800ABEFC; // type:function size:0x5C fn_800ABF58 = .text:0x800ABF58; // type:function size:0x6C fn_800ABFC4 = .text:0x800ABFC4; // type:function size:0x28 -fn_800ABFEC = .text:0x800ABFEC; // type:function size:0x10 +__pp__Q211stlpmtx_std56reverse_iteratorFv = .text:0x800ABFEC; // type:function size:0x10 fn_800ABFFC = .text:0x800ABFFC; // type:function size:0x8 -fn_800AC004 = .text:0x800AC004; // type:function size:0xC +__ml__Q211stlpmtx_std56reverse_iteratorCFv = .text:0x800AC004; // type:function size:0xC fn_800AC010 = .text:0x800AC010; // type:function size:0x8 fn_800AC018 = .text:0x800AC018; // type:function size:0x3C fn_800AC054 = .text:0x800AC054; // type:function size:0x5C @@ -6345,7 +6345,7 @@ Type__21RemovingRemoteUserMsgFv = .text:0x800B1164; // type:function size:0x4C fn_800B11B0 = .text:0x800B11B0; // type:function size:0x50 fn_800B1200 = .text:0x800B1200; // type:function size:0x110 fn_800B1310 = .text:0x800B1310; // type:function size:0x24 -fn_800B1334 = .text:0x800B1334; // type:function size:0xD4 +__find__11stlpmtx_stdFPP10RndEnvironPP10RndEnvironRCP10RndEnvironRCQ211stlpmtx_std26random_access_iterator_tag_PP10RndEnviron = .text:0x800B1334; // type:function size:0xD4 OnMsg__10NetSessionFRC19BeginArbitrationMsg = .text:0x800B1408; // type:function size:0x64 OnMsg__10NetSessionFRC22FinishedArbitrationMsg = .text:0x800B146C; // type:function size:0x40 SetDoneArbitrating__10NetSessionFi = .text:0x800B14AC; // type:function size:0xB0 @@ -6618,7 +6618,7 @@ fn_800B8648 = .text:0x800B8648; // type:function size:0x58 fn_800B86A0 = .text:0x800B86A0; // type:function size:0x70 fn_800B8710 = .text:0x800B8710; // type:function size:0x20 fn_800B8730 = .text:0x800B8730; // type:function size:0x80 -fn_800B87B0 = .text:0x800B87B0; // type:function size:0x10 +__vc__Q211stlpmtx_std105vector>FUl = .text:0x800B87B0; // type:function size:0x10 fn_800B87C0 = .text:0x800B87C0; // type:function size:0x44 fn_800B8804 = .text:0x800B8804; // type:function size:0x58 Save__14JoinRequestMsgCFR9BinStream = .text:0x800B885C; // type:function size:0xD4 @@ -7308,8 +7308,8 @@ fn_800CD724 = .text:0x800CD724; // type:function size:0x54 fn_800CD778 = .text:0x800CD778; // type:function size:0x5C fn_800CD7D4 = .text:0x800CD7D4; // type:function size:0x6C fn_800CD840 = .text:0x800CD840; // type:function size:0x28 -fn_800CD868 = .text:0x800CD868; // type:function size:0x10 -fn_800CD878 = .text:0x800CD878; // type:function size:0xC +__pp__Q211stlpmtx_std52reverse_iteratorFv = .text:0x800CD868; // type:function size:0x10 +__ml__Q211stlpmtx_std52reverse_iteratorCFv = .text:0x800CD878; // type:function size:0xC fn_800CD884 = .text:0x800CD884; // type:function size:0x8 fn_800CD88C = .text:0x800CD88C; // type:function size:0x3C end__Q211stlpmtx_std81vector<17Key,Us,Q211stlpmtx_std33StlNodeAlloc<17Key>>Fv = .text:0x800CD8C8; // type:function size:0x14 @@ -7388,10 +7388,10 @@ fn_800CEC84 = .text:0x800CEC84; // type:function size:0x68 fn_800CECEC = .text:0x800CECEC; // type:function size:0x188 fn_800CEE74 = .text:0x800CEE74; // type:function size:0x4 fn_800CEE78 = .text:0x800CEE78; // type:function size:0x4F0 -fn_800CF368 = .text:0x800CF368; // type:function size:0x8 +MergedGet0x48__FPv = .text:0x800CF368; // type:function size:0x8 Min__Fii_i = .text:0x800CF370; // type:function size:0x10 __vc__Q211stlpmtx_std77vector>FUl = .text:0x800CF380; // type:function size:0x10 -fn_800CF390 = .text:0x800CF390; // type:function size:0x10 +__vc__Q211stlpmtx_std109vector>FUl = .text:0x800CF390; // type:function size:0x10 fn_800CF3A0 = .text:0x800CF3A0; // type:function size:0x8 fn_800CF3A8 = .text:0x800CF3A8; // type:function size:0xB0 fn_800CF458 = .text:0x800CF458; // type:function size:0x4 @@ -7523,7 +7523,7 @@ fn_800D3078 = .text:0x800D3078; // type:function size:0x20 fn_800D3098 = .text:0x800D3098; // type:function size:0x1C8 fn_800D3260 = .text:0x800D3260; // type:function size:0x18 fn_800D3278 = .text:0x800D3278; // type:function size:0x18 -Maximum__Fii = .text:0x800D3290; // type:function size:0x10 +Max__Fii_i = .text:0x800D3290; // type:function size:0x10 fn_800D32A0 = .text:0x800D32A0; // type:function size:0xD8 fn_800D3378 = .text:0x800D3378; // type:function size:0x44 fn_800D33BC = .text:0x800D33BC; // type:function size:0x1C8 @@ -7851,7 +7851,7 @@ fn_800DAF00 = .text:0x800DAF00; // type:function size:0x40 fn_800DAF40 = .text:0x800DAF40; // type:function size:0xC fn_800DAF4C = .text:0x800DAF4C; // type:function size:0x100 __as__34ObjPtr<13RndAnimatable,9ObjectDir>FP13RndAnimatable = .text:0x800DB04C; // type:function size:0x6C -fn_800DB0B8 = .text:0x800DB0B8; // type:function size:0xA0 +Find<13RndAnimatable>__9ObjectDirFPCcb_P13RndAnimatable = .text:0x800DB0B8; // type:function size:0xA0 Fail__9NetStreamFv = .text:0x800DB158; // type:function size:0x8 fn_800DB160 = .text:0x800DB160; // type:function size:0xC0 fn_800DB220 = .text:0x800DB220; // type:function size:0x60 @@ -8412,7 +8412,7 @@ fn_800E9BA4 = .text:0x800E9BA4; // type:function size:0x38 fn_800E9BDC = .text:0x800E9BDC; // type:function size:0x8 fn_800E9BE4 = .text:0x800E9BE4; // type:function size:0xC fn_800E9BF0 = .text:0x800E9BF0; // type:function size:0x148 -fn_800E9D38 = .text:0x800E9D38; // type:function size:0x10 +__vc__Q211stlpmtx_std103vector>FUl = .text:0x800E9D38; // type:function size:0x10 fn_800E9D48 = .text:0x800E9D48; // type:function size:0x58 fn_800E9DA0 = .text:0x800E9DA0; // type:function size:0xA0 fn_800E9E40 = .text:0x800E9E40; // type:function size:0x68 @@ -8463,17 +8463,17 @@ fn_800EB174 = .text:0x800EB174; // type:function size:0x58 fn_800EB1CC = .text:0x800EB1CC; // type:function size:0x80 fn_800EB24C = .text:0x800EB24C; // type:function size:0x80 fn_800EB2CC = .text:0x800EB2CC; // type:function size:0x58 -fn_800EB324 = .text:0x800EB324; // type:function size:0x10 +deallocate__Q211stlpmtx_std44StlNodeAllocCFPQ211LightPreset13EnvLightEntryUl = .text:0x800EB324; // type:function size:0x10 fn_800EB334 = .text:0x800EB334; // type:function size:0x54 fn_800EB388 = .text:0x800EB388; // type:function size:0x5C fn_800EB3E4 = .text:0x800EB3E4; // type:function size:0x6C fn_800EB450 = .text:0x800EB450; // type:function size:0x28 -fn_800EB478 = .text:0x800EB478; // type:function size:0x10 +__pp__Q211stlpmtx_std49reverse_iteratorFv = .text:0x800EB478; // type:function size:0x10 fn_800EB488 = .text:0x800EB488; // type:function size:0x8 -fn_800EB490 = .text:0x800EB490; // type:function size:0xC +__ml__Q211stlpmtx_std49reverse_iteratorCFv = .text:0x800EB490; // type:function size:0xC fn_800EB49C = .text:0x800EB49C; // type:function size:0x8 fn_800EB4A4 = .text:0x800EB4A4; // type:function size:0x3C -fn_800EB4E0 = .text:0x800EB4E0; // type:function size:0x14 +end__Q211stlpmtx_std109_Vector_impl>Fv = .text:0x800EB4E0; // type:function size:0x14 fn_800EB4F4 = .text:0x800EB4F4; // type:function size:0x80 fn_800EB574 = .text:0x800EB574; // type:function size:0x80 fn_800EB5F4 = .text:0x800EB5F4; // type:function size:0x4 @@ -10096,7 +10096,7 @@ IsLoaded__9GamePanelFv = .text:0x8011C360; // type:function size:0x94 Unload__9GamePanelFv = .text:0x8011C3F4; // type:function size:0xB8 Enter__9GamePanelFv = .text:0x8011C4AC; // type:function size:0xE8 SetScreenRect__6RndCamFRCQ23Hmx4Rect = .text:0x8011C594; // type:function size:0x38 -fn_8011C5CC = .text:0x8011C5CC; // type:function size:0x8 +GetCam__8PanelDirCFv = .text:0x8011C5CC; // type:function size:0x8 fn_8011C5D4 = .text:0x8011C5D4; // type:function size:0x8 Exit__9GamePanelFv = .text:0x8011C5DC; // type:function size:0xE4 fn_8011C6C0 = .text:0x8011C6C0; // type:function size:0xB8 @@ -13809,7 +13809,7 @@ fn_801895F0 = .text:0x801895F0; // type:function size:0x60 fn_80189650 = .text:0x80189650; // type:function size:0x58 fn_801896A8 = .text:0x801896A8; // type:function size:0x58 fn_80189700 = .text:0x80189700; // type:function size:0x50 -fn_80189750 = .text:0x80189750; // type:function size:0x58 +__dt__Q211stlpmtx_std93vector,Us,Q211stlpmtx_std39StlNodeAlloc>>Fv = .text:0x80189750; // type:function size:0x58 fn_801897A8 = .text:0x801897A8; // type:function size:0x80 fn_80189828 = .text:0x80189828; // type:function size:0x80 fn_801898A8 = .text:0x801898A8; // type:function size:0x58 @@ -13869,7 +13869,7 @@ fn_8018A940 = .text:0x8018A940; // type:function size:0x70 fn_8018A9B0 = .text:0x8018A9B0; // type:function size:0x44 fn_8018A9F4 = .text:0x8018A9F4; // type:function size:0x3C fn_8018AA30 = .text:0x8018AA30; // type:function size:0x70 -fn_8018AAA0 = .text:0x8018AAA0; // type:function size:0x30 +__ct__Q211stlpmtx_std93vector,Us,Q211stlpmtx_std39StlNodeAlloc>>FRCQ211stlpmtx_std39StlNodeAlloc> = .text:0x8018AAA0; // type:function size:0x30 fn_8018AAD0 = .text:0x8018AAD0; // type:function size:0x30 fn_8018AB00 = .text:0x8018AB00; // type:function size:0x40 fn_8018AB40 = .text:0x8018AB40; // type:function size:0x44 @@ -17111,7 +17111,7 @@ Lock__9CharCacheFbb = .text:0x801F08EC; // type:function size:0x6C Handle__9CharCacheFP9DataArrayb = .text:0x801F0958; // type:function size:0x208 OnGetPatchTex__9CharCacheFP9DataArray = .text:0x801F0B60; // type:function size:0x3B0 Obj<6RndTex>__8DataNodeCFPC9DataArray_P6RndTex = .text:0x801F0F10; // type:function size:0x3C -fn_801F0F4C = .text:0x801F0F4C; // type:function size:0xA0 +Find<6RndTex>__9ObjectDirFPCcb_P6RndTex = .text:0x801F0F4C; // type:function size:0xA0 fn_801F0FEC = .text:0x801F0FEC; // type:function size:0x8 fn_801F0FF4 = .text:0x801F0FF4; // type:function size:0x3C fn_801F1030 = .text:0x801F1030; // type:function size:0xA0 @@ -17254,7 +17254,7 @@ fn_801F5108 = .text:0x801F5108; // type:function size:0x44 fn_801F514C = .text:0x801F514C; // type:function size:0x3C fn_801F5188 = .text:0x801F5188; // type:function size:0x70 Load__16ChooseColorPanelFv = .text:0x801F51F8; // type:function size:0x140 -fn_801F5338 = .text:0x801F5338; // type:function size:0x10 +__vc__Q211stlpmtx_std91vector>CFUl = .text:0x801F5338; // type:function size:0x10 Enter__16ChooseColorPanelFv = .text:0x801F5348; // type:function size:0x4 Poll__16ChooseColorPanelFv = .text:0x801F534C; // type:function size:0x34 Draw__16ChooseColorPanelFv = .text:0x801F5380; // type:function size:0x4 @@ -17391,7 +17391,7 @@ Exit__11ClosetPanelFv = .text:0x801F8C84; // type:function size:0x34 Exiting__11ClosetPanelFv = .text:0x801F8CB8; // type:function size:0x54 Unload__11ClosetPanelFv = .text:0x801F8D0C; // type:function size:0x3C fn_801F8D48 = .text:0x801F8D48; // type:function size:0x8 -fn_801F8D50 = .text:0x801F8D50; // type:function size:0x8 +CurrentShot__13CameraManagerCFv = .text:0x801F8D50; // type:function size:0x8 GotoShot__11ClosetPanelF6Symbol = .text:0x801F8D58; // type:function size:0xC4 fn_801F8E1C = .text:0x801F8E1C; // type:function size:0xA0 fn_801F8EBC = .text:0x801F8EBC; // type:function size:0x1F4 @@ -23840,7 +23840,7 @@ __ct__5Rand2Fi = .text:0x802DDE34; // type:function size:0x28 Int__5Rand2Fv = .text:0x802DDE5C; // type:function size:0x44 fn_802DDEA0 = .text:0x802DDEA0; // type:function size:0x58 ToQuat__9ShortQuatCFRQ23Hmx4Quat = .text:0x802DDEF8; // type:function size:0xA4 -__as__14ShortTransformFRC9Transform = .text:0x802DDF9C; // type:function size:0x44 +Set__16TransformNoScaleFRC9Transform = .text:0x802DDF9C; // type:function size:0x44 Set__9ShortQuatFRCQ23Hmx4Quat = .text:0x802DDFE0; // type:function size:0xF0 __as__14ShortTransformFRC14ShortTransform = .text:0x802DE0D0; // type:function size:0x44 __as__9ShortQuatFRC9ShortQuat = .text:0x802DE114; // type:function size:0x24 @@ -23848,7 +23848,7 @@ Set__9ShortQuatFRCQ23Hmx7Matrix3 = .text:0x802DE138; // type:function size:0x3C __ct__Q23Hmx4QuatFRCQ23Hmx7Matrix3 = .text:0x802DE174; // type:function size:0x30 fn_802DE1A4 = .text:0x802DE1A4; // type:function size:0x30 SetThunk__9ShortQuatFRCQ23Hmx4Quat = .text:0x802DE1D4; // type:function size:0x4 -__ct__14ShortTransformFv = .text:0x802DE1D8; // type:function size:0x30 +Reset__16TransformNoScaleFv = .text:0x802DE1D8; // type:function size:0x30 __eq__7Vector3CFRC7Vector3 = .text:0x802DE208; // type:function size:0x40 __ne__7Vector3CFRC7Vector3 = .text:0x802DE248; // type:function size:0x40 __ls__FR9BinStreamRC7Vector3 = .text:0x802DE288; // type:function size:0x50 @@ -26700,7 +26700,7 @@ fn_803358C8 = .text:0x803358C8; // type:function size:0x3C SetName__Q23Hmx6ObjectFPCcP9ObjectDir = .text:0x80335904; // type:function size:0xA0 RemoveFromDir__Q23Hmx6ObjectFv = .text:0x803359A4; // type:function size:0x88 SetTypeDef__Q23Hmx6ObjectFP9DataArray = .text:0x80335A2C; // type:function size:0x78 -Property__Q23Hmx6ObjectFP9DataArrayb = .text:0x80335AA4; // type:function size:0x1D8 +Property__Q23Hmx6ObjectCFP9DataArrayb = .text:0x80335AA4; // type:function size:0x1D8 Property__Q23Hmx6ObjectCF6Symbolb = .text:0x80335C7C; // type:function size:0xD4 OnGetArray__Q23Hmx6ObjectFPC9DataArray6Symbol = .text:0x80335D50; // type:function size:0x200 HandleProperty__Q23Hmx6ObjectFP9DataArrayP9DataArrayb = .text:0x80335F50; // type:function size:0x104 @@ -26841,12 +26841,12 @@ SetTime__12TaskTimelineFfb = .text:0x8033B714; // type:function size:0x20 UISeconds__7TaskMgrCFv = .text:0x8033B734; // type:function size:0xC fn_8033B740 = .text:0x8033B740; // type:function size:0xC fn_8033B74C = .text:0x8033B74C; // type:function size:0x10 -fn_8033B75C = .text:0x8033B75C; // type:function size:0x10 -fn_8033B76C = .text:0x8033B76C; // type:function size:0x20 +DeltaTime__7TaskMgrCF9TaskUnits = .text:0x8033B75C; // type:function size:0x10 +SetDeltaTime__7TaskMgrF9TaskUnitsf = .text:0x8033B76C; // type:function size:0x20 fn_8033B78C = .text:0x8033B78C; // type:function size:0x20 fn_8033B7AC = .text:0x8033B7AC; // type:function size:0x64 SetSeconds__7TaskMgrFfb = .text:0x8033B810; // type:function size:0x98 -fn_8033B8A8 = .text:0x8033B8A8; // type:function size:0x10 +Time__7TaskMgrCF9TaskUnits = .text:0x8033B8A8; // type:function size:0x10 fn_8033B8B8 = .text:0x8033B8B8; // type:function size:0x8 Seconds__7TaskMgrCFQ27TaskMgr13TimeReference = .text:0x8033B8C0; // type:function size:0x4C DeltaSeconds__7TaskMgrCFv = .text:0x8033B90C; // type:function size:0x8 @@ -28691,7 +28691,7 @@ fn_803897A0 = .text:0x803897A0; // type:function size:0x64 fn_80389804 = .text:0x80389804; // type:function size:0x50 fn_80389854 = .text:0x80389854; // type:function size:0x10 fn_80389864 = .text:0x80389864; // type:function size:0x58 -fn_803898BC = .text:0x803898BC; // type:function size:0x30 +__ct__16TransformNoScaleFRC16TransformNoScale = .text:0x803898BC; // type:function size:0x30 fn_803898EC = .text:0x803898EC; // type:function size:0x38 fn_80389924 = .text:0x80389924; // type:function size:0xD8 fn_803899FC = .text:0x803899FC; // type:function size:0x8 @@ -28774,11 +28774,11 @@ fn_8038BCC8 = .text:0x8038BCC8; // type:function size:0x3C fn_8038BD04 = .text:0x8038BD04; // type:function size:0x11C __rs<13RndAnimatable>__FR9BinStreamR38ObjPtrList<13RndAnimatable,9ObjectDir>_R9BinStream = .text:0x8038BE20; // type:function size:0x3C fn_8038BE5C = .text:0x8038BE5C; // type:function size:0x11C -fn_8038BF78 = .text:0x8038BF78; // type:function size:0x40 +clear__38ObjPtrList<13RndAnimatable,9ObjectDir>Fv = .text:0x8038BF78; // type:function size:0x40 fn_8038BFB8 = .text:0x8038BFB8; // type:function size:0x44 -fn_8038BFFC = .text:0x8038BFFC; // type:function size:0x54 -fn_8038C050 = .text:0x8038C050; // type:function size:0x4C -fn_8038C09C = .text:0x8038C09C; // type:function size:0x78 +erase__38ObjPtrList<13RndAnimatable,9ObjectDir>FQ238ObjPtrList<13RndAnimatable,9ObjectDir>8iterator = .text:0x8038BFFC; // type:function size:0x54 +push_back__38ObjPtrList<13RndAnimatable,9ObjectDir>FP13RndAnimatable = .text:0x8038C050; // type:function size:0x4C +insert__38ObjPtrList<13RndAnimatable,9ObjectDir>FQ238ObjPtrList<13RndAnimatable,9ObjectDir>8iteratorP13RndAnimatable = .text:0x8038C09C; // type:function size:0x78 link__40ObjPtrList<15RndPartLauncher,9ObjectDir>FQ240ObjPtrList<15RndPartLauncher,9ObjectDir>8iteratorPQ240ObjPtrList<15RndPartLauncher,9ObjectDir>4Node = .text:0x8038C114; // type:function size:0xE8 fn_8038C1FC = .text:0x8038C1FC; // type:function size:0x2C fn_8038C228 = .text:0x8038C228; // type:function size:0x8 @@ -28837,7 +28837,7 @@ fn_8038D15C = .text:0x8038D15C; // type:function size:0x18C fn_8038D2E8 = .text:0x8038D2E8; // type:function size:0x3C fn_8038D324 = .text:0x8038D324; // type:function size:0x4D8 fn_8038D7FC = .text:0x8038D7FC; // type:function size:0x8 -fn_8038D804 = .text:0x8038D804; // type:function size:0x8 +SetEnv__6RndDirFP10RndEnviron = .text:0x8038D804; // type:function size:0x8 fn_8038D80C = .text:0x8038D80C; // type:function size:0x8 fn_8038D814 = .text:0x8038D814; // type:function size:0x8 fn_8038D81C = .text:0x8038D81C; // type:function size:0xC0 @@ -28848,7 +28848,7 @@ fn_8038D9CC = .text:0x8038D9CC; // type:function size:0x8 fn_8038D9D4 = .text:0x8038D9D4; // type:function size:0x1FC fn_8038DBD0 = .text:0x8038DBD0; // type:function size:0x14 fn_8038DBE4 = .text:0x8038DBE4; // type:function size:0x1A8 -fn_8038DD8C = .text:0x8038DD8C; // type:function size:0x30 +begin__38ObjPtrList<13RndAnimatable,9ObjectDir>CFv = .text:0x8038DD8C; // type:function size:0x30 fn_8038DDBC = .text:0x8038DDBC; // type:function size:0x48 fn_8038DE04 = .text:0x8038DE04; // type:function size:0x74 fn_8038DE78 = .text:0x8038DE78; // type:function size:0x1A8 @@ -29053,7 +29053,7 @@ fn_803945FC = .text:0x803945FC; // type:function size:0x6C fn_80394668 = .text:0x80394668; // type:function size:0x28 fn_80394690 = .text:0x80394690; // type:function size:0x8 fn_80394698 = .text:0x80394698; // type:function size:0x3C -fn_803946D4 = .text:0x803946D4; // type:function size:0x80 +__dt__32ObjPtr<11RndPostProc,9ObjectDir>Fv = .text:0x803946D4; // type:function size:0x80 fn_80394754 = .text:0x80394754; // type:function size:0x80 fn_803947D4 = .text:0x803947D4; // type:function size:0x80 fn_80394854 = .text:0x80394854; // type:function size:0x80 @@ -29070,7 +29070,7 @@ fn_80394CB8 = .text:0x80394CB8; // type:function size:0x40 fn_80394CF8 = .text:0x80394CF8; // type:function size:0x30 fn_80394D28 = .text:0x80394D28; // type:function size:0x30 fn_80394D58 = .text:0x80394D58; // type:function size:0x40 -fn_80394D98 = .text:0x80394D98; // type:function size:0x68 +__ct__32ObjPtr<11RndPostProc,9ObjectDir>FPQ23Hmx6ObjectP11RndPostProc = .text:0x80394D98; // type:function size:0x68 fn_80394E00 = .text:0x80394E00; // type:function size:0x68 fn_80394E68 = .text:0x80394E68; // type:function size:0x68 fn_80394ED0 = .text:0x80394ED0; // type:function size:0x68 @@ -29085,7 +29085,7 @@ __ct__Q29CharBones4BoneF6Symbolf = .text:0x80395AB8; // type:function size:0x40 fn_80395AF8 = .text:0x80395AF8; // type:function size:0x128 fn_80395C20 = .text:0x80395C20; // type:function size:0x24 fn_80395C44 = .text:0x80395C44; // type:function size:0x8 -fn_80395C4C = .text:0x80395C4C; // type:function size:0x8 +__as__32ObjPtr<11RndPostProc,9ObjectDir>FRC32ObjPtr<11RndPostProc,9ObjectDir> = .text:0x80395C4C; // type:function size:0x8 fn_80395C54 = .text:0x80395C54; // type:function size:0xA0 fn_80395CF4 = .text:0x80395CF4; // type:function size:0x7C fn_80395D70 = .text:0x80395D70; // type:function size:0x130 @@ -29102,13 +29102,13 @@ fn_8039634C = .text:0x8039634C; // type:function size:0x54 fn_803963A0 = .text:0x803963A0; // type:function size:0x4C fn_803963EC = .text:0x803963EC; // type:function size:0x68 fn_80396454 = .text:0x80396454; // type:function size:0x9C -fn_803964F0 = .text:0x803964F0; // type:function size:0x10 +HasFreeCam__13CameraManagerCFv = .text:0x803964F0; // type:function size:0x10 fn_80396500 = .text:0x80396500; // type:function size:0x3C fn_8039653C = .text:0x8039653C; // type:function size:0x3C fn_80396578 = .text:0x80396578; // type:function size:0x7C fn_803965F4 = .text:0x803965F4; // type:function size:0x6C fn_80396660 = .text:0x80396660; // type:function size:0x1B0 -fn_80396810 = .text:0x80396810; // type:function size:0x58 +__dt__Q211stlpmtx_std109vector>Fv = .text:0x80396810; // type:function size:0x58 fn_80396868 = .text:0x80396868; // type:function size:0x80 fn_803968E8 = .text:0x803968E8; // type:function size:0x80 fn_80396968 = .text:0x80396968; // type:function size:0x58 @@ -29119,15 +29119,15 @@ fn_80396ADC = .text:0x80396ADC; // type:function size:0x28 fn_80396B04 = .text:0x80396B04; // type:function size:0x8 fn_80396B0C = .text:0x80396B0C; // type:function size:0x8 fn_80396B14 = .text:0x80396B14; // type:function size:0x3C -fn_80396B50 = .text:0x80396B50; // type:function size:0x68 -fn_80396BB8 = .text:0x80396BB8; // type:function size:0x4 +__dt__Q213CameraManager14PropertyFilterFv = .text:0x80396B50; // type:function size:0x68 +push_back__Q211stlpmtx_std109vector>FRCQ213CameraManager14PropertyFilter = .text:0x80396BB8; // type:function size:0x4 fn_80396BBC = .text:0x80396BBC; // type:function size:0x88 fn_80396C44 = .text:0x80396C44; // type:function size:0x2C fn_80396C70 = .text:0x80396C70; // type:function size:0x10 fn_80396C80 = .text:0x80396C80; // type:function size:0x50 -fn_80396CD0 = .text:0x80396CD0; // type:function size:0x8 -fn_80396CD8 = .text:0x80396CD8; // type:function size:0x38 -fn_80396D10 = .text:0x80396D10; // type:function size:0x30 +Flags__7CamShotCFv = .text:0x80396CD0; // type:function size:0x8 +__ct__Q213CameraManager14PropertyFilterFv = .text:0x80396CD8; // type:function size:0x38 +__ct__Q211stlpmtx_std109vector>FRCQ211stlpmtx_std47StlNodeAlloc = .text:0x80396D10; // type:function size:0x30 fn_80396D40 = .text:0x80396D40; // type:function size:0x30 fn_80396D70 = .text:0x80396D70; // type:function size:0x40 fn_80396DB0 = .text:0x80396DB0; // type:function size:0x2D4 @@ -29167,8 +29167,8 @@ fn_80398338 = .text:0x80398338; // type:function size:0x68 fn_803983A0 = .text:0x803983A0; // type:function size:0x35C AsFloatKeys__9FloatKeysFv = .text:0x803986FC; // type:function size:0x10 fn_8039870C = .text:0x8039870C; // type:function size:0x14 -fn_80398720 = .text:0x80398720; // type:function size:0x2C -fn_8039874C = .text:0x8039874C; // type:function size:0x30 +end__31ObjPtrList<7CamShot,9ObjectDir>CFv = .text:0x80398720; // type:function size:0x2C +begin__31ObjPtrList<7CamShot,9ObjectDir>CFv = .text:0x8039874C; // type:function size:0x30 fn_8039877C = .text:0x8039877C; // type:function size:0x2C fn_803987A8 = .text:0x803987A8; // type:function size:0xFC fn_803988A4 = .text:0x803988A4; // type:function size:0xD0 @@ -29269,7 +29269,7 @@ fn_8039E8BC = .text:0x8039E8BC; // type:function size:0x3A8 fn_8039EC64 = .text:0x8039EC64; // type:function size:0x50 fn_8039ECB4 = .text:0x8039ECB4; // type:function size:0x1208 fn_8039FEBC = .text:0x8039FEBC; // type:function size:0xC0 -fn_8039FF7C = .text:0x8039FF7C; // type:function size:0xC0 +PropSync<11RndPostProc>__FR32ObjPtr<11RndPostProc,9ObjectDir>R8DataNodeP9DataArrayi6PropOp_b = .text:0x8039FF7C; // type:function size:0xC0 fn_803A003C = .text:0x803A003C; // type:function size:0xCC fn_803A0108 = .text:0x803A0108; // type:function size:0x6C fn_803A0174 = .text:0x803A0174; // type:function size:0x6C @@ -29465,7 +29465,7 @@ fn_803A4A94 = .text:0x803A4A94; // type:function size:0x64 fn_803A4AF8 = .text:0x803A4AF8; // type:function size:0x70 fn_803A4B68 = .text:0x803A4B68; // type:function size:0x34 fn_803A4B9C = .text:0x803A4B9C; // type:function size:0x38C -fn_803A4F28 = .text:0x803A4F28; // type:function size:0x14C +PropSync__FRQ211stlpmtx_std67vector>R8DataNodeP9DataArrayi6PropOp_b = .text:0x803A4F28; // type:function size:0x14C fn_803A5074 = .text:0x803A5074; // type:function size:0x2C fn_803A50A0 = .text:0x803A50A0; // type:function size:0x84 fn_803A5124 = .text:0x803A5124; // type:function size:0x2C @@ -29489,7 +29489,7 @@ fn_803A5A5C = .text:0x803A5A5C; // type:function size:0x58 fn_803A5AB4 = .text:0x803A5AB4; // type:function size:0x28 fn_803A5ADC = .text:0x803A5ADC; // type:function size:0x68 __as__28ObjPtr<8RndGroup,9ObjectDir>FRC28ObjPtr<8RndGroup,9ObjectDir> = .text:0x803A5B44; // type:function size:0x8 -fn_803A5B4C = .text:0x803A5B4C; // type:function size:0x80 +__rs__FR9BinStreamRQ211stlpmtx_std67vector>_R9BinStream = .text:0x803A5B4C; // type:function size:0x80 fn_803A5BCC = .text:0x803A5BCC; // type:function size:0x4 fn_803A5BD0 = .text:0x803A5BD0; // type:function size:0x90 fn_803A5C60 = .text:0x803A5C60; // type:function size:0x4 @@ -30244,7 +30244,7 @@ fn_803B7810 = .text:0x803B7810; // type:function size:0x114 fn_803B7924 = .text:0x803B7924; // type:function size:0x1F4 fn_803B7B18 = .text:0x803B7B18; // type:function size:0x148 fn_803B7C60 = .text:0x803B7C60; // type:function size:0x3CC -fn_803B802C = .text:0x803B802C; // type:function size:0xCC +PropSync<12RndTransAnim>__FR33ObjPtr<12RndTransAnim,9ObjectDir>R8DataNodeP9DataArrayi6PropOp_b = .text:0x803B802C; // type:function size:0xCC fn_803B80F8 = .text:0x803B80F8; // type:function size:0xC0 fn_803B81B8 = .text:0x803B81B8; // type:function size:0x170 fn_803B8328 = .text:0x803B8328; // type:function size:0x2C @@ -30345,7 +30345,7 @@ fn_803BA734 = .text:0x803BA734; // type:function size:0x8 fn_803BA73C = .text:0x803BA73C; // type:function size:0x64 fn_803BA7A0 = .text:0x803BA7A0; // type:function size:0x8 fn_803BA7A8 = .text:0x803BA7A8; // type:function size:0x40 -fn_803BA7E8 = .text:0x803BA7E8; // type:function size:0x14 +Zero__7Vector2Fv = .text:0x803BA7E8; // type:function size:0x14 fn_803BA7FC = .text:0x803BA7FC; // type:function size:0x180 fn_803BA97C = .text:0x803BA97C; // type:function size:0x30 fn_803BA9AC = .text:0x803BA9AC; // type:function size:0x24 @@ -30520,7 +30520,7 @@ __as__26ObjPtr<6RndTex,9ObjectDir>FRC26ObjPtr<6RndTex,9ObjectDir> = .text:0x803B fn_803BFCE0 = .text:0x803BFCE0; // type:function size:0x50 __ct__26ObjPtr<6RndTex,9ObjectDir>FPQ23Hmx6ObjectP6RndTex = .text:0x803BFD30; // type:function size:0x68 fn_803BFD98 = .text:0x803BFD98; // type:function size:0xE0 -fn_803BFE78 = .text:0x803BFE78; // type:function size:0x8 +SetOrder__11RndDrawableFf = .text:0x803BFE78; // type:function size:0x8 fn_803BFE80 = .text:0x803BFE80; // type:function size:0x70 fn_803BFEF0 = .text:0x803BFEF0; // type:function size:0x5C fn_803BFF4C = .text:0x803BFF4C; // type:function size:0x58 @@ -30830,7 +30830,7 @@ fn_803C78C0 = .text:0x803C78C0; // type:function size:0x54 fn_803C7914 = .text:0x803C7914; // type:function size:0x5C fn_803C7970 = .text:0x803C7970; // type:function size:0x6C fn_803C79DC = .text:0x803C79DC; // type:function size:0x28 -fn_803C7A04 = .text:0x803C7A04; // type:function size:0x80 +__dt__26ObjPtr<6RndDir,9ObjectDir>Fv = .text:0x803C7A04; // type:function size:0x80 fn_803C7A84 = .text:0x803C7A84; // type:function size:0x8 fn_803C7A8C = .text:0x803C7A8C; // type:function size:0x3C fn_803C7AC8 = .text:0x803C7AC8; // type:function size:0x50 @@ -30870,7 +30870,7 @@ fn_803C8808 = .text:0x803C8808; // type:function size:0x58 fn_803C8860 = .text:0x803C8860; // type:function size:0x28 fn_803C8888 = .text:0x803C8888; // type:function size:0x68 fn_803C88F0 = .text:0x803C88F0; // type:function size:0x48 -fn_803C8938 = .text:0x803C8938; // type:function size:0x8 +__as__26ObjPtr<6RndDir,9ObjectDir>FRC26ObjPtr<6RndDir,9ObjectDir> = .text:0x803C8938; // type:function size:0x8 fn_803C8940 = .text:0x803C8940; // type:function size:0x24 fn_803C8964 = .text:0x803C8964; // type:function size:0x3C fn_803C89A0 = .text:0x803C89A0; // type:function size:0x60 @@ -30884,7 +30884,7 @@ fn_803C8B6C = .text:0x803C8B6C; // type:function size:0x2C fn_803C8B98 = .text:0x803C8B98; // type:function size:0x58 fn_803C8BF0 = .text:0x803C8BF0; // type:function size:0x28 fn_803C8C18 = .text:0x803C8C18; // type:function size:0x68 -fn_803C8C80 = .text:0x803C8C80; // type:function size:0x68 +__ct__26ObjPtr<6RndDir,9ObjectDir>FPQ23Hmx6ObjectP6RndDir = .text:0x803C8C80; // type:function size:0x68 fn_803C8CE8 = .text:0x803C8CE8; // type:function size:0x4 fn_803C8CEC = .text:0x803C8CEC; // type:function size:0x3C fn_803C8D28 = .text:0x803C8D28; // type:function size:0xCC @@ -31061,7 +31061,7 @@ __dt__31ObjPtrList<7RndMesh,9ObjectDir>Fv = .text:0x803CBF3C; // type:function s clear__31ObjPtrList<7RndMesh,9ObjectDir>Fv = .text:0x803CBFA8; // type:function size:0x40 pop_back__31ObjPtrList<7RndMesh,9ObjectDir>Fv = .text:0x803CBFE8; // type:function size:0x44 erase__31ObjPtrList<7RndMesh,9ObjectDir>FQ231ObjPtrList<7RndMesh,9ObjectDir>8iterator = .text:0x803CC02C; // type:function size:0x54 -fn_803CC080 = .text:0x803CC080; // type:function size:0xF4 +unlink__35ObjPtrList<10WorldCrowd,9ObjectDir>FPQ235ObjPtrList<10WorldCrowd,9ObjectDir>4Node = .text:0x803CC080; // type:function size:0xF4 fn_803CC174 = .text:0x803CC174; // type:function size:0x58 fn_803CC1CC = .text:0x803CC1CC; // type:function size:0x58 fn_803CC224 = .text:0x803CC224; // type:function size:0x60 @@ -31240,7 +31240,7 @@ fn_803D1C34 = .text:0x803D1C34; // type:function size:0x4C fn_803D1C80 = .text:0x803D1C80; // type:function size:0x78 fn_803D1CF8 = .text:0x803D1CF8; // type:function size:0x4C fn_803D1D44 = .text:0x803D1D44; // type:function size:0x78 -fn_803D1DBC = .text:0x803D1DBC; // type:function size:0xEC +link__35ObjPtrList<10WorldCrowd,9ObjectDir>FQ235ObjPtrList<10WorldCrowd,9ObjectDir>8iteratorPQ235ObjPtrList<10WorldCrowd,9ObjectDir>4Node = .text:0x803D1DBC; // type:function size:0xEC fn_803D1EA8 = .text:0x803D1EA8; // type:function size:0x4C fn_803D1EF4 = .text:0x803D1EF4; // type:function size:0x78 fn_803D1F6C = .text:0x803D1F6C; // type:function size:0x2C @@ -32431,7 +32431,7 @@ fn_803FA670 = .text:0x803FA670; // type:function size:0x4 fn_803FA674 = .text:0x803FA674; // type:function size:0x4 fn_803FA678 = .text:0x803FA678; // type:function size:0x4 fn_803FA67C = .text:0x803FA67C; // type:function size:0x504 -fn_803FAB80 = .text:0x803FAB80; // type:function size:0xCC +PropSync<6RndDir>__FR26ObjPtr<6RndDir,9ObjectDir>R8DataNodeP9DataArrayi6PropOp_b = .text:0x803FAB80; // type:function size:0xCC PropSync__FR32ObjPtrR8DataNodeP9DataArrayi6PropOp_b = .text:0x803FAC4C; // type:function size:0xA4 fn_803FACF0 = .text:0x803FACF0; // type:function size:0x164 fn_803FAE54 = .text:0x803FAE54; // type:function size:0x2C @@ -32674,15 +32674,15 @@ fn_80400FB0 = .text:0x80400FB0; // type:function size:0x58 fn_80401008 = .text:0x80401008; // type:function size:0x80 fn_80401088 = .text:0x80401088; // type:function size:0x80 fn_80401108 = .text:0x80401108; // type:function size:0x58 -fn_80401160 = .text:0x80401160; // type:function size:0x10 +deallocate__Q211stlpmtx_std38StlNodeAllocCFPQ211LightPreset8KeyframeUl = .text:0x80401160; // type:function size:0x10 fn_80401170 = .text:0x80401170; // type:function size:0x54 fn_804011C4 = .text:0x804011C4; // type:function size:0x5C fn_80401220 = .text:0x80401220; // type:function size:0x6C fn_8040128C = .text:0x8040128C; // type:function size:0x28 -fn_804012B4 = .text:0x804012B4; // type:function size:0x10 +__pp__Q211stlpmtx_std43reverse_iteratorFv = .text:0x804012B4; // type:function size:0x10 fn_804012C4 = .text:0x804012C4; // type:function size:0x8 fn_804012CC = .text:0x804012CC; // type:function size:0xB0 -fn_8040137C = .text:0x8040137C; // type:function size:0xC +__ml__Q211stlpmtx_std43reverse_iteratorCFv = .text:0x8040137C; // type:function size:0xC fn_80401388 = .text:0x80401388; // type:function size:0x8 fn_80401390 = .text:0x80401390; // type:function size:0x3C end__Q211stlpmtx_std79vector>Fv = .text:0x804013CC; // type:function size:0x14 @@ -32816,7 +32816,7 @@ fn_80403FCC = .text:0x80403FCC; // type:function size:0x30 fn_80403FFC = .text:0x80403FFC; // type:function size:0x30 fn_8040402C = .text:0x8040402C; // type:function size:0x60 fn_8040408C = .text:0x8040408C; // type:function size:0x74 -fn_80404100 = .text:0x80404100; // type:function size:0x40 +__rs<6RndDir>__FR9BinStreamR26ObjPtr<6RndDir,9ObjectDir>_R9BinStream = .text:0x80404100; // type:function size:0x40 fn_80404140 = .text:0x80404140; // type:function size:0x8C fn_804041CC = .text:0x804041CC; // type:function size:0x4 fn_804041D0 = .text:0x804041D0; // type:function size:0x90 @@ -34384,7 +34384,7 @@ fn_80429640 = .text:0x80429640; // type:function size:0x58 fn_80429698 = .text:0x80429698; // type:function size:0x70 fn_80429708 = .text:0x80429708; // type:function size:0x9EC fn_8042A0F4 = .text:0x8042A0F4; // type:function size:0xA0 -fn_8042A194 = .text:0x8042A194; // type:function size:0xA0 +Find<10RndEnviron>__9ObjectDirFPCcb_P10RndEnviron = .text:0x8042A194; // type:function size:0xA0 fn_8042A234 = .text:0x8042A234; // type:function size:0x54 fn_8042A288 = .text:0x8042A288; // type:function size:0x13C fn_8042A3C4 = .text:0x8042A3C4; // type:function size:0x130 @@ -34669,7 +34669,7 @@ fn_8043316C = .text:0x8043316C; // type:function size:0x8 fn_80433174 = .text:0x80433174; // type:function size:0x30 fn_804331A4 = .text:0x804331A4; // type:function size:0x30 __as__41ObjPtrList<16RndTransformable,9ObjectDir>FRC41ObjPtrList<16RndTransformable,9ObjectDir> = .text:0x804331D4; // type:function size:0xB8 -fn_8043328C = .text:0x8043328C; // type:function size:0x4C +push_back__41ObjPtrList<16RndTransformable,9ObjectDir>FP16RndTransformable = .text:0x8043328C; // type:function size:0x4C fn_804332D8 = .text:0x804332D8; // type:function size:0x78 end__41ObjPtrList<16RndTransformable,9ObjectDir>CFv = .text:0x80433350; // type:function size:0x2C fn_8043337C = .text:0x8043337C; // type:function size:0x4 @@ -34744,7 +34744,7 @@ fn_804380DC = .text:0x804380DC; // type:function size:0xA0 fn_8043817C = .text:0x8043817C; // type:function size:0x80 fn_804381FC = .text:0x804381FC; // type:function size:0x12B0 PropSync<16RndTransformable>__FR41ObjPtrList<16RndTransformable,9ObjectDir>R8DataNodeP9DataArrayi6PropOp_b = .text:0x804394AC; // type:function size:0x1E8 -fn_80439694 = .text:0x80439694; // type:function size:0xC0 +PropSync<16RndTransformable>__FRP16RndTransformableR8DataNodeP9DataArrayi6PropOp_b = .text:0x80439694; // type:function size:0xC0 fn_80439754 = .text:0x80439754; // type:function size:0x44 begin__41ObjPtrList<16RndTransformable,9ObjectDir>CFv = .text:0x80439798; // type:function size:0x30 fn_804397C8 = .text:0x804397C8; // type:function size:0xCC @@ -35575,9 +35575,9 @@ fn_80450258 = .text:0x80450258; // type:function size:0x30 fn_80450288 = .text:0x80450288; // type:function size:0x60 __dt__21SongSectionControllerFv = .text:0x804502E8; // type:function size:0xC8 fn_804503B0 = .text:0x804503B0; // type:function size:0x40 -fn_804503F0 = .text:0x804503F0; // type:function size:0x2C +end__37ObjPtrList<12EventTrigger,9ObjectDir>CFv = .text:0x804503F0; // type:function size:0x2C fn_8045041C = .text:0x8045041C; // type:function size:0x44 -fn_80450460 = .text:0x80450460; // type:function size:0x30 +begin__37ObjPtrList<12EventTrigger,9ObjectDir>CFv = .text:0x80450460; // type:function size:0x30 Save__21SongSectionControllerFR9BinStream = .text:0x80450490; // type:function size:0x4 fn_80450494 = .text:0x80450494; // type:function size:0xF8 fn_8045058C = .text:0x8045058C; // type:function size:0x5C @@ -35632,9 +35632,9 @@ fn_804515D8 = .text:0x804515D8; // type:function size:0x2C fn_80451604 = .text:0x80451604; // type:function size:0x3C fn_80451640 = .text:0x80451640; // type:function size:0x60 fn_804516A0 = .text:0x804516A0; // type:function size:0x1C8 -fn_80451868 = .text:0x80451868; // type:function size:0x2C -fn_80451894 = .text:0x80451894; // type:function size:0x44 -fn_804518D8 = .text:0x804518D8; // type:function size:0x30 +end__36ObjPtrList<11RndDrawable,9ObjectDir>CFv = .text:0x80451868; // type:function size:0x2C +__pp__Q236ObjPtrList<11RndDrawable,9ObjectDir>8iteratorFi = .text:0x80451894; // type:function size:0x44 +begin__36ObjPtrList<11RndDrawable,9ObjectDir>CFv = .text:0x804518D8; // type:function size:0x30 fn_80451908 = .text:0x80451908; // type:function size:0x10 fn_80451918 = .text:0x80451918; // type:function size:0x4 fn_8045191C = .text:0x8045191C; // type:function size:0xAC @@ -38302,10 +38302,10 @@ __rs__FR9BinStreamRQ29Character3Lod = .text:0x8049C168; // type:function size:0x __rs<11RndDrawable>__FR9BinStreamR36ObjPtrList<11RndDrawable,9ObjectDir>_R9BinStream = .text:0x8049C2CC; // type:function size:0x3C fn_8049C308 = .text:0x8049C308; // type:function size:0x11C fn_8049C424 = .text:0x8049C424; // type:function size:0x4C -fn_8049C470 = .text:0x8049C470; // type:function size:0x78 +insert__36ObjPtrList<11RndDrawable,9ObjectDir>FQ236ObjPtrList<11RndDrawable,9ObjectDir>8iteratorP11RndDrawable = .text:0x8049C470; // type:function size:0x78 fn_8049C4E8 = .text:0x8049C4E8; // type:function size:0x40 fn_8049C528 = .text:0x8049C528; // type:function size:0x44 -fn_8049C56C = .text:0x8049C56C; // type:function size:0x54 +erase__36ObjPtrList<11RndDrawable,9ObjectDir>FQ236ObjPtrList<11RndDrawable,9ObjectDir>8iterator = .text:0x8049C56C; // type:function size:0x54 __dt__36ObjPtrList<11RndDrawable,9ObjectDir>Fv = .text:0x8049C5C0; // type:function size:0x6C fn_8049C62C = .text:0x8049C62C; // type:function size:0x64 __ct__36ObjPtrList<11RndDrawable,9ObjectDir>FPQ23Hmx6Object11ObjListMode = .text:0x8049C690; // type:function size:0x68 @@ -45828,7 +45828,7 @@ SetType__7UIGuideF6Symbol = .text:0x8057D0FC; // type:function size:0x128 ScrollDirection__FRC13ButtonDownMsg6Symbolbi = .text:0x8057D224; // type:function size:0x13C PageDirection__F12JoypadAction = .text:0x8057D360; // type:function size:0x20 IsNavAction__F12JoypadAction = .text:0x8057D380; // type:function size:0x18 -__ct__13CameraManagerFv = .text:0x8057D398; // type:function size:0xB0 +__ct__13CameraManagerFP8WorldDir = .text:0x8057D398; // type:function size:0xB0 __dt__27ObjPtr<7CamShot,9ObjectDir>Fv = .text:0x8057D448; // type:function size:0x80 fn_8057D4C8 = .text:0x8057D4C8; // type:function size:0x58 fn_8057D520 = .text:0x8057D520; // type:function size:0x80 @@ -45846,10 +45846,10 @@ fn_8057D898 = .text:0x8057D898; // type:function size:0x30 fn_8057D8C8 = .text:0x8057D8C8; // type:function size:0x40 __dt__13CameraManagerFv = .text:0x8057D908; // type:function size:0x10C __dt__31ObjPtrList<7CamShot,9ObjectDir>Fv = .text:0x8057DA14; // type:function size:0x6C -fn_8057DA80 = .text:0x8057DA80; // type:function size:0x40 -fn_8057DAC0 = .text:0x8057DAC0; // type:function size:0x44 -fn_8057DB04 = .text:0x8057DB04; // type:function size:0x54 -fn_8057DB58 = .text:0x8057DB58; // type:function size:0xF4 +clear__31ObjPtrList<7CamShot,9ObjectDir>Fv = .text:0x8057DA80; // type:function size:0x40 +pop_back__31ObjPtrList<7CamShot,9ObjectDir>Fv = .text:0x8057DAC0; // type:function size:0x44 +erase__31ObjPtrList<7CamShot,9ObjectDir>FQ231ObjPtrList<7CamShot,9ObjectDir>8iterator = .text:0x8057DB04; // type:function size:0x54 +FindOrAddCategory__13CameraManagerF6Symbol = .text:0x8057DB58; // type:function size:0xF4 fn_8057DC4C = .text:0x8057DC4C; // type:function size:0x94 fn_8057DCE0 = .text:0x8057DCE0; // type:function size:0x100 fn_8057DDE0 = .text:0x8057DDE0; // type:function size:0x30 @@ -45884,7 +45884,7 @@ __ct__31ObjPtrList<7CamShot,9ObjectDir>FPQ23Hmx6Object11ObjListMode = .text:0x80 fn_8057E974 = .text:0x8057E974; // type:function size:0x64 fn_8057E9D8 = .text:0x8057E9D8; // type:function size:0xA0 fn_8057EA78 = .text:0x8057EA78; // type:function size:0x24 -fn_8057EA9C = .text:0x8057EA9C; // type:function size:0x1AC +RandomizeCategory__13CameraManagerFR31ObjPtrList<7CamShot,9ObjectDir> = .text:0x8057EA9C; // type:function size:0x1AC fn_8057EC48 = .text:0x8057EC48; // type:function size:0x88 fn_8057ECD0 = .text:0x8057ECD0; // type:function size:0xE8 fn_8057EDB8 = .text:0x8057EDB8; // type:function size:0x30 @@ -45910,13 +45910,13 @@ fn_8057F628 = .text:0x8057F628; // type:function size:0x58 fn_8057F680 = .text:0x8057F680; // type:function size:0x58 fn_8057F6D8 = .text:0x8057F6D8; // type:function size:0x30 fn_8057F708 = .text:0x8057F708; // type:function size:0x60 -fn_8057F768 = .text:0x8057F768; // type:function size:0x4C -fn_8057F7B4 = .text:0x8057F7B4; // type:function size:0x78 -fn_8057F82C = .text:0x8057F82C; // type:function size:0x6C -fn_8057F898 = .text:0x8057F898; // type:function size:0xBC -fn_8057F954 = .text:0x8057F954; // type:function size:0x50 -fn_8057F9A4 = .text:0x8057F9A4; // type:function size:0xD0 -fn_8057FA74 = .text:0x8057FA74; // type:function size:0x78 +push_back__31ObjPtrList<7CamShot,9ObjectDir>FP7CamShot = .text:0x8057F768; // type:function size:0x4C +insert__31ObjPtrList<7CamShot,9ObjectDir>FQ231ObjPtrList<7CamShot,9ObjectDir>8iteratorP7CamShot = .text:0x8057F7B4; // type:function size:0x78 +Randomize__13CameraManagerFv = .text:0x8057F82C; // type:function size:0x6C +SyncObjects__13CameraManagerFv = .text:0x8057F898; // type:function size:0xBC +__pp__19ObjDirItr<7CamShot>Fv = .text:0x8057F954; // type:function size:0x50 +Advance__19ObjDirItr<7CamShot>Fv = .text:0x8057F9A4; // type:function size:0xD0 +__ct__19ObjDirItr<7CamShot>FP9ObjectDirb = .text:0x8057FA74; // type:function size:0x78 fn_8057FAEC = .text:0x8057FAEC; // type:function size:0x4 fn_8057FAF0 = .text:0x8057FAF0; // type:function size:0x4 fn_8057FAF4 = .text:0x8057FAF4; // type:function size:0x3C @@ -45927,36 +45927,36 @@ fn_8057FC04 = .text:0x8057FC04; // type:function size:0x2C fn_8057FC30 = .text:0x8057FC30; // type:function size:0x58 fn_8057FC88 = .text:0x8057FC88; // type:function size:0x28 fn_8057FCB0 = .text:0x8057FCB0; // type:function size:0x68 -fn_8057FD18 = .text:0x8057FD18; // type:function size:0x230 -fn_8057FF48 = .text:0x8057FF48; // type:function size:0x64 -fn_8057FFAC = .text:0x8057FFAC; // type:function size:0x120 -fn_805800CC = .text:0x805800CC; // type:function size:0x7C -fn_80580148 = .text:0x80580148; // type:function size:0x8 -fn_80580150 = .text:0x80580150; // type:function size:0xF8 -fn_80580248 = .text:0x80580248; // type:function size:0x100 -fn_80580348 = .text:0x80580348; // type:function size:0x204 -fn_8058054C = .text:0x8058054C; // type:function size:0xB8 -fn_80580604 = .text:0x80580604; // type:function size:0x4 -fn_80580608 = .text:0x80580608; // type:function size:0xC0 -fn_805806C8 = .text:0x805806C8; // type:function size:0xB4 -fn_8058077C = .text:0x8058077C; // type:function size:0x8 -fn_80580784 = .text:0x80580784; // type:function size:0x130 -fn_805808B4 = .text:0x805808B4; // type:function size:0xB0 -fn_80580964 = .text:0x80580964; // type:function size:0x68 -fn_805809CC = .text:0x805809CC; // type:function size:0x7C -fn_80580A48 = .text:0x80580A48; // type:function size:0x8 -fn_80580A50 = .text:0x80580A50; // type:function size:0x54 -fn_80580AA4 = .text:0x80580AA4; // type:function size:0x8 -fn_80580AAC = .text:0x80580AAC; // type:function size:0xA8 -fn_80580B54 = .text:0x80580B54; // type:function size:0x70 -fn_80580BC4 = .text:0x80580BC4; // type:function size:0x38 -fn_80580BFC = .text:0x80580BFC; // type:function size:0x88 -fn_80580C84 = .text:0x80580C84; // type:function size:0x478 -fn_805810FC = .text:0x805810FC; // type:function size:0x8 -fn_80581104 = .text:0x80581104; // type:function size:0x34 -fn_80581138 = .text:0x80581138; // type:function size:0x3C -fn_80581174 = .text:0x80581174; // type:function size:0x48 -fn_805811BC = .text:0x805811BC; // type:function size:0x158 +ShotMatches__13CameraManagerFP7CamShotRCQ211stlpmtx_std109vector> = .text:0x8057FD18; // type:function size:0x230 +PickCameraShot__13CameraManagerF6SymbolRCQ211stlpmtx_std109vector> = .text:0x8057FF48; // type:function size:0x64 +FindCameraShot__13CameraManagerF6SymbolRCQ211stlpmtx_std109vector> = .text:0x8057FFAC; // type:function size:0x120 +MoveItem__31ObjPtrList<7CamShot,9ObjectDir>FQ231ObjPtrList<7CamShot,9ObjectDir>8iteratorR31ObjPtrList<7CamShot,9ObjectDir>Q231ObjPtrList<7CamShot,9ObjectDir>8iterator = .text:0x805800CC; // type:function size:0x7C +Disabled__7CamShotCFv = .text:0x80580148; // type:function size:0x8 +NumCameraShots__13CameraManagerF6SymbolRCQ211stlpmtx_std109vector> = .text:0x80580150; // type:function size:0xF8 +FirstShotOk__13CameraManagerF6Symbol = .text:0x80580248; // type:function size:0x100 +MakeCategoryAndFilters__13CameraManagerFP9DataArrayRQ211stlpmtx_std109vector> = .text:0x80580348; // type:function size:0x204 +OnPickCameraShot__13CameraManagerFP9DataArray = .text:0x8058054C; // type:function size:0xB8 +reserve__Q211stlpmtx_std109vector>FUl = .text:0x80580604; // type:function size:0x4 +OnFindCameraShot__13CameraManagerFP9DataArray = .text:0x80580608; // type:function size:0xC0 +OnNumCameraShots__13CameraManagerFP9DataArray = .text:0x805806C8; // type:function size:0xB4 +ForceCameraShot__13CameraManagerFP7CamShot = .text:0x8058077C; // type:function size:0x8 +StartShot___13CameraManagerFP7CamShot = .text:0x80580784; // type:function size:0x130 +ShotAfter__13CameraManagerFP7CamShot = .text:0x805808B4; // type:function size:0xB0 +OnCycleShot__13CameraManagerFP9DataArray = .text:0x80580964; // type:function size:0x68 +GetFreeCam__13CameraManagerFi = .text:0x805809CC; // type:function size:0x7C +SetPadNum__10FreeCameraFi = .text:0x80580A48; // type:function size:0x8 +DeleteFreeCam__13CameraManagerFv = .text:0x80580A50; // type:function size:0x54 +MiloCamera__13CameraManagerFv = .text:0x80580AA4; // type:function size:0x8 +PrePoll__13CameraManagerFv = .text:0x80580AAC; // type:function size:0xA8 +CalcFrame__13CameraManagerFv = .text:0x80580B54; // type:function size:0x70 +Enter__13CameraManagerFv = .text:0x80580BC4; // type:function size:0x38 +Poll__13CameraManagerFv = .text:0x80580BFC; // type:function size:0x88 +Handle__13CameraManagerFP9DataArrayb = .text:0x80580C84; // type:function size:0x478 +NextShot__13CameraManagerCFv = .text:0x805810FC; // type:function size:0x8 +Obj<7CamShot>__9DataArrayCFi_P7CamShot = .text:0x80581104; // type:function size:0x34 +Obj<7CamShot>__8DataNodeCFPC9DataArray_P7CamShot = .text:0x80581138; // type:function size:0x3C +OnRandomSeed__13CameraManagerFP9DataArray = .text:0x80581174; // type:function size:0x48 +OnIterateShot__13CameraManagerFP9DataArray = .text:0x805811BC; // type:function size:0x158 fn_80581314 = .text:0x80581314; // type:function size:0x4 fn_80581318 = .text:0x80581318; // type:function size:0x10C fn_80581424 = .text:0x80581424; // type:function size:0x6C @@ -45969,66 +45969,66 @@ fn_805816D4 = .text:0x805816D4; // type:function size:0x114 fn_805817E8 = .text:0x805817E8; // type:function size:0x5C fn_80581844 = .text:0x80581844; // type:function size:0x54 fn_80581898 = .text:0x80581898; // type:function size:0x5C -fn_805818F4 = .text:0x805818F4; // type:function size:0xCC +reserve__Q211stlpmtx_std115_Vector_impl>FUl = .text:0x805818F4; // type:function size:0xCC fn_805819C0 = .text:0x805819C0; // type:function size:0x5C fn_80581A1C = .text:0x80581A1C; // type:function size:0x60 fn_80581A7C = .text:0x80581A7C; // type:function size:0x10 -fn_80581A8C = .text:0x80581A8C; // type:function size:0x10 +__sinit_\CameraManager_cpp = .text:0x80581A8C; // type:function size:0x10 __ct__7CamShotFv = .text:0x80581A9C; // type:function size:0x2CC -fn_80581D68 = .text:0x80581D68; // type:function size:0x84 -fn_80581DEC = .text:0x80581DEC; // type:function size:0x58 -fn_80581E44 = .text:0x80581E44; // type:function size:0x58 -fn_80581E9C = .text:0x80581E9C; // type:function size:0x80 -fn_80581F1C = .text:0x80581F1C; // type:function size:0x80 -fn_80581F9C = .text:0x80581F9C; // type:function size:0x58 -fn_80581FF4 = .text:0x80581FF4; // type:function size:0x54 -fn_80582048 = .text:0x80582048; // type:function size:0x5C +__dt__29ObjPtr<9Spotlight,9ObjectDir>Fv = .text:0x80581D68; // type:function size:0x84 +__dt__28ObjVector<12CamShotCrowd,Us>Fv = .text:0x80581DEC; // type:function size:0x58 +__dt__Q211stlpmtx_std71vector<12CamShotCrowd,Us,Q211stlpmtx_std28StlNodeAlloc<12CamShotCrowd>>Fv = .text:0x80581E44; // type:function size:0x58 +__dt__Q211stlpmtx_std77_Vector_impl<12CamShotCrowd,Us,Q211stlpmtx_std28StlNodeAlloc<12CamShotCrowd>>Fv = .text:0x80581E9C; // type:function size:0x80 +__dt__Q211stlpmtx_std77_Vector_base<12CamShotCrowd,Us,Q211stlpmtx_std28StlNodeAlloc<12CamShotCrowd>>Fv = .text:0x80581F1C; // type:function size:0x80 +__dt__Q211stlpmtx_std95_STLP_alloc_proxy>Fv = .text:0x80581F9C; // type:function size:0x58 +_Destroy_Range>__11stlpmtx_stdFQ211stlpmtx_std33reverse_iteratorQ211stlpmtx_std33reverse_iterator_v = .text:0x80581FF4; // type:function size:0x54 +__destroy_range,12CamShotCrowd>__11stlpmtx_stdFQ211stlpmtx_std33reverse_iteratorQ211stlpmtx_std33reverse_iteratorP12CamShotCrowd_v = .text:0x80582048; // type:function size:0x5C fn_805820A4 = .text:0x805820A4; // type:function size:0x6C fn_80582110 = .text:0x80582110; // type:function size:0x28 fn_80582138 = .text:0x80582138; // type:function size:0x8 -fn_80582140 = .text:0x80582140; // type:function size:0x68 -fn_805821A8 = .text:0x805821A8; // type:function size:0x84 -fn_8058222C = .text:0x8058222C; // type:function size:0x8 -fn_80582234 = .text:0x80582234; // type:function size:0x3C +__dt__12CamShotCrowdFv = .text:0x80582140; // type:function size:0x68 +__dt__31ObjPtr<10WorldCrowd,9ObjectDir>Fv = .text:0x805821A8; // type:function size:0x84 +rend__Q211stlpmtx_std77_Vector_impl<12CamShotCrowd,Us,Q211stlpmtx_std28StlNodeAlloc<12CamShotCrowd>>Fv = .text:0x8058222C; // type:function size:0x8 +rbegin__Q211stlpmtx_std77_Vector_impl<12CamShotCrowd,Us,Q211stlpmtx_std28StlNodeAlloc<12CamShotCrowd>>Fv = .text:0x80582234; // type:function size:0x3C __dt__38ObjPtrList<13RndAnimatable,9ObjectDir>Fv = .text:0x80582270; // type:function size:0x6C -fn_805822DC = .text:0x805822DC; // type:function size:0x58 -fn_80582334 = .text:0x80582334; // type:function size:0x58 -fn_8058238C = .text:0x8058238C; // type:function size:0x80 -fn_8058240C = .text:0x8058240C; // type:function size:0x80 -fn_8058248C = .text:0x8058248C; // type:function size:0x58 -fn_805824E4 = .text:0x805824E4; // type:function size:0x10 -fn_805824F4 = .text:0x805824F4; // type:function size:0x54 -fn_80582548 = .text:0x80582548; // type:function size:0x5C +__dt__28ObjVector<12CamShotFrame,Us>Fv = .text:0x805822DC; // type:function size:0x58 +__dt__Q211stlpmtx_std71vector<12CamShotFrame,Us,Q211stlpmtx_std28StlNodeAlloc<12CamShotFrame>>Fv = .text:0x80582334; // type:function size:0x58 +__dt__Q211stlpmtx_std77_Vector_impl<12CamShotFrame,Us,Q211stlpmtx_std28StlNodeAlloc<12CamShotFrame>>Fv = .text:0x8058238C; // type:function size:0x80 +__dt__Q211stlpmtx_std77_Vector_base<12CamShotFrame,Us,Q211stlpmtx_std28StlNodeAlloc<12CamShotFrame>>Fv = .text:0x8058240C; // type:function size:0x80 +__dt__Q211stlpmtx_std95_STLP_alloc_proxy>Fv = .text:0x8058248C; // type:function size:0x58 +deallocate__Q211stlpmtx_std28StlNodeAlloc<12CamShotFrame>CFP12CamShotFrameUl = .text:0x805824E4; // type:function size:0x10 +_Destroy_Range>__11stlpmtx_stdFQ211stlpmtx_std33reverse_iteratorQ211stlpmtx_std33reverse_iterator_v = .text:0x805824F4; // type:function size:0x54 +__destroy_range,12CamShotFrame>__11stlpmtx_stdFQ211stlpmtx_std33reverse_iteratorQ211stlpmtx_std33reverse_iteratorP12CamShotFrame_v = .text:0x80582548; // type:function size:0x5C fn_805825A4 = .text:0x805825A4; // type:function size:0x6C fn_80582610 = .text:0x80582610; // type:function size:0x28 fn_80582638 = .text:0x80582638; // type:function size:0x10 fn_80582648 = .text:0x80582648; // type:function size:0x8 -fn_80582650 = .text:0x80582650; // type:function size:0x74 +__dt__12CamShotFrameFv = .text:0x80582650; // type:function size:0x74 fn_805826C4 = .text:0x805826C4; // type:function size:0xC -fn_805826D0 = .text:0x805826D0; // type:function size:0x8 -fn_805826D8 = .text:0x805826D8; // type:function size:0x3C -fn_80582714 = .text:0x80582714; // type:function size:0x14 -fn_80582728 = .text:0x80582728; // type:function size:0x6C -fn_80582794 = .text:0x80582794; // type:function size:0x50 -fn_805827E4 = .text:0x805827E4; // type:function size:0x30 +rend__Q211stlpmtx_std77_Vector_impl<12CamShotFrame,Us,Q211stlpmtx_std28StlNodeAlloc<12CamShotFrame>>Fv = .text:0x805826D0; // type:function size:0x8 +rbegin__Q211stlpmtx_std77_Vector_impl<12CamShotFrame,Us,Q211stlpmtx_std28StlNodeAlloc<12CamShotFrame>>Fv = .text:0x805826D8; // type:function size:0x3C +end__Q211stlpmtx_std71vector<12CamShotFrame,Us,Q211stlpmtx_std28StlNodeAlloc<12CamShotFrame>>Fv = .text:0x80582714; // type:function size:0x14 +__ct__29ObjPtr<9Spotlight,9ObjectDir>FPQ23Hmx6ObjectP9Spotlight = .text:0x80582728; // type:function size:0x6C +__ct__28ObjVector<12CamShotCrowd,Us>FPQ23Hmx6Object = .text:0x80582794; // type:function size:0x50 +__ct__Q211stlpmtx_std71vector<12CamShotCrowd,Us,Q211stlpmtx_std28StlNodeAlloc<12CamShotCrowd>>FRCQ211stlpmtx_std28StlNodeAlloc<12CamShotCrowd> = .text:0x805827E4; // type:function size:0x30 fn_80582814 = .text:0x80582814; // type:function size:0x30 fn_80582844 = .text:0x80582844; // type:function size:0x40 __ct__38ObjPtrList<13RndAnimatable,9ObjectDir>FPQ23Hmx6Object11ObjListMode = .text:0x80582884; // type:function size:0x68 -fn_805828EC = .text:0x805828EC; // type:function size:0x50 -fn_8058293C = .text:0x8058293C; // type:function size:0x30 +__ct__28ObjVector<12CamShotFrame,Us>FPQ23Hmx6Object = .text:0x805828EC; // type:function size:0x50 +__ct__Q211stlpmtx_std71vector<12CamShotFrame,Us,Q211stlpmtx_std28StlNodeAlloc<12CamShotFrame>>FRCQ211stlpmtx_std28StlNodeAlloc<12CamShotFrame> = .text:0x8058293C; // type:function size:0x30 fn_8058296C = .text:0x8058296C; // type:function size:0x30 fn_8058299C = .text:0x8058299C; // type:function size:0x40 -fn_805829DC = .text:0x805829DC; // type:function size:0x11C +__dt__7CamShotFv = .text:0x805829DC; // type:function size:0x11C fn_80582AF8 = .text:0x80582AF8; // type:function size:0x2C Init__7CamShotFv = .text:0x80582B24; // type:function size:0x34 NewObject__7CamShotFv = .text:0x80582B58; // type:function size:0x44 -fn_80582B9C = .text:0x80582B9C; // type:function size:0x4C +StaticClassName__7CamShotFv = .text:0x80582B9C; // type:function size:0x4C fn_80582BE8 = .text:0x80582BE8; // type:function size:0x8C fn_80582C74 = .text:0x80582C74; // type:function size:0xC fn_80582C80 = .text:0x80582C80; // type:function size:0x160 fn_80582DE0 = .text:0x80582DE0; // type:function size:0xB0 -fn_80582E90 = .text:0x80582E90; // type:function size:0x34C -fn_805831DC = .text:0x805831DC; // type:function size:0xB8 +DoHide__7CamShotFv = .text:0x80582E90; // type:function size:0x34C +UnHide__7CamShotFv = .text:0x805831DC; // type:function size:0xB8 fn_80583294 = .text:0x80583294; // type:function size:0xA4 fn_80583338 = .text:0x80583338; // type:function size:0x2D8 fn_80583610 = .text:0x80583610; // type:function size:0x5C @@ -46038,22 +46038,22 @@ fn_805836AC = .text:0x805836AC; // type:function size:0x378 fn_80583A24 = .text:0x80583A24; // type:function size:0x390 fn_80583DB4 = .text:0x80583DB4; // type:function size:0x10 fn_80583DC4 = .text:0x80583DC4; // type:function size:0x24 -fn_80583DE8 = .text:0x80583DE8; // type:function size:0x88 -fn_80583E70 = .text:0x80583E70; // type:function size:0x25C -fn_805840CC = .text:0x805840CC; // type:function size:0x28 -fn_805840F4 = .text:0x805840F4; // type:function size:0x28 -fn_8058411C = .text:0x8058411C; // type:function size:0x18C -fn_805842A8 = .text:0x805842A8; // type:function size:0x22C +CacheFrames__7CamShotFv = .text:0x80583DE8; // type:function size:0x88 +SetPos__7CamShotFR12CamShotFrameP6RndCam = .text:0x80583E70; // type:function size:0x25C +SetFieldOfView__12CamShotFrameFf = .text:0x805840CC; // type:function size:0x28 +PlatformOk__7CamShotCFv = .text:0x805840F4; // type:function size:0x28 +ShotOk__7CamShotFP7CamShot = .text:0x8058411C; // type:function size:0x18C +Copy__7CamShotFPCQ23Hmx6ObjectQ33Hmx6Object8CopyType = .text:0x805842A8; // type:function size:0x22C fn_805844D4 = .text:0x805844D4; // type:function size:0xB8 __as__36ObjPtrList<11RndDrawable,9ObjectDir>FRC36ObjPtrList<11RndDrawable,9ObjectDir> = .text:0x8058458C; // type:function size:0xB8 fn_80584644 = .text:0x80584644; // type:function size:0x8 -fn_8058464C = .text:0x8058464C; // type:function size:0x48 +push_back__28ObjVector<12CamShotCrowd,Us>FRC12CamShotCrowd = .text:0x8058464C; // type:function size:0x48 fn_80584694 = .text:0x80584694; // type:function size:0x58 fn_805846EC = .text:0x805846EC; // type:function size:0x30 fn_8058471C = .text:0x8058471C; // type:function size:0x8 fn_80584724 = .text:0x80584724; // type:function size:0x24 fn_80584748 = .text:0x80584748; // type:function size:0x3C -fn_80584784 = .text:0x80584784; // type:function size:0x5C +resize__28ObjVector<12CamShotCrowd,Us>FUl = .text:0x80584784; // type:function size:0x5C fn_805847E0 = .text:0x805847E0; // type:function size:0x4 fn_805847E4 = .text:0x805847E4; // type:function size:0x90 fn_80584874 = .text:0x80584874; // type:function size:0x4 @@ -46066,10 +46066,10 @@ fn_805849D0 = .text:0x805849D0; // type:function size:0x28 fn_805849F8 = .text:0x805849F8; // type:function size:0x68 fn_80584A60 = .text:0x80584A60; // type:function size:0x4 fn_80584A64 = .text:0x80584A64; // type:function size:0x3C -fn_80584AA0 = .text:0x80584AA0; // type:function size:0x48 +push_back__28ObjVector<12CamShotFrame,Us>FRC12CamShotFrame = .text:0x80584AA0; // type:function size:0x48 fn_80584AE8 = .text:0x80584AE8; // type:function size:0x114 fn_80584BFC = .text:0x80584BFC; // type:function size:0x3C -fn_80584C38 = .text:0x80584C38; // type:function size:0x5C +resize__28ObjVector<12CamShotFrame,Us>FUl = .text:0x80584C38; // type:function size:0x5C fn_80584C94 = .text:0x80584C94; // type:function size:0x4 fn_80584C98 = .text:0x80584C98; // type:function size:0x90 fn_80584D28 = .text:0x80584D28; // type:function size:0x4 @@ -46082,37 +46082,37 @@ fn_80584E84 = .text:0x80584E84; // type:function size:0x28 fn_80584EAC = .text:0x80584EAC; // type:function size:0x68 fn_80584F14 = .text:0x80584F14; // type:function size:0x4 fn_80584F18 = .text:0x80584F18; // type:function size:0x3C -fn_80584F54 = .text:0x80584F54; // type:function size:0x248 +LoadSubPart__FR9BinStreamP7CamShot = .text:0x80584F54; // type:function size:0x248 fn_8058519C = .text:0x8058519C; // type:function size:0x48 StaticClassName__13RndTransProxyFv = .text:0x805851E4; // type:function size:0x4C fn_80585230 = .text:0x80585230; // type:function size:0xA0 -fn_805852D0 = .text:0x805852D0; // type:function size:0xC4 -fn_80585394 = .text:0x80585394; // type:function size:0x4 -fn_80585398 = .text:0x80585398; // type:function size:0xB04 -fn_80585E9C = .text:0x80585E9C; // type:function size:0x74 -fn_80585F10 = .text:0x80585F10; // type:function size:0x38 -fn_80585F48 = .text:0x80585F48; // type:function size:0x80 -fn_80585FC8 = .text:0x80585FC8; // type:function size:0x44 -fn_8058600C = .text:0x8058600C; // type:function size:0x40 -fn_8058604C = .text:0x8058604C; // type:function size:0x104 -fn_80586150 = .text:0x80586150; // type:function size:0x40 -fn_80586190 = .text:0x80586190; // type:function size:0x104 -fn_80586294 = .text:0x80586294; // type:function size:0x74 -fn_80586308 = .text:0x80586308; // type:function size:0x38 -fn_80586340 = .text:0x80586340; // type:function size:0x44 -fn_80586384 = .text:0x80586384; // type:function size:0x78 -fn_805863FC = .text:0x805863FC; // type:function size:0xD0 -fn_805864CC = .text:0x805864CC; // type:function size:0x28 -fn_805864F4 = .text:0x805864F4; // type:function size:0x28 -fn_8058651C = .text:0x8058651C; // type:function size:0x28 -fn_80586544 = .text:0x80586544; // type:function size:0x58 -fn_8058659C = .text:0x8058659C; // type:function size:0x28 -fn_805865C4 = .text:0x805865C4; // type:function size:0x130 -fn_805866F4 = .text:0x805866F4; // type:function size:0x12C -fn_80586820 = .text:0x80586820; // type:function size:0x94 -fn_805868B4 = .text:0x805868B4; // type:function size:0x35C -fn_80586C10 = .text:0x80586C10; // type:function size:0x28 -fn_80586C38 = .text:0x80586C38; // type:function size:0xA8 +LoadDrawables__FR9BinStreamRQ211stlpmtx_std71vector>P9ObjectDir = .text:0x805852D0; // type:function size:0xC4 +Save__7CamShotFR9BinStream = .text:0x80585394; // type:function size:0x4 +Load__7CamShotFR9BinStream = .text:0x80585398; // type:function size:0xB04 +__rs<12CamShotFrame,Us>__FR9BinStreamR28ObjVector<12CamShotFrame,Us>_R9BinStream = .text:0x80585E9C; // type:function size:0x74 +__rs__FR9BinStreamR12CamShotFrame = .text:0x80585F10; // type:function size:0x38 +__rs,Us>__FR9BinStreamRQ211stlpmtx_std93vector,Us,Q211stlpmtx_std39StlNodeAlloc>>_R9BinStream = .text:0x80585F48; // type:function size:0x80 +__rs__FR9BinStreamRQ211stlpmtx_std9pair_R9BinStream = .text:0x80585FC8; // type:function size:0x44 +__rs<10WorldCrowd>__FR9BinStreamR31ObjPtr<10WorldCrowd,9ObjectDir>_R9BinStream = .text:0x8058600C; // type:function size:0x40 +Load__31ObjPtr<10WorldCrowd,9ObjectDir>FR9BinStreambP9ObjectDir = .text:0x8058604C; // type:function size:0x104 +__rs<9Spotlight>__FR9BinStreamR29ObjPtr<9Spotlight,9ObjectDir>_R9BinStream = .text:0x80586150; // type:function size:0x40 +Load__29ObjPtr<9Spotlight,9ObjectDir>FR9BinStreambP9ObjectDir = .text:0x80586190; // type:function size:0x104 +__rs<12CamShotCrowd,Us>__FR9BinStreamR28ObjVector<12CamShotCrowd,Us>_R9BinStream = .text:0x80586294; // type:function size:0x74 +__rs__FR9BinStreamR12CamShotCrowd = .text:0x80586308; // type:function size:0x38 +SetMaxAngularOffset__12CamShotFrameFRC7Vector2 = .text:0x80586340; // type:function size:0x44 +__ct__23ObjDirItr<10WorldCrowd>FP9ObjectDirb = .text:0x80586384; // type:function size:0x78 +Advance__23ObjDirItr<10WorldCrowd>Fv = .text:0x805863FC; // type:function size:0xD0 +SetMinBlur__12CamShotFrameFf = .text:0x805864CC; // type:function size:0x28 +SetMaxBlur__12CamShotFrameFf = .text:0x805864F4; // type:function size:0x28 +SetBlurDepth__12CamShotFrameFf = .text:0x8058651C; // type:function size:0x28 +GetDurationSeconds__7CamShotCFv = .text:0x80586544; // type:function size:0x58 +Disable__7CamShotFbi = .text:0x8058659C; // type:function size:0x28 +__ct__12CamShotFrameFPQ23Hmx6Object = .text:0x805865C4; // type:function size:0x130 +__ct__12CamShotFrameFPQ23Hmx6ObjectRC12CamShotFrame = .text:0x805866F4; // type:function size:0x12C +__ct__41ObjPtrList<16RndTransformable,9ObjectDir>FRC41ObjPtrList<16RndTransformable,9ObjectDir> = .text:0x80586820; // type:function size:0x94 +Load__12CamShotFrameFR9BinStream = .text:0x805868B4; // type:function size:0x35C +SetZoomFieldOfView__12CamShotFrameFf = .text:0x80586C10; // type:function size:0x28 +OnSyncTargets__12CamShotFrameFR41ObjPtrList<16RndTransformable,9ObjectDir>R8DataNodeP9DataArrayi6PropOp = .text:0x80586C38; // type:function size:0xA8 fn_80586CE0 = .text:0x80586CE0; // type:function size:0xA8 fn_80586D88 = .text:0x80586D88; // type:function size:0x130 fn_80586EB8 = .text:0x80586EB8; // type:function size:0x40 @@ -46123,26 +46123,26 @@ fn_80587714 = .text:0x80587714; // type:function size:0x38 fn_8058774C = .text:0x8058774C; // type:function size:0x38 fn_80587784 = .text:0x80587784; // type:function size:0x38 fn_805877BC = .text:0x805877BC; // type:function size:0x5C -fn_80587818 = .text:0x80587818; // type:function size:0x38 -fn_80587850 = .text:0x80587850; // type:function size:0x58 -fn_805878A8 = .text:0x805878A8; // type:function size:0xEC -fn_80587994 = .text:0x80587994; // type:function size:0x88 -fn_80587A1C = .text:0x80587A1C; // type:function size:0x408 -fn_80587E24 = .text:0x80587E24; // type:function size:0x8 -fn_80587E2C = .text:0x80587E2C; // type:function size:0x8 -fn_80587E34 = .text:0x80587E34; // type:function size:0x84 -fn_80587EB8 = .text:0x80587EB8; // type:function size:0x6C -fn_80587F24 = .text:0x80587F24; // type:function size:0x7C -fn_80587FA0 = .text:0x80587FA0; // type:function size:0x30 -fn_80587FD0 = .text:0x80587FD0; // type:function size:0x98 +FieldOfView__12CamShotFrameCFv = .text:0x80587818; // type:function size:0x38 +UpdateTarget__12CamShotFrameCFv = .text:0x80587850; // type:function size:0x58 +GetCurrentTargetPosition__12CamShotFrameCFR7Vector3 = .text:0x805878A8; // type:function size:0xEC +HasTargets__12CamShotFrameCFv = .text:0x80587994; // type:function size:0x88 +BuildTransform__12CamShotFrameCFP6RndCamR9Transformb = .text:0x80587A1C; // type:function size:0x408 +OnGetOccluded__7CamShotFP9DataArray = .text:0x80587E24; // type:function size:0x8 +OnSetAllCrowdChars3D__7CamShotFP9DataArray = .text:0x80587E2C; // type:function size:0x8 +__ct__12CamShotCrowdFPQ23Hmx6Object = .text:0x80587E34; // type:function size:0x84 +__ct__31ObjPtr<10WorldCrowd,9ObjectDir>FPQ23Hmx6ObjectP10WorldCrowd = .text:0x80587EB8; // type:function size:0x6C +__ct__12CamShotCrowdFPQ23Hmx6ObjectRC12CamShotCrowd = .text:0x80587F24; // type:function size:0x7C +__ct__Q211stlpmtx_std93vector,Us,Q211stlpmtx_std39StlNodeAlloc>>FRCQ211stlpmtx_std93vector,Us,Q211stlpmtx_std39StlNodeAlloc>> = .text:0x80587FA0; // type:function size:0x30 +__ct__Q211stlpmtx_std99_Vector_impl,Us,Q211stlpmtx_std39StlNodeAlloc>>FRCQ211stlpmtx_std99_Vector_impl,Us,Q211stlpmtx_std39StlNodeAlloc>> = .text:0x80587FD0; // type:function size:0x98 fn_80588068 = .text:0x80588068; // type:function size:0x70 -fn_805880D8 = .text:0x805880D8; // type:function size:0x70 -fn_80588148 = .text:0x80588148; // type:function size:0xBC +__ct__31ObjPtr<10WorldCrowd,9ObjectDir>FRC31ObjPtr<10WorldCrowd,9ObjectDir> = .text:0x805880D8; // type:function size:0x70 +Load__12CamShotCrowdFR9BinStream = .text:0x80588148; // type:function size:0xBC fn_80588204 = .text:0x80588204; // type:function size:0x60 fn_80588264 = .text:0x80588264; // type:function size:0x8 -fn_8058826C = .text:0x8058826C; // type:function size:0x4 -fn_80588270 = .text:0x80588270; // type:function size:0x60 -fn_805882D0 = .text:0x805882D0; // type:function size:0x7C +OnCrowdChanged__12CamShotCrowdFv = .text:0x8058826C; // type:function size:0x4 +ClearCrowdChars__12CamShotCrowdFv = .text:0x80588270; // type:function size:0x60 +SetCrowdChars__12CamShotCrowdFv = .text:0x805882D0; // type:function size:0x7C fn_8058834C = .text:0x8058834C; // type:function size:0x58 fn_805883A4 = .text:0x805883A4; // type:function size:0x58 fn_805883FC = .text:0x805883FC; // type:function size:0x60 @@ -46150,7 +46150,7 @@ fn_8058845C = .text:0x8058845C; // type:function size:0x58 fn_805884B4 = .text:0x805884B4; // type:function size:0x30 fn_805884E4 = .text:0x805884E4; // type:function size:0x30 fn_80588514 = .text:0x80588514; // type:function size:0x60 -fn_80588574 = .text:0x80588574; // type:function size:0x74 +AddCrowdChars__12CamShotCrowdFv = .text:0x80588574; // type:function size:0x74 fn_805885E8 = .text:0x805885E8; // type:function size:0xF0 fn_805886D8 = .text:0x805886D8; // type:function size:0x2C fn_80588704 = .text:0x80588704; // type:function size:0x4 @@ -46175,39 +46175,39 @@ fn_80588F8C = .text:0x80588F8C; // type:function size:0x2C fn_80588FB8 = .text:0x80588FB8; // type:function size:0x30 fn_80588FE8 = .text:0x80588FE8; // type:function size:0x8 Handle__7CamShotFP9DataArrayb = .text:0x80588FF0; // type:function size:0x4C8 -fn_805894B8 = .text:0x805894B8; // type:function size:0x5C -fn_80589514 = .text:0x80589514; // type:function size:0x4 -fn_80589518 = .text:0x80589518; // type:function size:0x70 -fn_80589588 = .text:0x80589588; // type:function size:0xC -fn_80589594 = .text:0x80589594; // type:function size:0x68 -fn_805895FC = .text:0x805895FC; // type:function size:0x4 -fn_80589600 = .text:0x80589600; // type:function size:0x4 -fn_80589604 = .text:0x80589604; // type:function size:0x68 -fn_8058966C = .text:0x8058966C; // type:function size:0x68 -fn_805896D4 = .text:0x805896D4; // type:function size:0x78 -fn_8058974C = .text:0x8058974C; // type:function size:0xA0 -fn_805897EC = .text:0x805897EC; // type:function size:0x21C +OnHasTargets__7CamShotFP9DataArray = .text:0x805894B8; // type:function size:0x5C +__vc__Q211stlpmtx_std71vector<12CamShotFrame,Us,Q211stlpmtx_std28StlNodeAlloc<12CamShotFrame>>FUl = .text:0x80589514; // type:function size:0x4 +OnSetPos__7CamShotFP9DataArray = .text:0x80589518; // type:function size:0x70 +Current__6RndCamFv = .text:0x80589588; // type:function size:0xC +OnClearCrowdChars__7CamShotFP9DataArray = .text:0x80589594; // type:function size:0x68 +__vc__Q211stlpmtx_std71vector<12CamShotCrowd,Us,Q211stlpmtx_std28StlNodeAlloc<12CamShotCrowd>>FUl = .text:0x805895FC; // type:function size:0x4 +size__Q211stlpmtx_std71vector<12CamShotCrowd,Us,Q211stlpmtx_std28StlNodeAlloc<12CamShotCrowd>>CFv = .text:0x80589600; // type:function size:0x4 +OnAddCrowdChars__7CamShotFP9DataArray = .text:0x80589604; // type:function size:0x68 +OnSetCrowdChars__7CamShotFP9DataArray = .text:0x8058966C; // type:function size:0x68 +OnRadio__7CamShotFP9DataArray = .text:0x805896D4; // type:function size:0x78 +OnSyncParent__12CamShotFrameFR37ObjPtr<16RndTransformable,9ObjectDir>R8DataNodeP9DataArrayi6PropOp = .text:0x8058974C; // type:function size:0xA0 +FOV_to_LensSym__Ff = .text:0x805897EC; // type:function size:0x21C fn_80589A08 = .text:0x80589A08; // type:function size:0x44 -fn_80589A4C = .text:0x80589A4C; // type:function size:0xC4 +LensSym_to_FOV__F6Symbol = .text:0x80589A4C; // type:function size:0xC4 fn_80589B10 = .text:0x80589B10; // type:function size:0x48 -fn_80589B58 = .text:0x80589B58; // type:function size:0x104 -fn_80589C5C = .text:0x80589C5C; // type:function size:0xD0 -fn_80589D2C = .text:0x80589D2C; // type:function size:0x844 -fn_8058A570 = .text:0x8058A570; // type:function size:0x7F0 -fn_8058AD60 = .text:0x8058AD60; // type:function size:0x170 -fn_8058AED0 = .text:0x8058AED0; // type:function size:0x2C -fn_8058AEFC = .text:0x8058AEFC; // type:function size:0x84 +PropSync__FR12CamShotCrowdR8DataNodeP9DataArrayi6PropOp = .text:0x80589B58; // type:function size:0x104 +PropSync<10WorldCrowd>__FR31ObjPtr<10WorldCrowd,9ObjectDir>R8DataNodeP9DataArrayi6PropOp_b = .text:0x80589C5C; // type:function size:0xD0 +PropSync__FR12CamShotFrameR8DataNodeP9DataArrayi6PropOp = .text:0x80589D2C; // type:function size:0x844 +SyncProperty__7CamShotFR8DataNodeP9DataArrayi6PropOp = .text:0x8058A570; // type:function size:0x7F0 +PropSync<12CamShotFrame,Us>__FR28ObjVector<12CamShotFrame,Us>R8DataNodeP9DataArrayi6PropOp_b = .text:0x8058AD60; // type:function size:0x170 +erase__Q211stlpmtx_std71vector<12CamShotFrame,Us,Q211stlpmtx_std28StlNodeAlloc<12CamShotFrame>>FP12CamShotFrame = .text:0x8058AED0; // type:function size:0x2C +erase__Q211stlpmtx_std77_Vector_impl<12CamShotFrame,Us,Q211stlpmtx_std28StlNodeAlloc<12CamShotFrame>>FP12CamShotFrame = .text:0x8058AEFC; // type:function size:0x84 fn_8058AF80 = .text:0x8058AF80; // type:function size:0x2C PropSync<11RndDrawable>__FR36ObjPtrList<11RndDrawable,9ObjectDir>R8DataNodeP9DataArrayi6PropOp_b = .text:0x8058AFAC; // type:function size:0x1E8 PropSync<11RndDrawable>__FRP11RndDrawableR8DataNodeP9DataArrayi6PropOp_b = .text:0x8058B194; // type:function size:0xC0 -fn_8058B254 = .text:0x8058B254; // type:function size:0xD0 -fn_8058B324 = .text:0x8058B324; // type:function size:0x170 -fn_8058B494 = .text:0x8058B494; // type:function size:0x2C +PropSync<9Spotlight>__FR29ObjPtr<9Spotlight,9ObjectDir>R8DataNodeP9DataArrayi6PropOp_b = .text:0x8058B254; // type:function size:0xD0 +PropSync<12CamShotCrowd,Us>__FR28ObjVector<12CamShotCrowd,Us>R8DataNodeP9DataArrayi6PropOp_b = .text:0x8058B324; // type:function size:0x170 +erase__Q211stlpmtx_std71vector<12CamShotCrowd,Us,Q211stlpmtx_std28StlNodeAlloc<12CamShotCrowd>>FP12CamShotCrowd = .text:0x8058B494; // type:function size:0x2C fn_8058B4C0 = .text:0x8058B4C0; // type:function size:0x84 fn_8058B544 = .text:0x8058B544; // type:function size:0x2C -fn_8058B570 = .text:0x8058B570; // type:function size:0x1E8 -fn_8058B758 = .text:0x8058B758; // type:function size:0xBC -fn_8058B814 = .text:0x8058B814; // type:function size:0x44 +PropSync<13RndAnimatable>__FR38ObjPtrList<13RndAnimatable,9ObjectDir>R8DataNodeP9DataArrayi6PropOp_b = .text:0x8058B570; // type:function size:0x1E8 +PropSync<13RndAnimatable>__FRP13RndAnimatableR8DataNodeP9DataArrayi6PropOp_b = .text:0x8058B758; // type:function size:0xBC +__pp__Q238ObjPtrList<13RndAnimatable,9ObjectDir>8iteratorFi = .text:0x8058B814; // type:function size:0x44 fn_8058B858 = .text:0x8058B858; // type:function size:0x10C fn_8058B964 = .text:0x8058B964; // type:function size:0x70 fn_8058B9D4 = .text:0x8058B9D4; // type:function size:0x70 @@ -46217,14 +46217,14 @@ fn_8058BBCC = .text:0x8058BBCC; // type:function size:0x5C fn_8058BC28 = .text:0x8058BC28; // type:function size:0x60 fn_8058BC88 = .text:0x8058BC88; // type:function size:0x68 fn_8058BCF0 = .text:0x8058BCF0; // type:function size:0x2C -fn_8058BD1C = .text:0x8058BD1C; // type:function size:0x58 +insert__Q211stlpmtx_std71vector<12CamShotFrame,Us,Q211stlpmtx_std28StlNodeAlloc<12CamShotFrame>>FP12CamShotFrameRC12CamShotFrame = .text:0x8058BD1C; // type:function size:0x58 fn_8058BD74 = .text:0x8058BD74; // type:function size:0x68 fn_8058BDDC = .text:0x8058BDDC; // type:function size:0x2C -fn_8058BE08 = .text:0x8058BE08; // type:function size:0x58 +insert__Q211stlpmtx_std71vector<12CamShotCrowd,Us,Q211stlpmtx_std28StlNodeAlloc<12CamShotCrowd>>FP12CamShotCrowdRC12CamShotCrowd = .text:0x8058BE08; // type:function size:0x58 fn_8058BE60 = .text:0x8058BE60; // type:function size:0x68 fn_8058BEC8 = .text:0x8058BEC8; // type:function size:0x2C -fn_8058BEF4 = .text:0x8058BEF4; // type:function size:0x134 -fn_8058C028 = .text:0x8058C028; // type:function size:0x4 +SetType__7CamShotF6Symbol = .text:0x8058BEF4; // type:function size:0x134 +ClassName__7CamShotCFv = .text:0x8058C028; // type:function size:0x4 fn_8058C02C = .text:0x8058C02C; // type:function size:0x198 fn_8058C1C4 = .text:0x8058C1C4; // type:function size:0x5C fn_8058C220 = .text:0x8058C220; // type:function size:0x10 @@ -46251,14 +46251,14 @@ fn_8058CA74 = .text:0x8058CA74; // type:function size:0x114 fn_8058CB88 = .text:0x8058CB88; // type:function size:0x5C fn_8058CBE4 = .text:0x8058CBE4; // type:function size:0x5C fn_8058CC40 = .text:0x8058CC40; // type:function size:0x54 -fn_8058CC94 = .text:0x8058CC94; // type:function size:0x14 -fn_8058CCA8 = .text:0x8058CCA8; // type:function size:0x14 -fn_8058CCBC = .text:0x8058CCBC; // type:function size:0x14 -fn_8058CCD0 = .text:0x8058CCD0; // type:function size:0x14 -fn_8058CCE4 = .text:0x8058CCE4; // type:function size:0x14 -fn_8058CCF8 = .text:0x8058CCF8; // type:function size:0x14 -fn_8058CD0C = .text:0x8058CD0C; // type:function size:0x14 -fn_8058CD20 = .text:0x8058CD20; // type:function size:0x14 +@292@28@Load__7CamShotFR9BinStream = .text:0x8058CC94; // type:function size:0x14 +@292@28@Copy__7CamShotFPCQ23Hmx6ObjectQ33Hmx6Object8CopyType = .text:0x8058CCA8; // type:function size:0x14 +@292@28@Save__7CamShotFR9BinStream = .text:0x8058CCBC; // type:function size:0x14 +@292@28@__dt__7CamShotFv = .text:0x8058CCD0; // type:function size:0x14 +@292@28@SyncProperty__7CamShotFR8DataNodeP9DataArrayi6PropOp = .text:0x8058CCE4; // type:function size:0x14 +@292@28@Handle__7CamShotFP9DataArrayb = .text:0x8058CCF8; // type:function size:0x14 +@292@28@SetType__7CamShotF6Symbol = .text:0x8058CD0C; // type:function size:0x14 +@292@28@ClassName__7CamShotCFv = .text:0x8058CD20; // type:function size:0x14 fn_8058CD34 = .text:0x8058CD34; // type:function size:0x104 fn_8058CE38 = .text:0x8058CE38; // type:function size:0x4 fn_8058CE3C = .text:0x8058CE3C; // type:function size:0x2C @@ -46305,8 +46305,8 @@ fn_8058E040 = .text:0x8058E040; // type:function size:0x8 fn_8058E048 = .text:0x8058E048; // type:function size:0x4 fn_8058E04C = .text:0x8058E04C; // type:function size:0x8 fn_8058E054 = .text:0x8058E054; // type:function size:0x178 -fn_8058E1CC = .text:0x8058E1CC; // type:function size:0x8 -fn_8058E1D4 = .text:0x8058E1D4; // type:function size:0x294 +OnRebuild__10WorldCrowdFP9DataArray = .text:0x8058E1CC; // type:function size:0x8 +Copy__10WorldCrowdFPCQ23Hmx6ObjectQ33Hmx6Object8CopyType = .text:0x8058E1D4; // type:function size:0x294 fn_8058E468 = .text:0x8058E468; // type:function size:0x30 fn_8058E498 = .text:0x8058E498; // type:function size:0x30 fn_8058E4C8 = .text:0x8058E4C8; // type:function size:0x68 @@ -46440,13 +46440,13 @@ fn_80591804 = .text:0x80591804; // type:function size:0x40 NextPass__6RndMatCFv = .text:0x80591844; // type:function size:0x8 fn_8059184C = .text:0x8059184C; // type:function size:0x22C fn_80591A78 = .text:0x80591A78; // type:function size:0x3C -fn_80591AB4 = .text:0x80591AB4; // type:function size:0x39C +SetFullness__10WorldCrowdFff = .text:0x80591AB4; // type:function size:0x39C fn_80591E50 = .text:0x80591E50; // type:function size:0x4 fn_80591E54 = .text:0x80591E54; // type:function size:0x3C fn_80591E90 = .text:0x80591E90; // type:function size:0x2C fn_80591EBC = .text:0x80591EBC; // type:function size:0x80 fn_80591F3C = .text:0x80591F3C; // type:function size:0x68 -fn_80591FA4 = .text:0x80591FA4; // type:function size:0x4 +Save__10WorldCrowdFR9BinStream = .text:0x80591FA4; // type:function size:0x4 fn_80591FA8 = .text:0x80591FA8; // type:function size:0x58 fn_80592000 = .text:0x80592000; // type:function size:0x58 fn_80592058 = .text:0x80592058; // type:function size:0x60 @@ -46457,7 +46457,7 @@ fn_805921C4 = .text:0x805921C4; // type:function size:0x4 fn_805921C8 = .text:0x805921C8; // type:function size:0x30 fn_805921F8 = .text:0x805921F8; // type:function size:0x30 fn_80592228 = .text:0x80592228; // type:function size:0x60 -fn_80592288 = .text:0x80592288; // type:function size:0x564 +Load__10WorldCrowdFR9BinStream = .text:0x80592288; // type:function size:0x564 fn_805927EC = .text:0x805927EC; // type:function size:0xAC fn_80592898 = .text:0x80592898; // type:function size:0x34 fn_805928CC = .text:0x805928CC; // type:function size:0x38 @@ -46486,17 +46486,17 @@ fn_80592DD8 = .text:0x80592DD8; // type:function size:0x8 fn_80592DE0 = .text:0x80592DE0; // type:function size:0x30 fn_80592E10 = .text:0x80592E10; // type:function size:0x30 fn_80592E40 = .text:0x80592E40; // type:function size:0x60 -fn_80592EA0 = .text:0x80592EA0; // type:function size:0x218 +AssignRandomColors__10WorldCrowdFv = .text:0x80592EA0; // type:function size:0x218 fn_805930B8 = .text:0x805930B8; // type:function size:0x4 fn_805930BC = .text:0x805930BC; // type:function size:0x3C fn_805930F8 = .text:0x805930F8; // type:function size:0xA0 fn_80593198 = .text:0x80593198; // type:function size:0x58 fn_805931F0 = .text:0x805931F0; // type:function size:0x140 fn_80593330 = .text:0x80593330; // type:function size:0x104 -fn_80593434 = .text:0x80593434; // type:function size:0xA0 -fn_805934D4 = .text:0x805934D4; // type:function size:0xB8 -fn_8059358C = .text:0x8059358C; // type:function size:0x150 -fn_805936DC = .text:0x805936DC; // type:function size:0x98 +ListPollChildren__10WorldCrowdCFRQ211stlpmtx_std66list> = .text:0x80593434; // type:function size:0xA0 +Poll__10WorldCrowdFv = .text:0x805934D4; // type:function size:0xB8 +Enter__10WorldCrowdFv = .text:0x8059358C; // type:function size:0x150 +Exit__10WorldCrowdFv = .text:0x805936DC; // type:function size:0x98 fn_80593774 = .text:0x80593774; // type:function size:0x344 fn_80593AB8 = .text:0x80593AB8; // type:function size:0x58 fn_80593B10 = .text:0x80593B10; // type:function size:0x4 @@ -46514,13 +46514,13 @@ fn_80593CD8 = .text:0x80593CD8; // type:function size:0x7C fn_80593D54 = .text:0x80593D54; // type:function size:0x88 fn_80593DDC = .text:0x80593DDC; // type:function size:0x40 fn_80593E1C = .text:0x80593E1C; // type:function size:0x104 -fn_80593F20 = .text:0x80593F20; // type:function size:0x2B8 +Handle__10WorldCrowdFP9DataArrayb = .text:0x80593F20; // type:function size:0x2B8 fn_805941D8 = .text:0x805941D8; // type:function size:0x90 -fn_80594268 = .text:0x80594268; // type:function size:0x260 -fn_805944C8 = .text:0x805944C8; // type:function size:0x98 +OnIterateFrac__10WorldCrowdFP9DataArray = .text:0x80594268; // type:function size:0x260 +CleanUpCrowdFloor__10WorldCrowdFv = .text:0x805944C8; // type:function size:0x98 fn_80594560 = .text:0x80594560; // type:function size:0x148 fn_805946A8 = .text:0x805946A8; // type:function size:0xCC -fn_80594774 = .text:0x80594774; // type:function size:0x320 +SyncProperty__10WorldCrowdFR8DataNodeP9DataArrayi6PropOp = .text:0x80594774; // type:function size:0x320 fn_80594A94 = .text:0x80594A94; // type:function size:0x1A8 fn_80594C3C = .text:0x80594C3C; // type:function size:0x58 fn_80594C94 = .text:0x80594C94; // type:function size:0x64 @@ -46601,35 +46601,35 @@ fn_80596D38 = .text:0x80596D38; // type:function size:0x10 fn_80596D48 = .text:0x80596D48; // type:function size:0x48 fn_80596D90 = .text:0x80596D90; // type:function size:0x8C fn_80596E1C = .text:0x80596E1C; // type:function size:0x6C -fn_80596E88 = .text:0x80596E88; // type:function size:0x144 -fn_80596FCC = .text:0x80596FCC; // type:function size:0x4C -fn_80597018 = .text:0x80597018; // type:function size:0x4 +SetType__10WorldCrowdF6Symbol = .text:0x80596E88; // type:function size:0x144 +StaticClassName__10WorldCrowdFv = .text:0x80596FCC; // type:function size:0x4C +ClassName__10WorldCrowdCFv = .text:0x80597018; // type:function size:0x4 fn_8059701C = .text:0x8059701C; // type:function size:0x10 -fn_8059702C = .text:0x8059702C; // type:function size:0x14 -fn_80597040 = .text:0x80597040; // type:function size:0x14 -fn_80597054 = .text:0x80597054; // type:function size:0x14 -fn_80597068 = .text:0x80597068; // type:function size:0x14 -fn_8059707C = .text:0x8059707C; // type:function size:0x14 -fn_80597090 = .text:0x80597090; // type:function size:0x14 -fn_805970A4 = .text:0x805970A4; // type:function size:0x14 -fn_805970B8 = .text:0x805970B8; // type:function size:0x14 -fn_805970CC = .text:0x805970CC; // type:function size:0x14 -fn_805970E0 = .text:0x805970E0; // type:function size:0x14 -fn_805970F4 = .text:0x805970F4; // type:function size:0x8 -fn_805970FC = .text:0x805970FC; // type:function size:0x8 -fn_80597104 = .text:0x80597104; // type:function size:0x8 -fn_8059710C = .text:0x8059710C; // type:function size:0x8 -fn_80597114 = .text:0x80597114; // type:function size:0x8 -fn_8059711C = .text:0x8059711C; // type:function size:0x8 -fn_80597124 = .text:0x80597124; // type:function size:0x8 -fn_8059712C = .text:0x8059712C; // type:function size:0x8 +@172@8@Highlight__11RndDrawableFv = .text:0x8059702C; // type:function size:0x14 +@172@8@__dt__10WorldCrowdFv = .text:0x80597040; // type:function size:0x14 +@140@28@Load__10WorldCrowdFR9BinStream = .text:0x80597054; // type:function size:0x14 +@140@28@Copy__10WorldCrowdFPCQ23Hmx6ObjectQ33Hmx6Object8CopyType = .text:0x80597068; // type:function size:0x14 +@140@28@Save__10WorldCrowdFR9BinStream = .text:0x8059707C; // type:function size:0x14 +@140@28@__dt__10WorldCrowdFv = .text:0x80597090; // type:function size:0x14 +@140@28@SyncProperty__10WorldCrowdFR8DataNodeP9DataArrayi6PropOp = .text:0x805970A4; // type:function size:0x14 +@140@28@Handle__10WorldCrowdFP9DataArrayb = .text:0x805970B8; // type:function size:0x14 +@140@28@SetType__10WorldCrowdF6Symbol = .text:0x805970CC; // type:function size:0x14 +@140@28@ClassName__10WorldCrowdCFv = .text:0x805970E0; // type:function size:0x14 +@32@__dt__10WorldCrowdFv = .text:0x805970F4; // type:function size:0x8 +@32@ListPollChildren__10WorldCrowdCFRQ211stlpmtx_std66list> = .text:0x805970FC; // type:function size:0x8 +@32@Exit__10WorldCrowdFv = .text:0x80597104; // type:function size:0x8 +@32@Enter__10WorldCrowdFv = .text:0x8059710C; // type:function size:0x8 +@32@Poll__10WorldCrowdFv = .text:0x80597114; // type:function size:0x8 +@32@Handle__10WorldCrowdFP9DataArrayb = .text:0x8059711C; // type:function size:0x8 +@32@SetType__10WorldCrowdF6Symbol = .text:0x80597124; // type:function size:0x8 +@32@ClassName__10WorldCrowdCFv = .text:0x8059712C; // type:function size:0x8 __ct__12ColorPaletteFv = .text:0x80597134; // type:function size:0x54 -fn_80597188 = .text:0x80597188; // type:function size:0x48 +__rs__FR9BinStreamR8ColorSet = .text:0x80597188; // type:function size:0x48 Save__12ColorPaletteFR9BinStream = .text:0x805971D0; // type:function size:0x4 Load__12ColorPaletteFR9BinStream = .text:0x805971D4; // type:function size:0xE0 -fn_805972B4 = .text:0x805972B4; // type:function size:0x80 -fn_80597334 = .text:0x80597334; // type:function size:0x4 -fn_80597338 = .text:0x80597338; // type:function size:0x90 +__rs<8ColorSet,Us>__FR9BinStreamRQ211stlpmtx_std61vector<8ColorSet,Us,Q211stlpmtx_std23StlNodeAlloc<8ColorSet>>_R9BinStream = .text:0x805972B4; // type:function size:0x80 +resize__Q211stlpmtx_std61vector<8ColorSet,Us,Q211stlpmtx_std23StlNodeAlloc<8ColorSet>>FUlRC8ColorSet = .text:0x80597334; // type:function size:0x4 +resize__Q211stlpmtx_std67_Vector_impl<8ColorSet,Us,Q211stlpmtx_std23StlNodeAlloc<8ColorSet>>FUlRC8ColorSet = .text:0x80597338; // type:function size:0x90 fn_805973C8 = .text:0x805973C8; // type:function size:0x4 fn_805973CC = .text:0x805973CC; // type:function size:0x40 fn_8059740C = .text:0x8059740C; // type:function size:0x8C @@ -46638,8 +46638,8 @@ fn_805974A0 = .text:0x805974A0; // type:function size:0x2C fn_805974CC = .text:0x805974CC; // type:function size:0x58 fn_80597524 = .text:0x80597524; // type:function size:0x28 fn_8059754C = .text:0x8059754C; // type:function size:0x68 -fn_805975B4 = .text:0x805975B4; // type:function size:0x38 -fn_805975EC = .text:0x805975EC; // type:function size:0x58 +__ct__8ColorSetFv = .text:0x805975B4; // type:function size:0x38 +__dt__Q211stlpmtx_std61vector<8ColorSet,Us,Q211stlpmtx_std23StlNodeAlloc<8ColorSet>>Fv = .text:0x805975EC; // type:function size:0x58 fn_80597644 = .text:0x80597644; // type:function size:0x80 fn_805976C4 = .text:0x805976C4; // type:function size:0x80 fn_80597744 = .text:0x80597744; // type:function size:0x58 @@ -46649,7 +46649,7 @@ fn_8059784C = .text:0x8059784C; // type:function size:0x6C fn_805978B8 = .text:0x805978B8; // type:function size:0x28 fn_805978E0 = .text:0x805978E0; // type:function size:0x8 fn_805978E8 = .text:0x805978E8; // type:function size:0x3C -fn_80597924 = .text:0x80597924; // type:function size:0x30 +__ct__Q211stlpmtx_std61vector<8ColorSet,Us,Q211stlpmtx_std23StlNodeAlloc<8ColorSet>>FRCQ211stlpmtx_std23StlNodeAlloc<8ColorSet> = .text:0x80597924; // type:function size:0x30 fn_80597954 = .text:0x80597954; // type:function size:0x30 fn_80597984 = .text:0x80597984; // type:function size:0x40 Copy__12ColorPaletteFPCQ23Hmx6ObjectQ33Hmx6Object8CopyType = .text:0x805979C4; // type:function size:0x74 @@ -46672,151 +46672,151 @@ fn_80598200 = .text:0x80598200; // type:function size:0x60 fn_80598260 = .text:0x80598260; // type:function size:0x5C fn_805982BC = .text:0x805982BC; // type:function size:0x54 __ct__8WorldDirFv = .text:0x80598310; // type:function size:0x288 -fn_80598598 = .text:0x80598598; // type:function size:0x80 -fn_80598618 = .text:0x80598618; // type:function size:0x6C -fn_80598684 = .text:0x80598684; // type:function size:0x40 -fn_805986C4 = .text:0x805986C4; // type:function size:0x44 -fn_80598708 = .text:0x80598708; // type:function size:0x54 -fn_8059875C = .text:0x8059875C; // type:function size:0x58 +__dt__32ObjPtr<11LightPreset,9ObjectDir>Fv = .text:0x80598598; // type:function size:0x80 +__dt__35ObjPtrList<10WorldCrowd,9ObjectDir>Fv = .text:0x80598618; // type:function size:0x6C +clear__35ObjPtrList<10WorldCrowd,9ObjectDir>Fv = .text:0x80598684; // type:function size:0x40 +pop_back__35ObjPtrList<10WorldCrowd,9ObjectDir>Fv = .text:0x805986C4; // type:function size:0x44 +erase__35ObjPtrList<10WorldCrowd,9ObjectDir>FQ235ObjPtrList<10WorldCrowd,9ObjectDir>8iterator = .text:0x80598708; // type:function size:0x54 +__dt__33ObjListFv = .text:0x8059875C; // type:function size:0x58 fn_805987B4 = .text:0x805987B4; // type:function size:0x58 fn_8059880C = .text:0x8059880C; // type:function size:0x58 fn_80598864 = .text:0x80598864; // type:function size:0x60 fn_805988C4 = .text:0x805988C4; // type:function size:0x58 -fn_8059891C = .text:0x8059891C; // type:function size:0x58 +__dt__36ObjListFv = .text:0x8059891C; // type:function size:0x58 fn_80598974 = .text:0x80598974; // type:function size:0x58 fn_805989CC = .text:0x805989CC; // type:function size:0x58 fn_80598A24 = .text:0x80598A24; // type:function size:0x60 fn_80598A84 = .text:0x80598A84; // type:function size:0x58 -fn_80598ADC = .text:0x80598ADC; // type:function size:0x58 +__dt__36ObjListFv = .text:0x80598ADC; // type:function size:0x58 fn_80598B34 = .text:0x80598B34; // type:function size:0x58 fn_80598B8C = .text:0x80598B8C; // type:function size:0x58 fn_80598BE4 = .text:0x80598BE4; // type:function size:0x60 fn_80598C44 = .text:0x80598C44; // type:function size:0x58 -fn_80598C9C = .text:0x80598C9C; // type:function size:0x68 -fn_80598D04 = .text:0x80598D04; // type:function size:0x68 -fn_80598D6C = .text:0x80598D6C; // type:function size:0x50 -fn_80598DBC = .text:0x80598DBC; // type:function size:0x30 -fn_80598DEC = .text:0x80598DEC; // type:function size:0x30 -fn_80598E1C = .text:0x80598E1C; // type:function size:0x60 -fn_80598E7C = .text:0x80598E7C; // type:function size:0x50 -fn_80598ECC = .text:0x80598ECC; // type:function size:0x30 -fn_80598EFC = .text:0x80598EFC; // type:function size:0x30 -fn_80598F2C = .text:0x80598F2C; // type:function size:0x60 -fn_80598F8C = .text:0x80598F8C; // type:function size:0x50 -fn_80598FDC = .text:0x80598FDC; // type:function size:0x30 -fn_8059900C = .text:0x8059900C; // type:function size:0x30 -fn_8059903C = .text:0x8059903C; // type:function size:0x60 -fn_8059909C = .text:0x8059909C; // type:function size:0xA4 -fn_80599140 = .text:0x80599140; // type:function size:0x28 -Init__8WorldDirFv = .text:0x80599168; // type:function size:0x34 +__ct__32ObjPtr<11LightPreset,9ObjectDir>FPQ23Hmx6ObjectP11LightPreset = .text:0x80598C9C; // type:function size:0x68 +__ct__35ObjPtrList<10WorldCrowd,9ObjectDir>FPQ23Hmx6Object11ObjListMode = .text:0x80598D04; // type:function size:0x68 +__ct__33ObjListFPQ23Hmx6Object = .text:0x80598D6C; // type:function size:0x50 +__ct__Q211stlpmtx_std86list>FRCQ211stlpmtx_std38StlNodeAlloc = .text:0x80598DBC; // type:function size:0x30 +__ct__Q211stlpmtx_std92_List_impl>FRCQ211stlpmtx_std38StlNodeAlloc = .text:0x80598DEC; // type:function size:0x30 +__ct__Q211stlpmtx_std92_List_base>FRCQ211stlpmtx_std38StlNodeAlloc = .text:0x80598E1C; // type:function size:0x60 +__ct__36ObjListFPQ23Hmx6Object = .text:0x80598E7C; // type:function size:0x50 +__ct__Q211stlpmtx_std92list>FRCQ211stlpmtx_std41StlNodeAlloc = .text:0x80598ECC; // type:function size:0x30 +__ct__Q211stlpmtx_std98_List_impl>FRCQ211stlpmtx_std41StlNodeAlloc = .text:0x80598EFC; // type:function size:0x30 +__ct__Q211stlpmtx_std98_List_base>FRCQ211stlpmtx_std41StlNodeAlloc = .text:0x80598F2C; // type:function size:0x60 +__ct__36ObjListFPQ23Hmx6Object = .text:0x80598F8C; // type:function size:0x50 +__ct__Q211stlpmtx_std92list>FRCQ211stlpmtx_std41StlNodeAlloc = .text:0x80598FDC; // type:function size:0x30 +__ct__Q211stlpmtx_std98_List_impl>FRCQ211stlpmtx_std41StlNodeAlloc = .text:0x8059900C; // type:function size:0x30 +__ct__Q211stlpmtx_std98_List_base>FRCQ211stlpmtx_std41StlNodeAlloc = .text:0x8059903C; // type:function size:0x60 +SetTheWorld__FP8WorldDir = .text:0x8059909C; // type:function size:0xA4 +Init__8WorldDirFv = .text:0x80599140; // type:function size:0x28 +Register__8WorldDirFv = .text:0x80599168; // type:function size:0x34 NewObject__8WorldDirFv = .text:0x8059919C; // type:function size:0x44 -fn_805991E0 = .text:0x805991E0; // type:function size:0x4C -fn_8059922C = .text:0x8059922C; // type:function size:0x1F4 -fn_80599420 = .text:0x80599420; // type:function size:0xA8 -fn_805994C8 = .text:0x805994C8; // type:function size:0x28 -fn_805994F0 = .text:0x805994F0; // type:function size:0x74 -fn_80599564 = .text:0x80599564; // type:function size:0x60 -fn_805995C4 = .text:0x805995C4; // type:function size:0x80 -fn_80599644 = .text:0x80599644; // type:function size:0x118 -fn_8059975C = .text:0x8059975C; // type:function size:0x4 -fn_80599760 = .text:0x80599760; // type:function size:0x170 -fn_805998D0 = .text:0x805998D0; // type:function size:0x8 -fn_805998D8 = .text:0x805998D8; // type:function size:0xB8 -fn_80599990 = .text:0x80599990; // type:function size:0x5C -fn_805999EC = .text:0x805999EC; // type:function size:0x30 -fn_80599A1C = .text:0x80599A1C; // type:function size:0x5C -fn_80599A78 = .text:0x80599A78; // type:function size:0x68 -fn_80599AE0 = .text:0x80599AE0; // type:function size:0x80 +StaticClassName__8WorldDirFv = .text:0x805991E0; // type:function size:0x4C +__dt__8WorldDirFv = .text:0x8059922C; // type:function size:0x1F4 +Enter__8WorldDirFv = .text:0x80599420; // type:function size:0xA8 +ClearDeltas__8WorldDirFv = .text:0x805994C8; // type:function size:0x28 +AccumulateDeltas__8WorldDirFPf = .text:0x805994F0; // type:function size:0x74 +ExtendDeltas__8WorldDirFv = .text:0x80599564; // type:function size:0x60 +RestoreDeltas__8WorldDirFPf = .text:0x805995C4; // type:function size:0x80 +Poll__8WorldDirFv = .text:0x80599644; // type:function size:0x118 +Save__8WorldDirFR9BinStream = .text:0x8059975C; // type:function size:0x4 +Copy__8WorldDirFPCQ23Hmx6ObjectQ33Hmx6Object8CopyType = .text:0x80599760; // type:function size:0x170 +__as__32ObjPtr<11LightPreset,9ObjectDir>FRC32ObjPtr<11LightPreset,9ObjectDir> = .text:0x805998D0; // type:function size:0x8 +__as__31ObjPtrList<7CamShot,9ObjectDir>FRC31ObjPtrList<7CamShot,9ObjectDir> = .text:0x805998D8; // type:function size:0xB8 +__as__36ObjListFRC36ObjList = .text:0x80599990; // type:function size:0x5C +__as__Q211stlpmtx_std92list>FRCQ211stlpmtx_std92list> = .text:0x805999EC; // type:function size:0x30 +resize__36ObjListFUl = .text:0x80599A1C; // type:function size:0x5C +__dt__Q28WorldDir14PresetOverrideFv = .text:0x80599A78; // type:function size:0x68 +__dt__28ObjPtr<8LightHue,9ObjectDir>Fv = .text:0x80599AE0; // type:function size:0x80 fn_80599B60 = .text:0x80599B60; // type:function size:0x4 -fn_80599B64 = .text:0x80599B64; // type:function size:0x50 -fn_80599BB4 = .text:0x80599BB4; // type:function size:0x68 -fn_80599C1C = .text:0x80599C1C; // type:function size:0x4C +__ct__Q28WorldDir14PresetOverrideFPQ23Hmx6Object = .text:0x80599B64; // type:function size:0x50 +__ct__28ObjPtr<8LightHue,9ObjectDir>FPQ23Hmx6ObjectP8LightHue = .text:0x80599BB4; // type:function size:0x68 +size__Q211stlpmtx_std92list>CFv = .text:0x80599C1C; // type:function size:0x4C fn_80599C68 = .text:0x80599C68; // type:function size:0x70 fn_80599CD8 = .text:0x80599CD8; // type:function size:0x30 fn_80599D08 = .text:0x80599D08; // type:function size:0x2C -fn_80599D34 = .text:0x80599D34; // type:function size:0x5C -fn_80599D90 = .text:0x80599D90; // type:function size:0x30 -fn_80599DC0 = .text:0x80599DC0; // type:function size:0x5C -fn_80599E1C = .text:0x80599E1C; // type:function size:0x74 -fn_80599E90 = .text:0x80599E90; // type:function size:0x4 -fn_80599E94 = .text:0x80599E94; // type:function size:0x60 -fn_80599EF4 = .text:0x80599EF4; // type:function size:0x4C +__as__33ObjListFRC33ObjList = .text:0x80599D34; // type:function size:0x5C +__as__Q211stlpmtx_std86list>FRCQ211stlpmtx_std86list> = .text:0x80599D90; // type:function size:0x30 +resize__33ObjListFUl = .text:0x80599DC0; // type:function size:0x5C +__dt__Q28WorldDir11MatOverrideFv = .text:0x80599E1C; // type:function size:0x74 +resize__Q211stlpmtx_std86list>FUlRCQ28WorldDir11MatOverride = .text:0x80599E90; // type:function size:0x4 +__ct__Q28WorldDir11MatOverrideFPQ23Hmx6Object = .text:0x80599E94; // type:function size:0x60 +size__Q211stlpmtx_std86list>CFv = .text:0x80599EF4; // type:function size:0x4C fn_80599F40 = .text:0x80599F40; // type:function size:0x70 fn_80599FB0 = .text:0x80599FB0; // type:function size:0x30 fn_80599FE0 = .text:0x80599FE0; // type:function size:0x2C -fn_8059A00C = .text:0x8059A00C; // type:function size:0x5C -fn_8059A068 = .text:0x8059A068; // type:function size:0x30 -fn_8059A098 = .text:0x8059A098; // type:function size:0x5C -fn_8059A0F4 = .text:0x8059A0F4; // type:function size:0x68 -fn_8059A15C = .text:0x8059A15C; // type:function size:0x4 -fn_8059A160 = .text:0x8059A160; // type:function size:0x50 -fn_8059A1B0 = .text:0x8059A1B0; // type:function size:0x4C +__as__36ObjListFRC36ObjList = .text:0x8059A00C; // type:function size:0x5C +__as__Q211stlpmtx_std92list>FRCQ211stlpmtx_std92list> = .text:0x8059A068; // type:function size:0x30 +resize__36ObjListFUl = .text:0x8059A098; // type:function size:0x5C +__dt__Q28WorldDir14BitmapOverrideFv = .text:0x8059A0F4; // type:function size:0x68 +resize__Q211stlpmtx_std92list>FUlRCQ28WorldDir14BitmapOverride = .text:0x8059A15C; // type:function size:0x4 +__ct__Q28WorldDir14BitmapOverrideFPQ23Hmx6Object = .text:0x8059A160; // type:function size:0x50 +size__Q211stlpmtx_std92list>CFv = .text:0x8059A1B0; // type:function size:0x4C fn_8059A1FC = .text:0x8059A1FC; // type:function size:0x70 fn_8059A26C = .text:0x8059A26C; // type:function size:0x30 fn_8059A29C = .text:0x8059A29C; // type:function size:0x2C -fn_8059A2C8 = .text:0x8059A2C8; // type:function size:0x174 -fn_8059A43C = .text:0x8059A43C; // type:function size:0x60 -fn_8059A49C = .text:0x8059A49C; // type:function size:0x164 -fn_8059A600 = .text:0x8059A600; // type:function size:0x418 -fn_8059AA18 = .text:0x8059AA18; // type:function size:0xAC +__rs__FR9BinStreamRQ28WorldDir14BitmapOverride = .text:0x8059A2C8; // type:function size:0x174 +New<6RndTex>__9ObjectDirFPCc_P6RndTex = .text:0x8059A43C; // type:function size:0x60 +PreLoad__8WorldDirFR9BinStream = .text:0x8059A49C; // type:function size:0x164 +PostLoad__8WorldDirFR9BinStream = .text:0x8059A600; // type:function size:0x418 +__rs__FR9BinStreamR36ObjList_R9BinStream = .text:0x8059AA18; // type:function size:0xAC fn_8059AAC4 = .text:0x8059AAC4; // type:function size:0x4 fn_8059AAC8 = .text:0x8059AAC8; // type:function size:0x4 fn_8059AACC = .text:0x8059AACC; // type:function size:0x34 fn_8059AB00 = .text:0x8059AB00; // type:function size:0x4 fn_8059AB04 = .text:0x8059AB04; // type:function size:0x8 -fn_8059AB0C = .text:0x8059AB0C; // type:function size:0xAC +__rs__FR9BinStreamR33ObjList_R9BinStream = .text:0x8059AB0C; // type:function size:0xAC fn_8059ABB8 = .text:0x8059ABB8; // type:function size:0x4 fn_8059ABBC = .text:0x8059ABBC; // type:function size:0x4 fn_8059ABC0 = .text:0x8059ABC0; // type:function size:0x34 -fn_8059ABF4 = .text:0x8059ABF4; // type:function size:0x44 +__rs__FR9BinStreamRQ28WorldDir11MatOverride = .text:0x8059ABF4; // type:function size:0x44 fn_8059AC38 = .text:0x8059AC38; // type:function size:0x4 fn_8059AC3C = .text:0x8059AC3C; // type:function size:0x8 -fn_8059AC44 = .text:0x8059AC44; // type:function size:0xAC +__rs__FR9BinStreamR36ObjList_R9BinStream = .text:0x8059AC44; // type:function size:0xAC fn_8059ACF0 = .text:0x8059ACF0; // type:function size:0x4 fn_8059ACF4 = .text:0x8059ACF4; // type:function size:0x4 fn_8059ACF8 = .text:0x8059ACF8; // type:function size:0x34 -fn_8059AD2C = .text:0x8059AD2C; // type:function size:0x44 -fn_8059AD70 = .text:0x8059AD70; // type:function size:0x40 -fn_8059ADB0 = .text:0x8059ADB0; // type:function size:0x104 +__rs__FR9BinStreamRQ28WorldDir14PresetOverride = .text:0x8059AD2C; // type:function size:0x44 +__rs<8LightHue>__FR9BinStreamR28ObjPtr<8LightHue,9ObjectDir>_R9BinStream = .text:0x8059AD70; // type:function size:0x40 +Load__28ObjPtr<8LightHue,9ObjectDir>FR9BinStreambP9ObjectDir = .text:0x8059ADB0; // type:function size:0x104 fn_8059AEB4 = .text:0x8059AEB4; // type:function size:0x4 fn_8059AEB8 = .text:0x8059AEB8; // type:function size:0x8 -fn_8059AEC0 = .text:0x8059AEC0; // type:function size:0x40 -fn_8059AF00 = .text:0x8059AF00; // type:function size:0x104 -fn_8059B004 = .text:0x8059B004; // type:function size:0x11C -fn_8059B120 = .text:0x8059B120; // type:function size:0x8 -fn_8059B128 = .text:0x8059B128; // type:function size:0xFC -fn_8059B224 = .text:0x8059B224; // type:function size:0x84 -fn_8059B2A8 = .text:0x8059B2A8; // type:function size:0x2C -fn_8059B2D4 = .text:0x8059B2D4; // type:function size:0x30 -fn_8059B304 = .text:0x8059B304; // type:function size:0x50 -fn_8059B354 = .text:0x8059B354; // type:function size:0x4C -fn_8059B3A0 = .text:0x8059B3A0; // type:function size:0x78 +__rs<11LightPreset>__FR9BinStreamR32ObjPtr<11LightPreset,9ObjectDir>_R9BinStream = .text:0x8059AEC0; // type:function size:0x40 +Load__32ObjPtr<11LightPreset,9ObjectDir>FR9BinStreambP9ObjectDir = .text:0x8059AF00; // type:function size:0x104 +Load__31ObjPtrList<7CamShot,9ObjectDir>FR9BinStreamb = .text:0x8059B004; // type:function size:0x11C +SetCam__8PanelDirFP6RndCam = .text:0x8059B120; // type:function size:0x8 +SyncObjects__8WorldDirFv = .text:0x8059B128; // type:function size:0xFC +VectorRemove>__FRQ211stlpmtx_std71vector>RC26ObjPtr<6RndDir,9ObjectDir>_v = .text:0x8059B224; // type:function size:0x84 +end__35ObjPtrList<10WorldCrowd,9ObjectDir>CFv = .text:0x8059B2A8; // type:function size:0x2C +begin__35ObjPtrList<10WorldCrowd,9ObjectDir>CFv = .text:0x8059B2D4; // type:function size:0x30 +__pp__23ObjDirItr<10WorldCrowd>Fv = .text:0x8059B304; // type:function size:0x50 +push_back__35ObjPtrList<10WorldCrowd,9ObjectDir>FP10WorldCrowd = .text:0x8059B354; // type:function size:0x4C +insert__35ObjPtrList<10WorldCrowd,9ObjectDir>FQ235ObjPtrList<10WorldCrowd,9ObjectDir>8iteratorP10WorldCrowd = .text:0x8059B3A0; // type:function size:0x78 fn_8059B418 = .text:0x8059B418; // type:function size:0x70 fn_8059B488 = .text:0x8059B488; // type:function size:0xCC -fn_8059B554 = .text:0x8059B554; // type:function size:0x410 +DrawShowing__8WorldDirFv = .text:0x8059B554; // type:function size:0x410 fn_8059B964 = .text:0x8059B964; // type:function size:0x40 fn_8059B9A4 = .text:0x8059B9A4; // type:function size:0x28 fn_8059B9CC = .text:0x8059B9CC; // type:function size:0x8 -fn_8059B9D4 = .text:0x8059B9D4; // type:function size:0x194 -fn_8059BB68 = .text:0x8059BB68; // type:function size:0x11C -fn_8059BC84 = .text:0x8059BC84; // type:function size:0xB8 -fn_8059BD3C = .text:0x8059BD3C; // type:function size:0x90 -fn_8059BDCC = .text:0x8059BDCC; // type:function size:0x88 -fn_8059BE54 = .text:0x8059BE54; // type:function size:0x88 -fn_8059BEDC = .text:0x8059BEDC; // type:function size:0x88 -fn_8059BF64 = .text:0x8059BF64; // type:function size:0x8C -fn_8059BFF0 = .text:0x8059BFF0; // type:function size:0x2B4 -fn_8059C2A4 = .text:0x8059C2A4; // type:function size:0xC4 -fn_8059C368 = .text:0x8059C368; // type:function size:0x6C +DrawShowingBudget__8WorldDirFf = .text:0x8059B9D4; // type:function size:0x194 +DrawSplitWorld__8WorldDirFv = .text:0x8059BB68; // type:function size:0x11C +SyncHUD__8WorldDirFv = .text:0x8059BC84; // type:function size:0xB8 +SyncHides__8WorldDirFb = .text:0x8059BD3C; // type:function size:0x90 +SyncBitmaps__8WorldDirFb = .text:0x8059BDCC; // type:function size:0x88 +SyncMats__8WorldDirFb = .text:0x8059BE54; // type:function size:0x88 +SyncPresets__8WorldDirFb = .text:0x8059BEDC; // type:function size:0x88 +SyncCamShots__8WorldDirFb = .text:0x8059BF64; // type:function size:0x8C +Sync__Q28WorldDir14BitmapOverrideFb = .text:0x8059BFF0; // type:function size:0x2B4 +Sync__Q28WorldDir11MatOverrideFb = .text:0x8059C2A4; // type:function size:0xC4 +Sync__Q28WorldDir14PresetOverrideFb = .text:0x8059C368; // type:function size:0x6C fn_8059C3D4 = .text:0x8059C3D4; // type:function size:0x8 -fn_8059C3DC = .text:0x8059C3DC; // type:function size:0x188 -fn_8059C564 = .text:0x8059C564; // type:function size:0x1B0 -fn_8059C714 = .text:0x8059C714; // type:function size:0xCC +Handle__8WorldDirFP9DataArrayb = .text:0x8059C3DC; // type:function size:0x188 +PropSync__FRQ28WorldDir14PresetOverrideR8DataNodeP9DataArrayi6PropOp = .text:0x8059C564; // type:function size:0x1B0 +PropSync<11LightPreset>__FR32ObjPtr<11LightPreset,9ObjectDir>R8DataNodeP9DataArrayi6PropOp_b = .text:0x8059C714; // type:function size:0xCC fn_8059C7E0 = .text:0x8059C7E0; // type:function size:0xC0 -fn_8059C8A0 = .text:0x8059C8A0; // type:function size:0x1B0 -fn_8059CA50 = .text:0x8059CA50; // type:function size:0x1B0 -fn_8059CC00 = .text:0x8059CC00; // type:function size:0x454 -fn_8059D054 = .text:0x8059D054; // type:function size:0x1A8 +PropSync__FRQ28WorldDir14BitmapOverrideR8DataNodeP9DataArrayi6PropOp = .text:0x8059C8A0; // type:function size:0x1B0 +PropSync__FRQ28WorldDir11MatOverrideR8DataNodeP9DataArrayi6PropOp = .text:0x8059CA50; // type:function size:0x1B0 +SyncProperty__8WorldDirFR8DataNodeP9DataArrayi6PropOp = .text:0x8059CC00; // type:function size:0x454 +PropSync__FR36ObjListR8DataNodeP9DataArrayi6PropOp_b = .text:0x8059D054; // type:function size:0x1A8 fn_8059D1FC = .text:0x8059D1FC; // type:function size:0x58 fn_8059D254 = .text:0x8059D254; // type:function size:0x64 fn_8059D2B8 = .text:0x8059D2B8; // type:function size:0x50 @@ -46827,7 +46827,7 @@ fn_8059D3B0 = .text:0x8059D3B0; // type:function size:0x6C fn_8059D41C = .text:0x8059D41C; // type:function size:0x2C fn_8059D448 = .text:0x8059D448; // type:function size:0x8 fn_8059D450 = .text:0x8059D450; // type:function size:0x5C -fn_8059D4AC = .text:0x8059D4AC; // type:function size:0x1A8 +PropSync__FR33ObjListR8DataNodeP9DataArrayi6PropOp_b = .text:0x8059D4AC; // type:function size:0x1A8 fn_8059D654 = .text:0x8059D654; // type:function size:0x58 fn_8059D6AC = .text:0x8059D6AC; // type:function size:0x64 fn_8059D710 = .text:0x8059D710; // type:function size:0x50 @@ -46838,7 +46838,7 @@ fn_8059D814 = .text:0x8059D814; // type:function size:0x6C fn_8059D880 = .text:0x8059D880; // type:function size:0x2C fn_8059D8AC = .text:0x8059D8AC; // type:function size:0x8 fn_8059D8B4 = .text:0x8059D8B4; // type:function size:0x5C -fn_8059D910 = .text:0x8059D910; // type:function size:0x1A8 +PropSync__FR36ObjListR8DataNodeP9DataArrayi6PropOp_b = .text:0x8059D910; // type:function size:0x1A8 fn_8059DAB8 = .text:0x8059DAB8; // type:function size:0x58 fn_8059DB10 = .text:0x8059DB10; // type:function size:0x64 fn_8059DB74 = .text:0x8059DB74; // type:function size:0x50 @@ -46851,8 +46851,8 @@ fn_8059DD40 = .text:0x8059DD40; // type:function size:0x6C fn_8059DDAC = .text:0x8059DDAC; // type:function size:0x2C fn_8059DDD8 = .text:0x8059DDD8; // type:function size:0x8 fn_8059DDE0 = .text:0x8059DDE0; // type:function size:0x5C -fn_8059DE3C = .text:0x8059DE3C; // type:function size:0x1E8 -fn_8059E024 = .text:0x8059E024; // type:function size:0xBC +PropSync<7CamShot>__FR31ObjPtrList<7CamShot,9ObjectDir>R8DataNodeP9DataArrayi6PropOp_b = .text:0x8059DE3C; // type:function size:0x1E8 +PropSync<7CamShot>__FRP7CamShotR8DataNodeP9DataArrayi6PropOp_b = .text:0x8059E024; // type:function size:0xBC fn_8059E0E0 = .text:0x8059E0E0; // type:function size:0x44 fn_8059E124 = .text:0x8059E124; // type:function size:0x110 fn_8059E234 = .text:0x8059E234; // type:function size:0x60 @@ -46874,7 +46874,7 @@ fn_8059E978 = .text:0x8059E978; // type:function size:0x40 fn_8059E9B8 = .text:0x8059E9B8; // type:function size:0xE4 fn_8059EA9C = .text:0x8059EA9C; // type:function size:0x54 fn_8059EAF0 = .text:0x8059EAF0; // type:function size:0x6C -fn_8059EB5C = .text:0x8059EB5C; // type:function size:0x194 +__as__Q211stlpmtx_std98_List_impl>FRCQ211stlpmtx_std98_List_impl> = .text:0x8059EB5C; // type:function size:0x194 fn_8059ECF0 = .text:0x8059ECF0; // type:function size:0x60 fn_8059ED50 = .text:0x8059ED50; // type:function size:0xA0 fn_8059EDF0 = .text:0x8059EDF0; // type:function size:0x6C @@ -46887,7 +46887,7 @@ fn_8059F094 = .text:0x8059F094; // type:function size:0x40 fn_8059F0D4 = .text:0x8059F0D4; // type:function size:0xE4 fn_8059F1B8 = .text:0x8059F1B8; // type:function size:0x54 fn_8059F20C = .text:0x8059F20C; // type:function size:0x6C -fn_8059F278 = .text:0x8059F278; // type:function size:0x194 +__as__Q211stlpmtx_std92_List_impl>FRCQ211stlpmtx_std92_List_impl> = .text:0x8059F278; // type:function size:0x194 fn_8059F40C = .text:0x8059F40C; // type:function size:0x60 fn_8059F46C = .text:0x8059F46C; // type:function size:0xA0 fn_8059F50C = .text:0x8059F50C; // type:function size:0x6C @@ -46900,417 +46900,417 @@ fn_8059F7BC = .text:0x8059F7BC; // type:function size:0x40 fn_8059F7FC = .text:0x8059F7FC; // type:function size:0xE4 fn_8059F8E0 = .text:0x8059F8E0; // type:function size:0x54 fn_8059F934 = .text:0x8059F934; // type:function size:0x6C -fn_8059F9A0 = .text:0x8059F9A0; // type:function size:0x134 -fn_8059FAD4 = .text:0x8059FAD4; // type:function size:0x4 -fn_8059FAD8 = .text:0x8059FAD8; // type:function size:0x60 -fn_8059FB38 = .text:0x8059FB38; // type:function size:0x8 -fn_8059FB40 = .text:0x8059FB40; // type:function size:0x8 -fn_8059FB48 = .text:0x8059FB48; // type:function size:0x8 -fn_8059FB50 = .text:0x8059FB50; // type:function size:0x8 -fn_8059FB58 = .text:0x8059FB58; // type:function size:0x8 -fn_8059FB60 = .text:0x8059FB60; // type:function size:0x8 -fn_8059FB68 = .text:0x8059FB68; // type:function size:0x8 -fn_8059FB70 = .text:0x8059FB70; // type:function size:0x8 -fn_8059FB78 = .text:0x8059FB78; // type:function size:0x8 -fn_8059FB80 = .text:0x8059FB80; // type:function size:0x8 -fn_8059FB88 = .text:0x8059FB88; // type:function size:0x8 -fn_8059FB90 = .text:0x8059FB90; // type:function size:0x8 -fn_8059FB98 = .text:0x8059FB98; // type:function size:0x8 -fn_8059FBA0 = .text:0x8059FBA0; // type:function size:0x8 -fn_8059FBA8 = .text:0x8059FBA8; // type:function size:0x8 -fn_8059FBB0 = .text:0x8059FBB0; // type:function size:0x8 -fn_8059FBB8 = .text:0x8059FBB8; // type:function size:0x14 -fn_8059FBCC = .text:0x8059FBCC; // type:function size:0x14 -fn_8059FBE0 = .text:0x8059FBE0; // type:function size:0x8 -fn_8059FBE8 = .text:0x8059FBE8; // type:function size:0x8 -fn_8059FBF0 = .text:0x8059FBF0; // type:function size:0x8 -fn_8059FBF8 = .text:0x8059FBF8; // type:function size:0x8 -fn_8059FC00 = .text:0x8059FC00; // type:function size:0x8 -fn_8059FC08 = .text:0x8059FC08; // type:function size:0x8 -fn_8059FC10 = .text:0x8059FC10; // type:function size:0x8 -fn_8059FC18 = .text:0x8059FC18; // type:function size:0x8 -fn_8059FC20 = .text:0x8059FC20; // type:function size:0x8 -fn_8059FC28 = .text:0x8059FC28; // type:function size:0x8 -fn_8059FC30 = .text:0x8059FC30; // type:function size:0x8 -fn_8059FC38 = .text:0x8059FC38; // type:function size:0x8 -fn_8059FC40 = .text:0x8059FC40; // type:function size:0x8 -fn_8059FC48 = .text:0x8059FC48; // type:function size:0x14 -fn_8059FC5C = .text:0x8059FC5C; // type:function size:0x14 -fn_8059FC70 = .text:0x8059FC70; // type:function size:0x14 -fn_8059FC84 = .text:0x8059FC84; // type:function size:0x14 -fn_8059FC98 = .text:0x8059FC98; // type:function size:0x14 -fn_8059FCAC = .text:0x8059FCAC; // type:function size:0x14 -fn_8059FCC0 = .text:0x8059FCC0; // type:function size:0x14 -fn_8059FCD4 = .text:0x8059FCD4; // type:function size:0x14 -fn_8059FCE8 = .text:0x8059FCE8; // type:function size:0x14 -fn_8059FCFC = .text:0x8059FCFC; // type:function size:0x14 -fn_8059FD10 = .text:0x8059FD10; // type:function size:0x14 -fn_8059FD24 = .text:0x8059FD24; // type:function size:0x14 -fn_8059FD38 = .text:0x8059FD38; // type:function size:0x14 -fn_8059FD4C = .text:0x8059FD4C; // type:function size:0x14 -fn_8059FD60 = .text:0x8059FD60; // type:function size:0x14 -fn_8059FD74 = .text:0x8059FD74; // type:function size:0x8 -fn_8059FD7C = .text:0x8059FD7C; // type:function size:0x8 -fn_8059FD84 = .text:0x8059FD84; // type:function size:0x8 -fn_8059FD8C = .text:0x8059FD8C; // type:function size:0x8 -fn_8059FD94 = .text:0x8059FD94; // type:function size:0x8 -fn_8059FD9C = .text:0x8059FD9C; // type:function size:0xA0 -fn_8059FE3C = .text:0x8059FE3C; // type:function size:0x58 -fn_8059FE94 = .text:0x8059FE94; // type:function size:0x88 +SetType__8WorldDirF6Symbol = .text:0x8059F9A0; // type:function size:0x134 +ClassName__8WorldDirCFv = .text:0x8059FAD4; // type:function size:0x4 +__sinit_\Dir_cpp = .text:0x8059FAD8; // type:function size:0x60 +@128@__dt__8WorldDirFv = .text:0x8059FB38; // type:function size:0x8 +@128@DrawShowingBudget__8WorldDirFf = .text:0x8059FB40; // type:function size:0x8 +@128@DrawShowing__8WorldDirFv = .text:0x8059FB48; // type:function size:0x8 +@128@Copy__8WorldDirFPCQ23Hmx6ObjectQ33Hmx6Object8CopyType = .text:0x8059FB50; // type:function size:0x8 +@128@Save__8WorldDirFR9BinStream = .text:0x8059FB58; // type:function size:0x8 +@128@SyncProperty__8WorldDirFR8DataNodeP9DataArrayi6PropOp = .text:0x8059FB60; // type:function size:0x8 +@128@Handle__8WorldDirFP9DataArrayb = .text:0x8059FB68; // type:function size:0x8 +@128@SetType__8WorldDirF6Symbol = .text:0x8059FB70; // type:function size:0x8 +@128@ClassName__8WorldDirCFv = .text:0x8059FB78; // type:function size:0x8 +@160@__dt__8WorldDirFv = .text:0x8059FB80; // type:function size:0x8 +@160@Copy__8WorldDirFPCQ23Hmx6ObjectQ33Hmx6Object8CopyType = .text:0x8059FB88; // type:function size:0x8 +@160@Save__8WorldDirFR9BinStream = .text:0x8059FB90; // type:function size:0x8 +@160@SyncProperty__8WorldDirFR8DataNodeP9DataArrayi6PropOp = .text:0x8059FB98; // type:function size:0x8 +@160@Handle__8WorldDirFP9DataArrayb = .text:0x8059FBA0; // type:function size:0x8 +@160@SetType__8WorldDirF6Symbol = .text:0x8059FBA8; // type:function size:0x8 +@160@ClassName__8WorldDirCFv = .text:0x8059FBB0; // type:function size:0x8 +@852@8@Highlight__6RndDirFv = .text:0x8059FBB8; // type:function size:0x14 +@852@8@__dt__8WorldDirFv = .text:0x8059FBCC; // type:function size:0x14 +@176@__dt__8WorldDirFv = .text:0x8059FBE0; // type:function size:0x8 +@176@Copy__8WorldDirFPCQ23Hmx6ObjectQ33Hmx6Object8CopyType = .text:0x8059FBE8; // type:function size:0x8 +@176@Save__8WorldDirFR9BinStream = .text:0x8059FBF0; // type:function size:0x8 +@176@SyncProperty__8WorldDirFR8DataNodeP9DataArrayi6PropOp = .text:0x8059FBF8; // type:function size:0x8 +@176@Handle__8WorldDirFP9DataArrayb = .text:0x8059FC00; // type:function size:0x8 +@176@SetType__8WorldDirF6Symbol = .text:0x8059FC08; // type:function size:0x8 +@176@ClassName__8WorldDirCFv = .text:0x8059FC10; // type:function size:0x8 +@320@__dt__8WorldDirFv = .text:0x8059FC18; // type:function size:0x8 +@320@Enter__8WorldDirFv = .text:0x8059FC20; // type:function size:0x8 +@320@Poll__8WorldDirFv = .text:0x8059FC28; // type:function size:0x8 +@320@Handle__8WorldDirFP9DataArrayb = .text:0x8059FC30; // type:function size:0x8 +@320@SetType__8WorldDirF6Symbol = .text:0x8059FC38; // type:function size:0x8 +@320@ClassName__8WorldDirCFv = .text:0x8059FC40; // type:function size:0x8 +@820@28@Replace__6RndDirFPQ23Hmx6ObjectPQ23Hmx6Object = .text:0x8059FC48; // type:function size:0x14 +@820@28@PostLoad__8WorldDirFR9BinStream = .text:0x8059FC5C; // type:function size:0x14 +@820@28@PreLoad__8WorldDirFR9BinStream = .text:0x8059FC70; // type:function size:0x14 +@820@28@DataDir__9ObjectDirFv = .text:0x8059FC84; // type:function size:0x14 +@820@28@Export__6RndDirFP9DataArrayb = .text:0x8059FC98; // type:function size:0x14 +@644@28@Print__16RndTransformableFv = .text:0x8059FCAC; // type:function size:0x14 +@820@28@PostSave__9ObjectDirFR9BinStream = .text:0x8059FCC0; // type:function size:0x14 +@820@28@Load__6RndDirFR9BinStream = .text:0x8059FCD4; // type:function size:0x14 +@820@28@Copy__8WorldDirFPCQ23Hmx6ObjectQ33Hmx6Object8CopyType = .text:0x8059FCE8; // type:function size:0x14 +@820@28@Save__8WorldDirFR9BinStream = .text:0x8059FCFC; // type:function size:0x14 +@820@28@__dt__8WorldDirFv = .text:0x8059FD10; // type:function size:0x14 +@820@28@SyncProperty__8WorldDirFR8DataNodeP9DataArrayi6PropOp = .text:0x8059FD24; // type:function size:0x14 +@820@28@Handle__8WorldDirFP9DataArrayb = .text:0x8059FD38; // type:function size:0x14 +@820@28@SetType__8WorldDirF6Symbol = .text:0x8059FD4C; // type:function size:0x14 +@820@28@ClassName__8WorldDirCFv = .text:0x8059FD60; // type:function size:0x14 +@328@__dt__8WorldDirFv = .text:0x8059FD74; // type:function size:0x8 +@328@SyncProperty__8WorldDirFR8DataNodeP9DataArrayi6PropOp = .text:0x8059FD7C; // type:function size:0x8 +@328@Handle__8WorldDirFP9DataArrayb = .text:0x8059FD84; // type:function size:0x8 +@328@SetType__8WorldDirF6Symbol = .text:0x8059FD8C; // type:function size:0x8 +@328@ClassName__8WorldDirCFv = .text:0x8059FD94; // type:function size:0x8 +__ct__10FreeCameraFP8WorldDirffi = .text:0x8059FD9C; // type:function size:0xA0 +__dt__10FreeCameraFv = .text:0x8059FE3C; // type:function size:0x58 +UpdateFromCamera__10FreeCameraFv = .text:0x8059FE94; // type:function size:0x88 StubOnef__Fv = .text:0x8059FF1C; // type:function size:0xC scope:weak noexport -fn_8059FF28 = .text:0x8059FF28; // type:function size:0x10 -fn_8059FF38 = .text:0x8059FF38; // type:function size:0x558 +SetParentDof__10FreeCameraFbbb = .text:0x8059FF28; // type:function size:0x10 +Poll__10FreeCameraFv = .text:0x8059FF38; // type:function size:0x558 fn_805A0490 = .text:0x805A0490; // type:function size:0x44 Handle__10FreeCameraFP9DataArrayb = .text:0x805A04D4; // type:function size:0x260 -fn_805A0734 = .text:0x805A0734; // type:function size:0xE0 -fn_805A0814 = .text:0x805A0814; // type:function size:0x90 +ComputeSpotBlend__Fif = .text:0x805A0734; // type:function size:0xE0 +SymToPstKeyframe__F6Symbol = .text:0x805A0814; // type:function size:0x90 __ct__11LightPresetFv = .text:0x805A08A4; // type:function size:0x1D4 -fn_805A0A78 = .text:0x805A0A78; // type:function size:0x58 -fn_805A0AD0 = .text:0x805A0AD0; // type:function size:0x80 -fn_805A0B50 = .text:0x805A0B50; // type:function size:0x80 -fn_805A0BD0 = .text:0x805A0BD0; // type:function size:0x58 -fn_805A0C28 = .text:0x805A0C28; // type:function size:0x54 -fn_805A0C7C = .text:0x805A0C7C; // type:function size:0x5C -fn_805A0CD8 = .text:0x805A0CD8; // type:function size:0x6C -fn_805A0D44 = .text:0x805A0D44; // type:function size:0x28 -fn_805A0D6C = .text:0x805A0D6C; // type:function size:0x8 -fn_805A0D74 = .text:0x805A0D74; // type:function size:0x3C -fn_805A0DB0 = .text:0x805A0DB0; // type:function size:0x58 -fn_805A0E08 = .text:0x805A0E08; // type:function size:0x80 -fn_805A0E88 = .text:0x805A0E88; // type:function size:0x80 -fn_805A0F08 = .text:0x805A0F08; // type:function size:0x58 -fn_805A0F60 = .text:0x805A0F60; // type:function size:0x54 -fn_805A0FB4 = .text:0x805A0FB4; // type:function size:0x5C -fn_805A1010 = .text:0x805A1010; // type:function size:0x6C -fn_805A107C = .text:0x805A107C; // type:function size:0x28 -fn_805A10A4 = .text:0x805A10A4; // type:function size:0x8 -fn_805A10AC = .text:0x805A10AC; // type:function size:0x3C -fn_805A10E8 = .text:0x805A10E8; // type:function size:0x58 -fn_805A1140 = .text:0x805A1140; // type:function size:0x80 -fn_805A11C0 = .text:0x805A11C0; // type:function size:0x80 -fn_805A1240 = .text:0x805A1240; // type:function size:0x58 -fn_805A1298 = .text:0x805A1298; // type:function size:0x54 -fn_805A12EC = .text:0x805A12EC; // type:function size:0x5C -fn_805A1348 = .text:0x805A1348; // type:function size:0x6C -fn_805A13B4 = .text:0x805A13B4; // type:function size:0x28 -fn_805A13DC = .text:0x805A13DC; // type:function size:0x8 -fn_805A13E4 = .text:0x805A13E4; // type:function size:0x3C -fn_805A1420 = .text:0x805A1420; // type:function size:0x58 -fn_805A1478 = .text:0x805A1478; // type:function size:0x58 -fn_805A14D0 = .text:0x805A14D0; // type:function size:0x80 -fn_805A1550 = .text:0x805A1550; // type:function size:0x80 -fn_805A15D0 = .text:0x805A15D0; // type:function size:0x58 -fn_805A1628 = .text:0x805A1628; // type:function size:0x54 -fn_805A167C = .text:0x805A167C; // type:function size:0x5C -fn_805A16D8 = .text:0x805A16D8; // type:function size:0x6C -fn_805A1744 = .text:0x805A1744; // type:function size:0x28 -fn_805A176C = .text:0x805A176C; // type:function size:0x8 -fn_805A1774 = .text:0x805A1774; // type:function size:0x3C -fn_805A17B0 = .text:0x805A17B0; // type:function size:0x58 -fn_805A1808 = .text:0x805A1808; // type:function size:0x58 -fn_805A1860 = .text:0x805A1860; // type:function size:0x80 -fn_805A18E0 = .text:0x805A18E0; // type:function size:0x80 -fn_805A1960 = .text:0x805A1960; // type:function size:0x58 -fn_805A19B8 = .text:0x805A19B8; // type:function size:0x54 -fn_805A1A0C = .text:0x805A1A0C; // type:function size:0x5C -fn_805A1A68 = .text:0x805A1A68; // type:function size:0x6C -fn_805A1AD4 = .text:0x805A1AD4; // type:function size:0x28 -fn_805A1AFC = .text:0x805A1AFC; // type:function size:0x8 -fn_805A1B04 = .text:0x805A1B04; // type:function size:0xC8 -fn_805A1BCC = .text:0x805A1BCC; // type:function size:0x8 -fn_805A1BD4 = .text:0x805A1BD4; // type:function size:0x3C -fn_805A1C10 = .text:0x805A1C10; // type:function size:0x30 -fn_805A1C40 = .text:0x805A1C40; // type:function size:0x30 -fn_805A1C70 = .text:0x805A1C70; // type:function size:0x40 -fn_805A1CB0 = .text:0x805A1CB0; // type:function size:0x30 -fn_805A1CE0 = .text:0x805A1CE0; // type:function size:0x30 -fn_805A1D10 = .text:0x805A1D10; // type:function size:0x40 -fn_805A1D50 = .text:0x805A1D50; // type:function size:0x30 -fn_805A1D80 = .text:0x805A1D80; // type:function size:0x30 -fn_805A1DB0 = .text:0x805A1DB0; // type:function size:0x40 -fn_805A1DF0 = .text:0x805A1DF0; // type:function size:0x50 -fn_805A1E40 = .text:0x805A1E40; // type:function size:0x30 -fn_805A1E70 = .text:0x805A1E70; // type:function size:0x30 -fn_805A1EA0 = .text:0x805A1EA0; // type:function size:0x40 -fn_805A1EE0 = .text:0x805A1EE0; // type:function size:0x50 -fn_805A1F30 = .text:0x805A1F30; // type:function size:0x30 -fn_805A1F60 = .text:0x805A1F60; // type:function size:0x30 -fn_805A1F90 = .text:0x805A1F90; // type:function size:0x40 -fn_805A1FD0 = .text:0x805A1FD0; // type:function size:0x28 -fn_805A1FF8 = .text:0x805A1FF8; // type:function size:0x114 -fn_805A210C = .text:0x805A210C; // type:function size:0x10 -fn_805A211C = .text:0x805A211C; // type:function size:0x178 -fn_805A2294 = .text:0x805A2294; // type:function size:0x4 -fn_805A2298 = .text:0x805A2298; // type:function size:0x3C -fn_805A22D4 = .text:0x805A22D4; // type:function size:0x40 -fn_805A2314 = .text:0x805A2314; // type:function size:0x8C -fn_805A23A0 = .text:0x805A23A0; // type:function size:0x8 -fn_805A23A8 = .text:0x805A23A8; // type:function size:0x2C -fn_805A23D4 = .text:0x805A23D4; // type:function size:0x58 -fn_805A242C = .text:0x805A242C; // type:function size:0x28 -fn_805A2454 = .text:0x805A2454; // type:function size:0x68 -fn_805A24BC = .text:0x805A24BC; // type:function size:0xC0 +__dt__Q211stlpmtx_std117vector>Fv = .text:0x805A0A78; // type:function size:0x58 +__dt__Q211stlpmtx_std123_Vector_impl>Fv = .text:0x805A0AD0; // type:function size:0x80 +__dt__Q211stlpmtx_std123_Vector_base>Fv = .text:0x805A0B50; // type:function size:0x80 +__dt__Q211stlpmtx_std164_STLP_alloc_proxy>Fv = .text:0x805A0BD0; // type:function size:0x58 +_Destroy_Range>__11stlpmtx_stdFQ211stlpmtx_std56reverse_iteratorQ211stlpmtx_std56reverse_iterator_v = .text:0x805A0C28; // type:function size:0x54 +__destroy_range,Q211LightPreset20SpotlightDrawerEntry>__11stlpmtx_stdFQ211stlpmtx_std56reverse_iteratorQ211stlpmtx_std56reverse_iteratorPQ211LightPreset20SpotlightDrawerEntry_v = .text:0x805A0C7C; // type:function size:0x5C +__destroy_range_aux,Q211LightPreset20SpotlightDrawerEntry>__11stlpmtx_stdFQ211stlpmtx_std56reverse_iteratorQ211stlpmtx_std56reverse_iteratorPQ211LightPreset20SpotlightDrawerEntryRCQ211stlpmtx_std12__false_type_v = .text:0x805A0CD8; // type:function size:0x6C +__ne__11stlpmtx_stdFRCQ211stlpmtx_std56reverse_iteratorRCQ211stlpmtx_std56reverse_iterator_b = .text:0x805A0D44; // type:function size:0x28 +rend__Q211stlpmtx_std123_Vector_impl>Fv = .text:0x805A0D6C; // type:function size:0x8 +rbegin__Q211stlpmtx_std123_Vector_impl>Fv = .text:0x805A0D74; // type:function size:0x3C +__dt__Q211stlpmtx_std103vector>Fv = .text:0x805A0DB0; // type:function size:0x58 +__dt__Q211stlpmtx_std109_Vector_impl>Fv = .text:0x805A0E08; // type:function size:0x80 +__dt__Q211stlpmtx_std109_Vector_base>Fv = .text:0x805A0E88; // type:function size:0x80 +__dt__Q211stlpmtx_std143_STLP_alloc_proxy>Fv = .text:0x805A0F08; // type:function size:0x58 +_Destroy_Range>__11stlpmtx_stdFQ211stlpmtx_std49reverse_iteratorQ211stlpmtx_std49reverse_iterator_v = .text:0x805A0F60; // type:function size:0x54 +__destroy_range,Q211LightPreset13EnvLightEntry>__11stlpmtx_stdFQ211stlpmtx_std49reverse_iteratorQ211stlpmtx_std49reverse_iteratorPQ211LightPreset13EnvLightEntry_v = .text:0x805A0FB4; // type:function size:0x5C +__destroy_range_aux,Q211LightPreset13EnvLightEntry>__11stlpmtx_stdFQ211stlpmtx_std49reverse_iteratorQ211stlpmtx_std49reverse_iteratorPQ211LightPreset13EnvLightEntryRCQ211stlpmtx_std12__false_type_v = .text:0x805A1010; // type:function size:0x6C +__ne__11stlpmtx_stdFRCQ211stlpmtx_std49reverse_iteratorRCQ211stlpmtx_std49reverse_iterator_b = .text:0x805A107C; // type:function size:0x28 +rend__Q211stlpmtx_std109_Vector_impl>Fv = .text:0x805A10A4; // type:function size:0x8 +rbegin__Q211stlpmtx_std109_Vector_impl>Fv = .text:0x805A10AC; // type:function size:0x3C +__dt__Q211stlpmtx_std109vector>Fv = .text:0x805A10E8; // type:function size:0x58 +__dt__Q211stlpmtx_std115_Vector_impl>Fv = .text:0x805A1140; // type:function size:0x80 +__dt__Q211stlpmtx_std115_Vector_base>Fv = .text:0x805A11C0; // type:function size:0x80 +__dt__Q211stlpmtx_std152_STLP_alloc_proxy>Fv = .text:0x805A1240; // type:function size:0x58 +_Destroy_Range>__11stlpmtx_stdFQ211stlpmtx_std52reverse_iteratorQ211stlpmtx_std52reverse_iterator_v = .text:0x805A1298; // type:function size:0x54 +__destroy_range,Q211LightPreset16EnvironmentEntry>__11stlpmtx_stdFQ211stlpmtx_std52reverse_iteratorQ211stlpmtx_std52reverse_iteratorPQ211LightPreset16EnvironmentEntry_v = .text:0x805A12EC; // type:function size:0x5C +__destroy_range_aux,Q211LightPreset16EnvironmentEntry>__11stlpmtx_stdFQ211stlpmtx_std52reverse_iteratorQ211stlpmtx_std52reverse_iteratorPQ211LightPreset16EnvironmentEntryRCQ211stlpmtx_std12__false_type_v = .text:0x805A1348; // type:function size:0x6C +__ne__11stlpmtx_stdFRCQ211stlpmtx_std52reverse_iteratorRCQ211stlpmtx_std52reverse_iterator_b = .text:0x805A13B4; // type:function size:0x28 +rend__Q211stlpmtx_std115_Vector_impl>Fv = .text:0x805A13DC; // type:function size:0x8 +rbegin__Q211stlpmtx_std115_Vector_impl>Fv = .text:0x805A13E4; // type:function size:0x3C +__dt__45ObjVectorFv = .text:0x805A1420; // type:function size:0x58 +__dt__Q211stlpmtx_std105vector>Fv = .text:0x805A1478; // type:function size:0x58 +__dt__Q211stlpmtx_std111_Vector_impl>Fv = .text:0x805A14D0; // type:function size:0x80 +__dt__Q211stlpmtx_std111_Vector_base>Fv = .text:0x805A1550; // type:function size:0x80 +__dt__Q211stlpmtx_std146_STLP_alloc_proxy>Fv = .text:0x805A15D0; // type:function size:0x58 +_Destroy_Range>__11stlpmtx_stdFQ211stlpmtx_std50reverse_iteratorQ211stlpmtx_std50reverse_iterator_v = .text:0x805A1628; // type:function size:0x54 +__destroy_range,Q211LightPreset14SpotlightEntry>__11stlpmtx_stdFQ211stlpmtx_std50reverse_iteratorQ211stlpmtx_std50reverse_iteratorPQ211LightPreset14SpotlightEntry_v = .text:0x805A167C; // type:function size:0x5C +__destroy_range_aux,Q211LightPreset14SpotlightEntry>__11stlpmtx_stdFQ211stlpmtx_std50reverse_iteratorQ211stlpmtx_std50reverse_iteratorPQ211LightPreset14SpotlightEntryRCQ211stlpmtx_std12__false_type_v = .text:0x805A16D8; // type:function size:0x6C +__ne__11stlpmtx_stdFRCQ211stlpmtx_std50reverse_iteratorRCQ211stlpmtx_std50reverse_iterator_b = .text:0x805A1744; // type:function size:0x28 +rend__Q211stlpmtx_std111_Vector_impl>Fv = .text:0x805A176C; // type:function size:0x8 +rbegin__Q211stlpmtx_std111_Vector_impl>Fv = .text:0x805A1774; // type:function size:0x3C +__dt__38ObjVectorFv = .text:0x805A17B0; // type:function size:0x58 +__dt__Q211stlpmtx_std91vector>Fv = .text:0x805A1808; // type:function size:0x58 +__dt__Q211stlpmtx_std97_Vector_impl>Fv = .text:0x805A1860; // type:function size:0x80 +__dt__Q211stlpmtx_std97_Vector_base>Fv = .text:0x805A18E0; // type:function size:0x80 +__dt__Q211stlpmtx_std125_STLP_alloc_proxy>Fv = .text:0x805A1960; // type:function size:0x58 +_Destroy_Range>__11stlpmtx_stdFQ211stlpmtx_std43reverse_iteratorQ211stlpmtx_std43reverse_iterator_v = .text:0x805A19B8; // type:function size:0x54 +__destroy_range,Q211LightPreset8Keyframe>__11stlpmtx_stdFQ211stlpmtx_std43reverse_iteratorQ211stlpmtx_std43reverse_iteratorPQ211LightPreset8Keyframe_v = .text:0x805A1A0C; // type:function size:0x5C +__destroy_range_aux,Q211LightPreset8Keyframe>__11stlpmtx_stdFQ211stlpmtx_std43reverse_iteratorQ211stlpmtx_std43reverse_iteratorPQ211LightPreset8KeyframeRCQ211stlpmtx_std12__false_type_v = .text:0x805A1A68; // type:function size:0x6C +__ne__11stlpmtx_stdFRCQ211stlpmtx_std43reverse_iteratorRCQ211stlpmtx_std43reverse_iterator_b = .text:0x805A1AD4; // type:function size:0x28 +__destroy_aux__11stlpmtx_stdFPQ211LightPreset8KeyframeRCQ211stlpmtx_std12__false_type_v = .text:0x805A1AFC; // type:function size:0x8 +__dt__Q211LightPreset8KeyframeFv = .text:0x805A1B04; // type:function size:0xC8 +rend__Q211stlpmtx_std97_Vector_impl>Fv = .text:0x805A1BCC; // type:function size:0x8 +rbegin__Q211stlpmtx_std97_Vector_impl>Fv = .text:0x805A1BD4; // type:function size:0x3C +__ct__Q211stlpmtx_std117vector>FRCQ211stlpmtx_std51StlNodeAlloc = .text:0x805A1C10; // type:function size:0x30 +__ct__Q211stlpmtx_std123_Vector_impl>FRCQ211stlpmtx_std51StlNodeAlloc = .text:0x805A1C40; // type:function size:0x30 +__ct__Q211stlpmtx_std123_Vector_base>FRCQ211stlpmtx_std51StlNodeAlloc = .text:0x805A1C70; // type:function size:0x40 +__ct__Q211stlpmtx_std103vector>FRCQ211stlpmtx_std44StlNodeAlloc = .text:0x805A1CB0; // type:function size:0x30 +__ct__Q211stlpmtx_std109_Vector_impl>FRCQ211stlpmtx_std44StlNodeAlloc = .text:0x805A1CE0; // type:function size:0x30 +__ct__Q211stlpmtx_std109_Vector_base>FRCQ211stlpmtx_std44StlNodeAlloc = .text:0x805A1D10; // type:function size:0x40 +__ct__Q211stlpmtx_std109vector>FRCQ211stlpmtx_std47StlNodeAlloc = .text:0x805A1D50; // type:function size:0x30 +__ct__Q211stlpmtx_std115_Vector_impl>FRCQ211stlpmtx_std47StlNodeAlloc = .text:0x805A1D80; // type:function size:0x30 +__ct__Q211stlpmtx_std115_Vector_base>FRCQ211stlpmtx_std47StlNodeAlloc = .text:0x805A1DB0; // type:function size:0x40 +__ct__45ObjVectorFPQ23Hmx6Object = .text:0x805A1DF0; // type:function size:0x50 +__ct__Q211stlpmtx_std105vector>FRCQ211stlpmtx_std45StlNodeAlloc = .text:0x805A1E40; // type:function size:0x30 +__ct__Q211stlpmtx_std111_Vector_impl>FRCQ211stlpmtx_std45StlNodeAlloc = .text:0x805A1E70; // type:function size:0x30 +__ct__Q211stlpmtx_std111_Vector_base>FRCQ211stlpmtx_std45StlNodeAlloc = .text:0x805A1EA0; // type:function size:0x40 +__ct__38ObjVectorFPQ23Hmx6Object = .text:0x805A1EE0; // type:function size:0x50 +__ct__Q211stlpmtx_std91vector>FRCQ211stlpmtx_std38StlNodeAlloc = .text:0x805A1F30; // type:function size:0x30 +__ct__Q211stlpmtx_std97_Vector_impl>FRCQ211stlpmtx_std38StlNodeAlloc = .text:0x805A1F60; // type:function size:0x30 +__ct__Q211stlpmtx_std97_Vector_base>FRCQ211stlpmtx_std38StlNodeAlloc = .text:0x805A1F90; // type:function size:0x40 +PlatformOk__11LightPresetCFv = .text:0x805A1FD0; // type:function size:0x28 +__dt__11LightPresetFv = .text:0x805A1FF8; // type:function size:0x114 +ResetEvents__11LightPresetFv = .text:0x805A210C; // type:function size:0x10 +Clear__11LightPresetFv = .text:0x805A211C; // type:function size:0x178 +clear__Q211stlpmtx_std91vector>Fv = .text:0x805A2294; // type:function size:0x4 +clear__Q211stlpmtx_std97_Vector_impl>Fv = .text:0x805A2298; // type:function size:0x3C +erase__Q211stlpmtx_std97_Vector_impl>FPQ211LightPreset8KeyframePQ211LightPreset8Keyframe = .text:0x805A22D4; // type:function size:0x40 +_M_erase__Q211stlpmtx_std97_Vector_impl>FPQ211LightPreset8KeyframePQ211LightPreset8KeyframeRCQ211stlpmtx_std12__false_type = .text:0x805A2314; // type:function size:0x8C +_Destroy_Range__11stlpmtx_stdFPQ211LightPreset8KeyframePQ211LightPreset8Keyframe_v = .text:0x805A23A0; // type:function size:0x8 +__destroy_range__11stlpmtx_stdFPQ211LightPreset8KeyframePQ211LightPreset8KeyframePQ211LightPreset8Keyframe_v = .text:0x805A23A8; // type:function size:0x2C +__destroy_range_aux__11stlpmtx_stdFPQ211LightPreset8KeyframePQ211LightPreset8KeyframePQ211LightPreset8KeyframeRCQ211stlpmtx_std12__false_type_v = .text:0x805A23D4; // type:function size:0x58 +__copy_ptrs__11stlpmtx_stdFPQ211LightPreset8KeyframePQ211LightPreset8KeyframePQ211LightPreset8KeyframeRCQ211stlpmtx_std12__false_type_PQ211LightPreset8Keyframe = .text:0x805A242C; // type:function size:0x28 +__copy__11stlpmtx_stdFPQ211LightPreset8KeyframePQ211LightPreset8KeyframePQ211LightPreset8KeyframeRCQ211stlpmtx_std26random_access_iterator_tagPl_PQ211LightPreset8Keyframe = .text:0x805A2454; // type:function size:0x68 +__as__Q211LightPreset8KeyframeFRCQ211LightPreset8Keyframe = .text:0x805A24BC; // type:function size:0xC0 fn_805A257C = .text:0x805A257C; // type:function size:0x30 -fn_805A25AC = .text:0x805A25AC; // type:function size:0x30 -fn_805A25DC = .text:0x805A25DC; // type:function size:0x30 -fn_805A260C = .text:0x805A260C; // type:function size:0x30 -fn_805A263C = .text:0x805A263C; // type:function size:0x5C -fn_805A2698 = .text:0x805A2698; // type:function size:0x30 -fn_805A26C8 = .text:0x805A26C8; // type:function size:0x50 -fn_805A2718 = .text:0x805A2718; // type:function size:0x4 -fn_805A271C = .text:0x805A271C; // type:function size:0x90 -fn_805A27AC = .text:0x805A27AC; // type:function size:0x4 -fn_805A27B0 = .text:0x805A27B0; // type:function size:0x40 -fn_805A27F0 = .text:0x805A27F0; // type:function size:0x8C -fn_805A287C = .text:0x805A287C; // type:function size:0x8 -fn_805A2884 = .text:0x805A2884; // type:function size:0x2C -fn_805A28B0 = .text:0x805A28B0; // type:function size:0x58 -fn_805A2908 = .text:0x805A2908; // type:function size:0x28 -fn_805A2930 = .text:0x805A2930; // type:function size:0x68 -fn_805A2998 = .text:0x805A2998; // type:function size:0x44 -fn_805A29DC = .text:0x805A29DC; // type:function size:0x2A4 -fn_805A2C80 = .text:0x805A2C80; // type:function size:0x4 -fn_805A2C84 = .text:0x805A2C84; // type:function size:0x90 -fn_805A2D14 = .text:0x805A2D14; // type:function size:0x4 -fn_805A2D18 = .text:0x805A2D18; // type:function size:0x40 -fn_805A2D58 = .text:0x805A2D58; // type:function size:0x8C -fn_805A2DE4 = .text:0x805A2DE4; // type:function size:0x8 -fn_805A2DEC = .text:0x805A2DEC; // type:function size:0x2C -fn_805A2E18 = .text:0x805A2E18; // type:function size:0x58 -fn_805A2E70 = .text:0x805A2E70; // type:function size:0x28 -fn_805A2E98 = .text:0x805A2E98; // type:function size:0x68 -fn_805A2F00 = .text:0x805A2F00; // type:function size:0x54 -fn_805A2F54 = .text:0x805A2F54; // type:function size:0x4 -fn_805A2F58 = .text:0x805A2F58; // type:function size:0x90 -fn_805A2FE8 = .text:0x805A2FE8; // type:function size:0x4 -fn_805A2FEC = .text:0x805A2FEC; // type:function size:0x40 -fn_805A302C = .text:0x805A302C; // type:function size:0x8C -fn_805A30B8 = .text:0x805A30B8; // type:function size:0x8 -fn_805A30C0 = .text:0x805A30C0; // type:function size:0x2C -fn_805A30EC = .text:0x805A30EC; // type:function size:0x58 -fn_805A3144 = .text:0x805A3144; // type:function size:0x28 -fn_805A316C = .text:0x805A316C; // type:function size:0x68 -fn_805A31D4 = .text:0x805A31D4; // type:function size:0x2C +__as__Q211stlpmtx_std117vector>FRCQ211stlpmtx_std117vector> = .text:0x805A25AC; // type:function size:0x30 +__as__Q211stlpmtx_std103vector>FRCQ211stlpmtx_std103vector> = .text:0x805A25DC; // type:function size:0x30 +__as__Q211stlpmtx_std109vector>FRCQ211stlpmtx_std109vector> = .text:0x805A260C; // type:function size:0x30 +__as__45ObjVectorFRC45ObjVector = .text:0x805A263C; // type:function size:0x5C +__as__Q211stlpmtx_std105vector>FRCQ211stlpmtx_std105vector> = .text:0x805A2698; // type:function size:0x30 +resize__45ObjVectorFUl = .text:0x805A26C8; // type:function size:0x50 +resize__Q211stlpmtx_std105vector>FUlRCQ211LightPreset14SpotlightEntry = .text:0x805A2718; // type:function size:0x4 +resize__Q211stlpmtx_std111_Vector_impl>FUlRCQ211LightPreset14SpotlightEntry = .text:0x805A271C; // type:function size:0x90 +insert__Q211stlpmtx_std111_Vector_impl>FPQ211LightPreset14SpotlightEntryUlRCQ211LightPreset14SpotlightEntry = .text:0x805A27AC; // type:function size:0x4 +erase__Q211stlpmtx_std111_Vector_impl>FPQ211LightPreset14SpotlightEntryPQ211LightPreset14SpotlightEntry = .text:0x805A27B0; // type:function size:0x40 +_M_erase__Q211stlpmtx_std111_Vector_impl>FPQ211LightPreset14SpotlightEntryPQ211LightPreset14SpotlightEntryRCQ211stlpmtx_std12__false_type = .text:0x805A27F0; // type:function size:0x8C +_Destroy_Range__11stlpmtx_stdFPQ211LightPreset14SpotlightEntryPQ211LightPreset14SpotlightEntry_v = .text:0x805A287C; // type:function size:0x8 +__destroy_range__11stlpmtx_stdFPQ211LightPreset14SpotlightEntryPQ211LightPreset14SpotlightEntryPQ211LightPreset14SpotlightEntry_v = .text:0x805A2884; // type:function size:0x2C +__destroy_range_aux__11stlpmtx_stdFPQ211LightPreset14SpotlightEntryPQ211LightPreset14SpotlightEntryPQ211LightPreset14SpotlightEntryRCQ211stlpmtx_std12__false_type_v = .text:0x805A28B0; // type:function size:0x58 +__copy_ptrs__11stlpmtx_stdFPQ211LightPreset14SpotlightEntryPQ211LightPreset14SpotlightEntryPQ211LightPreset14SpotlightEntryRCQ211stlpmtx_std12__false_type_PQ211LightPreset14SpotlightEntry = .text:0x805A2908; // type:function size:0x28 +__copy__11stlpmtx_stdFPQ211LightPreset14SpotlightEntryPQ211LightPreset14SpotlightEntryPQ211LightPreset14SpotlightEntryRCQ211stlpmtx_std26random_access_iterator_tagPl_PQ211LightPreset14SpotlightEntry = .text:0x805A2930; // type:function size:0x68 +__as__Q211LightPreset14SpotlightEntryFRCQ211LightPreset14SpotlightEntry = .text:0x805A2998; // type:function size:0x44 +Copy__11LightPresetFPCQ23Hmx6ObjectQ33Hmx6Object8CopyType = .text:0x805A29DC; // type:function size:0x2A4 +resize__Q211stlpmtx_std103vector>FUlRCQ211LightPreset13EnvLightEntry = .text:0x805A2C80; // type:function size:0x4 +resize__Q211stlpmtx_std109_Vector_impl>FUlRCQ211LightPreset13EnvLightEntry = .text:0x805A2C84; // type:function size:0x90 +insert__Q211stlpmtx_std109_Vector_impl>FPQ211LightPreset13EnvLightEntryUlRCQ211LightPreset13EnvLightEntry = .text:0x805A2D14; // type:function size:0x4 +erase__Q211stlpmtx_std109_Vector_impl>FPQ211LightPreset13EnvLightEntryPQ211LightPreset13EnvLightEntry = .text:0x805A2D18; // type:function size:0x40 +_M_erase__Q211stlpmtx_std109_Vector_impl>FPQ211LightPreset13EnvLightEntryPQ211LightPreset13EnvLightEntryRCQ211stlpmtx_std12__false_type = .text:0x805A2D58; // type:function size:0x8C +_Destroy_Range__11stlpmtx_stdFPQ211LightPreset13EnvLightEntryPQ211LightPreset13EnvLightEntry_v = .text:0x805A2DE4; // type:function size:0x8 +__destroy_range__11stlpmtx_stdFPQ211LightPreset13EnvLightEntryPQ211LightPreset13EnvLightEntryPQ211LightPreset13EnvLightEntry_v = .text:0x805A2DEC; // type:function size:0x2C +__destroy_range_aux__11stlpmtx_stdFPQ211LightPreset13EnvLightEntryPQ211LightPreset13EnvLightEntryPQ211LightPreset13EnvLightEntryRCQ211stlpmtx_std12__false_type_v = .text:0x805A2E18; // type:function size:0x58 +__copy_ptrs__11stlpmtx_stdFPQ211LightPreset13EnvLightEntryPQ211LightPreset13EnvLightEntryPQ211LightPreset13EnvLightEntryRCQ211stlpmtx_std12__false_type_PQ211LightPreset13EnvLightEntry = .text:0x805A2E70; // type:function size:0x28 +__copy__11stlpmtx_stdFPQ211LightPreset13EnvLightEntryPQ211LightPreset13EnvLightEntryPQ211LightPreset13EnvLightEntryRCQ211stlpmtx_std26random_access_iterator_tagPl_PQ211LightPreset13EnvLightEntry = .text:0x805A2E98; // type:function size:0x68 +__as__Q211LightPreset13EnvLightEntryFRCQ211LightPreset13EnvLightEntry = .text:0x805A2F00; // type:function size:0x54 +resize__Q211stlpmtx_std109vector>FUlRCQ211LightPreset16EnvironmentEntry = .text:0x805A2F54; // type:function size:0x4 +resize__Q211stlpmtx_std115_Vector_impl>FUlRCQ211LightPreset16EnvironmentEntry = .text:0x805A2F58; // type:function size:0x90 +insert__Q211stlpmtx_std115_Vector_impl>FPQ211LightPreset16EnvironmentEntryUlRCQ211LightPreset16EnvironmentEntry = .text:0x805A2FE8; // type:function size:0x4 +erase__Q211stlpmtx_std115_Vector_impl>FPQ211LightPreset16EnvironmentEntryPQ211LightPreset16EnvironmentEntry = .text:0x805A2FEC; // type:function size:0x40 +_M_erase__Q211stlpmtx_std115_Vector_impl>FPQ211LightPreset16EnvironmentEntryPQ211LightPreset16EnvironmentEntryRCQ211stlpmtx_std12__false_type = .text:0x805A302C; // type:function size:0x8C +_Destroy_Range__11stlpmtx_stdFPQ211LightPreset16EnvironmentEntryPQ211LightPreset16EnvironmentEntry_v = .text:0x805A30B8; // type:function size:0x8 +__destroy_range__11stlpmtx_stdFPQ211LightPreset16EnvironmentEntryPQ211LightPreset16EnvironmentEntryPQ211LightPreset16EnvironmentEntry_v = .text:0x805A30C0; // type:function size:0x2C +__destroy_range_aux__11stlpmtx_stdFPQ211LightPreset16EnvironmentEntryPQ211LightPreset16EnvironmentEntryPQ211LightPreset16EnvironmentEntryRCQ211stlpmtx_std12__false_type_v = .text:0x805A30EC; // type:function size:0x58 +__copy_ptrs__11stlpmtx_stdFPQ211LightPreset16EnvironmentEntryPQ211LightPreset16EnvironmentEntryPQ211LightPreset16EnvironmentEntryRCQ211stlpmtx_std12__false_type_PQ211LightPreset16EnvironmentEntry = .text:0x805A3144; // type:function size:0x28 +__copy__11stlpmtx_stdFPQ211LightPreset16EnvironmentEntryPQ211LightPreset16EnvironmentEntryPQ211LightPreset16EnvironmentEntryRCQ211stlpmtx_std26random_access_iterator_tagPl_PQ211LightPreset16EnvironmentEntry = .text:0x805A316C; // type:function size:0x68 +__as__Q211LightPreset16EnvironmentEntryFRCQ211LightPreset16EnvironmentEntry = .text:0x805A31D4; // type:function size:0x2C fn_805A3200 = .text:0x805A3200; // type:function size:0x5C fn_805A325C = .text:0x805A325C; // type:function size:0x30 -fn_805A328C = .text:0x805A328C; // type:function size:0x5C -fn_805A32E8 = .text:0x805A32E8; // type:function size:0x4 -fn_805A32EC = .text:0x805A32EC; // type:function size:0x90 -fn_805A337C = .text:0x805A337C; // type:function size:0x4 -fn_805A3380 = .text:0x805A3380; // type:function size:0x4 -fn_805A3384 = .text:0x805A3384; // type:function size:0x8C8 -fn_805A3C4C = .text:0x805A3C4C; // type:function size:0x74 -fn_805A3CC0 = .text:0x805A3CC0; // type:function size:0x48 -fn_805A3D08 = .text:0x805A3D08; // type:function size:0x34 -fn_805A3D3C = .text:0x805A3D3C; // type:function size:0x8 -fn_805A3D44 = .text:0x805A3D44; // type:function size:0x28 -fn_805A3D6C = .text:0x805A3D6C; // type:function size:0x4 -fn_805A3D70 = .text:0x805A3D70; // type:function size:0x90 -fn_805A3E00 = .text:0x805A3E00; // type:function size:0x4 -fn_805A3E04 = .text:0x805A3E04; // type:function size:0x40 -fn_805A3E44 = .text:0x805A3E44; // type:function size:0x8C -fn_805A3ED0 = .text:0x805A3ED0; // type:function size:0x8 -fn_805A3ED8 = .text:0x805A3ED8; // type:function size:0x2C -fn_805A3F04 = .text:0x805A3F04; // type:function size:0x58 -fn_805A3F5C = .text:0x805A3F5C; // type:function size:0x28 -fn_805A3F84 = .text:0x805A3F84; // type:function size:0x68 -fn_805A3FEC = .text:0x805A3FEC; // type:function size:0xA0 -fn_805A408C = .text:0x805A408C; // type:function size:0x38 -fn_805A40C4 = .text:0x805A40C4; // type:function size:0xA0 -fn_805A4164 = .text:0x805A4164; // type:function size:0xA0 -fn_805A4204 = .text:0x805A4204; // type:function size:0xC -fn_805A4210 = .text:0x805A4210; // type:function size:0x74 -fn_805A4284 = .text:0x805A4284; // type:function size:0x5C -fn_805A42E0 = .text:0x805A42E0; // type:function size:0x360 -fn_805A4640 = .text:0x805A4640; // type:function size:0xE0 -fn_805A4720 = .text:0x805A4720; // type:function size:0x2C +resize__38ObjVectorFUl = .text:0x805A328C; // type:function size:0x5C +resize__Q211stlpmtx_std91vector>FUlRCQ211LightPreset8Keyframe = .text:0x805A32E8; // type:function size:0x4 +resize__Q211stlpmtx_std97_Vector_impl>FUlRCQ211LightPreset8Keyframe = .text:0x805A32EC; // type:function size:0x90 +insert__Q211stlpmtx_std97_Vector_impl>FPQ211LightPreset8KeyframeUlRCQ211LightPreset8Keyframe = .text:0x805A337C; // type:function size:0x4 +Save__11LightPresetFR9BinStream = .text:0x805A3380; // type:function size:0x4 +Load__11LightPresetFR9BinStream = .text:0x805A3384; // type:function size:0x8C8 +__rs__FR9BinStreamR38ObjVector_R9BinStream = .text:0x805A3C4C; // type:function size:0x74 +__dt__11AutoLoadingFv = .text:0x805A3CC0; // type:function size:0x48 +GetAnimateFromPreset__8RndLightCFv = .text:0x805A3D08; // type:function size:0x34 +GetAnimateFromPreset__10RndEnvironCFv = .text:0x805A3D3C; // type:function size:0x8 +GetAnimateFromPreset__9SpotlightCFv = .text:0x805A3D44; // type:function size:0x28 +resize__Q211stlpmtx_std117vector>FUlRCQ211LightPreset20SpotlightDrawerEntry = .text:0x805A3D6C; // type:function size:0x4 +resize__Q211stlpmtx_std123_Vector_impl>FUlRCQ211LightPreset20SpotlightDrawerEntry = .text:0x805A3D70; // type:function size:0x90 +insert__Q211stlpmtx_std123_Vector_impl>FPQ211LightPreset20SpotlightDrawerEntryUlRCQ211LightPreset20SpotlightDrawerEntry = .text:0x805A3E00; // type:function size:0x4 +erase__Q211stlpmtx_std123_Vector_impl>FPQ211LightPreset20SpotlightDrawerEntryPQ211LightPreset20SpotlightDrawerEntry = .text:0x805A3E04; // type:function size:0x40 +_M_erase__Q211stlpmtx_std123_Vector_impl>FPQ211LightPreset20SpotlightDrawerEntryPQ211LightPreset20SpotlightDrawerEntryRCQ211stlpmtx_std12__false_type = .text:0x805A3E44; // type:function size:0x8C +_Destroy_Range__11stlpmtx_stdFPQ211LightPreset20SpotlightDrawerEntryPQ211LightPreset20SpotlightDrawerEntry_v = .text:0x805A3ED0; // type:function size:0x8 +__destroy_range__11stlpmtx_stdFPQ211LightPreset20SpotlightDrawerEntryPQ211LightPreset20SpotlightDrawerEntryPQ211LightPreset20SpotlightDrawerEntry_v = .text:0x805A3ED8; // type:function size:0x2C +__destroy_range_aux__11stlpmtx_stdFPQ211LightPreset20SpotlightDrawerEntryPQ211LightPreset20SpotlightDrawerEntryPQ211LightPreset20SpotlightDrawerEntryRCQ211stlpmtx_std12__false_type_v = .text:0x805A3F04; // type:function size:0x58 +__copy_ptrs__11stlpmtx_stdFPQ211LightPreset20SpotlightDrawerEntryPQ211LightPreset20SpotlightDrawerEntryPQ211LightPreset20SpotlightDrawerEntryRCQ211stlpmtx_std12__false_type_PQ211LightPreset20SpotlightDrawerEntry = .text:0x805A3F5C; // type:function size:0x28 +__copy__11stlpmtx_stdFPQ211LightPreset20SpotlightDrawerEntryPQ211LightPreset20SpotlightDrawerEntryPQ211LightPreset20SpotlightDrawerEntryRCQ211stlpmtx_std26random_access_iterator_tagPl_PQ211LightPreset20SpotlightDrawerEntry = .text:0x805A3F84; // type:function size:0x68 +Find<15SpotlightDrawer>__9ObjectDirFPCcb_P15SpotlightDrawer = .text:0x805A3FEC; // type:function size:0xA0 +__rs__FR9BinStreamRQ211LightPreset8Keyframe = .text:0x805A408C; // type:function size:0x38 +Find<8RndLight>__9ObjectDirFPCcb_P8RndLight = .text:0x805A40C4; // type:function size:0xA0 +Find<9Spotlight>__9ObjectDirFPCcb_P9Spotlight = .text:0x805A4164; // type:function size:0xA0 +__ct__11AutoLoadingFv = .text:0x805A4204; // type:function size:0xC +GetCurrentKeyframe__11LightPresetCFv = .text:0x805A4210; // type:function size:0x74 +GetCurrentPostProc__11LightPresetCFv = .text:0x805A4284; // type:function size:0x5C +Replace__11LightPresetFPQ23Hmx6ObjectPQ23Hmx6Object = .text:0x805A42E0; // type:function size:0x360 +RemoveSpotlight__11LightPresetFi = .text:0x805A4640; // type:function size:0xE0 +erase__Q211stlpmtx_std105vector>FPQ211LightPreset14SpotlightEntry = .text:0x805A4720; // type:function size:0x2C fn_805A474C = .text:0x805A474C; // type:function size:0x84 fn_805A47D0 = .text:0x805A47D0; // type:function size:0x2C -fn_805A47FC = .text:0x805A47FC; // type:function size:0xD8 -fn_805A48D4 = .text:0x805A48D4; // type:function size:0x2C +RemoveEnvironment__11LightPresetFi = .text:0x805A47FC; // type:function size:0xD8 +erase__Q211stlpmtx_std109vector>FPQ211LightPreset16EnvironmentEntry = .text:0x805A48D4; // type:function size:0x2C fn_805A4900 = .text:0x805A4900; // type:function size:0x84 fn_805A4984 = .text:0x805A4984; // type:function size:0x2C -fn_805A49B0 = .text:0x805A49B0; // type:function size:0xE0 -fn_805A4A90 = .text:0x805A4A90; // type:function size:0x2C +RemoveLight__11LightPresetFi = .text:0x805A49B0; // type:function size:0xE0 +erase__Q211stlpmtx_std103vector>FPQ211LightPreset13EnvLightEntry = .text:0x805A4A90; // type:function size:0x2C fn_805A4ABC = .text:0x805A4ABC; // type:function size:0x84 fn_805A4B40 = .text:0x805A4B40; // type:function size:0x2C -fn_805A4B6C = .text:0x805A4B6C; // type:function size:0xE0 -fn_805A4C4C = .text:0x805A4C4C; // type:function size:0x2C +RemoveSpotlightDrawer__11LightPresetFi = .text:0x805A4B6C; // type:function size:0xE0 +erase__Q211stlpmtx_std117vector>FPQ211LightPreset20SpotlightDrawerEntry = .text:0x805A4C4C; // type:function size:0x2C fn_805A4C78 = .text:0x805A4C78; // type:function size:0x84 fn_805A4CFC = .text:0x805A4CFC; // type:function size:0x2C -fn_805A4D28 = .text:0x805A4D28; // type:function size:0x104 -fn_805A4E2C = .text:0x805A4E2C; // type:function size:0x8 -fn_805A4E34 = .text:0x805A4E34; // type:function size:0x37C +StartAnim__11LightPresetFv = .text:0x805A4D28; // type:function size:0x104 +SetFrame__11LightPresetFff = .text:0x805A4E2C; // type:function size:0x8 +SetFrameEx__11LightPresetFffb = .text:0x805A4E34; // type:function size:0x37C fn_805A51B0 = .text:0x805A51B0; // type:function size:0xC fn_805A51BC = .text:0x805A51BC; // type:function size:0x4 fn_805A51C0 = .text:0x805A51C0; // type:function size:0x38 fn_805A51F8 = .text:0x805A51F8; // type:function size:0x2C -fn_805A5224 = .text:0x805A5224; // type:function size:0x5C +OnKeyframeCmd__11LightPresetFQ211LightPreset11KeyframeCmd = .text:0x805A5224; // type:function size:0x5C fn_805A5280 = .text:0x805A5280; // type:function size:0x4 fn_805A5284 = .text:0x805A5284; // type:function size:0x58 fn_805A52DC = .text:0x805A52DC; // type:function size:0x10 fn_805A52EC = .text:0x805A52EC; // type:function size:0x30 -fn_805A531C = .text:0x805A531C; // type:function size:0x94 -fn_805A53B0 = .text:0x805A53B0; // type:function size:0x6C -fn_805A541C = .text:0x805A541C; // type:function size:0x300 -fn_805A571C = .text:0x805A571C; // type:function size:0x24 -fn_805A5740 = .text:0x805A5740; // type:function size:0x60 -fn_805A57A0 = .text:0x805A57A0; // type:function size:0x1E4 -fn_805A5984 = .text:0x805A5984; // type:function size:0x258 -fn_805A5BDC = .text:0x805A5BDC; // type:function size:0x168 -fn_805A5D44 = .text:0x805A5D44; // type:function size:0xB4 -fn_805A5DF8 = .text:0x805A5DF8; // type:function size:0x24 -fn_805A5E1C = .text:0x805A5E1C; // type:function size:0x50 -fn_805A5E6C = .text:0x805A5E6C; // type:function size:0xD0 -fn_805A5F3C = .text:0x805A5F3C; // type:function size:0x78 -fn_805A5FB4 = .text:0x805A5FB4; // type:function size:0x2F0 -fn_805A62A4 = .text:0x805A62A4; // type:function size:0x24 -fn_805A62C8 = .text:0x805A62C8; // type:function size:0x24 -fn_805A62EC = .text:0x805A62EC; // type:function size:0x24 -fn_805A6310 = .text:0x805A6310; // type:function size:0x50 -fn_805A6360 = .text:0x805A6360; // type:function size:0xD0 -fn_805A6430 = .text:0x805A6430; // type:function size:0x78 -fn_805A64A8 = .text:0x805A64A8; // type:function size:0x50 -fn_805A64F8 = .text:0x805A64F8; // type:function size:0xD0 +NextManualFrame__11LightPresetCFQ211LightPreset11KeyframeCmd = .text:0x805A531C; // type:function size:0x94 +AdvanceManual__11LightPresetFQ211LightPreset11KeyframeCmd = .text:0x805A53B0; // type:function size:0x6C +GetKey__11LightPresetCFfRiRiRf = .text:0x805A541C; // type:function size:0x300 +back__Q211stlpmtx_std91vector>CFv = .text:0x805A571C; // type:function size:0x24 +ApplyState__11LightPresetFRCQ211LightPreset8Keyframe = .text:0x805A5740; // type:function size:0x60 +AnimateState__11LightPresetFRCQ211LightPreset8KeyframeRCQ211LightPreset8Keyframef = .text:0x805A57A0; // type:function size:0x1E4 +Animate__11LightPresetFf = .text:0x805A5984; // type:function size:0x258 +SetKeyframe__11LightPresetFRQ211LightPreset8Keyframe = .text:0x805A5BDC; // type:function size:0x168 +SyncNewSpotlights__11LightPresetFv = .text:0x805A5D44; // type:function size:0xB4 +find__11stlpmtx_stdFPP9SpotlightPP9SpotlightRCP9Spotlight_PP9Spotlight = .text:0x805A5DF8; // type:function size:0x24 +__pp__21ObjDirItr<9Spotlight>Fv = .text:0x805A5E1C; // type:function size:0x50 +Advance__21ObjDirItr<9Spotlight>Fv = .text:0x805A5E6C; // type:function size:0xD0 +__ct__21ObjDirItr<9Spotlight>FP9ObjectDirb = .text:0x805A5F3C; // type:function size:0x78 +SyncKeyframeTargets__11LightPresetFv = .text:0x805A5FB4; // type:function size:0x2F0 +find__11stlpmtx_stdFPP10RndEnvironPP10RndEnvironRCP10RndEnviron_PP10RndEnviron = .text:0x805A62A4; // type:function size:0x24 +find__11stlpmtx_stdFPP8RndLightPP8RndLightRCP8RndLight_PP8RndLight = .text:0x805A62C8; // type:function size:0x24 +find__11stlpmtx_stdFPP15SpotlightDrawerPP15SpotlightDrawerRCP15SpotlightDrawer_PP15SpotlightDrawer = .text:0x805A62EC; // type:function size:0x24 +__pp__28ObjDirItr<15SpotlightDrawer>Fv = .text:0x805A6310; // type:function size:0x50 +Advance__28ObjDirItr<15SpotlightDrawer>Fv = .text:0x805A6360; // type:function size:0xD0 +__ct__28ObjDirItr<15SpotlightDrawer>FP9ObjectDirb = .text:0x805A6430; // type:function size:0x78 +__pp__23ObjDirItr<10RndEnviron>Fv = .text:0x805A64A8; // type:function size:0x50 +Advance__23ObjDirItr<10RndEnviron>Fv = .text:0x805A64F8; // type:function size:0xD0 end__32ObjPtrList<8RndLight,9ObjectDir>CFv = .text:0x805A65C8; // type:function size:0x2C begin__32ObjPtrList<8RndLight,9ObjectDir>CFv = .text:0x805A65F4; // type:function size:0x30 -fn_805A6624 = .text:0x805A6624; // type:function size:0x78 -fn_805A669C = .text:0x805A669C; // type:function size:0x100 -fn_805A679C = .text:0x805A679C; // type:function size:0x48 -fn_805A67E4 = .text:0x805A67E4; // type:function size:0x24 -fn_805A6808 = .text:0x805A6808; // type:function size:0x3C -fn_805A6844 = .text:0x805A6844; // type:function size:0xCC -fn_805A6910 = .text:0x805A6910; // type:function size:0x4 -fn_805A6914 = .text:0x805A6914; // type:function size:0x88 -fn_805A699C = .text:0x805A699C; // type:function size:0x2C -fn_805A69C8 = .text:0x805A69C8; // type:function size:0x10 -fn_805A69D8 = .text:0x805A69D8; // type:function size:0xD4 -fn_805A6AAC = .text:0x805A6AAC; // type:function size:0x4 -fn_805A6AB0 = .text:0x805A6AB0; // type:function size:0x88 -fn_805A6B38 = .text:0x805A6B38; // type:function size:0x2C -fn_805A6B64 = .text:0x805A6B64; // type:function size:0x10 -fn_805A6B74 = .text:0x805A6B74; // type:function size:0x60 -fn_805A6BD4 = .text:0x805A6BD4; // type:function size:0xD4 -fn_805A6CA8 = .text:0x805A6CA8; // type:function size:0x4 -fn_805A6CAC = .text:0x805A6CAC; // type:function size:0x88 -fn_805A6D34 = .text:0x805A6D34; // type:function size:0x2C -fn_805A6D60 = .text:0x805A6D60; // type:function size:0x10 -fn_805A6D70 = .text:0x805A6D70; // type:function size:0x2AC -fn_805A701C = .text:0x805A701C; // type:function size:0x18 -fn_805A7034 = .text:0x805A7034; // type:function size:0xDC +__ct__23ObjDirItr<10RndEnviron>FP9ObjectDirb = .text:0x805A6624; // type:function size:0x78 +AddSpotlight__11LightPresetFP9Spotlightb = .text:0x805A669C; // type:function size:0x100 +push_back__45ObjVectorFRCQ211LightPreset14SpotlightEntry = .text:0x805A679C; // type:function size:0x48 +back__Q211stlpmtx_std105vector>Fv = .text:0x805A67E4; // type:function size:0x24 +alloc_back__45ObjVectorFv = .text:0x805A6808; // type:function size:0x3C +AddEnvironment__11LightPresetFP10RndEnviron = .text:0x805A6844; // type:function size:0xCC +push_back__Q211stlpmtx_std109vector>FRCQ211LightPreset16EnvironmentEntry = .text:0x805A6910; // type:function size:0x4 +push_back__Q211stlpmtx_std115_Vector_impl>FRCQ211LightPreset16EnvironmentEntry = .text:0x805A6914; // type:function size:0x88 +_M_insert_overflow__Q211stlpmtx_std115_Vector_impl>FPQ211LightPreset16EnvironmentEntryRCQ211LightPreset16EnvironmentEntryRCQ211stlpmtx_std12__false_typeUlb = .text:0x805A699C; // type:function size:0x2C +_Copy_Construct__11stlpmtx_stdFPQ211LightPreset16EnvironmentEntryRCQ211LightPreset16EnvironmentEntry_v = .text:0x805A69C8; // type:function size:0x10 +AddLight__11LightPresetFP8RndLight = .text:0x805A69D8; // type:function size:0xD4 +push_back__Q211stlpmtx_std103vector>FRCQ211LightPreset13EnvLightEntry = .text:0x805A6AAC; // type:function size:0x4 +push_back__Q211stlpmtx_std109_Vector_impl>FRCQ211LightPreset13EnvLightEntry = .text:0x805A6AB0; // type:function size:0x88 +_M_insert_overflow__Q211stlpmtx_std109_Vector_impl>FPQ211LightPreset13EnvLightEntryRCQ211LightPreset13EnvLightEntryRCQ211stlpmtx_std12__false_typeUlb = .text:0x805A6B38; // type:function size:0x2C +_Copy_Construct__11stlpmtx_stdFPQ211LightPreset13EnvLightEntryRCQ211LightPreset13EnvLightEntry_v = .text:0x805A6B64; // type:function size:0x10 +__ct__Q211LightPreset13EnvLightEntryFRCQ211LightPreset13EnvLightEntry = .text:0x805A6B74; // type:function size:0x60 +AddSpotlightDrawer__11LightPresetFP15SpotlightDrawer = .text:0x805A6BD4; // type:function size:0xD4 +push_back__Q211stlpmtx_std117vector>FRCQ211LightPreset20SpotlightDrawerEntry = .text:0x805A6CA8; // type:function size:0x4 +push_back__Q211stlpmtx_std123_Vector_impl>FRCQ211LightPreset20SpotlightDrawerEntry = .text:0x805A6CAC; // type:function size:0x88 +_M_insert_overflow__Q211stlpmtx_std123_Vector_impl>FPQ211LightPreset20SpotlightDrawerEntryRCQ211LightPreset20SpotlightDrawerEntryRCQ211stlpmtx_std12__false_typeUlb = .text:0x805A6D34; // type:function size:0x2C +_Copy_Construct__11stlpmtx_stdFPQ211LightPreset20SpotlightDrawerEntryRCQ211LightPreset20SpotlightDrawerEntry_v = .text:0x805A6D60; // type:function size:0x10 +CacheFrames__11LightPresetFv = .text:0x805A6D70; // type:function size:0x2AC +TranslateColor__11LightPresetFRCQ23Hmx5ColorRQ23Hmx5Color = .text:0x805A701C; // type:function size:0x18 +FillSpotPresetData__11LightPresetFP9SpotlightRQ211LightPreset14SpotlightEntryi = .text:0x805A7034; // type:function size:0xDC fn_805A7110 = .text:0x805A7110; // type:function size:0x8 fn_805A7118 = .text:0x805A7118; // type:function size:0x8 -fn_805A7120 = .text:0x805A7120; // type:function size:0x1D8 +AnimateSpotFromPreset__11LightPresetFP9SpotlightRCQ211LightPreset14SpotlightEntryf = .text:0x805A7120; // type:function size:0x1D8 fn_805A72F8 = .text:0x805A72F8; // type:function size:0x8 fn_805A7300 = .text:0x805A7300; // type:function size:0x8 fn_805A7308 = .text:0x805A7308; // type:function size:0x8 -fn_805A7310 = .text:0x805A7310; // type:function size:0x50 -fn_805A7360 = .text:0x805A7360; // type:function size:0x24 +__ne__Q23Hmx4QuatCFRCQ23Hmx4Quat = .text:0x805A7310; // type:function size:0x50 +Reset__Q23Hmx4QuatFv = .text:0x805A7360; // type:function size:0x24 fn_805A7384 = .text:0x805A7384; // type:function size:0x8 fn_805A738C = .text:0x805A738C; // type:function size:0x8 fn_805A7394 = .text:0x805A7394; // type:function size:0x8 Interp__FRCQ23Hmx5ColorRCQ23Hmx5ColorfRQ23Hmx5Color = .text:0x805A739C; // type:function size:0xDC fn_805A7478 = .text:0x805A7478; // type:function size:0x8 -fn_805A7480 = .text:0x805A7480; // type:function size:0x94 +FillLightPresetData__11LightPresetFP8RndLightRQ211LightPreset13EnvLightEntry = .text:0x805A7480; // type:function size:0x94 GetColor__8RndLightCFv = .text:0x805A7514; // type:function size:0x28 -fn_805A753C = .text:0x805A753C; // type:function size:0x15C +AnimateLightFromPreset__11LightPresetFP8RndLightRCQ211LightPreset13EnvLightEntryf = .text:0x805A753C; // type:function size:0x15C fn_805A7698 = .text:0x805A7698; // type:function size:0x8 fn_805A76A0 = .text:0x805A76A0; // type:function size:0x8 fn_805A76A8 = .text:0x805A76A8; // type:function size:0x8 fn_805A76B0 = .text:0x805A76B0; // type:function size:0x3C fn_805A76EC = .text:0x805A76EC; // type:function size:0x8 -fn_805A76F4 = .text:0x805A76F4; // type:function size:0x78 +FillEnvPresetData__11LightPresetFP10RndEnvironRQ211LightPreset16EnvironmentEntry = .text:0x805A76F4; // type:function size:0x78 GetFogEnd__10RndEnvironCFv = .text:0x805A776C; // type:function size:0x28 GetFogStart__10RndEnvironCFv = .text:0x805A7794; // type:function size:0x28 FogColor__10RndEnvironCFv = .text:0x805A77BC; // type:function size:0x28 AmbientColor__10RndEnvironCFv = .text:0x805A77E4; // type:function size:0x28 -fn_805A780C = .text:0x805A780C; // type:function size:0x1AC +AnimateEnvFromPreset__11LightPresetFP10RndEnvironRCQ211LightPreset16EnvironmentEntryf = .text:0x805A780C; // type:function size:0x1AC fn_805A79B8 = .text:0x805A79B8; // type:function size:0x34 SetFogRange__10RndEnvironFff = .text:0x805A79EC; // type:function size:0x58 SetFogColor__10RndEnvironFRCQ23Hmx5Color = .text:0x805A7A44; // type:function size:0x3C -fn_805A7A80 = .text:0x805A7A80; // type:function size:0x24 -fn_805A7AA4 = .text:0x805A7AA4; // type:function size:0xB8 -fn_805A7B5C = .text:0x805A7B5C; // type:function size:0xD0 -fn_805A7C2C = .text:0x805A7C2C; // type:function size:0xA4 -fn_805A7CD0 = .text:0x805A7CD0; // type:function size:0x4 -fn_805A7CD4 = .text:0x805A7CD4; // type:function size:0x74 -fn_805A7D48 = .text:0x805A7D48; // type:function size:0x1DC -fn_805A7F24 = .text:0x805A7F24; // type:function size:0x4C -fn_805A7F70 = .text:0x805A7F70; // type:function size:0x90 -fn_805A8000 = .text:0x805A8000; // type:function size:0x74 -fn_805A8074 = .text:0x805A8074; // type:function size:0x38 -fn_805A80AC = .text:0x805A80AC; // type:function size:0x80 -fn_805A812C = .text:0x805A812C; // type:function size:0x38 -fn_805A8164 = .text:0x805A8164; // type:function size:0x80 -fn_805A81E4 = .text:0x805A81E4; // type:function size:0x38 -fn_805A821C = .text:0x805A821C; // type:function size:0x80 -fn_805A829C = .text:0x805A829C; // type:function size:0x38 -fn_805A82D4 = .text:0x805A82D4; // type:function size:0xFC -fn_805A83D0 = .text:0x805A83D0; // type:function size:0x40 -fn_805A8410 = .text:0x805A8410; // type:function size:0x104 -fn_805A8514 = .text:0x805A8514; // type:function size:0x54 -fn_805A8568 = .text:0x805A8568; // type:function size:0x17C +FillSpotlightDrawerPresetData__11LightPresetFP15SpotlightDrawerRQ211LightPreset20SpotlightDrawerEntry = .text:0x805A7A80; // type:function size:0x24 +AnimateSpotlightDrawerFromPreset__11LightPresetFP15SpotlightDrawerRCQ211LightPreset20SpotlightDrawerEntryf = .text:0x805A7AA4; // type:function size:0xB8 +SetSpotlight__11LightPresetFP9Spotlighti = .text:0x805A7B5C; // type:function size:0xD0 +OnSetKeyframe__11LightPresetFP9DataArray = .text:0x805A7C2C; // type:function size:0xA4 +__vc__Q211stlpmtx_std91vector>FUl = .text:0x805A7CD0; // type:function size:0x4 +OnViewKeyframe__11LightPresetFP9DataArray = .text:0x805A7CD4; // type:function size:0x74 +__ct__Q211LightPreset8KeyframeFPQ23Hmx6Object = .text:0x805A7D48; // type:function size:0x1DC +LoadStageKit__Q211LightPreset8KeyframeFR9BinStream = .text:0x805A7F24; // type:function size:0x4C +LoadP9__Q211LightPreset8KeyframeFR9BinStream = .text:0x805A7F70; // type:function size:0x90 +__rs__FR9BinStreamR45ObjVector_R9BinStream = .text:0x805A8000; // type:function size:0x74 +__rs__FR9BinStreamRQ211LightPreset14SpotlightEntry = .text:0x805A8074; // type:function size:0x38 +__rs__FR9BinStreamRQ211stlpmtx_std109vector>_R9BinStream = .text:0x805A80AC; // type:function size:0x80 +__rs__FR9BinStreamRQ211LightPreset16EnvironmentEntry = .text:0x805A812C; // type:function size:0x38 +__rs__FR9BinStreamRQ211stlpmtx_std103vector>_R9BinStream = .text:0x805A8164; // type:function size:0x80 +__rs__FR9BinStreamRQ211LightPreset13EnvLightEntry = .text:0x805A81E4; // type:function size:0x38 +__rs__FR9BinStreamRQ211stlpmtx_std117vector>_R9BinStream = .text:0x805A821C; // type:function size:0x80 +__rs__FR9BinStreamRQ211LightPreset20SpotlightDrawerEntry = .text:0x805A829C; // type:function size:0x38 +Load__Q211LightPreset8KeyframeFR9BinStream = .text:0x805A82D4; // type:function size:0xFC +__rs<11RndPostProc>__FR9BinStreamR32ObjPtr<11RndPostProc,9ObjectDir>_R9BinStream = .text:0x805A83D0; // type:function size:0x40 +Load__32ObjPtr<11RndPostProc,9ObjectDir>FR9BinStreambP9ObjectDir = .text:0x805A8410; // type:function size:0x104 +__ct__Q211LightPreset14SpotlightEntryFPQ23Hmx6Object = .text:0x805A8514; // type:function size:0x54 +Load__Q211LightPreset14SpotlightEntryFR9BinStream = .text:0x805A8568; // type:function size:0x17C fn_805A86E4 = .text:0x805A86E4; // type:function size:0x8C fn_805A8770 = .text:0x805A8770; // type:function size:0xF8 fn_805A8868 = .text:0x805A8868; // type:function size:0x88 -fn_805A88F0 = .text:0x805A88F0; // type:function size:0x24 -fn_805A8914 = .text:0x805A8914; // type:function size:0x90 -fn_805A89A4 = .text:0x805A89A4; // type:function size:0x14C -fn_805A8AF0 = .text:0x805A8AF0; // type:function size:0x78 -fn_805A8B68 = .text:0x805A8B68; // type:function size:0x58 -fn_805A8BC0 = .text:0x805A8BC0; // type:function size:0x84 -fn_805A8C44 = .text:0x805A8C44; // type:function size:0xB0 -fn_805A8CF4 = .text:0x805A8CF4; // type:function size:0xA8 -fn_805A8D9C = .text:0x805A8D9C; // type:function size:0x1C -fn_805A8DB8 = .text:0x805A8DB8; // type:function size:0x80 -fn_805A8E38 = .text:0x805A8E38; // type:function size:0x98 -fn_805A8ED0 = .text:0x805A8ED0; // type:function size:0x64 -fn_805A8F34 = .text:0x805A8F34; // type:function size:0x54 -fn_805A8F88 = .text:0x805A8F88; // type:function size:0x94 -fn_805A901C = .text:0x805A901C; // type:function size:0x94 -fn_805A90B0 = .text:0x805A90B0; // type:function size:0x8C -fn_805A913C = .text:0x805A913C; // type:function size:0x94 -fn_805A91D0 = .text:0x805A91D0; // type:function size:0x240 -fn_805A9410 = .text:0x805A9410; // type:function size:0x264 -fn_805A9674 = .text:0x805A9674; // type:function size:0x2C0 -fn_805A9934 = .text:0x805A9934; // type:function size:0x244 -fn_805A9B78 = .text:0x805A9B78; // type:function size:0x218 -fn_805A9D90 = .text:0x805A9D90; // type:function size:0x158 -fn_805A9EE8 = .text:0x805A9EE8; // type:function size:0x14C -fn_805AA034 = .text:0x805AA034; // type:function size:0x14C -fn_805AA180 = .text:0x805AA180; // type:function size:0x14C -fn_805AA2CC = .text:0x805AA2CC; // type:function size:0x28C -fn_805AA558 = .text:0x805AA558; // type:function size:0x170 -fn_805AA6C8 = .text:0x805AA6C8; // type:function size:0x2C -fn_805AA6F4 = .text:0x805AA6F4; // type:function size:0x84 +__ct__Q211LightPreset16EnvironmentEntryFv = .text:0x805A88F0; // type:function size:0x24 +Load__Q211LightPreset16EnvironmentEntryFR9BinStream = .text:0x805A8914; // type:function size:0x90 +Animate__Q211LightPreset16EnvironmentEntryFRCQ211LightPreset16EnvironmentEntryf = .text:0x805A89A4; // type:function size:0x14C +__ne__Q211LightPreset16EnvironmentEntryCFRCQ211LightPreset16EnvironmentEntry = .text:0x805A8AF0; // type:function size:0x78 +__ct__Q211LightPreset13EnvLightEntryFv = .text:0x805A8B68; // type:function size:0x58 +Load__Q211LightPreset13EnvLightEntryFR9BinStream = .text:0x805A8BC0; // type:function size:0x84 +Animate__Q211LightPreset13EnvLightEntryFRCQ211LightPreset13EnvLightEntryf = .text:0x805A8C44; // type:function size:0xB0 +__ne__Q211LightPreset13EnvLightEntryCFRCQ211LightPreset13EnvLightEntry = .text:0x805A8CF4; // type:function size:0xA8 +__ct__Q211LightPreset20SpotlightDrawerEntryFv = .text:0x805A8D9C; // type:function size:0x1C +Load__Q211LightPreset20SpotlightDrawerEntryFR9BinStream = .text:0x805A8DB8; // type:function size:0x80 +Animate__Q211LightPreset20SpotlightDrawerEntryFRCQ211LightPreset20SpotlightDrawerEntryf = .text:0x805A8E38; // type:function size:0x98 +__ne__Q211LightPreset20SpotlightDrawerEntryCFRCQ211LightPreset20SpotlightDrawerEntry = .text:0x805A8ED0; // type:function size:0x64 +GetName__FP11LightPresetiQ211LightPreset12PresetObject = .text:0x805A8F34; // type:function size:0x54 +GetObjName<9Spotlight>__FRCQ211stlpmtx_std65vector>i_PCc = .text:0x805A8F88; // type:function size:0x94 +GetObjName<15SpotlightDrawer>__FRCQ211stlpmtx_std79vector>i_PCc = .text:0x805A901C; // type:function size:0x94 +GetObjName<10RndEnviron>__FRCQ211stlpmtx_std69vector>i_PCc = .text:0x805A90B0; // type:function size:0x8C +GetObjName<8RndLight>__FRCQ211stlpmtx_std63vector>i_PCc = .text:0x805A913C; // type:function size:0x94 +PropSync__FRQ211LightPreset14SpotlightEntryR8DataNodeP9DataArrayi6PropOp = .text:0x805A91D0; // type:function size:0x240 +PropSync__FRQ211LightPreset20SpotlightDrawerEntryR8DataNodeP9DataArrayi6PropOp = .text:0x805A9410; // type:function size:0x264 +PropSync__FRQ211LightPreset16EnvironmentEntryR8DataNodeP9DataArrayi6PropOp = .text:0x805A9674; // type:function size:0x2C0 +PropSync__FRQ211LightPreset13EnvLightEntryR8DataNodeP9DataArrayi6PropOp = .text:0x805A9934; // type:function size:0x244 +PropSync__FRQ211LightPreset8KeyframeR8DataNodeP9DataArrayi6PropOp = .text:0x805A9B78; // type:function size:0x218 +PropSync__FR45ObjVectorR8DataNodeP9DataArrayi6PropOp_b = .text:0x805A9D90; // type:function size:0x158 +PropSync__FRQ211stlpmtx_std117vector>R8DataNodeP9DataArrayi6PropOp_b = .text:0x805A9EE8; // type:function size:0x14C +PropSync__FRQ211stlpmtx_std109vector>R8DataNodeP9DataArrayi6PropOp_b = .text:0x805AA034; // type:function size:0x14C +PropSync__FRQ211stlpmtx_std103vector>R8DataNodeP9DataArrayi6PropOp_b = .text:0x805AA180; // type:function size:0x14C +SyncProperty__11LightPresetFR8DataNodeP9DataArrayi6PropOp = .text:0x805AA2CC; // type:function size:0x28C +PropSync__FR38ObjVectorR8DataNodeP9DataArrayi6PropOp_b = .text:0x805AA558; // type:function size:0x170 +erase__Q211stlpmtx_std91vector>FPQ211LightPreset8Keyframe = .text:0x805AA6C8; // type:function size:0x2C +erase__Q211stlpmtx_std97_Vector_impl>FPQ211LightPreset8Keyframe = .text:0x805AA6F4; // type:function size:0x84 fn_805AA778 = .text:0x805AA778; // type:function size:0x2C -fn_805AA7A4 = .text:0x805AA7A4; // type:function size:0xB0 -fn_805AA854 = .text:0x805AA854; // type:function size:0x2A4 -fn_805AAAF8 = .text:0x805AAAF8; // type:function size:0x68 +PropSync<8LightHue>__FRP8LightHueR8DataNodeP9DataArrayi6PropOp_b = .text:0x805AA7A4; // type:function size:0xB0 +Handle__11LightPresetFP9DataArrayb = .text:0x805AA854; // type:function size:0x2A4 +_M_fill_insert__Q211stlpmtx_std111_Vector_impl>FPQ211LightPreset14SpotlightEntryUlRCQ211LightPreset14SpotlightEntry = .text:0x805AAAF8; // type:function size:0x68 fn_805AAB60 = .text:0x805AAB60; // type:function size:0x2C -fn_805AAB8C = .text:0x805AAB8C; // type:function size:0x58 -fn_805AABE4 = .text:0x805AABE4; // type:function size:0x160 +insert__Q211stlpmtx_std105vector>FPQ211LightPreset14SpotlightEntryRCQ211LightPreset14SpotlightEntry = .text:0x805AAB8C; // type:function size:0x58 +__as__Q211stlpmtx_std111_Vector_impl>FRCQ211stlpmtx_std111_Vector_impl> = .text:0x805AABE4; // type:function size:0x160 fn_805AAD44 = .text:0x805AAD44; // type:function size:0x5C fn_805AADA0 = .text:0x805AADA0; // type:function size:0x10 fn_805AADB0 = .text:0x805AADB0; // type:function size:0x58 fn_805AAE08 = .text:0x805AAE08; // type:function size:0x28 fn_805AAE30 = .text:0x805AAE30; // type:function size:0x5C fn_805AAE8C = .text:0x805AAE8C; // type:function size:0x60 -fn_805AAEEC = .text:0x805AAEEC; // type:function size:0x68 -fn_805AAF54 = .text:0x805AAF54; // type:function size:0x58 -fn_805AAFAC = .text:0x805AAFAC; // type:function size:0x160 +_M_fill_insert__Q211stlpmtx_std115_Vector_impl>FPQ211LightPreset16EnvironmentEntryUlRCQ211LightPreset16EnvironmentEntry = .text:0x805AAEEC; // type:function size:0x68 +insert__Q211stlpmtx_std109vector>FPQ211LightPreset16EnvironmentEntryRCQ211LightPreset16EnvironmentEntry = .text:0x805AAF54; // type:function size:0x58 +__as__Q211stlpmtx_std115_Vector_impl>FRCQ211stlpmtx_std115_Vector_impl> = .text:0x805AAFAC; // type:function size:0x160 fn_805AB10C = .text:0x805AB10C; // type:function size:0x5C fn_805AB168 = .text:0x805AB168; // type:function size:0x28 fn_805AB190 = .text:0x805AB190; // type:function size:0x5C fn_805AB1EC = .text:0x805AB1EC; // type:function size:0x60 -fn_805AB24C = .text:0x805AB24C; // type:function size:0x114 +_M_insert_overflow_aux__Q211stlpmtx_std115_Vector_impl>FPQ211LightPreset16EnvironmentEntryRCQ211LightPreset16EnvironmentEntryRCQ211stlpmtx_std12__false_typeUlb = .text:0x805AB24C; // type:function size:0x114 fn_805AB360 = .text:0x805AB360; // type:function size:0x5C fn_805AB3BC = .text:0x805AB3BC; // type:function size:0x5C fn_805AB418 = .text:0x805AB418; // type:function size:0x54 fn_805AB46C = .text:0x805AB46C; // type:function size:0x5C -fn_805AB4C8 = .text:0x805AB4C8; // type:function size:0x68 -fn_805AB530 = .text:0x805AB530; // type:function size:0x58 -fn_805AB588 = .text:0x805AB588; // type:function size:0x160 +_M_fill_insert__Q211stlpmtx_std109_Vector_impl>FPQ211LightPreset13EnvLightEntryUlRCQ211LightPreset13EnvLightEntry = .text:0x805AB4C8; // type:function size:0x68 +insert__Q211stlpmtx_std103vector>FPQ211LightPreset13EnvLightEntryRCQ211LightPreset13EnvLightEntry = .text:0x805AB530; // type:function size:0x58 +__as__Q211stlpmtx_std109_Vector_impl>FRCQ211stlpmtx_std109_Vector_impl> = .text:0x805AB588; // type:function size:0x160 fn_805AB6E8 = .text:0x805AB6E8; // type:function size:0x5C fn_805AB744 = .text:0x805AB744; // type:function size:0x28 fn_805AB76C = .text:0x805AB76C; // type:function size:0x5C @@ -47320,9 +47320,9 @@ fn_805AB93C = .text:0x805AB93C; // type:function size:0x5C fn_805AB998 = .text:0x805AB998; // type:function size:0x5C fn_805AB9F4 = .text:0x805AB9F4; // type:function size:0x54 fn_805ABA48 = .text:0x805ABA48; // type:function size:0x5C -fn_805ABAA4 = .text:0x805ABAA4; // type:function size:0x68 -fn_805ABB0C = .text:0x805ABB0C; // type:function size:0x58 -fn_805ABB64 = .text:0x805ABB64; // type:function size:0x160 +_M_fill_insert__Q211stlpmtx_std123_Vector_impl>FPQ211LightPreset20SpotlightDrawerEntryUlRCQ211LightPreset20SpotlightDrawerEntry = .text:0x805ABAA4; // type:function size:0x68 +insert__Q211stlpmtx_std117vector>FPQ211LightPreset20SpotlightDrawerEntryRCQ211LightPreset20SpotlightDrawerEntry = .text:0x805ABB0C; // type:function size:0x58 +__as__Q211stlpmtx_std123_Vector_impl>FRCQ211stlpmtx_std123_Vector_impl> = .text:0x805ABB64; // type:function size:0x160 fn_805ABCC4 = .text:0x805ABCC4; // type:function size:0x5C fn_805ABD20 = .text:0x805ABD20; // type:function size:0x28 fn_805ABD48 = .text:0x805ABD48; // type:function size:0x5C @@ -47335,9 +47335,9 @@ fn_805AC028 = .text:0x805AC028; // type:function size:0x5C fn_805AC084 = .text:0x805AC084; // type:function size:0x14C fn_805AC1D0 = .text:0x805AC1D0; // type:function size:0x58 fn_805AC228 = .text:0x805AC228; // type:function size:0x60 -fn_805AC288 = .text:0x805AC288; // type:function size:0x68 +_M_fill_insert__Q211stlpmtx_std97_Vector_impl>FPQ211LightPreset8KeyframeUlRCQ211LightPreset8Keyframe = .text:0x805AC288; // type:function size:0x68 fn_805AC2F0 = .text:0x805AC2F0; // type:function size:0x2C -fn_805AC31C = .text:0x805AC31C; // type:function size:0x58 +insert__Q211stlpmtx_std91vector>FPQ211LightPreset8KeyframeRCQ211LightPreset8Keyframe = .text:0x805AC31C; // type:function size:0x58 fn_805AC374 = .text:0x805AC374; // type:function size:0x160 fn_805AC4D4 = .text:0x805AC4D4; // type:function size:0x5C fn_805AC530 = .text:0x805AC530; // type:function size:0x10 @@ -47369,9 +47369,9 @@ fn_805ACF04 = .text:0x805ACF04; // type:function size:0x30 fn_805ACF34 = .text:0x805ACF34; // type:function size:0x8 fn_805ACF3C = .text:0x805ACF3C; // type:function size:0x2C fn_805ACF68 = .text:0x805ACF68; // type:function size:0x58 -fn_805ACFC0 = .text:0x805ACFC0; // type:function size:0x134 -fn_805AD0F4 = .text:0x805AD0F4; // type:function size:0x4C -fn_805AD140 = .text:0x805AD140; // type:function size:0x4 +SetType__11LightPresetF6Symbol = .text:0x805ACFC0; // type:function size:0x134 +StaticClassName__11LightPresetFv = .text:0x805AD0F4; // type:function size:0x4C +ClassName__11LightPresetCFv = .text:0x805AD140; // type:function size:0x4 fn_805AD144 = .text:0x805AD144; // type:function size:0x190 fn_805AD2D4 = .text:0x805AD2D4; // type:function size:0x5C fn_805AD330 = .text:0x805AD330; // type:function size:0x54 @@ -47407,8 +47407,8 @@ fn_805AE3E4 = .text:0x805AE3E4; // type:function size:0x58 fn_805AE43C = .text:0x805AE43C; // type:function size:0x58 fn_805AE494 = .text:0x805AE494; // type:function size:0x58 fn_805AE4EC = .text:0x805AE4EC; // type:function size:0x58 -fn_805AE544 = .text:0x805AE544; // type:function size:0x60 -fn_805AE5A4 = .text:0x805AE5A4; // type:function size:0x58 +__sinit_\LightPreset_cpp = .text:0x805AE544; // type:function size:0x60 +__dt__Q211stlpmtx_std145deque,Q211stlpmtx_std67StlNodeAlloc>>Fv = .text:0x805AE5A4; // type:function size:0x58 fn_805AE5FC = .text:0x805AE5FC; // type:function size:0x80 fn_805AE67C = .text:0x805AE67C; // type:function size:0x54 fn_805AE6D0 = .text:0x805AE6D0; // type:function size:0x5C @@ -47416,7 +47416,7 @@ fn_805AE72C = .text:0x805AE72C; // type:function size:0x68 fn_805AE794 = .text:0x805AE794; // type:function size:0x30 fn_805AE7C4 = .text:0x805AE7C4; // type:function size:0x54 fn_805AE818 = .text:0x805AE818; // type:function size:0x30 -fn_805AE848 = .text:0x805AE848; // type:function size:0x30 +__ct__Q211stlpmtx_std145deque,Q211stlpmtx_std67StlNodeAlloc>>FRCQ211stlpmtx_std67StlNodeAlloc> = .text:0x805AE848; // type:function size:0x30 fn_805AE878 = .text:0x805AE878; // type:function size:0x34 fn_805AE8AC = .text:0x805AE8AC; // type:function size:0x80 fn_805AE92C = .text:0x805AE92C; // type:function size:0x58 @@ -47426,61 +47426,61 @@ fn_805AEA0C = .text:0x805AEA0C; // type:function size:0x94 fn_805AEAA0 = .text:0x805AEAA0; // type:function size:0xC4 fn_805AEB64 = .text:0x805AEB64; // type:function size:0x5C fn_805AEBC0 = .text:0x805AEBC0; // type:function size:0x58 -fn_805AEC18 = .text:0x805AEC18; // type:function size:0x14 -fn_805AEC2C = .text:0x805AEC2C; // type:function size:0x14 -fn_805AEC40 = .text:0x805AEC40; // type:function size:0x14 -fn_805AEC54 = .text:0x805AEC54; // type:function size:0x14 -fn_805AEC68 = .text:0x805AEC68; // type:function size:0x14 -fn_805AEC7C = .text:0x805AEC7C; // type:function size:0x14 -fn_805AEC90 = .text:0x805AEC90; // type:function size:0x14 -fn_805AECA4 = .text:0x805AECA4; // type:function size:0x14 -fn_805AECB8 = .text:0x805AECB8; // type:function size:0x14 +@164@28@Replace__11LightPresetFPQ23Hmx6ObjectPQ23Hmx6Object = .text:0x805AEC18; // type:function size:0x14 +@164@28@Load__11LightPresetFR9BinStream = .text:0x805AEC2C; // type:function size:0x14 +@164@28@Copy__11LightPresetFPCQ23Hmx6ObjectQ33Hmx6Object8CopyType = .text:0x805AEC40; // type:function size:0x14 +@164@28@Save__11LightPresetFR9BinStream = .text:0x805AEC54; // type:function size:0x14 +@164@28@__dt__11LightPresetFv = .text:0x805AEC68; // type:function size:0x14 +@164@28@SyncProperty__11LightPresetFR8DataNodeP9DataArrayi6PropOp = .text:0x805AEC7C; // type:function size:0x14 +@164@28@Handle__11LightPresetFP9DataArrayb = .text:0x805AEC90; // type:function size:0x14 +@164@28@SetType__11LightPresetF6Symbol = .text:0x805AECA4; // type:function size:0x14 +@164@28@ClassName__11LightPresetCFv = .text:0x805AECB8; // type:function size:0x14 __ct__8LightHueFv = .text:0x805AECCC; // type:function size:0x54 __ct__23Keys<7Vector3,7Vector3>Fv = .text:0x805AED20; // type:function size:0x40 -fn_805AED60 = .text:0x805AED60; // type:function size:0x30 -fn_805AED90 = .text:0x805AED90; // type:function size:0x30 -fn_805AEDC0 = .text:0x805AEDC0; // type:function size:0x40 -fn_805AEE00 = .text:0x805AEE00; // type:function size:0xA4 -fn_805AEEA4 = .text:0x805AEEA4; // type:function size:0x7C +__ct__Q211stlpmtx_std73vector<13Key<7Vector3>,Us,Q211stlpmtx_std29StlNodeAlloc<13Key<7Vector3>>>FRCQ211stlpmtx_std29StlNodeAlloc<13Key<7Vector3>> = .text:0x805AED60; // type:function size:0x30 +__ct__Q211stlpmtx_std79_Vector_impl<13Key<7Vector3>,Us,Q211stlpmtx_std29StlNodeAlloc<13Key<7Vector3>>>FRCQ211stlpmtx_std29StlNodeAlloc<13Key<7Vector3>> = .text:0x805AED90; // type:function size:0x30 +__ct__Q211stlpmtx_std79_Vector_base<13Key<7Vector3>,Us,Q211stlpmtx_std29StlNodeAlloc<13Key<7Vector3>>>FRCQ211stlpmtx_std29StlNodeAlloc<13Key<7Vector3>> = .text:0x805AEDC0; // type:function size:0x40 +__dt__8LightHueFv = .text:0x805AEE00; // type:function size:0xA4 +Copy__8LightHueFPCQ23Hmx6ObjectQ33Hmx6Object8CopyType = .text:0x805AEEA4; // type:function size:0x7C __as__23Keys<7Vector3,7Vector3>FRC23Keys<7Vector3,7Vector3> = .text:0x805AEF20; // type:function size:0x30 -fn_805AEF50 = .text:0x805AEF50; // type:function size:0x30 -fn_805AEF80 = .text:0x805AEF80; // type:function size:0x4 -fn_805AEF84 = .text:0x805AEF84; // type:function size:0x5C -fn_805AEFE0 = .text:0x805AEFE0; // type:function size:0xF4 +__as__Q211stlpmtx_std73vector<13Key<7Vector3>,Us,Q211stlpmtx_std29StlNodeAlloc<13Key<7Vector3>>>FRCQ211stlpmtx_std73vector<13Key<7Vector3>,Us,Q211stlpmtx_std29StlNodeAlloc<13Key<7Vector3>>> = .text:0x805AEF50; // type:function size:0x30 +Save__8LightHueFR9BinStream = .text:0x805AEF80; // type:function size:0x4 +Load__8LightHueFR9BinStream = .text:0x805AEF84; // type:function size:0x5C +PreLoad__8LightHueFR9BinStream = .text:0x805AEFE0; // type:function size:0xF4 __rs<13Key<7Vector3>,Us>__FR9BinStreamRQ211stlpmtx_std73vector<13Key<7Vector3>,Us,Q211stlpmtx_std29StlNodeAlloc<13Key<7Vector3>>>_R9BinStream = .text:0x805AF0D4; // type:function size:0x80 -fn_805AF154 = .text:0x805AF154; // type:function size:0x44 -fn_805AF198 = .text:0x805AF198; // type:function size:0x4 -fn_805AF19C = .text:0x805AF19C; // type:function size:0x90 -fn_805AF22C = .text:0x805AF22C; // type:function size:0x4 -fn_805AF230 = .text:0x805AF230; // type:function size:0x40 -fn_805AF270 = .text:0x805AF270; // type:function size:0x8C -fn_805AF2FC = .text:0x805AF2FC; // type:function size:0x8 +__rs<7Vector3>__FR9BinStreamR13Key<7Vector3>_R9BinStream = .text:0x805AF154; // type:function size:0x44 +resize__Q211stlpmtx_std73vector<13Key<7Vector3>,Us,Q211stlpmtx_std29StlNodeAlloc<13Key<7Vector3>>>FUlRC13Key<7Vector3> = .text:0x805AF198; // type:function size:0x4 +resize__Q211stlpmtx_std79_Vector_impl<13Key<7Vector3>,Us,Q211stlpmtx_std29StlNodeAlloc<13Key<7Vector3>>>FUlRC13Key<7Vector3> = .text:0x805AF19C; // type:function size:0x90 +insert__Q211stlpmtx_std79_Vector_impl<13Key<7Vector3>,Us,Q211stlpmtx_std29StlNodeAlloc<13Key<7Vector3>>>FP13Key<7Vector3>UlRC13Key<7Vector3> = .text:0x805AF22C; // type:function size:0x4 +erase__Q211stlpmtx_std79_Vector_impl<13Key<7Vector3>,Us,Q211stlpmtx_std29StlNodeAlloc<13Key<7Vector3>>>FP13Key<7Vector3>P13Key<7Vector3> = .text:0x805AF230; // type:function size:0x40 +_M_erase__Q211stlpmtx_std79_Vector_impl<13Key<7Vector3>,Us,Q211stlpmtx_std29StlNodeAlloc<13Key<7Vector3>>>FP13Key<7Vector3>P13Key<7Vector3>RCQ211stlpmtx_std12__false_type = .text:0x805AF270; // type:function size:0x8C +_Destroy_Range>__11stlpmtx_stdFP13Key<7Vector3>P13Key<7Vector3>_v = .text:0x805AF2FC; // type:function size:0x8 fn_805AF304 = .text:0x805AF304; // type:function size:0x2C fn_805AF330 = .text:0x805AF330; // type:function size:0x58 -fn_805AF388 = .text:0x805AF388; // type:function size:0x28 +__copy_ptrs,P13Key<7Vector3>>__11stlpmtx_stdFP13Key<7Vector3>P13Key<7Vector3>P13Key<7Vector3>RCQ211stlpmtx_std12__false_type_P13Key<7Vector3> = .text:0x805AF388; // type:function size:0x28 fn_805AF3B0 = .text:0x805AF3B0; // type:function size:0x68 -fn_805AF418 = .text:0x805AF418; // type:function size:0x40 -fn_805AF458 = .text:0x805AF458; // type:function size:0x4C -fn_805AF4A4 = .text:0x805AF4A4; // type:function size:0x2C8 +__ct__13Key<7Vector3>Fv = .text:0x805AF418; // type:function size:0x40 +PostLoad__8LightHueFR9BinStream = .text:0x805AF458; // type:function size:0x4C +Sync__8LightHueFv = .text:0x805AF4A4; // type:function size:0x2C8 fn_805AF76C = .text:0x805AF76C; // type:function size:0x4 fn_805AF770 = .text:0x805AF770; // type:function size:0x3C -fn_805AF7AC = .text:0x805AF7AC; // type:function size:0x120 +TranslateColor__8LightHueFRCQ23Hmx5ColorRQ23Hmx5Color = .text:0x805AF7AC; // type:function size:0x120 AtFrame__23Keys<7Vector3,7Vector3>CFfR7Vector3 = .text:0x805AF8CC; // type:function size:0x68 Multiply__FRCQ23Hmx5ColorfRQ23Hmx5Color = .text:0x805AF934; // type:function size:0x30 Handle__8LightHueFP9DataArrayb = .text:0x805AF964; // type:function size:0xC4 -fn_805AFA28 = .text:0x805AFA28; // type:function size:0xD0 -fn_805AFAF8 = .text:0x805AFAF8; // type:function size:0x68 +SyncProperty__8LightHueFR8DataNodeP9DataArrayi6PropOp = .text:0x805AFA28; // type:function size:0xD0 +_M_fill_insert__Q211stlpmtx_std79_Vector_impl<13Key<7Vector3>,Us,Q211stlpmtx_std29StlNodeAlloc<13Key<7Vector3>>>FP13Key<7Vector3>UlRC13Key<7Vector3> = .text:0x805AFAF8; // type:function size:0x68 fn_805AFB60 = .text:0x805AFB60; // type:function size:0x2C -fn_805AFB8C = .text:0x805AFB8C; // type:function size:0x160 +__as__Q211stlpmtx_std79_Vector_impl<13Key<7Vector3>,Us,Q211stlpmtx_std29StlNodeAlloc<13Key<7Vector3>>>FRCQ211stlpmtx_std79_Vector_impl<13Key<7Vector3>,Us,Q211stlpmtx_std29StlNodeAlloc<13Key<7Vector3>>> = .text:0x805AFB8C; // type:function size:0x160 fn_805AFCEC = .text:0x805AFCEC; // type:function size:0x5C fn_805AFD48 = .text:0x805AFD48; // type:function size:0x10 fn_805AFD58 = .text:0x805AFD58; // type:function size:0x44 fn_805AFD9C = .text:0x805AFD9C; // type:function size:0x28 fn_805AFDC4 = .text:0x805AFDC4; // type:function size:0x5C fn_805AFE20 = .text:0x805AFE20; // type:function size:0x60 -fn_805AFE80 = .text:0x805AFE80; // type:function size:0x4 -fn_805AFE84 = .text:0x805AFE84; // type:function size:0x4C -fn_805AFED0 = .text:0x805AFED0; // type:function size:0x128 +ClassName__8LightHueCFv = .text:0x805AFE80; // type:function size:0x4 +StaticClassName__8LightHueFv = .text:0x805AFE84; // type:function size:0x4C +SetType__8LightHueF6Symbol = .text:0x805AFED0; // type:function size:0x128 fn_805AFFF8 = .text:0x805AFFF8; // type:function size:0x190 fn_805B0188 = .text:0x805B0188; // type:function size:0x5C fn_805B01E4 = .text:0x805B01E4; // type:function size:0x54 @@ -47490,7 +47490,7 @@ fn_805B02C8 = .text:0x805B02C8; // type:function size:0x114 fn_805B03DC = .text:0x805B03DC; // type:function size:0x60 fn_805B043C = .text:0x805B043C; // type:function size:0x5C fn_805B0498 = .text:0x805B0498; // type:function size:0x54 -fn_805B04EC = .text:0x805B04EC; // type:function size:0x98 +__ct__18LightPresetManagerFP8WorldDir = .text:0x805B04EC; // type:function size:0x98 fn_805B0584 = .text:0x805B0584; // type:function size:0x58 fn_805B05DC = .text:0x805B05DC; // type:function size:0x60 fn_805B063C = .text:0x805B063C; // type:function size:0x58 @@ -47499,9 +47499,9 @@ fn_805B06EC = .text:0x805B06EC; // type:function size:0x50 fn_805B073C = .text:0x805B073C; // type:function size:0x44 fn_805B0780 = .text:0x805B0780; // type:function size:0x3C fn_805B07BC = .text:0x805B07BC; // type:function size:0x70 -fn_805B082C = .text:0x805B082C; // type:function size:0x5C +__dt__18LightPresetManagerFv = .text:0x805B082C; // type:function size:0x5C fn_805B0888 = .text:0x805B0888; // type:function size:0x10 -fn_805B0898 = .text:0x805B0898; // type:function size:0xB0 +SyncObjects__18LightPresetManagerFv = .text:0x805B0898; // type:function size:0xB0 fn_805B0948 = .text:0x805B0948; // type:function size:0x50 fn_805B0998 = .text:0x805B0998; // type:function size:0xD0 fn_805B0A68 = .text:0x805B0A68; // type:function size:0x120 @@ -47516,8 +47516,8 @@ fn_805B0D44 = .text:0x805B0D44; // type:function size:0x78 fn_805B0DBC = .text:0x805B0DBC; // type:function size:0x4 fn_805B0DC0 = .text:0x805B0DC0; // type:function size:0xF0 fn_805B0EB0 = .text:0x805B0EB0; // type:function size:0x88 -fn_805B0F38 = .text:0x805B0F38; // type:function size:0x4 -fn_805B0F3C = .text:0x805B0F3C; // type:function size:0x220 +Enter__18LightPresetManagerFv = .text:0x805B0F38; // type:function size:0x4 +Poll__18LightPresetManagerFv = .text:0x805B0F3C; // type:function size:0x220 fn_805B115C = .text:0x805B115C; // type:function size:0xA0 fn_805B11FC = .text:0x805B11FC; // type:function size:0xAC fn_805B12A8 = .text:0x805B12A8; // type:function size:0x4C @@ -47929,7 +47929,7 @@ fn_805BF4EC = .text:0x805BF4EC; // type:function size:0x8C fn_805BF578 = .text:0x805BF578; // type:function size:0xDC fn_805BF654 = .text:0x805BF654; // type:function size:0x8C fn_805BF6E0 = .text:0x805BF6E0; // type:function size:0x28 -fn_805BF708 = .text:0x805BF708; // type:function size:0x7C +ClearLights__15SpotlightDrawerFv = .text:0x805BF708; // type:function size:0x7C fn_805BF784 = .text:0x805BF784; // type:function size:0x4 fn_805BF788 = .text:0x805BF788; // type:function size:0x90 fn_805BF818 = .text:0x805BF818; // type:function size:0x4 @@ -51864,9 +51864,9 @@ fn_8063D44C = .text:0x8063D44C; // type:function size:0xA4 fn_8063D4F0 = .text:0x8063D4F0; // type:function size:0xD0 fn_8063D5C0 = .text:0x8063D5C0; // type:function size:0x98 fn_8063D658 = .text:0x8063D658; // type:function size:0x38 -fn_8063D690 = .text:0x8063D690; // type:function size:0x8 +SetProcAndLock__3RndFb = .text:0x8063D690; // type:function size:0x8 fn_8063D698 = .text:0x8063D698; // type:function size:0x8 -fn_8063D6A0 = .text:0x8063D6A0; // type:function size:0x24 +ResetProcCounter__3RndFv = .text:0x8063D6A0; // type:function size:0x24 fn_8063D6C4 = .text:0x8063D6C4; // type:function size:0x24 fn_8063D6E8 = .text:0x8063D6E8; // type:function size:0x6C fn_8063D754 = .text:0x8063D754; // type:function size:0xA0 @@ -55317,7 +55317,7 @@ DrawQuad__6WiiRndFRCQ23Hmx4Rect = .text:0x806BBF2C; // type:function size:0xD4 fn_806BC000 = .text:0x806BC000; // type:function size:0x44 fn_806BC044 = .text:0x806BC044; // type:function size:0x29C fn_806BC2E0 = .text:0x806BC2E0; // type:function size:0x18 -TriFrame__6WiiRndFb = .text:0x806BC2F8; // type:function size:0x58 +SetTriFrameRendering__6WiiRndFb = .text:0x806BC2F8; // type:function size:0x58 fn_806BC350 = .text:0x806BC350; // type:function size:0x8 fn_806BC358 = .text:0x806BC358; // type:function size:0xA4 fn_806BC3FC = .text:0x806BC3FC; // type:function size:0x8 @@ -60037,7 +60037,7 @@ lbl_807F037C = .rodata:0x807F037C; // type:object size:0x4 data:float lbl_807F0384 = .rodata:0x807F0384; // type:object size:0x4 data:float lbl_807F0388 = .rodata:0x807F0388; // type:object size:0xC data:4byte lbl_807F0394 = .rodata:0x807F0394; // type:object size:0x4 data:float -lbl_807F0398 = .rodata:0x807F0398; // type:object size:0x4 data:float +@F_6666663f = .rodata:0x807F0398; // type:object size:0x4 data:float lbl_807F039C = .rodata:0x807F039C; // type:object size:0x4 data:float @F_0000803e = .rodata:0x807F03A0; // type:object size:0x4 data:float @F_0000403f = .rodata:0x807F03A4; // type:object size:0x4 data:float @@ -60176,7 +60176,7 @@ lbl_807F07E8 = .rodata:0x807F07E8; // type:object size:0x8 data:float lbl_807F07F0 = .rodata:0x807F07F0; // type:object size:0x4 data:float lbl_807F07F4 = .rodata:0x807F07F4; // type:object size:0x4 data:float lbl_807F07F8 = .rodata:0x807F07F8; // type:object size:0x150 data:4byte -lbl_807F0948 = .rodata:0x807F0948; // type:object size:0x8 data:float +@F_00000034 = .rodata:0x807F0948; // type:object size:0x8 data:float lbl_807F0950 = .rodata:0x807F0950; // type:object size:0x4 data:float lbl_807F0954 = .rodata:0x807F0954; // type:object size:0x4 data:float @F_bd378635 = .rodata:0x807F0958; // type:object size:0x8 data:float @@ -60412,9 +60412,9 @@ lbl_807F3C34 = .rodata:0x807F3C34; // type:object size:0x4 data:4byte lbl_807F3C38 = .rodata:0x807F3C38; // type:object size:0x8 data:float lbl_807F3C40 = .rodata:0x807F3C40; // type:object size:0x8 data:float lbl_807F3C48 = .rodata:0x807F3C48; // type:object size:0x8 data:float -lbl_807F3C50 = .rodata:0x807F3C50; // type:object size:0x4 data:float -lbl_807F3C54 = .rodata:0x807F3C54; // type:object size:0x4 data:float -lbl_807F3C58 = .rodata:0x807F3C58; // type:object size:0x4 data:float +@F_8a56a242 = .rodata:0x807F3C50; // type:object size:0x4 data:float +@F_3333b33e = .rodata:0x807F3C54; // type:object size:0x4 data:float +@F_aa619c3f = .rodata:0x807F3C58; // type:object size:0x4 data:float lbl_807F3C5C = .rodata:0x807F3C5C; // type:object size:0x4 data:float lbl_807F3C60 = .rodata:0x807F3C60; // type:object size:0x4 data:float lbl_807F3C64 = .rodata:0x807F3C64; // type:object size:0x4 data:float @@ -69435,7 +69435,7 @@ lbl_8087FCF8 = .data:0x8087FCF8; // type:object size:0x18 lbl_8087FD10 = .data:0x8087FD10; // type:object size:0x20 lbl_8087FD30 = .data:0x8087FD30; // type:object size:0x10 lbl_8087FD40 = .data:0x8087FD40; // type:object size:0x8 -lbl_8087FD48 = .data:0x8087FD48; // type:object size:0x18 +__vt__41ObjPtrList<16RndTransformable,9ObjectDir> = .data:0x8087FD48; // type:object size:0x18 lbl_8087FD60 = .data:0x8087FD60; // type:object size:0x28 data:string lbl_8087FD88 = .data:0x8087FD88; // type:object size:0x10 lbl_8087FD98 = .data:0x8087FD98; // type:object size:0xD08 @@ -70916,15 +70916,15 @@ lbl_80892C94 = .data:0x80892C94; // type:object size:0xC __RTTI__27ObjPtr<7CamShot,9ObjectDir> = .data:0x80892CA0; // type:object size:0x8 lbl_80892CA8 = .data:0x80892CA8; // type:object size:0x28 __vt__7CamShot = .data:0x80892CD0; // type:object size:0xB8 -lbl_80892D88 = .data:0x80892D88; // type:object size:0x18 +__vt__29ObjPtr<9Spotlight,9ObjectDir> = .data:0x80892D88; // type:object size:0x18 lbl_80892DA0 = .data:0x80892DA0; // type:object size:0x20 lbl_80892DC0 = .data:0x80892DC0; // type:object size:0x10 lbl_80892DD0 = .data:0x80892DD0; // type:object size:0x8 -lbl_80892DD8 = .data:0x80892DD8; // type:object size:0x18 +__vt__38ObjPtrList<13RndAnimatable,9ObjectDir> = .data:0x80892DD8; // type:object size:0x18 lbl_80892DF0 = .data:0x80892DF0; // type:object size:0x28 lbl_80892E18 = .data:0x80892E18; // type:object size:0x10 lbl_80892E28 = .data:0x80892E28; // type:object size:0x8 -lbl_80892E30 = .data:0x80892E30; // type:object size:0x18 +__vt__31ObjPtr<10WorldCrowd,9ObjectDir> = .data:0x80892E30; // type:object size:0x18 lbl_80892E48 = .data:0x80892E48; // type:object size:0x20 lbl_80892E68 = .data:0x80892E68; // type:object size:0x10 lbl_80892E78 = .data:0x80892E78; // type:object size:0x8 @@ -70948,15 +70948,15 @@ __vt__12ColorPalette = .data:0x808931D8; // type:object size:0x5C lbl_80893234 = .data:0x80893234; // type:object size:0xC lbl_80893240 = .data:0x80893240; // type:object size:0x8 data:string __vt__8WorldDir = .data:0x80893248; // type:object size:0x268 -lbl_808934B0 = .data:0x808934B0; // type:object size:0x18 +__vt__35ObjPtrList<10WorldCrowd,9ObjectDir> = .data:0x808934B0; // type:object size:0x18 lbl_808934C8 = .data:0x808934C8; // type:object size:0x24 lbl_808934EC = .data:0x808934EC; // type:object size:0xC lbl_808934F8 = .data:0x808934F8; // type:object size:0x8 -lbl_80893500 = .data:0x80893500; // type:object size:0x18 +__vt__28ObjPtr<8LightHue,9ObjectDir> = .data:0x80893500; // type:object size:0x18 lbl_80893518 = .data:0x80893518; // type:object size:0x1C data:string lbl_80893534 = .data:0x80893534; // type:object size:0xC lbl_80893540 = .data:0x80893540; // type:object size:0x8 -lbl_80893548 = .data:0x80893548; // type:object size:0x18 +__vt__32ObjPtr<11LightPreset,9ObjectDir> = .data:0x80893548; // type:object size:0x18 lbl_80893560 = .data:0x80893560; // type:object size:0x20 lbl_80893580 = .data:0x80893580; // type:object size:0x10 lbl_80893590 = .data:0x80893590; // type:object size:0x8 @@ -75350,7 +75350,7 @@ lbl_808E4499 = .sbss:0x808E4499; // type:object size:0x1 data:byte sPrintTimes__9DirLoader = .sbss:0x808E449A; // type:object size:0x1 data:byte sCacheMode__9DirLoader = .sbss:0x808E449B; // type:object size:0x5 data:byte gLoadingProxyFromDisk = .sbss:0x808E44A0; // type:object size:0x1 data:byte -@GUARD@Property__Q23Hmx6ObjectFP9DataArrayb@n = .sbss:0x808E44A1; // type:object size:0x1 data:byte +@GUARD@Property__Q23Hmx6ObjectCFP9DataArrayb@n = .sbss:0x808E44A1; // type:object size:0x1 data:byte @GUARD@Property__Q23Hmx6ObjectCF6Symbolb@d = .sbss:0x808E44A2; // type:object size:0x1 data:byte lbl_808E44A3 = .sbss:0x808E44A3; // type:object size:0x1 data:byte lbl_808E44A4 = .sbss:0x808E44A4; // type:object size:0x1 data:byte @@ -75960,15 +75960,15 @@ gAltRev__7UIGuide = .sbss:0x808E4B2A; // type:object size:0x6 data:2byte @GUARD@SetType__7DOFProcF6Symbol@types = .sbss:0x808E4B30; // type:object size:0x1 data:byte @GUARD@StaticClassName__7DOFProcFv@name = .sbss:0x808E4B31; // type:object size:0x1 data:byte lbl_808E4B32 = .sbss:0x808E4B32; // type:object size:0x1 data:byte -lbl_808E4B33 = .sbss:0x808E4B33; // type:object size:0x5 data:byte +@GUARD@StartShot___13CameraManagerFP7CamShot@venue_test = .sbss:0x808E4B33; // type:object size:0x5 data:byte @GUARD@SetType__17RndMultiMeshProxyF6Symbol@types = .sbss:0x808E4B38; // type:object size:0x1 data:byte lbl_808E4B39 = .sbss:0x808E4B39; // type:object size:0x1 data:byte lbl_808E4B3A = .sbss:0x808E4B3A; // type:object size:0x1 data:byte lbl_808E4B3B = .sbss:0x808E4B3B; // type:object size:0x1 data:byte lbl_808E4B3C = .sbss:0x808E4B3C; // type:object size:0x1 data:byte -lbl_808E4B3E = .sbss:0x808E4B3E; // type:object size:0x2 data:2byte -lbl_808E4B40 = .sbss:0x808E4B40; // type:object size:0x2 data:2byte -lbl_808E4B42 = .sbss:0x808E4B42; // type:object size:0x1 data:byte +gRev__7CamShot = .sbss:0x808E4B3E; // type:object size:0x2 data:2byte +gAltRev__7CamShot = .sbss:0x808E4B40; // type:object size:0x2 data:2byte +@GUARD@PropSync__FR12CamShotFrameR8DataNodeP9DataArrayi6PropOp@_s = .sbss:0x808E4B42; // type:object size:0x1 data:byte lbl_808E4B43 = .sbss:0x808E4B43; // type:object size:0x1 data:byte lbl_808E4B44 = .sbss:0x808E4B44; // type:object size:0x1 data:byte lbl_808E4B45 = .sbss:0x808E4B45; // type:object size:0x1 data:byte @@ -75977,13 +75977,13 @@ lbl_808E4B47 = .sbss:0x808E4B47; // type:object size:0x1 data:byte lbl_808E4B48 = .sbss:0x808E4B48; // type:object size:0x2 data:2byte lbl_808E4B4A = .sbss:0x808E4B4A; // type:object size:0x2 data:2byte lbl_808E4B4C = .sbss:0x808E4B4C; // type:object size:0x1 data:byte -lbl_808E4B50 = .sbss:0x808E4B50; // type:object size:0x2 data:2byte -lbl_808E4B52 = .sbss:0x808E4B52; // type:object size:0x6 data:2byte +gRev__12ColorPalette = .sbss:0x808E4B50; // type:object size:0x2 data:2byte +gAltRev__12ColorPalette = .sbss:0x808E4B52; // type:object size:0x6 data:2byte lbl_808E4B58 = .sbss:0x808E4B58; // type:object size:0x1 data:byte lbl_808E4B59 = .sbss:0x808E4B59; // type:object size:0x1 data:byte lbl_808E4B5A = .sbss:0x808E4B5A; // type:object size:0x1 data:byte -lbl_808E4B5C = .sbss:0x808E4B5C; // type:object size:0x2 data:2byte -lbl_808E4B5E = .sbss:0x808E4B5E; // type:object size:0x2 data:2byte +gRev__8WorldDir = .sbss:0x808E4B5C; // type:object size:0x2 data:2byte +gAltRev__8WorldDir = .sbss:0x808E4B5E; // type:object size:0x2 data:2byte lbl_808E4B60 = .sbss:0x808E4B60; // type:object size:0x1 data:byte lbl_808E4B61 = .sbss:0x808E4B61; // type:object size:0x1 data:byte lbl_808E4B62 = .sbss:0x808E4B62; // type:object size:0x1 data:byte @@ -75993,11 +75993,11 @@ lbl_808E4B65 = .sbss:0x808E4B65; // type:object size:0x1 data:byte lbl_808E4B66 = .sbss:0x808E4B66; // type:object size:0x1 data:byte lbl_808E4B67 = .sbss:0x808E4B67; // type:object size:0x1 data:byte lbl_808E4B68 = .sbss:0x808E4B68; // type:object size:0x8 data:byte -lbl_808E4B70 = .sbss:0x808E4B70; // type:object size:0x2 data:2byte -lbl_808E4B72 = .sbss:0x808E4B72; // type:object size:0x2 data:2byte -lbl_808E4B74 = .sbss:0x808E4B74; // type:object size:0x1 data:byte -lbl_808E4B78 = .sbss:0x808E4B78; // type:object size:0x2 data:2byte -lbl_808E4B7A = .sbss:0x808E4B7A; // type:object size:0x6 data:2byte +gRev__11LightPreset = .sbss:0x808E4B70; // type:object size:0x2 data:2byte +gAltRev__11LightPreset = .sbss:0x808E4B72; // type:object size:0x2 data:2byte +sLoading = .sbss:0x808E4B74; // type:object size:0x1 data:byte +gRev__8LightHue = .sbss:0x808E4B78; // type:object size:0x2 data:2byte +gAltRev__8LightHue = .sbss:0x808E4B7A; // type:object size:0x6 data:2byte lbl_808E4B80 = .sbss:0x808E4B80; // type:object size:0x8 data:byte lbl_808E4B88 = .sbss:0x808E4B88; // type:object size:0x1 data:byte lbl_808E4B89 = .sbss:0x808E4B89; // type:object size:0x1 data:byte @@ -79013,7 +79013,7 @@ sFactories__Q23Hmx6Object = .bss:0x8091B768; // type:object size:0x18 sDeleting__Q23Hmx6Object = .bss:0x8091B780; // type:object size:0x10 data:4byte sRevStack = .bss:0x8091B790; // type:object size:0x8 lbl_8091B798 = .bss:0x8091B798; // type:object size:0x10 -@LOCAL@Property__Q23Hmx6ObjectFP9DataArrayb@n = .bss:0x8091B7A8; // type:object size:0x8 +@LOCAL@Property__Q23Hmx6ObjectCFP9DataArrayb@n = .bss:0x8091B7A8; // type:object size:0x8 lbl_8091B7B0 = .bss:0x8091B7B0; // type:object size:0xC @LOCAL@Property__Q23Hmx6ObjectCF6Symbolb@d = .bss:0x8091B7BC; // type:object size:0x24 data:4byte lbl_8091B7E0 = .bss:0x8091B7E0; // type:object size:0x10 @@ -79300,7 +79300,7 @@ MsgRetractedPosition = .bss:0x8097E0A8; // type:object size:0x18 MsgSaved = .bss:0x8097E0C0; // type:object size:0x18 MsgScore = .bss:0x8097E0D8; // type:object size:0x18 MsgSearchFinished = .bss:0x8097E0F0; // type:object size:0x18 -MsgSelectCamera = .bss:0x8097E108; // type:object size:0x18 +select_camera_msg = .bss:0x8097E108; // type:object size:0x18 MsgSelected = .bss:0x8097E120; // type:object size:0x18 MsgSendBlowCoda = .bss:0x8097E138; // type:object size:0x18 MsgSendFinishedSong = .bss:0x8097E150; // type:object size:0x18 @@ -79333,7 +79333,7 @@ MsgShowSetlistSaveDialog = .bss:0x8097E3C0; // type:object size:0x18 MsgShowsExtendedMicArrows = .bss:0x8097E3D8; // type:object size:0x18 MsgSongSettingsFlow = .bss:0x8097E3F0; // type:object size:0x18 start_msg = .bss:0x8097E408; // type:object size:0x18 -MsgStartAnim = .bss:0x8097E420; // type:object size:0x18 +start_anim_msg = .bss:0x8097E420; // type:object size:0x18 MsgStartShot = .bss:0x8097E438; // type:object size:0x18 MsgStartSolo = .bss:0x8097E450; // type:object size:0x18 MsgStopShot = .bss:0x8097E468; // type:object size:0x18 @@ -79402,9 +79402,9 @@ SymSetFraction = .bss:0x8097E984; // type:object size:0x4 set_frame = .bss:0x8097E988; // type:object size:0x4 SymSetFromMeshAnim = .bss:0x8097E98C; // type:object size:0x4 SymSetFromSongSelectNode = .bss:0x8097E990; // type:object size:0x4 -SymSetFrozen = .bss:0x8097E994; // type:object size:0x4 +set_frozen = .bss:0x8097E994; // type:object size:0x4 set_frustum = .bss:0x8097E998; // type:object size:0x4 -SymSetFullness = .bss:0x8097E99C; // type:object size:0x4 +set_fullness = .bss:0x8097E99C; // type:object size:0x4 SymSetFx = .bss:0x8097E9A0; // type:object size:0x4 SymSetFxVol = .bss:0x8097E9A4; // type:object size:0x4 SymSetFxVolume = .bss:0x8097E9A8; // type:object size:0x4 @@ -79455,7 +79455,7 @@ set_key = .bss:0x8097EA64; // type:object size:0x4 SymSetKeyOffset = .bss:0x8097EA68; // type:object size:0x4 SymSetKeyRange = .bss:0x8097EA6C; // type:object size:0x4 set_key_val = .bss:0x8097EA70; // type:object size:0x4 -SymSetKeyframe = .bss:0x8097EA74; // type:object size:0x4 +set_keyframe = .bss:0x8097EA74; // type:object size:0x4 SymSetKickAutoplay = .bss:0x8097EA78; // type:object size:0x4 SymSetLabelForData = .bss:0x8097EA7C; // type:object size:0x8 SymSetLastHitFraction = .bss:0x8097EA84; // type:object size:0x4 @@ -79531,8 +79531,8 @@ SymSetOverscan = .bss:0x8097EBD4; // type:object size:0x4 SymSetOvershellPause = .bss:0x8097EBD8; // type:object size:0x4 SymSetPan = .bss:0x8097EBDC; // type:object size:0x4 set_panel_active = .bss:0x8097EBE0; // type:object size:0x4 -SymSetParent = .bss:0x8097EBE4; // type:object size:0x4 -SymSetParentDof = .bss:0x8097EBE8; // type:object size:0x4 +set_parent = .bss:0x8097EBE4; // type:object size:0x4 +set_parent_dof = .bss:0x8097EBE8; // type:object size:0x4 SymSetParentalControlPin = .bss:0x8097EBEC; // type:object size:0x4 set_particle_sys = .bss:0x8097EBF0; // type:object size:0x8 SymSetPatchMenuReturnState = .bss:0x8097EBF8; // type:object size:0x4 @@ -79584,7 +79584,7 @@ SymSetRendered = .bss:0x8097ECC0; // type:object size:0x8 SymSetResumeFraction = .bss:0x8097ECC8; // type:object size:0x4 SymSetReturnInfo = .bss:0x8097ECCC; // type:object size:0x4 SymSetReturnScreen = .bss:0x8097ECD0; // type:object size:0x4 -SymSetRot = .bss:0x8097ECD4; // type:object size:0x4 +set_rot = .bss:0x8097ECD4; // type:object size:0x4 set_rot_slerp = .bss:0x8097ECD8; // type:object size:0x4 set_rotate = .bss:0x8097ECDC; // type:object size:0x8 SymSetScale = .bss:0x8097ECE4; // type:object size:0x4 @@ -79779,7 +79779,7 @@ SymShortcutGroup = .bss:0x8097F03C; // type:object size:0x8 data:4byte SymShortcutStr = .bss:0x8097F044; // type:object size:0x4 SymShortcutToPos = .bss:0x8097F048; // type:object size:0x8 SymShot5 = .bss:0x8097F050; // type:object size:0x4 -SymShotAfter = .bss:0x8097F054; // type:object size:0x8 +shot_after = .bss:0x8097F054; // type:object size:0x8 SymShotBg = .bss:0x8097F05C; // type:object size:0x4 SymShotBk = .bss:0x8097F060; // type:object size:0x4 SymShotGk = .bss:0x8097F064; // type:object size:0x4 @@ -79911,7 +79911,7 @@ SymSlotView = .bss:0x8097F2F0; // type:object size:0x4 SymSlots = .bss:0x8097F2F4; // type:object size:0x8 SymSmasherList = .bss:0x8097F2FC; // type:object size:0x4 data:4byte SymSmasherPlate = .bss:0x8097F300; // type:object size:0x4 -SymSmokeIntensity = .bss:0x8097F304; // type:object size:0x8 +smoke_intensity = .bss:0x8097F304; // type:object size:0x8 SymSnap = .bss:0x8097F30C; // type:object size:0x8 snap_to_value = .bss:0x8097F314; // type:object size:0xC SymSolo = .bss:0x8097F320; // type:object size:0x4 data:4byte @@ -79985,10 +79985,10 @@ SymSpotMaterial = .bss:0x8097F490; // type:object size:0x4 SymSpotScale = .bss:0x8097F494; // type:object size:0x4 SymSpotTarget = .bss:0x8097F498; // type:object size:0x4 SymSpotVocal = .bss:0x8097F49C; // type:object size:0x4 -SymSpotlight = .bss:0x8097F4A0; // type:object size:0x4 -SymSpotlightDrawer = .bss:0x8097F4A4; // type:object size:0x4 -SymSpotlightDrawerEntries = .bss:0x8097F4A8; // type:object size:0x4 -SymSpotlightEntries = .bss:0x8097F4AC; // type:object size:0x4 +spotlight = .bss:0x8097F4A0; // type:object size:0x4 +spotlight_drawer = .bss:0x8097F4A4; // type:object size:0x4 +spotlight_drawer_entries = .bss:0x8097F4A8; // type:object size:0x4 +spotlight_entries = .bss:0x8097F4AC; // type:object size:0x4 SymSpotlightFail = .bss:0x8097F4B0; // type:object size:0x4 SymSpotlightFailGuilty = .bss:0x8097F4B4; // type:object size:0x4 SymSpotlightPhraseSuccess = .bss:0x8097F4B8; // type:object size:0x4 @@ -80321,7 +80321,7 @@ SymTotSongsPlayed = .bss:0x8097FC64; // type:object size:0x4 data:4byte SymTotTimesRevived = .bss:0x8097FC68; // type:object size:0x4 data:4byte SymTotTripleAwesomes = .bss:0x8097FC6C; // type:object size:0x4 data:4byte SymTotUpstrums = .bss:0x8097FC70; // type:object size:0x4 data:4byte -SymTotal = .bss:0x8097FC74; // type:object size:0x4 +total = .bss:0x8097FC74; // type:object size:0x4 SymTotalAwesomes = .bss:0x8097FC78; // type:object size:0x4 SymTotalBreHits = .bss:0x8097FC7C; // type:object size:0x4 SymTotalDoubleAwesomes = .bss:0x8097FC80; // type:object size:0x4 @@ -80441,7 +80441,7 @@ SymTriggerPools = .bss:0x8097FE90; // type:object size:0x4 SymTriggerSongCompletion = .bss:0x8097FE94; // type:object size:0x4 SymTriggerSound = .bss:0x8097FE98; // type:object size:0x4 SymTriggerpoolToCreatefor = .bss:0x8097FE9C; // type:object size:0x4 -SymTriggers = .bss:0x8097FEA0; // type:object size:0x4 +triggers = .bss:0x8097FEA0; // type:object size:0x4 triggers_to_reset = .bss:0x8097FEA4; // type:object size:0x4 SymTrillCount = .bss:0x8097FEA8; // type:object size:0xC data:4byte SymTrillsHitCompletely = .bss:0x8097FEB4; // type:object size:0x4 data:4byte @@ -80593,13 +80593,13 @@ SymUpstrumPercentStatTrackerContribution = .bss:0x809801BC; // type:object size: SymUpstrumStatTrackerContribution = .bss:0x809801C0; // type:object size:0x8 data:4byte use_color_adjust = .bss:0x809801C8; // type:object size:0x4 SymUseConnectedControllers = .bss:0x809801CC; // type:object size:0x8 -SymUseDepthOfField = .bss:0x809801D4; // type:object size:0x4 +use_depth_of_field = .bss:0x809801D4; // type:object size:0x4 SymUseFreeCam = .bss:0x809801D8; // type:object size:0x4 use_highlight_mesh = .bss:0x809801DC; // type:object size:0x4 SymUseJoypad = .bss:0x809801E0; // type:object size:0x8 SymUseMicStandClips = .bss:0x809801E8; // type:object size:0x4 SymUseMidiMode = .bss:0x809801EC; // type:object size:0x4 data:4byte -SymUseParentRotation = .bss:0x809801F0; // type:object size:0xC +use_parent_rotation = .bss:0x809801F0; // type:object size:0xC SymUseRealtimeGaps = .bss:0x809801FC; // type:object size:0xC use_specified_cam = .bss:0x80980208; // type:object size:0x4 SymUser = .bss:0x8098020C; // type:object size:0x4 @@ -80628,12 +80628,12 @@ vertical = .bss:0x809802AC; // type:object size:0x4 SymVerticalStretch = .bss:0x809802B0; // type:object size:0x4 SymVerts = .bss:0x809802B4; // type:object size:0x8 SymVideoEnable = .bss:0x809802BC; // type:object size:0x4 -SymVideoVenuePostproc = .bss:0x809802C0; // type:object size:0x4 +video_venue_postproc = .bss:0x809802C0; // type:object size:0x4 SymVideoVenues = .bss:0x809802C4; // type:object size:0x8 data:4byte SymView = .bss:0x809802CC; // type:object size:0x4 view_direction = .bss:0x809802D0; // type:object size:0x4 SymViewFreeze = .bss:0x809802D4; // type:object size:0x4 -SymViewKeyframe = .bss:0x809802D8; // type:object size:0x4 +view_keyframe = .bss:0x809802D8; // type:object size:0x4 SymViewSetlists = .bss:0x809802DC; // type:object size:0x4 data:4byte SymViewSetlistsByLine = .bss:0x809802E0; // type:object size:0x4 data:4byte SymViewSettingsProvider = .bss:0x809802E4; // type:object size:0x4 @@ -81031,7 +81031,7 @@ SymActivePlayer = .bss:0x80980AB0; // type:object size:0x4 SymActiveScoreType = .bss:0x80980AB4; // type:object size:0x4 active_selected_color = .bss:0x80980AB8; // type:object size:0x4 active_selecting_color = .bss:0x80980ABC; // type:object size:0x8 -SymAdd3DCrowd = .bss:0x80980AC4; // type:object size:0x8 +add_3d_crowd = .bss:0x80980AC4; // type:object size:0x8 SymAddAward = .bss:0x80980ACC; // type:object size:0x8 SymAddClip = .bss:0x80980AD4; // type:object size:0x4 SymAddContent = .bss:0x80980AD8; // type:object size:0xC @@ -81190,7 +81190,7 @@ SymAssetHintGoal = .bss:0x80980DBC; // type:object size:0x4 data:4byte SymAssetHintGoalcategory = .bss:0x80980DC0; // type:object size:0x4 data:4byte SymAssetHintGoalgroup = .bss:0x80980DC4; // type:object size:0x4 data:4byte SymAssetProvider = .bss:0x80980DC8; // type:object size:0xC -SymAssignRandomColors = .bss:0x80980DD4; // type:object size:0x4 +assign_random_colors = .bss:0x80980DD4; // type:object size:0x4 SymAsyncLoad = .bss:0x80980DD8; // type:object size:0x4 SymAttachMesh = .bss:0x80980DDC; // type:object size:0x4 attach_to_importfont = .bss:0x80980DE0; // type:object size:0x4 @@ -81265,7 +81265,7 @@ base = .bss:0x80980F38; // type:object size:0x4 SymBaseCrossSection = .bss:0x80980F3C; // type:object size:0x4 base_distance = .bss:0x80980F40; // type:object size:0x4 SymBaseHeight = .bss:0x80980F44; // type:object size:0x4 -SymBaseIntensity = .bss:0x80980F48; // type:object size:0x8 +base_intensity = .bss:0x80980F48; // type:object size:0x8 SymBaseKerning = .bss:0x80980F50; // type:object size:0x4 SymBaseLength = .bss:0x80980F54; // type:object size:0x4 base_map = .bss:0x80980F58; // type:object size:0x4 @@ -81327,8 +81327,8 @@ bitmap_save_path = .bss:0x80981040; // type:object size:0x8 SymBlank = .bss:0x80981048; // type:object size:0x4 SymBleedTest = .bss:0x8098104C; // type:object size:0x4 blend = .bss:0x80981050; // type:object size:0x8 data:4byte -SymBlendEase = .bss:0x80981058; // type:object size:0x4 -SymBlendEaseMode = .bss:0x8098105C; // type:object size:0x8 +blend_ease = .bss:0x80981058; // type:object size:0x4 +blend_ease_mode = .bss:0x8098105C; // type:object size:0x8 SymBlendOverridePct = .bss:0x80981064; // type:object size:0x4 SymBlendWidth = .bss:0x80981068; // type:object size:0x4 blink_clip_left = .bss:0x8098106C; // type:object size:0x4 @@ -81434,7 +81434,7 @@ call = .bss:0x8098123C; // type:object size:0x4 callback_object = .bss:0x80981240; // type:object size:0x8 SymCamPostproc = .bss:0x80981248; // type:object size:0x8 SymCamTeleport = .bss:0x80981250; // type:object size:0x4 -SymCameraRandomSeed = .bss:0x80981254; // type:object size:0x4 +camera_random_seed = .bss:0x80981254; // type:object size:0x4 SymCameraSource = .bss:0x80981258; // type:object size:0x4 camera_weight = .bss:0x8098125C; // type:object size:0x4 SymCampaign = .bss:0x80981260; // type:object size:0x4 data:4byte @@ -81583,11 +81583,11 @@ SymChromaticSharpen = .bss:0x8098151C; // type:object size:0x8 SymChunkSize = .bss:0x80981524; // type:object size:0x4 data:4byte circular = .bss:0x80981528; // type:object size:0x4 SymCity = .bss:0x8098152C; // type:object size:0x4 data:4byte -SymClampHeight = .bss:0x80981530; // type:object size:0x14 +clamp_height = .bss:0x80981530; // type:object size:0x14 SymCleanup = .bss:0x80981544; // type:object size:0x4 SymCleanupAfterBackup = .bss:0x80981548; // type:object size:0x4 SymClear = .bss:0x8098154C; // type:object size:0x4 -SymClear3DCrowd = .bss:0x80981550; // type:object size:0x4 +clear_3d_crowd = .bss:0x80981550; // type:object size:0x4 SymClearActionToken = .bss:0x80981554; // type:object size:0x4 SymClearActive = .bss:0x80981558; // type:object size:0x4 SymClearAll = .bss:0x8098155C; // type:object size:0xC @@ -81619,7 +81619,7 @@ SymClearFromCache = .bss:0x809815D4; // type:object size:0x4 SymClearGems = .bss:0x809815D8; // type:object size:0x4 SymClearGoalInfo = .bss:0x809815DC; // type:object size:0x4 SymClearGroup = .bss:0x809815E0; // type:object size:0x4 -SymClearHideList = .bss:0x809815E4; // type:object size:0x8 +clear_hide_list = .bss:0x809815E4; // type:object size:0x8 SymClearHitStats = .bss:0x809815EC; // type:object size:0x4 SymClearInstrument = .bss:0x809815F0; // type:object size:0x8 SymClearLayer = .bss:0x809815F8; // type:object size:0x4 @@ -81675,7 +81675,7 @@ SymColor1Palette = .bss:0x809816F4; // type:object size:0x4 SymColor2 = .bss:0x809816F8; // type:object size:0x4 SymColor2Option = .bss:0x809816FC; // type:object size:0x4 SymColor2Palette = .bss:0x80981700; // type:object size:0x4 -SymColors = .bss:0x80981704; // type:object size:0x4 +colors = .bss:0x80981704; // type:object size:0x4 SymCombinedLabel = .bss:0x80981708; // type:object size:0x4 data:4byte SymComesBefore = .bss:0x8098170C; // type:object size:0x4 SymCommand = .bss:0x80981710; // type:object size:0x4 data:4byte @@ -81758,15 +81758,15 @@ SymCreateVfCache = .bss:0x809818A0; // type:object size:0x4 SymCredits = .bss:0x809818A4; // type:object size:0x4 SymCriticalUserDropOut = .bss:0x809818A8; // type:object size:0x4 data:4byte SymCrossfadeDuration = .bss:0x809818AC; // type:object size:0x4 data:4byte -SymCrowd = .bss:0x809818B0; // type:object size:0x8 +crowd = .bss:0x809818B0; // type:object size:0x8 SymCrowdChannels = .bss:0x809818B8; // type:object size:0x4 data:4byte SymCrowdClap = .bss:0x809818BC; // type:object size:0x8 SymCrowdNoclap = .bss:0x809818C4; // type:object size:0x4 SymCrowdRating = .bss:0x809818C8; // type:object size:0x4 SymCrowdRatingActive = .bss:0x809818CC; // type:object size:0x4 SymCrowdReacts = .bss:0x809818D0; // type:object size:0x4 -SymCrowdRotate = .bss:0x809818D4; // type:object size:0x4 -SymCrowds = .bss:0x809818D8; // type:object size:0xC +crowd_rotate = .bss:0x809818D4; // type:object size:0x4 +crowds = .bss:0x809818D8; // type:object size:0xC SymCubeTex = .bss:0x809818E4; // type:object size:0xC SymCurBeat = .bss:0x809818F0; // type:object size:0xC SymCurOffer = .bss:0x809818FC; // type:object size:0x4 @@ -81788,7 +81788,7 @@ SymCurrentQuestFilter = .bss:0x80981944; // type:object size:0x4 SymCurrentQuestLongDescription = .bss:0x80981948; // type:object size:0x4 SymCurrentScreen = .bss:0x8098194C; // type:object size:0x4 SymCurrentScreenChanged = .bss:0x80981950; // type:object size:0x4 -SymCurrentShot = .bss:0x80981954; // type:object size:0x4 +current_shot = .bss:0x80981954; // type:object size:0x4 SymCurrentSong = .bss:0x80981958; // type:object size:0x4 data:4byte SymCurrentStreak = .bss:0x8098195C; // type:object size:0x8 SymCurrentTransitionEvent = .bss:0x80981964; // type:object size:0x4 @@ -81802,7 +81802,7 @@ SymCutouts = .bss:0x80981984; // type:object size:0x4 SymCycleCamera = .bss:0x80981988; // type:object size:0x10 SymCycleMode = .bss:0x80981998; // type:object size:0x4 SymCycleNextMessage = .bss:0x8098199C; // type:object size:0x8 -SymCycleShot = .bss:0x809819A4; // type:object size:0x4 +cycle_shot = .bss:0x809819A4; // type:object size:0x4 SymCycleTimeMs = .bss:0x809819A8; // type:object size:0xC SymCymbalGemCount = .bss:0x809819B4; // type:object size:0x4 data:4byte SymCymbalGemsHitOnCymbals = .bss:0x809819B8; // type:object size:0x4 data:4byte @@ -81843,7 +81843,7 @@ SymDelayedEffect = .bss:0x80981A98; // type:object size:0x4 data:4byte SymDeleteCharacter = .bss:0x80981A9C; // type:object size:0x4 SymDeleteContent = .bss:0x80981AA0; // type:object size:0x4 SymDeleteFailed = .bss:0x80981AA4; // type:object size:0x4 -SymDeleteFreeCam = .bss:0x80981AA8; // type:object size:0x4 +delete_free_cam = .bss:0x80981AA8; // type:object size:0x4 SymDeleteHighlightedSetlist = .bss:0x80981AAC; // type:object size:0x4 SymDeleteLoader = .bss:0x80981AB0; // type:object size:0xC SymDeleteOrphanedProfiles = .bss:0x80981ABC; // type:object size:0x4 @@ -81916,7 +81916,7 @@ SymDisablePhraseBonus = .bss:0x80981C20; // type:object size:0x4 SymDisablePicking = .bss:0x80981C24; // type:object size:0x4 SymDisablePlayer = .bss:0x80981C28; // type:object size:0xC SymDisableSlot = .bss:0x80981C34; // type:object size:0x8 -SymDisabled = .bss:0x80981C3C; // type:object size:0x4 +disabled = .bss:0x80981C3C; // type:object size:0x4 disabled_color = .bss:0x80981C40; // type:object size:0x4 SymDisband = .bss:0x80981C44; // type:object size:0x4 data:4byte SymDisbandError = .bss:0x80981C48; // type:object size:0x4 data:4byte @@ -81966,7 +81966,7 @@ SymDrawGroup = .bss:0x80981D28; // type:object size:0x4 draw_list = .bss:0x80981D2C; // type:object size:0x4 SymDrawOnly = .bss:0x80981D30; // type:object size:0x4 draw_order = .bss:0x80981D34; // type:object size:0x4 -SymDrawOverrides = .bss:0x80981D38; // type:object size:0x4 +draw_overrides = .bss:0x80981D38; // type:object size:0x4 SymDrawPreClear = .bss:0x80981D3C; // type:object size:0x8 SymDrawSampleChord = .bss:0x80981D44; // type:object size:0x4 SymDrawTab = .bss:0x80981D48; // type:object size:0x8 @@ -81996,7 +81996,7 @@ SymDumpPlates = .bss:0x80981DD0; // type:object size:0x18 SymDupeLayer = .bss:0x80981DE8; // type:object size:0x4 SymDuplicatePatch = .bss:0x80981DEC; // type:object size:0x4 duration = .bss:0x80981DF0; // type:object size:0x4 -SymDurationSeconds = .bss:0x80981DF4; // type:object size:0x8 +duration_seconds = .bss:0x80981DF4; // type:object size:0x8 SymDynamicPrereqs = .bss:0x80981DFC; // type:object size:0x4 data:4byte SymE3CheatAutoplay = .bss:0x80981E00; // type:object size:0x4 SymEarlyLate = .bss:0x80981E04; // type:object size:0x4 @@ -82081,8 +82081,8 @@ SymEnterVenue = .bss:0x80981FA0; // type:object size:0x4 SymEnterVignette = .bss:0x80981FA4; // type:object size:0x14 SymEnvOverride = .bss:0x80981FB8; // type:object size:0x8 SymEnviron3D = .bss:0x80981FC0; // type:object size:0xC -SymEnvironment = .bss:0x80981FCC; // type:object size:0x4 -SymEnvironmentEntries = .bss:0x80981FD0; // type:object size:0x4 +environment = .bss:0x80981FCC; // type:object size:0x4 +environment_entries = .bss:0x80981FD0; // type:object size:0x4 SymEquipAward = .bss:0x80981FD4; // type:object size:0x4 SymErrorBattleLimitReached = .bss:0x80981FD8; // type:object size:0x4 data:4byte SymErrorFindPlayersWithAutoVocals = .bss:0x80981FDC; // type:object size:0x4 data:4byte @@ -82172,7 +82172,7 @@ SymFestivalReward = .bss:0x8098219C; // type:object size:0x4 SymFetchLinkingCode = .bss:0x809821A0; // type:object size:0x4 SymFetchRecommendations = .bss:0x809821A4; // type:object size:0x4 SymFflip = .bss:0x809821A8; // type:object size:0x4 -SymFieldOfView = .bss:0x809821AC; // type:object size:0x4 +field_of_view = .bss:0x809821AC; // type:object size:0x4 file = .bss:0x809821B0; // type:object size:0x8 data:4byte SymFileExists = .bss:0x809821B8; // type:object size:0x4 SymFilePath = .bss:0x809821BC; // type:object size:0xC @@ -82185,7 +82185,7 @@ SymFillHitCount = .bss:0x809821E0; // type:object size:0x8 SymFillReset = .bss:0x809821E8; // type:object size:0x4 SymFillStarPower = .bss:0x809821EC; // type:object size:0x4 fill_with_safe_white = .bss:0x809821F0; // type:object size:0x4 -SymFilter = .bss:0x809821F4; // type:object size:0x4 data:4byte +filter = .bss:0x809821F4; // type:object size:0x4 data:4byte SymFilterAny = .bss:0x809821F8; // type:object size:0x4 data:4byte filter_bones = .bss:0x809821FC; // type:object size:0x4 filter_context = .bss:0x80982200; // type:object size:0x4 @@ -82213,7 +82213,7 @@ SymFindOffer = .bss:0x80982268; // type:object size:0x8 SymFindPack = .bss:0x80982270; // type:object size:0x4 SymFindPlayers = .bss:0x80982274; // type:object size:0x4 SymFindPools = .bss:0x80982278; // type:object size:0x4 -SymFindShot = .bss:0x8098227C; // type:object size:0x4 +find_shot = .bss:0x8098227C; // type:object size:0x4 SymFindTarget = .bss:0x80982280; // type:object size:0x8 SymFindingAdditionalContent = .bss:0x80982288; // type:object size:0x4 data:4byte SymFindingAdditionalProgress = .bss:0x8098228C; // type:object size:0x4 data:4byte @@ -82226,7 +82226,7 @@ SymFinishCount = .bss:0x809822A4; // type:object size:0x4 SymFinishCymbalSelection = .bss:0x809822A8; // type:object size:0x4 SymFinishPatchEdit = .bss:0x809822AC; // type:object size:0x4 SymFinishes = .bss:0x809822B0; // type:object size:0x8 data:4byte -SymFirst = .bss:0x809822B8; // type:object size:0x8 +first = .bss:0x809822B8; // type:object size:0x8 SymFirstCharArtist = .bss:0x809822C0; // type:object size:0x4 SymFirstCharName = .bss:0x809822C4; // type:object size:0x4 SymFirstClip = .bss:0x809822C8; // type:object size:0x4 @@ -82241,9 +82241,9 @@ SymFixedset1 = .bss:0x809822FC; // type:object size:0x4 data:4byte SymFlagParser = .bss:0x80982300; // type:object size:0x4 SymFlagString = .bss:0x80982304; // type:object size:0x4 flags = .bss:0x80982308; // type:object size:0x4 data:4byte -SymFlagsAny = .bss:0x8098230C; // type:object size:0x4 data:4byte -SymFlagsExact = .bss:0x80982310; // type:object size:0x4 -SymFlareEnabled = .bss:0x80982314; // type:object size:0x4 +flags_any = .bss:0x8098230C; // type:object size:0x4 data:4byte +flags_exact = .bss:0x80982310; // type:object size:0x4 +flare_enabled = .bss:0x80982314; // type:object size:0x4 SymFlareMaterial = .bss:0x80982318; // type:object size:0x4 SymFlareOffset = .bss:0x8098231C; // type:object size:0x4 SymFlareRange = .bss:0x80982320; // type:object size:0x4 @@ -82259,7 +82259,7 @@ SymFlipY = .bss:0x80982348; // type:object size:0x4 SymFloat = .bss:0x8098234C; // type:object size:0x4 data:4byte SymFloatStars = .bss:0x80982350; // type:object size:0x4 SymFloatTotalStars = .bss:0x80982354; // type:object size:0x10 -SymFocalTarget = .bss:0x80982364; // type:object size:0x4 +focal_target = .bss:0x80982364; // type:object size:0x4 focus = .bss:0x80982368; // type:object size:0x4 data:4byte focus_anim = .bss:0x8098236C; // type:object size:0x4 data:4byte SymFocusBlurMultiplier = .bss:0x80982370; // type:object size:0x4 @@ -82305,7 +82305,7 @@ SymForceMips = .bss:0x80982440; // type:object size:0x4 SymForceMixedMode = .bss:0x80982444; // type:object size:0x4 data:4byte SymForceNextPlayIndex = .bss:0x80982448; // type:object size:0x14 SymForcePreset = .bss:0x8098245C; // type:object size:0x8 -SymForceShot = .bss:0x80982464; // type:object size:0x8 +force_shot = .bss:0x80982464; // type:object size:0x8 SymForceTwoPresets = .bss:0x8098246C; // type:object size:0x4 SymForceVertical = .bss:0x80982470; // type:object size:0x4 SymForeachActivePlayer = .bss:0x80982474; // type:object size:0x4 @@ -82375,7 +82375,7 @@ SymGemMash3Anim = .bss:0x809825A8; // type:object size:0x4 SymGemMash4Anim = .bss:0x809825AC; // type:object size:0x8 SymGemTrackDirId = .bss:0x809825B4; // type:object size:0x4 SymGemTracksSize = .bss:0x809825B8; // type:object size:0x4 -SymGenHideList = .bss:0x809825BC; // type:object size:0x4 +gen_hide_list = .bss:0x809825BC; // type:object size:0x4 SymGender = .bss:0x809825C0; // type:object size:0x4 data:4byte SymGenderChanged = .bss:0x809825C4; // type:object size:0x4 gened_fonts = .bss:0x809825C8; // type:object size:0x4 @@ -82519,7 +82519,7 @@ SymGetForegroundVolume = .bss:0x80982864; // type:object size:0x4 SymGetForegroundVolumeDb = .bss:0x80982868; // type:object size:0x4 SymGetFractionCompleted = .bss:0x8098286C; // type:object size:0x4 SymGetFreeBlocks = .bss:0x80982870; // type:object size:0x4 -SymGetFreeCam = .bss:0x80982874; // type:object size:0x8 +get_free_cam = .bss:0x80982874; // type:object size:0x8 SymGetFret = .bss:0x8098287C; // type:object size:0x8 SymGetFriendName = .bss:0x80982884; // type:object size:0x8 SymGetFxVolume = .bss:0x8098288C; // type:object size:0x4 @@ -82648,7 +82648,7 @@ SymGetNumStars = .bss:0x80982AC0; // type:object size:0x4 SymGetNumStarsForTourStatus = .bss:0x80982AC4; // type:object size:0x4 SymGetNwc24ErrorText = .bss:0x80982AC8; // type:object size:0x4 SymGetObj = .bss:0x80982ACC; // type:object size:0x4 -SymGetOccluded = .bss:0x80982AD0; // type:object size:0x4 +get_occluded = .bss:0x80982AD0; // type:object size:0x4 SymGetOffer = .bss:0x80982AD4; // type:object size:0x4 SymGetOffersForToken = .bss:0x80982AD8; // type:object size:0x4 SymGetOutfit = .bss:0x80982ADC; // type:object size:0x8 @@ -82880,7 +82880,7 @@ SymGlowAlpha = .bss:0x80982EF0; // type:object size:0x4 data:4byte SymGlowMesh1 = .bss:0x80982EF4; // type:object size:0x4 SymGlowMesh2 = .bss:0x80982EF8; // type:object size:0x4 SymGlowSize = .bss:0x80982EFC; // type:object size:0x4 data:4byte -SymGlowSpot = .bss:0x80982F00; // type:object size:0x4 +glow_spot = .bss:0x80982F00; // type:object size:0x4 SymGlowWidgets = .bss:0x80982F04; // type:object size:0x4 go_back_screen = .bss:0x80982F08; // type:object size:0x4 data:4byte SymGoToFriendsScreen = .bss:0x80982F0C; // type:object size:0x4 @@ -82999,7 +82999,7 @@ SymHasCompletedGoal = .bss:0x8098313C; // type:object size:0x8 SymHasCorrectPlayercount = .bss:0x80983144; // type:object size:0x4 SymHasCurrentGoal = .bss:0x80983148; // type:object size:0x8 SymHasDisplayGoal = .bss:0x80983150; // type:object size:0x8 -SymHasFreeCam = .bss:0x80983158; // type:object size:0x4 +has_free_cam = .bss:0x80983158; // type:object size:0x4 SymHasGenre = .bss:0x8098315C; // type:object size:0x4 SymHasGigSpecificIntro = .bss:0x80983160; // type:object size:0x4 SymHasGigSpecificOutro = .bss:0x80983164; // type:object size:0x4 @@ -83047,7 +83047,7 @@ SymHasSong = .bss:0x80983210; // type:object size:0x8 SymHasSpace = .bss:0x80983218; // type:object size:0x4 SymHasSticker = .bss:0x8098321C; // type:object size:0x4 SymHasSyncPermission = .bss:0x80983220; // type:object size:0x4 -SymHasTargets = .bss:0x80983224; // type:object size:0x4 +has_targets = .bss:0x80983224; // type:object size:0x4 SymHasUnlinkedMotd = .bss:0x80983228; // type:object size:0x4 SymHasUnlockedModifier = .bss:0x8098322C; // type:object size:0x4 SymHasUser = .bss:0x80983230; // type:object size:0x4 @@ -83414,9 +83414,9 @@ SymIsolateVocalPart = .bss:0x809838F8; // type:object size:0x4 SymIta = .bss:0x809838FC; // type:object size:0x4 data:4byte italics = .bss:0x80983900; // type:object size:0x8 SymIterate = .bss:0x80983908; // type:object size:0x8 -SymIterateFrac = .bss:0x80983910; // type:object size:0x10 +iterate_frac = .bss:0x80983910; // type:object size:0x10 SymIterateSelf = .bss:0x80983920; // type:object size:0x4 -SymIterateShot = .bss:0x80983924; // type:object size:0x4 +iterate_shot = .bss:0x80983924; // type:object size:0x4 SymIxToLeaderboardIx = .bss:0x80983928; // type:object size:0x4 SymJawHeight = .bss:0x8098392C; // type:object size:0x4 SymJawWidth = .bss:0x80983930; // type:object size:0x4 @@ -83451,7 +83451,7 @@ SymKeyboard = .bss:0x809839B4; // type:object size:0x4 data:4byte SymKeyboardAllowedChars = .bss:0x809839B8; // type:object size:0x4 data:4byte SymKeyboardIntensity = .bss:0x809839BC; // type:object size:0x4 keyboard_ref_bone = .bss:0x809839C0; // type:object size:0x4 -SymKeyframes = .bss:0x809839C4; // type:object size:0x4 +keyframes = .bss:0x809839C4; // type:object size:0x4 SymKeys = .bss:0x809839C8; // type:object size:0x4 data:4byte keys_owner = .bss:0x809839CC; // type:object size:0x8 keys_type = .bss:0x809839D4; // type:object size:0x4 @@ -83544,7 +83544,7 @@ left_opaque = .bss:0x80983B8C; // type:object size:0x4 left_out = .bss:0x80983B90; // type:object size:0x4 SymLefty = .bss:0x80983B94; // type:object size:0x4 SymLeftyFlip = .bss:0x80983B98; // type:object size:0x4 data:4byte -SymLegacyFadeIn = .bss:0x80983B9C; // type:object size:0x4 +legacy_fade_in = .bss:0x80983B9C; // type:object size:0x4 SymLego = .bss:0x80983BA0; // type:object size:0x4 data:4byte SymLegs = .bss:0x80983BA4; // type:object size:0x4 length = .bss:0x80983BA8; // type:object size:0x4 @@ -83572,12 +83572,12 @@ SymLevelAnims = .bss:0x80983C00; // type:object size:0x4 data:4byte SymLevelColors = .bss:0x80983C04; // type:object size:0x8 SymLfoFreq = .bss:0x80983C0C; // type:object size:0x4 life = .bss:0x80983C10; // type:object size:0x4 -SymLight = .bss:0x80983C14; // type:object size:0x4 +light = .bss:0x80983C14; // type:object size:0x4 SymLightCan = .bss:0x80983C18; // type:object size:0x4 SymLightCanOffset = .bss:0x80983C1C; // type:object size:0x4 SymLightCanSort = .bss:0x80983C20; // type:object size:0x4 -SymLightEntries = .bss:0x80983C24; // type:object size:0x4 -SymLightInfluence = .bss:0x80983C28; // type:object size:0x4 +light_entries = .bss:0x80983C24; // type:object size:0x4 +light_influence = .bss:0x80983C28; // type:object size:0x4 lightness = .bss:0x80983C2C; // type:object size:0x4 SymLightpreset = .bss:0x80983C30; // type:object size:0x4 SymLightpresetInterp = .bss:0x80983C34; // type:object size:0x4 @@ -83630,7 +83630,7 @@ SymLocaleDecimalSeparator = .bss:0x80983D28; // type:object size:0x4 data:4byte SymLocaleSeparator = .bss:0x80983D2C; // type:object size:0x8 data:4byte SymLocalizeHeading = .bss:0x80983D34; // type:object size:0x4 data:4byte SymLock = .bss:0x80983D38; // type:object size:0x4 -SymLocked = .bss:0x80983D3C; // type:object size:0x4 +locked = .bss:0x80983D3C; // type:object size:0x4 SymLod = .bss:0x80983D40; // type:object size:0x4 SymLodAnim = .bss:0x80983D44; // type:object size:0x4 SymLodChars = .bss:0x80983D48; // type:object size:0x4 @@ -83646,11 +83646,11 @@ SymLongestStreak = .bss:0x80983D6C; // type:object size:0x14 loop = .bss:0x80983D80; // type:object size:0x4 data:4byte SymLoopEnd = .bss:0x80983D84; // type:object size:0x4 SymLoopEndSample = .bss:0x80983D88; // type:object size:0x4 -SymLoopKeyframe = .bss:0x80983D8C; // type:object size:0x4 +loop_keyframe = .bss:0x80983D8C; // type:object size:0x4 SymLoopStart = .bss:0x80983D90; // type:object size:0x4 SymLoopStartSample = .bss:0x80983D94; // type:object size:0x4 SymLooped = .bss:0x80983D98; // type:object size:0x4 -SymLooping = .bss:0x80983D9C; // type:object size:0x4 +looping = .bss:0x80983D9C; // type:object size:0x4 SymLose = .bss:0x80983DA0; // type:object size:0x4 SymLoseFocus = .bss:0x80983DA4; // type:object size:0x8 data:4byte SymLost = .bss:0x80983DAC; // type:object size:0x4 @@ -83682,7 +83682,7 @@ SymMaleFeetNaked = .bss:0x80983E34; // type:object size:0x4 SymMaleHandsNaked = .bss:0x80983E38; // type:object size:0x4 SymMaleTorsoNaked = .bss:0x80983E3C; // type:object size:0x4 SymManage = .bss:0x80983E40; // type:object size:0x4 -SymManual = .bss:0x80983E44; // type:object size:0x4 +manual = .bss:0x80983E44; // type:object size:0x4 SymManualSave = .bss:0x80983E48; // type:object size:0x4 SymMap = .bss:0x80983E4C; // type:object size:0x4 data:4byte SymMappingsOwner = .bss:0x80983E50; // type:object size:0x4 @@ -83964,7 +83964,7 @@ next_link = .bss:0x809843AC; // type:object size:0x4 SymNextPass = .bss:0x809843B0; // type:object size:0x4 SymNextScreen = .bss:0x809843B4; // type:object size:0x4 data:4byte SymNextSend = .bss:0x809843B8; // type:object size:0x4 -SymNextShot = .bss:0x809843BC; // type:object size:0x4 +next_shot = .bss:0x809843BC; // type:object size:0x4 SymNextShots = .bss:0x809843C0; // type:object size:0x4 SymNextStartDelta = .bss:0x809843C4; // type:object size:0x8 SymNextVal = .bss:0x809843CC; // type:object size:0xC @@ -84040,7 +84040,7 @@ num_rot_keys = .bss:0x80984530; // type:object size:0x4 SymNumRows = .bss:0x80984534; // type:object size:0x4 data:4byte num_samples = .bss:0x80984538; // type:object size:0x4 num_scale_keys = .bss:0x8098453C; // type:object size:0x8 -SymNumShots = .bss:0x80984544; // type:object size:0x4 +num_shots = .bss:0x80984544; // type:object size:0x4 SymNumSimul = .bss:0x80984548; // type:object size:0x4 SymNumSingers = .bss:0x8098454C; // type:object size:0x4 data:4byte SymNumSlots = .bss:0x80984550; // type:object size:0xC @@ -84178,7 +84178,7 @@ SymPanelDir = .bss:0x809847CC; // type:object size:0x4 data:4byte panels = .bss:0x809847D0; // type:object size:0x4 data:4byte SymPans = .bss:0x809847D4; // type:object size:0xC data:4byte SymParent = .bss:0x809847E0; // type:object size:0x4 -SymParentFirstFrame = .bss:0x809847E4; // type:object size:0x4 +parent_first_frame = .bss:0x809847E4; // type:object size:0x4 parent_list = .bss:0x809847E8; // type:object size:0x4 SymParentMode = .bss:0x809847EC; // type:object size:0x4 data:4byte SymParentOnly = .bss:0x809847F0; // type:object size:0x4 data:4byte @@ -84220,8 +84220,8 @@ SymPatchNew = .bss:0x809848C8; // type:object size:0x4 data:4byte SymPatchable = .bss:0x809848CC; // type:object size:0x4 data:4byte SymPatches = .bss:0x809848D0; // type:object size:0x4 SymPatchnum = .bss:0x809848D4; // type:object size:0x4 -SymPath = .bss:0x809848D8; // type:object size:0x4 -SymPathFrame = .bss:0x809848DC; // type:object size:0x4 +path = .bss:0x809848D8; // type:object size:0x4 +path_frame = .bss:0x809848DC; // type:object size:0x4 SymPathName = .bss:0x809848E0; // type:object size:0x4 SymPause = .bss:0x809848E4; // type:object size:0x4 SymPauseAllSfx = .bss:0x809848E8; // type:object size:0x8 @@ -84268,7 +84268,7 @@ SymPermaProject = .bss:0x809849DC; // type:object size:0x18 SymPhraseFeedbackTrig = .bss:0x809849F4; // type:object size:0xC SymPickInterstitialBetweenScreens = .bss:0x80984A00; // type:object size:0x4 SymPickNewShot = .bss:0x80984A04; // type:object size:0x8 -SymPickShot = .bss:0x80984A0C; // type:object size:0x4 +pick_shot = .bss:0x80984A0C; // type:object size:0x4 SymPictureEx = .bss:0x80984A10; // type:object size:0x4 SymPid = .bss:0x80984A14; // type:object size:0x4 data:4byte SymPieces = .bss:0x80984A18; // type:object size:0x8 @@ -84294,8 +84294,8 @@ SymPlacementMesh = .bss:0x80984A70; // type:object size:0x4 data:4byte SymPlacer = .bss:0x80984A74; // type:object size:0x4 SymPlatform = .bss:0x80984A78; // type:object size:0x4 SymPlatformMgr = .bss:0x80984A7C; // type:object size:0x4 data:4byte -SymPlatformOk = .bss:0x80984A80; // type:object size:0x4 -SymPlatformOnly = .bss:0x80984A84; // type:object size:0x4 +platform_ok = .bss:0x80984A80; // type:object size:0x4 +platform_only = .bss:0x80984A84; // type:object size:0x4 SymPlatformSizeKb = .bss:0x80984A88; // type:object size:0x4 SymPlay = .bss:0x80984A8C; // type:object size:0x4 data:4byte SymPlayBandDiedCue = .bss:0x80984A90; // type:object size:0x8 @@ -84370,7 +84370,7 @@ lbl_80984C08 = .bss:0x80984C08; // type:object size:0x4 data:4byte lbl_80984C0C = .bss:0x80984C0C; // type:object size:0x8 lbl_80984C14 = .bss:0x80984C14; // type:object size:0x4 lbl_80984C18 = .bss:0x80984C18; // type:object size:0x4 -lbl_80984C1C = .bss:0x80984C1C; // type:object size:0x4 +postproc_overrides = .bss:0x80984C1C; // type:object size:0x4 lbl_80984C20 = .bss:0x80984C20; // type:object size:0x4 data:4byte postprocs_before_draw = .bss:0x80984C24; // type:object size:0x4 lbl_80984C28 = .bss:0x80984C28; // type:object size:0x14 data:4byte @@ -84408,7 +84408,7 @@ lbl_80984CDC = .bss:0x80984CDC; // type:object size:0x4 lbl_80984CE0 = .bss:0x80984CE0; // type:object size:0x4 lbl_80984CE4 = .bss:0x80984CE4; // type:object size:0x4 lbl_80984CE8 = .bss:0x80984CE8; // type:object size:0x4 -preview_sample = .bss:0x80984CEC; // type:object size:0x4 +lbl_80984CEC = .bss:0x80984CEC; // type:object size:0x4 lbl_80984CF0 = .bss:0x80984CF0; // type:object size:0x4 data:4byte lbl_80984CF4 = .bss:0x80984CF4; // type:object size:0x4 lbl_80984CF8 = .bss:0x80984CF8; // type:object size:0x4 @@ -84418,13 +84418,13 @@ lbl_80984D04 = .bss:0x80984D04; // type:object size:0x4 lbl_80984D08 = .bss:0x80984D08; // type:object size:0x8 lbl_80984D10 = .bss:0x80984D10; // type:object size:0x4 lbl_80984D14 = .bss:0x80984D14; // type:object size:0x4 -print = .bss:0x80984D18; // type:object size:0x4 +lbl_80984D18 = .bss:0x80984D18; // type:object size:0x4 lbl_80984D1C = .bss:0x80984D1C; // type:object size:0x4 lbl_80984D20 = .bss:0x80984D20; // type:object size:0x4 lbl_80984D24 = .bss:0x80984D24; // type:object size:0x4 lbl_80984D28 = .bss:0x80984D28; // type:object size:0x14 lbl_80984D3C = .bss:0x80984D3C; // type:object size:0x8 -priority = .bss:0x80984D44; // type:object size:0x4 +lbl_80984D44 = .bss:0x80984D44; // type:object size:0x4 lbl_80984D48 = .bss:0x80984D48; // type:object size:0x4 lbl_80984D4C = .bss:0x80984D4C; // type:object size:0x4 lbl_80984D50 = .bss:0x80984D50; // type:object size:0x4 data:4byte @@ -84442,9 +84442,9 @@ lbl_80984D9C = .bss:0x80984D9C; // type:object size:0x4 data:4byte lbl_80984DA0 = .bss:0x80984DA0; // type:object size:0x4 data:4byte lbl_80984DA4 = .bss:0x80984DA4; // type:object size:0x4 lbl_80984DA8 = .bss:0x80984DA8; // type:object size:0x4 -proxy = .bss:0x80984DAC; // type:object size:0x4 -proxy_calls = .bss:0x80984DB0; // type:object size:0x4 -proxy_dir = .bss:0x80984DB4; // type:object size:0x4 +lbl_80984DAC = .bss:0x80984DAC; // type:object size:0x4 +lbl_80984DB0 = .bss:0x80984DB0; // type:object size:0x4 +lbl_80984DB4 = .bss:0x80984DB4; // type:object size:0x4 lbl_80984DB8 = .bss:0x80984DB8; // type:object size:0x4 lbl_80984DBC = .bss:0x80984DBC; // type:object size:0x4 lbl_80984DC0 = .bss:0x80984DC0; // type:object size:0xC @@ -84452,8 +84452,8 @@ lbl_80984DCC = .bss:0x80984DCC; // type:object size:0xC lbl_80984DD8 = .bss:0x80984DD8; // type:object size:0x4 lbl_80984DDC = .bss:0x80984DDC; // type:object size:0x10 lbl_80984DEC = .bss:0x80984DEC; // type:object size:0x4 data:4byte -pulse_anim = .bss:0x80984DF0; // type:object size:0x4 -punctuation = .bss:0x80984DF4; // type:object size:0x4 +lbl_80984DF0 = .bss:0x80984DF0; // type:object size:0x4 +lbl_80984DF4 = .bss:0x80984DF4; // type:object size:0x4 lbl_80984DF8 = .bss:0x80984DF8; // type:object size:0x4 lbl_80984DFC = .bss:0x80984DFC; // type:object size:0x4 lbl_80984E00 = .bss:0x80984E00; // type:object size:0x4 @@ -84468,10 +84468,10 @@ lbl_80984E24 = .bss:0x80984E24; // type:object size:0x4 lbl_80984E28 = .bss:0x80984E28; // type:object size:0x4 lbl_80984E2C = .bss:0x80984E2C; // type:object size:0x8 lbl_80984E34 = .bss:0x80984E34; // type:object size:0x4 -radius = .bss:0x80984E38; // type:object size:0x4 -radius0 = .bss:0x80984E3C; // type:object size:0x4 -radius1 = .bss:0x80984E40; // type:object size:0x4 -radius2 = .bss:0x80984E44; // type:object size:0x4 +lbl_80984E38 = .bss:0x80984E38; // type:object size:0x4 +lbl_80984E3C = .bss:0x80984E3C; // type:object size:0x4 +lbl_80984E40 = .bss:0x80984E40; // type:object size:0x4 +lbl_80984E44 = .bss:0x80984E44; // type:object size:0x4 lbl_80984E48 = .bss:0x80984E48; // type:object size:0x4 lbl_80984E4C = .bss:0x80984E4C; // type:object size:0x4 data:4byte lbl_80984E50 = .bss:0x80984E50; // type:object size:0x4 data:4byte @@ -84479,7 +84479,7 @@ lbl_80984E54 = .bss:0x80984E54; // type:object size:0x4 lbl_80984E58 = .bss:0x80984E58; // type:object size:0x4 lbl_80984E5C = .bss:0x80984E5C; // type:object size:0x4 lbl_80984E60 = .bss:0x80984E60; // type:object size:0x4 -range = .bss:0x80984E64; // type:object size:0x4 data:4byte +lbl_80984E64 = .bss:0x80984E64; // type:object size:0x4 data:4byte lbl_80984E68 = .bss:0x80984E68; // type:object size:0x4 lbl_80984E6C = .bss:0x80984E6C; // type:object size:0x4 lbl_80984E70 = .bss:0x80984E70; // type:object size:0x4 data:4byte @@ -84490,7 +84490,7 @@ lbl_80984E80 = .bss:0x80984E80; // type:object size:0x4 lbl_80984E84 = .bss:0x80984E84; // type:object size:0x4 lbl_80984E88 = .bss:0x80984E88; // type:object size:0x4 data:4byte lbl_80984E8C = .bss:0x80984E8C; // type:object size:0x4 data:4byte -rate = .bss:0x80984E90; // type:object size:0x4 +lbl_80984E90 = .bss:0x80984E90; // type:object size:0x4 lbl_80984E94 = .bss:0x80984E94; // type:object size:0x4 data:4byte lbl_80984E98 = .bss:0x80984E98; // type:object size:0x4 data:4byte lbl_80984E9C = .bss:0x80984E9C; // type:object size:0x8 @@ -84522,7 +84522,7 @@ lbl_80984F18 = .bss:0x80984F18; // type:object size:0xC lbl_80984F24 = .bss:0x80984F24; // type:object size:0x4 lbl_80984F28 = .bss:0x80984F28; // type:object size:0x4 lbl_80984F2C = .bss:0x80984F2C; // type:object size:0x8 -recenter = .bss:0x80984F34; // type:object size:0x4 +lbl_80984F34 = .bss:0x80984F34; // type:object size:0x4 lbl_80984F38 = .bss:0x80984F38; // type:object size:0x4 lbl_80984F3C = .bss:0x80984F3C; // type:object size:0x4 lbl_80984F40 = .bss:0x80984F40; // type:object size:0x8 @@ -84530,12 +84530,12 @@ lbl_80984F48 = .bss:0x80984F48; // type:object size:0x10 lbl_80984F58 = .bss:0x80984F58; // type:object size:0x4 lbl_80984F5C = .bss:0x80984F5C; // type:object size:0x4 lbl_80984F60 = .bss:0x80984F60; // type:object size:0xC -reenter_screen = .bss:0x80984F6C; // type:object size:0x8 -reference_distance = .bss:0x80984F74; // type:object size:0x4 -reference_kerning = .bss:0x80984F78; // type:object size:0x4 -reference_object_1 = .bss:0x80984F7C; // type:object size:0x4 -reference_object_2 = .bss:0x80984F80; // type:object size:0x4 -reflect = .bss:0x80984F84; // type:object size:0x4 +lbl_80984F6C = .bss:0x80984F6C; // type:object size:0x8 +lbl_80984F74 = .bss:0x80984F74; // type:object size:0x4 +lbl_80984F78 = .bss:0x80984F78; // type:object size:0x4 +lbl_80984F7C = .bss:0x80984F7C; // type:object size:0x4 +lbl_80984F80 = .bss:0x80984F80; // type:object size:0x4 +lbl_80984F84 = .bss:0x80984F84; // type:object size:0x4 lbl_80984F88 = .bss:0x80984F88; // type:object size:0x4 lbl_80984F8C = .bss:0x80984F8C; // type:object size:0x4 lbl_80984F90 = .bss:0x80984F90; // type:object size:0x4 @@ -84544,8 +84544,8 @@ lbl_80984F98 = .bss:0x80984F98; // type:object size:0x4 lbl_80984F9C = .bss:0x80984F9C; // type:object size:0x4 lbl_80984FA0 = .bss:0x80984FA0; // type:object size:0x4 lbl_80984FA4 = .bss:0x80984FA4; // type:object size:0x4 -refractory_period = .bss:0x80984FA8; // type:object size:0x4 -refresh = .bss:0x80984FAC; // type:object size:0x4 +lbl_80984FA8 = .bss:0x80984FA8; // type:object size:0x4 +lbl_80984FAC = .bss:0x80984FAC; // type:object size:0x4 lbl_80984FB0 = .bss:0x80984FB0; // type:object size:0x4 lbl_80984FB4 = .bss:0x80984FB4; // type:object size:0x8 lbl_80984FBC = .bss:0x80984FBC; // type:object size:0x4 @@ -84563,10 +84563,10 @@ lbl_80985010 = .bss:0x80985010; // type:object size:0x4 data:4byte lbl_80985014 = .bss:0x80985014; // type:object size:0x4 lbl_80985018 = .bss:0x80985018; // type:object size:0x4 data:4byte lbl_8098501C = .bss:0x8098501C; // type:object size:0x4 -regulate = .bss:0x80985020; // type:object size:0x8 +lbl_80985020 = .bss:0x80985020; // type:object size:0x8 lbl_80985028 = .bss:0x80985028; // type:object size:0x4 -relative_motion = .bss:0x8098502C; // type:object size:0x4 -relative_parent = .bss:0x80985030; // type:object size:0x4 +lbl_8098502C = .bss:0x8098502C; // type:object size:0x4 +lbl_80985030 = .bss:0x80985030; // type:object size:0x4 lbl_80985034 = .bss:0x80985034; // type:object size:0x4 lbl_80985038 = .bss:0x80985038; // type:object size:0x4 lbl_8098503C = .bss:0x8098503C; // type:object size:0x4 @@ -84612,7 +84612,7 @@ lbl_809850F4 = .bss:0x809850F4; // type:object size:0x4 lbl_809850F8 = .bss:0x809850F8; // type:object size:0x4 lbl_809850FC = .bss:0x809850FC; // type:object size:0x10 lbl_8098510C = .bss:0x8098510C; // type:object size:0x10 -remove_keys = .bss:0x8098511C; // type:object size:0x4 +lbl_8098511C = .bss:0x8098511C; // type:object size:0x4 lbl_80985120 = .bss:0x80985120; // type:object size:0x4 lbl_80985124 = .bss:0x80985124; // type:object size:0x4 lbl_80985128 = .bss:0x80985128; // type:object size:0xC @@ -84627,10 +84627,10 @@ lbl_80985158 = .bss:0x80985158; // type:object size:0x4 lbl_8098515C = .bss:0x8098515C; // type:object size:0x4 lbl_80985160 = .bss:0x80985160; // type:object size:0x4 lbl_80985164 = .bss:0x80985164; // type:object size:0x8 data:4byte -replace_frame = .bss:0x8098516C; // type:object size:0x4 -replace_keyframe = .bss:0x80985170; // type:object size:0x4 +lbl_8098516C = .bss:0x8098516C; // type:object size:0x4 +lbl_80985170 = .bss:0x80985170; // type:object size:0x4 lbl_80985174 = .bss:0x80985174; // type:object size:0x4 -replace_target = .bss:0x80985178; // type:object size:0x4 +lbl_80985178 = .bss:0x80985178; // type:object size:0x4 lbl_8098517C = .bss:0x8098517C; // type:object size:0x4 lbl_80985180 = .bss:0x80985180; // type:object size:0x4 lbl_80985184 = .bss:0x80985184; // type:object size:0x8 @@ -84681,10 +84681,10 @@ lbl_8098526C = .bss:0x8098526C; // type:object size:0x4 lbl_80985270 = .bss:0x80985270; // type:object size:0x8 lbl_80985278 = .bss:0x80985278; // type:object size:0x4 data:4byte lbl_8098527C = .bss:0x8098527C; // type:object size:0x4 data:4byte -resource_name = .bss:0x80985280; // type:object size:0x4 +lbl_80985280 = .bss:0x80985280; // type:object size:0x4 lbl_80985284 = .bss:0x80985284; // type:object size:0x4 data:4byte lbl_80985288 = .bss:0x80985288; // type:object size:0x4 data:4byte -resources_path = .bss:0x8098528C; // type:object size:0x4 data:4byte +lbl_8098528C = .bss:0x8098528C; // type:object size:0x4 data:4byte lbl_80985290 = .bss:0x80985290; // type:object size:0x4 lbl_80985294 = .bss:0x80985294; // type:object size:0x4 lbl_80985298 = .bss:0x80985298; // type:object size:0x8 @@ -84732,7 +84732,7 @@ lbl_8098534C = .bss:0x8098534C; // type:object size:0x4 data:4byte lbl_80985350 = .bss:0x80985350; // type:object size:0x4 data:4byte lbl_80985354 = .bss:0x80985354; // type:object size:0x4 data:4byte lbl_80985358 = .bss:0x80985358; // type:object size:0x4 data:4byte -right = .bss:0x8098535C; // type:object size:0x8 data:4byte +lbl_8098535C = .bss:0x8098535C; // type:object size:0x8 data:4byte lbl_80985364 = .bss:0x80985364; // type:object size:0x4 lbl_80985368 = .bss:0x80985368; // type:object size:0xC lbl_80985374 = .bss:0x80985374; // type:object size:0x4 @@ -84807,15 +84807,15 @@ lbl_809854E8 = .bss:0x809854E8; // type:object size:0x4 lbl_809854EC = .bss:0x809854EC; // type:object size:0x4 lbl_809854F0 = .bss:0x809854F0; // type:object size:0x4 data:4byte lbl_809854F4 = .bss:0x809854F4; // type:object size:0x4 data:4byte -scroll = .bss:0x809854F8; // type:object size:0x4 -scroll_anim = .bss:0x809854FC; // type:object size:0xC +lbl_809854F8 = .bss:0x809854F8; // type:object size:0x4 +lbl_809854FC = .bss:0x809854FC; // type:object size:0xC lbl_80985508 = .bss:0x80985508; // type:object size:0xC -scroll_highlight_change = .bss:0x80985514; // type:object size:0x4 +lbl_80985514 = .bss:0x80985514; // type:object size:0x4 lbl_80985518 = .bss:0x80985518; // type:object size:0x4 lbl_8098551C = .bss:0x8098551C; // type:object size:0x8 -scroll_past_max_display = .bss:0x80985524; // type:object size:0x4 -scroll_past_min_display = .bss:0x80985528; // type:object size:0x4 -scroll_time = .bss:0x8098552C; // type:object size:0x10 +lbl_80985524 = .bss:0x80985524; // type:object size:0x4 +lbl_80985528 = .bss:0x80985528; // type:object size:0x4 +lbl_8098552C = .bss:0x8098552C; // type:object size:0x10 lbl_8098553C = .bss:0x8098553C; // type:object size:0x4 lbl_80985540 = .bss:0x80985540; // type:object size:0x4 lbl_80985544 = .bss:0x80985544; // type:object size:0x4 @@ -84865,14 +84865,14 @@ lbl_8098560C = .bss:0x8098560C; // type:object size:0x4 lbl_80985610 = .bss:0x80985610; // type:object size:0x4 lbl_80985614 = .bss:0x80985614; // type:object size:0x4 lbl_80985618 = .bss:0x80985618; // type:object size:0x4 -selected_color = .bss:0x8098561C; // type:object size:0x4 -selected_data = .bss:0x80985620; // type:object size:0x8 +lbl_8098561C = .bss:0x8098561C; // type:object size:0x4 +lbl_80985620 = .bss:0x80985620; // type:object size:0x8 lbl_80985628 = .bss:0x80985628; // type:object size:0x4 lbl_8098562C = .bss:0x8098562C; // type:object size:0x4 -selected_pos = .bss:0x80985630; // type:object size:0x4 +lbl_80985630 = .bss:0x80985630; // type:object size:0x4 lbl_80985634 = .bss:0x80985634; // type:object size:0x4 -selected_sym = .bss:0x80985638; // type:object size:0x4 -selecting_color = .bss:0x8098563C; // type:object size:0x8 +lbl_80985638 = .bss:0x80985638; // type:object size:0x4 +lbl_8098563C = .bss:0x8098563C; // type:object size:0x8 lbl_80985644 = .bss:0x80985644; // type:object size:0x4 lbl_80985648 = .bss:0x80985648; // type:object size:0x4 lbl_8098564C = .bss:0x8098564C; // type:object size:0x10 @@ -84886,7 +84886,7 @@ lbl_80985674 = .bss:0x80985674; // type:object size:0x4 lbl_80985678 = .bss:0x80985678; // type:object size:0x8 lbl_80985680 = .bss:0x80985680; // type:object size:0x8 data:4byte lbl_80985688 = .bss:0x80985688; // type:object size:0x8 data:4byte -servo = .bss:0x80985690; // type:object size:0x4 +lbl_80985690 = .bss:0x80985690; // type:object size:0x4 lbl_80985694 = .bss:0x80985694; // type:object size:0x4 data:4byte lbl_80985698 = .bss:0x80985698; // type:object size:0x8 lbl_809856A0 = .bss:0x809856A0; // type:object size:0xC @@ -84963,13 +84963,13 @@ lbl_809857F8 = .bss:0x809857F8; // type:object size:0x4 lbl_809857FC = .bss:0x809857FC; // type:object size:0x4 lbl_80985800 = .bss:0x80985800; // type:object size:0x4 lbl_80985804 = .bss:0x80985804; // type:object size:0x4 -set_current = .bss:0x80985808; // type:object size:0x4 +lbl_80985808 = .bss:0x80985808; // type:object size:0x4 lbl_8098580C = .bss:0x8098580C; // type:object size:0x4 lbl_80985810 = .bss:0x80985810; // type:object size:0x4 lbl_80985814 = .bss:0x80985814; // type:object size:0x4 lbl_80985818 = .bss:0x80985818; // type:object size:0x4 lbl_8098581C = .bss:0x8098581C; // type:object size:0x8 -set_data = .bss:0x80985824; // type:object size:0x4 +lbl_80985824 = .bss:0x80985824; // type:object size:0x4 lbl_80985828 = .bss:0x80985828; // type:object size:0x4 lbl_8098582C = .bss:0x8098582C; // type:object size:0x4 lbl_80985830 = .bss:0x80985830; // type:object size:0x4 @@ -84993,7 +84993,7 @@ lbl_80985874 = .bss:0x80985874; // type:object size:0x4 lbl_80985878 = .bss:0x80985878; // type:object size:0x4 lbl_8098587C = .bss:0x8098587C; // type:object size:0x4 lbl_80985880 = .bss:0x80985880; // type:object size:0x4 -set_draw_manually_controlled_widgets = .bss:0x80985884; // type:object size:0x4 +lbl_80985884 = .bss:0x80985884; // type:object size:0x4 lbl_80985888 = .bss:0x80985888; // type:object size:0x8 lbl_80985890 = .bss:0x80985890; // type:object size:0x4 lbl_80985894 = .bss:0x80985894; // type:object size:0x4 @@ -85060,10 +85060,10 @@ lbl_809859AC = .bss:0x809859AC; // type:object size:0x4 data:4byte lbl_809859B0 = .bss:0x809859B0; // type:object size:0x4 data:4byte lbl_809859B4 = .bss:0x809859B4; // type:object size:0x4 data:4byte lbl_809859B8 = .bss:0x809859B8; // type:object size:0x8 data:4byte -@LOCAL@SetType__14UIFontImporterF6Symbol@types = .bss:0x809859C0; // type:object size:0x4 data:4byte +lbl_809859C0 = .bss:0x809859C0; // type:object size:0x4 data:4byte lbl_809859C4 = .bss:0x809859C4; // type:object size:0x4 data:4byte -@LOCAL@SetType__10UILabelDirF6Symbol@types = .bss:0x809859C8; // type:object size:0x4 data:4byte -@LOCAL@StaticClassName__10UILabelDirFv@name = .bss:0x809859CC; // type:object size:0x4 data:4byte +lbl_809859C8 = .bss:0x809859C8; // type:object size:0x4 data:4byte +lbl_809859CC = .bss:0x809859CC; // type:object size:0x4 data:4byte lbl_809859D0 = .bss:0x809859D0; // type:object size:0x10 lbl_809859E0 = .bss:0x809859E0; // type:object size:0x8 lbl_809859E8 = .bss:0x809859E8; // type:object size:0x10 @@ -85287,7 +85287,7 @@ lbl_80987424 = .bss:0x80987424; // type:object size:0xB4 lbl_809874D8 = .bss:0x809874D8; // type:object size:0x4 data:4byte lbl_809874DC = .bss:0x809874DC; // type:object size:0xC lbl_809874E8 = .bss:0x809874E8; // type:object size:0x18 -sWaypoints__8Waypoint = .bss:0x80987500; // type:object size:0x8 data:4byte +lbl_80987500 = .bss:0x80987500; // type:object size:0x8 data:4byte lbl_80987508 = .bss:0x80987508; // type:object size:0x1A8 lbl_809876B0 = .bss:0x809876B0; // type:object size:0x30 data:4byte lbl_809876E0 = .bss:0x809876E0; // type:object size:0x8 data:4byte @@ -85366,24 +85366,24 @@ lbl_80988144 = .bss:0x80988144; // type:object size:0x2C lbl_80988170 = .bss:0x80988170; // type:object size:0x10 lbl_80988180 = .bss:0x80988180; // type:object size:0xD0 lbl_80988250 = .bss:0x80988250; // type:object size:0x10 -sUIListSet = .bss:0x80988260; // type:object size:0x8 +lbl_80988260 = .bss:0x80988260; // type:object size:0x8 lbl_80988268 = .bss:0x80988268; // type:object size:0x4 data:4byte lbl_8098826C = .bss:0x8098826C; // type:object size:0x4 data:4byte lbl_80988270 = .bss:0x80988270; // type:object size:0x4 data:4byte lbl_80988274 = .bss:0x80988274; // type:object size:0x4 data:4byte -@LOCAL@SetType__13UIListSubListF6Symbol@types = .bss:0x80988278; // type:object size:0x4 data:4byte +lbl_80988278 = .bss:0x80988278; // type:object size:0x4 data:4byte lbl_8098827C = .bss:0x8098827C; // type:object size:0x4 data:4byte lbl_80988280 = .bss:0x80988280; // type:object size:0x10 -@LOCAL@Mat__12DataProviderCFiiP10UIListMesh@msgMat = .bss:0x80988290; // type:object size:0x8 +lbl_80988290 = .bss:0x80988290; // type:object size:0x8 lbl_80988298 = .bss:0x80988298; // type:object size:0x4 data:4byte lbl_8098829C = .bss:0x8098829C; // type:object size:0x4 data:4byte lbl_809882A0 = .bss:0x809882A0; // type:object size:0x8 -@LOCAL@SyncProperty__7UIProxyFR8DataNodeP9DataArrayi6PropOp@_s = .bss:0x809882A8; // type:object size:0x8 -sUnloadingScreen__8UIScreen = .bss:0x809882B0; // type:object size:0x4 data:4byte -sMaxScreenId__8UIScreen = .bss:0x809882B4; // type:object size:0x1C data:4byte +lbl_809882A8 = .bss:0x809882A8; // type:object size:0x8 +lbl_809882B0 = .bss:0x809882B0; // type:object size:0x4 data:4byte +lbl_809882B4 = .bss:0x809882B4; // type:object size:0x1C data:4byte lbl_809882D0 = .bss:0x809882D0; // type:object size:0x10 lbl_809882E0 = .bss:0x809882E0; // type:object size:0x60 -@LOCAL@SupportedEvents__9UITriggerFv@events = .bss:0x80988340; // type:object size:0x8 data:4byte +lbl_80988340 = .bss:0x80988340; // type:object size:0x8 data:4byte lbl_80988348 = .bss:0x80988348; // type:object size:0x410 lbl_80988758 = .bss:0x80988758; // type:object size:0x4 data:4byte lbl_8098875C = .bss:0x8098875C; // type:object size:0xC @@ -85405,10 +85405,10 @@ lbl_80988B08 = .bss:0x80988B08; // type:object size:0x4 data:4byte lbl_80988B0C = .bss:0x80988B0C; // type:object size:0x8 data:4byte lbl_80988B14 = .bss:0x80988B14; // type:object size:0x4 data:4byte lbl_80988B18 = .bss:0x80988B18; // type:object size:0x1C0 -lbl_80988CD8 = .bss:0x80988CD8; // type:object size:0xC data:4byte +TheWorld = .bss:0x80988CD8; // type:object size:0xC data:4byte lbl_80988CE4 = .bss:0x80988CE4; // type:object size:0xC -lbl_80988CF0 = .bss:0x80988CF0; // type:object size:0x8 -lbl_80988CF8 = .bss:0x80988CF8; // type:object size:0x4 data:4byte +gOldChars = .bss:0x80988CF0; // type:object size:0x8 +gOldTexDir = .bss:0x80988CF8; // type:object size:0x4 data:4byte lbl_80988CFC = .bss:0x80988CFC; // type:object size:0x4 data:4byte lbl_80988D00 = .bss:0x80988D00; // type:object size:0x4 lbl_80988D04 = .bss:0x80988D04; // type:object size:0x4 @@ -85439,7 +85439,7 @@ lbl_80988F50 = .bss:0x80988F50; // type:object size:0x24 lbl_80988F74 = .bss:0x80988F74; // type:object size:0x24 lbl_80988F98 = .bss:0x80988F98; // type:object size:0x8 data:4byte lbl_80988FA0 = .bss:0x80988FA0; // type:object size:0x8 data:4byte -lbl_80988FA8 = .bss:0x80988FA8; // type:object size:0x4 data:4byte +sCurrent__15SpotlightDrawer = .bss:0x80988FA8; // type:object size:0x4 data:4byte lbl_80988FAC = .bss:0x80988FAC; // type:object size:0x14 data:4byte lbl_80988FC0 = .bss:0x80988FC0; // type:object size:0x18 data:4byte lbl_80988FD8 = .bss:0x80988FD8; // type:object size:0x18 data:4byte @@ -85448,7 +85448,7 @@ lbl_809890F8 = .bss:0x809890F8; // type:object size:0x8 data:4byte lbl_80989100 = .bss:0x80989100; // type:object size:0x8 data:4byte lbl_80989108 = .bss:0x80989108; // type:object size:0x18 lbl_80989120 = .bss:0x80989120; // type:object size:0x48 -sCurrent__6RndCam = .bss:0x80989168; // type:object size:0x8 data:4byte +lbl_80989168 = .bss:0x80989168; // type:object size:0x8 data:4byte lbl_80989170 = .bss:0x80989170; // type:object size:0x30 lbl_809891A0 = .bss:0x809891A0; // type:object size:0x4 data:4byte lbl_809891A4 = .bss:0x809891A4; // type:object size:0x4 data:4byte diff --git a/src/system/math/Color.h b/src/system/math/Color.h index 98e34a21..14576de8 100644 --- a/src/system/math/Color.h +++ b/src/system/math/Color.h @@ -75,6 +75,7 @@ namespace Hmx { } void MakeHSL(const Hmx::Color&, float&, float&, float&); +void MakeColor(float, float, float, Hmx::Color&); TextStream& operator<<(TextStream&, const Hmx::Color&); inline BinStream& operator<<(BinStream& bs, const Hmx::Color& color){ @@ -104,10 +105,14 @@ inline void Subtract(const Hmx::Color& c1, const Hmx::Color& c2, Hmx::Color& res } inline void Multiply(const Hmx::Color& c1, float f, Hmx::Color& res){ +#ifdef VERSION_SZBE69_B8 res.red = c1.red * f; res.green = c1.green * f; res.blue = c1.blue * f; res.alpha = c1.alpha * f; +#else + res.Set(c1.red * f, c1.green * f, c1.blue * f, c1.alpha * f); +#endif } inline Hmx::Color& Average(Hmx::Color& res, const Hmx::Color& c1, const Hmx::Color& c2){ diff --git a/src/system/math/Mtx.h b/src/system/math/Mtx.h index 85375702..31b04379 100644 --- a/src/system/math/Mtx.h +++ b/src/system/math/Mtx.h @@ -93,6 +93,13 @@ namespace Hmx { void Set(const Matrix3&); void Set(const Vector3&); void Set(const Vector3&, float); + void Set(float f1, float f2, float f3, float f4){ + x = f1; y = f2; z = f3; w = f4; + } + + bool operator!=(const Quat& q) const { + return x != q.x || y != q.y || z != q.z || w != q.w; + } float x; float y; @@ -212,13 +219,14 @@ class ShortQuat { class TransformNoScale { public: TransformNoScale(){} + TransformNoScale(const TransformNoScale& t){ Set(t); } void Set(const Transform&); void Set(const TransformNoScale&); void SetRot(const Hmx::Matrix3&); void Reset(); - ShortQuat q; - class Vector3 v; + ShortQuat q; // 0x0/2/4/6 + class Vector3 v; // 0x8 }; BinStream& operator>>(BinStream&, TransformNoScale&); @@ -280,6 +288,7 @@ void Multiply(const Vector3&, const Hmx::Matrix3&, Vector3&); void Multiply(const Transform&, const Transform&, Transform&); void Multiply(const Transform&, const Vector3&, Vector3&); void Multiply(const Vector3&, const Hmx::Quat&, Vector3&); +void Interp(const Hmx::Matrix3&, const Hmx::Matrix3&, float, Hmx::Matrix3&); inline void Transpose(const Hmx::Matrix3& min, Hmx::Matrix3& mout){ mout.Set( diff --git a/src/system/math/Vec.h b/src/system/math/Vec.h index 5631a625..0f0715e4 100644 --- a/src/system/math/Vec.h +++ b/src/system/math/Vec.h @@ -16,6 +16,7 @@ class Vector2 { x *= f; y *= f; return *this; } + void Zero(){ x = y = 0.0f; } bool operator!() const { return x == 0.0f && y == 0.0f; diff --git a/src/system/obj/Dir.h b/src/system/obj/Dir.h index 428f91a5..59b91082 100644 --- a/src/system/obj/Dir.h +++ b/src/system/obj/Dir.h @@ -285,7 +285,7 @@ template class ObjDirItr { ObjDirItr(ObjectDir* dir, bool b) : mDir(b ? dir : 0), mSubDir(dir), mWhich(0) { if(dir){ // https://decomp.me/scratch/GNNj2 - KeylessHash::FirstFromStart? - mEntry = dir->mHashTable.FirstFromStart(); + mEntry = dir->mHashTable.Begin(); Advance(); } else { @@ -298,7 +298,7 @@ template class ObjDirItr { ObjDirItr& operator++(){ if(mEntry){ // https://decomp.me/scratch/oVgXk - KeylessHash::FirstFromNext? - mEntry = mSubDir->mHashTable.FirstFromNext(mEntry); + mEntry = mSubDir->mHashTable.Next(mEntry); Advance(); } return *this; @@ -312,13 +312,13 @@ template class ObjDirItr { while(mEntry){ mObj = dynamic_cast(mEntry->obj); if(mObj) return; - mEntry = mSubDir->mHashTable.FirstFromNext(mEntry); + mEntry = mSubDir->mHashTable.Next(mEntry); } if(mDir){ int nextwhich = ++mWhich; mSubDir = mDir->NextSubDir(nextwhich); if(mSubDir){ - mEntry = mSubDir->mHashTable.FirstFromStart(); + mEntry = mSubDir->mHashTable.Begin(); Advance(); return; } diff --git a/src/system/obj/ObjList.h b/src/system/obj/ObjList.h index f1ac4bbc..9c57d91a 100644 --- a/src/system/obj/ObjList.h +++ b/src/system/obj/ObjList.h @@ -11,13 +11,23 @@ template class ObjList : public std::list { Hmx::Object* mOwner; Hmx::Object* Owner(){ return mOwner; } - void operator=(const ObjList& oList); + + void resize(unsigned long ul){ + std::list::resize(ul, T(mOwner)); + } + + void operator=(const ObjList& oList){ + if(this != &oList){ + resize(oList.size()); + std::list::operator=((std::list&)oList); + } + } }; template BinStream& operator>>(BinStream& bs, ObjList& oList) { unsigned int length; bs >> length; - oList.resize(length, T(oList.mOwner)); + oList.resize(length); for(std::list::iterator it = oList.begin(); it != oList.end(); ++it){ bs >> *it; diff --git a/src/system/obj/ObjPtr_p.h b/src/system/obj/ObjPtr_p.h index 65bd32dc..d4078889 100644 --- a/src/system/obj/ObjPtr_p.h +++ b/src/system/obj/ObjPtr_p.h @@ -359,6 +359,15 @@ template class ObjPtrList : public ObjRef { if(obj) obj->AddRef(this); } + // remove a particular item inside iterator otherIt, from list otherList, + // and insert it into this list at the position indicated by thisIt + void MoveItem(iterator thisIt, ObjPtrList& otherList, iterator otherIt){ + if(otherIt != thisIt){ + otherList.unlink(otherIt.mNode); + link(thisIt, otherIt.mNode); + } + } + void operator=(const ObjPtrList& x){ if(this == &x) return; while(mSize > x.mSize) pop_back(); diff --git a/src/system/obj/Object.h b/src/system/obj/Object.h index e52466d2..0bc0c3cd 100644 --- a/src/system/obj/Object.h +++ b/src/system/obj/Object.h @@ -135,7 +135,7 @@ namespace Hmx { Object& operator=(const Object&); void RemoveFromDir(); - DataNode *Property(DataArray *, bool) const; + DataNode* Property(DataArray *, bool) const; DataNode* Property(Symbol, bool) const; void SetProperty(DataArray *, const DataNode &); void SetProperty(Symbol, const DataNode &); diff --git a/src/system/obj/Utl.cpp b/src/system/obj/Utl.cpp index 59d8d208..4021a72c 100644 --- a/src/system/obj/Utl.cpp +++ b/src/system/obj/Utl.cpp @@ -142,7 +142,7 @@ void MergeObjectsRecurse(ObjectDir* fromDir, ObjectDir* toDir, MergeFilter& filt } } } - for(ObjectDir::Entry* entry = fromDir->mHashTable.FirstFromStart(); entry != 0; entry = fromDir->mHashTable.FirstFromNext(entry)){ + for(ObjectDir::Entry* entry = fromDir->mHashTable.Begin(); entry != 0; entry = fromDir->mHashTable.Next(entry)){ Hmx::Object* curObj = entry->obj; if(curObj) MergeObject(curObj, toDir->FindObject(curObj->Name(), false), toDir, filt); } diff --git a/src/system/rndobj/Cam.h b/src/system/rndobj/Cam.h index 79eed907..032448d9 100644 --- a/src/system/rndobj/Cam.h +++ b/src/system/rndobj/Cam.h @@ -39,6 +39,7 @@ class RndCam : public RndTransformable { float YFov() const { return mYFov; } RndTex* TargetTex(){ return mTargetTex; } void SetZRange(float f1, float f2){ mZRange.Set(f1, f2); } + const Transform& LocalProjectXfm() const { return mLocalProjectXfm; } bool CompareSphereToWorld(const Sphere& s) const { return s > mWorldFrustum; @@ -50,6 +51,8 @@ class RndCam : public RndTransformable { } static RndCam* sCurrent; + static RndCam* Current(){ return sCurrent; } + NEW_OBJ(RndCam) DELETE_OVERLOAD; static void Init(){ diff --git a/src/system/rndobj/Env.h b/src/system/rndobj/Env.h index 38bf6fe3..1d27b8f0 100644 --- a/src/system/rndobj/Env.h +++ b/src/system/rndobj/Env.h @@ -39,6 +39,7 @@ class RndEnviron : public Hmx::Object { bool FogEnable() const; bool IsLightInList(const RndLight*, const ObjPtrList&) const; bool IsValidRealLight(const RndLight*) const; + bool GetAnimateFromPreset() const { return mAnimateFromPreset; } const Hmx::Color& AmbientColor() const { return mAmbientFogOwner->mAmbientColor; } void SetAmbientColor(const Hmx::Color& col){ diff --git a/src/system/rndobj/Lit.h b/src/system/rndobj/Lit.h index a064c5a9..25d2b851 100644 --- a/src/system/rndobj/Lit.h +++ b/src/system/rndobj/Lit.h @@ -40,6 +40,11 @@ class RndLight : public RndTransformable { int PackedColor() const; float Intensity() const; void SetProjectedBlend(int i){ mProjectedBlend = i; } + bool GetAnimateFromPreset() const { + return mAnimateColorFromPreset || mAnimatePositionFromPreset || mAnimateRangeFromPreset; + } + + static const char* TypeToStr(Type); NEW_OVERLOAD; DELETE_OVERLOAD; diff --git a/src/system/rndwii/Rnd.h b/src/system/rndwii/Rnd.h index 78209a20..65044627 100644 --- a/src/system/rndwii/Rnd.h +++ b/src/system/rndwii/Rnd.h @@ -6,7 +6,8 @@ #include "rndobj/Rnd.h" #include -class WiiRnd : public Rnd { public: +class WiiRnd : public Rnd { +public: WiiRnd(); virtual ~WiiRnd(); virtual DataNode Handle(DataArray*, bool); diff --git a/src/system/ui/PanelDir.h b/src/system/ui/PanelDir.h index c206f394..51985003 100644 --- a/src/system/ui/PanelDir.h +++ b/src/system/ui/PanelDir.h @@ -56,6 +56,7 @@ class PanelDir : public RndDir { bool PropSyncEditModePanels(std::vector&, DataNode&, DataArray*, int, PropOp); void SetCam(RndCam* cam){ mCam = cam; } void SetOwnerPanel(class UIPanel* p){ mOwnerPanel = p; } + RndCam* GetCam() const { return mCam; } DataNode GetFocusableComponentList(); DataNode OnEnableComponent(const DataArray*); diff --git a/src/system/utl/BinStream.h b/src/system/utl/BinStream.h index 7a5e6826..f6068713 100644 --- a/src/system/utl/BinStream.h +++ b/src/system/utl/BinStream.h @@ -228,7 +228,7 @@ template BinStream& operator>>(BinStream& bs, std::map BinStream& operator>>(BinStream& bs, std::pair p) { +template BinStream& operator>>(BinStream& bs, std::pair& p) { bs >> p.first >> p.second; return bs; } diff --git a/src/system/utl/KeylessHash.h b/src/system/utl/KeylessHash.h index c74938cd..75453b7c 100644 --- a/src/system/utl/KeylessHash.h +++ b/src/system/utl/KeylessHash.h @@ -32,8 +32,8 @@ template class KeylessHash { } // keep these in here so that they're inlined - needed for ObjDirItr - T2* FirstFromStart(){ return FirstFrom(mEntries); } - T2* FirstFromNext(T2* entry){ return FirstFrom(&entry[1]); } + T2* Begin(){ return FirstFrom(mEntries); } + T2* Next(T2* entry){ return FirstFrom(&entry[1]); } }; template @@ -137,7 +137,7 @@ void KeylessHash::Resize(int size, T2* val){ val[i] = mEmpty; } mNumEntries = 0; - for(T2* it = FirstFromStart(); it != 0; it = FirstFromNext(it)){ + for(T2* it = Begin(); it != 0; it = Next(it)){ int i = HashString(*it, size); MILO_ASSERT(i >= 0, 0x108); while(val[i] != mEmpty){ diff --git a/src/system/utl/Symbol.cpp b/src/system/utl/Symbol.cpp index 5df74a6b..f6ba801f 100644 --- a/src/system/utl/Symbol.cpp +++ b/src/system/utl/Symbol.cpp @@ -81,7 +81,7 @@ static DataNode PrintSymbolTable(DataArray* da){ if(da->Size() > 1){ std::vector strvec; strvec.reserve(gHashTable->mNumEntries); - for(const char** it = gHashTable->FirstFromStart(); it != 0; it = gHashTable->FirstFromNext(it)){ + for(const char** it = gHashTable->Begin(); it != 0; it = gHashTable->Next(it)){ strvec.push_back(*it); } std::sort(strvec.begin(), strvec.end(), Alpha()); diff --git a/src/system/world/CameraManager.cpp b/src/system/world/CameraManager.cpp index f5b16a0c..6f24a264 100644 --- a/src/system/world/CameraManager.cpp +++ b/src/system/world/CameraManager.cpp @@ -1,8 +1,315 @@ #include "world/CameraManager.h" #include "world/Dir.h" #include "rndobj/DOFProc.h" +#include "rndwii/Rnd.h" +#include "utl/Symbols.h" -CameraManager::CameraManager(WorldDir* dir) : mParent(dir), unk8(0), unkc(0), unk10(0), unk14(dir, 0), unk20(dir, 0), unk2c(0.0f), unk30(0) { +Rand CameraManager::sRand(0); +int CameraManager::sSeed; +int gCooldown; // might need to change type + +CameraManager::CameraManager(WorldDir* dir) : mParent(dir), mNextShot(dir, 0), mCurrentShot(dir, 0), mCamStartTime(0.0f), mFreeCam(0) { MILO_ASSERT(mParent, 0x28); DOFProc::Init(); +} + +CameraManager::~CameraManager(){ + StartShot_(0); + if(TheDOFProc) TheDOFProc->UnSet(); + RELEASE(mFreeCam); + for(std::vector::iterator it = mCameraShotCategories.begin(); it != mCameraShotCategories.end(); ++it){ + delete it->unk4; + } +} + +void CameraManager::RandomizeCategory(ObjPtrList& camlist){ + +} + +void CameraManager::Randomize(){ + sRand.Seed(sSeed); + for(std::vector::iterator it = mCameraShotCategories.begin(); it != mCameraShotCategories.end(); ++it){ + RandomizeCategory(*it->unk4); + } +} + +void CameraManager::SyncObjects(){ + mCameraShotCategories.clear(); + mCameraShotCategories.reserve(100); + for(ObjDirItr it(mParent, true); it != 0; ++it){ + if(it->PlatformOk()){ + FindOrAddCategory(it->mCategory)->push_back(it); + } + } + Randomize(); +} + +bool CameraManager::ShotMatches(CamShot* shot, const std::vector& filts){ + int flags = shot->Flags(); + for(std::vector::const_iterator it = filts.begin(); it != filts.end(); ++it){ + DataNode d28; + if(it->prop.Type() == kDataArray){ + d28 = shot->Property(it->prop.Array(0), true)->Evaluate(); + } + else { + Symbol sym = it->prop.Sym(0); + if(sym == flags_exact) d28 = DataNode(flags & it->mask); + else if(sym == flags_any) d28 = DataNode((flags & it->mask) != 0); + else d28 = shot->Property(sym, true)->Evaluate(); + } + + if(it->match.Type() == kDataArray){ + DataArray* arr = it->match.Array(0); + int idx; + for(idx = 0; idx != arr->Size(); idx++){ + if(d28 == arr->Node(idx)) break; + } + if(idx == arr->Size()) return false; + } + else if(d28 != it->match) return false; + } + return true; +} + +CamShot* CameraManager::PickCameraShot(Symbol s, const std::vector& filts){ + CamShot* shot = FindCameraShot(s, filts); + if(!shot){ + String str("No acceptable camera shot:"); + str << " cat: " << s; + for(std::vector::const_iterator it = filts.begin(); it != filts.end(); ++it){ + str << " ("; + it->prop.Print(str, false); + str << " "; + it->match.Print(str, false); + if(it->prop == DataNode(flags_any) || it->prop == DataNode(flags_exact)){ + str << MakeString(" 0x%x", it->mask); + } + str << ")"; + } + MILO_WARN(str.c_str()); + return 0; + } + else mNextShot = shot; + return shot; +} + +CamShot* CameraManager::FindCameraShot(Symbol s, const std::vector& filts){ + FirstShotOk(s); + ObjPtrList* camlist = FindOrAddCategory(s); + for(ObjPtrList::iterator it = camlist->begin(); it != camlist->end(); ++it){ + CamShot* cur = *it; + if(!cur->Disabled() && ShotMatches(cur, filts)){ + if(cur->ShotOk(mCurrentShot)){ + camlist->MoveItem(camlist->end(), *camlist, it); + return cur; + } + } + } + return 0; +} + +int CameraManager::NumCameraShots(Symbol s, const std::vector& filts){ + FirstShotOk(s); + ObjPtrList* camlist = FindOrAddCategory(s); + int num = 0; + for(ObjPtrList::iterator it = camlist->begin(); it != camlist->end(); ++it){ + CamShot* cur = *it; + if(cur->Disabled() == 0 && ShotMatches(cur, filts) && cur->ShotOk(mCurrentShot)) num++; + } + return num; +} + +void CameraManager::FirstShotOk(Symbol s){ + static Message first_shot_ok("first_shot_ok", DataNode("")); + first_shot_ok[0] = DataNode(s); + mParent->HandleType(first_shot_ok); +} + +Symbol CameraManager::MakeCategoryAndFilters(DataArray* da, std::vector& filts){ + Symbol sym = da->Sym(2); + if(da->Size() > 3){ + DataArray* arr = da->Array(3); + for(int i = 0; i < arr->Size(); i++){ + DataArray* currArr = arr->Array(i); + PropertyFilter filt; + filt.prop = currArr->Evaluate(0); + bool b1 = false; + if(filt.prop.Type() == kDataSymbol){ + if(filt.prop.Sym(0) == flags_exact){ + b1 = true; + } + } + if(b1){ + filt.mask = currArr->Int(1); + filt.match = DataNode(currArr->Int(2)); + } + else { + b1 = false; + if(filt.prop.Type() == kDataSymbol){ + if(filt.prop.Sym(0) == flags_any){ + b1 = true; + } + } + if(b1){ + filt.mask = currArr->Int(1); + filt.match = DataNode(1); + } + else { + filt.match = currArr->Evaluate(1); + filt.mask = -1; + } + } + filts.push_back(filt); + } + } + return sym; +} + +DataNode CameraManager::OnPickCameraShot(DataArray* da){ + std::vector pvec; + pvec.reserve(20); + Symbol sym = MakeCategoryAndFilters(da, pvec); + return DataNode(PickCameraShot(sym, pvec)); +} + +DataNode CameraManager::OnFindCameraShot(DataArray* da){ + std::vector pvec; + pvec.reserve(20); + Symbol sym = MakeCategoryAndFilters(da, pvec); + return DataNode(FindCameraShot(sym, pvec)); +} + +DataNode CameraManager::OnNumCameraShots(DataArray* da){ + std::vector pvec; + pvec.reserve(20); + Symbol sym = MakeCategoryAndFilters(da, pvec); + return DataNode(NumCameraShots(sym, pvec)); +} + +void CameraManager::ForceCameraShot(CamShot* shot){ + mNextShot = shot; +} + +void CameraManager::StartShot_(CamShot* shot){ + if(mCurrentShot) mCurrentShot->EndAnim(); + mCurrentShot = shot; + if(mCurrentShot){ + mCurrentShot->StartAnim(); + mCamStartTime = TheTaskMgr.Time(shot->Units()); + } + static DataNode& venue_test = DataVariable("venue_test"); + if(venue_test != DataNode(1)){ + TheWiiRnd.SetTriFrameRendering(true); + gCooldown = 0; + } +} + +CamShot* CameraManager::ShotAfter(CamShot* cshot){ + ObjDirItr it(mParent, true); + CamShot* ret = it; + for(; it != 0 && it != cshot; ++it); + if(it) ++it; + if(it) ret = it; + return ret; +} + +DataNode CameraManager::OnCycleShot(DataArray* da){ + CamShot* after = ShotAfter(mCurrentShot); + if(after) ForceCameraShot(after); + return DataNode(0); +} + +FreeCamera* CameraManager::GetFreeCam(int padnum){ + if(!mFreeCam){ + mFreeCam = new FreeCamera(mParent, 0.001f, 0.2f, 0); + mFreeCam->SetPadNum(padnum); + } + return mFreeCam; +} + +void CameraManager::DeleteFreeCam(){ + RELEASE(mFreeCam); +} + +CamShot* CameraManager::MiloCamera(){ + if(TheLoadMgr.EditMode()){ + static DataNode& anim = DataVariable("milo.anim"); + if(anim.Type() == kDataObject){ + return anim.Obj(0); + } + } + return 0; +} + +void CameraManager::PrePoll(){ + if(!MiloCamera()){ + if(mNextShot){ + StartShot_(mNextShot); + mNextShot = 0; + } + if(mCurrentShot){ + mCurrentShot->SetPreFrame(CalcFrame(), 1.0f); + } + } +} + +float CameraManager::CalcFrame(){ + float ttime = TheTaskMgr.Time(mCurrentShot->Units()); + float fpu = mCurrentShot->FramesPerUnit(); + return (ttime - mCamStartTime) * fpu; +} + +void CameraManager::Enter(){ + StartShot_(0); + DeleteFreeCam(); +} + +void CameraManager::Poll(){ + if(!MiloCamera()){ + if(mCurrentShot){ + mCurrentShot->SetFrame(CalcFrame(), 1.0f); + } + if(mFreeCam) mFreeCam->Poll(); + } +} + +DataNode CameraManager::Handle(DataArray* _msg, bool _warn){ + Symbol sym = _msg->Sym(1); +#ifdef VERSION_SZBE69_B8 + MessageTimer timer((MessageTimer::Active()) ? dynamic_cast(this) : 0, sym); +#endif + HANDLE(pick_shot, OnPickCameraShot) + HANDLE(find_shot, OnFindCameraShot) + HANDLE_ACTION(force_shot, ForceCameraShot(_msg->Obj(2))) + HANDLE_EXPR(current_shot, CurrentShot()) + HANDLE_EXPR(next_shot, NextShot()) + HANDLE_EXPR(get_free_cam, GetFreeCam(_msg->Int(2))) + HANDLE_EXPR(has_free_cam, HasFreeCam()) + HANDLE_ACTION(delete_free_cam, DeleteFreeCam()) + HANDLE(cycle_shot, OnCycleShot) + HANDLE_EXPR(shot_after, ShotAfter(_msg->Obj(2))) + HANDLE(camera_random_seed, OnRandomSeed) + HANDLE(iterate_shot, OnIterateShot) + HANDLE(num_shots, OnNumCameraShots) + if(_warn) MILO_WARN("%s(%d): %s unhandled msg: %s", __FILE__, 0x242, PathName(dynamic_cast(this)), sym); +END_HANDLERS + +DataNode CameraManager::OnRandomSeed(DataArray* da){ + sSeed = da->Int(2); + return DataNode(0); +} + +DataNode CameraManager::OnIterateShot(DataArray* da){ + DataNode* var = da->Var(2); + DataNode d28(*var); + for(std::vector::iterator it = mCameraShotCategories.begin(); it != mCameraShotCategories.end(); ++it){ + for(ObjPtrList::iterator lit = it->unk4->begin(); lit != it->unk4->end(); ++lit){ + *var = DataNode(*lit); + for(int i = 3; i < da->Size(); i++){ + da->Command(i)->Execute(); + } + } + } + *var = d28; + return DataNode(0); } \ No newline at end of file diff --git a/src/system/world/CameraManager.h b/src/system/world/CameraManager.h index cf1c7533..8c45f4e3 100644 --- a/src/system/world/CameraManager.h +++ b/src/system/world/CameraManager.h @@ -2,11 +2,28 @@ #define WORLD_CAMERAMANAGER_H #include "obj/ObjPtr_p.h" #include "world/CameraShot.h" +#include "world/FreeCamera.h" +#include "math/Rand.h" class WorldDir; class CameraManager { public: + class Category { + public: + Symbol unk0; + ObjPtrList* unk4; + }; + + // size 0x14 + class PropertyFilter { + public: + PropertyFilter(){} + DataNode prop; // 0x0 + DataNode match; // 0x8 + int mask; // 0x10 + }; + CameraManager(WorldDir*); virtual DataNode Handle(DataArray*, bool); virtual ~CameraManager(); @@ -15,13 +32,46 @@ class CameraManager { void PrePoll(); void Poll(); void SyncObjects(); + void StartShot_(CamShot*); + void ForceCameraShot(CamShot*); + FreeCamera* GetFreeCam(int); + void DeleteFreeCam(); + CamShot* ShotAfter(CamShot*); + CamShot* MiloCamera(); + float CalcFrame(); + void FirstShotOk(Symbol); + void Randomize(); + void RandomizeCategory(ObjPtrList&); + + bool ShotMatches(CamShot*, const std::vector&); + Symbol MakeCategoryAndFilters(DataArray*, std::vector&); + CamShot* PickCameraShot(Symbol, const std::vector&); + CamShot* FindCameraShot(Symbol, const std::vector&); + int NumCameraShots(Symbol, const std::vector&); + ObjPtrList* FindOrAddCategory(Symbol); + + CamShot* NextShot() const { return mNextShot; } + CamShot* CurrentShot() const { return mCurrentShot; } + bool HasFreeCam() const { return mFreeCam; } + + DataNode OnPickCameraShot(DataArray*); + DataNode OnFindCameraShot(DataArray*); + DataNode OnCycleShot(DataArray*); + DataNode OnRandomSeed(DataArray*); + DataNode OnIterateShot(DataArray*); + DataNode OnNumCameraShots(DataArray*); + + NEW_POOL_OVERLOAD(CameraManager) + DELETE_POOL_OVERLOAD(CameraManager) + static Rand sRand; + static int sSeed; - WorldDir* mParent; - int unk8, unkc, unk10; - ObjPtr unk14; - ObjPtr unk20; - float unk2c; - int unk30; + WorldDir* mParent; // 0x4 + std::vector mCameraShotCategories; // 0x8 + ObjPtr mNextShot; // 0x14 + ObjPtr mCurrentShot; // 0x20 + float mCamStartTime; // 0x2c + FreeCamera* mFreeCam; // 0x30 }; #endif diff --git a/src/system/world/CameraShot.cpp b/src/system/world/CameraShot.cpp index 78cfc005..39da9067 100644 --- a/src/system/world/CameraShot.cpp +++ b/src/system/world/CameraShot.cpp @@ -5,7 +5,13 @@ #include "rndobj/TransProxy.h" #include "rndobj/Utl.h" #include "obj/PropSync_p.h" +#include "world/Dir.h" +#include "math/Interp.h" +#include "math/MathFuncs.h" #include "utl/Symbols.h" +#include "utl/Messages.h" + +Hmx::Object* CamShot::sAnimTarget; INIT_REVS(CamShot); @@ -17,6 +23,154 @@ CamShot::CamShot() : mKeyFrames(this), mLoopKeyframe(0), mNear(1.0f), mFar(1000. } +CamShot::~CamShot(){ + +} + +void CamShot::Init(){ + Register(); + sAnimTarget = Hmx::Object::New(); +} + +void CamShot::ListAnimChildren(std::list& animlist) const { + for(ObjPtrList::iterator it = mAnims.begin(); it != mAnims.end(); ++it){ + animlist.push_back(*it); + } +} + +Hmx::Object* CamShot::AnimTarget(){ return sAnimTarget; } + +void CamShot::StartAnim(){ + START_AUTO_TIMER("cam_switch"); + HandleType(start_shot_msg); + WorldDir* wdir = dynamic_cast(Dir()); + if(wdir) wdir->SetCrowds(mCrowds); + unk10c = 0; + unk110 = 0; + unkc4.Zero(); + unkdc.Zero(); + unkf4.Zero(); + unkd0.Zero(); + unke8.Zero(); + unk100.Zero(); + for(ObjPtrList::iterator it = mAnims.begin(); it != mAnims.end(); ++it){ + (*it)->StartAnim(); + } + for(int i = 0; i != mCrowds.size(); i++){ + mCrowds[i].Set3DCrowd(); + } +} + +void CamShot::EndAnim(){ + UnHide(); + HandleType(stop_shot_msg); + for(ObjPtrList::iterator it = mAnims.begin(); it != mAnims.end(); ++it){ + (*it)->EndAnim(); + } +} + +void CamShot::DoHide(){ + if(!mHidden){ + unkb4.clear(); + unkbc.clear(); + unkbc.reserve(unk5c.size() + unk6c.size() + 3); + unkb4.reserve(unk64.size()); + for(std::vector::iterator it = unk5c.begin(); it != unk5c.end(); ++it){ + if((*it)->Showing()){ + (*it)->SetShowing(false); + unkbc.push_back(*it); + } + } + for(std::vector::iterator it = unk6c.begin(); it != unk6c.end(); ++it){ + if((*it)->Showing()){ + (*it)->SetShowing(false); + unkbc.push_back(*it); + } + } + mHidden = true; + } +} + +void CamShot::UnHide(){ + if(mHidden){ + for(std::vector::iterator it = unkb4.begin(); it != unkb4.end(); ++it){ + (*it)->SetShowing(false); + } + for(std::vector::iterator it = unkbc.begin(); it != unkbc.end(); ++it){ + (*it)->SetShowing(true); + } + unkb4.clear(); + unkbc.clear(); + mHidden = false; + } +} + +#pragma push +#pragma pool_data off +RndCam* CamShot::GetCam(){ + RndCam* ret = 0; + PanelDir* pdir = dynamic_cast(Dir()); + if(pdir){ + ret = pdir->mCam; + if(!ret) MILO_NOTIFY_ONCE("%s: paneldir but no cam", PathName(pdir)); + } + else { + MILO_NOTIFY_ONCE("%s: no world, or paneldir so no cam", PathName(this)); + } + return ret; +} +#pragma pop + +float CamShot::EndFrame(){ return mDuration; } + +void CamShot::SetShotOver(){ + HandleType(shot_over_msg); + mShotOver = true; +} + +bool CamShot::CheckShotStarted(){ return unk120p4; } + +bool CamShot::CheckShotOver(float f){ + return !mShotOver && !mLooping && f >= mDuration; +} + +void CamShot::CacheFrames(){ + float frames = 0.0f; + for(int i = 0; i != mKeyFrames.size(); i++){ + CamShotFrame& curframe = mKeyFrames[i]; + curframe.unkc = frames; + frames += curframe.mDuration + curframe.mBlend; + } + mDuration = frames; +} + +bool CamShot::ShotOk(CamShot* shot){ + static Message msg("shot_ok", DataNode(0)); + msg[0] = DataNode(shot); + DataNode handled = HandleType(msg); + switch(handled.Type()){ + case kDataUnhandled: + break; + case kDataString: + if(DataVariable("camera_spew") != DataNode(0)){ + MILO_LOG("Shot %s rejected: %s.\n", Name(), handled.Str(0)); + } + return false; + default: + if(handled.Int(0)){ + break; + } + else { + if(DataVariable("camera_spew") != DataNode(0)){ + MILO_LOG("Shot %s rejected: not ok.\n", Name()); + } + return false; + } + break; + } + return true; +} + #pragma push #pragma dont_inline on BEGIN_COPYS(CamShot) @@ -84,12 +238,26 @@ RndTransformable* LoadSubPart(BinStream& bs, CamShot* shot){ if(!proxy){ proxy = Hmx::Object::New(); proxy->SetName(search, shot->Dir()); - // proxy->SetProxy(dynamic_cast(foundTrans)); + proxy->SetProxy(dynamic_cast(foundTrans)); proxy->SetPart(sym); } return proxy; } +void LoadDrawables(BinStream& bs, std::vector& vec, ObjectDir* dir){ + MILO_ASSERT(dir, 0x3F9); + vec.clear(); + int count; + bs >> count; + vec.reserve(count); + for(; count != 0; count--){ + char buf[0x80]; + bs.ReadString(buf, 0x80); + RndDrawable* draw = dir->Find(buf, false); + if(draw) vec.push_back(draw); + } +} + SAVE_OBJ(CamShot, 0x409); #pragma push @@ -97,7 +265,9 @@ SAVE_OBJ(CamShot, 0x409); BEGIN_LOADS(CamShot) LOAD_REVS(bs) ASSERT_REVS(0x32, 1) - if(unk120p2) UnHide(); + bool bitfield_bool; + bool hidden = mHidden; + if(hidden) UnHide(); float somefloat = 0.0f; if(gRev != 0){ LOAD_SUPERCLASS(Hmx::Object) @@ -105,29 +275,27 @@ BEGIN_LOADS(CamShot) } if(gRev > 0xC){ bs >> mKeyFrames; - bool b; - bs >> b; - mLooping = b; + bs >> bitfield_bool; + mLooping = bitfield_bool; if(gRev > 0x1E) bs >> mLoopKeyframe; else mLoopKeyframe = 0; if(gRev < 0x28) bs >> somefloat; bs >> mNear; bs >> mFar; - bool bb; - bs >> bb; - mUseDepthOfField = bb; + bs >> bitfield_bool; + mUseDepthOfField = bitfield_bool; bs >> mFilter; bs >> mClampHeight; } else { mLoopKeyframe = 0; mLooping = false; - float f1, f2; - bs >> f1; - bs >> f2; + float fov1, fov2; + bs >> fov1; + bs >> fov2; if(gRev < 9){ - f1 = ConvertFov(f1, 0.75f); - f2 = ConvertFov(f2, 0.75f); + fov1 = ConvertFov(fov1, 0.75f); + fov2 = ConvertFov(fov2, 0.75f); } Transform tf1; Transform tf2; @@ -139,23 +307,25 @@ BEGIN_LOADS(CamShot) bs >> vec2; if(gRev < 0x28) bs >> somefloat; float fdummy1; - bool b; + bool usedof; bs >> fdummy1; bs >> mNear; bs >> mFar; - bs >> b; - mUseDepthOfField = b; + bs >> usedof; + mUseDepthOfField = usedof; float someotherfloat = 1.0f; if(gRev > 9){ - float f; + float newblurdepth; float ff, ff2; - bs >> f >> ff >> ff2; - someotherfloat = someotherfloat - f; + bs >> newblurdepth; + bs >> ff; + bs >> ff2; + someotherfloat = 1.0f - newblurdepth; } if(gRev < 4){ - bool bbb; - bs >> bbb; - SetRate((Rate)!bbb); + bool ratebool; + bs >> ratebool; + SetRate((Rate)!ratebool); } bs >> mFilter; if(gRev < 7) mFilter = 0.9f; @@ -174,20 +344,42 @@ BEGIN_LOADS(CamShot) CamShotFrame csf1(this); CamShotFrame csf2(this); if(fdummy1 > 0.0f){ - float locf1 = 0.0f; - float locf2 = fdummy1; - TransformNoScale tns; - tns.Set(tf1); - Vector2 locv; - locv = vec1; - // more - } - // more - Vector2 v; - Interp(v, v, 0, v); + csf1.mDuration = 0.0f; + csf1.mBlend = fdummy1; + csf1.unk10.Set(tf1); + csf1.mScreenOffset = vec1; + csf1.SetFieldOfView(fov1); + csf1.SetBlurDepth(someotherfloat); + csf1.SetMaxBlur(1.0f); + csf1.SetMinBlur(0.0f); + csf1.mFocusBlurMultiplier = 0.0f; + csf1.mTargets = pList; + csf1.mParent = ptr; + csf1.unk8bp1 = somebool; + mKeyFrames.push_back(csf1); + } + csf2.mDuration = 0.0f; + csf2.mBlend = 0.0f; + csf2.unk10.Set(tf2); + csf2.mScreenOffset = vec2; + csf2.SetFieldOfView(fov2); + csf2.SetBlurDepth(someotherfloat); + csf2.SetMaxBlur(1.0f); + csf2.SetMinBlur(0.0f); + csf2.mFocusBlurMultiplier = 0.0f; + csf2.mTargets = pList; + csf2.mParent = ptr; + csf2.unk8bp1 = somebool; + mKeyFrames.push_back(csf2); } bs >> mPath; - if(gRev - 2 < 0x2B){ + if( + gRev == 2 || gRev == 3 || gRev == 4 || gRev == 5 || gRev == 6 || gRev == 7 || gRev == 8 || gRev == 9 || gRev == 10 || gRev == 11 || + gRev == 12 || gRev == 13 || gRev == 14 || gRev == 15 || gRev == 16 || gRev == 17 || gRev == 18 || gRev == 19 || gRev == 20 || gRev == 21 || + gRev == 22 || gRev == 23 || gRev == 24 || gRev == 25 || gRev == 26 || gRev == 27 || gRev == 28 || gRev == 29 || gRev == 30 || gRev == 31 || + gRev == 32 || gRev == 33 || gRev == 34 || gRev == 35 || gRev == 36 || gRev == 37 || gRev == 38 || gRev == 39 || gRev == 40 || gRev == 41 || + gRev == 42 || gRev == 43 || gRev == 44 + ){ float f2b; bs >> f2b; } @@ -198,26 +390,534 @@ BEGIN_LOADS(CamShot) bs >> f26; } } - if(gRev >= 0x23) bs >> mPlatformOnly; - if(gRev > 0x21){ + if(gRev > 0x22) bs >> mPlatformOnly; + else if(gRev > 0x21){ int state; bs >> state; if(state == 1) mPlatformOnly = 2; else if(state == 2) mPlatformOnly = 4; else mPlatformOnly = 0; } - if(gRev == 0) LOAD_SUPERCLASS(RndAnimatable) + if(gRev < 1) LOAD_SUPERCLASS(RndAnimatable) CamShotCrowd csc(this); - if(gRev - 5 < 0x25){ - + if( + gRev == 5 || gRev == 6 || gRev == 7 || gRev == 8 || gRev == 9 || gRev == 10 || gRev == 11 || + gRev == 12 || gRev == 13 || gRev == 14 || gRev == 15 || gRev == 16 || gRev == 17 || gRev == 18 || gRev == 19 || gRev == 20 || gRev == 21 || + gRev == 22 || gRev == 23 || gRev == 24 || gRev == 25 || gRev == 26 || gRev == 27 || gRev == 28 || gRev == 29 || gRev == 30 || gRev == 31 || + gRev == 32 || gRev == 33 || gRev == 34 || gRev == 35 || gRev == 36 || gRev == 37 || gRev == 38 || gRev == 39 || gRev == 40 || gRev == 41 + ){ + bs >> csc.unk10; + } + int loc240 = -1; + if( + gRev == 8 || gRev == 9 || gRev == 10 || gRev == 11 || gRev == 12 || gRev == 13 || gRev == 14 || gRev == 15 || gRev == 16 || gRev == 17 || + gRev == 18 || gRev == 19 || gRev == 20 || gRev == 21 || gRev == 22 || gRev == 23 || gRev == 24 || gRev == 25 || gRev == 26 || gRev == 27 || + gRev == 28 || gRev == 29 || gRev == 30 || gRev == 31 || gRev == 32 || gRev == 33 || gRev == 34 || gRev == 35 || gRev == 36 || gRev == 37 || + gRev == 38 || gRev == 39 || gRev == 40 || gRev == 41 + ) + bs >> loc240; + if(gRev > 5){ + unk6c.clear(); + unk6c.clear(); + unk5c.clear(); + if(gRev <= 0x2F || (bs.Cached() && gRev < 0x32)){ + LoadDrawables(bs, unk5c, Dir()); + } + else { + LoadDrawables(bs, unk5c, Dir()); + LoadDrawables(bs, unk6c, Dir()); + } + } + if(gRev > 0x1B) LoadDrawables(bs, unk64, Dir()); + if(gRev > 0xB){ + if(gRev < 0x2A) bs >> csc.mCrowd; + } + else { + DataNode* prop = Property("hide_crowd", false); + if(!prop || prop->Int(0) == 0){ + ObjDirItr iter(Dir(), true); + if(iter){ + csc.mCrowd = iter; + } + } + } + if( + gRev == 33 || gRev == 34 || gRev == 35 || gRev == 36 || gRev == 37 || + gRev == 38 || gRev == 39 || gRev == 40 || gRev == 41 + ) + bs >> csc.mCrowdRotate; + if( + gRev == 8 || gRev == 9 || gRev == 10 || gRev == 11 || gRev == 12 || gRev == 13 || gRev == 14 || gRev == 15 || gRev == 16 || gRev == 17 || + gRev == 18 || gRev == 19 || gRev == 20 || gRev == 21 || gRev == 22 || gRev == 23 || gRev == 24 || gRev == 25 || gRev == 26 || gRev == 27 || + gRev == 28 || gRev == 29 || gRev == 30 || gRev == 31 || gRev == 32 || gRev == 33 || gRev == 34 || gRev == 35 || gRev == 36 || gRev == 37 || + gRev == 38 || gRev == 39 || gRev == 40 || gRev == 41 + ){ + if(csc.mCrowd){ + if(loc240 != csc.mCrowd->GetModifyStamp()){ + csc.unk10.clear(); + goto next; + } + } + if(!csc.mCrowd && loc240 != -1) csc.unk10.clear(); + } +next: + if(gRev == 0xE){ + float f244, f248, f24c; + bs >> f244; + bs >> f248; + bs >> f24c; + } + if(gRev == 16 || gRev == 17){ + float f250, f254; + bs >> f250; + bs >> f254; + for(int i = 0; i != mKeyFrames.size(); i++){ + mKeyFrames[i].mShakeNoiseAmp = f254; + mKeyFrames[i].mShakeNoiseFreq = f250; + } } + if(gRev > 0x10 && gRev < 0x12){ + Vector2 v210; + bs >> v210; + for(int i = 0; i != mKeyFrames.size(); i++){ + mKeyFrames[i].SetMaxAngularOffset(v210); + } + } + if(gRev > 0x13) bs >> mGlowSpot; + if(gRev > 0x1D) bs >> mDrawOverrides; + if(gRev > 0x1F) bs >> mPostProcOverrides; + if(gRev > 0x23 && (gRev - 47 > 1U)){ + bs >> bitfield_bool; + mPS3PerPixel = bitfield_bool; + } + if(gRev > 0x24) bs >> mFlags; + Symbol s258; + if(gRev == 40 || gRev == 41 || gRev == 42) bs >> s258; + if(gRev < 0x2A){ + if(csc.mCrowd) mCrowds.push_back(csc); + } + else bs >> mCrowds; + if(gRev > 0x2A) bs >> mAnims; + if(gAltRev != 0) bs >> unk74; + if(!s258.Null()){ + mAnims.push_back(Dir()->Find(s258.Str(), false)); + } + CacheFrames(); + if(hidden) DoHide(); END_LOADS #pragma pop +float CamShot::GetDurationSeconds() const { + if(Units() == kTaskBeats){ + return 0.0f; + } + else { + MILO_ASSERT(Units() == kTaskSeconds, 0x613); + return mDuration / 30.0f; + } +} + +void CamShot::Disable(bool b, int i){ + if(b) mDisabled |= i; + else mDisabled &= ~i; +} + +CamShotFrame::CamShotFrame(Hmx::Object* o) : mDuration(0), mBlend(0), mBlendEase(0), unkc(-1.0f), mShakeNoiseAmp(0), mShakeNoiseFreq(0), mFocusBlurMultiplier(0), + mTargets(o, kObjListNoNull), unk68(dynamic_cast(o)), mParent(o, 0), mFocusTarget(o, 0), + mZoomFOV(0), mMaxBlur(0xFF), mMinBlur(0), + mBlendEaseMode(0), unk8bp1(0), unk8bp0(0) { + mMaxAngularOffsetY = 0; + mMaxAngularOffsetX = 0; + SetBlurDepth(0.34999999f); + SetFieldOfView(1.2217305f); + unk10.Reset(); + mScreenOffset.Zero(); + unk34.x = 1e+30f; +} + +CamShotFrame::CamShotFrame(Hmx::Object* o, const CamShotFrame& frame) : mDuration(frame.mDuration), mBlend(frame.mBlend), mBlendEase(frame.mBlendEase), + unk10(frame.unk10), mScreenOffset(frame.mScreenOffset), mShakeNoiseAmp(frame.mShakeNoiseAmp), mShakeNoiseFreq(frame.mShakeNoiseFreq), mFocusBlurMultiplier(frame.mFocusBlurMultiplier), + mTargets(frame.mTargets), unk68(dynamic_cast(o)), mParent(frame.mParent), mFocusTarget(frame.mFocusTarget), mFOV(frame.mFOV), mZoomFOV(frame.mZoomFOV), + mBlurDepth(frame.mBlurDepth), mMaxBlur(frame.mMaxBlur), mMinBlur(frame.mMinBlur), mBlendEaseMode(frame.mBlendEaseMode), unk8bp1(frame.unk8bp1), unk8bp0(0) { + mMaxAngularOffsetX = frame.mMaxAngularOffsetX; + mMaxAngularOffsetY = frame.mMaxAngularOffsetY; +} + +void CamShotFrame::Load(BinStream& bs){ + bs >> mDuration; + bs >> mBlend; + bs >> mBlendEase; + if(CamShot::gRev > 0x2D){ + bool b; bs >> b; + mBlendEaseMode = b; + } + float fov; bs >> fov; + SetFieldOfView(fov); + Transform tf40; + tf40.Zero(); + Transform tf70; + bs >> tf70; + if(tf40 == tf70) unk10.Reset(); + else unk10.Set(tf70); + bs >> mScreenOffset; + float blurdepth; bs >> blurdepth; + if(CamShot::gRev < 0x17){ + SetBlurDepth(1.0f - blurdepth); + int i; bs >> i; + } + else SetBlurDepth(blurdepth); + if(CamShot::gRev > 0x17){ + float b; bs >> b; + SetMaxBlur(b); + } + else mMaxBlur = 0xff; + if(CamShot::gRev > 0x1C){ + float b; bs >> b; + SetMinBlur(b); + } + else mMinBlur = 0; + if(CamShot::gRev > 0x14) bs >> mFocusBlurMultiplier; + else mFocusBlurMultiplier = 0; + if(CamShot::gRev < 0x17){ int i; bs >> i; } + if(CamShot::gRev > 0x2B) bs >> mTargets; + else { + int count; bs >> count; + mTargets.clear(); + for(int i = 0; i < count; i++){ + RndTransformable* part = LoadSubPart(bs, unk68); + if(part) mTargets.push_back(part); + } + } + if(CamShot::gRev > 0x1A){ + if(CamShot::gRev > 0x2B) bs >> mFocusTarget; + else mFocusTarget = LoadSubPart(bs, unk68); + } + if(CamShot::gRev > 0x2B) bs >> mParent; + else mParent = LoadSubPart(bs, unk68); + bool b1; bs >> b1; + unk8bp1 = b1; + if(CamShot::gRev > 0x11){ + bs >> mShakeNoiseAmp; + bs >> mShakeNoiseFreq; + Vector2 v; bs >> v; + SetMaxAngularOffset(v); + } + if(CamShot::gRev > 0x15){ + float zoomfov; bs >> zoomfov; + SetZoomFieldOfView(zoomfov); + } + if(CamShot::gRev > 0x28){ + bool b0; bs >> b0; + unk8bp0 = b0; + } +} + +#pragma push +#pragma dont_inline on +void CamShotFrame::Interp(const CamShotFrame& frame, float f1, float f2, RndCam* cam){ + float d11 = f1; + float fvar1 = 0; + if(mBlendEase){ + float fvar2 = 1.0f; + if(mBlendEaseMode){ + switch(mBlendEaseMode){ + case 1: fvar2 = 2.0f; break; + case 2: fvar1 = -1.0f; break; + default: + MILO_WARN("Invalid mBlendEaseMode: %d\n", mBlendEaseMode); + break; + } + } + ATanInterpolator aint(fvar1, fvar2, fvar1, fvar2, mBlendEase); + d11 = aint.Eval(f1); + } + float interp1 = ::Interp(FieldOfView(), frame.FieldOfView(), d11); + float interp2 = ::Interp(cam->YFov(), interp1, f2); + cam->SetFrustum(unk68->mNear, unk68->mFar, interp2, 1.0f); + bool hasTarget = HasTargets(); + bool thasTarget = frame.HasTargets(); + bool sameTargets = SameTargets(frame); + Transform tfd0; + BuildTransform(cam, tfd0, !sameTargets); + Transform tf100; + BuildTransform(cam, tf100, !sameTargets); + Transform tf130; + ::Interp(tfd0.v, tf100.v, d11, tf130.v); + ::Interp(tfd0.m, tf100.m, d11, tf130.m); + float f1fc; + if(hasTarget || thasTarget){ + if(sameTargets){ + Transform tf160(tf130); + Transform tf190(tf130); + if(hasTarget){ + tf160.LookAt(unk34, tf130.m.z); + } + if(thasTarget){ + tf190.LookAt(frame.unk34, tf130.m.z); + } + ::Interp(tf160.m, tf190.m, d11, tf130.m); + } + Vector2 v1e0; + if(hasTarget && !thasTarget){ + f1fc = Distance(unk34, tf130.v); + v1e0 = mScreenOffset; + } + else if(!hasTarget && thasTarget){ + f1fc = Distance(frame.unk34, tf130.v); + v1e0 = frame.mScreenOffset; + } + else { + float dist13 = Distance(frame.unk34, tf130.v); + float dist14 = Distance(unk34, tf130.v); + ::Interp(dist14, dist13, d11, f1fc); + ::Interp(mScreenOffset, frame.mScreenOffset, d11, v1e0); + } + + if(sameTargets){ + Vector3 v1c0; + v1c0.x = (-v1e0.x * f1fc) / cam->LocalProjectXfm().m.x.x; + v1c0.y = 0.0f; + v1c0.z = (v1e0.y * f1fc) / cam->LocalProjectXfm().m.z.x; + + Multiply(v1c0, tf130, tf130.v); + } + + + } + float f200; + ::Interp(ZoomFieldOfView(), frame.ZoomFieldOfView(), d11, f200); + cam->SetFrustum(unk68->mNear, unk68->mFar, interp2 + f200, 1.0f); + RndTransformable* focus = mFocusTarget; + RndTransformable* towardFocus = frame.mFocusTarget; + bool b10 = false; + if(unk68->mUseDepthOfField && (focus || hasTarget || towardFocus || thasTarget)){ + b10 = true; + } + if(b10){ + float f204; + float f208; + ::Interp(BlurDepth(), frame.BlurDepth(), d11, f204); + float f20c; + ::Interp(MaxBlur(), frame.MaxBlur(), d11, f20c); + float f210; + ::Interp(MinBlur(), frame.MinBlur(), d11, f210); + ::Interp(mFocusBlurMultiplier, frame.mFocusBlurMultiplier, d11, f208); + float d9 = 0; + float d10; + if(focus){ + d10 = Distance(focus->WorldXfm().v, tf130.v); + } + else { + d10 = d9; + if(hasTarget) d10 = Distance(unk34, tf130.v); + } + if(towardFocus){ + d9 = Distance(towardFocus->WorldXfm().v, tf130.v); + } + else { + if(thasTarget) d9 = Distance(frame.unk34, tf130.v); + } + if(!focus && !hasTarget){ + MILO_ASSERT(towardFocus || thasTarget, 0x7D8); + d10 = d9; + } + if(!towardFocus && !thasTarget){ + MILO_ASSERT(focus || hasTarget, 0x7DE); + d9 = d10; + } + float interp9 = ::Interp(d10, d9, d11); + TheDOFProc->Set(cam, f208 * d9 + d9, f204, f20c, f210); + } + else TheDOFProc->UnSet(); + float f214, f218; + ::Interp(cam->WorldXfm().v, tf130.v, f2, tf130.v); + ::Interp(cam->WorldXfm().m, tf130.m, f2, tf130.m); + ::Interp(mShakeNoiseAmp, frame.mShakeNoiseAmp, d11, f214); + ::Interp(mShakeNoiseFreq, frame.mShakeNoiseFreq, d11, f218); + Vector2 v1e8; + ::Interp(MaxAngularOffset(), frame.MaxAngularOffset(), d11, v1e8); + Vector3 v1cc; + Vector3 v1d8; + unk68->Shake(f218, f214, v1e8, v1cc, v1d8); + Multiply(v1cc, tf130, tf130.v); + Hmx::Matrix3 m1b4; + MakeRotMatrix(v1d8, m1b4, true); + Multiply(tf130.m, m1b4, tf130.m); + cam->SetLocalXfm(tf130); +} +#pragma pop + +void CamShotFrame::UpdateTarget() const { + // GetCurrentTargetPosition(unk34); + // if(mParent){ + // unk44.Set(mParent->WorldXfm()); + // } +} + +void CamShotFrame::GetCurrentTargetPosition(Vector3& v) const { + v.Zero(); + int count = 0; + for(ObjPtrList::iterator it = mTargets.begin(); it != mTargets.end(); ++it){ + RndTransformable* cur = *it; + if(cur){ + count++; + Add(v, cur->WorldXfm().v, v); + } + } + if(count > 0) v *= (1.0f / (float)count); +} + +bool CamShotFrame::HasTargets() const { + for(ObjPtrList::iterator it = mTargets.begin(); it != mTargets.end(); ++it){ + if(*it) return true; + } + return false; +} + +DataNode CamShot::OnGetOccluded(DataArray* da){ + return DataNode(0); +} + +DataNode CamShot::OnSetAllCrowdChars3D(DataArray* da){ + return DataNode(0); +} + +CamShotCrowd::CamShotCrowd(Hmx::Object* o) : mCrowd(o, 0), mCrowdRotate(0), unk18(dynamic_cast(o)) {} +CamShotCrowd::CamShotCrowd(Hmx::Object* o, const CamShotCrowd& crowd) : mCrowd(crowd.mCrowd), + mCrowdRotate(crowd.mCrowdRotate), unk10(crowd.unk10), unk18(dynamic_cast(o)) {} + +void CamShotCrowd::Load(BinStream& bs){ + bs >> mCrowd; + bs >> mCrowdRotate; + bs >> unk10; + int num; + bs >> num; + if(!mCrowd || num == mCrowd->unk88) unk10.resize(num); + else unk10.clear(); +} + +void CamShotCrowd::Set3DCrowd(){ + if(mCrowd){ + mCrowd->Set3DCharList(unk10, unk18); + } +} + +void CamShotCrowd::ClearCrowdList(){ unk10.clear(); } +void CamShotCrowd::OnCrowdChanged(){ ClearCrowdList(); } + +void CamShotCrowd::ClearCrowdChars(){ + ClearCrowdList(); + if(!mCrowd) MILO_WARN("No crowd selected"); + mCrowd->Set3DCharList(unk10, unk18); +} + +void CamShotCrowd::SetCrowdChars(){ + std::list::iterator> > meshlist; + GetSelectedCrowd(meshlist); + if(meshlist.begin() == meshlist.end()){ + MILO_WARN("No selected crowd members in this crowd"); + } + else { + ClearCrowdChars(); + AddCrowdChars(meshlist); + } +} + +void CamShotCrowd::AddCrowdChars(){ + std::list::iterator> > meshlist; + GetSelectedCrowd(meshlist); + if(meshlist.begin() == meshlist.end()){ + MILO_WARN("No selected crowd members in this crowd"); + } + else AddCrowdChars(meshlist); +} + +BEGIN_HANDLERS(CamShot) + HANDLE(has_targets, OnHasTargets) + HANDLE(set_pos, OnSetPos) + HANDLE_EXPR(duration_seconds, GetDurationSeconds()) + HANDLE(set_3d_crowd, OnSetCrowdChars) + HANDLE(add_3d_crowd, OnAddCrowdChars) + HANDLE(clear_3d_crowd, OnClearCrowdChars) + HANDLE_EXPR(gen_hide_list, 0) + HANDLE_EXPR(clear_hide_list, 0) + HANDLE(get_occluded, OnGetOccluded) + HANDLE_EXPR(platform_ok, PlatformOk()) + HANDLE(set_all_to_3D, OnSetAllCrowdChars3D) + HANDLE(radio, OnRadio) + HANDLE_SUPERCLASS(RndAnimatable) + HANDLE_SUPERCLASS(Hmx::Object) + HANDLE_CHECK(0xC6F) +END_HANDLERS + +DataNode CamShot::OnHasTargets(DataArray* da){ + return DataNode(mKeyFrames[da->Int(2)].HasTargets()); +} + +DataNode CamShot::OnSetPos(DataArray* da){ + int idx = da->Int(2); + return DataNode(SetPos(mKeyFrames[idx], RndCam::Current())); +} + +DataNode CamShot::OnClearCrowdChars(DataArray* da){ + int idx = da->Int(2); + MILO_ASSERT(idx < mCrowds.size(), 0xC82); + mCrowds[idx].ClearCrowdChars(); + return DataNode(0); +} + +DataNode CamShot::OnAddCrowdChars(DataArray* da){ + int idx = da->Int(2); + MILO_ASSERT(idx < mCrowds.size(), 0xC8A); + mCrowds[idx].AddCrowdChars(); + return DataNode(0); +} + +DataNode CamShot::OnSetCrowdChars(DataArray* da){ + int idx = da->Int(2); + MILO_ASSERT(idx < mCrowds.size(), 0xC92); + mCrowds[idx].SetCrowdChars(); + return DataNode(0); +} + +DataNode CamShot::OnRadio(DataArray* da){ + int i2 = da->Int(2); + int i3 = da->Int(3); + if(mFlags & i2){ + mFlags = mFlags & ~i3 | i2; + } + return DataNode(0); +} + BEGIN_CUSTOM_PROPSYNC(CamShotCrowd) + SYNC_PROP_MODIFY_ALT(crowd, o.mCrowd, o.OnCrowdChanged()) + SYNC_PROP(crowd_rotate, o.mCrowdRotate) END_CUSTOM_PROPSYNC BEGIN_CUSTOM_PROPSYNC(CamShotFrame) + SYNC_PROP(duration, o.mDuration) + SYNC_PROP(blend, o.mBlend) + SYNC_PROP(blend_ease, o.mBlendEase) + SYNC_PROP_SET(blend_ease_mode, o.mBlendEaseMode, o.mBlendEaseMode = _val.Int(0)) + SYNC_PROP(screen_offset, o.mScreenOffset) + { + static Symbol _s("targets"); + if(sym == _s){ + o.OnSyncTargets(o.mTargets, _val, _prop, _i + 1, _op); + return true; + } + } + { + static Symbol _s("parent"); + if(sym == _s){ + o.OnSyncParent(o.mParent, _val, _prop, _i + 1, _op); + return true; + } + } + SYNC_PROP(focal_target, o.mFocusTarget) + SYNC_PROP_SET(use_parent_rotation, o.unk8bp1, o.unk8bp1 = _val.Int(0)) + SYNC_PROP_SET(parent_first_frame, o.unk8bp0, o.unk8bp0 = _val.Int(0)) + SYNC_PROP_SET(field_of_view, o.FieldOfView() * RAD2DEG, o.SetFieldOfView(_val.Float(0) * DEG2RAD)) END_CUSTOM_PROPSYNC #pragma push diff --git a/src/system/world/CameraShot.h b/src/system/world/CameraShot.h index 46f06f0e..63df400d 100644 --- a/src/system/world/CameraShot.h +++ b/src/system/world/CameraShot.h @@ -2,6 +2,7 @@ #define WORLD_CAMERASHOT_H #include "rndobj/Anim.h" #include "rndobj/TransAnim.h" +#include "rndobj/MultiMesh.h" #include "rndobj/Draw.h" #include "obj/ObjPtr_p.h" #include "obj/ObjVector.h" @@ -10,15 +11,36 @@ class CamShot; class Spotlight; class WorldCrowd; +// size 0x8c class CamShotFrame { public: CamShotFrame(Hmx::Object*); CamShotFrame(Hmx::Object*, const CamShotFrame&); void Load(BinStream&); - void SetFieldOfView(float); - void SetBlurDepth(float); - void SetMaxBlur(float); - void SetMinBlur(float); + bool OnSyncTargets(ObjPtrList&, DataNode&, DataArray*, int, PropOp); + bool OnSyncParent(ObjPtr&, DataNode&, DataArray*, int, PropOp); + bool HasTargets() const; + void GetCurrentTargetPosition(Vector3&) const; + void UpdateTarget() const; + void Interp(const CamShotFrame&, float, float, RndCam*); + bool SameTargets(const CamShotFrame&) const; + void BuildTransform(RndCam*, Transform&, bool) const; + const Vector2 MaxAngularOffset() const; + + float BlurDepth() const { return mBlurDepth * 0.0039215689f; } + float MaxBlur() const { return mMaxBlur * 0.0039215689f; } + float MinBlur() const { return mMinBlur * 0.0039215689f; } + float ZoomFieldOfView() const { return mZoomFOV * 0.012319971f; } + float FieldOfView() const { return mFOV * 0.012319971f; } + void SetZoomFieldOfView(float f){ mZoomFOV = f * 81.16902f; } + void SetFieldOfView(float f){ mFOV = f * 81.16902f; } + void SetBlurDepth(float f){ mBlurDepth = f * 255.0f; } + void SetMaxBlur(float f){ mMaxBlur = f * 255.0f; } + void SetMinBlur(float f){ mMinBlur = f * 255.0f; } + void SetMaxAngularOffset(const Vector2& v){ + mMaxAngularOffsetX = v.x * 81.16902f; + mMaxAngularOffsetY = v.y * 81.16902f; + } float mDuration; // 0x0 float mBlend; // 0x4 @@ -28,18 +50,23 @@ class CamShotFrame { Vector2 mScreenOffset; // 0x24 float mShakeNoiseAmp; // 0x2c float mShakeNoiseFreq; // 0x30 - float unk34, unk38, unk3c; + Vector3 unk34; float mFocusBlurMultiplier; // 0x40 TransformNoScale unk44; ObjPtrList mTargets; // 0x58 CamShot* unk68; ObjPtr mParent; // 0x6c - int unk74; ObjPtr mFocusTarget; // 0x78 - char unk84, unk85, unk86, unk87, unk88; - short unk89; - char unk8a, unk8b; - // mBlendEaseMode: 0x8b >> 2 + mutable unsigned char mFOV; // 0x84 + mutable char mZoomFOV; // 0x85 + mutable unsigned char mBlurDepth; // 0x86 + unsigned char mMaxBlur; // 0x87 + unsigned char mMinBlur; // 0x88 + unsigned char mMaxAngularOffsetX; // 0x89 + unsigned char mMaxAngularOffsetY; // 0x8a + unsigned char mBlendEaseMode : 6; // 0x8b >> 2 & 1 + unsigned char unk8bp1 : 1; + unsigned char unk8bp0 : 1; // mUseParentNotation: 0x8b >> 1 & 1 // mParentFirstFrame: 0x8b & 1 // mFieldOfView: 0x84, lensMM, lensPreset @@ -51,17 +78,33 @@ inline BinStream& operator>>(BinStream& bs, CamShotFrame& csf){ return bs; } +// size 0x1c class CamShotCrowd { public: CamShotCrowd(Hmx::Object*); CamShotCrowd(Hmx::Object*, const CamShotCrowd&); - ObjPtr mCrowd; - int mCrowdRotate; + void Set3DCrowd(); + void Load(BinStream&); + void ClearCrowdChars(); + void AddCrowdChars(); + void SetCrowdChars(); + void OnCrowdChanged(); + void ClearCrowdList(); + void GetSelectedCrowd(std::list::iterator> >&); + void AddCrowdChars(std::list::iterator> >&); + + ObjPtr mCrowd; // 0x0 + int mCrowdRotate; // 0xc std::vector > unk10; // 0x10 CamShot* unk18; // 0x18 }; +inline BinStream& operator>>(BinStream& bs, CamShotCrowd& csc){ + csc.Load(bs); + return bs; +} + class CamShot : public RndAnimatable { public: CamShot(); @@ -81,15 +124,44 @@ class CamShot : public RndAnimatable { virtual float EndFrame(); virtual Hmx::Object* AnimTarget(); virtual void ListAnimChildren(std::list&) const; - virtual void SetPreFrame(float, float); + virtual void SetPreFrame(float, float){} virtual void CurrentShot(){} virtual bool CheckShotStarted(); virtual bool CheckShotOver(float); void CacheFrames(); + void DoHide(); void UnHide(); + bool ShotOk(CamShot*); + bool PlatformOk() const; + int Disabled() const { return mDisabled; } + int Flags() const { return mFlags; } + float GetDurationSeconds() const; + RndCam* GetCam(); + void SetShotOver(); + bool SetPos(CamShotFrame&, RndCam*); + void Shake(float, float, const Vector2&, Vector3&, Vector3&); + void Disable(bool, int); + + DataNode OnHasTargets(DataArray*); + DataNode OnSetPos(DataArray*); + DataNode OnSetCrowdChars(DataArray*); + DataNode OnAddCrowdChars(DataArray*); + DataNode OnClearCrowdChars(DataArray*); + DataNode OnGetOccluded(DataArray*); + DataNode OnSetAllCrowdChars3D(DataArray*); + DataNode OnRadio(DataArray*); DECLARE_REVS; + NEW_OBJ(CamShot); + NEW_OVERLOAD; + DELETE_OVERLOAD; + + static void Init(); + static void Register(){ + REGISTER_OBJ_FACTORY(CamShot) + } + static Hmx::Object* sAnimTarget; ObjVector mKeyFrames; // 0x10 int mLoopKeyframe; // 0x1c @@ -111,8 +183,8 @@ class CamShot : public RndAnimatable { ObjPtrList mPostProcOverrides; // 0x8c ObjVector mCrowds; // 0x9c ObjPtr mGlowSpot; // 0xa8 - std::vector unkb4; - std::vector unkbc; + std::vector unkb4; + std::vector unkbc; Vector3 unkc4; Vector3 unkd0; Vector3 unkdc; @@ -128,12 +200,12 @@ class CamShot : public RndAnimatable { bool mUseDepthOfField : 1; // 0x120 >> 6 & 1 bool mPS3PerPixel : 1; // 0x120 >> 5 & 1 bool unk120p4 : 1; - bool unk120p3 : 1; - bool unk120p2 : 1; + bool mShotOver : 1; // 0x120 >> 3 & 1 + bool mHidden : 1; // 0x120 >> 2 & 1 bool unk120p1 : 1; bool unk120p0 : 1; - - static void Init(); }; +void LoadDrawables(BinStream&, std::vector&, ObjectDir*); + #endif diff --git a/src/system/world/Crowd.cpp b/src/system/world/Crowd.cpp index ac36eb94..a7ebbfa1 100644 --- a/src/system/world/Crowd.cpp +++ b/src/system/world/Crowd.cpp @@ -1,5 +1,39 @@ #include "world/Crowd.h" +#include "utl/Symbols.h" -WorldCrowd::WorldCrowd() : unk28(this), unk34(this), unk64(this), unk70(this), unk7c(this) { +RndCam* gImpostorCamera; +RndMat* gImpostorMat; +int gNumCrowd; -} \ No newline at end of file +INIT_REVS(WorldCrowd) + +WorldCrowd::WorldCrowd() : mPlacementMesh(this), mCharacters(this), mEnviron(this), mEnviron3D(this), mFocus(this) { + +} + +WorldCrowd::CharData::CharData(Hmx::Object* o) : mDef(o), mMMesh(0) { + +} + +void WorldCrowd::CharData::Load(BinStream& bs){ mDef.Load(bs); } + +WorldCrowd::CharDef::CharDef(Hmx::Object* o) : mChar(o, 0), mHeight(75.0f), mDensity(1.0f), mRadius(10.0f), unk18(0), unk1c(o, kObjListNoNull) {} + +void WorldCrowd::CharDef::Load(BinStream& bs){ + bs >> mChar; + bs >> mHeight; + bs >> mDensity; + if(WorldCrowd::gRev > 1) bs >> mRadius; + if(WorldCrowd::gRev > 8) bs >> unk18; +} + +BEGIN_HANDLERS(WorldCrowd) + HANDLE(rebuild, OnRebuild) + HANDLE_ACTION(assign_random_colors, AssignRandomColors()) + HANDLE(iterate_frac, OnIterateFrac) + HANDLE_ACTION(set_fullness, SetFullness(_msg->Float(2), _msg->Float(3))) + HANDLE_SUPERCLASS(RndDrawable) + HANDLE_SUPERCLASS(RndPollable) + HANDLE_SUPERCLASS(Hmx::Object) + HANDLE_CHECK(0x6FF) +END_HANDLERS \ No newline at end of file diff --git a/src/system/world/Crowd.h b/src/system/world/Crowd.h index e2ab92d3..2ec65419 100644 --- a/src/system/world/Crowd.h +++ b/src/system/world/Crowd.h @@ -4,9 +4,36 @@ #include "rndobj/Poll.h" #include "rndobj/Mesh.h" #include "rndobj/Env.h" +#include "char/Character.h" class WorldCrowd : public RndDrawable, public RndPollable { public: + + class CharDef { + public: + CharDef(Hmx::Object*); + void Load(BinStream&); + + ObjPtr mChar; // 0x0 + float mHeight; // 0xc + float mDensity; // 0x10 + float mRadius; // 0x14 + bool unk18; // 0x18 - use random color? + ObjPtrList unk1c; // 0x1c + }; + + class CharData { + public: + CharData(Hmx::Object*); + void Load(BinStream&); + + CharDef mDef; // 0x0 + RndMultiMesh* mMMesh; // 0x2c + std::list mBackup; // 0x30 + std::vector m3DChars; // 0x38 + std::vector m3DCharsCreated; // 0x40 + }; + WorldCrowd(); OBJ_CLASSNAME(WorldCrowd); OBJ_SET_TYPE(WorldCrowd); @@ -29,7 +56,15 @@ class WorldCrowd : public RndDrawable, public RndPollable { virtual void Exit(); void CleanUpCrowdFloor(); + int GetModifyStamp() const { return unk88; } + void Set3DCharList(const std::vector >&, Hmx::Object*); + void AssignRandomColors(); + void SetFullness(float, float); + + DataNode OnRebuild(DataArray*); + DataNode OnIterateFrac(DataArray*); + DECLARE_REVS; NEW_OVERLOAD; DELETE_OVERLOAD; NEW_OBJ(WorldCrowd) @@ -37,22 +72,22 @@ class WorldCrowd : public RndDrawable, public RndPollable { REGISTER_OBJ_FACTORY(WorldCrowd) } - ObjPtr unk28; - ObjList unk34; - int unk40; - int unk44; - int unk48; - int unk4c; - int unk50; - bool unk54; - bool unk55; - float unk58; - float unk5c; - int unk60; - ObjPtr unk64; - ObjPtr unk70; - ObjPtr unk7c; - int unk88; + ObjPtr mPlacementMesh; // 0x28 + ObjList mCharacters; // 0x34 + int mNum; // 0x40 + int unk44; // 0x44 + int unk48; // 0x48 + int unk4c; // 0x4c + int unk50; // 0x50 + bool mForce3DCrowd; // 0x54 + bool mShow3DOnly; // 0x55 + float unk58; // 0x58 + float unk5c; // 0x5c + int mLod; // 0x60 + ObjPtr mEnviron; // 0x64 + ObjPtr mEnviron3D; // 0x70 + ObjPtr mFocus; // 0x7c + int unk88; // 0x88 }; #endif diff --git a/src/system/world/Dir.cpp b/src/system/world/Dir.cpp index 3547b6b9..c7f5ff8d 100644 --- a/src/system/world/Dir.cpp +++ b/src/system/world/Dir.cpp @@ -39,6 +39,7 @@ void WorldDir::Init(){ } WorldDir::~WorldDir(){ + delete mFakeHudDir; delete mGlowMat; SpotlightDrawer::sCurrent->ClearLights(); if(TheWorld == this) SetTheWorld(0); @@ -62,10 +63,7 @@ void WorldDir::Enter(){ } void WorldDir::ClearDeltas(){ - mDeltaSincePoll[0] = 0; - mDeltaSincePoll[1] = 0; - mDeltaSincePoll[2] = 0; - mDeltaSincePoll[3] = 0; + for(int i = 0; i < 4; i++) mDeltaSincePoll[i] = 0; } void WorldDir::AccumulateDeltas(float* f){ @@ -291,9 +289,15 @@ void WorldDir::SyncObjects(){ mDrawItr = mDraws.begin(); } +CamShotCrowd* FindCrowd(ObjVector& vec, WorldCrowd* crowd){ + for(ObjVector::iterator it = vec.begin(); it != vec.end(); it++){ + if(crowd == (*it).mCrowd) return it; + } + return vec.end(); +} + void WorldDir::SetCrowds(ObjVector& crowdvec){ bool b = false; - // ObjPtrList mCrowds; // 0x23c for(ObjPtrList::iterator it = mCrowds.begin(); it != mCrowds.end(); ++it){ } @@ -328,6 +332,81 @@ void WorldDir::SyncBitmaps(bool b){ } } +void WorldDir::SyncMats(bool b){ + for(ObjList::iterator it = mMatOverrides.begin(); it != mMatOverrides.end(); it++){ + (*it).Sync(b); + } +} + +void WorldDir::SyncPresets(bool b){ + for(ObjList::iterator it = mPresetOverrides.begin(); it != mPresetOverrides.end(); it++){ + (*it).Sync(b); + } +} + +void WorldDir::SyncCamShots(bool b){ + for(ObjPtrList::iterator it = mCamShotOverrides.begin(); it != mCamShotOverrides.end(); it++){ + (*it)->Disable(b, 1); + } +} + +void WorldDir::BitmapOverride::Sync(bool b){ + if(original && replacement){ + if(b){ + std::vector texrefs; + { + MemDoTempAllocations m(true, false); + texrefs = replacement->Refs(); + } + for(std::vector::reverse_iterator rit = texrefs.rbegin(); rit != texrefs.rend(); rit++){ + ObjRef* ref = *rit; + Hmx::Object* owner = ref->RefOwner(); + if(owner){ + if(owner->Dir() != replacement->Dir()){ + ref->Replace(original, replacement); + } + } + } + } + else { + std::vector texrefs; + { + MemDoTempAllocations m(true, false); + texrefs = replacement->Refs(); + } + for(std::vector::reverse_iterator rit = texrefs.rbegin(); rit != texrefs.rend(); rit++){ + ObjRef* ref = *rit; + if(ref->RefOwner()){ + if(ref->RefOwner()->Dir() != replacement->Dir()){ + ref->Replace(replacement, original); + } + } + } + } + } +} + +void WorldDir::MatOverride::Sync(bool b){ + if(mat && mesh){ + if(b){ + mat2 = mesh->mMat; + mesh->SetMat(mat); + } + else if(mat2){ + mesh->SetMat(mat2); + } + } +} + +void WorldDir::PresetOverride::Sync(bool b){ + if(preset){ + LightHue* thehue; + if(b) thehue = hue; + else thehue = 0; + preset->SetHue(thehue); + } +} + BEGIN_HANDLERS(WorldDir) if(mEchoMsgs && !_warn) MILO_LOG("World msg: %s\n", sym); HANDLE_MEMBER(mCameraManager) diff --git a/src/system/world/Dir.h b/src/system/world/Dir.h index 3c8900ee..ff70e9b9 100644 --- a/src/system/world/Dir.h +++ b/src/system/world/Dir.h @@ -33,11 +33,12 @@ class WorldDir : public PanelDir { class MatOverride { public: - MatOverride(Hmx::Object* o) : mesh(o), mat(o) {} + MatOverride(Hmx::Object* o) : mesh(o), mat(o), mat2(o) {} void Sync(bool); ObjPtr mesh; // 0x0 ObjPtr mat; // 0xc + ObjPtr mat2; // 0x18 }; WorldDir(); @@ -106,8 +107,16 @@ class WorldDir : public PanelDir { }; BinStream& operator>>(BinStream&, WorldDir::BitmapOverride&); -BinStream& operator>>(BinStream&, WorldDir::PresetOverride&); -BinStream& operator>>(BinStream&, WorldDir::MatOverride&); + +inline BinStream& operator>>(BinStream& bs, WorldDir::MatOverride& o){ + bs >> o.mesh >> o.mat; + return bs; +} + +inline BinStream& operator>>(BinStream& bs, WorldDir::PresetOverride& o){ + bs >> o.preset >> o.hue; + return bs; +} extern WorldDir* TheWorld; void SetTheWorld(WorldDir*); diff --git a/src/system/world/FreeCamera.cpp b/src/system/world/FreeCamera.cpp index 729c06d1..439c26fe 100644 --- a/src/system/world/FreeCamera.cpp +++ b/src/system/world/FreeCamera.cpp @@ -2,8 +2,9 @@ #include "obj/Data.h" #include "rndobj/DOFProc.h" #include "rndobj/Trans.h" -#include "utl/Symbols.h" #include "math/Rot.h" +#include "world/Dir.h" +#include "utl/Symbols.h" FreeCamera::FreeCamera(WorldDir* dir, float f1, float f2, int i) : mParent(0), mFrozen(0), mPadNum(i), mRotateRate(f1), mSlewRate(f2), mUseParentRotateX(1), mUseParentRotateY(1), mUseParentRotateZ(1), mWorld(dir) { @@ -15,7 +16,12 @@ FreeCamera::~FreeCamera(){ } void FreeCamera::UpdateFromCamera(){ - TheDOFProc->FocalPlane(); + RndCam* cam = mWorld->GetCam(); + mFov = cam->YFov(); + mXfm = cam->WorldXfm(); + MakeEuler(mXfm.m, mRot); + mParent = 0; + mFocalPlane = TheDOFProc->FocalPlane(); } void FreeCamera::SetParentDof(bool b1, bool b2, bool b3){ @@ -34,7 +40,7 @@ void FreeCamera::Poll(){ BEGIN_HANDLERS(FreeCamera) HANDLE_ACTION(set_parent, mParent = _msg->Obj(2)) HANDLE_ACTION(set_pos, mXfm.v.Set(_msg->Float(2), _msg->Float(3), _msg->Float(4))) - HANDLE_ACTION(set_rot, Scale(Vector3(_msg->Float(2), _msg->Float(3), _msg->Float(4)), DEG2RAD, mRot)) + HANDLE_ACTION(set_rot, mRot.Set(_msg->Float(2) * DEG2RAD, _msg->Float(3) * DEG2RAD, _msg->Float(4) * DEG2RAD)) HANDLE_ACTION(set_parent_dof, SetParentDof(_msg->Int(2), _msg->Int(3), _msg->Int(4))) HANDLE_ACTION(set_frozen, mFrozen = _msg->Int(2)) HANDLE_CHECK(0xDC) diff --git a/src/system/world/FreeCamera.h b/src/system/world/FreeCamera.h index 50c9f837..8d7ed955 100644 --- a/src/system/world/FreeCamera.h +++ b/src/system/world/FreeCamera.h @@ -14,6 +14,7 @@ class FreeCamera : public Hmx::Object { void UpdateFromCamera(); void SetParentDof(bool, bool, bool); void Poll(); + void SetPadNum(int p){ mPadNum = p; } RndTransformable* mParent; // 0x1c Vector3 mRot; // 0x20 @@ -23,7 +24,7 @@ class FreeCamera : public Hmx::Object { int mPadNum; // 0x64 float mRotateRate; // 0x68 float mSlewRate; // 0x6c - int mFocalPlane; // 0x70 + float mFocalPlane; // 0x70 bool mUseParentRotateX; // 0x74 bool mUseParentRotateY; // 0x75 bool mUseParentRotateZ; // 0x76 diff --git a/src/system/world/LightHue.cpp b/src/system/world/LightHue.cpp index 02e989ae..19706fe8 100644 --- a/src/system/world/LightHue.cpp +++ b/src/system/world/LightHue.cpp @@ -1,5 +1,6 @@ #include "world/LightHue.h" #include "utl/Loader.h" +#include "utl/Symbols.h" INIT_REVS(LightHue) @@ -8,7 +9,7 @@ LightHue::LightHue() : mLoader(0), mPath(), mKeys() { } LightHue::~LightHue(){ - + delete mLoader; } BEGIN_COPYS(LightHue) @@ -28,12 +29,10 @@ BEGIN_LOADS(LightHue) END_LOADS void LightHue::PreLoad(BinStream& bs){ - char buf[0x100]; LOAD_REVS(bs); ASSERT_REVS(0, 0); LOAD_SUPERCLASS(Hmx::Object) - bs.ReadString(buf, 0x100); - mPath.SetRoot(buf); + bs >> mPath; if(bs.Cached()){ bs >> mKeys; } @@ -44,4 +43,30 @@ void LightHue::PreLoad(BinStream& bs){ void LightHue::PostLoad(BinStream& bs){ if(!bs.Cached()) Sync(); -} \ No newline at end of file +} + +void LightHue::TranslateColor(const Hmx::Color& col, Hmx::Color& res){ + if(!mKeys.empty()){ + float maxcol = Max(1.0f, Max(col.red, col.green, col.blue)); + Hmx::Color col30; + Multiply(col, 1.0f / maxcol, col30); + float h, s, l; + MakeHSL(col30, h, s, l); + Vector3 vec; + mKeys.AtFrame(h, vec); + float clamped = Clamp(0.0f, 1.0f, l * vec.z * 2.0f); + MakeColor(vec.x, s * vec.y, clamped, res); + Multiply(res, maxcol, res); + } + else res = col; +} + +BEGIN_HANDLERS(LightHue) + HANDLE(save_default, OnSaveDefault) + HANDLE_SUPERCLASS(Hmx::Object) + HANDLE_CHECK(0x97) +END_HANDLERS + +BEGIN_PROPSYNCS(LightHue) + SYNC_PROP_MODIFY_ALT(path, mPath, Sync()) +END_PROPSYNCS \ No newline at end of file diff --git a/src/system/world/LightHue.h b/src/system/world/LightHue.h index 1f9fd7ad..b1ab8764 100644 --- a/src/system/world/LightHue.h +++ b/src/system/world/LightHue.h @@ -20,12 +20,14 @@ class LightHue : public Hmx::Object { virtual void PostLoad(BinStream&); void Sync(); + void TranslateColor(const Hmx::Color&, Hmx::Color&); + DataNode OnSaveDefault(DataArray*); DECLARE_REVS - FileLoader* mLoader; - FilePath mPath; - Keys mKeys; + FileLoader* mLoader; // 0x1c + FilePath mPath; // 0x20 + Keys mKeys; // 0x2c NEW_OVERLOAD; DELETE_OVERLOAD; diff --git a/src/system/world/LightPreset.cpp b/src/system/world/LightPreset.cpp index fb28820b..6890b67e 100644 --- a/src/system/world/LightPreset.cpp +++ b/src/system/world/LightPreset.cpp @@ -1,7 +1,888 @@ #include "world/LightPreset.h" #include "world/Spotlight.h" +#include "world/SpotlightDrawer.h" +#include "world/LightHue.h" +#include "rndobj/Env.h" +#include +#include "utl/Symbols.h" +#include "utl/Messages.h" + +INIT_REVS(LightPreset) +LightPreset* gEditPreset; +std::deque > LightPreset::sManualEvents; + +float ComputeSpotBlend(int i, float f){ + int min = Min(f * 5.0f, 4); + if(i % 5 < min) return 1.0f; + else if(min < i % 5) return 0.0f; + else { + return Min(Max((f - i / 5.0f) * 5.0f, 0.0f), 1.0f); + } +} + +LightPreset::KeyframeCmd SymToPstKeyframe(Symbol s){ + if(s == next) return LightPreset::kPresetKeyframeNext; + else if(s == prev) return LightPreset::kPresetKeyframePrev; + else if(s == first) return LightPreset::kPresetKeyframeFirst; + else return LightPreset::kPresetKeyframeNum; +} LightPreset::LightPreset() : mKeyframes(this), mPlatformOnly(0), mSelectTriggers(this, kObjListNoNull), mLegacyFadeIn(0.0f), mLooping(0), mManual(0), mLocked(0), - unk5c(this), unk80(0), unk84(-1.0f), unk88(0.0f), unk8c(0.0f), unk90(0), unk94(-1), unk98(0.0f), unk9c(0.0f), mHue(0) { + mSpotlightState(this), mLastKeyframe(0), mLastBlend(-1.0f), mStartBeat(0.0f), mManualFrameStart(0.0f), mManualFrame(0), mLastManualFrame(-1), mManualFadeTime(0.0f), mCachedDuration(0.0f), mHue(0) { + +} + +bool LightPreset::PlatformOk() const { + if(TheLoadMgr.EditMode() || !mPlatformOnly || TheLoadMgr.GetPlatform() == kPlatformNone){ + return true; + } + else { + Platform plat = TheLoadMgr.GetPlatform(); + if(TheLoadMgr.GetPlatform() == kPlatformPC){ + plat = kPlatformXBox; + } + return plat == mPlatformOnly; + } +} + +#pragma push +#pragma dont_inline on +LightPreset::~LightPreset(){ Clear(); } +#pragma pop + +void LightPreset::ResetEvents(){ + sManualEvents.clear(); +} + +#pragma push +#pragma dont_inline on +void LightPreset::Clear(){ + mKeyframes.clear(); + for(int i = 0; i != mSpotlights.size(); i++) mSpotlights[i]->Release(this); + mSpotlights.clear(); + for(int i = 0; i != mEnvironments.size(); i++) mEnvironments[i]->Release(this); + mEnvironments.clear(); + for(int i = 0; i != mLights.size(); i++) mLights[i]->Release(this); + for(int i = 0; i != mSpotlightDrawers.size(); i++) mSpotlightDrawers[i]->Release(this); + mLights.clear(); +} +#pragma pop + +BEGIN_COPYS(LightPreset) + COPY_SUPERCLASS(Hmx::Object) + COPY_SUPERCLASS(RndAnimatable) + CREATE_COPY(LightPreset) + BEGIN_COPYING_MEMBERS + Clear(); + COPY_MEMBER(mKeyframes) + COPY_MEMBER(mSpotlights) + for(int i = 0; i != mSpotlights.size(); i++){ + mSpotlights[i]->AddRef(this); + } + COPY_MEMBER(mEnvironments) + for(int i = 0; i != mEnvironments.size(); i++){ + mEnvironments[i]->AddRef(this); + } + COPY_MEMBER(mLights) + for(int i = 0; i != mLights.size(); i++){ + mLights[i]->AddRef(this); + } + COPY_MEMBER(mSpotlightDrawers) + for(int i = 0; i != mSpotlightDrawers.size(); i++){ + mSpotlightDrawers[i]->AddRef(this); + } + mSpotlightState.resize(mSpotlights.size()); + mEnvironmentState.resize(mEnvironments.size()); + mLightState.resize(mLights.size()); + mSpotlightDrawers.resize(mSpotlightDrawers.size()); + COPY_MEMBER(mLooping) + COPY_MEMBER(mCategory) + COPY_MEMBER(mSelectTriggers) + COPY_MEMBER(mLegacyFadeIn) + COPY_MEMBER(mManual) + COPY_MEMBER(mLocked) + COPY_MEMBER(mPlatformOnly) + CacheFrames(); + END_COPYING_MEMBERS +END_COPYS + +void LightPreset::Save(BinStream& bs){ + MILO_FAIL("Attempting to save in Wii"); +} + +#pragma push +#pragma dont_inline on +BEGIN_LOADS(LightPreset) + AutoLoading al; + Clear(); + LOAD_REVS(bs) + ASSERT_REVS(0x15, 0) + LOAD_SUPERCLASS(Hmx::Object) + if(gRev != 0xE){ + LOAD_SUPERCLASS(RndAnimatable); + bs >> mKeyframes; + } + else { + mKeyframes.resize(1); + mKeyframes[0].LoadP9(bs); + } + char buf[0x80]; + unsigned int spotlightcount; + bs >> spotlightcount; + mSpotlights.resize(spotlightcount); + for(int i = 0; i != mSpotlights.size(); i++){ + bs.ReadString(buf, 0x80); + mSpotlights[i] = Dir()->Find(buf, false); + if(mSpotlights[i]) mSpotlights[i]->AddRef(this); + } + unsigned int envcount; + bs >> envcount; + mEnvironments.resize(envcount); + for(int i = 0; i != mEnvironments.size(); i++){ + bs.ReadString(buf, 0x80); + mEnvironments[i] = Dir()->Find(buf, false); + if(mEnvironments[i]) mEnvironments[i]->AddRef(this); + } + unsigned int lightcount; + bs >> lightcount; + mLights.resize(lightcount); + for(int i = 0; i != mLights.size(); i++){ + bs.ReadString(buf, 0x80); + mLights[i] = Dir()->Find(buf, false); + if(mLights[i]) mLights[i]->AddRef(this); + } + if(gRev < 5){ + bool b; + bs >> b; + if(b){ + Keyframe k(this); + bs >> k; + } + } + if(gRev != 0xE) bs >> mLooping; + bs >> mCategory; + if(gRev != 0xE && gRev < 0x11){ + std::vector symvec; + bs >> symvec; + if(symvec.size() != 0){ + if(symvec[0] != ""){ + mCategory = symvec[0]; + } + } + } + String str(mCategory.Str()); + str.ToLower(); + mCategory = Symbol(str.c_str()); + if(gRev < 7){ + String str154; + bs >> str154; + if(!str154.empty()){ + MILO_WARN("%s: %s", Name(), str154); + } + } + else if(gRev < 0x15){ + ObjPtr trigPtr(this, 0); + bs >> trigPtr; + if(trigPtr) mSelectTriggers.push_back(trigPtr); + } + else bs >> mSelectTriggers; + if(gRev < 5){ + String strdummy; bs >> strdummy; + } + if(gRev != 0xE){ + bs >> mLegacyFadeIn; + int dummy; + if(gRev != 0 && gRev < 0x11) bs >> dummy; + if(gRev - 3 < 0xE) bs >> dummy; + } + if(gRev > 3){ + if(gRev != 0xE) bs >> mManual; + bs >> mLocked; + } + if(gRev > 0xC) bs >> mPlatformOnly; + if(gRev > 9){ + unsigned int sdrawercount; + bs >> sdrawercount; + mSpotlightDrawers.resize(sdrawercount); + for(int i = 0; i != mSpotlightDrawers.size(); i++){ + bs.ReadString(buf, 0x80); + mSpotlightDrawers[i] = Dir()->Find(buf, false); + if(mSpotlightDrawers[i]) mSpotlightDrawers[i]->AddRef(this); + } + } + if(gRev == 0xB){ + int dummy; + for(int i = 0; i < 8; i++) bs >> dummy; + } + mSpotlightState.resize(mSpotlights.size()); + mEnvironmentState.resize(mEnvironments.size(), EnvironmentEntry()); + mLightState.resize(mLights.size(), EnvLightEntry()); + mSpotlightDrawerState.resize(mSpotlightDrawers.size(), SpotlightDrawerEntry()); + for(int i = 0; i != mSpotlights.size(); i++){ + if(!mSpotlights[i] || !mSpotlights[i]->GetAnimateFromPreset()){ + RemoveSpotlight(i); + i--; + } + } + for(int i = 0; i != mEnvironments.size(); i++){ + if(!mEnvironments[i] || !mEnvironments[i]->GetAnimateFromPreset()){ + RemoveEnvironment(i); + i--; + } + } + for(int i = 0; i != mLights.size(); i++){ + if(!mLights[i] || !mLights[i]->GetAnimateFromPreset()){ + RemoveLight(i); + i--; + } + } + for(int i = 0; i != mSpotlightDrawers.size(); i++){ + if(!mSpotlightDrawers[i]){ + RemoveSpotlightDrawer(i); + i--; + } + } + SyncNewSpotlights(); + CacheFrames(); + sLoading = 0; +END_LOADS +#pragma pop + +int LightPreset::GetCurrentKeyframe() const { + if(mManual) return mManualFrame; + else if(mKeyframes.empty()) return -1; + else { + int i; + int ret; + float f; + GetKey(GetFrame(), i, ret, f); + return ret; + } +} + +RndPostProc* LightPreset::GetCurrentPostProc() const { + RndPostProc* ret = 0; + int frame = GetCurrentKeyframe(); + if(frame >= 0) ret = mKeyframes[frame].mVideoVenuePostProc; + return ret; +} + +void LightPreset::RemoveSpotlight(int idx){ + for(int i = 0; i != mKeyframes.size(); i++){ + Keyframe& cur = mKeyframes[i]; + cur.mSpotlightEntries.erase(cur.mSpotlightEntries.begin() + idx); + } + mSpotlightState.erase(mSpotlightState.begin() + idx); + if(mSpotlights[idx]){ + mSpotlights[idx]->Release(this); + } + mSpotlights.erase(mSpotlights.begin() + idx); +} + +void LightPreset::RemoveEnvironment(int idx){ + for(int i = 0; i != mKeyframes.size(); i++){ + Keyframe& cur = mKeyframes[i]; + cur.mEnvironmentEntries.erase(cur.mEnvironmentEntries.begin() + idx); + } + mEnvironmentState.erase(mEnvironmentState.begin() + idx); + if(mEnvironments[idx]){ + mEnvironments[idx]->Release(this); + } + mEnvironments.erase(mEnvironments.begin() + idx); +} + +void LightPreset::RemoveLight(int idx){ + for(int i = 0; i != mKeyframes.size(); i++){ + Keyframe& cur = mKeyframes[i]; + cur.mLightEntries.erase(cur.mLightEntries.begin() + idx); + } + mLightState.erase(mLightState.begin() + idx); + if(mLights[idx]){ + mLights[idx]->Release(this); + } + mLights.erase(mLights.begin() + idx); +} + +void LightPreset::RemoveSpotlightDrawer(int idx){ + for(int i = 0; i != mKeyframes.size(); i++){ + Keyframe& cur = mKeyframes[i]; + cur.mSpotlightDrawerEntries.erase(cur.mSpotlightDrawerEntries.begin() + idx); + } + mSpotlightDrawerState.erase(mSpotlightDrawerState.begin() + idx); + if(mSpotlightDrawers[idx]){ + mSpotlightDrawers[idx]->Release(this); + } + mSpotlightDrawers.erase(mSpotlightDrawers.begin() + idx); +} + +void LightPreset::StartAnim(){ + mManualFrame = 0; + mLastManualFrame = -1; + mManualFrameStart = 0; + mManualFadeTime = 0; + mStartBeat = TheTaskMgr.Beat(); + mLastKeyframe = 0; + mLastBlend = -1.0f; + Handle(start_anim_msg, false); + for(ObjPtrList::iterator it = mSelectTriggers.begin(); it != mSelectTriggers.end(); ++it){ + (*it)->Trigger(); + } +} + +void LightPreset::SetFrame(float frame, float blend){ + SetFrameEx(frame, blend, false); +} + +void LightPreset::SetFrameEx(float frame, float blend, bool b){ + START_AUTO_TIMER("light"); +} + +void LightPreset::OnKeyframeCmd(LightPreset::KeyframeCmd cmd){ + sManualEvents.push_back(std::pair(cmd, TheTaskMgr.Beat() + 4.0f)); +} + +int LightPreset::NextManualFrame(LightPreset::KeyframeCmd cmd) const { + int frame; + if(cmd == kPresetKeyframeFirst){ + frame = 0; + } + else { + frame = mManualFrame + (cmd == kPresetKeyframeNext ? 1 : -1); + } + if(mLooping){ + return frame % mKeyframes.size(); + } + else { + return Max(0, Min(frame, mKeyframes.size() - 1)); + } +} + +void LightPreset::AdvanceManual(LightPreset::KeyframeCmd cmd){ + MILO_ASSERT(mManual, 0x330); + if(cmd != kPresetKeyframeFirst || mManualFrame){ + mManualFrameStart = GetFrame(); + mLastManualFrame = mManualFrame; + mManualFrame = NextManualFrame(cmd); + } +} + +void LightPreset::GetKey(float frame, int& iref1, int& iref2, float& fref) const { + float theframe = frame; + if(theframe <= 0.0f || mCachedDuration <= 0.0f){ + iref1 = -1; + iref2 = 0; + fref = 1.0f; + return; + } + else { + if(mLooping){ + float theframe = std::fmod(frame, mCachedDuration); + if(mKeyframes.back().mFrame <= frame){ + if(mKeyframes.back().mFadeOutTime <= 0.0f){ + iref1 = -1; + iref2 = mKeyframes.size() - 1; + fref = 1.0f; + return; + } + float framedur = mKeyframes.back().mFrame + mKeyframes.back().mDuration; + if(framedur < theframe){ + MILO_ASSERT(mKeyframes.back().mFadeOutTime > 0, 0x358); + iref1 = mKeyframes.size() - 1; + iref2 = 0; + fref = (theframe - framedur) / mKeyframes.back().mFadeOutTime; + return; + } + iref1 = -1; + iref2 = mKeyframes.size() - 1; + fref = 1.0f; + return; + } + } + else if(mKeyframes.back().mFrame <= frame){ + iref1 = -1; + iref2 = mKeyframes.size() - 1; + fref = 1.0f; + return; + } + int cap = mKeyframes.size() - 1; + int i; + for(i = 0; i + 1 < cap - 1; i){ + i = (i + cap) >> 1; + const Keyframe& kf = mKeyframes[i]; + if(theframe == kf.mFrame){ + iref1 = -1; + iref2 = i; + fref = 1.0f; + return; + } + if(theframe <= kf.mFrame){ + cap = i; + } + } + if(mKeyframes[i].mFrame <= theframe){ + mKeyframes[cap]; + } + float dur = mKeyframes[i].mFrame + mKeyframes[i].mDuration; + if(theframe > dur){ + mKeyframes[i]; + iref1 = i; + iref2 = cap; + fref = (theframe - dur) / mKeyframes[i].mFadeOutTime; + } + else { + iref1 = -1; + iref2 = i; + fref = 1.0f; + } + } +} + +void LightPreset::ApplyState(const LightPreset::Keyframe& k){ + mSpotlightState = k.mSpotlightEntries; + mEnvironmentState = k.mEnvironmentEntries; + mLightState = k.mLightEntries; + mSpotlightDrawerState = k.mSpotlightDrawerEntries; +} + +void LightPreset::Animate(float f){ + if(f < 1.1920929E-7f) return; + MILO_ASSERT(mSpotlights.size() == mSpotlightState.size(), 0x3CD); + for(int i = 0; i != mSpotlights.size(); i++){ + if(mSpotlights[i]->GetAnimateFromPreset()){ + float blend = ComputeSpotBlend(i, f); + if(blend >= 1.1920929E-7f){ + AnimateSpotFromPreset(mSpotlights[i], mSpotlightState[i], blend); + } + } + } + MILO_ASSERT(mEnvironments.size() == mEnvironmentState.size(), 0x3DF); + for(int i = 0; i != mEnvironments.size(); i++){ + if(mEnvironments[i]->GetAnimateFromPreset()){ + AnimateEnvFromPreset(mEnvironments[i], mEnvironmentState[i], f); + } + } + MILO_ASSERT(mLights.size() == mLightState.size(), 1000); + for(int i = 0; i != mLights.size(); i++){ + if(mLights[i]->GetAnimateFromPreset()){ + AnimateLightFromPreset(mLights[i], mLightState[i], f); + } + } + MILO_ASSERT(mSpotlightDrawers.size() == mSpotlightDrawerState.size(), 0x3F1); + for(int i = 0; i != mSpotlightDrawers.size(); i++){ + AnimateSpotlightDrawerFromPreset(mSpotlightDrawers[i], mSpotlightDrawerState[i], f); + } +} + +void LightPreset::SetKeyframe(LightPreset::Keyframe& k){ + for(int i = 0; i != k.mSpotlightEntries.size(); i++){ + FillSpotPresetData(mSpotlights[i], k.mSpotlightEntries[i], -1); + } + for(int i = 0; i != k.mEnvironmentEntries.size(); i++){ + FillEnvPresetData(mEnvironments[i], k.mEnvironmentEntries[i]); + } + for(int i = 0; i != k.mLightEntries.size(); i++){ + FillLightPresetData(mLights[i], k.mLightEntries[i]); + } + for(int i = 0; i != k.mSpotlightDrawerEntries.size(); i++){ + FillSpotlightDrawerPresetData(mSpotlightDrawers[i], k.mSpotlightDrawerEntries[i]); + } +} + +void LightPreset::SyncNewSpotlights(){ + for(ObjDirItr it(Dir(), true); it != 0; ++it){ + Spotlight* key = it; + std::vector::iterator found = std::find(mSpotlights.begin(), mSpotlights.end(), key); + if(found == mSpotlights.end()){ + AddSpotlight(key, true); + } + } +} + +void LightPreset::SyncKeyframeTargets(){ + for(ObjDirItr it(Dir(), true); it != 0; ++it){ + Spotlight* key = it; + std::vector::iterator found = std::find(mSpotlights.begin(), mSpotlights.end(), key); + if(found == mSpotlights.end()) AddSpotlight(key, true); + } + for(ObjDirItr it(Dir(), true); it != 0; ++it){ + RndEnviron* key = it; + std::vector::iterator found = std::find(mEnvironments.begin(), mEnvironments.end(), key); + if(found == mEnvironments.end()) AddEnvironment(key); + for(ObjPtrList::iterator lit = key->mLightsReal.begin(); lit != key->mLightsReal.end(); ++it){ + RndLight* lkey = *lit; + std::vector::iterator lfound = std::find(mLights.begin(), mLights.end(), lkey); + if(lfound == mLights.end()) AddLight(lkey); + } + for(ObjPtrList::iterator lit = key->mLightsApprox.begin(); lit != key->mLightsApprox.end(); ++it){ + RndLight* lkey = *lit; + std::vector::iterator lfound = std::find(mLights.begin(), mLights.end(), lkey); + if(lfound == mLights.end()) AddLight(lkey); + } + } + for(ObjDirItr it(Dir(), true); it != 0; ++it){ + SpotlightDrawer* key = it; + std::vector::iterator found = std::find(mSpotlightDrawers.begin(), mSpotlightDrawers.end(), key); + if(found == mSpotlightDrawers.end()) AddSpotlightDrawer(key); + } + CacheFrames(); +} + +void LightPreset::AddSpotlight(Spotlight* s, bool b){ + s->AddRef(this); + mSpotlights.push_back(s); + SpotlightEntry e(this); + FillSpotPresetData(s, e, -1); + if(b){ + e.mIntensity = 0; + e.mColor = 0; + } + for(int i = 0; i != mKeyframes.size(); i++){ + mKeyframes[i].mSpotlightEntries.push_back(e); + MILO_ASSERT(mKeyframes[i].mSpotlightEntries.size() == mSpotlights.size(), 0x46E); + } + mSpotlightState.push_back(e); +} + +void LightPreset::AddEnvironment(RndEnviron* env){ + env->AddRef(this); + mEnvironments.push_back(env); + EnvironmentEntry e; + FillEnvPresetData(env, e); + for(int i = 0; i != mKeyframes.size(); i++){ + mKeyframes[i].mEnvironmentEntries.push_back(e); + MILO_ASSERT(mKeyframes[i].mEnvironmentEntries.size() == mEnvironments.size(), 0x47F); + } + mEnvironmentState.push_back(e); +} + +void LightPreset::AddLight(RndLight* lit){ + lit->AddRef(this); + mLights.push_back(lit); + EnvLightEntry e; + FillLightPresetData(lit, e); + for(int i = 0; i != mKeyframes.size(); i++){ + mKeyframes[i].mLightEntries.push_back(e); + MILO_ASSERT(mKeyframes[i].mLightEntries.size() == mLights.size(), 0x490); + } + mLightState.push_back(e); +} + +void LightPreset::AddSpotlightDrawer(SpotlightDrawer* sd){ + sd->AddRef(this); + mSpotlightDrawers.push_back(sd); + SpotlightDrawerEntry e; + FillSpotlightDrawerPresetData(sd, e); + for(int i = 0; i != mKeyframes.size(); i++){ + mKeyframes[i].mSpotlightDrawerEntries.push_back(e); + MILO_ASSERT(mKeyframes[i].mSpotlightDrawerEntries.size() == mSpotlightDrawers.size(), 0x4A1); + } + mSpotlightDrawerState.push_back(e); +} + +void LightPreset::TranslateColor(const Hmx::Color& col, Hmx::Color& res){ + if(mHue) mHue->TranslateColor(col, res); + else res = col; +} + +void LightPreset::FillEnvPresetData(RndEnviron* env, LightPreset::EnvironmentEntry& e){ + e.mColor = env->AmbientColor().Pack(); + e.mFogColor = env->FogColor().Pack(); + e.mFogEnable = env->FogEnable(); + e.mFogStart = env->GetFogStart(); + e.mFogEnd = env->GetFogEnd(); +} + +void LightPreset::FillSpotlightDrawerPresetData(SpotlightDrawer* sd, LightPreset::SpotlightDrawerEntry& e){ + e.mBaseIntensity = sd->mParams.mBaseIntensity; + e.mSmokeIntensity = sd->mParams.mSmokeIntensity; + e.mLightInfluence = sd->mParams.mLightingInfluence; + e.mTotalIntensity = sd->mParams.mIntensity; +} + +void LightPreset::AnimateSpotlightDrawerFromPreset(SpotlightDrawer* sd, const LightPreset::SpotlightDrawerEntry& e, float f){ + float val; + Interp(sd->mParams.mBaseIntensity, e.mBaseIntensity, f, val); + sd->mParams.mBaseIntensity = val; + Interp(sd->mParams.mSmokeIntensity, e.mSmokeIntensity, f, val); + sd->mParams.mSmokeIntensity = val; + Interp(sd->mParams.mLightingInfluence, e.mLightInfluence, f, val); + sd->mParams.mLightingInfluence = val; + Interp(sd->mParams.mIntensity, e.mTotalIntensity, f, val); + sd->mParams.mIntensity = val; +} + +void LightPreset::SetSpotlight(Spotlight* s, int data){ + int idx; + for(idx = 0; idx != mSpotlights.size(); idx++){ + if(mSpotlights[idx] == s) break; + } + if(idx == mSpotlights.size()) AddSpotlight(s, false); + for(int i = 0; i != mKeyframes.size(); i++){ + FillSpotPresetData(s, mKeyframes[i].mSpotlightEntries[idx], data); + } +} + +DataNode LightPreset::OnSetKeyframe(DataArray* da){ + if(mHue){ + MILO_WARN("Can't set keyframe with hue translation"); + return DataNode(0); + } + else { + int idx = da->Int(2); + SyncKeyframeTargets(); + SetKeyframe(mKeyframes[idx]); + return OnViewKeyframe(da); + } +} + +DataNode LightPreset::OnViewKeyframe(DataArray* da){ + ApplyState(mKeyframes[da->Int(2)]); + Animate(1.0f); + return DataNode(0); +} + +LightPreset::Keyframe::Keyframe(Hmx::Object* o) : mSpotlightEntries(o), mVideoVenuePostProc(o, 0), mTriggers(o, kObjListNoNull), mDuration(0), mFadeOutTime(0), mFrame(-1.0f) { + LightPreset* preset = dynamic_cast(o); + MILO_ASSERT(preset, 0x5FB); + mSpotlightEntries.resize(preset->mSpotlights.size()); + mEnvironmentEntries.resize(preset->mEnvironments.size()); + mLightEntries.resize(preset->mLights.size()); + mSpotlightDrawerEntries.resize(preset->mSpotlightDrawers.size()); + if(!sLoading) preset->SetKeyframe(*this); +} + +void LightPreset::Keyframe::LoadStageKit(BinStream& bs){ + int x; + for(int i = 0; i < 9; i++) bs >> x; +} + +void LightPreset::Keyframe::LoadP9(BinStream& bs){ + MILO_ASSERT(gRev == 14, 0x638); + String str; + bs >> str; + bs >> mSpotlightEntries; + bs >> mEnvironmentEntries; + bs >> mLightEntries; + bs >> mSpotlightDrawerEntries; + LoadStageKit(bs); +} + +void LightPreset::Keyframe::Load(BinStream& bs){ + MILO_ASSERT(gRev != 14, 0x64A); + bs >> mDuration; + bs >> mFadeOutTime; + bs >> mSpotlightEntries; + bs >> mEnvironmentEntries; + bs >> mLightEntries; + if(gRev > 5){ + String str; bs >> str; + } + if(gRev > 9) bs >> mSpotlightDrawerEntries; + if(gRev > 0x11) bs >> mVideoVenuePostProc; + if(gRev > 0x13) bs >> mTriggers; + if(gRev > 0xB) LoadStageKit(bs); +} + +LightPreset::SpotlightEntry::SpotlightEntry(Hmx::Object* o) : mIntensity(0), mColor(0), mFlareEnabled(1), mTarget(0) { + unk10.Reset(); +} + +void LightPreset::SpotlightEntry::Load(BinStream& bs){ + float intensity; + bs >> intensity; + mIntensity = intensity; + bs >> unk10; + Hmx::Color col; + bs >> col; + col.alpha = 1.0f; + mColor = col.Pack(); + ObjPtr tPtr(0, 0); + if(!tPtr.Load(bs, false, 0)) unk8p1 = 0; + if(gRev < 0x13){ + Symbol s; bs >> s; + } + mTarget = tPtr; + if(gRev > 1){ + bool b; bs >> b; + if(b) mFlareEnabled = true; + else mFlareEnabled = false; + if(gRev < 9){ int i; bs >> i; } + } + if(mTarget || !unk8p1){ + unk10.Set(0,0,0,0); + } +} + +void LightPreset::SpotlightEntry::CalculateDirection(Spotlight* s, Hmx::Quat& q) const { + q = unk10; + RndTransformable* target = mTarget; + Hmx::Matrix3 m38; + if(unk8p1 && target) s->CalculateDirection(target, m38); + Hmx::Quat qloc; + qloc.Set(m38); + q = qloc; +} + +LightPreset::EnvironmentEntry::EnvironmentEntry() : mFogEnable(0), mFogStart(0), mFogEnd(0) { + mColor = 0; + mFogColor = 0; +} + +void LightPreset::EnvironmentEntry::Load(BinStream& bs){ + Hmx::Color col; + bs >> col; + mColor = col.Pack(); + bs >> mFogEnable; + bs >> mFogStart; + bs >> mFogEnd; + bs >> col; + mFogColor = col.Pack(); +} + +bool LightPreset::EnvironmentEntry::operator!=(const LightPreset::EnvironmentEntry& e) const { + if(mFogEnable != e.mFogEnable) return true; + else if(mFogStart != e.mFogStart) return true; + else if(mFogEnd != e.mFogEnd) return true; + else if((unsigned int)mColor != (unsigned int)e.mColor) return true; + else return mFogColor != e.mFogColor; +} + +LightPreset::EnvLightEntry::EnvLightEntry() : mRange(0), mLightType(RndLight::kPoint) { + unk0.Reset(); + mPosition.Zero(); + mColor = 0; +} + +void LightPreset::EnvLightEntry::Load(BinStream& bs){ + bs >> unk0; + bs >> mPosition; + Hmx::Color col; + bs >> col; + mColor = col.Pack(); + bs >> mRange; + bs >> (int&)mLightType; +} + +bool LightPreset::EnvLightEntry::operator!=(const LightPreset::EnvLightEntry& e) const { + if(mRange != e.mRange) return true; + else if((unsigned int)mLightType != e.mLightType) return true; + else if(unk0 != e.unk0) return true; + else if(mPosition != e.mPosition) return true; + else return mColor != e.mColor; +} + +LightPreset::SpotlightDrawerEntry::SpotlightDrawerEntry() : mTotalIntensity(0), mBaseIntensity(0), mSmokeIntensity(0), mLightInfluence(0) {} + +void LightPreset::SpotlightDrawerEntry::Load(BinStream& bs){ + bs >> mBaseIntensity; + bs >> mSmokeIntensity; + bs >> mTotalIntensity; + if(gRev > 0xF) bs >> mLightInfluence; + else mLightInfluence = 1.0f; +} + +void LightPreset::SpotlightDrawerEntry::Animate(const LightPreset::SpotlightDrawerEntry& e, float f){ + Interp(mBaseIntensity, e.mBaseIntensity, f, mBaseIntensity); + Interp(mSmokeIntensity, e.mSmokeIntensity, f, mSmokeIntensity); + Interp(mLightInfluence, e.mLightInfluence, f, mLightInfluence); + Interp(mTotalIntensity, e.mTotalIntensity, f, mTotalIntensity); +} + +bool LightPreset::SpotlightDrawerEntry::operator!=(const LightPreset::SpotlightDrawerEntry& e) const { + if(mBaseIntensity != e.mBaseIntensity) return true; + else if(mSmokeIntensity != e.mSmokeIntensity) return true; + else if(mLightInfluence != e.mLightInfluence) return true; + else return mTotalIntensity != e.mTotalIntensity; +} + +template +const char* GetObjName(const std::vector& vec, int idx){ + if(idx >= vec.size()) return ""; + else if(vec[idx]) return vec[idx]->Name(); + else return ""; +} + +const char* GetName(LightPreset* preset, int idx, LightPreset::PresetObject obj){ + switch(obj){ + case LightPreset::kPresetSpotlight: + return GetObjName(preset->mSpotlights, idx); + case LightPreset::kPresetSpotlightDrawer: + return GetObjName(preset->mSpotlightDrawers, idx); + case LightPreset::kPresetEnv: + return GetObjName(preset->mEnvironments, idx); + case LightPreset::kPresetLight: + return GetObjName(preset->mLights, idx); + default: + return ""; + } +} + +BEGIN_CUSTOM_PROPSYNC(LightPreset::SpotlightEntry) + SYNC_PROP_SET(spotlight, GetName(gEditPreset, _prop->Int(_i - 1), LightPreset::kPresetSpotlight), ) + SYNC_PROP_SET(intensity, o.mIntensity, ) + SYNC_PROP_SET(color, o.mColor, ) + SYNC_PROP(target, o.mTarget) + SYNC_PROP_SET(flare_enabled, o.mFlareEnabled, ) +END_CUSTOM_PROPSYNC + +BEGIN_CUSTOM_PROPSYNC(LightPreset::SpotlightDrawerEntry) + SYNC_PROP_SET(spotlight_drawer, GetName(gEditPreset, _prop->Int(_i - 1), LightPreset::kPresetSpotlightDrawer), ) + SYNC_PROP_SET(total, o.mTotalIntensity, ) + SYNC_PROP_SET(base_intensity, o.mBaseIntensity, ) + SYNC_PROP_SET(smoke_intensity, o.mSmokeIntensity, ) + SYNC_PROP_SET(light_influence, o.mLightInfluence, ) +END_CUSTOM_PROPSYNC + +BEGIN_CUSTOM_PROPSYNC(LightPreset::EnvironmentEntry) + SYNC_PROP_SET(environment, GetName(gEditPreset, _prop->Int(_i - 1), LightPreset::kPresetEnv), ) + SYNC_PROP_SET(fog_enable, o.mFogEnable, ) + SYNC_PROP_SET(fog_start, o.mFogStart, ) + SYNC_PROP_SET(fog_end, o.mFogEnd, ) + SYNC_PROP_SET(ambient_color, o.mColor, ) + SYNC_PROP_SET(fog_color, o.mColor, ) +END_CUSTOM_PROPSYNC + +BEGIN_CUSTOM_PROPSYNC(LightPreset::EnvLightEntry) + SYNC_PROP_SET(light, GetName(gEditPreset, _prop->Int(_i - 1), LightPreset::kPresetLight), ) + SYNC_PROP(position, o.mPosition) + SYNC_PROP_SET(range, o.mRange, ) + SYNC_PROP_SET(type, RndLight::TypeToStr(o.mLightType), ) + SYNC_PROP_SET(color, o.mColor, ) +END_CUSTOM_PROPSYNC + +BEGIN_CUSTOM_PROPSYNC(LightPreset::Keyframe) + SYNC_PROP(duration, o.mDuration) + SYNC_PROP(fade_out, o.mFadeOutTime) + SYNC_PROP(spotlight_entries, o.mSpotlightEntries) + SYNC_PROP(spotlight_drawer_entries, o.mSpotlightDrawerEntries) + SYNC_PROP(environment_entries, o.mEnvironmentEntries) + SYNC_PROP(light_entries, o.mLightEntries) + SYNC_PROP(video_venue_postproc, o.mVideoVenuePostProc) + SYNC_PROP(triggers, o.mTriggers) +END_CUSTOM_PROPSYNC + +BEGIN_PROPSYNCS(LightPreset) + gEditPreset = this; + SYNC_PROP_MODIFY_ALT(keyframes, mKeyframes, CacheFrames()) + SYNC_PROP(looping, mLooping) + SYNC_PROP(category, mCategory) + SYNC_PROP(select_triggers, mSelectTriggers) + SYNC_PROP(legacy_fade_in, mLegacyFadeIn) + SYNC_PROP(manual, mManual) + SYNC_PROP(locked, mLocked) + SYNC_PROP(platform_only, mPlatformOnly) + SYNC_PROP(hue, mHue) + SYNC_SUPERCLASS(RndAnimatable) +END_PROPSYNCS -} \ No newline at end of file +BEGIN_HANDLERS(LightPreset) + HANDLE(set_keyframe, OnSetKeyframe) + HANDLE(view_keyframe, OnViewKeyframe) + HANDLE_ACTION(next, OnKeyframeCmd(kPresetKeyframeNext)) + HANDLE_ACTION(prev, OnKeyframeCmd(kPresetKeyframePrev)) + HANDLE_ACTION(first, OnKeyframeCmd(kPresetKeyframeFirst)) + HANDLE_ACTION(reset_events, ResetEvents()) + HANDLE_SUPERCLASS(RndAnimatable) + HANDLE_SUPERCLASS(Hmx::Object) + HANDLE_CHECK(0x85A) +END_HANDLERS \ No newline at end of file diff --git a/src/system/world/LightPreset.h b/src/system/world/LightPreset.h index e29d1476..fbd40e51 100644 --- a/src/system/world/LightPreset.h +++ b/src/system/world/LightPreset.h @@ -3,36 +3,128 @@ #include "obj/Object.h" #include "rndobj/Anim.h" #include "rndobj/EventTrigger.h" +#include "rndobj/PostProc.h" +#include "rndobj/Lit.h" #include "obj/ObjVector.h" +#include class LightHue; class RndEnviron; -class RndLight; class Spotlight; class SpotlightDrawer; -class LightPreset : public RndAnimatable { +static bool sLoading; +class AutoLoading { public: + AutoLoading(){ sLoading = true; } + ~AutoLoading(){ sLoading = false; } - class Keyframe { - public: - Keyframe(Hmx::Object*); - }; +}; +class LightPreset : public RndAnimatable { +public: + // size 0x14 class EnvironmentEntry { public: + EnvironmentEntry(); + void Load(BinStream&); + bool operator!=(const EnvironmentEntry&) const; + + int mColor; // 0x0 - ambient color + int mFogColor; // 0x4 - fog color + bool mFogEnable; // 0x8 + float mFogStart; // 0xc + float mFogEnd; // 0x10 }; + // size 0x28 class EnvLightEntry { public: + EnvLightEntry(); + void Load(BinStream&); + void Animate(const EnvLightEntry&, float); + bool operator!=(const EnvLightEntry&) const; + + Hmx::Quat unk0; // 0x0 + Vector3 mPosition; // 0x10 + int mColor; // 0x1c + float mRange; // 0x20 + RndLight::Type mLightType; // 0x24 }; + // size 0x20 class SpotlightEntry { public: + SpotlightEntry(Hmx::Object*); + void Load(BinStream&); + void CalculateDirection(Spotlight*, Hmx::Quat&) const; + void Animate(Spotlight*, const SpotlightEntry&, float); + + float mIntensity; // 0x0 + int mColor; // 0x4 - packed color + bool unk8p7 : 1; + bool unk8p6 : 1; + bool unk8p5 : 1; + bool unk8p4 : 1; + bool unk8p3 : 1; + bool unk8p2 : 1; + bool unk8p1 : 1; + bool mFlareEnabled : 1; // 0x8 & 1 + RndTransformable* mTarget; // 0xc + Hmx::Quat unk10; }; + // 0x10 class SpotlightDrawerEntry { public: + SpotlightDrawerEntry(); + void Load(BinStream&); + void Animate(const SpotlightDrawerEntry&, float); + bool operator!=(const SpotlightDrawerEntry&) const; + + float mTotalIntensity; // 0x0 + float mBaseIntensity; // 0x4 + float mSmokeIntensity; // 0x8 + float mLightInfluence; // 0xc + }; + + class Keyframe { + public: + Keyframe(Hmx::Object*); + ~Keyframe(){} + + void Load(BinStream&); + void LoadP9(BinStream&); + void LoadStageKit(BinStream&); + + ObjVector mSpotlightEntries; // 0x0 + std::vector mEnvironmentEntries; // 0xc + std::vector mLightEntries; // 0x14 + std::vector mSpotlightDrawerEntries; // 0x1c + ObjPtr mVideoVenuePostProc; // 0x24 + ObjPtrList mTriggers; // 0x30 + // FIXME: the vector types need to be bools + std::vector mSpotlightChanges; // 0x40 + std::vector mEnvironmentChanges; // 0x48 + std::vector mLightChanges; // 0x50 + std::vector mSpotlightDrawerChanges; // 0x58 + float mDuration; // 0x60 + float mFadeOutTime; // 0x64 + float mFrame; // 0x68 + }; + + enum KeyframeCmd { + kPresetKeyframeFirst, + kPresetKeyframeNext, + kPresetKeyframePrev, + kPresetKeyframeNum + }; + + enum PresetObject { + kPresetSpotlight, + kPresetSpotlightDrawer, + kPresetEnv, + kPresetLight }; LightPreset(); @@ -46,13 +138,51 @@ class LightPreset : public RndAnimatable { virtual ~LightPreset(); virtual void StartAnim(); virtual void SetFrame(float, float); - virtual float EndFrame(); + virtual float EndFrame(){ return mCachedDuration; } virtual void Replace(Hmx::Object*, Hmx::Object*); bool PlatformOk() const; Symbol Category() const { return mCategory; } bool Manual() const { return mManual; } int GetCurrentKeyframe() const; + void Clear(); + void RemoveSpotlight(int); + void RemoveEnvironment(int); + void RemoveLight(int); + void RemoveSpotlightDrawer(int); + void SyncNewSpotlights(); + void CacheFrames(); + void OnKeyframeCmd(KeyframeCmd); + void SetKeyframe(Keyframe&); + void ApplyState(const Keyframe&); + void Animate(float); + void SyncKeyframeTargets(); + void TranslateColor(const Hmx::Color&, Hmx::Color&); + void GetKey(float, int&, int&, float&) const; + RndPostProc* GetCurrentPostProc() const; + void SetFrameEx(float, float, bool); + int NextManualFrame(KeyframeCmd) const; + void AdvanceManual(KeyframeCmd); + void FillSpotPresetData(Spotlight*, SpotlightEntry&, int); + void FillEnvPresetData(RndEnviron*, EnvironmentEntry&); + void FillLightPresetData(RndLight*, EnvLightEntry&); + void FillSpotlightDrawerPresetData(SpotlightDrawer*, SpotlightDrawerEntry&); + void SetSpotlight(Spotlight*, int); + void AddSpotlight(Spotlight*, bool); + void AddEnvironment(RndEnviron*); + void AddLight(RndLight*); + void AddSpotlightDrawer(SpotlightDrawer*); + void AnimateSpotFromPreset(Spotlight*, const SpotlightEntry&, float); + void AnimateEnvFromPreset(RndEnviron*, const EnvironmentEntry&, float); + void AnimateLightFromPreset(RndLight*, const EnvLightEntry&, float); + void AnimateSpotlightDrawerFromPreset(SpotlightDrawer*, const SpotlightDrawerEntry&, float); + void SetHue(LightHue* hue){ mHue = hue; } + + static void ResetEvents(); + static std::deque > sManualEvents; + + DataNode OnSetKeyframe(DataArray*); + DataNode OnViewKeyframe(DataArray*); ObjVector mKeyframes; // 0x10 std::vector mSpotlights; // 0x1c @@ -66,20 +196,21 @@ class LightPreset : public RndAnimatable { bool mLooping; // 0x58 bool mManual; // 0x59 bool mLocked; // 0x5a - ObjVector unk5c; - std::vector unk68; - std::vector unk70; - std::vector unk78; - int unk80; - float unk84; - float unk88; - float unk8c; - int unk90; - int unk94; - float unk98; - float unk9c; + ObjVector mSpotlightState; // 0x5c + std::vector mEnvironmentState; // 0x68 + std::vector mLightState; // 0x70 + std::vector mSpotlightDrawerState; // 0x78 + Keyframe* mLastKeyframe; // 0x80 + float mLastBlend; // 0x84 + float mStartBeat; // 0x88 + float mManualFrameStart; // 0x8c + int mManualFrame; // 0x90 + int mLastManualFrame; // 0x94 + float mManualFadeTime; // 0x98 + float mCachedDuration; // 0x9c LightHue* mHue; // 0xa0 + DECLARE_REVS NEW_OVERLOAD; DELETE_OVERLOAD; NEW_OBJ(LightPreset) @@ -88,4 +219,29 @@ class LightPreset : public RndAnimatable { } }; +inline BinStream& operator>>(BinStream& bs, LightPreset::Keyframe& k){ + k.Load(bs); + return bs; +} + +inline BinStream& operator>>(BinStream& bs, LightPreset::EnvLightEntry& l){ + l.Load(bs); + return bs; +} + +inline BinStream& operator>>(BinStream& bs, LightPreset::EnvironmentEntry& e){ + e.Load(bs); + return bs; +} + +inline BinStream& operator>>(BinStream& bs, LightPreset::SpotlightEntry& e){ + e.Load(bs); + return bs; +} + +inline BinStream& operator>>(BinStream& bs, LightPreset::SpotlightDrawerEntry& e){ + e.Load(bs); + return bs; +} + #endif diff --git a/src/system/world/Spotlight.h b/src/system/world/Spotlight.h index ec27004b..ca0bbb33 100644 --- a/src/system/world/Spotlight.h +++ b/src/system/world/Spotlight.h @@ -60,6 +60,11 @@ class Spotlight : public RndDrawable, public RndTransformable, public RndPollabl virtual void UpdateBounds(); virtual void Poll(); virtual void Replace(Hmx::Object*, Hmx::Object*); + + bool GetAnimateFromPreset() const { + return mAnimateColorFromPreset || mAnimateOrientationFromPreset; + } + void CalculateDirection(RndTransformable*, Hmx::Matrix3&); static void Init();