1#include "Game/LiveActor/HitSensor.hpp"
2#include "Game/LiveActor/LiveActor.hpp"
3#include "Game/LiveActor/SensorHitChecker.hpp"
7HitSensor::HitSensor(u32 type, u32 sensorGroupSize, f32 radius,
LiveActor *pActor) {
14 mGroupSize = sensorGroupSize;
16 mSensorGroup =
nullptr;
17 mValidBySystem =
false;
21 if (sensorGroupSize & 0xFFFF) {
22 mSensors =
new HitSensor*[sensorGroupSize];
24 for (s32 i = 0; i < mGroupSize; i++) {
25 mSensors[i] =
nullptr;
29 MR::initHitSensorGroup(
this);
32bool HitSensor::receiveMessage(u32 msg,
HitSensor *pReceiver) {
33 return mActor->receiveMessage(msg, pReceiver,
this);
36void HitSensor::setType(u32 type) {
37 bool wasRemoved =
false;
44 mSensorGroup->remove(
this);
50 MR::initHitSensorGroup(
this);
53 mSensorGroup->add(
this);
59bool HitSensor::isType(u32 type)
const {
60 return !(type - mSensorType);
64void HitSensor::validate() {
75 if (!mValidBySystem) {
79 mSensorGroup->add(
this);
82void HitSensor::invalidate() {
88 mSensorGroup->remove(
this);
96void HitSensor::validateBySystem() {
97 if (!mValidBySystem) {
100 mSensorGroup->add(
this);
104 mValidBySystem =
true;
108void HitSensor::invalidateBySystem() {
109 if (!mValidBySystem) {
112 mSensorGroup->remove(
this);
116 mValidBySystem =
false;
121void HitSensor::addHitSensor(
HitSensor *pSensor) {
122 if (mSensorCount < mGroupSize) {
123 mSensors[mSensorCount] = pSensor;
The basis of a drawable actor that can contain states (see: Nerve)