summaryrefslogtreecommitdiff
path: root/libs/JSystem/src/JStudio/JStudio_JParticle/control.cpp
blob: 18f23973c6c29e1fe2d2f2427ce98381e9b26950 (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
//
// control
//

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

#include "JSystem/JGadget/pointer.h"
#include "JSystem/JParticle/JPAEmitterManager.h"
#include "JSystem/JStudio/JStudio_JParticle/control.h"
#include "JSystem/JStudio/JStudio_JParticle/object-particle.h"

JStudio_JParticle::TCreateObject::~TCreateObject() {}

bool
JStudio_JParticle::TCreateObject::create(JStudio::TObject** ppObject,
                                         JStudio::stb::data::TParse_TBlock_object const& param_2) {
    JUT_ASSERT(40, ppObject!=NULL);
    CreateFunc func;
    switch (param_2.get_type()) {
    case 'JPTC':
        func = createObject_JPA_PARTICLE_;
        break;
    default:
        return false;
    }
    *ppObject = func(param_2, this);
    return true;
}

JPABaseEmitter* JStudio_JParticle::TCreateObject::emitter_create(u32 param_1) {
    JGeometry::TVec3<f32> local_08;
    Vec local_1c = {0.0f, 0.0f, 0.0f};
    local_08 = local_1c;
    return pJPAEmitterManager_->createSimpleEmitterID(
        local_08, param_1 & 0xffff, (param_1 >> 24) & 0xff, (param_1 >> 16) & 0xff, NULL, NULL);
}

void JStudio_JParticle::TCreateObject::emitter_destroy(JPABaseEmitter* pEmitter) {
    pJPAEmitterManager_->forceDeleteEmitter(pEmitter);
}

JStudio::TObject* JStudio_JParticle::TCreateObject::createObject_JPA_PARTICLE_(
    JStudio::stb::data::TParse_TBlock_object const& param_1,
    JStudio_JParticle::TCreateObject* param_2) {
    JStudio_JParticle::TAdaptor_particle* adaptor = new JStudio_JParticle::TAdaptor_particle(param_2);
    if (adaptor == NULL) {
        return NULL;
    }
    JGadget::TPointer_delete<JStudio_JParticle::TAdaptor_particle> deleteGuard(adaptor);
    adaptor->set_bPermit_onExit_notEnd_(param_2->isPermit_onExit_notEnd());
    JStudio::TObject_particle* particle =
        JStudio::TCreateObject::createFromAdaptor<JStudio_JParticle::TAdaptor_particle>(param_1,
                                                                                   adaptor);
    if (particle == NULL) {
        return NULL;
    }
    deleteGuard.set(NULL);
    return particle;
}