summaryrefslogtreecommitdiff
path: root/libs/JSystem/src/JAHostIO/JAHVirtualNode.cpp
blob: 7275fc70bea484069a6fc4269db7d1a68946f647 (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
91
92
93
#include <JSystem/JAHostIO/JAHVirtualNode.h>
#include <JSystem/JUtility/JUTAssert.h>
#include <cstring>

u32 JAHVirtualNode::smVirNodeNum;

void JAHVirtualNode::virtualMessage(JAHControl& control) {
    message(control);
    callAllVirtualMessages(control);
}

void JAHVirtualNode::callAllVirtualMessages(JAHControl& control) {
    if (mTree.getNumChildren() == 0)
        return;

    for (JSUTreeIterator<JAHVirtualNode> iter = mTree.getFirstChild(); iter != mTree.getEndChild();
         ++iter)
    {
        iter->message(control);
    }
}

JAHioNode* JAHVirtualNode::getMaster() {
    JSUTree<JAHVirtualNode>* it = mTree.getParent();
    while (it->getParent())
        it = it->getParent();
    return (JAHioNode*)it->getObject();
}

void JAHVirtualNode::framework() {
    onFrame();
    for (JSUTreeIterator<JAHVirtualNode> iter = getVirTree()->getFirstChild();
         iter != getVirTree()->getEndChild(); ++iter)
    {
        iter->framework();
    }
}

void JAHVirtualNode::onFrame() {}

void JAHVirtualNode::currentFramework() {
    onCurrentNodeFrame();
    for (JSUTreeIterator<JAHVirtualNode> iter = getVirTree()->getFirstChild();
         iter != getVirTree()->getEndChild(); ++iter)
    {
        iter->framework();
    }
}

void JAHVirtualNode::onCurrentNodeFrame() {}

void JAHVirtualNode::listenVirtualPropertyEvent(JAH_P_Event param_1, u32 param_2) {
    propertyEvent(param_1, param_2);
    for (JSUTreeIterator<JAHVirtualNode> iter = mTree.getFirstChild(); iter != mTree.getEndChild();
         ++iter)
    {
        iter->listenVirtualPropertyEvent(param_1, param_2);
    }
}

void JAHVirtualNode::propertyEvent(JAH_P_Event, u32) {}

void JAHVirtualNode::listenVirtualNodeEvent(JAH_N_Event param_1) {
    nodeEvent(param_1);
    for (JSUTreeIterator<JAHVirtualNode> iter = mTree.getFirstChild(); iter != mTree.getEndChild();
         ++iter)
    {
        iter->listenVirtualNodeEvent(param_1);
    }
}

void JAHVirtualNode::nodeEvent(JAH_N_Event) {}

void JAHVirtualNode::setVirNodeName(const char* name) {
    JUT_ASSERT(139, name);
    size_t size = strlen(name) + 1;
    // clang-format off
    JUT_ASSERT(141, size<32);
    // clang-format on
    strcpy(mName, name);
}

JAHVirtualNode::JAHVirtualNode(const char* name) : mTree(this) {
    if (name)
        setVirNodeName(name);
    else
        setVirNodeName("no name");
    smVirNodeNum += 1;
}

void JAHVirtualNode::updateNode() {
    getMaster()->updateNode();
}