mirror of
https://github.com/zeldaret/ss
synced 2026-08-09 18:57:50 -04:00
53 lines
1.4 KiB
C++
53 lines
1.4 KiB
C++
|
|
#ifndef NW4R_SND_SOUND_3D_ACTOR_H
|
|
#define NW4R_SND_SOUND_3D_ACTOR_H
|
|
|
|
#include "nw4r/snd/snd_BasicSound.h"
|
|
#include "nw4r/snd/snd_SoundActor.h"
|
|
#include "nw4r/types_nw4r.h"
|
|
|
|
#include "nw4r/math.h"
|
|
|
|
namespace nw4r {
|
|
namespace snd {
|
|
|
|
class Sound3DActor : public SoundActor, public detail::BasicSound::AmbientInfo::AmbientArgUpdateCallback {
|
|
public:
|
|
Sound3DActor(SoundArchivePlayer &rPlayer, Sound3DManager &rManager);
|
|
virtual ~Sound3DActor();
|
|
|
|
virtual StartResult SetupSound(SoundHandle *pHandle, u32 soundId, const StartInfo *pStartInfo, void *) override;
|
|
|
|
// AmbientArgUpdateCallback
|
|
virtual void at_0x0c(void *arg, detail::BasicSound* sound) override;
|
|
|
|
const nw4r::math::VEC3 &GetPosition() const {
|
|
return mPosition;
|
|
}
|
|
|
|
const nw4r::math::VEC3 &GetVelocity() const {
|
|
return mVelocity;
|
|
}
|
|
void SetPosition(const math::VEC3 &rPosition);
|
|
|
|
void SetUserParam(u32 userParam) {
|
|
mUserParam = userParam;
|
|
}
|
|
|
|
private:
|
|
static void ClearUpdateCallback(SoundHandle &rHandle);
|
|
|
|
private:
|
|
Sound3DManager &m3DManager; // at 0x58
|
|
SoundArchivePlayer *mSoundArchivePlayer; // at 0x5C
|
|
u32 mUserParam; // at 0x60
|
|
math::VEC3 mPosition; // at 0x64
|
|
math::VEC3 mVelocity; // at 0x70
|
|
bool mSkipVelocityUpdate; // at 0x7C
|
|
};
|
|
|
|
} // namespace snd
|
|
} // namespace nw4r
|
|
|
|
#endif
|