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) {
GDREGISTER_CLASS(SteamAudioServer);
srv = memnew(SteamAudioServer);
Engine::get_singleton()->register_singleton("SteamAudioServer", srv);
srv->initialize();
}
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) {
if (p_level == MODULE_INITIALIZATION_LEVEL_SERVERS) {
memdelete(srv);
srv = nullptr;
}
}

View File

@@ -38,15 +38,15 @@ void SteamAudioListener::_notification(int p_what) {
}
void SteamAudioListener::update_listener(IPLSimulator iplSim, IPLSimulationSharedInputs iplSimInputs) {
needs_update=false;
needs_update = false;
Transform3D transform = get_global_transform();
IPLCoordinateSpace3 space = SteamAudio::godot_to_ipl_space(transform);
iplSimInputs.listener=space;
iplSimInputs.listener = space;
iplSimulatorSetSharedInputs(iplSim,IPL_SIMULATIONFLAGS_DIRECT,&iplSimInputs);
iplSimulatorSetSharedInputs(iplSim,IPL_SIMULATIONFLAGS_PATHING,&iplSimInputs);
iplSimulatorSetSharedInputs(iplSim,IPL_SIMULATIONFLAGS_REFLECTIONS,&iplSimInputs);
}
iplSimulatorSetSharedInputs(iplSim, IPL_SIMULATIONFLAGS_DIRECT, &iplSimInputs);
iplSimulatorSetSharedInputs(iplSim, IPL_SIMULATIONFLAGS_PATHING, &iplSimInputs);
iplSimulatorSetSharedInputs(iplSim, IPL_SIMULATIONFLAGS_REFLECTIONS, &iplSimInputs);
}

View File

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

View File

@@ -1,21 +1,22 @@
#pragma once
#include <godot_cpp/classes/audio_frame.hpp>
#include <godot_cpp/classes/mutex.hpp>
#include <godot_cpp/classes/scene_tree.hpp>
#include <godot_cpp/classes/thread.hpp>
#include <godot_cpp/classes/wrapped.hpp>
#include <godot_cpp/core/class_db.hpp>
#include <godot_cpp/godot.hpp>
#include <godot_cpp/classes/thread.hpp>
#include <godot_cpp/classes/mutex.hpp>
#include <phonon.h>
#include <steam_audio.hpp>
#include <unordered_map>
#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:
@@ -27,7 +28,7 @@ private:
bool needs_processing = false;
};
std::unordered_map<SteamAudioSource*,AudioSourceData> audio_sources;
std::unordered_map<SteamAudioSource *, AudioSourceData> audio_sources;
Ref<Mutex> audio_mutex;
IPLContext ctx=nullptr;
IPLContextSettings ctxSettings;
@@ -47,8 +48,8 @@ private:
Ref<Thread> indirectThread;
public:
SteamAudioServer(); // Constructor
~SteamAudioServer() override; // Destructor
SteamAudioServer();
~SteamAudioServer() override;
void _notification(int p_what);
void register_audio_source(SteamAudioSource *source);
void unregister_audio_source(SteamAudioSource *source);
@@ -57,8 +58,11 @@ public:
protected:
static void _bind_methods();
public:
void initialize();
void shutdown();
void start_direct_thread();
void start_indirect_thread();
};