summaryrefslogtreecommitdiff
path: root/src/d/d_bg_s_lin_chk.cpp
blob: 38ba87f05b78b5f51d793c720405c8f5b3118357 (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
94
95
96
97
98
99
100
101
102
103
104
/**
 * d_bg_s_lin_chk.cpp
 * BG Collision Line Check
 */

#include "d/dolzel.h" // IWYU pragma: keep

#include "d/d_bg_s_lin_chk.h"
#include "f_op/f_op_actor_mng.h"

#define CHECK_FLOAT_RANGE(line, x) JUT_ASSERT(line, -1.0e32f < x && x < 1.0e32f);

dBgS_LinChk::dBgS_LinChk() {
    SetPolyPassChk(GetPolyPassChkInfo());
    SetGrpPassChk(GetGrpPassChkInfo());
}

dBgS_LinChk::~dBgS_LinChk() {}

void dBgS_LinChk::Set(cXyz const* pi_start, cXyz const* pi_end, fopAc_ac_c const* p_actor) {
    JUT_ASSERT(45, !isnan(pi_start->x));
    JUT_ASSERT(46, !isnan(pi_start->y));
    JUT_ASSERT(47, !isnan(pi_start->z));
    JUT_ASSERT(48, !isnan(pi_end->x));
    JUT_ASSERT(49, !isnan(pi_end->y));
    //! @bug Two asserts on pi_end->y instead of one on py_end->z
    JUT_ASSERT(50, !isnan(pi_end->y));

    JUT_ASSERT(54, -INF < pi_start->x && pi_start->x < INF);
    JUT_ASSERT(55, -INF < pi_start->y && pi_start->y < INF);
    JUT_ASSERT(56, -INF < pi_start->z && pi_start->z < INF);
    JUT_ASSERT(57, -INF < pi_end->x && pi_end->x < INF);
    JUT_ASSERT(58, -INF < pi_end->y && pi_end->y < INF);
    JUT_ASSERT(59, -INF < pi_end->z && pi_end->z < INF);

    JUT_ASSERT(61, pi_start->y != G_CM3D_F_INF);
    JUT_ASSERT(62, pi_start->y != -G_CM3D_F_INF);
    JUT_ASSERT(63, pi_end->y != G_CM3D_F_INF);
    JUT_ASSERT(64, pi_end->y != -G_CM3D_F_INF);

    u32 id;
    if (p_actor != NULL) {
        id = fopAcM_GetID(p_actor);
    } else {
        id = 0xFFFFFFFF;
    }
    Set2(pi_start, pi_end, id);
}

dBgS_CamLinChk::dBgS_CamLinChk() {
    SetCam();
}

dBgS_CamLinChk::~dBgS_CamLinChk() {}

dBgS_CamLinChk_NorWtr::dBgS_CamLinChk_NorWtr() {
    OnWaterGrp();
    OnNormalGrp();
}

dBgS_CamLinChk_NorWtr::~dBgS_CamLinChk_NorWtr() {}

dBgS_ObjLinChk::dBgS_ObjLinChk() {
    SetObj();
}

dBgS_ObjLinChk::~dBgS_ObjLinChk() {}

dBgS_LinkLinChk::dBgS_LinkLinChk() {
    SetLink();
}

dBgS_LinkLinChk::~dBgS_LinkLinChk() {}

dBgS_BombLinChk::dBgS_BombLinChk() {
    SetBomb();
}

dBgS_BombLinChk::~dBgS_BombLinChk() {}

dBgS_ArrowLinChk::dBgS_ArrowLinChk() {
    SetArrow();
    OnNormalGrp();
}

dBgS_ArrowLinChk::~dBgS_ArrowLinChk() {}

dBgS_BoomerangLinChk::dBgS_BoomerangLinChk() {
    SetBoomerang();
}

dBgS_BoomerangLinChk::~dBgS_BoomerangLinChk() {}

dBgS_RopeLinChk::dBgS_RopeLinChk() {
    SetRope();
}

dBgS_RopeLinChk::~dBgS_RopeLinChk() {}

dBgS_HorseLinChk::dBgS_HorseLinChk() {
    SetHorse();
}

dBgS_HorseLinChk::~dBgS_HorseLinChk() {}