#pragma once #include #include #include #include #include #include #include #include #include #include "steam_audio_dynamic_mesh.hpp" #include "steam_audio_source.hpp" #include "steam_audio_static_mesh.hpp" using namespace godot; class SteamAudioServer : public Object { GDCLASS(SteamAudioServer, Object) // Godot class declaration macro private: IPLContext ctx=nullptr; IPLContextSettings ctxSettings; IPLAudioSettings audioSettings; IPLEmbreeDevice *embreeDevice=nullptr; IPLEmbreeDeviceSettings embreeDeviceSettings; IPLScene *scene=nullptr; IPLSceneSettings sceneSettings; IPLSimulator simulator; IPLSimulationSettings simulationSettings; IPLHRTF hrtf; IPLHRTFSettings hrtfSettings; ProjectSettings *proj_settings = ProjectSettings::get_singleton(); Ref directThread; Ref indirectThread; public: SteamAudioServer(); // Constructor ~SteamAudioServer() override; // Destructor void _notification(int p_what); protected: static void _bind_methods(); void initialize(); void shutdown(); void start_direct_thread(); void start_indirect_thread(); };