1#include "Library/Clipping/ClippingActorInfoList.h"
2
3#include "Library/Clipping/ClippingActorInfo.h"
4#include "Library/LiveActor/LiveActor.h"
5
6namespace al {
7
8ClippingActorInfoList::ClippingActorInfoList(s32 numClippingActorInfo)
9 : mClippingActorInfoSize(numClippingActorInfo) {
10 mClippingActorInfo = new ClippingActorInfo*[numClippingActorInfo];
11 for (s32 i = 0; i < mClippingActorInfoSize; i++)
12 mClippingActorInfo[i] = nullptr;
13}
14
15void ClippingActorInfoList::add(ClippingActorInfo* clippingActorInfo) {
16 mClippingActorInfo[mClippingActorInfoCount] = clippingActorInfo;
17 mClippingActorInfoCount++;
18}
19
20ClippingActorInfo* ClippingActorInfoList::remove(LiveActor* liveActor) {
21 s32 index;
22 ClippingActorInfo* result = find(liveActor, index: &index);
23 mClippingActorInfo[index] = mClippingActorInfo[mClippingActorInfoCount - 1];
24 mClippingActorInfoCount--;
25 return result;
26}
27
28ClippingActorInfo* ClippingActorInfoList::find(const LiveActor* liveActor, s32* index) const {
29 for (s32 i = 0; i < mClippingActorInfoCount; i++) {
30 if (mClippingActorInfo[i]->getLiveActor() == liveActor) {
31 if (index)
32 *index = i;
33 return mClippingActorInfo[i];
34 }
35 }
36 return mClippingActorInfo[0];
37}
38
39ClippingActorInfo* ClippingActorInfoList::tryFind(const LiveActor* liveActor) const {
40 for (s32 i = mClippingActorInfoCount - 1; i >= 0; i--)
41 if (mClippingActorInfo[i]->getLiveActor() == liveActor)
42 return mClippingActorInfo[i];
43 return nullptr;
44}
45
46bool ClippingActorInfoList::isInList(const LiveActor* liveActor) const {
47 for (s32 i = 0; i < mClippingActorInfoCount; i++)
48 if (mClippingActorInfo[i]->getLiveActor() == liveActor)
49 return true;
50 return false;
51}
52
53} // Namespace al
54