OdysseyDecomp/lib/al/Library/LiveActor/ActorSensorController.cpp

55 lines
1.8 KiB
C++

#include "Library/LiveActor/ActorSensorController.h"
#include "Library/LiveActor/ActorSensorUtil.h"
#include "Project/HitSensor/HitSensor.h"
namespace al {
ActorSensorController::ActorSensorController(LiveActor* sensorParent, const char* sensorName) {
HitSensor* actorSensor = getHitSensor(sensorParent, sensorName);
mHitSensor = actorSensor;
mSensorRadius = actorSensor->getRadius();
mSensorFollowPosOffset = actorSensor->getFollowPosOffset();
}
void ActorSensorController::setSensorScale(f32 scale) {
mHitSensor->setRadius(mSensorRadius * scale);
mHitSensor->setFollowPosOffset(mSensorFollowPosOffset * scale);
}
void ActorSensorController::setSensorRadius(f32 radius) {
mHitSensor->setRadius(radius);
}
void ActorSensorController::setSensorFollowPosOffset(const sead::Vector3f& offset) {
mHitSensor->setFollowPosOffset(offset);
}
void ActorSensorController::resetActorSensorController() {
mHitSensor->setRadius(mSensorRadius);
mHitSensor->setFollowPosOffset(mSensorFollowPosOffset);
}
ActorSensorControllerList::ActorSensorControllerList(s32 maxControllers)
: mMaxControllers(maxControllers) {
mControllers = new ActorSensorController*[maxControllers];
for (s32 i = 0; i < mMaxControllers; i++)
mControllers[i] = nullptr;
}
void ActorSensorControllerList::addSensor(LiveActor* actor, const char* sensorName) {
mControllers[mControllerNum++] = new ActorSensorController(actor, sensorName);
}
void ActorSensorControllerList::setAllSensorScale(f32 scale) {
for (s32 i = 0; i < mControllerNum; i++)
mControllers[i]->setSensorScale(scale);
}
void ActorSensorControllerList::resetAllActorSensorController() {
for (s32 i = 0; i < mControllerNum; i++)
mControllers[i]->resetActorSensorController();
}
} // namespace al