#ifndef EAX_FX_SLOTS_INCLUDED
|
|
#define EAX_FX_SLOTS_INCLUDED
|
|
|
|
|
|
#include <array>
|
|
|
|
#include "al/auxeffectslot.h"
|
|
|
|
#include "api.h"
|
|
#include "call.h"
|
|
#include "fx_slot_index.h"
|
|
|
|
|
|
class EaxFxSlots
|
|
{
|
|
public:
|
|
void initialize(
|
|
const EaxCall& call,
|
|
ALCcontext& al_context);
|
|
|
|
void uninitialize() noexcept;
|
|
|
|
void commit()
|
|
{
|
|
for(auto& fx_slot : fx_slots_)
|
|
fx_slot->eax_commit();
|
|
}
|
|
|
|
|
|
const ALeffectslot& get(
|
|
EaxFxSlotIndex index) const;
|
|
|
|
ALeffectslot& get(
|
|
EaxFxSlotIndex index);
|
|
|
|
void unlock_legacy() noexcept;
|
|
|
|
|
|
private:
|
|
using Items = std::array<EaxAlEffectSlotUPtr, EAX_MAX_FXSLOTS>;
|
|
|
|
|
|
Items fx_slots_{};
|
|
|
|
|
|
[[noreturn]]
|
|
static void fail(
|
|
const char* message);
|
|
|
|
void initialize_fx_slots(
|
|
const EaxCall& call,
|
|
ALCcontext& al_context);
|
|
}; // EaxFxSlots
|
|
|
|
|
|
#endif // !EAX_FX_SLOTS_INCLUDED
|