Merge pull request #276 from elijah-thomas774/d_a_obj_door

d_a_obj_door
This commit is contained in:
Elijah Thomas
2025-11-27 12:18:18 -05:00
committed by GitHub
28 changed files with 2298 additions and 114 deletions
+86 -90
View File
@@ -2,98 +2,94 @@ _prolog = .text:0x00000000; // type:function size:0x2C scope:global
_epilog = .text:0x00000030; // type:function size:0x2C scope:global
_unresolved = .text:0x00000060; // type:function size:0x4 scope:global
dAcOdoor_c_classInit__Fv = .text:0x00000070; // type:function size:0x110
fn_572_180 = .text:0x00000180; // type:function size:0x68
fn_572_1F0 = .text:0x000001F0; // type:function size:0x4C
fn_572_240 = .text:0x00000240; // type:function size:0x4C
fn_572_290 = .text:0x00000290; // type:function size:0x58
fn_572_2F0 = .text:0x000002F0; // type:function size:0x4C
getDoorTalk = .text:0x00000340; // type:function size:0xC
fn_572_350 = .text:0x00000350; // type:function size:0x7C
fn_572_3D0 = .text:0x000003D0; // type:function size:0x40
fn_572_410 = .text:0x00000410; // type:function size:0x7C
fn_572_490 = .text:0x00000490; // type:function size:0x68
fn_572_500 = .text:0x00000500; // type:function size:0x1EC
AcODoor__init = .text:0x000006F0; // type:function size:0x34C
AcODoor__init2 = .text:0x00000A40; // type:function size:0x7D4
fn_572_1220 = .text:0x00001220; // type:function size:0x24
fn_572_1250 = .text:0x00001250; // type:function size:0x16C4
fn_572_2920 = .text:0x00002920; // type:function size:0x1C
AcODoor__update = .text:0x00002940; // type:function size:0x808
fn_572_3150 = .text:0x00003150; // type:function size:0x98
getDoorMapping__26@unnamed@d_a_obj_door_cpp@FUlRPCQ226@unnamed@d_a_obj_door_cpp@15DoorFileMapping = .text:0x00000180; // type:function size:0x68
getDoorResName__26@unnamed@d_a_obj_door_cpp@FUlRPCc = .text:0x000001F0; // type:function size:0x4C
getDoorMdlName__26@unnamed@d_a_obj_door_cpp@FUlRPCc = .text:0x00000240; // type:function size:0x4C
getDoorCallbackTypeMapped__26@unnamed@d_a_obj_door_cpp@FUcRUc = .text:0x00000290; // type:function size:0x58
isDoubleDoorType__26@unnamed@d_a_obj_door_cpp@Fl = .text:0x000002F0; // type:function size:0x4C
getDoorInteractionName__26@unnamed@d_a_obj_door_cpp@Fv = .text:0x00000340; // type:function size:0xC
isInSandshipBoss__26@unnamed@d_a_obj_door_cpp@Fv = .text:0x00000350; // type:function size:0x7C
isInEvent__26@unnamed@d_a_obj_door_cpp@FPCc = .text:0x000003D0; // type:function size:0x40
isInTimeDoorEvent__26@unnamed@d_a_obj_door_cpp@Fv = .text:0x00000410; // type:function size:0x7C
checkRoom__26@unnamed@d_a_obj_door_cpp@FScRb = .text:0x00000490; // type:function size:0x68
createHeap__10dAcOdoor_cFv = .text:0x00000500; // type:function size:0x1EC
actorCreate__10dAcOdoor_cFv = .text:0x000006F0; // type:function size:0x34C
actorPostCreate__10dAcOdoor_cFv = .text:0x00000A40; // type:function size:0x7D4
doDelete__10dAcOdoor_cFv = .text:0x00001220; // type:function size:0x24
actorExecuteInEvent__10dAcOdoor_cFv = .text:0x00001250; // type:function size:0x16C4
calcTimer<Uc>__4sLibFPUc_Uc = .text:0x00002920; // type:function size:0x1C
actorExecute__10dAcOdoor_cFv = .text:0x00002940; // type:function size:0x808
draw__10dAcOdoor_cFv = .text:0x00003150; // type:function size:0x98
isLocked__10dAcOdoor_cFv = .text:0x000031F0; // type:function size:0x158
fn_572_3350 = .text:0x00003350; // type:function size:0x84
fn_572_33E0 = .text:0x000033E0; // type:function size:0xC
fn_572_33F0 = .text:0x000033F0; // type:function size:0x78
fn_572_3470 = .text:0x00003470; // type:function size:0x7C
fn_572_34F0 = .text:0x000034F0; // type:function size:0x78
fn_572_3570 = .text:0x00003570; // type:function size:0x7C
AcODoor__handleDoorPullEvent = .text:0x000035F0; // type:function size:0x20
fn_572_3610 = .text:0x00003610; // type:function size:0x4
AcODoor__handlePushEvent = .text:0x00003620; // type:function size:0x20
fn_572_3640 = .text:0x00003640; // type:function size:0x4
AcODoor__handleNormalEvent = .text:0x00003650; // type:function size:0xB0
fn_572_3700 = .text:0x00003700; // type:function size:0x4
fn_572_3710 = .text:0x00003710; // type:function size:0x4
AcODoor__handleLockedPullEvent = .text:0x00003720; // type:function size:0x70
AcODoor__handleLockedPushEvent = .text:0x00003790; // type:function size:0x70
AcODoor__handleLockedEvent = .text:0x00003800; // type:function size:0x5C
AcODoor__pullLockedCallback = .text:0x00003860; // type:function size:0x68
AcODoor__lockedPushCallback = .text:0x000038D0; // type:function size:0x68
AcODoor__handleShutterUnlockEvent = .text:0x00003940; // type:function size:0x6C
fn_572_39B0 = .text:0x000039B0; // type:function size:0x1EC
fn_572_3BA0 = .text:0x00003BA0; // type:function size:0x148
fn_572_3CF0 = .text:0x00003CF0; // type:function size:0x3C
fn_572_3D30 = .text:0x00003D30; // type:function size:0x4
AcODoor__performInteraction = .text:0x00003D40; // type:function size:0x1EC
AcODoor__isKeyLocked = .text:0x00003F30; // type:function size:0xC
AcODoor__getSubtype2 = .text:0x00003F40; // type:function size:0xC
AcODoor__getParamSceneflag = .text:0x00003F50; // type:function size:0xC
fn_572_3F60 = .text:0x00003F60; // type:function size:0xC
fn_572_3F70 = .text:0x00003F70; // type:function size:0xC
fn_572_3F80 = .text:0x00003F80; // type:function size:0xC
fn_572_3F90 = .text:0x00003F90; // type:function size:0x24
fn_572_3FC0 = .text:0x00003FC0; // type:function size:0xC
fn_572_3FD0 = .text:0x00003FD0; // type:function size:0xC
fn_572_3FE0 = .text:0x00003FE0; // type:function size:0xC
fn_572_3FF0 = .text:0x00003FF0; // type:function size:0xC
fn_572_4000 = .text:0x00004000; // type:function size:0xC
fn_572_4010 = .text:0x00004010; // type:function size:0xC
fn_572_4020 = .text:0x00004020; // type:function size:0xC
fn_572_4030 = .text:0x00004030; // type:function size:0xC
AcODoor__setRoomId = .text:0x00004040; // type:function size:0x8
fn_572_4050 = .text:0x00004050; // type:function size:0x8
fn_572_4060 = .text:0x00004060; // type:function size:0x8
fn_572_4070 = .text:0x00004070; // type:function size:0x8
fn_572_4080 = .text:0x00004080; // type:function size:0x8
fn_572_4090 = .text:0x00004090; // type:function size:0xC
fn_572_40A0 = .text:0x000040A0; // type:function size:0xC
fn_572_40B0 = .text:0x000040B0; // type:function size:0xC
fn_572_40C0 = .text:0x000040C0; // type:function size:0xC
fn_572_40D0 = .text:0x000040D0; // type:function size:0xC
fn_572_40E0 = .text:0x000040E0; // type:function size:0xC
fn_572_40F0 = .text:0x000040F0; // type:function size:0xC
fn_572_4100 = .text:0x00004100; // type:function size:0xC
fn_572_4110 = .text:0x00004110; // type:function size:0xC
fn_572_4120 = .text:0x00004120; // type:function size:0xC
fn_572_4130 = .text:0x00004130; // type:function size:0xC
fn_572_4140 = .text:0x00004140; // type:function size:0xC
fn_572_4150 = .text:0x00004150; // type:function size:0x90
AcODoor__triggerExit = .text:0x000041E0; // type:function size:0x7C
AcODoor__isThisTheDoorFromSealedTempleToSpiralAfterSkykeep = .text:0x00004260; // type:function size:0xAC
fn_572_4310 = .text:0x00004310; // type:function size:0x28
fn_572_4338 = .text:0x00004338; // type:function size:0x4
fn_572_4340 = .text:0x00004340; // type:function size:0x28
fn_572_4368 = .text:0x00004368; // type:function size:0x4
fn_572_4370 = .text:0x00004370; // type:function size:0x84
AcODoor__getOpenedDoorSide = .text:0x00004400; // type:function size:0x10
AcODoor__hasFlowEntrypoint = .text:0x00004410; // type:function size:0x18
fn_572_4430 = .text:0x00004430; // type:function size:0xC
fn_572_4440 = .text:0x00004440; // type:function size:0xE4
AcODoor__playerInInteractRange = .text:0x00004530; // type:function size:0xD0
fn_572_4600 = .text:0x00004600; // type:function size:0xE4
AcODoor__triggerDoorTalk = .text:0x000046F0; // type:function size:0x68
canOpen__10dAcOdoor_cFv = .text:0x00003350; // type:function size:0x84
fn_572_33E0__10dAcOdoor_cFv = .text:0x000033E0; // type:function size:0xC
startPullEventWithoutCallback__10dAcOdoor_cFPv = .text:0x000033F0; // type:function size:0x78
startPullEventWithCallback__10dAcOdoor_cFPv = .text:0x00003470; // type:function size:0x7C
startPushEventWithoutCallback__10dAcOdoor_cFPv = .text:0x000034F0; // type:function size:0x78
startPushEventWithCallback__10dAcOdoor_cFPv = .text:0x00003570; // type:function size:0x7C
startPullEvent__10dAcOdoor_cFPv = .text:0x000035F0; // type:function size:0x24
startPushEvent__10dAcOdoor_cFPv = .text:0x00003620; // type:function size:0x24
startOpenEvent__10dAcOdoor_cFPv = .text:0x00003650; // type:function size:0xB0
doorPullEventCallback__10dAcOdoor_cFPv = .text:0x00003700; // type:function size:0x4
doorPushEventCallback__10dAcOdoor_cFPv = .text:0x00003710; // type:function size:0x4
startDoorPullLockedEvent__10dAcOdoor_cFPv = .text:0x00003720; // type:function size:0x70
startDoorPushLockedEvent__10dAcOdoor_cFPv = .text:0x00003790; // type:function size:0x70
startLockedEvent__10dAcOdoor_cFPv = .text:0x00003800; // type:function size:0x5C
pullLockedEventCallback__10dAcOdoor_cFPv = .text:0x00003860; // type:function size:0x68
pushLockedEventCallback__10dAcOdoor_cFPv = .text:0x000038D0; // type:function size:0x68
startUnlockEvent__10dAcOdoor_cFv = .text:0x00003940; // type:function size:0x6C
unlockEventCallback__10dAcOdoor_cFPv = .text:0x000039B0; // type:function size:0x1EC
openCallbackCommon__10dAcOdoor_cFPv = .text:0x00003BA0; // type:function size:0x148
registerInEvent__10dAcOdoor_cFv = .text:0x00003CF0; // type:function size:0x3C
unkVirtFunc_0x6C__10dAcOdoor_cFv = .text:0x00003D30; // type:function size:0x4
doInteraction__10dAcOdoor_cFl = .text:0x00003D40; // type:function size:0x1EC
getLockParameter__10dAcOdoor_cFv = .text:0x00003F30; // type:function size:0xC
getLockBehavior__10dAcOdoor_cFv = .text:0x00003F40; // type:function size:0xC
getSceneflag__10dAcOdoor_cFv = .text:0x00003F50; // type:function size:0xC
getDoorCallbackType__10dAcOdoor_cFv = .text:0x00003F60; // type:function size:0xC
getFrontRoomParam__10dAcOdoor_cFv = .text:0x00003F70; // type:function size:0xC
getBackRoomParam__10dAcOdoor_cFv = .text:0x00003F80; // type:function size:0xC
getFailedToOpenFlag__10dAcOdoor_cFv = .text:0x00003F90; // type:function size:0x24
getInteractionMinX__10dAcOdoor_cFv = .text:0x00003FC0; // type:function size:0xC
getInteractionMaxX__10dAcOdoor_cFv = .text:0x00003FD0; // type:function size:0xC
getInteractionMinZ__10dAcOdoor_cFv = .text:0x00003FE0; // type:function size:0xC
getInteractionMaxZ__10dAcOdoor_cFv = .text:0x00003FF0; // type:function size:0xC
getInteractionLockMinX__10dAcOdoor_cFv = .text:0x00004000; // type:function size:0xC
getInteractionLockMaxX__10dAcOdoor_cFv = .text:0x00004010; // type:function size:0xC
getInteractionLockMinZ__10dAcOdoor_cFv = .text:0x00004020; // type:function size:0xC
getInteractionLockMaxZ__10dAcOdoor_cFv = .text:0x00004030; // type:function size:0xC
setRoomId__10dAcOdoor_cFSc = .text:0x00004040; // type:function size:0x8
setFlag__10dAcOdoor_cFUl = .text:0x00004050; // type:function size:0x8
setEventCallbackType__10dAcOdoor_cFUc = .text:0x00004060; // type:function size:0x8
setFrontRoom__10dAcOdoor_cFSc = .text:0x00004070; // type:function size:0x8
setBackRoom__10dAcOdoor_cFSc = .text:0x00004080; // type:function size:0x8
setDoubleDoor__10dAcOdoor_cFv = .text:0x00004090; // type:function size:0xC
setNotDoubleDoor__10dAcOdoor_cFv = .text:0x000040A0; // type:function size:0xC
setSingleDoor__10dAcOdoor_cFv = .text:0x000040B0; // type:function size:0xC
setNotSingleDoor__10dAcOdoor_cFv = .text:0x000040C0; // type:function size:0xC
setInSandshipBoss__10dAcOdoor_cFv = .text:0x000040D0; // type:function size:0xC
isTimeDoorEventActive__10dAcOdoor_cCFv = .text:0x000040E0; // type:function size:0xC
setTimeDoorEventActive__10dAcOdoor_cFv = .text:0x000040F0; // type:function size:0xC
setTimeDoorEventInactive__10dAcOdoor_cFv = .text:0x00004100; // type:function size:0xC
setTimeEffected__10dAcOdoor_cFv = .text:0x00004110; // type:function size:0xC
setTimeStatic__10dAcOdoor_cFv = .text:0x00004120; // type:function size:0xC
checkFrontRoom__10dAcOdoor_cCFRb = .text:0x00004130; // type:function size:0xC
checkBackRoom__10dAcOdoor_cCFRb = .text:0x00004140; // type:function size:0xC
checkRooms__10dAcOdoor_cCFRb = .text:0x00004150; // type:function size:0x90
triggerExit__10dAcOdoor_cFv = .text:0x000041E0; // type:function size:0x7C
isLeavingSealedTempleSideDoorPostSkyKeep__10dAcOdoor_cCFv = .text:0x00004260; // type:function size:0xAC
transitionPushRoomFlags__10dAcOdoor_cCFv = .text:0x00004310; // type:function size:0x2C
transitionPullRoomFlags__10dAcOdoor_cCFv = .text:0x00004340; // type:function size:0x2C
isPositionInFrontOfDoor__10dAcOdoor_cCFRC7mVec3_c = .text:0x00004370; // type:function size:0x84
checkPullDoor__10dAcOdoor_cCFv = .text:0x00004400; // type:function size:0x10
hasFlowEntryPoint__10dAcOdoor_cFv = .text:0x00004410; // type:function size:0x18
isTimeEffected__10dAcOdoor_cCFv = .text:0x00004430; // type:function size:0xC
setDoorKnobPosition__10dAcOdoor_cFv = .text:0x00004440; // type:function size:0xE4
isPlayerInteractable__10dAcOdoor_cCFv = .text:0x00004530; // type:function size:0xD0
isPlayerInteractableLocked__10dAcOdoor_cCFv = .text:0x00004600; // type:function size:0xE4
playInteractionLocked__10dAcOdoor_cFv = .text:0x000046F0; // type:function size:0x68
__dt__10dAcOdoor_cFv = .text:0x00004760; // type:function size:0xE8
fn_572_4850 = .text:0x00004850; // type:function size:0x144
__sinit_\d_a_obj_door_cpp = .text:0x00004850; // type:function size:0x144 scope:local
_ctors = .ctors:0x00000000; // type:label scope:global
_dtors = .dtors:0x00000000; // type:label scope:global
lbl_572_rodata_0 = .rodata:0x00000000; // type:object size:0x20 data:float
@@ -21,11 +21,11 @@ getStateID__80sStateMgr_c<11dAcOFence_c,20sStateMethodUsr_FI_c,12sFStateFct_c,13
fn_550_D30 = .text:0x00000D30; // type:function size:0x304
fn_550_1040 = .text:0x00001040; // type:function size:0x13C
fn_550_1180 = .text:0x00001180; // type:function size:0x28
fn_550_11B0 = .text:0x000011B0; // type:function size:0xA0
fn_550_1250 = .text:0x00001250; // type:function size:0x50
fn_550_11B0__11dAcOFence_cCFv = .text:0x000011B0; // type:function size:0xA0
fn_550_1250__11dAcOFence_cFv = .text:0x00001250; // type:function size:0x50
changeState__80sStateMgr_c<11dAcOFence_c,20sStateMethodUsr_FI_c,12sFStateFct_c,13sStateIDChk_c>FRC12sStateIDIf_c = .text:0x000012A0; // type:function size:0x10
fn_550_12B0 = .text:0x000012B0; // type:function size:0x10
fn_550_12C0 = .text:0x000012C0; // type:function size:0x10
fn_550_12B0__11dAcOFence_cFv = .text:0x000012B0; // type:function size:0x10
fn_550_12C0__11dAcOFence_cFv = .text:0x000012C0; // type:function size:0x10
initializeState_WaitOpen__11dAcOFence_cFv = .text:0x000012D0; // type:function size:0x94
executeState_WaitOpen__11dAcOFence_cFv = .text:0x00001370; // type:function size:0x168
finalizeState_WaitOpen__11dAcOFence_cFv = .text:0x000014E0; // type:function size:0x4
@@ -142,4 +142,4 @@ lbl_550_bss_118 = .bss:0x00000118; // type:object size:0x40 data:4byte
lbl_550_bss_158 = .bss:0x00000158; // type:object size:0x40 data:4byte
lbl_550_bss_198 = .bss:0x00000198; // type:object size:0x40 data:4byte
lbl_550_bss_1D8 = .bss:0x000001D8; // type:object size:0x40 data:4byte
lbl_550_bss_218 = .bss:0x00000218; // type:object size:0x30
StateID_RequestConfineEvent__11dAcOFence_c = .bss:0x00000218; // type:object size:0x30
@@ -80,7 +80,7 @@ lbl_374_data_190 = .data:0x00000190; // type:object size:0x198 scope:local
__vt__29sFStateID_c<14dAcOwindmill_c> = .data:0x00000328; // type:object size:0x34
__global_destructor_chain = .bss:0x00000000; // type:object size:0x4 scope:global
lbl_374_bss_8 = .bss:0x00000008; // type:object size:0x10 scope:local data:4byte
AcOwindmill__STATE_WAIT = .bss:0x00000018; // type:object size:0x40 data:4byte
StateID_Wait__14dAcOwindmill_c = .bss:0x00000018; // type:object size:0x40 data:4byte
AcOwindmill__STATE_CAMERA_MOVE = .bss:0x00000058; // type:object size:0x40 data:4byte
AcOwindmill__STATE_MOVE = .bss:0x00000098; // type:object size:0x80 data:4byte
AcOwindmill__STATE_COLLECT_STICK = .bss:0x00000118; // type:object size:0x30 data:4byte
+10 -10
View File
@@ -1138,7 +1138,7 @@ fn_8002ECD0 = .text:0x8002ECD0; // type:function size:0x50
fn_8002ED20 = .text:0x8002ED20; // type:function size:0x88
fn_8002edb0__12dAcObjBase_cFRQ23m3d15mShadowCircle_cRQ23m3d6smdl_cPC7mQuat_cllf = .text:0x8002EDB0; // type:function size:0x8C
drawShadow__12dAcObjBase_cFRQ23m3d15mShadowCircle_cPvRC6mMtx_cPC7mQuat_clllllf = .text:0x8002EE40; // type:function size:0xFC
actorSpawnAtActor2 = .text:0x8002EF40; // type:function size:0x24
create__12dAcObjBase_cFP12dAcObjBase_cQ28fProfile14PROFILE_NAME_eUlPC7mVec3_cPC7mAng3_cPC7mVec3_cUlUl = .text:0x8002EF40; // type:function size:0x24
fn_8002EF70 = .text:0x8002EF70; // type:function size:0x28
fn_8002EFA0 = .text:0x8002EFA0; // type:function size:0x50
fn_8002eff0__12dAcObjBase_cFRCfRCsP8cCcD_ObjRCfRCf = .text:0x8002EFF0; // type:function size:0x194
@@ -3525,7 +3525,7 @@ getCurrentEventCommand__17ActorEventRelatedCFv = .text:0x8009CF10; // type:funct
ActorEventRelated__getSomeEventRelatedNumber = .text:0x8009CFA0; // type:function size:0x80
isAdvance__17ActorEventRelatedFv = .text:0x8009D020; // type:function size:0x34
advanceNext__17ActorEventRelatedFv = .text:0x8009D060; // type:function size:0x50
ActorEventRelated__getSingleIntData2 = .text:0x8009D0B0; // type:function size:0x8C
getSingleShortData__17ActorEventRelatedFPiUlUl = .text:0x8009D0B0; // type:function size:0x8C
getSingleIntData__17ActorEventRelatedFPiUlUl = .text:0x8009D140; // type:function size:0x8C
getSingleFloatData__17ActorEventRelatedFPfUlUl = .text:0x8009D1D0; // type:function size:0x8C
getSingleVecData__17ActorEventRelatedFP7mVec3_cUlUl = .text:0x8009D260; // type:function size:0x9C
@@ -3568,7 +3568,7 @@ fn_8009F850 = .text:0x8009F850; // type:function size:0x134
fn_8009F990__12EventManagerFv = .text:0x8009F990; // type:function size:0x80
fn_8009FA10 = .text:0x8009FA10; // type:function size:0x8
attachSkipEvent = .text:0x8009FA20; // type:function size:0x1A0
setAsEvent = .text:0x8009FBC0; // type:function size:0x120
setEvent__12EventManagerFP9dAcBase_cP5EventP9dAcBase_c = .text:0x8009FBC0; // type:function size:0x120
changeOwnEvent__12EventManagerFP9dAcBase_cP9dAcBase_cP5Eventi = .text:0x8009FCE0; // type:function size:0x11C
fn_8009FE00 = .text:0x8009FE00; // type:function size:0x124
isInEvent__12EventManagerFP9dAcBase_cPCc = .text:0x8009FF30; // type:function size:0x10C
@@ -9879,8 +9879,8 @@ fn_80178E90 = .text:0x80178E90; // type:function size:0x40
fn_80178ED0 = .text:0x80178ED0; // type:function size:0x114
__dt__13dAcBirdBase_cFv = .text:0x80178FF0; // type:function size:0xDC
__dt__Q213dAcBirdBase_c10callback_cFv = .text:0x801790D0; // type:function size:0x58
__ct__16dAcObjDoor_cFv = .text:0x80179130; // type:function size:0x58
fn_80179190 = .text:0x80179190; // type:function size:0x74
__ct__12dAcObjDoor_cFv = .text:0x80179130; // type:function size:0x58
__dt__12dAcObjDoor_cFv = .text:0x80179190; // type:function size:0x74
ActorDoorBase__hasVisitedRoomIdMaybe = .text:0x80179210; // type:function size:0x14
fn_80179230 = .text:0x80179230; // type:function size:0x4
fn_80179240 = .text:0x80179240; // type:function size:0x4
@@ -10420,13 +10420,13 @@ fn_80194A90 = .text:0x80194A90; // type:function size:0x58
checkStatueFlag__10dAcOSave_cCFv = .text:0x80194AF0; // type:function size:0x28
fn_80194B20 = .text:0x80194B20; // type:function size:0x8
fn_80194B30 = .text:0x80194B30; // type:function size:0x44
fn_80194B80 = .text:0x80194B80; // type:function size:0x8
getConnectedDoorRef__10dAcOdoor_cFv = .text:0x80194B80; // type:function size:0x8
fn_80194B90 = .text:0x80194B90; // type:function size:0x8
fn_80194BA0 = .text:0x80194BA0; // type:function size:0x30
isConnectedToOtherDoor__10dAcOdoor_cCFv = .text:0x80194BA0; // type:function size:0x30
fn_80194BD0 = .text:0x80194BD0; // type:function size:0x18
fn_80194BF0 = .text:0x80194BF0; // type:function size:0x24
fn_80194C20 = .text:0x80194C20; // type:function size:0x48
fn_80194C70 = .text:0x80194C70; // type:function size:0x70
stepTowards__10dAcOdoor_cCFR7mVec3_c = .text:0x80194C70; // type:function size:0x70
getImprisonedPtr = .text:0x80194CE0; // type:function size:0x8
fn_80194CF0 = .text:0x80194CF0; // type:function size:0x128
dAcOClef__getTadtoneGroupIndex = .text:0x80194E20; // type:function size:0x38
@@ -10960,9 +10960,9 @@ waitForRooms__8dStage_cFv = .text:0x801B3930; // type:function size:0x30
setRoom__8dStage_cFiP7dRoom_c = .text:0x801B3960; // type:function size:0x10
getRoom__8dStage_cFl = .text:0x801B3970; // type:function size:0x10
handleRoomChange__8dStage_cFi = .text:0x801B3980; // type:function size:0x114
RoomManager__updateRoomFlags = .text:0x801B3AA0; // type:function size:0x134
updateRoomFlags__8dStage_cFii = .text:0x801B3AA0; // type:function size:0x134
RoomManager__checkOtherRoomLoaded = .text:0x801B3BE0; // type:function size:0x78
fn_801B3C60 = .text:0x801B3C60; // type:function size:0x9C
fn_801B3C60__8dStage_cFi = .text:0x801B3C60; // type:function size:0x9C
fadeIn__8dStage_cFlUs = .text:0x801B3D00; // type:function size:0xA8
fadeOut__8dStage_cFlUs = .text:0x801B3DB0; // type:function size:0xA8
forceFadeOut__8dStage_cFv = .text:0x801B3E60; // type:function size:0x40
+3
View File
@@ -125,6 +125,9 @@ public:
public:
dAcBase_c();
void setSubtype(u8 sub) {
mSubtype = sub;
}
void setPosition(const mVec3_c &r) {
mPosition = r;
}
+5
View File
@@ -181,6 +181,11 @@ public:
const char *name, u32 roomId, u32 params1, const mVec3_c *pos, const mAng3_c *rot, const mVec3_c *scale,
u32 params2, u16 id, s8 viewclipId
);
static dAcObjBase_c *create(
dAcObjBase_c *, fProfile::PROFILE_NAME_e actorId, u32 params1, const mVec3_c *pos, const mAng3_c *rot,
const mVec3_c *scale, u32 params2, u32 roomId
);
static dAcObjBase_c *findObject(fProfile::PROFILE_NAME_e actorId, fLiNdBa_c *refList, dAcObjBase_c *parent);
static dAcObjBase_c *getNextObject(fLiMgBa_c *ref, dAcObjBase_c *parent);
bool isPlayer();
+304 -1
View File
@@ -1,16 +1,319 @@
#ifndef D_A_OBJ_DOOR_H
#define D_A_OBJ_DOOR_H
#include "common.h"
#include "d/a/d_a_base.h"
#include "d/a/obj/d_a_obj_base.h"
#include "d/a/obj/d_a_obj_door_base.h"
#include "m/m3d/m_anmmdl.h"
#include "m/m3d/m_smdl.h"
#include "m/m_mtx.h"
#include "m/m_vec.h"
#include "toBeSorted/actor_event.h"
#include "toBeSorted/d_emitter.h"
#include "toBeSorted/d_flow_mgr.h"
struct dTimeBits {
dTimeBits() : field_0x00(false), field_0x01(false) {}
bool field_0x00;
bool field_0x01;
};
class dAcOLock_c;
class dAcOdoor_c : public dAcObjDoor_c {
public:
dAcOdoor_c() {}
enum Subtype_e {
DOOR_NORMAL, ///< DoorA00 - Normal Wooden Door
DOOR_METAL, ///< DoorA01 - Metal Door - Academy(bathrooms)
DOOR_DOUBLE, ///< DoorC00 - Normal Double Doors
DOOR_DOUBLE_OUTSIDE, ///< DoorC01 - Outdoor Double Doors - Academy(to outside)
DOOR_TEMPLE_SIDE, ///< DoorB00 - Sealed Temple Side Doors
DOOR_SANDSEA_TIMESHIFT, ///< DoorE - Sandsea Timeshift Door
DOOR_BATREAUX, ///< DoorA02 - Batreaux's Door
DOOR_TEMPLE_MAIN, ///< DoorF - Sealed Temple Main Door
DOOR_SPARRING_HALL, ///< DoorH - Sparring Hall Outer Doors
};
enum LockType_e {
LOCK_NONE = 0, ///< Door does not have a lock
LOCK_KEY = 1, ///< Door usually is locked
};
enum LockBehavior_e {
LOCK_NEVER = 0, ///< Door is always unlocked
LOCK_NOT_SET = 1, ///< Door is locked when mSceneflag is unset
LOCK_NEVER1 = 2, ///< Door is always unlocked (Kukiel's House)
LOCK_TIMESHIFT = 3, ///< Door is locked when mSceneflag is unset (Timeshift)
LOCK_SET = 4, ///< Door is locked when mSceneflag is set
LOCK_DAY = 5, ///< Door is locked during the day
LOCK_NIGHT = 6, ///< Door is locked during the night
LOCK_MAX,
};
public:
dAcOdoor_c()
: mEventRelated(*this, nullptr),
mEmmiterL(this),
mEmmiterR(this),
mFlags(0),
mExitTimer(0),
mbInSandshipBoss(false),
field_0x5BA(false) {}
virtual ~dAcOdoor_c() {}
virtual int doDelete() override;
virtual int draw() override;
virtual bool createHeap() override;
virtual int actorCreate() override;
virtual int actorPostCreate() override;
virtual int actorExecute() override;
virtual int actorExecuteInEvent() override;
virtual void registerInEvent() override;
virtual void unkVirtFunc_0x6C() override;
virtual void doInteraction(s32 /* InteractionType */) override;
virtual bool canOpen() override;
/** Gets whether the player can open the door */
bool isLocked();
/** fn_572_33E0 - I Think this gets the Door open range*/
static f32 fn_572_33E0();
/** Self Explanatory */
void startPullEventWithoutCallback(void *zevData);
/** Self Explanatory */
void startPullEventWithCallback(void *zevData);
/** Self Explanatory */
void startPushEventWithoutCallback(void *zevData);
/** Self Explanatory */
void startPushEventWithCallback(void *zevData);
/** Self Explanatory */
void startPullEvent(void *zevData);
/** Self Explanatory */
void startPushEvent(void *zevData);
/** Self Explanatory */
void startOpenEvent(void *zevData);
/** Self Explanatory */
static void doorPullEventCallback(void *);
/** Self Explanatory */
static void doorPushEventCallback(void *);
/** Self Explanatory */
void startDoorPullLockedEvent(void *zevData);
/** Self Explanatory */
void startDoorPushLockedEvent(void *zevData);
/** Self Explanatory */
void startLockedEvent(void *zevData);
/** Self Explanatory */
static void pullLockedEventCallback(void *);
/** Self Explanatory */
static void pushLockedEventCallback(void *);
/** Self Explanatory */
void startUnlockEvent();
/** Self Explanatory */
static void unlockEventCallback(void *);
/** Self Explanatory */
static void openCallbackCommon(void *);
/** Returns if the door is physically locked with the dAcOLock_c Actor */
s32 getLockParameter();
/** Gets the behavior of being locked when not locked with the dAcOLock_c Actor */
s32 getLockBehavior();
/** Get Scenflag used for locking status */
u8 getSceneflag();
/** Gets whether the door has callbacks enabled */
u8 getDoorCallbackType();
/** getFrontRoomParam */
u8 getFrontRoomParam(); // (mRotation.z >> 4) & 0x3F
/** getBackRoomParam */
u8 getBackRoomParam(); // (mRotation.z >> 10) & 0x3F
/** Gets the Flag set when failed to open - Called from Try Locked Callback */
u16 getFailedToOpenFlag();
/** Interaction Radius -X */
static f32 getInteractionMinX();
/** Interaction Radius +X */
static f32 getInteractionMaxX();
/** Interaction Radius -Z */
static f32 getInteractionMinZ();
/** Interaction Radius +Z */
static f32 getInteractionMaxZ();
/** Interaction Radius -X - Door has Lock */
static f32 getInteractionLockMinX();
/** Interaction Radius +X - Door has Lock */
static f32 getInteractionLockMaxX();
/** Interaction Radius -Z - Door has Lock */
static f32 getInteractionLockMinZ();
/** Interaction Radius +Z - Door has Lock */
static f32 getInteractionLockMaxZ();
/** Sets the RoomID */
void setRoomId(s8 roomId);
/** Set Flag - Usually Time Door related */
void setFlag(u32 flags);
/** Sets the behavior on Event creation */
void setEventCallbackType(u8);
/** setFrontRoom */
void setFrontRoom(s8); // mFrontRoomId = in
/** setBackRoom */
void setBackRoom(s8); // mBackRoomId = in
/** Sets status indicating it can be a double door */
void setDoubleDoor();
/** Sets status indicating it cant be a double door */
void setNotDoubleDoor();
/** Sets status indicating its a single door / Main door */
void setSingleDoor();
/** Sets status indicating its not a single door / not Main door */
void setNotSingleDoor();
/** setInSandshipBoss */
void setInSandshipBoss(); // mbInSandshipBoss = true
/** isTimeDoorEventActive */
bool isTimeDoorEventActive() const;
/** setTimeDoorEventActive */
void setTimeDoorEventActive();
/** setTimeDoorEventInactive */
void setTimeDoorEventInactive();
/** Sets status indicating it is effected by Timeshift */
void setTimeEffected();
/** Sets status indicating it is not effected by Timeshift */
void setTimeStatic();
/** Checks to see if the Front room exists(return) and has flags set(b) */
bool checkFrontRoom(bool &b) const;
/** Checks to see if the Back room exists(return) and has flags set(b) */
bool checkBackRoom(bool &b) const;
/** Checks to see if the Front and Back room exists(return) and has flags set(b) */
bool checkRooms(bool &b) const;
/** Transitions the game to the next room */
void triggerExit();
/** TODO(Zeldex) Whats special about this? */
bool isLeavingSealedTempleSideDoorPostSkyKeep() const;
/** */
void transitionPushRoomFlags() const;
/** */
void transitionPullRoomFlags() const;
/** Checks a point to determine which side of the door it is on */
bool isPositionInFrontOfDoor(const mVec3_c &point) const;
/** Checks the players postion to see if it is front of the door. This means it will be pulled open */
bool checkPullDoor() const;
/** Checks to see if the door has a flow entry point */
bool hasFlowEntryPoint();
/** Checks to see if the Door is effected by Timeshift */
bool isTimeEffected() const;
/** Sets the Position of the Doorknob based on the Animation */
void setDoorKnobPosition();
/** Checks to see if the Player is within an interactable range */
bool isPlayerInteractable() const;
/** Checks to see if the Player is within an interactable range when door is locked */
bool isPlayerInteractableLocked() const;
/** Plays the talk event for when the door is locked */
void playInteractionLocked();
public:
s32 getType() const {
return mParams & 0x3F;
}
s32 getField_0x5B4() const {
return mFrontRoomId;
}
s32 getField_0x5B5() const {
return mBackRoomId;
}
public: // Functions in this section defined in main dol
bool isConnectedToOtherDoor() const;
dAcRef_c<dAcOdoor_c> &getConnectedDoorRef(); // return mConnectedDoor;
/** fn_80194C70 : Rotates the input by this->mRotation.y and adds this->mPosition */
void stepTowards(mVec3_c &newPosition) const;
private:
/* 0x33C */ m3d::smdl_c mMdl0;
/* 0x358 */ m3d::smdl_c mMdl1;
/* 0x374 */ m3d::mdlAnmChr mAnmChr;
/* 0x3DC */ ActorEventRelated mEventRelated;
/* 0x42C */ dFlowMgr_c mFlowMgr;
/* 0x4E8 */ dEmitter_c mEmmiterL;
/* 0x51C */ dEmitter_c mEmmiterR;
/* 0x550 */ dTimeBits mTimeBits;
/* 0x554 */ dAcRef_c<dAcOdoor_c> mConnectedDoor; ///< When the door is a double door, this is its pair
/* 0x560 */ dAcRef_c<dAcOLock_c> mLock;
/* 0x56C */ dAcRef_c<dAcObjBase_c> mObjRef; ///< TODO(Zeldex) This is probably the Sandship stage for boss
/* 0x578 */ mMtx_c mMtx; ///< Currently unknown. I am assuming this is used to move the door on the Sandship stage
///< while the boat is rocking
/* 0x5A8 */ u32 mFlags; ///< 0x2 - Time Effected
/* 0x5AC */ u32 mRumbleIdx; ///< Rumble used for when opening the main sealed temple door
/* 0x5B0 */ u8 mExitTimer; ///< Timer used to advance the Begin Pull/Push events
/* 0x5B1 */ u8 mLockBehavior; ///< see LockBehavior_e
/* 0x5B2 */ u8 mSceneflag; ///< Used for unlocking/locking the door.
/* 0x5B3 */ u8 mEventCallbackType; ///< 0 for events without callbacks, 1 for events with a callback
/* 0x5B4 */ s8 mFrontRoomId; ///< Room id of the front side of the door
/* 0x5B5 */ s8 mBackRoomId; ///< Room id of the back side of the door
/* 0x5B6 */ s8 mFramesInEvent; ///< The count of frames in one particular event
/* 0x5B7 */ bool mbDoubleDoor; ///< Set if the type was matched to be a double door variant
/* 0x5B8 */ bool mbSingleDoor; ///< UNUSHED - Set if the type was matched to be a single door
/* 0x5B9 */ bool mbInSandshipBoss; ///< Indicates if in the Tentalus fight
/* 0x5BA */ bool field_0x5BA; ///< ???
/* 0x5BB */ bool mbKobunDoor; ///< Used to indicate its Cawlin and Strich's door
};
#endif
+18 -1
View File
@@ -1,11 +1,28 @@
#ifndef D_A_OBJ_DOOR_BASE_H
#define D_A_OBJ_DOOR_BASE_H
#include "d/a/d_a_base.h"
#include "d/a/obj/d_a_obj_base.h"
#include "f/f_list_mg.h"
// Ghidra: ActorDoorBase
// size:
// non-official name
class dAcObjDoor_c : public dAcObjBase_c {};
class dAcObjDoor_c : public dAcObjBase_c {
public:
dAcObjDoor_c();
~dAcObjDoor_c();
virtual bool canOpen() = 0;
virtual bool hasVisitedRoom();
virtual void vt_0x88();
virtual void vt_0x8C();
protected:
dAcRef_c<dAcObjDoor_c> mDoorRef;
private:
static fLiMgBa_c sDoorList;
};
#endif
+2
View File
@@ -10,6 +10,8 @@ public:
dAcOdoorBoss_c() : mStateMgr(*this, sStateID::null) {}
virtual ~dAcOdoorBoss_c() {}
virtual bool canOpen() override;
STATE_FUNC_DECLARE(dAcOdoorBoss_c, UnlockWait);
STATE_FUNC_DECLARE(dAcOdoorBoss_c, CorrectKey);
STATE_FUNC_DECLARE(dAcOdoorBoss_c, KeyInsertInitialInterval);
+11 -1
View File
@@ -10,6 +10,15 @@ public:
dAcOFence_c();
virtual ~dAcOFence_c();
bool fn_550_11B0() const;
void fn_550_1250();
void fn_550_12B0();
void fn_550_12C0();
void changeToRequestConfineEvent() {
mStateMgr.changeState(StateID_RequestConfineEvent);
}
STATE_FUNC_DECLARE(dAcOFence_c, WaitOpen);
STATE_FUNC_DECLARE(dAcOFence_c, Open);
STATE_FUNC_DECLARE(dAcOFence_c, OpenPocoAPoco);
@@ -21,7 +30,8 @@ public:
STATE_FUNC_DECLARE(dAcOFence_c, RequestConfineEvent);
private:
/* 0x??? */ STATE_MGR_DECLARE(dAcOFence_c);
/* 0x330 */ u8 _0x330[0x368 - 0x330];
/* 0x368 */ STATE_MGR_DECLARE(dAcOFence_c);
};
#endif
+11 -1
View File
@@ -12,8 +12,18 @@ public:
STATE_FUNC_DECLARE(dAcOLock_c, Wait);
bool checkField_0x2091() const {
return field_0x2091;
}
void setField_0x2090() {
field_0x2090 = true;
}
private:
/* 0x??? */ STATE_MGR_DECLARE(dAcOLock_c);
/* 0x???? */ STATE_MGR_DECLARE(dAcOLock_c);
/* 0x???? */ u8 _0x36C[0x2090 - 0x36C];
/* 0x2090 */ bool field_0x2090;
/* 0x2091 */ bool field_0x2091;
};
#endif
+2
View File
@@ -10,6 +10,8 @@ public:
dAcOShutter_c() : mStateMgr(*this, sStateID::null) {}
virtual ~dAcOShutter_c() {}
virtual bool canOpen() override;
STATE_FUNC_DECLARE(dAcOShutter_c, Wait);
STATE_FUNC_DECLARE(dAcOShutter_c, Open);
STATE_FUNC_DECLARE(dAcOShutter_c, Close);
@@ -10,6 +10,8 @@ public:
dAcOShutterChangeScene_c() : mStateMgr(*this, sStateID::null) {}
virtual ~dAcOShutterChangeScene_c() {}
virtual bool canOpen() override;
STATE_FUNC_DECLARE(dAcOShutterChangeScene_c, WaitOpenShutter);
STATE_FUNC_DECLARE(dAcOShutterChangeScene_c, WaitOpenShutterForEvent);
STATE_FUNC_DECLARE(dAcOShutterChangeScene_c, OpenShutter);
+2
View File
@@ -10,6 +10,8 @@ public:
dAcOTrlyShtrChgScn_c() : mStateMgr(*this, sStateID::null) {}
virtual ~dAcOTrlyShtrChgScn_c() {}
virtual bool canOpen() override;
STATE_FUNC_DECLARE(dAcOTrlyShtrChgScn_c, Wait);
STATE_FUNC_DECLARE(dAcOTrlyShtrChgScn_c, OpenEvent);
@@ -10,6 +10,8 @@ public:
dAcOTrolleyShutter_c() : mStateMgr(*this, sStateID::null) {}
virtual ~dAcOTrolleyShutter_c() {}
virtual bool canOpen() override;
STATE_FUNC_DECLARE(dAcOTrolleyShutter_c, Wait);
STATE_FUNC_DECLARE(dAcOTrolleyShutter_c, OpenEvent);
+3
View File
@@ -27,6 +27,9 @@ public:
static dBgS_ObjGndChk &GetInstance() {
return sInstance;
}
static dBgS_ObjGndChk *GetPInstance() {
return &sInstance;
}
static f32 GetGroundHeight() {
return sGroundHeight;
}
+1 -2
View File
@@ -630,7 +630,7 @@ public:
bool isAttackingSpinHorizontal() const;
bool isAttackingSpinVertical() const;
void setBonkRelatedAnimFlag(bool b);
void setPosYRot(const mVec3_c &pos, mAng rot, bool force, UNKWORD, UNKWORD);
void setPosYRot(const mVec3_c &pos, mAng rot, bool force = false, UNKWORD = 0, UNKWORD = 0);
void setTransform(const mMtx_c &mtx, bool force, UNKWORD, UNKWORD);
bool someTargetedActorCheck() const;
static mAng fn_8005BA90();
@@ -646,7 +646,6 @@ public:
static const char *getSwordName(s32);
static s32 getCurrentlyEquippedShieldType();
static const mColor &getEarringsColor();
static mVec3_c sPos1;
+3
View File
@@ -111,6 +111,9 @@ public:
bool checkFlag(u32 flag) {
return mFlags & flag;
}
void setFlag(u8 flag) {
mFlags |= flag;
}
void drawOnMapIfVisible(mMtx_c *mtx, int param);
void getBounds(mVec3_c *min, mVec3_c *max) const;
+2
View File
@@ -116,8 +116,10 @@ public:
int draw() override;
void deleteReady() override;
void fn_801B3C60(int roomId);
void drawMap(mMtx_c *mtx, int);
dRoom_c *getRoom(s32 idx);
void updateRoomFlags(int, int);
void setRoom(int roomid, dRoom_c *room);
void handleRoomChange(int roomid);
+1 -2
View File
@@ -106,7 +106,6 @@ public:
static dStageMgr_c *GetInstance() {
return sInstance;
}
EGG::CpuTexture *getField_0x8898() {
return field_0x8898;
}
@@ -225,7 +224,7 @@ private:
// ...
u8 ___[438];
/* 0x8898 */ EGG::CpuTexture *field_0x8898;
u8 _0x889C[4];
/* 0x88A0 */ u32 field_0x88A0;
+1
View File
@@ -18,6 +18,7 @@ public:
bool isAdvance();
int getSomeEventRelatedNumber();
int getSingleShortData(int *result, u32 code, u32);
int getSingleIntData(int *result, u32 code, u32);
int getSingleFloatData(f32 *result, u32 code, u32);
int getSingleVecData(mVec3_c *result, u32 code, u32);
+1
View File
@@ -11,6 +11,7 @@ class dAcObjBase_c;
class EventManager {
public:
static bool setEvent(dAcBase_c *actor, Event *, dAcBase_c *);
static bool isInEvent(dAcBase_c *actor, const char *eventName);
static bool finishEvent(dAcBase_c *actor, const char *eventName);
static void changeOwnEvent(dAcBase_c *actor1, dAcBase_c *actor2, Event *event, UNKWORD);
File diff suppressed because it is too large Load Diff
+4
View File
@@ -18,6 +18,10 @@ STATE_DEFINE(dAcOdoorBoss_c, Close);
STATE_DEFINE(dAcOdoorBoss_c, Idle);
STATE_DEFINE(dAcOdoorBoss_c, BeforeTimeShift);
bool dAcOdoorBoss_c::canOpen() {
// Not implemented - Used to emit dtor
return true;
}
void dAcOdoorBoss_c::initializeState_UnlockWait() {}
void dAcOdoorBoss_c::executeState_UnlockWait() {}
void dAcOdoorBoss_c::finalizeState_UnlockWait() {}
+5
View File
@@ -6,6 +6,11 @@ STATE_DEFINE(dAcOShutter_c, Wait);
STATE_DEFINE(dAcOShutter_c, Open);
STATE_DEFINE(dAcOShutter_c, Close);
bool dAcOShutter_c::canOpen() {
// Not implemented - Used to emit dtor
return true;
}
void dAcOShutter_c::initializeState_Wait() {}
void dAcOShutter_c::executeState_Wait() {}
void dAcOShutter_c::finalizeState_Wait() {}
@@ -1,9 +1,16 @@
#include "d/a/obj/d_a_obj_shutter_change_scene.h"
#include "f/f_base.h"
SPECIAL_ACTOR_PROFILE(
OBJ_SHUTTER_CHANGE_SCENE, dAcOShutterChangeScene_c, fProfile::OBJ_SHUTTER_CHANGE_SCENE, 0x18A, 0, 6
);
bool dAcOShutterChangeScene_c::canOpen() {
// Not implemented - Used to emit dtor
return true;
}
STATE_DEFINE(dAcOShutterChangeScene_c, WaitOpenShutter);
STATE_DEFINE(dAcOShutterChangeScene_c, WaitOpenShutterForEvent);
STATE_DEFINE(dAcOShutterChangeScene_c, OpenShutter);
@@ -5,6 +5,10 @@ SPECIAL_ACTOR_PROFILE(OBJ_TR_SHUTTER_CS, dAcOTrlyShtrChgScn_c, fProfile::OBJ_TR_
STATE_DEFINE(dAcOTrlyShtrChgScn_c, Wait);
STATE_DEFINE(dAcOTrlyShtrChgScn_c, OpenEvent);
bool dAcOTrlyShtrChgScn_c::canOpen() {
// Not implemented - Used to emit dtor
return true;
}
void dAcOTrlyShtrChgScn_c::initializeState_Wait() {}
void dAcOTrlyShtrChgScn_c::executeState_Wait() {}
void dAcOTrlyShtrChgScn_c::finalizeState_Wait() {}
@@ -5,6 +5,10 @@ SPECIAL_ACTOR_PROFILE(OBJ_TROLLEY_SHUTTER, dAcOTrolleyShutter_c, fProfile::OBJ_T
STATE_DEFINE(dAcOTrolleyShutter_c, Wait);
STATE_DEFINE(dAcOTrolleyShutter_c, OpenEvent);
bool dAcOTrolleyShutter_c::canOpen() {
// Not implemented - Used to emit dtor
return true;
}
void dAcOTrolleyShutter_c::initializeState_Wait() {}
void dAcOTrolleyShutter_c::executeState_Wait() {}
void dAcOTrolleyShutter_c::finalizeState_Wait() {}