summaryrefslogtreecommitdiff
path: root/src/JSystem/JStudio/JStudio_JAudio/object-sound.cpp
blob: a83d76d20730609e97a1ea8fd2c3a68cb66fab89 (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
152
//
// Generated by dtk
// Translation Unit: object-sound.cpp
//

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

#include "JSystem/JStudio/JStudio_JAudio/object-sound.h"
#include "JSystem/JAudio/JAISound.h"
#include "JSystem/JAudio/JAIBasic.h"
#include "math.h"
#include "dolphin/types.h"

namespace JStudio_JAudio {

/* 80278D20-80278DC0       .text __ct__Q214JStudio_JAudio14TAdaptor_soundFP8JAIBasic */
TAdaptor_sound::TAdaptor_sound(JAIBasic* basic) {
    mpBasic = basic;
    mpSound = NULL;
    mSoundID = -1;
    mPosition = NULL;
}

/* 80278DC0-80278E38       .text __dt__Q214JStudio_JAudio14TAdaptor_soundFv */
TAdaptor_sound::~TAdaptor_sound() {
    if (mpSound != NULL) {
        mpSound->stop(0);
    }
}

/* 80278E38-80278F40       .text adaptor_do_prepare__Q214JStudio_JAudio14TAdaptor_soundFPCQ27JStudio7TObject */
void TAdaptor_sound::adaptor_do_prepare(const JStudio::TObject* param_1) {
    static TSetVariableValue_immediate aoData[] = {
        TSetVariableValue_immediate(0, 0.0f),
        TSetVariableValue_immediate(1, 0.0f),
        TSetVariableValue_immediate(2, 0.0f),
        TSetVariableValue_immediate(0xFFFFFFFF, NAN),
    };
    adaptor_setVariableValue_immediate(aoData);
    mVariableValues[3].setOutput(&TAdaptor_sound::soVVOOn_BEGIN_FADE_IN_);
    mVariableValues[4].setOutput(&TAdaptor_sound::soVVOOn_END_FADE_OUT_);

    for (TAdaptor_sound::TVVOSetValue_* value = TAdaptor_sound::saoVVOSetValue_; value->mValueIndex != -1; value++) {
        mVariableValues[value->mValueIndex].setOutput(value);
    }
}

TAdaptor_sound::TVVOOn_BEGIN_FADE_IN_ TAdaptor_sound::soVVOOn_BEGIN_FADE_IN_;
TAdaptor_sound::TVVOOn_END_FADE_OUT_ TAdaptor_sound::soVVOOn_END_FADE_OUT_;
TAdaptor_sound::TVVOSetValue_ TAdaptor_sound::saoVVOSetValue_[] = {
    TAdaptor_sound::TVVOSetValue_(UNK_6_e, &JAISound::setDemoVolume),
    TAdaptor_sound::TVVOSetValue_(UNK_7_e, &JAISound::setDemoPan),
    TAdaptor_sound::TVVOSetValue_(UNK_8_e, &JAISound::setDemoPitch),
    TAdaptor_sound::TVVOSetValue_(UNK_9_e, &JAISound::setTempoProportion),
    TAdaptor_sound::TVVOSetValue_(UNK_A_e, &JAISound::setDemoFxmix),
    TAdaptor_sound::TVVOSetValue_(UNK_MINUS1_e, NULL),
};

/* 80278F40-80278FB8       .text adaptor_do_update__Q214JStudio_JAudio14TAdaptor_soundFPCQ27JStudio7TObjectUl */
void TAdaptor_sound::adaptor_do_update(const JStudio::TObject* object, u32) {
    JStudio::TControl* control = (JStudio::TControl*)object->getControl();
    Vec* r30 = &_F8;
    adaptor_getVariableValue_Vec(r30, sauVariableValue_3_POSITION_XYZ);
    if (control->mTransformOnSet) {
        Vec temp;
        MTXMultVec(control->mTransformOnSet_Matrix, r30, &temp);
        *r30 = temp;
    }
}

/* 80278FB8-80279064       .text adaptor_do_SOUND__Q214JStudio_JAudio14TAdaptor_soundFQ37JStudio4data15TEOperationDataPCvUl */
void TAdaptor_sound::adaptor_do_SOUND(JStudio::data::TEOperationData op, const void* data, u32) {
    switch (op) {
    case JStudio::data::TEOD_Unknown_19: {
        u32 soundID = *(s32*)data;
        if (mpBasic->checkEnablePrepare(soundID)) {
            if (mpSound) {
                mpSound->stop(0);
            }
            mSoundID = soundID;
            mpBasic->prepareSoundVec(soundID, &mpSound, mPosition, 0, 0, 4);
            if (!mpSound) {
                return;
            }
        } else {
            mSoundID = *(s32*)data;
        }
        break;
    }
    default:
        break;
    }
}

/* 80279064-8027908C       .text adaptor_do_LOCATED__Q214JStudio_JAudio14TAdaptor_soundFQ37JStudio4data15TEOperationDataPCvUl */
void TAdaptor_sound::adaptor_do_LOCATED(JStudio::data::TEOperationData op, const void* data, u32 flag) {
    switch (op) {
    case JStudio::data::TEOD_Unknown_02: {
        Vec* pos  = *(Vec**)data;
        mPosition = NULL;
        if (!pos)
            return;
        mPosition = &_F8;
        break;
    }
    default:
        break;
    }
}

/* 8027908C-8027915C       .text __cl__Q314JStudio_JAudio14TAdaptor_sound21TVVOOn_BEGIN_FADE_IN_CFfPQ27JStudio8TAdaptor */
void TAdaptor_sound::TVVOOn_BEGIN_FADE_IN_::operator()(f32 value, JStudio::TAdaptor* adaptor) const {
    JStudio_JAudio::TAdaptor_sound* adaptor_sound = (JStudio_JAudio::TAdaptor_sound*)adaptor;
    const u32 soundID = adaptor_sound->mSoundID;
    if (adaptor_sound->mpBasic->checkEnablePrepare(soundID)) {
        if (adaptor_sound->mpSound) {
            adaptor_sound->mpSound->start(value);
        }
    } else {
        if (adaptor_sound->mpSound) {
#if VERSION > VERSION_DEMO
            bool temp = !adaptor_sound->mpBasic->checkEnablePrepare(soundID) && !(soundID & 0x00000c00);
            if (!temp)
#endif
            {
                adaptor_sound->mpSound->stop(0);
            }
        }
        adaptor_sound->mpBasic->startSoundVec(soundID, &adaptor_sound->mpSound, adaptor_sound->mPosition, value, 0, 4);
        if (!adaptor_sound->mpSound) {
            return;
        }
    }
}

/* 8027915C-8027919C       .text __cl__Q314JStudio_JAudio14TAdaptor_sound20TVVOOn_END_FADE_OUT_CFfPQ27JStudio8TAdaptor */
void TAdaptor_sound::TVVOOn_END_FADE_OUT_::operator()(f32 value, JStudio::TAdaptor* adaptor) const {
    JAISound* sound = ((JStudio_JAudio::TAdaptor_sound*)adaptor)->mpSound;
    if (sound) {
        sound->stop(value);
    }
}

/* 8027919C-802791D8       .text __cl__Q314JStudio_JAudio14TAdaptor_sound13TVVOSetValue_CFfPQ27JStudio8TAdaptor */
void TAdaptor_sound::TVVOSetValue_::operator()(f32 value, JStudio::TAdaptor* adaptor) const {
    JAISound* sound = ((JStudio_JAudio::TAdaptor_sound*)adaptor)->mpSound;
    if (sound) {
        (sound->*(this->mSetFunc))(value, 0);
    }
}

}; // namespace JStudio_JAudio