summaryrefslogtreecommitdiff
path: root/src/JSystem/JStudio/JStudio_JStage/object-camera.cpp
blob: bd1de09692fe9b1fa004d4c27bb03d4c3af56792 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
//
// Generated by dtk
// Translation Unit: object-camera.cpp
//

#include "JSystem/JSystem.h" // IWYU pragma: keep

#include "JSystem/JStudio/JStudio_JStage/object-camera.h"
#include "dolphin/types.h"

namespace JStudio_JStage {

const TAdaptor_camera::TVVOutput TAdaptor_camera::saoVVOutput_[5] = {
    TVVOutput(TECAMERA_7, &JStage::TCamera::JSGSetViewRoll, &JStage::TCamera::JSGGetViewRoll),
    TVVOutput(TECAMERA_6, &JStage::TCamera::JSGSetProjectionFovy, &JStage::TCamera::JSGGetProjectionFovy),
    TVVOutput(TECAMERA_8, &JStage::TCamera::JSGSetProjectionNear, &JStage::TCamera::JSGGetProjectionNear),
    TVVOutput(TECAMERA_9, &JStage::TCamera::JSGSetProjectionFar, &JStage::TCamera::JSGGetProjectionFar),
    TVVOutput(TE_VALUE_NONE, NULL, NULL),
};

/* 80277354-802773E8       .text __ct__Q214JStudio_JStage15TAdaptor_cameraFPCQ26JStage7TSystemPQ26JStage7TCamera */
TAdaptor_camera::TAdaptor_camera(const JStage::TSystem* system, JStage::TCamera* camera)
    : mSystem(system)
    , mObject(camera)
{
}

/* 802773E8-80277460       .text __dt__Q214JStudio_JStage15TAdaptor_cameraFv */
TAdaptor_camera::~TAdaptor_camera() {
    adaptor_do_end(NULL);
}

/* 80277460-802774A8       .text adaptor_do_prepare__Q214JStudio_JStage15TAdaptor_cameraFPCQ27JStudio7TObject */
void TAdaptor_camera::adaptor_do_prepare(const JStudio::TObject* object) {
    for (const TVVOutput* output = saoVVOutput_; output->mValueIndex != -1; output++) {
        mVariableValues[output->mValueIndex].setOutput(output);
    }
}

namespace {
    struct TTransformed_ {
        JStudio::TControl::TTransform_position mCurrent;
        JStudio::TControl::TTransform_position mTarget;
    };
    
    inline const TTransformed_* transformOnGet_transform_ifEnabled_(const JStudio::TControl* pControl, const TTransformed_& rSrc, TTransformed_* pDst) {
        if (!pControl->transformOnGet_isEnabled()) {
            return &rSrc;
        } else {
            pControl->transformOnGet_transform(rSrc.mCurrent, &pDst->mCurrent);
            pControl->transformOnGet_transform(rSrc.mTarget, &pDst->mTarget);
            return pDst;
        }
    }
    inline const TTransformed_* transformOnSet_transform_ifEnabled_(const JStudio::TControl* pControl, const TTransformed_& rSrc, TTransformed_* pDst) {
        if (!pControl->transformOnSet_isEnabled()) {
            return &rSrc;
        } else {
            pControl->transformOnSet_transform(rSrc.mCurrent, &pDst->mCurrent);
            pControl->transformOnSet_transform(rSrc.mTarget, &pDst->mTarget);
            return pDst;
        }
    }
};

/* 802774A8-80277600       .text adaptor_do_begin__Q214JStudio_JStage15TAdaptor_cameraFPCQ27JStudio7TObject */
void TAdaptor_camera::adaptor_do_begin(const JStudio::TObject* object) {
    mObject->JSGFEnableFlag(1);
    
    JStudio::TControl* pControl = (JStudio::TControl*)object->getControl();
    TTransformed_ sp20;
    TTransformed_ sp08;
    const TTransformed_* r29;
    mObject->JSGGetViewPosition(&sp20.mCurrent.mPosition);
    mObject->JSGGetViewTargetPosition(&sp20.mTarget.mPosition);
    r29 = (TTransformed_*)transformOnGet_transform_ifEnabled_(pControl, sp20, &sp08);
    adaptor_setVariableValue_Vec(sauVariableValue_3_POSITION_XYZ, r29->mCurrent.mPosition);
    adaptor_setVariableValue_Vec(sauVariableValue_3_TARGET_POSITION_XYZ, r29->mTarget.mPosition);
    for (const TVVOutput* output = saoVVOutput_; output->mValueIndex != -1; output++) {
        mVariableValues[output->mValueIndex].setValue_immediate((mObject->*(output->mGetter))());
    }
}

/* 80277600-80277654       .text adaptor_do_end__Q214JStudio_JStage15TAdaptor_cameraFPCQ27JStudio7TObject */
void TAdaptor_camera::adaptor_do_end(const JStudio::TObject* object) {
    mObject->JSGFDisableFlag(1);
}

/* 80277654-8027771C       .text adaptor_do_update__Q214JStudio_JStage15TAdaptor_cameraFPCQ27JStudio7TObjectUl */
void TAdaptor_camera::adaptor_do_update(const JStudio::TObject* object, u32 p2) {
    JStudio::TControl* pControl = (JStudio::TControl*)object->getControl();
    TTransformed_ sp20;
    TTransformed_ sp08;
    adaptor_getVariableValue_Vec(&sp20.mCurrent.mPosition, sauVariableValue_3_POSITION_XYZ);
    adaptor_getVariableValue_Vec(&sp20.mTarget.mPosition, sauVariableValue_3_TARGET_POSITION_XYZ);
    const TTransformed_* r31 = transformOnSet_transform_ifEnabled_(pControl, sp20, &sp08);
    mObject->JSGSetViewPosition(r31->mCurrent.mPosition);
    mObject->JSGSetViewTargetPosition(r31->mTarget.mPosition);
}

/* 8027771C-80277750       .text adaptor_do_data__Q214JStudio_JStage15TAdaptor_cameraFPCQ27JStudio7TObjectPCvUlPCvUl */
void TAdaptor_camera::adaptor_do_data(const JStudio::TObject* object, const void* p2, u32 p3, const void* p4, u32 p5) {
    TAdaptor_object_::adaptor_data_(mObject, p2, p3, p4, p5);
}

/* 80277750-802777A4       .text adaptor_do_PARENT__Q214JStudio_JStage15TAdaptor_cameraFQ37JStudio4data15TEOperationDataPCvUl */
void TAdaptor_camera::adaptor_do_PARENT(JStudio::data::TEOperationData operation, const void* p2, u32 p3) {
    switch (operation) {
    case JStudio::data::TEOD_Unknown_18:
        mF0 = (JStage::TObject*)mSystem->JSGFindObject((const char*)p2, JStage::TOBJ_ACTOR_UNK);
        break;
    default:
        break;
    }
}

/* 802777A4-80277814       .text adaptor_do_PARENT_NODE__Q214JStudio_JStage15TAdaptor_cameraFQ37JStudio4data15TEOperationDataPCvUl */
void TAdaptor_camera::adaptor_do_PARENT_NODE(JStudio::data::TEOperationData operation, const void* p2, u32 p3) {
    switch (operation) {
    case JStudio::data::TEOD_Unknown_18:
        if (mF0) {
            mF4 = mF0->JSGFindNodeID((const char*)p2);
        }
        break;
    case JStudio::data::TEOD_Unknown_19:
        mF4 = *(u32*)p2;
        break;
    default:
        break;
    }
}

/* 80277814-80277870       .text adaptor_do_PARENT_ENABLE__Q214JStudio_JStage15TAdaptor_cameraFQ37JStudio4data15TEOperationDataPCvUl */
void TAdaptor_camera::adaptor_do_PARENT_ENABLE(JStudio::data::TEOperationData operation, const void* p2, u32 p3) {
    switch (operation) {
    case JStudio::data::TEOD_Unknown_02: {
        JStage::TObject* parent = NULL;
        u32 idx                 = -1;
        if (*(u32*)p2 != 0) {
            parent = mF0;
            idx    = mF4;
        }
        mObject->JSGSetParent(parent, idx);
        break;
    }
    default:
        break;
    }
}

} // namespace JStudio_JStage