d_snd_distant_sound_actor_pool OK

This commit is contained in:
robojumper
2025-06-14 21:45:38 +02:00
parent b9ed6c26bd
commit d3d5b57363
9 changed files with 111 additions and 27 deletions
+5 -1
View File
@@ -74,6 +74,10 @@ public:
mFlags |= flag;
}
void setDisabled(bool value) {
mIsDisabled = value;
}
f32 getDistanceToListener() {
updateDistanceToListener();
return mDistanceToListener;
@@ -98,7 +102,7 @@ public:
protected:
// a_ prefix to prevent multiple inheritance clashes
/* 0x7D */ u8 a_field_0x7D;
/* 0x7E */ u8 a_field_0x7E;
/* 0x7E */ bool mIsDisabled;
/* 0x7F */ u8 a_field_0x7F;
/* 0x80 */ u8 mIsPaused;
/* 0x84 */ f32 a_field_0x84;
+10
View File
@@ -38,6 +38,10 @@ public:
return mpSoundSource == source;
}
bool hasAttachedSource() const {
return mpSoundSource;
}
nw4r::snd::SoundHandle *getHandle() {
return mpSoundHandle;
}
@@ -46,6 +50,12 @@ public:
mpSoundSource = source;
}
// not sure if this combination makes sense
void resetHandle() {
field_0x0F4 = 0;
mpSoundHandle = &mSoundHandle;
}
bool isActive() const {
return mIsActive;
}
@@ -30,15 +30,23 @@ public:
return sParam;
}
void initialize();
void calc();
void onChangeStage();
dSndDistantSoundActor_c *acquireActor(u32 soundId, const nw4r::math::VEC3 *position, dSoundSource_c *source);
dSndDistantSoundActor_c *findActiveActor(u32 soundId, dSoundSource_c *source);
bool startSound(u32 soundId, const nw4r::math::VEC3 *position);
bool holdSound(u32 soundId, const nw4r::math::VEC3 *position);
void setAllPause(bool flag, s32 fadeFrames);
void disableAll();
void enableAll();
private:
void addToActiveList(dSndDistantSoundActor_c *actor, u32 id);
void removeFromActiveList(dSndDistantSoundActor_c *actor);
/* 0x0010 */ dSndDistantSoundActor_c mSounds[POOL_SIZE];
/* 0x4210 */ UNKWORD field_0x4210;