1#include "Library/Camera/CameraTicketHolder.h"
2
3#include "Library/Camera/CameraPoser.h"
4#include "Library/Camera/CameraTicket.h"
5#include "Library/Camera/CameraTicketId.h"
6
7namespace al {
8
9CameraTicketHolder::CameraTicketHolder(s32 maxTickets) : mMaxTickets(maxTickets) {
10 mTickets = new CameraTicket*[maxTickets];
11 for (s32 i = 0; i < mMaxTickets; i++)
12 mTickets[i] = nullptr;
13}
14
15void CameraTicketHolder::endInit() {
16 for (s32 i = 0; i < mNumTickets; i++)
17 mTickets[i]->getPoser()->endInit();
18
19 if (mDefaultTicket)
20 mDefaultTicket->getPoser()->endInit();
21}
22
23void CameraTicketHolder::registerTicket(CameraTicket* ticket) {
24 if (ticket->getPriority() == CameraTicket::Priority_Default) {
25 registerDefaultTicket(ticket);
26 return;
27 }
28
29 mTickets[mNumTickets] = ticket;
30 mNumTickets++;
31}
32
33void CameraTicketHolder::registerDefaultTicket(CameraTicket* ticket) {
34 mDefaultTicket = ticket;
35}
36
37CameraTicket* CameraTicketHolder::tryFindEntranceTicket(const PlacementId* placementId,
38 const char* suffix) const {
39 CameraTicketId searchTicketId = {placementId, suffix};
40
41 for (s32 i = 0; i < mNumTickets; i++)
42 if (mTickets[i]->getPriority() == CameraTicket::Priority_Entrance &&
43 mTickets[i]->getTicketId()->isEqual(other: searchTicketId))
44 return mTickets[i];
45
46 return nullptr;
47}
48
49} // namespace al
50