Match and link CGuiLight

This commit is contained in:
Phillip Stephens 2023-01-13 16:53:27 -08:00
parent dbbc6f3236
commit 129709bc0d
20 changed files with 252 additions and 68 deletions

View File

@ -15,7 +15,7 @@ lbl_803ECA50:
.4byte ProcessUserInput__10CGuiWidgetFRC11CFinalInput .4byte ProcessUserInput__10CGuiWidgetFRC11CFinalInput
.4byte Touch__10CGuiWidgetCFv .4byte Touch__10CGuiWidgetCFv
.4byte GetIsVisible__10CGuiWidgetCFv .4byte GetIsVisible__10CGuiWidgetCFv
.4byte sub_80020464 .4byte GetIsActive__10CGuiWidgetCFv
.4byte GetWidgetTypeID__16CAuiEnergyBarT01CFv .4byte GetWidgetTypeID__16CAuiEnergyBarT01CFv
.4byte AddWorkerWidget__10CGuiWidgetFP10CGuiWidget .4byte AddWorkerWidget__10CGuiWidgetFP10CGuiWidget
.4byte GetIsFinishedLoadingWidgetSpecific__10CGuiWidgetCFv .4byte GetIsFinishedLoadingWidgetSpecific__10CGuiWidgetCFv
@ -782,7 +782,7 @@ Create__16CAuiEnergyBarT01FP9CGuiFrameR12CInputStreamb:
/* 802CBC14 002C8B74 38 61 00 08 */ addi r3, r1, 8 /* 802CBC14 002C8B74 38 61 00 08 */ addi r3, r1, 8
/* 802CBC18 002C8B78 7F A4 EB 78 */ mr r4, r29 /* 802CBC18 002C8B78 7F A4 EB 78 */ mr r4, r29
/* 802CBC1C 002C8B7C 7F C5 F3 78 */ mr r5, r30 /* 802CBC1C 002C8B7C 7F C5 F3 78 */ mr r5, r30
/* 802CBC20 002C8B80 4B FF F1 31 */ bl ReadWidgetHeader__10CGuiWidgetFP9CGuiFrameR12CInputStreamb /* 802CBC20 002C8B80 4B FF F1 31 */ bl ReadWidgetHeader__10CGuiWidgetFP9CGuiFrameR12CInputStream
/* 802CBC24 002C8B84 83 81 00 08 */ lwz r28, 8(r1) /* 802CBC24 002C8B84 83 81 00 08 */ lwz r28, 8(r1)
/* 802CBC28 002C8B88 7F C3 F3 78 */ mr r3, r30 /* 802CBC28 002C8B88 7F C3 F3 78 */ mr r3, r30
/* 802CBC2C 002C8B8C 89 81 00 0C */ lbz r12, 0xc(r1) /* 802CBC2C 002C8B8C 89 81 00 0C */ lbz r12, 0xc(r1)

View File

@ -15,7 +15,7 @@ lbl_803ECA90:
.4byte ProcessUserInput__10CGuiWidgetFRC11CFinalInput .4byte ProcessUserInput__10CGuiWidgetFRC11CFinalInput
.4byte Touch__10CGuiWidgetCFv .4byte Touch__10CGuiWidgetCFv
.4byte GetIsVisible__10CGuiWidgetCFv .4byte GetIsVisible__10CGuiWidgetCFv
.4byte sub_80020464 .4byte GetIsActive__10CGuiWidgetCFv
.4byte GetWidgetTypeID__13CAuiImagePaneCFv .4byte GetWidgetTypeID__13CAuiImagePaneCFv
.4byte AddWorkerWidget__10CGuiWidgetFP10CGuiWidget .4byte AddWorkerWidget__10CGuiWidgetFP10CGuiWidget
.4byte GetIsFinishedLoadingWidgetSpecific__13CAuiImagePaneCFv .4byte GetIsFinishedLoadingWidgetSpecific__13CAuiImagePaneCFv
@ -1511,7 +1511,7 @@ Create__13CAuiImagePaneFP9CGuiFrameR12CInputStreamb:
/* 802CD214 002CA174 38 61 00 14 */ addi r3, r1, 0x14 /* 802CD214 002CA174 38 61 00 14 */ addi r3, r1, 0x14
/* 802CD218 002CA178 7F A4 EB 78 */ mr r4, r29 /* 802CD218 002CA178 7F A4 EB 78 */ mr r4, r29
/* 802CD21C 002CA17C 7F C5 F3 78 */ mr r5, r30 /* 802CD21C 002CA17C 7F C5 F3 78 */ mr r5, r30
/* 802CD220 002CA180 4B FF DB 31 */ bl ReadWidgetHeader__10CGuiWidgetFP9CGuiFrameR12CInputStreamb /* 802CD220 002CA180 4B FF DB 31 */ bl ReadWidgetHeader__10CGuiWidgetFP9CGuiFrameR12CInputStream
/* 802CD224 002CA184 83 81 00 14 */ lwz r28, 0x14(r1) /* 802CD224 002CA184 83 81 00 14 */ lwz r28, 0x14(r1)
/* 802CD228 002CA188 7F C3 F3 78 */ mr r3, r30 /* 802CD228 002CA188 7F C3 F3 78 */ mr r3, r30
/* 802CD22C 002CA18C 89 81 00 18 */ lbz r12, 0x18(r1) /* 802CD22C 002CA18C 89 81 00 18 */ lbz r12, 0x18(r1)
@ -1724,4 +1724,3 @@ lbl_803D69E0:
# ROM: 0x3D39E0 # ROM: 0x3D39E0
.asciz "??(??)" .asciz "??(??)"
.balign 4 .balign 4

View File

@ -15,7 +15,7 @@ lbl_803EC6F8:
.4byte ProcessUserInput__10CGuiWidgetFRC11CFinalInput .4byte ProcessUserInput__10CGuiWidgetFRC11CFinalInput
.4byte Touch__10CGuiWidgetCFv .4byte Touch__10CGuiWidgetCFv
.4byte GetIsVisible__10CGuiWidgetCFv .4byte GetIsVisible__10CGuiWidgetCFv
.4byte sub_80020464 .4byte GetIsActive__10CGuiWidgetCFv
.4byte GetWidgetTypeID__9CAuiMeterCFv .4byte GetWidgetTypeID__9CAuiMeterCFv
.4byte AddWorkerWidget__9CAuiMeterFP10CGuiWidget .4byte AddWorkerWidget__9CAuiMeterFP10CGuiWidget
.4byte GetIsFinishedLoadingWidgetSpecific__10CGuiWidgetCFv .4byte GetIsFinishedLoadingWidgetSpecific__10CGuiWidgetCFv
@ -515,4 +515,3 @@ lbl_803D6878:
# ROM: 0x3D3878 # ROM: 0x3D3878
.asciz "??(??)" .asciz "??(??)"
.balign 4 .balign 4

View File

@ -37,7 +37,7 @@ lbl_803EC738:
.4byte ProcessUserInput__10CGuiWidgetFRC11CFinalInput .4byte ProcessUserInput__10CGuiWidgetFRC11CFinalInput
.4byte Touch__10CGuiWidgetCFv .4byte Touch__10CGuiWidgetCFv
.4byte GetIsVisible__10CGuiWidgetCFv .4byte GetIsVisible__10CGuiWidgetCFv
.4byte sub_80020464 .4byte GetIsActive__10CGuiWidgetCFv
.4byte GetWidgetTypeID__10CGuiCameraCFv .4byte GetWidgetTypeID__10CGuiCameraCFv
.4byte AddWorkerWidget__10CGuiWidgetFP10CGuiWidget .4byte AddWorkerWidget__10CGuiWidgetFP10CGuiWidget
.4byte GetIsFinishedLoadingWidgetSpecific__10CGuiWidgetCFv .4byte GetIsFinishedLoadingWidgetSpecific__10CGuiWidgetCFv
@ -58,7 +58,7 @@ lbl_803EC778:
.4byte ProcessUserInput__10CGuiWidgetFRC11CFinalInput .4byte ProcessUserInput__10CGuiWidgetFRC11CFinalInput
.4byte Touch__10CGuiWidgetCFv .4byte Touch__10CGuiWidgetCFv
.4byte GetIsVisible__10CGuiWidgetCFv .4byte GetIsVisible__10CGuiWidgetCFv
.4byte sub_80020464 .4byte GetIsActive__10CGuiWidgetCFv
.4byte GetWidgetTypeID__18CGuiCompoundWidgetCFv .4byte GetWidgetTypeID__18CGuiCompoundWidgetCFv
.4byte AddWorkerWidget__10CGuiWidgetFP10CGuiWidget .4byte AddWorkerWidget__10CGuiWidgetFP10CGuiWidget
.4byte GetIsFinishedLoadingWidgetSpecific__10CGuiWidgetCFv .4byte GetIsFinishedLoadingWidgetSpecific__10CGuiWidgetCFv
@ -86,7 +86,7 @@ lbl_803EC7C8:
.4byte ProcessUserInput__10CGuiWidgetFRC11CFinalInput .4byte ProcessUserInput__10CGuiWidgetFRC11CFinalInput
.4byte Touch__10CGuiWidgetCFv .4byte Touch__10CGuiWidgetCFv
.4byte GetIsVisible__10CGuiWidgetCFv .4byte GetIsVisible__10CGuiWidgetCFv
.4byte sub_80020464 .4byte GetIsActive__10CGuiWidgetCFv
.4byte GetWidgetTypeID__9CGuiGroupCFv .4byte GetWidgetTypeID__9CGuiGroupCFv
.4byte AddWorkerWidget__9CGuiGroupFP10CGuiWidget .4byte AddWorkerWidget__9CGuiGroupFP10CGuiWidget
.4byte GetIsFinishedLoadingWidgetSpecific__10CGuiWidgetCFv .4byte GetIsFinishedLoadingWidgetSpecific__10CGuiWidgetCFv
@ -135,7 +135,7 @@ Create__9CAuiMeterFP9CGuiFrameR12CInputStreamb:
/* 802C1260 002BE1C0 38 61 00 08 */ addi r3, r1, 8 /* 802C1260 002BE1C0 38 61 00 08 */ addi r3, r1, 8
/* 802C1264 002BE1C4 7F C4 F3 78 */ mr r4, r30 /* 802C1264 002BE1C4 7F C4 F3 78 */ mr r4, r30
/* 802C1268 002BE1C8 7F E5 FB 78 */ mr r5, r31 /* 802C1268 002BE1C8 7F E5 FB 78 */ mr r5, r31
/* 802C126C 002BE1CC 48 00 9A E5 */ bl ReadWidgetHeader__10CGuiWidgetFP9CGuiFrameR12CInputStreamb /* 802C126C 002BE1CC 48 00 9A E5 */ bl ReadWidgetHeader__10CGuiWidgetFP9CGuiFrameR12CInputStream
/* 802C1270 002BE1D0 83 A1 00 08 */ lwz r29, 8(r1) /* 802C1270 002BE1D0 83 A1 00 08 */ lwz r29, 8(r1)
/* 802C1274 002BE1D4 7F E3 FB 78 */ mr r3, r31 /* 802C1274 002BE1D4 7F E3 FB 78 */ mr r3, r31
/* 802C1278 002BE1D8 89 81 00 0C */ lbz r12, 0xc(r1) /* 802C1278 002BE1D8 89 81 00 0C */ lbz r12, 0xc(r1)
@ -549,7 +549,7 @@ Create__10CGuiCameraFP9CGuiFrameR12CInputStreamb:
/* 802C1828 002BE788 7F C4 F3 78 */ mr r4, r30 /* 802C1828 002BE788 7F C4 F3 78 */ mr r4, r30
/* 802C182C 002BE78C 38 61 00 08 */ addi r3, r1, 8 /* 802C182C 002BE78C 38 61 00 08 */ addi r3, r1, 8
/* 802C1830 002BE790 7F E5 FB 78 */ mr r5, r31 /* 802C1830 002BE790 7F E5 FB 78 */ mr r5, r31
/* 802C1834 002BE794 48 00 95 1D */ bl ReadWidgetHeader__10CGuiWidgetFP9CGuiFrameR12CInputStreamb /* 802C1834 002BE794 48 00 95 1D */ bl ReadWidgetHeader__10CGuiWidgetFP9CGuiFrameR12CInputStream
/* 802C1838 002BE798 83 A1 00 08 */ lwz r29, 8(r1) /* 802C1838 002BE798 83 A1 00 08 */ lwz r29, 8(r1)
/* 802C183C 002BE79C 7F E3 FB 78 */ mr r3, r31 /* 802C183C 002BE79C 7F E3 FB 78 */ mr r3, r31
/* 802C1840 002BE7A0 89 81 00 0C */ lbz r12, 0xc(r1) /* 802C1840 002BE7A0 89 81 00 0C */ lbz r12, 0xc(r1)
@ -943,7 +943,7 @@ lbl_802C1D90:
/* 802C1D90 002BECF0 7C 83 23 78 */ mr r3, r4 /* 802C1D90 002BECF0 7C 83 23 78 */ mr r3, r4
/* 802C1D94 002BECF4 7C A4 2B 78 */ mr r4, r5 /* 802C1D94 002BECF4 7C A4 2B 78 */ mr r4, r5
/* 802C1D98 002BECF8 7C C5 33 78 */ mr r5, r6 /* 802C1D98 002BECF8 7C C5 33 78 */ mr r5, r6
/* 802C1D9C 002BECFC 48 00 1F 29 */ bl Create__9CGuiLightFP9CGuiFrameR12CInputStreamb /* 802C1D9C 002BECFC 48 00 1F 29 */ bl Create__9CGuiLightFP9CGuiFrameR12CInputStreamP12IObjectStore
/* 802C1DA0 002BED00 48 00 00 44 */ b lbl_802C1DE4 /* 802C1DA0 002BED00 48 00 00 44 */ b lbl_802C1DE4
lbl_802C1DA4: lbl_802C1DA4:
/* 802C1DA4 002BED04 7C 83 23 78 */ mr r3, r4 /* 802C1DA4 002BED04 7C 83 23 78 */ mr r3, r4
@ -2664,7 +2664,7 @@ Create__9CGuiGroupFP9CGuiFrameR12CInputStreamb:
/* 802C34D8 002C0438 38 61 00 08 */ addi r3, r1, 8 /* 802C34D8 002C0438 38 61 00 08 */ addi r3, r1, 8
/* 802C34DC 002C043C 7F C4 F3 78 */ mr r4, r30 /* 802C34DC 002C043C 7F C4 F3 78 */ mr r4, r30
/* 802C34E0 002C0440 7F E5 FB 78 */ mr r5, r31 /* 802C34E0 002C0440 7F E5 FB 78 */ mr r5, r31
/* 802C34E4 002C0444 48 00 78 6D */ bl ReadWidgetHeader__10CGuiWidgetFP9CGuiFrameR12CInputStreamb /* 802C34E4 002C0444 48 00 78 6D */ bl ReadWidgetHeader__10CGuiWidgetFP9CGuiFrameR12CInputStream
/* 802C34E8 002C0448 83 A1 00 08 */ lwz r29, 8(r1) /* 802C34E8 002C0448 83 A1 00 08 */ lwz r29, 8(r1)
/* 802C34EC 002C044C 7F E3 FB 78 */ mr r3, r31 /* 802C34EC 002C044C 7F E3 FB 78 */ mr r3, r31
/* 802C34F0 002C0450 89 81 00 0C */ lbz r12, 0xc(r1) /* 802C34F0 002C0450 89 81 00 0C */ lbz r12, 0xc(r1)

View File

@ -15,7 +15,7 @@ lbl_803EC808:
.4byte ProcessUserInput__10CGuiWidgetFRC11CFinalInput .4byte ProcessUserInput__10CGuiWidgetFRC11CFinalInput
.4byte Touch__10CGuiWidgetCFv .4byte Touch__10CGuiWidgetCFv
.4byte GetIsVisible__10CGuiWidgetCFv .4byte GetIsVisible__10CGuiWidgetCFv
.4byte sub_80020464 .4byte GetIsActive__10CGuiWidgetCFv
.4byte GetWidgetTypeID__14CGuiHeadWidgetCFv .4byte GetWidgetTypeID__14CGuiHeadWidgetCFv
.4byte AddWorkerWidget__10CGuiWidgetFP10CGuiWidget .4byte AddWorkerWidget__10CGuiWidgetFP10CGuiWidget
.4byte GetIsFinishedLoadingWidgetSpecific__10CGuiWidgetCFv .4byte GetIsFinishedLoadingWidgetSpecific__10CGuiWidgetCFv
@ -54,7 +54,7 @@ Create__14CGuiHeadWidgetFP9CGuiFrameR12CInputStreamb:
/* 802C360C 002C056C 38 61 00 08 */ addi r3, r1, 8 /* 802C360C 002C056C 38 61 00 08 */ addi r3, r1, 8
/* 802C3610 002C0570 7F C4 F3 78 */ mr r4, r30 /* 802C3610 002C0570 7F C4 F3 78 */ mr r4, r30
/* 802C3614 002C0574 7F E5 FB 78 */ mr r5, r31 /* 802C3614 002C0574 7F E5 FB 78 */ mr r5, r31
/* 802C3618 002C0578 48 00 77 39 */ bl ReadWidgetHeader__10CGuiWidgetFP9CGuiFrameR12CInputStreamb /* 802C3618 002C0578 48 00 77 39 */ bl ReadWidgetHeader__10CGuiWidgetFP9CGuiFrameR12CInputStream
/* 802C361C 002C057C 83 61 00 08 */ lwz r27, 8(r1) /* 802C361C 002C057C 83 61 00 08 */ lwz r27, 8(r1)
/* 802C3620 002C0580 3C 60 80 3D */ lis r3, lbl_803D68A0@ha /* 802C3620 002C0580 3C 60 80 3D */ lis r3, lbl_803D68A0@ha
/* 802C3624 002C0584 8B 81 00 0C */ lbz r28, 0xc(r1) /* 802C3624 002C0584 8B 81 00 0C */ lbz r28, 0xc(r1)
@ -144,4 +144,3 @@ lbl_803D68A0:
# ROM: 0x3D38A0 # ROM: 0x3D38A0
.asciz "??(??)" .asciz "??(??)"
.balign 4 .balign 4

View File

@ -3,8 +3,8 @@
.section .data .section .data
.balign 8 .balign 8
.global lbl_803EC848 .global __vt__9CGuiLight
lbl_803EC848: __vt__9CGuiLight:
# ROM: 0x3E9848 # ROM: 0x3E9848
.4byte 0 .4byte 0
.4byte 0 .4byte 0
@ -15,7 +15,7 @@ lbl_803EC848:
.4byte ProcessUserInput__10CGuiWidgetFRC11CFinalInput .4byte ProcessUserInput__10CGuiWidgetFRC11CFinalInput
.4byte Touch__10CGuiWidgetCFv .4byte Touch__10CGuiWidgetCFv
.4byte GetIsVisible__10CGuiWidgetCFv .4byte GetIsVisible__10CGuiWidgetCFv
.4byte sub_80020464 .4byte GetIsActive__10CGuiWidgetCFv
.4byte GetWidgetTypeID__9CGuiLightCFv .4byte GetWidgetTypeID__9CGuiLightCFv
.4byte AddWorkerWidget__10CGuiWidgetFP10CGuiWidget .4byte AddWorkerWidget__10CGuiWidgetFP10CGuiWidget
.4byte GetIsFinishedLoadingWidgetSpecific__10CGuiWidgetCFv .4byte GetIsFinishedLoadingWidgetSpecific__10CGuiWidgetCFv
@ -338,9 +338,9 @@ __dt__9CGuiLightFv:
/* 802C3BCC 002C0B2C 93 C1 00 08 */ stw r30, 8(r1) /* 802C3BCC 002C0B2C 93 C1 00 08 */ stw r30, 8(r1)
/* 802C3BD0 002C0B30 7C 7E 1B 79 */ or. r30, r3, r3 /* 802C3BD0 002C0B30 7C 7E 1B 79 */ or. r30, r3, r3
/* 802C3BD4 002C0B34 41 82 00 38 */ beq lbl_802C3C0C /* 802C3BD4 002C0B34 41 82 00 38 */ beq lbl_802C3C0C
/* 802C3BD8 002C0B38 3C 60 80 3F */ lis r3, lbl_803EC848@ha /* 802C3BD8 002C0B38 3C 60 80 3F */ lis r3, __vt__9CGuiLight@ha
/* 802C3BDC 002C0B3C 7F C4 F3 78 */ mr r4, r30 /* 802C3BDC 002C0B3C 7F C4 F3 78 */ mr r4, r30
/* 802C3BE0 002C0B40 38 03 C8 48 */ addi r0, r3, lbl_803EC848@l /* 802C3BE0 002C0B40 38 03 C8 48 */ addi r0, r3, __vt__9CGuiLight@l
/* 802C3BE4 002C0B44 90 1E 00 00 */ stw r0, 0(r30) /* 802C3BE4 002C0B44 90 1E 00 00 */ stw r0, 0(r30)
/* 802C3BE8 002C0B48 80 7E 00 B0 */ lwz r3, 0xb0(r30) /* 802C3BE8 002C0B48 80 7E 00 B0 */ lwz r3, 0xb0(r30)
/* 802C3BEC 002C0B4C 4B FF E9 2D */ bl RemoveLight__9CGuiFrameFP9CGuiLight /* 802C3BEC 002C0B4C 4B FF E9 2D */ bl RemoveLight__9CGuiFrameFP9CGuiLight
@ -370,8 +370,8 @@ __ct__9CGuiLightFRCQ210CGuiWidget15CGuiWidgetParmsRC6CLight:
/* 802C3C3C 002C0B9C 93 C1 00 08 */ stw r30, 8(r1) /* 802C3C3C 002C0B9C 93 C1 00 08 */ stw r30, 8(r1)
/* 802C3C40 002C0BA0 7C 7E 1B 78 */ mr r30, r3 /* 802C3C40 002C0BA0 7C 7E 1B 78 */ mr r30, r3
/* 802C3C44 002C0BA4 48 00 6F E1 */ bl __ct__10CGuiWidgetFRCQ210CGuiWidget15CGuiWidgetParms /* 802C3C44 002C0BA4 48 00 6F E1 */ bl __ct__10CGuiWidgetFRCQ210CGuiWidget15CGuiWidgetParms
/* 802C3C48 002C0BA8 3C 60 80 3F */ lis r3, lbl_803EC848@ha /* 802C3C48 002C0BA8 3C 60 80 3F */ lis r3, __vt__9CGuiLight@ha
/* 802C3C4C 002C0BAC 38 03 C8 48 */ addi r0, r3, lbl_803EC848@l /* 802C3C4C 002C0BAC 38 03 C8 48 */ addi r0, r3, __vt__9CGuiLight@l
/* 802C3C50 002C0BB0 90 1E 00 00 */ stw r0, 0(r30) /* 802C3C50 002C0BB0 90 1E 00 00 */ stw r0, 0(r30)
/* 802C3C54 002C0BB4 80 1F 00 1C */ lwz r0, 0x1c(r31) /* 802C3C54 002C0BB4 80 1F 00 1C */ lwz r0, 0x1c(r31)
/* 802C3C58 002C0BB8 90 1E 00 B8 */ stw r0, 0xb8(r30) /* 802C3C58 002C0BB8 90 1E 00 B8 */ stw r0, 0xb8(r30)
@ -402,8 +402,8 @@ __ct__9CGuiLightFRCQ210CGuiWidget15CGuiWidgetParmsRC6CLight:
/* 802C3CBC 002C0C1C 38 21 00 10 */ addi r1, r1, 0x10 /* 802C3CBC 002C0C1C 38 21 00 10 */ addi r1, r1, 0x10
/* 802C3CC0 002C0C20 4E 80 00 20 */ blr /* 802C3CC0 002C0C20 4E 80 00 20 */ blr
.global Create__9CGuiLightFP9CGuiFrameR12CInputStreamb .global Create__9CGuiLightFP9CGuiFrameR12CInputStreamP12IObjectStore
Create__9CGuiLightFP9CGuiFrameR12CInputStreamb: Create__9CGuiLightFP9CGuiFrameR12CInputStreamP12IObjectStore:
/* 802C3CC4 002C0C24 94 21 FD 90 */ stwu r1, -0x270(r1) /* 802C3CC4 002C0C24 94 21 FD 90 */ stwu r1, -0x270(r1)
/* 802C3CC8 002C0C28 7C 08 02 A6 */ mflr r0 /* 802C3CC8 002C0C28 7C 08 02 A6 */ mflr r0
/* 802C3CCC 002C0C2C 90 01 02 74 */ stw r0, 0x274(r1) /* 802C3CCC 002C0C2C 90 01 02 74 */ stw r0, 0x274(r1)
@ -415,7 +415,7 @@ Create__9CGuiLightFP9CGuiFrameR12CInputStreamb:
/* 802C3CE4 002C0C44 7F C4 F3 78 */ mr r4, r30 /* 802C3CE4 002C0C44 7F C4 F3 78 */ mr r4, r30
/* 802C3CE8 002C0C48 38 61 00 0C */ addi r3, r1, 0xc /* 802C3CE8 002C0C48 38 61 00 0C */ addi r3, r1, 0xc
/* 802C3CEC 002C0C4C 7F E5 FB 78 */ mr r5, r31 /* 802C3CEC 002C0C4C 7F E5 FB 78 */ mr r5, r31
/* 802C3CF0 002C0C50 48 00 70 61 */ bl ReadWidgetHeader__10CGuiWidgetFP9CGuiFrameR12CInputStreamb /* 802C3CF0 002C0C50 48 00 70 61 */ bl ReadWidgetHeader__10CGuiWidgetFP9CGuiFrameR12CInputStream
/* 802C3CF4 002C0C54 80 81 00 1C */ lwz r4, 0x1c(r1) /* 802C3CF4 002C0C54 80 81 00 1C */ lwz r4, 0x1c(r1)
/* 802C3CF8 002C0C58 7F E3 FB 78 */ mr r3, r31 /* 802C3CF8 002C0C58 7F E3 FB 78 */ mr r3, r31
/* 802C3CFC 002C0C5C 83 81 00 0C */ lwz r28, 0xc(r1) /* 802C3CFC 002C0C5C 83 81 00 0C */ lwz r28, 0xc(r1)

View File

@ -15,7 +15,7 @@ lbl_803EC888:
.4byte ProcessUserInput__10CGuiWidgetFRC11CFinalInput .4byte ProcessUserInput__10CGuiWidgetFRC11CFinalInput
.4byte Touch__9CGuiModelCFv .4byte Touch__9CGuiModelCFv
.4byte GetIsVisible__10CGuiWidgetCFv .4byte GetIsVisible__10CGuiWidgetCFv
.4byte sub_80020464 .4byte GetIsActive__10CGuiWidgetCFv
.4byte GetWidgetTypeID__9CGuiModelCFv .4byte GetWidgetTypeID__9CGuiModelCFv
.4byte AddWorkerWidget__10CGuiWidgetFP10CGuiWidget .4byte AddWorkerWidget__10CGuiWidgetFP10CGuiWidget
.4byte GetIsFinishedLoadingWidgetSpecific__9CGuiModelCFv .4byte GetIsFinishedLoadingWidgetSpecific__9CGuiModelCFv
@ -524,7 +524,7 @@ Create__9CGuiModelFP9CGuiFrameR12CInputStreamb:
/* 802C464C 002C15AC 38 61 00 08 */ addi r3, r1, 8 /* 802C464C 002C15AC 38 61 00 08 */ addi r3, r1, 8
/* 802C4650 002C15B0 7F A4 EB 78 */ mr r4, r29 /* 802C4650 002C15B0 7F A4 EB 78 */ mr r4, r29
/* 802C4654 002C15B4 7F C5 F3 78 */ mr r5, r30 /* 802C4654 002C15B4 7F C5 F3 78 */ mr r5, r30
/* 802C4658 002C15B8 48 00 66 F9 */ bl ReadWidgetHeader__10CGuiWidgetFP9CGuiFrameR12CInputStreamb /* 802C4658 002C15B8 48 00 66 F9 */ bl ReadWidgetHeader__10CGuiWidgetFP9CGuiFrameR12CInputStream
/* 802C465C 002C15BC 83 81 00 08 */ lwz r28, 8(r1) /* 802C465C 002C15BC 83 81 00 08 */ lwz r28, 8(r1)
/* 802C4660 002C15C0 7F C3 F3 78 */ mr r3, r30 /* 802C4660 002C15C0 7F C3 F3 78 */ mr r3, r30
/* 802C4664 002C15C4 89 81 00 0C */ lbz r12, 0xc(r1) /* 802C4664 002C15C4 89 81 00 0C */ lbz r12, 0xc(r1)

View File

@ -15,7 +15,7 @@ lbl_803EC8E0:
.4byte ProcessUserInput__10CGuiWidgetFRC11CFinalInput .4byte ProcessUserInput__10CGuiWidgetFRC11CFinalInput
.4byte Touch__10CGuiWidgetCFv .4byte Touch__10CGuiWidgetCFv
.4byte GetIsVisible__10CGuiWidgetCFv .4byte GetIsVisible__10CGuiWidgetCFv
.4byte sub_80020464 .4byte GetIsActive__10CGuiWidgetCFv
.4byte GetWidgetTypeID__8CGuiPaneCFv .4byte GetWidgetTypeID__8CGuiPaneCFv
.4byte AddWorkerWidget__10CGuiWidgetFP10CGuiWidget .4byte AddWorkerWidget__10CGuiWidgetFP10CGuiWidget
.4byte GetIsFinishedLoadingWidgetSpecific__10CGuiWidgetCFv .4byte GetIsFinishedLoadingWidgetSpecific__10CGuiWidgetCFv
@ -424,7 +424,7 @@ Create__8CGuiPaneFP9CGuiFrameR12CInputStreamb:
/* 802C5A74 002C29D4 7F C4 F3 78 */ mr r4, r30 /* 802C5A74 002C29D4 7F C4 F3 78 */ mr r4, r30
/* 802C5A78 002C29D8 38 61 00 14 */ addi r3, r1, 0x14 /* 802C5A78 002C29D8 38 61 00 14 */ addi r3, r1, 0x14
/* 802C5A7C 002C29DC 7F E5 FB 78 */ mr r5, r31 /* 802C5A7C 002C29DC 7F E5 FB 78 */ mr r5, r31
/* 802C5A80 002C29E0 48 00 52 D1 */ bl ReadWidgetHeader__10CGuiWidgetFP9CGuiFrameR12CInputStreamb /* 802C5A80 002C29E0 48 00 52 D1 */ bl ReadWidgetHeader__10CGuiWidgetFP9CGuiFrameR12CInputStream
/* 802C5A84 002C29E4 83 A1 00 14 */ lwz r29, 0x14(r1) /* 802C5A84 002C29E4 83 A1 00 14 */ lwz r29, 0x14(r1)
/* 802C5A88 002C29E8 7F E3 FB 78 */ mr r3, r31 /* 802C5A88 002C29E8 7F E3 FB 78 */ mr r3, r31
/* 802C5A8C 002C29EC 89 81 00 18 */ lbz r12, 0x18(r1) /* 802C5A8C 002C29EC 89 81 00 18 */ lbz r12, 0x18(r1)
@ -527,4 +527,3 @@ lbl_803D68B8:
# ROM: 0x3D38B8 # ROM: 0x3D38B8
.asciz "??(??)" .asciz "??(??)"
.balign 4 .balign 4

View File

@ -15,7 +15,7 @@ lbl_803EC930:
.4byte ProcessUserInput__15CGuiSliderGroupFRC11CFinalInput .4byte ProcessUserInput__15CGuiSliderGroupFRC11CFinalInput
.4byte Touch__10CGuiWidgetCFv .4byte Touch__10CGuiWidgetCFv
.4byte GetIsVisible__10CGuiWidgetCFv .4byte GetIsVisible__10CGuiWidgetCFv
.4byte sub_80020464 .4byte GetIsActive__10CGuiWidgetCFv
.4byte GetWidgetTypeID__15CGuiSliderGroupCFv .4byte GetWidgetTypeID__15CGuiSliderGroupCFv
.4byte AddWorkerWidget__15CGuiSliderGroupFP10CGuiWidget .4byte AddWorkerWidget__15CGuiSliderGroupFP10CGuiWidget
.4byte GetIsFinishedLoadingWidgetSpecific__10CGuiWidgetCFv .4byte GetIsFinishedLoadingWidgetSpecific__10CGuiWidgetCFv
@ -591,7 +591,7 @@ Create__15CGuiSliderGroupFP9CGuiFrameR12CInputStreamb:
/* 802C62EC 002C324C 7F C4 F3 78 */ mr r4, r30 /* 802C62EC 002C324C 7F C4 F3 78 */ mr r4, r30
/* 802C62F0 002C3250 38 61 00 08 */ addi r3, r1, 8 /* 802C62F0 002C3250 38 61 00 08 */ addi r3, r1, 8
/* 802C62F4 002C3254 93 A1 00 44 */ stw r29, 0x44(r1) /* 802C62F4 002C3254 93 A1 00 44 */ stw r29, 0x44(r1)
/* 802C62F8 002C3258 48 00 4A 59 */ bl ReadWidgetHeader__10CGuiWidgetFP9CGuiFrameR12CInputStreamb /* 802C62F8 002C3258 48 00 4A 59 */ bl ReadWidgetHeader__10CGuiWidgetFP9CGuiFrameR12CInputStream
/* 802C62FC 002C325C 83 A1 00 08 */ lwz r29, 8(r1) /* 802C62FC 002C325C 83 A1 00 08 */ lwz r29, 8(r1)
/* 802C6300 002C3260 7F E3 FB 78 */ mr r3, r31 /* 802C6300 002C3260 7F E3 FB 78 */ mr r3, r31
/* 802C6304 002C3264 89 81 00 0C */ lbz r12, 0xc(r1) /* 802C6304 002C3264 89 81 00 0C */ lbz r12, 0xc(r1)

View File

@ -15,7 +15,7 @@ lbl_803EC970:
.4byte ProcessUserInput__14CGuiTableGroupCFRC11CFinalInput .4byte ProcessUserInput__14CGuiTableGroupCFRC11CFinalInput
.4byte Touch__10CGuiWidgetCFv .4byte Touch__10CGuiWidgetCFv
.4byte GetIsVisible__10CGuiWidgetCFv .4byte GetIsVisible__10CGuiWidgetCFv
.4byte sub_80020464 .4byte GetIsActive__10CGuiWidgetCFv
.4byte GetWidgetTypeID__14CGuiTableGroupCFv .4byte GetWidgetTypeID__14CGuiTableGroupCFv
.4byte AddWorkerWidget__14CGuiTableGroupFP10CGuiWidget .4byte AddWorkerWidget__14CGuiTableGroupFP10CGuiWidget
.4byte GetIsFinishedLoadingWidgetSpecific__10CGuiWidgetCFv .4byte GetIsFinishedLoadingWidgetSpecific__10CGuiWidgetCFv
@ -1042,7 +1042,7 @@ Create__14CGuiTableGroupFP9CGuiFrameR12CInputStreamb:
/* 802C72F8 002C4258 38 61 00 08 */ addi r3, r1, 8 /* 802C72F8 002C4258 38 61 00 08 */ addi r3, r1, 8
/* 802C72FC 002C425C 7F C4 F3 78 */ mr r4, r30 /* 802C72FC 002C425C 7F C4 F3 78 */ mr r4, r30
/* 802C7300 002C4260 7F E5 FB 78 */ mr r5, r31 /* 802C7300 002C4260 7F E5 FB 78 */ mr r5, r31
/* 802C7304 002C4264 48 00 3A 4D */ bl ReadWidgetHeader__10CGuiWidgetFP9CGuiFrameR12CInputStreamb /* 802C7304 002C4264 48 00 3A 4D */ bl ReadWidgetHeader__10CGuiWidgetFP9CGuiFrameR12CInputStream
/* 802C7308 002C4268 83 A1 00 08 */ lwz r29, 8(r1) /* 802C7308 002C4268 83 A1 00 08 */ lwz r29, 8(r1)
/* 802C730C 002C426C 7F E3 FB 78 */ mr r3, r31 /* 802C730C 002C426C 7F E3 FB 78 */ mr r3, r31
/* 802C7310 002C4270 89 81 00 0C */ lbz r12, 0xc(r1) /* 802C7310 002C4270 89 81 00 0C */ lbz r12, 0xc(r1)

View File

@ -15,7 +15,7 @@ lbl_803EC9B8:
.4byte ProcessUserInput__10CGuiWidgetFRC11CFinalInput .4byte ProcessUserInput__10CGuiWidgetFRC11CFinalInput
.4byte Touch__10CGuiWidgetCFv .4byte Touch__10CGuiWidgetCFv
.4byte GetIsVisible__10CGuiWidgetCFv .4byte GetIsVisible__10CGuiWidgetCFv
.4byte sub_80020464 .4byte GetIsActive__10CGuiWidgetCFv
.4byte GetWidgetTypeID__12CGuiTextPaneCFv .4byte GetWidgetTypeID__12CGuiTextPaneCFv
.4byte AddWorkerWidget__10CGuiWidgetFP10CGuiWidget .4byte AddWorkerWidget__10CGuiWidgetFP10CGuiWidget
.4byte GetIsFinishedLoadingWidgetSpecific__12CGuiTextPaneCFv .4byte GetIsFinishedLoadingWidgetSpecific__12CGuiTextPaneCFv
@ -417,7 +417,7 @@ Create__12CGuiTextPaneFP9CGuiFrameR12CInputStreamb:
/* 802C7B10 002C4A70 38 61 00 44 */ addi r3, r1, 0x44 /* 802C7B10 002C4A70 38 61 00 44 */ addi r3, r1, 0x44
/* 802C7B14 002C4A74 7F A4 EB 78 */ mr r4, r29 /* 802C7B14 002C4A74 7F A4 EB 78 */ mr r4, r29
/* 802C7B18 002C4A78 7F C5 F3 78 */ mr r5, r30 /* 802C7B18 002C4A78 7F C5 F3 78 */ mr r5, r30
/* 802C7B1C 002C4A7C 48 00 32 35 */ bl ReadWidgetHeader__10CGuiWidgetFP9CGuiFrameR12CInputStreamb /* 802C7B1C 002C4A7C 48 00 32 35 */ bl ReadWidgetHeader__10CGuiWidgetFP9CGuiFrameR12CInputStream
/* 802C7B20 002C4A80 83 61 00 44 */ lwz r27, 0x44(r1) /* 802C7B20 002C4A80 83 61 00 44 */ lwz r27, 0x44(r1)
/* 802C7B24 002C4A84 7F C3 F3 78 */ mr r3, r30 /* 802C7B24 002C4A84 7F C3 F3 78 */ mr r3, r30
/* 802C7B28 002C4A88 89 81 00 48 */ lbz r12, 0x48(r1) /* 802C7B28 002C4A88 89 81 00 48 */ lbz r12, 0x48(r1)
@ -570,4 +570,3 @@ lbl_803D68D8:
# ROM: 0x3D38D8 # ROM: 0x3D38D8
.asciz "??(??)" .asciz "??(??)"
.balign 4 .balign 4

View File

@ -15,7 +15,7 @@ lbl_803ECA10:
.4byte ProcessUserInput__10CGuiWidgetFRC11CFinalInput .4byte ProcessUserInput__10CGuiWidgetFRC11CFinalInput
.4byte Touch__10CGuiWidgetCFv .4byte Touch__10CGuiWidgetCFv
.4byte GetIsVisible__10CGuiWidgetCFv .4byte GetIsVisible__10CGuiWidgetCFv
.4byte sub_80020464 .4byte GetIsActive__10CGuiWidgetCFv
.4byte GetWidgetTypeID__10CGuiWidgetCFv .4byte GetWidgetTypeID__10CGuiWidgetCFv
.4byte AddWorkerWidget__10CGuiWidgetFP10CGuiWidget .4byte AddWorkerWidget__10CGuiWidgetFP10CGuiWidget
.4byte GetIsFinishedLoadingWidgetSpecific__10CGuiWidgetCFv .4byte GetIsFinishedLoadingWidgetSpecific__10CGuiWidgetCFv
@ -584,8 +584,8 @@ __ct__10CGuiWidgetFRCQ210CGuiWidget15CGuiWidgetParms:
/* 802CAD48 002C7CA8 38 21 00 10 */ addi r1, r1, 0x10 /* 802CAD48 002C7CA8 38 21 00 10 */ addi r1, r1, 0x10
/* 802CAD4C 002C7CAC 4E 80 00 20 */ blr /* 802CAD4C 002C7CAC 4E 80 00 20 */ blr
.global ReadWidgetHeader__10CGuiWidgetFP9CGuiFrameR12CInputStreamb .global ReadWidgetHeader__10CGuiWidgetFP9CGuiFrameR12CInputStream
ReadWidgetHeader__10CGuiWidgetFP9CGuiFrameR12CInputStreamb: ReadWidgetHeader__10CGuiWidgetFP9CGuiFrameR12CInputStream:
/* 802CAD50 002C7CB0 94 21 FF 90 */ stwu r1, -0x70(r1) /* 802CAD50 002C7CB0 94 21 FF 90 */ stwu r1, -0x70(r1)
/* 802CAD54 002C7CB4 7C 08 02 A6 */ mflr r0 /* 802CAD54 002C7CB4 7C 08 02 A6 */ mflr r0
/* 802CAD58 002C7CB8 90 01 00 74 */ stw r0, 0x74(r1) /* 802CAD58 002C7CB8 90 01 00 74 */ stw r0, 0x74(r1)
@ -664,7 +664,7 @@ Create__10CGuiWidgetFP9CGuiFrameR12CInputStreamb:
/* 802CAE70 002C7DD0 38 61 00 08 */ addi r3, r1, 8 /* 802CAE70 002C7DD0 38 61 00 08 */ addi r3, r1, 8
/* 802CAE74 002C7DD4 7F C4 F3 78 */ mr r4, r30 /* 802CAE74 002C7DD4 7F C4 F3 78 */ mr r4, r30
/* 802CAE78 002C7DD8 7F E5 FB 78 */ mr r5, r31 /* 802CAE78 002C7DD8 7F E5 FB 78 */ mr r5, r31
/* 802CAE7C 002C7DDC 4B FF FE D5 */ bl ReadWidgetHeader__10CGuiWidgetFP9CGuiFrameR12CInputStreamb /* 802CAE7C 002C7DDC 4B FF FE D5 */ bl ReadWidgetHeader__10CGuiWidgetFP9CGuiFrameR12CInputStream
/* 802CAE80 002C7DE0 83 61 00 08 */ lwz r27, 8(r1) /* 802CAE80 002C7DE0 83 61 00 08 */ lwz r27, 8(r1)
/* 802CAE84 002C7DE4 3C 60 80 3D */ lis r3, lbl_803D68F8@ha /* 802CAE84 002C7DE4 3C 60 80 3D */ lis r3, lbl_803D68F8@ha
/* 802CAE88 002C7DE8 8B 81 00 0C */ lbz r28, 0xc(r1) /* 802CAE88 002C7DE8 8B 81 00 0C */ lbz r28, 0xc(r1)

View File

@ -5767,8 +5767,8 @@ lbl_8002044C:
/* 8002045C 0001D3BC 38 21 00 20 */ addi r1, r1, 0x20 /* 8002045C 0001D3BC 38 21 00 20 */ addi r1, r1, 0x20
/* 80020460 0001D3C0 4E 80 00 20 */ blr /* 80020460 0001D3C0 4E 80 00 20 */ blr
.global sub_80020464 .global GetIsActive__10CGuiWidgetCFv
sub_80020464: GetIsActive__10CGuiWidgetCFv:
/* 80020464 0001D3C4 88 03 00 B6 */ lbz r0, 0xb6(r3) /* 80020464 0001D3C4 88 03 00 B6 */ lbz r0, 0xb6(r3)
/* 80020468 0001D3C8 54 03 DF FE */ rlwinm r3, r0, 0x1b, 0x1f, 0x1f /* 80020468 0001D3C8 54 03 DF FE */ rlwinm r3, r0, 0x1b, 0x1f, 0x1f
/* 8002046C 0001D3CC 4E 80 00 20 */ blr /* 8002046C 0001D3CC 4E 80 00 20 */ blr

View File

@ -424,7 +424,7 @@ LIBS = [
"GuiSys/CAuiMeter", "GuiSys/CAuiMeter",
"GuiSys/CGuiGroup", "GuiSys/CGuiGroup",
"GuiSys/CGuiHeadWidget", "GuiSys/CGuiHeadWidget",
"GuiSys/CGuiLight", ["GuiSys/CGuiLight", True],
"GuiSys/CGuiModel", "GuiSys/CGuiModel",
["GuiSys/CGuiObject", False], ["GuiSys/CGuiObject", False],
"GuiSys/CGuiPane", "GuiSys/CGuiPane",

View File

@ -5,13 +5,15 @@
class CGuiWidget; class CGuiWidget;
class CGuiCamera; class CGuiCamera;
class CGuiLight;
class CGuiFrame { class CGuiFrame {
public: public:
CGuiWidget* FindWidget(const char* name) const; CGuiWidget* FindWidget(const char* name) const;
CGuiWidget* FindWidget(const rstl::string& name) const; CGuiWidget* FindWidget(const rstl::string& name) const;
CGuiCamera* GetFrameCamera() const { return x14_camera; } CGuiCamera* GetFrameCamera() const { return x14_camera; }
void AddLight(CGuiLight* light);
void RemoveLight(CGuiLight* light);
private: private:
char x0_pad[0x14]; char x0_pad[0x14];

View File

@ -0,0 +1,30 @@
#ifndef _CGUILIGHT
#define _CGUILIGHT
#include "GuiSys/CGuiWidget.hpp"
#include "Kyoto/Graphics/CLight.hpp"
class IObjectStore;
class CGuiLight : public CGuiWidget {
public:
static CGuiLight* Create(CGuiFrame* frame, CInputStream& in, IObjectStore* sp);
CGuiLight(const CGuiWidgetParms& parms, const CLight& light);
~CGuiLight();
virtual void SetIsVisible(const bool visible);
CLight BuildLight() const;
FourCC GetWidgetTypeID() const;
public:
ELightType xb8_type;
float xbc_spotCutoff;
float xc0_distC;
float xc4_distL;
float xc8_distQ;
float xcc_angleC;
float xd0_angleL;
float xd4_angleQ;
u32 xd8_lightId;
CColor xdc_ambColor;
};
#endif // _CGUILIGHT

View File

@ -17,15 +17,16 @@ public:
void MoveInWorld(const CVector3f& offset); void MoveInWorld(const CVector3f& offset);
CVector3f GetWorldPosition() const; CVector3f GetWorldPosition() const;
CVector3f GetLocalPosition() const; CVector3f GetLocalPosition() const;
const CTransform4f& GetWorldTransform() const { return x34_worldXF; }
void SetLocalPosition(const CVector3f& pos); void SetLocalPosition(const CVector3f& pos);
void SetLocalTransform(const CTransform4f& xf); void SetLocalTransform(const CTransform4f& xf);
void SetO2WTransform(const CTransform4f& xf);
void RotateReset(); void RotateReset();
CVector3f RotateO2P(const CVector3f& vec) const; CVector3f RotateO2P(const CVector3f& vec) const;
CVector3f RotateW2O(const CVector3f& offset) const { CVector3f RotateW2O(const CVector3f& offset) const {
CVector3f ret = x34_worldXF.TransposeRotate(offset); return x34_worldXF.TransposeRotate(offset);
return ret;
} }
CVector3f RotateTranslateW2O(const CVector3f& vec) const; CVector3f RotateTranslateW2O(const CVector3f& vec) const;
void MultiplyO2P(const CTransform4f& xf); void MultiplyO2P(const CTransform4f& xf);
@ -37,6 +38,11 @@ public:
x64_parent = obj; x64_parent = obj;
} }
CGuiObject* Parent();
const CGuiObject* GetChildObject() const;
CGuiObject* ChildObject();
const CGuiObject* GetNextSibling() const;
CGuiObject* NextSibling();
private: private:
CTransform4f x4_localXF; CTransform4f x4_localXF;
CTransform4f x34_worldXF; CTransform4f x34_worldXF;

View File

@ -5,7 +5,10 @@
#include "Kyoto/Graphics/CColor.hpp" #include "Kyoto/Graphics/CColor.hpp"
#include "Kyoto/SObjectTag.hpp" #include "Kyoto/SObjectTag.hpp"
#include "rstl/string.hpp"
class CFinalInput; class CFinalInput;
class CGuiFrame;
enum ETraversalMode { enum ETraversalMode {
kTM_ChildrenAndSiblings = 0, kTM_ChildrenAndSiblings = 0,
@ -22,26 +25,47 @@ public:
kGMDF_Additive = 3, kGMDF_Additive = 3,
kGMDF_AlphaAdditiveOverdraw = 4 kGMDF_AlphaAdditiveOverdraw = 4
}; };
class CGuiWidgetParms; class CGuiWidgetParms {
public:
CGuiWidgetParms(CGuiFrame*, const rstl::string&, bool, short, short, bool, bool, bool,
const CColor&, CGuiWidget::EGuiModelDrawFlags, bool, bool);
CGuiFrame* x0_frame;
bool x4_useAnimController;
short x6_selfId;
short x8_parentId;
bool xa_defaultVisible;
bool xb_defaultActive;
bool xc_cullFaces;
bool xd_g;
bool xe_h;
CColor x10_color;
EGuiModelDrawFlags x14_drawFlags;
};
void Update(float dt) override; CGuiWidget(const CGuiWidgetParms& parms);
void Draw(const CGuiWidgetDrawParms& drawParms) override; ~CGuiWidget();
void Initialize() override; void Update(float dt);
void Draw(const CGuiWidgetDrawParms& drawParms) const;
virtual void Reset(ETraversalMode mode); void Initialize();
virtual void ProcessUserInput(const CFinalInput& input); virtual void ProcessUserInput(const CFinalInput& input);
virtual void Touch(); virtual void Touch() const;
virtual bool GetIsVisible() const; virtual bool GetIsVisible() const;
virtual bool GetIsActive() const; virtual bool GetIsActive() const;
virtual bool GetMouseActive() const;
virtual FourCC GetWidgetTypeID() const { return 'BWIG'; } virtual FourCC GetWidgetTypeID() const { return 'BWIG'; }
virtual bool AddWorkerWidget(CGuiWidget* worker); virtual bool AddWorkerWidget(CGuiWidget* worker);
virtual bool GetIsFinishedLoadingWidgetSpecific(); virtual bool GetIsFinishedLoadingWidgetSpecific() const;
virtual void OnVisibleChange(); virtual void OnVisible();
virtual void OnActiveChange(); virtual void OnActivate();
void SetIsVisible(bool visible);
void SetColor(const CColor& color); void SetColor(const CColor& color);
const CColor& GetColor() const { return xa4_color; }
void SetVisibility(bool visible, ETraversalMode mode); void SetVisibility(bool visible, ETraversalMode mode);
void ParseBaseInfo(CGuiFrame* frame, CInputStream& in, const CGuiWidgetParms& parms);
static CGuiWidgetParms ReadWidgetHeader(CGuiFrame* frame, CInputStream& in);
CGuiFrame* GetFrame() { return xb0_frame; }
private: private:
short x70_selfId; short x70_selfId;

108
src/GuiSys/CGuiLight.cpp Normal file
View File

@ -0,0 +1,108 @@
#include "GuiSys/CGuiLight.hpp"
#include "GuiSys/CGuiFrame.hpp"
#include "Kyoto/Streams/CInputStream.hpp"
CGuiLight* CGuiLight::Create(CGuiFrame* parent, CInputStream& in, IObjectStore* sp) {
CGuiWidgetParms parms = ReadWidgetHeader(parent, in);
CColor color = parms.x10_color;
ELightType type = (ELightType)in.ReadInt32();
float distC = in.ReadFloat();
float distL = in.ReadFloat();
float distQ = in.ReadFloat();
float angC = in.ReadFloat();
float angL = in.ReadFloat();
float angQ = in.ReadFloat();
uint lightId = in.ReadInt32();
CGuiLight* ret = nullptr;
switch (type) {
case kLT_Spot: {
float cutoff = in.ReadFloat();
CLight lt = CLight::BuildSpot(CVector3f::Zero(), CVector3f::Zero(), color, cutoff);
lt.SetAttenuation(distC, distL, distQ);
lt.SetAngleAttenuation(angC, angL, angQ);
lt.SetLightId(lightId);
ret = new CGuiLight(parms, lt);
break;
}
case kLT_Point: {
CLight lt = CLight::BuildPoint(CVector3f::Zero(), color);
lt.SetAttenuation(distC, distL, distQ);
lt.SetLightId(lightId);
ret = new CGuiLight(parms, lt);
break;
}
case kLT_Directional: {
CLight lt = CLight::BuildDirectional(CVector3f::Zero(), color);
lt.SetLightId(lightId);
ret = new CGuiLight(parms, lt);
break;
}
default:
break;
}
ret->ParseBaseInfo(parent, in, parms);
parent->AddLight(ret);
return ret;
}
CGuiLight::CGuiLight(const CGuiWidgetParms& parms, const CLight& light)
: CGuiWidget(parms)
, xb8_type(light.GetType())
, xbc_spotCutoff(light.GetSpotCutoff())
, xc0_distC(light.GetAttenuationConstant())
, xc4_distL(light.GetAttenuationLinear())
, xc8_distQ(light.GetAttenuationQuadratic())
, xcc_angleC(light.GetAngleAttenuationConstant())
, xd0_angleL(light.GetAngleAttenuationLinear())
, xd4_angleQ(light.GetAngleAttenuationQuadratic())
, xd8_lightId(light.GetId())
, xdc_ambColor(CColor::Black()) {}
CGuiLight::~CGuiLight() { GetFrame()->RemoveLight(this); }
void CGuiLight::SetIsVisible(const bool visible) {
if (visible) {
GetFrame()->AddLight(this);
} else {
GetFrame()->RemoveLight(this);
}
CGuiWidget::SetIsVisible(visible);
}
CLight CGuiLight::BuildLight() const {
CLight ret = CLight::BuildLocalAmbient(CVector3f::Zero(), CColor(0.f, 0.f, 0.f));
CVector3f pos = GetWorldPosition();
CVector3f dir = GetWorldTransform().GetColumn(kDY);
CColor color = GetColor();
switch (xb8_type) {
case kLT_Spot:
ret = CLight::BuildSpot(pos, dir, color, xbc_spotCutoff);
break;
case kLT_Point:
ret = CLight::BuildPoint(pos, color);
break;
case kLT_Directional:
ret = CLight::BuildDirectional(dir, color);
break;
case kLT_Custom:
ret = CLight::BuildCustom(pos, dir, color, xc0_distC, xc4_distL, xc8_distQ, xcc_angleC,
xd0_angleL, xd4_angleQ);
default:
break;
}
ret.SetAttenuation(xc0_distC, xc4_distL, xc8_distQ);
ret.SetAngleAttenuation(xcc_angleC, xd0_angleL, xd4_angleQ);
ret.SetLightId(xd8_lightId);
return ret;
}
FourCC CGuiLight::GetWidgetTypeID() const {
return 'LITE';
}

View File

@ -35,20 +35,17 @@ void CGuiObject::Draw(const CGuiWidgetDrawParms& parms) const {
} }
void CGuiObject::MoveInWorld(const CVector3f& offset) { void CGuiObject::MoveInWorld(const CVector3f& offset) {
CVector3f pos;
if (x64_parent != nullptr) { if (x64_parent != nullptr) {
CVector3f pos = x64_parent->RotateW2O(offset); pos = x64_parent->RotateW2O(offset);
} }
x4_localXF.AddTranslation(offset); x4_localXF.AddTranslation(offset);
RecalculateTransforms(); RecalculateTransforms();
} }
CVector3f CGuiObject::GetWorldPosition() const { CVector3f CGuiObject::GetWorldPosition() const { return x34_worldXF.GetTranslation(); }
return x34_worldXF.GetTranslation();
}
CVector3f CGuiObject::GetLocalPosition() const { CVector3f CGuiObject::GetLocalPosition() const { return x4_localXF.GetTranslation(); }
return x4_localXF.GetTranslation();
}
void CGuiObject::SetLocalPosition(const CVector3f& pos) { void CGuiObject::SetLocalPosition(const CVector3f& pos) {
MoveInWorld(pos - x4_localXF.GetTranslation()); MoveInWorld(pos - x4_localXF.GetTranslation());
@ -92,6 +89,28 @@ void CGuiObject::AddChildObject(CGuiObject* obj, bool makeWorldLocal, bool atEnd
prev->x6c_nextSibling = obj; prev->x6c_nextSibling = obj;
} }
} else { } else {
} }
} }
const CGuiObject* CGuiObject::GetChildObject() const { return x68_child; }
CGuiObject* CGuiObject::ChildObject() { return x68_child; }
const CGuiObject* CGuiObject::GetNextSibling() const { return x6c_nextSibling; }
CGuiObject* CGuiObject::NextSibling() { return x6c_nextSibling; }
CGuiObject* CGuiObject::Parent() { return x64_parent; }
void CGuiObject::RecalculateTransforms() {
}
void CGuiObject::SetLocalTransform(const CTransform4f& xf) {
x4_localXF = xf;
RecalculateTransforms();
}
void CGuiObject::SetO2WTransform(const CTransform4f& worldXf) {
const CTransform4f invXf = x64_parent->x34_worldXF.GetQuickInverse();
const CTransform4f localXf = invXf * worldXf;
SetLocalTransform(localXf);
}