OdysseyDecomp/lib/al/Library/Camera/CameraTargetBase.h

59 lines
1.4 KiB
C++

#pragma once
#include <math/seadVector.h>
#include "Library/HostIO/HioNode.h"
namespace al {
class CameraTargetBase : public IUseHioNode {
public:
CameraTargetBase();
virtual const char* getTargetName() const = 0;
virtual void calcTrans(sead::Vector3f* trans) const = 0;
virtual void calcSide(sead::Vector3f* side) const {}
virtual void calcUp(sead::Vector3f* up) const {}
virtual void calcFront(sead::Vector3f* front) const {}
virtual void calcGravity(sead::Vector3f* gravity) const { *gravity = {0.0f, -1.0f, 0.0f}; }
virtual void calcVelocity(sead::Vector3f* velocity) const {}
virtual bool isCollideGround() const { return false; }
virtual bool isInWater() const { return false; }
virtual bool isInMoonGravity() const { return false; }
virtual bool isClimbPole() const { return false; }
virtual bool isGrabCeil() const { return false; }
virtual bool isWallCatch() const { return false; }
virtual bool isInvalidMoveByInput() const { return false; }
virtual bool isEnableEndAfterInterpole() const { return false; }
virtual void update() {}
virtual f32 getRequestDistance() const { return -1.0f; }
bool isActiveTarget() const { return mIsActiveTarget; }
void enableTarget() { mIsActiveTarget = true; }
void disableTarget() { mIsActiveTarget = false; }
private:
bool mIsActiveTarget = false;
};
static_assert(sizeof(CameraTargetBase) == 0x10);
} // namespace al