summaryrefslogtreecommitdiff
path: root/include/JSystem/JAudio/JAIAnimation.h
blob: 8fef132c16a16b29a00d0d710c0f455ddb8dc74a (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
#ifndef JAIANIMATION_H
#define JAIANIMATION_H

#include "dolphin/types.h"

struct Vec;
class JAISound;
class JAIBasic;
namespace JAInter {
    class Actor;
};

// BAS sound entry
struct JAIAnimeFrameSoundData {
    /* 0x00 */ u32 mSoundID;
    /* 0x04 */ f32 mStartFrame;
    /* 0x08 */ f32 mEndFrame;
    /* 0x0C */ f32 mPitch;
    /* 0x10 */ u32 mPlayFlags;
    /* 0x14 */ u8 mVolume;
    /* 0x15 */ s8 mPitchFactor;
    /* 0x16 */ u8 mLoopCount;
    /* 0x17 */ u8 mPanning;
    /* 0x18 */ s8 mVolumeFactor;
    /* 0x19 */ u8 field_0x19[0x20 - 0x19]; // Padding
};  // Size: 0x20

// BAS header
struct JAIAnimeSoundData {
    /* 0x00 */ u16 datas; // Entry count
    /* 0x02 */ u16 field_0x02;
    /* 0x04 */ void* field_0x04;
    /* 0x08 */ JAIAnimeFrameSoundData mAfsData[];
};

struct JAIAnimeSound__Slot {
    /* 0x0 */ u8 mbIsPlaying;
    /* 0x4 */ JAISound* mpSound;
    /* 0x8 */ JAIAnimeFrameSoundData* mpAfsData;
};

class JAIAnimeSound {
public:
    /* 0x00 */ JAIAnimeSound__Slot mSlots[8];
    /* 0x60 */ u32 field_0x60;
    /* 0x64 */ u32 field_0x64;
    /* 0x68 */ u32 field_0x68;
    /* 0x6C */ u32 field_0x6c;
    /* 0x70 */ void* field_0x70[2];
    /* 0x78 */ u32 mDataCounterInc;
    /* 0x7C */ int mDataCounterLimit;
    /* 0x80 */ u32 dataCounter;
    /* 0x84 */ u32 mLoopCount;
    /* 0x88 */ f32 mCurrentTime;
    /* 0x8C */ u8 field_0x8c[0x90 - 0x8C];
    /* 0x90 */ JAIAnimeSoundData* mpAsData;
    /* 0x94 */ /* vtable */

public:
    JAIAnimeSound();
    void initActorAnimSound(void*, u32, f32);
    void setAnimSoundVec(JAIBasic*, Vec*, f32, f32, u32, u8);
    void setAnimSoundActor(JAIBasic*, JAInter::Actor*, f32, f32, u8);
    void playActorAnimSound(JAIBasic*, JAInter::Actor*, f32, u8);
    virtual void startAnimSound(void*, u32, JAISound**, JAInter::Actor*, u8);
    virtual void setSpeedModifySound(JAISound*, JAIAnimeFrameSoundData*, f32);
    void stop();
};  // Size: 0x98

#endif /* JAIANIMATION_H */