aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/helpers/AnimatedVariable.cpp
blob: 581ea1c8f972c2954a02b1cd0e2fa06e01aed711 (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
#include "AnimatedVariable.hpp"
#include "../managers/AnimationManager.hpp"

CAnimatedVariable::CAnimatedVariable() {
    ; // dummy var
}

void CAnimatedVariable::create(ANIMATEDVARTYPE type, float* speed, int64_t* enabled, void* pWindow) {
    m_eVarType = type;
    m_pSpeed = speed;
    m_pEnabled = enabled;
    m_pWindow = pWindow;

    g_pAnimationManager->m_lAnimatedVariables.push_back(this);

    m_bDummy = false;
}

void CAnimatedVariable::create(ANIMATEDVARTYPE type, std::any val, float* speed, int64_t* enabled, void* pWindow) {
    create(type, speed, enabled, pWindow);

    try {
        switch (type) {
            case AVARTYPE_FLOAT: {
                const auto V = std::any_cast<float>(val);
                m_fValue = V;
                m_fGoal = V;
                break;
            }
            case AVARTYPE_VECTOR: {
                const auto V = std::any_cast<Vector2D>(val);
                m_vValue = V;
                m_vGoal = V;
                break;
            }
            case AVARTYPE_COLOR: {
                const auto V = std::any_cast<CColor>(val);
                m_cValue = V;
                m_cGoal = V;
                break;
            }
            default:
                ASSERT(false);
                break;
        }
    } catch (std::exception& e) {
        Debug::log(ERR, "CAnimatedVariable create error: %s", e.what());
        RASSERT(false, "CAnimatedVariable create error: %s", e.what());
    }
}

CAnimatedVariable::~CAnimatedVariable() {
    g_pAnimationManager->m_lAnimatedVariables.remove(this);
}