summaryrefslogtreecommitdiff
path: root/include/JSystem/JStudio/JStudio_JParticle/control.h
blob: 3dc1e3883380b77bde09e9adc025e90080e5ecb1 (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
#ifndef JSTUDIO_JPARTICLE_CONTROL_H
#define JSTUDIO_JPARTICLE_CONTROL_H

#include "JSystem/JParticle/JPAParticle.h"
#include "JSystem/JStage/JSGSystem.h"
#include "JSystem/JStudio/JStudio/jstudio-object.h"

namespace JStudio_JParticle {
struct TCreateObject : public JStudio::TCreateObject {
    TCreateObject(JPAEmitterManager* p_emitMgr, const JStage::TSystem* p_system) {
        mEmitterMgr = p_emitMgr;
        mSystem = p_system;
    }

    virtual ~TCreateObject();
    virtual bool create(JStudio::TObject**, JStudio::stb::data::TParse_TBlock_object const&);

    /* 0x0C */ JPAEmitterManager* mEmitterMgr;
    /* 0x10 */ const JStage::TSystem* mSystem;
};

struct TAdaptor_particle : public JStudio::TAdaptor_particle {
    struct TJPACallback_ : JPACallBackBase<JPABaseEmitter*> {
        inline TJPACallback_(TAdaptor_particle* adaptor)
            : mAdaptor(adaptor)
            , mObject(NULL)
        {
        }

        virtual void execute(JPABaseEmitter*); // _0C

        /* 0x04 */ TAdaptor_particle* mAdaptor;
        /* 0x08 */ const JStudio::TObject* mObject;
    };

    struct TVVOOn_BEGIN_FADE_IN_ : public JStudio::TVariableValue::TOutput {
        virtual void operator()(float, JStudio::TAdaptor*) const;
    };

    struct TVVOOn_END_FADE_OUT_ : public JStudio::TVariableValue::TOutput {
        virtual void operator()(float, JStudio::TAdaptor*) const;
    };

    static TVVOOn_BEGIN_FADE_IN_ soVVOOn_BEGIN_FADE_IN_;
    static TVVOOn_END_FADE_OUT_ soVVOOn_END_FADE_OUT_;

    TAdaptor_particle(JPAEmitterManager*, const JStage::TSystem*);
    void beginParticle_fadeIn_();
    void endParticle_fadeOut_(u32);

    virtual ~TAdaptor_particle();
    virtual void adaptor_do_prepare(const JStudio::TObject*);
    virtual void adaptor_do_end(const JStudio::TObject*);
    virtual void adaptor_do_update(const JStudio::TObject*, u32);
    virtual void adaptor_do_PARTICLE(JStudio::data::TEOperationData, void const*, u32);
    virtual void adaptor_do_PARENT(JStudio::data::TEOperationData, void const*, u32);
    virtual void adaptor_do_PARENT_NODE(JStudio::data::TEOperationData, void const*, u32);
    virtual void adaptor_do_PARENT_ENABLE(JStudio::data::TEOperationData, void const*, u32);

    /* 0x19C */ JPAEmitterManager* mEmitterManager;
    /* 0x1A0 */ JPABaseEmitter* mEmitter;
    /* 0x1A4 */ TJPACallback_ mCallback;
    /* 0x1B0 */ int field_0x1B0;
    /* 0x1B4 */ int field_0x1B4;
    /* 0x1B8 */ u32 field_0x1B8;
    /* 0x1BC */ u32 field_0x1BC;
    /* 0x1C0 */ const JStage::TSystem* mSystem;
    /* 0x1C4 */ JStage::TObject* mObject;
    /* 0x1C8 */ u32 field_0x1C8;
    /* 0x1CC */ bool field_0x1CC;
};  // Size: 0x1D0

};  // namespace JStudio_JParticle

#endif /* JSTUDIO_JPARTICLE_CONTROL_H */