mirror of
https://github.com/encounter/Petari.git
synced 2026-03-30 11:34:15 -07:00
138 lines
3.0 KiB
C++
138 lines
3.0 KiB
C++
#include "Game/AreaObj/CubeCamera.hpp"
|
|
#include "Game/Camera/CameraTargetObj.hpp"
|
|
#include "Game/Gravity/GravityInfo.hpp"
|
|
#include "Game/LiveActor/LiveActor.hpp"
|
|
#include "Game/Util/LiveActorUtil.hpp"
|
|
|
|
CameraTargetObj::CameraTargetObj(const char *pName) : NameObj(pName) {
|
|
mCameraWall = false;
|
|
}
|
|
|
|
CameraTargetActor::CameraTargetActor(const char *pName) : CameraTargetObj(pName) {
|
|
mActor = nullptr;
|
|
mUp.x = 0.0f;
|
|
mUp.y = 1.0f;
|
|
mUp.z = 0.0f;
|
|
mFront.x = 0.0f;
|
|
mFront.y = 0.0f;
|
|
mFront.z = 1.0f;
|
|
mSide.x = 0.0f;
|
|
mSide.y = 0.0f;
|
|
mSide.z = 1.0f;
|
|
mCameraArea = nullptr;
|
|
}
|
|
|
|
CameraTargetActor::~CameraTargetActor() {
|
|
|
|
}
|
|
|
|
void CameraTargetActor::movement() {
|
|
if (MR::isDead(mActor) || MR::isClipped(mActor)) {
|
|
return;
|
|
}
|
|
|
|
if (mActor->getBaseMtx() != nullptr) {
|
|
MR::calcUpVec(&mUp, mActor);
|
|
MR::calcFrontVec(&mFront, mActor);
|
|
MR::calcSideVec(&mSide, mActor);
|
|
}
|
|
else {
|
|
TRot3f matrix;
|
|
MR::makeMtxRotate(reinterpret_cast<MtxPtr>(&matrix), mActor->mRotation.x, mActor->mRotation.y, mActor->mRotation.z);
|
|
|
|
matrix.getYDir(mUp);
|
|
matrix.getZDir(mFront);
|
|
matrix.getXDir(mSide);
|
|
}
|
|
|
|
CubeCameraArea *area = reinterpret_cast<CubeCameraArea *>(MR::getAreaObj("CubeCamera", mActor->mPosition));
|
|
|
|
if (area == nullptr) {
|
|
mCameraArea = nullptr;
|
|
}
|
|
else {
|
|
mCameraArea = area;
|
|
}
|
|
}
|
|
|
|
const TVec3f *CameraTargetActor::getPosition() const {
|
|
return &mActor->mPosition;
|
|
}
|
|
|
|
const TVec3f *CameraTargetActor::getUpVec() const {
|
|
return &mUp;
|
|
}
|
|
|
|
const TVec3f *CameraTargetActor::getFrontVec() const {
|
|
return &mFront;
|
|
}
|
|
|
|
const TVec3f *CameraTargetActor::getSideVec() const {
|
|
return &mSide;
|
|
}
|
|
|
|
const TVec3f *CameraTargetActor::getLastMove() const {
|
|
return &mActor->mVelocity;
|
|
}
|
|
|
|
const TVec3f *CameraTargetActor::getGroundPos() const {
|
|
return &mActor->mPosition;
|
|
}
|
|
|
|
const TVec3f *CameraTargetActor::getGravityVector() const {
|
|
if (getGravityInfo() != nullptr) {
|
|
return &getGravityInfo()->mGravityVector;
|
|
}
|
|
else {
|
|
return &mUp;
|
|
}
|
|
}
|
|
|
|
f32 CameraTargetActor::getRadius() const {
|
|
return 150.0f;
|
|
}
|
|
|
|
CubeCameraArea *CameraTargetActor::getCubeCameraArea() const {
|
|
return mCameraArea;
|
|
}
|
|
|
|
Triangle *CameraTargetActor::getGroundTriangle() const {
|
|
return nullptr;
|
|
}
|
|
|
|
CameraTargetPlayer::CameraTargetPlayer(const char *pName) : CameraTargetObj(pName) {
|
|
mGravity.x = 0.0f;
|
|
mGravity.y = -1.0f;
|
|
mGravity.z = 0.0f;
|
|
mGroundPos.x = 0.0f;
|
|
mGroundPos.y = 0.0f;
|
|
mGroundPos.z = 0.0f;
|
|
mCameraArea = nullptr;
|
|
mGroundTriangle = nullptr;
|
|
_58 = 0;
|
|
_5A = true;
|
|
}
|
|
|
|
CameraTargetPlayer::~CameraTargetPlayer() {
|
|
|
|
}
|
|
|
|
const TVec3f *CameraTargetPlayer::getUpVec() const {
|
|
return &mUp;
|
|
}
|
|
|
|
const TVec3f *CameraTargetPlayer::getFrontVec() const {
|
|
return &mFront;
|
|
}
|
|
|
|
const TVec3f *CameraTargetPlayer::getSideVec() const {
|
|
return &mSide;
|
|
}
|
|
|
|
const TVec3f *CameraTargetPlayer::getGroundPos() const {
|
|
return &mGroundPos;
|
|
}
|
|
|
|
const TVec3f *CameraTargetPlayer::getGravityVector() const {
|
|
return &mGravity;
|
|
} |