SMG-Decomp
A decompilation of Super Mario Galaxy 1
Loading...
Searching...
No Matches
ClippingActorInfo.cpp
1#include "Game/LiveActor/ClippingActorInfo.hpp"
2#include "Game/LiveActor/ClippingJudge.hpp"
3#include "Game/LiveActor/LiveActor.hpp"
4#include "Game/Util.hpp"
5
6ClippingActorInfo::ClippingActorInfo(LiveActor *pActor) {
7 mActor = pActor;
8 _4 = 0;
9 _8 = 0.0f;
10 mInfo = 0;
11 mFarClipLevel = 6;
12 _12 = -1;
13 _14 = 0;
14 setTypeToSphere(300.0f, 0);
15}
16
17void ClippingActorInfo::judgeClipping() {
18 if (isJudgedToClip()) {
19 if (!MR::isClipped(mActor)) {
20 mActor->startClipped();
21 }
22 }
23 else {
24 if (MR::isClipped(mActor)) {
25 mActor->endClipped();
26 }
27 }
28}
29
30/*
31bool ClippingActorInfo::isJudgedToClip() const {
32 s32 farClipLevel = mFarClipLevel;
33 if (*_14 == 1) {
34 farClipLevel = 0;
35 }
36
37 f32 val = _8;
38 ClippingJudge* judge = MR::getClippingJudge();
39 return judge->isJudgedToClipFrustum(*_4, val, farClipLevel);
40}
41*/
42
43bool ClippingActorInfo::isGroupClipping() const {
44 return mInfo;
45}
46
47void ClippingActorInfo::setTypeToSphere(f32 a1, const TVec3f *a2) {
48 _8 = a1;
49 if (!a2) {
50 _4 = &mActor->mPosition;
51 }
52 else {
53 _4 = a2;
54 }
55}
56
57#ifdef NON_MATCHING
58void ClippingActorInfo::setGroupClippingNo(const JMapInfoIter &rIter) {
59 JMapIdInfo* id_info = new JMapIdInfo();
60 *id_info = MR::createJMapIdInfoFromClippingGroupId(rIter);
61 mInfo = id_info;
62}
63#endif
64
65ClippingActorInfoList::ClippingActorInfoList(int a1) {
66 _0 = a1;
67 _4 = 0;
68 mClippingActorList = 0;
69
70 mClippingActorList = new ClippingActorInfo*[a1];
71
72 for (s32 i = 0; i < _0; i++) {
73 mClippingActorList[i] = 0;
74 }
75}
76
77void ClippingActorInfoList::add(ClippingActorInfo *pInfo) {
78 mClippingActorList[_4] = pInfo;
79 _4++;
80}
81
82ClippingActorInfo* ClippingActorInfoList::find(const LiveActor *pActor, s32 *pIndex) const {
83 for (s32 i = 0; i < _4; i++) {
84 ClippingActorInfo* inf = mClippingActorList[i];
85
86 if (inf->mActor == pActor) {
87 if (pIndex) {
88 *pIndex = i;
89 }
90
91 return mClippingActorList[i];
92 }
93 }
94
95 return mClippingActorList[0];
96}
97
98// ClippingActorInfoList::findOrNone
99
100bool ClippingActorInfoList::isInList(const LiveActor *pActor) const {
101 for (s32 i = 0; i < _4; i++) {
102 ClippingActorInfo* inf = mClippingActorList[i];
103 if (inf->mActor == pActor) {
104 return true;
105 }
106 }
107
108 return false;
109}
The basis of a drawable actor that can contain states (see: Nerve)
Definition LiveActor.hpp:24
TVec3f mPosition
3D vector of the actor's position.
Definition LiveActor.hpp:95