1#include "Library/Area/SwitchAreaTargetInfo.h"
2
3#include "Library/Camera/CameraUtil.h"
4#include "Library/Player/PlayerUtil.h"
5
6namespace al {
7SwitchAreaTargetInfo::SwitchAreaTargetInfo(s32 playerPositionCount, s32 cameraLookAtPositionSize)
8 : mPlayerTargetPositionSize(playerPositionCount), mPlayerPositionSize(playerPositionCount),
9 mCameraLookAtPositionSize(cameraLookAtPositionSize) {
10 mPlayerTargetPositions = new sead::Vector3f[mPlayerTargetPositionSize];
11 mPlayerPositions = new sead::Vector3f[mPlayerPositionSize];
12 mCameraLookAtPositions = new sead::Vector3f[mCameraLookAtPositionSize];
13}
14
15SwitchAreaTargetInfo::SwitchAreaTargetInfo(sead::Vector3f* playerPositions, s32 playerPositionCount)
16 : mPlayerTargetPositions(playerPositions), mPlayerTargetPositionCount(playerPositionCount),
17 mPlayerTargetPositionSize(playerPositionCount), mPlayerPositions(playerPositions),
18 mPlayerPositionCount(playerPositionCount), mPlayerPositionSize(playerPositionCount) {}
19
20void SwitchAreaTargetInfo::update(const PlayerHolder* playerHolder,
21 const SceneCameraInfo* sceneCameraInfo) {
22 mPlayerTargetPositionCount = 0;
23 mPlayerPositionCount = 0;
24
25 s32 playerNumMax = getPlayerNumMax(playerHolder);
26 for (s32 i = 0; i < playerNumMax; i++) {
27 const sead::Vector3f& playerPos = getPlayerPos(playerHolder, i);
28
29 mPlayerPositions[mPlayerPositionCount] = playerPos;
30 mPlayerPositionCount++;
31
32 if (!isPlayerDead(playerHolder, i) && isPlayerAreaTarget(playerHolder, i)) {
33 mPlayerTargetPositions[mPlayerTargetPositionCount] = playerPos;
34 mPlayerTargetPositionCount++;
35 }
36 }
37
38 mCameraLookAtPositions[0] = getCameraAt(info: sceneCameraInfo, viewIdx: 0);
39 mCameraLookAtPositionCount = 1;
40}
41} // namespace al
42