fix shing
Some checks failed
Main / 🧹 Lint / 📜 C++ (push) Has been cancelled
Main / 🛠 Build / 🍏 macOS Clang (Debug) (push) Has been cancelled
Main / 🛠 Build / 🐧 Linux GCC (Debug) (push) Has been cancelled
Main / 🛠 Build / 🪟 Windows MSVC (Debug) (push) Has been cancelled
Main / 🛠 Build / 🍏 macOS Clang (Release) (push) Has been cancelled
Main / 🛠 Build / 🐧 Linux GCC (Release) (push) Has been cancelled
Main / 🛠 Build / 🪟 Windows MSVC (Release) (push) Has been cancelled

This commit is contained in:
Nyx
2025-10-28 13:44:35 -06:00
parent 14d35e9a3e
commit 2b51e93714
4 changed files with 26 additions and 15 deletions

View File

@@ -12,6 +12,8 @@ void initialize_steam_audio(ModuleInitializationLevel p_level) {
if (p_level == MODULE_INITIALIZATION_LEVEL_SERVERS) { if (p_level == MODULE_INITIALIZATION_LEVEL_SERVERS) {
GDREGISTER_CLASS(SteamAudioServer); GDREGISTER_CLASS(SteamAudioServer);
srv = memnew(SteamAudioServer); srv = memnew(SteamAudioServer);
Engine::get_singleton()->register_singleton("SteamAudioServer", srv);
srv->initialize();
} }
if (p_level == MODULE_INITIALIZATION_LEVEL_SCENE) { if (p_level == MODULE_INITIALIZATION_LEVEL_SCENE) {
@@ -28,6 +30,7 @@ void initialize_steam_audio(ModuleInitializationLevel p_level) {
void uninitialize_steam_audio(ModuleInitializationLevel p_level) { void uninitialize_steam_audio(ModuleInitializationLevel p_level) {
if (p_level == MODULE_INITIALIZATION_LEVEL_SERVERS) { if (p_level == MODULE_INITIALIZATION_LEVEL_SERVERS) {
memdelete(srv); memdelete(srv);
srv = nullptr;
} }
} }

View File

@@ -3,7 +3,6 @@
using namespace godot; using namespace godot;
SteamAudioServer::SteamAudioServer() { SteamAudioServer::SteamAudioServer() {
} }
SteamAudioServer::~SteamAudioServer() { SteamAudioServer::~SteamAudioServer() {
@@ -17,10 +16,13 @@ void SteamAudioServer::_bind_methods() {
void SteamAudioServer::initialize() { void SteamAudioServer::initialize() {
if (Engine::get_singleton()->is_editor_hint()) if (Engine::get_singleton()->is_editor_hint())
return; return;
IPLerror err = iplContextCreate(&ctxSettings,&ctx); IPLerror err = iplContextCreate(&ctxSettings,&ctx);
if (err!=IPL_STATUS_SUCCESS) { if (err!=IPL_STATUS_SUCCESS) {
ERR_PRINT("Failed to create IPL context"); ERR_PRINT("Failed to create IPL context");
} }
switch (static_cast<int>(proj_settings->get_setting("steam_audio/ray_tracer/RayTracer"))){ switch (static_cast<int>(proj_settings->get_setting("steam_audio/ray_tracer/RayTracer"))){
case 0: case 0:
break; break;
@@ -60,6 +62,8 @@ void SteamAudioServer::_notification(int p_what) {
directThread->start(callable_mp(this,&SteamAudioServer::start_direct_thread),Thread::PRIORITY_NORMAL); directThread->start(callable_mp(this,&SteamAudioServer::start_direct_thread),Thread::PRIORITY_NORMAL);
indirectThread->start(callable_mp(this,&SteamAudioServer::start_indirect_thread),Thread::PRIORITY_NORMAL); indirectThread->start(callable_mp(this,&SteamAudioServer::start_indirect_thread),Thread::PRIORITY_NORMAL);
default:
return;
} }
} }
void SteamAudioServer::start_direct_thread() { void SteamAudioServer::start_direct_thread() {

View File

@@ -1,21 +1,22 @@
#pragma once #pragma once
#include <godot_cpp/classes/audio_frame.hpp> #include <godot_cpp/classes/audio_frame.hpp>
#include <godot_cpp/classes/mutex.hpp>
#include <godot_cpp/classes/scene_tree.hpp> #include <godot_cpp/classes/scene_tree.hpp>
#include <godot_cpp/classes/thread.hpp>
#include <godot_cpp/classes/wrapped.hpp> #include <godot_cpp/classes/wrapped.hpp>
#include <godot_cpp/core/class_db.hpp> #include <godot_cpp/core/class_db.hpp>
#include <godot_cpp/godot.hpp> #include <godot_cpp/godot.hpp>
#include <godot_cpp/classes/thread.hpp>
#include <godot_cpp/classes/mutex.hpp>
#include <phonon.h> #include <phonon.h>
#include <steam_audio.hpp> #include <steam_audio.hpp>
#include <unordered_map>
#include "steam_audio_dynamic_mesh.hpp" #include "steam_audio_dynamic_mesh.hpp"
#include "steam_audio_source.hpp" #include "steam_audio_source.hpp"
#include "steam_audio_static_mesh.hpp" #include "steam_audio_static_mesh.hpp"
using namespace godot; using namespace godot;
class SteamAudioServer : public Object { class SteamAudioServer : public Object {
GDCLASS(SteamAudioServer, Object) // Godot class declaration macro GDCLASS(SteamAudioServer, Object) // Godot class declaration macro
private: private:
@@ -47,8 +48,8 @@ private:
Ref<Thread> indirectThread; Ref<Thread> indirectThread;
public: public:
SteamAudioServer(); // Constructor SteamAudioServer();
~SteamAudioServer() override; // Destructor ~SteamAudioServer() override;
void _notification(int p_what); void _notification(int p_what);
void register_audio_source(SteamAudioSource *source); void register_audio_source(SteamAudioSource *source);
void unregister_audio_source(SteamAudioSource *source); void unregister_audio_source(SteamAudioSource *source);
@@ -57,8 +58,11 @@ public:
protected: protected:
static void _bind_methods(); static void _bind_methods();
public:
void initialize(); void initialize();
void shutdown(); void shutdown();
void start_direct_thread(); void start_direct_thread();
void start_indirect_thread(); void start_indirect_thread();
}; };