summaryrefslogtreecommitdiff
path: root/src/d/d_jcam_editor.cpp
blob: a5afe0c117e9395ea995ff6fe6b6a1995d95e884 (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
#include "d/d_jcam_editor.h"
#include "m_Do/m_Do_graphic.h"
#include "m_Do/m_Do_hostIO.h"
#include "m_Do/m_Do_ext.h"

dJcame_c* dJcame_c::m_myObj;

dJcame_c::dJcame_c(const JStage::TSystem* i_system, f32 param_1, JUTGamePad& i_pad) {
    mOrthoGraph = new J2DOrthoGraph(0.0f, 0.0f, FB_WIDTH_BASE, FB_HEIGHT_BASE, -1.0f, 1.0f);
    mFont = new JUTResFont((ResFONT*)JUTResFONT_Ascfont_fix12, NULL);
    
    mHeap = JKRExpHeap::create(0x100000, JKRHeap::getRootHeap2(), false);
    JUT_ASSERT(54, mHeap != NULL);

    mControl = new JStudioCameraEditor::TControl();
    mHioId = mDoHIO_createChild("JStudioCameraEditor", mControl);
    JUT_ASSERT(57, mControl != NULL);

    i_pad.setButtonRepeat((PAD_BUTTON_A | PAD_BUTTON_UP | PAD_BUTTON_DOWN | PAD_BUTTON_LEFT | PAD_BUTTON_RIGHT), 30, 5);
    mControl->interface_setPad(&i_pad);
    mControl->show_setRender(mOrthoGraph, mFont);
    mControl->jstudio_setSecondPerFrame(param_1);

    mAdaptor = NULL;
    mSystem = i_system;
    mIsAdaptorSet = false;

    m_myObj = this;
}

dJcame_c::~dJcame_c() {
    if (mAdaptor != NULL) {
        delete mAdaptor;
    }

    mControl->jstudio_setAdaptor(NULL);
    mDoHIO_deleteChild(mHioId);

    delete mControl;
    mHeap->destroy();
    delete mFont;
    delete mOrthoGraph;

    m_myObj = NULL;
}

void dJcame_c::create(const JStage::TSystem* i_system, f32 param_1, JUTGamePad& i_pad) {
    JUT_ASSERT(109, m_myObj == NULL);
    new dJcame_c(i_system, param_1, i_pad);
    JUT_ASSERT(111, m_myObj != NULL);
}

void dJcame_c::remove() {
    JUT_ASSERT(126, m_myObj != NULL);
    delete m_myObj;
}

void dJcame_c::update() {
    if (!mIsAdaptorSet) {
        if (mAdaptor == NULL) {
            JStage::TObject* object;
            int rt = mSystem->JSGFindObject(&object, "EditCam", JStage::OBJECT_CAMERA);
            if (object == NULL) {
                return;
            }

            mAdaptor = new JStudio_JStage::TAdaptor_camera(mSystem, (JStage::TCamera*)object);
            JUT_ASSERT(155, mAdaptor != NULL);

            mControl->jstudio_setAdaptor(mAdaptor);
            mIsAdaptorSet = true;
        }
    } else if (isEnabled()) {
        JKRHeap* heap = mDoExt_setCurrentHeap(mHeap);
        mControl->update();
        mDoExt_setCurrentHeap(heap);
    }
}

void dJcame_c::show3D(Mtx i_mtx) {
    if (mIsAdaptorSet) {
        mControl->show3D(i_mtx);
    }
}

void dJcame_c::show2D() {
    if (mIsAdaptorSet) {
        mControl->show2D();
    }
}