Files
LagoLunatic 86a17bbfb7 JAIZelInst OK (#1005)
* JAIZelInst OK

* Clean up some default args
2026-05-17 17:10:52 -04:00

83 lines
3.0 KiB
C++

#ifndef JSTUDIO_JAUDIO_CONTROL_H
#define JSTUDIO_JAUDIO_CONTROL_H
#include "dolphin/gx/GX.h"
#include "JSystem/JStudio/JStudio/jstudio-object.h"
#include "JSystem/JStage/JSGSystem.h"
class JAIBasic;
class JAISound;
namespace JStudio_JAudio {
typedef JStudio::TObject* (*JStudioAudioCreateFunc)(const JStudio::stb::data::TParse_TBlock_object&, JAIBasic*);
typedef void (JAISound::*TVVOSoundSetFunc)(f32, u32); // e.g. JAISound::setDirectVolume, JAISound::setDirectPitch
struct TAdaptor_sound : public JStudio::TAdaptor_sound {
struct TVVOOn_BEGIN_FADE_IN_ : public JStudio::TVariableValue::TOutput {
void operator()(float, JStudio::TAdaptor*) const;
virtual ~TVVOOn_BEGIN_FADE_IN_() {}
};
struct TVVOOn_END_FADE_OUT_ : public JStudio::TVariableValue::TOutput {
void operator()(float, JStudio::TAdaptor*) const;
virtual ~TVVOOn_END_FADE_OUT_() {}
};
struct TVVOSetValue_ : public JStudio::TVariableValue::TOutput {
TVVOSetValue_(JStudio::TAdaptor_sound::TEVariableValue idx, TVVOSoundSetFunc func) {
mValueIndex = idx;
mSetFunc = func;
}
virtual void operator()(f32, JStudio::TAdaptor*) const;
virtual ~TVVOSetValue_() {}
/* 0x00 */ /* JStudio::TVariableValue::TOutput */
/* 0x04 */ int mValueIndex;
/* 0x08 */ TVVOSoundSetFunc mSetFunc;
}; // Size: 0x14
static TVVOOn_BEGIN_FADE_IN_ soVVOOn_BEGIN_FADE_IN_;
static TVVOOn_END_FADE_OUT_ soVVOOn_END_FADE_OUT_;
static TVVOSetValue_ saoVVOSetValue_[];
TAdaptor_sound(JAIBasic*);
virtual ~TAdaptor_sound(); // _08
virtual void adaptor_do_prepare(const JStudio::TObject*); // _0C
virtual void adaptor_do_update(const JStudio::TObject*, u32); // _18
virtual void adaptor_do_SOUND(JStudio::data::TEOperationData, const void*, u32); // _20
virtual void adaptor_do_LOCATED(JStudio::data::TEOperationData, const void*, u32); // _24
void beginSound_fadeIn_(u32);
void endSound_fadeOut_(u32);
/* 0x0E8 */ JAIBasic* mpBasic;
/* 0x0EC */ JAISound* mpSound;
/* 0x0F0 */ u32 mSoundID;
/* 0x0F4 */ Vec* mPosition;
/* 0x0F8 */ Vec _F8;
// u32 _E4;
// Vec* _E8; // Vector3f* in ghidra, should be Vec* or JGeometry::TVec3* surely
// Vec _EC; // same as above
// JStage::TSystem* mSystem;
// JStage::TObject* _FC;
// u32 _100;
// u8 _104;
}; // Size: 0x104
struct TCreateObject : public JStudio::TCreateObject {
TCreateObject(JAIBasic* jai)
{
mSound = jai;
}
virtual ~TCreateObject(); // _08
virtual bool create(JStudio::TObject** newObject, const JStudio::stb::data::TParse_TBlock_object& data); // _0C
/* 0x00 */ /* JStudio::TCreateObject */
/* 0x0C */ JAIBasic* mSound;
};
} // namespace JStudio_JAudio
#endif /* JSTUDIO_JAUDIO_CONTROL_H */