1#include "Game/LiveActor/HitSensorKeeper.hpp"
2#include "Game/LiveActor/HitSensorInfo.hpp"
3#include "Game/Util.hpp"
6HitSensorKeeper::HitSensorKeeper(
int sensorCount) {
7 mSensorCount = sensorCount;
9 mSensorInfos =
nullptr;
14 for (s32 i = 0; i < mSensorCount; i++) {
15 mSensorInfos[i] =
nullptr;
19HitSensor* HitSensorKeeper::add(
const char *pName, u32 sensorType, u16 sensorGroupSize, f32 radius,
LiveActor *pActor,
const TVec3f &a6) {
21 registHitSensorInfo(pInfo);
22 return pInfo->mSensor;
25HitSensor* HitSensorKeeper::addPos(
const char *pName, u32 sensorType, u16 sensorGroupSize, f32 radius,
LiveActor * pActor,
const TVec3f *pPos,
const TVec3f &a7) {
27 registHitSensorInfo(pInfo);
28 return pInfo->mSensor;
31HitSensor* HitSensorKeeper::addMtx(
const char *pName, u32 sensorType, u16 sensorGroupSize, f32 radius,
LiveActor *pActor, MtxPtr mtx,
const TVec3f &a7) {
33 registHitSensorInfo(pInfo);
34 return pInfo->mSensor;
37HitSensor* HitSensorKeeper::addCallback(
const char *pName, u32 sensorType, u16 sensorGroupSize, f32 radius,
LiveActor *pActor) {
39 registHitSensorInfo(pInfo);
40 return pInfo->mSensor;
43HitSensor* HitSensorKeeper::getSensor(
const char *pSensorName)
const {
44 if (mSensorInfosSize == 1) {
45 return mSensorInfos[0]->mSensor;
48 u32 hashCode = MR::getHashCode(pSensorName);
50 for (s32 i = 0; i < mSensorInfosSize; i++) {
51 if (hashCode == mSensorInfos[i]->mHashCode && !strstr(mSensorInfos[i]->mName, pSensorName)) {
52 return mSensorInfos[i]->mSensor;
59void HitSensorKeeper::update() {
60 for (s32 i = 0; i < mSensorInfosSize; i++) {
61 mSensorInfos[i]->update();
65void HitSensorKeeper::doObjCol() {
66 for (s32 i = 0; i < mSensorInfosSize; i++) {
67 mSensorInfos[i]->doObjCol();
71void HitSensorKeeper::clear() {
72 for (s32 i = 0; i < mSensorInfosSize; i++) {
74 pInfo->mSensor->mSensorCount = 0;
78void HitSensorKeeper::validate() {
79 for (s32 i = 0; i < mSensorInfosSize; i++) {
80 mSensorInfos[i]->mSensor->validate();
84void HitSensorKeeper::invalidate() {
85 for (s32 i = 0; i < mSensorInfosSize; i++) {
86 mSensorInfos[i]->mSensor->invalidate();
90void HitSensorKeeper::validateBySystem() {
91 for (s32 i = 0; i < mSensorInfosSize; i++) {
92 mSensorInfos[i]->mSensor->validateBySystem();
96void HitSensorKeeper::invalidateBySystem() {
97 for (s32 i = 0; i < mSensorInfosSize; i++) {
98 mSensorInfos[i]->mSensor->invalidateBySystem();
102HitSensorInfo* HitSensorKeeper::getNthSensorInfo(
int n)
const {
103 return mSensorInfos[n];
106HitSensorInfo* HitSensorKeeper::getSensorInfo(
const char *pSensorName)
const {
107 if (mSensorInfosSize == 1) {
108 return mSensorInfos[0];
111 u32 hashCode = MR::getHashCode(pSensorName);
113 for (s32 i = 0; i < mSensorInfosSize; i++) {
114 if (hashCode == mSensorInfos[i]->mHashCode && !strstr(mSensorInfos[i]->mName, pSensorName)) {
115 return mSensorInfos[i];
122void HitSensorKeeper::registHitSensorInfo(
HitSensorInfo *pInfo) {
123 mSensorInfos[mSensorInfosSize] = pInfo;
The basis of a drawable actor that can contain states (see: Nerve)