DarkflameServer/dGame/dComponents/SoundTriggerComponent.h

78 lines
1.7 KiB
C
Raw Normal View History

#pragma once
#include "dCommonVars.h"
#include "Entity.h"
#include "GUID.h"
#include "Component.h"
#include "eReplicaComponentType.h"
struct MusicCue {
2022-07-28 13:39:57 +00:00
std::string name;
uint32_t result;
float boredomTime;
MusicCue(std::string name, float boredomTime = -1.0, uint32_t result = 1){
this->name = name;
this->result = result;
this->boredomTime = boredomTime;
};
void Serialize(RakNet::BitStream* outBitStream);
};
struct MusicParameter {
std::string name;
float value;
MusicParameter(std::string name, float value = 0.0){
this->name = name;
this->value = value;
}
void Serialize(RakNet::BitStream* outBitStream);
};
struct GUIDResults{
GUID guid;
uint32_t result;
GUIDResults(std::string guidString, uint32_t result = 1){
this->guid = GUID(guidString);
this->result = result;
}
void Serialize(RakNet::BitStream* outBitStream);
};
struct MixerProgram {
std::string name;
uint32_t result;
MixerProgram(std::string name, uint32_t result = 0){
this->name = name;
this->result = result;
}
void Serialize(RakNet::BitStream* outBitStream);
};
class SoundTriggerComponent : public Component {
public:
static constexpr eReplicaComponentType ComponentType = eReplicaComponentType::SOUND_TRIGGER;
2022-07-28 13:39:57 +00:00
explicit SoundTriggerComponent(Entity* parent);
void Serialize(RakNet::BitStream* outBitStream, bool bIsInitialUpdate) override;
void ActivateMusicCue(const std::string& name, float bordemTime = -1.0);
2022-07-28 13:39:57 +00:00
void DeactivateMusicCue(const std::string& name);
private:
std::vector<MusicCue> m_MusicCues;
std::vector<MusicParameter> m_MusicParameters;
std::vector<GUIDResults> m_2DAmbientSounds;
std::vector<GUIDResults> m_3DAmbientSounds;
std::vector<MixerProgram> m_MixerPrograms;
bool m_Dirty = false;
};