OdysseyDecomp/lib/al/Library/Area/SwitchAreaTargetInfo.cpp

42 lines
1.8 KiB
C++

#include "Library/Area/SwitchAreaTargetInfo.h"
#include "Library/Camera/CameraUtil.h"
#include "Library/Player/PlayerUtil.h"
namespace al {
SwitchAreaTargetInfo::SwitchAreaTargetInfo(s32 maxPlayerPositions, s32 maxCameraLookAtPositions)
: mPlayerTargetPositionSize(maxPlayerPositions), mPlayerPositionSize(maxPlayerPositions),
mCameraLookAtPositionSize(maxCameraLookAtPositions) {
mPlayerTargetPositions = new sead::Vector3f[mPlayerTargetPositionSize];
mPlayerPositions = new sead::Vector3f[mPlayerPositionSize];
mCameraLookAtPositions = new sead::Vector3f[mCameraLookAtPositionSize];
}
SwitchAreaTargetInfo::SwitchAreaTargetInfo(sead::Vector3f* playerPositions, s32 maxPlayerPositions)
: mPlayerTargetPositions(playerPositions), mPlayerTargetPositionCount(maxPlayerPositions),
mPlayerTargetPositionSize(maxPlayerPositions), mPlayerPositions(playerPositions),
mPlayerPositionCount(maxPlayerPositions), mPlayerPositionSize(maxPlayerPositions) {}
void SwitchAreaTargetInfo::update(const PlayerHolder* playerHolder,
const SceneCameraInfo* sceneCameraInfo) {
mPlayerTargetPositionCount = 0;
mPlayerPositionCount = 0;
s32 playerNumMax = getPlayerNumMax(playerHolder);
for (s32 i = 0; i < playerNumMax; i++) {
const sead::Vector3f& playerPos = getPlayerPos(playerHolder, i);
mPlayerPositions[mPlayerPositionCount] = playerPos;
mPlayerPositionCount++;
if (!isPlayerDead(playerHolder, i) && isPlayerAreaTarget(playerHolder, i)) {
mPlayerTargetPositions[mPlayerTargetPositionCount] = playerPos;
mPlayerTargetPositionCount++;
}
}
mCameraLookAtPositions[0] = getCameraAt(sceneCameraInfo, 0);
mCameraLookAtPositionCount = 1;
}
} // namespace al