updated .gitattributes, configured CMake to properly handle SteamAudio DLL
This commit is contained in:
@@ -4,7 +4,8 @@ target_sources( ${PROJECT_NAME}
|
||||
PRIVATE
|
||||
register_types.cpp
|
||||
register_types.h
|
||||
|
||||
steam_audio.cpp
|
||||
steam_audio.h
|
||||
)
|
||||
|
||||
target_include_directories( ${PROJECT_NAME}
|
||||
|
||||
@@ -4,27 +4,28 @@
|
||||
|
||||
using namespace godot;
|
||||
|
||||
void register_steam_audio_types() {
|
||||
ClassDB::register_class<SteamAudio>();
|
||||
void initialize_steam_audio(ModuleInitializationLevel p_level) {
|
||||
if (p_level!=MODULE_INITIALIZATION_LEVEL_SERVERS) {
|
||||
return;
|
||||
}
|
||||
GDREGISTER_CLASS(SteamAudio);
|
||||
}
|
||||
void uninitialize_steam_audio(ModuleInitializationLevel p_level) {
|
||||
if (p_level!=MODULE_INITIALIZATION_LEVEL_SERVERS) {
|
||||
return;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
extern "C" GDE_EXPORT GDExtensionBool godot_steam_audio_init(
|
||||
GDExtensionInterfaceGetProcAddress p_get_proc_address,
|
||||
GDExtensionClassLibraryPtr p_library,
|
||||
GDExtensionInitialization *p_initialization
|
||||
) {
|
||||
// Create the InitObject that drives registration.
|
||||
GDExtensionBinding::InitObject init_obj{ p_get_proc_address, p_library, p_initialization };
|
||||
extern "C" {
|
||||
// Initialization.
|
||||
GDExtensionBool GDE_EXPORT steam_audio_library_init(GDExtensionInterfaceGetProcAddress p_get_proc_address, const GDExtensionClassLibraryPtr p_library, GDExtensionInitialization *r_initialization) {
|
||||
godot::GDExtensionBinding::InitObject init_obj(p_get_proc_address, p_library, r_initialization);
|
||||
|
||||
// 1) Hook up your initializer
|
||||
init_obj.register_initializer( register_steam_audio_types );
|
||||
init_obj.register_initializer(initialize_steam_audio);
|
||||
init_obj.register_terminator(uninitialize_steam_audio);
|
||||
init_obj.set_minimum_library_initialization_level(MODULE_INITIALIZATION_LEVEL_SCENE);
|
||||
|
||||
// 2) Hook up your terminator (must match the expected callback signature)
|
||||
init_obj.register_terminator( [](ModuleInitializationLevel level) {} );
|
||||
|
||||
// 3) Choose the minimum init level (common choices: SCENE, EDITOR, etc.)
|
||||
init_obj.set_minimum_library_initialization_level(MODULE_INITIALIZATION_LEVEL_SCENE);
|
||||
|
||||
// 4) Actually perform the registrations
|
||||
return init_obj.init();
|
||||
}
|
||||
return init_obj.init();
|
||||
}
|
||||
}
|
||||
@@ -3,18 +3,9 @@
|
||||
//
|
||||
#pragma once
|
||||
|
||||
#include <godot_cpp/godot.hpp>
|
||||
#include <godot_cpp/core/binder_common.hpp>
|
||||
#include <godot_cpp/core/class_db.hpp> // for ClassDB
|
||||
|
||||
using namespace godot;
|
||||
|
||||
// Called by the InitObject below to register your SteamAudio class.
|
||||
void register_steam_audio_types();
|
||||
|
||||
// This is the exact symbol Godot will look up in your DLL.
|
||||
extern "C" GDE_EXPORT GDExtensionBool godot_steam_audio_init(
|
||||
GDExtensionInterfaceGetProcAddress p_get_proc_address,
|
||||
GDExtensionClassLibraryPtr p_library,
|
||||
GDExtensionInitialization *p_initialization
|
||||
);
|
||||
void initialize_steam_audio(ModuleInitializationLevel p_level);
|
||||
void uninitialize_steam_audio(ModuleInitializationLevel p_level);
|
||||
@@ -10,14 +10,16 @@ using namespace godot;
|
||||
{
|
||||
if (context)
|
||||
{
|
||||
steam_audio_release_context(context);
|
||||
iplContextRelease(&context);
|
||||
context=nullptr;
|
||||
}
|
||||
}
|
||||
void SteamAudio::_bind_methods()
|
||||
{
|
||||
void SteamAudio::_bind_methods() {
|
||||
ClassDB::bind_method(D_METHOD("initialize"), &SteamAudio::initialize);
|
||||
}
|
||||
|
||||
SteamAudio::SteamAudio() = default;
|
||||
|
||||
bool SteamAudio::initialize()
|
||||
{
|
||||
IPLContextSettings settings{};
|
||||
|
||||
@@ -7,20 +7,21 @@
|
||||
#include <godot_cpp/godot.hpp>
|
||||
#include<godot_cpp/core/class_db.hpp>
|
||||
#include <godot_cpp/classes/ref.hpp>
|
||||
#include<godot_cpp/variant/utility_functions.hpp>
|
||||
#include<phonon.h>
|
||||
#include <godot_cpp/variant/utility_functions.hpp>
|
||||
#include <phonon.h>
|
||||
|
||||
using namespace godot;
|
||||
|
||||
class SteamAudio : RefCounted
|
||||
class SteamAudio : public RefCounted
|
||||
{
|
||||
GDCLASS( SteamAudio,RefCounted );
|
||||
GDCLASS( SteamAudio,RefCounted ) // NOLINT(readability-use-auto)
|
||||
|
||||
private:
|
||||
IPLContext context = nullptr;
|
||||
protected:
|
||||
static void _bind_methods();
|
||||
public:
|
||||
SteamAudio();
|
||||
~SteamAudio();
|
||||
~SteamAudio() override;
|
||||
bool initialize();
|
||||
};
|
||||
Reference in New Issue
Block a user