Add fork changes (move instruments to their own audio group)
This commit is contained in:
parent
9e605b182d
commit
91cf2d8251
@ -172,6 +172,7 @@ Mixer::Mixer(unsigned sampleRate, unsigned channels) {
|
|||||||
m_groupVolumes[MixerGroup::Effects] = {1.0f, 1.0f, 0};
|
m_groupVolumes[MixerGroup::Effects] = {1.0f, 1.0f, 0};
|
||||||
m_groupVolumes[MixerGroup::Music] = {1.0f, 1.0f, 0};
|
m_groupVolumes[MixerGroup::Music] = {1.0f, 1.0f, 0};
|
||||||
m_groupVolumes[MixerGroup::Cinematic] = {1.0f, 1.0f, 0};
|
m_groupVolumes[MixerGroup::Cinematic] = {1.0f, 1.0f, 0};
|
||||||
|
m_groupVolumes[MixerGroup::Instruments] = {1.0f, 1.0f, 0};
|
||||||
|
|
||||||
m_speed = 1.0f;
|
m_speed = 1.0f;
|
||||||
}
|
}
|
||||||
@ -296,7 +297,7 @@ void Mixer::read(int16_t* outBuffer, size_t frameCount, ExtraMixFunction extraMi
|
|||||||
? approach(audioInstance->m_pitchMultiplierTarget, audioInstance->m_pitchMultiplier, audioInstance->m_pitchMultiplierVelocity * time)
|
? approach(audioInstance->m_pitchMultiplierTarget, audioInstance->m_pitchMultiplier, audioInstance->m_pitchMultiplierVelocity * time)
|
||||||
: audioInstance->m_pitchMultiplier;
|
: audioInstance->m_pitchMultiplier;
|
||||||
|
|
||||||
if (audioInstance->m_mixerGroup == MixerGroup::Effects)
|
if (audioInstance->m_mixerGroup == MixerGroup::Effects || audioInstance->m_mixerGroup == MixerGroup::Instruments)
|
||||||
pitchMultiplier *= speed;
|
pitchMultiplier *= speed;
|
||||||
|
|
||||||
if (audioStopVolEnd == 0.0f && audioInstance->m_stopping)
|
if (audioStopVolEnd == 0.0f && audioInstance->m_stopping)
|
||||||
|
@ -23,7 +23,8 @@ struct RampedValue {
|
|||||||
enum class MixerGroup : uint8_t {
|
enum class MixerGroup : uint8_t {
|
||||||
Effects,
|
Effects,
|
||||||
Music,
|
Music,
|
||||||
Cinematic
|
Cinematic,
|
||||||
|
Instruments
|
||||||
};
|
};
|
||||||
|
|
||||||
class AudioInstance {
|
class AudioInstance {
|
||||||
|
@ -44,6 +44,7 @@ Json const AdditionalDefaultConfiguration = Json::parseJson(R"JSON(
|
|||||||
"audioChannelSeparation" : [-25, 25],
|
"audioChannelSeparation" : [-25, 25],
|
||||||
|
|
||||||
"sfxVol" : 100,
|
"sfxVol" : 100,
|
||||||
|
"instrumentVol" : 100,
|
||||||
"musicVol" : 70,
|
"musicVol" : 70,
|
||||||
"windowedResolution" : [1000, 600],
|
"windowedResolution" : [1000, 600],
|
||||||
"fullscreenResolution" : [1920, 1080],
|
"fullscreenResolution" : [1920, 1080],
|
||||||
|
@ -47,6 +47,7 @@ void MainMixer::update(float dt, bool muteSfx, bool muteMusic) {
|
|||||||
updateGroupVolume(MixerGroup::Effects, muteSfx, "sfxVol");
|
updateGroupVolume(MixerGroup::Effects, muteSfx, "sfxVol");
|
||||||
updateGroupVolume(MixerGroup::Music, muteMusic, "musicVol");
|
updateGroupVolume(MixerGroup::Music, muteMusic, "musicVol");
|
||||||
updateGroupVolume(MixerGroup::Cinematic, false, "sfxVol");
|
updateGroupVolume(MixerGroup::Cinematic, false, "sfxVol");
|
||||||
|
updateGroupVolume(MixerGroup::Instruments, muteSfx, "instrumentVol");
|
||||||
|
|
||||||
WorldClientPtr currentWorld;
|
WorldClientPtr currentWorld;
|
||||||
if (m_universeClient)
|
if (m_universeClient)
|
||||||
@ -57,6 +58,10 @@ void MainMixer::update(float dt, bool muteSfx, bool muteMusic) {
|
|||||||
audioInstance->setMixerGroup(MixerGroup::Effects);
|
audioInstance->setMixerGroup(MixerGroup::Effects);
|
||||||
m_mixer->play(audioInstance);
|
m_mixer->play(audioInstance);
|
||||||
}
|
}
|
||||||
|
for (auto audioInstance : currentWorld->pullPendingInstrumentAudio()) {
|
||||||
|
audioInstance->setMixerGroup(MixerGroup::Instruments);
|
||||||
|
m_mixer->play(audioInstance);
|
||||||
|
}
|
||||||
for (auto audioInstance : currentWorld->pullPendingMusic()) {
|
for (auto audioInstance : currentWorld->pullPendingMusic()) {
|
||||||
audioInstance->setMixerGroup(MixerGroup::Music);
|
audioInstance->setMixerGroup(MixerGroup::Music);
|
||||||
m_mixer->play(audioInstance);
|
m_mixer->play(audioInstance);
|
||||||
|
@ -22,6 +22,7 @@ public:
|
|||||||
virtual void addDrawable(Drawable drawable, EntityRenderLayer renderLayer) = 0;
|
virtual void addDrawable(Drawable drawable, EntityRenderLayer renderLayer) = 0;
|
||||||
virtual void addLightSource(LightSource lightSource) = 0;
|
virtual void addLightSource(LightSource lightSource) = 0;
|
||||||
virtual void addParticle(Particle particle) = 0;
|
virtual void addParticle(Particle particle) = 0;
|
||||||
|
virtual void addInstrumentAudio(AudioInstancePtr audio) = 0;
|
||||||
virtual void addAudio(AudioInstancePtr audio) = 0;
|
virtual void addAudio(AudioInstancePtr audio) = 0;
|
||||||
virtual void addTilePreview(PreviewTile preview) = 0;
|
virtual void addTilePreview(PreviewTile preview) = 0;
|
||||||
virtual void addOverheadBar(OverheadBar bar) = 0;
|
virtual void addOverheadBar(OverheadBar bar) = 0;
|
||||||
@ -31,6 +32,7 @@ public:
|
|||||||
void addDrawables(List<Drawable> drawables, EntityRenderLayer renderLayer, Vec2F translate = Vec2F());
|
void addDrawables(List<Drawable> drawables, EntityRenderLayer renderLayer, Vec2F translate = Vec2F());
|
||||||
void addLightSources(List<LightSource> lightSources, Vec2F translate = Vec2F());
|
void addLightSources(List<LightSource> lightSources, Vec2F translate = Vec2F());
|
||||||
void addParticles(List<Particle> particles, Vec2F translate = Vec2F());
|
void addParticles(List<Particle> particles, Vec2F translate = Vec2F());
|
||||||
|
void addInstrumentAudios(List<AudioInstancePtr> audios, Vec2F translate = Vec2F());
|
||||||
void addAudios(List<AudioInstancePtr> audios, Vec2F translate = Vec2F());
|
void addAudios(List<AudioInstancePtr> audios, Vec2F translate = Vec2F());
|
||||||
void addTilePreviews(List<PreviewTile> previews);
|
void addTilePreviews(List<PreviewTile> previews);
|
||||||
void addOverheadBars(List<OverheadBar> bars, Vec2F translate = Vec2F());
|
void addOverheadBars(List<OverheadBar> bars, Vec2F translate = Vec2F());
|
||||||
|
@ -153,7 +153,7 @@ void Songbook::playback() {
|
|||||||
|
|
||||||
void Songbook::render(RenderCallback* renderCallback) {
|
void Songbook::render(RenderCallback* renderCallback) {
|
||||||
for (auto& a : m_pendingAudio)
|
for (auto& a : m_pendingAudio)
|
||||||
renderCallback->addAudio(a);
|
renderCallback->addInstrumentAudio(a);
|
||||||
m_pendingAudio.clear();
|
m_pendingAudio.clear();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -165,6 +165,7 @@ void WorldClient::removeEntity(EntityId entityId, bool andDie) {
|
|||||||
|
|
||||||
m_particles->addParticles(move(renderCallback.particles));
|
m_particles->addParticles(move(renderCallback.particles));
|
||||||
m_samples.appendAll(move(renderCallback.audios));
|
m_samples.appendAll(move(renderCallback.audios));
|
||||||
|
m_instrumentSamples.appendAll(move(renderCallback.instrumentAudios));
|
||||||
}
|
}
|
||||||
|
|
||||||
if (auto version = m_masterEntitiesNetVersion.maybeTake(entity->entityId())) {
|
if (auto version = m_masterEntitiesNetVersion.maybeTake(entity->entityId())) {
|
||||||
@ -545,6 +546,7 @@ void WorldClient::render(WorldRenderData& renderData, unsigned bufferTiles) {
|
|||||||
|
|
||||||
m_particles->addParticles(move(renderCallback.particles));
|
m_particles->addParticles(move(renderCallback.particles));
|
||||||
m_samples.appendAll(move(renderCallback.audios));
|
m_samples.appendAll(move(renderCallback.audios));
|
||||||
|
m_instrumentSamples.appendAll(move(renderCallback.instrumentAudios));
|
||||||
previewTiles.appendAll(move(renderCallback.previewTiles));
|
previewTiles.appendAll(move(renderCallback.previewTiles));
|
||||||
renderData.overheadBars.appendAll(move(renderCallback.overheadBars));
|
renderData.overheadBars.appendAll(move(renderCallback.overheadBars));
|
||||||
|
|
||||||
@ -685,6 +687,9 @@ void WorldClient::render(WorldRenderData& renderData, unsigned bufferTiles) {
|
|||||||
List<AudioInstancePtr> WorldClient::pullPendingAudio() {
|
List<AudioInstancePtr> WorldClient::pullPendingAudio() {
|
||||||
return take(m_samples);
|
return take(m_samples);
|
||||||
}
|
}
|
||||||
|
List<AudioInstancePtr> WorldClient::pullPendingInstrumentAudio() {
|
||||||
|
return take(m_instrumentSamples);
|
||||||
|
}
|
||||||
|
|
||||||
List<AudioInstancePtr> WorldClient::pullPendingMusic() {
|
List<AudioInstancePtr> WorldClient::pullPendingMusic() {
|
||||||
return take(m_music);
|
return take(m_music);
|
||||||
@ -2137,6 +2142,10 @@ void WorldClient::ClientRenderCallback::addAudio(AudioInstancePtr audio) {
|
|||||||
audios.append(move(audio));
|
audios.append(move(audio));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void WorldClient::ClientRenderCallback::addInstrumentAudio(AudioInstancePtr audio) {
|
||||||
|
instrumentAudios.append(move(audio));
|
||||||
|
}
|
||||||
|
|
||||||
void WorldClient::ClientRenderCallback::addTilePreview(PreviewTile preview) {
|
void WorldClient::ClientRenderCallback::addTilePreview(PreviewTile preview) {
|
||||||
previewTiles.append(move(preview));
|
previewTiles.append(move(preview));
|
||||||
}
|
}
|
||||||
|
@ -149,6 +149,7 @@ public:
|
|||||||
// calculations. It is not necessary on the light array.
|
// calculations. It is not necessary on the light array.
|
||||||
void render(WorldRenderData& renderData, unsigned borderTiles);
|
void render(WorldRenderData& renderData, unsigned borderTiles);
|
||||||
List<AudioInstancePtr> pullPendingAudio();
|
List<AudioInstancePtr> pullPendingAudio();
|
||||||
|
List<AudioInstancePtr> pullPendingInstrumentAudio();
|
||||||
List<AudioInstancePtr> pullPendingMusic();
|
List<AudioInstancePtr> pullPendingMusic();
|
||||||
|
|
||||||
bool playerCanReachEntity(EntityId entityId, bool preferInteractive = true) const;
|
bool playerCanReachEntity(EntityId entityId, bool preferInteractive = true) const;
|
||||||
@ -182,6 +183,7 @@ private:
|
|||||||
void addLightSource(LightSource lightSource) override;
|
void addLightSource(LightSource lightSource) override;
|
||||||
void addParticle(Particle particle) override;
|
void addParticle(Particle particle) override;
|
||||||
void addAudio(AudioInstancePtr audio) override;
|
void addAudio(AudioInstancePtr audio) override;
|
||||||
|
void addInstrumentAudio(AudioInstancePtr audio) override;
|
||||||
void addTilePreview(PreviewTile preview) override;
|
void addTilePreview(PreviewTile preview) override;
|
||||||
void addOverheadBar(OverheadBar bar) override;
|
void addOverheadBar(OverheadBar bar) override;
|
||||||
|
|
||||||
@ -189,6 +191,7 @@ private:
|
|||||||
List<LightSource> lightSources;
|
List<LightSource> lightSources;
|
||||||
List<Particle> particles;
|
List<Particle> particles;
|
||||||
List<AudioInstancePtr> audios;
|
List<AudioInstancePtr> audios;
|
||||||
|
List<AudioInstancePtr> instrumentAudios;
|
||||||
List<PreviewTile> previewTiles;
|
List<PreviewTile> previewTiles;
|
||||||
List<OverheadBar> overheadBars;
|
List<OverheadBar> overheadBars;
|
||||||
};
|
};
|
||||||
@ -308,6 +311,7 @@ private:
|
|||||||
ParticleManagerPtr m_particles;
|
ParticleManagerPtr m_particles;
|
||||||
|
|
||||||
List<AudioInstancePtr> m_samples;
|
List<AudioInstancePtr> m_samples;
|
||||||
|
List<AudioInstancePtr> m_instrumentSamples;
|
||||||
List<AudioInstancePtr> m_music;
|
List<AudioInstancePtr> m_music;
|
||||||
|
|
||||||
HashMap<EntityId, uint64_t> m_masterEntitiesNetVersion;
|
HashMap<EntityId, uint64_t> m_masterEntitiesNetVersion;
|
||||||
|
Loading…
Reference in New Issue
Block a user