aboutsummaryrefslogtreecommitdiffstats
path: root/al/eax_fx_slots.h
diff options
context:
space:
mode:
authorBoris I. Bendovsky <bibendovsky@hotmail.com>2022-01-30 14:47:32 +0200
committerGitHub <noreply@github.com>2022-01-30 04:47:32 -0800
commit19ed994dc30ed84ea7cbbb5152577669fc25caf6 (patch)
treef68933bf8f778806618bd6c0b1bf9ced1b0ccf08 /al/eax_fx_slots.h
parent619249371a40f03cf988d1f5750d643df797c485 (diff)
Add EAX extensions (EAX 2.0-5.0, X-RAM) (#632)
* Add EAX extensions (EAX 2.0-5.0, X-RAM) * Comment out C++17 leftovers * Remove everything related to patching * Update alsoftrc.sample * Rewrite integration * Fix GCC compilation under Linux * Always reset EAX effect properties when loading it into FX slot
Diffstat (limited to 'al/eax_fx_slots.h')
-rw-r--r--al/eax_fx_slots.h46
1 files changed, 46 insertions, 0 deletions
diff --git a/al/eax_fx_slots.h b/al/eax_fx_slots.h
new file mode 100644
index 00000000..6abe61b6
--- /dev/null
+++ b/al/eax_fx_slots.h
@@ -0,0 +1,46 @@
+#ifndef EAX_FX_SLOTS_INCLUDED
+#define EAX_FX_SLOTS_INCLUDED
+
+
+#include <array>
+
+#include "al/auxeffectslot.h"
+
+#include "eax_api.h"
+
+#include "eax_fx_slot_index.h"
+
+
+class EaxFxSlots
+{
+public:
+ void initialize(
+ ALCcontext& al_context);
+
+ void uninitialize() noexcept;
+
+
+ const ALeffectslot& get(
+ EaxFxSlotIndex index) const;
+
+ ALeffectslot& get(
+ EaxFxSlotIndex index);
+
+
+private:
+ using Items = std::array<EaxAlEffectSlotUPtr, EAX_MAX_FXSLOTS>;
+
+
+ Items fx_slots_{};
+
+
+ [[noreturn]]
+ static void fail(
+ const char* message);
+
+ void initialize_fx_slots(
+ ALCcontext& al_context);
+}; // EaxFxSlots
+
+
+#endif // !EAX_FX_SLOTS_INCLUDED