Skip to content

Commit ea0c048

Browse files
authored
fix: Avoid to get and set fmod_parameters root (#296)
* fix: Avoid to get and set fmod_parameters root * fix: set rpath to loader_path/.. when linking macos library
1 parent dc44b6f commit ea0c048

File tree

4 files changed

+25
-35
lines changed

4 files changed

+25
-35
lines changed

SConstruct

Lines changed: 1 addition & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -61,6 +61,7 @@ if env["platform"] == "macos":
6161
"-framework",
6262
"Cocoa",
6363
"-Wl,-undefined,dynamic_lookup",
64+
"-rpath", "@loader_path/.."
6465
]
6566
)
6667

@@ -150,24 +151,6 @@ def sys_exec(args):
150151
return out.rstrip("\r\n").lstrip()
151152

152153

153-
#Necessary so the extension library can find the Fmod libraries
154-
if env["platform"] == "macos":
155-
lib_name = "{}.{}.{}".format(
156-
target,
157-
target_name,
158-
env["platform"],
159-
env["target"]
160-
)
161-
162-
def change_id(self, arg, env, executor = None):
163-
sys_exec(["install_name_tool", "-id", "@rpath/%s" % lib_name , target])
164-
sys_exec(["install_name_tool", "-change", "@rpath/%s" % libfmodstudio, "@loader_path/../%s" % libfmodstudio, target])
165-
sys_exec(["install_name_tool", "-change", "@rpath/%s" % libfmod, "@loader_path/../%s" % libfmod, target])
166-
change_id_action = Action('', change_id)
167-
168-
AddPostAction(library, change_id_action)
169-
170-
171154
if env["platform"] == "ios":
172155
xcframework_path = "{}{}/{}.{}.{}.xcframework".format(
173156
target_path,

src/fmod_string_names.cpp

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,7 @@ FmodStringNames* FmodStringNames::get_instance() {
1717
return instance;
1818
}
1919

20-
FmodStringNames::FmodStringNames() : bank_path_property_name("bank_paths") {
20+
FmodStringNames::FmodStringNames() : bank_path_property_name("bank_paths"),
21+
event_parameter_prefix_for_properties(EVENT_PARAMETER_PREFIX_FOR_PROPERTIES) {
2122

2223
}

src/fmod_string_names.h

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,10 @@ class FmodStringNames {
2121
public:
2222
static FmodStringNames* get_instance();
2323

24+
static constexpr const char* EVENT_PARAMETER_PREFIX_FOR_PROPERTIES = "fmod_parameters";
25+
2426
StringName bank_path_property_name;
27+
StringName event_parameter_prefix_for_properties;
2528
};
2629

2730
#endif //GODOTFMOD_FMOD_STRING_NAMES_H

src/nodes/fmod_event_emitter.h

Lines changed: 19 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@
55

66
#include <constants.h>
77
#include <fmod_server.h>
8+
#include <fmod_string_names.h>
89

910
#include <classes/engine.hpp>
1011
#include <classes/project_settings.hpp>
@@ -16,8 +17,6 @@ static constexpr const char* STARTED_SIGNAL_STRING = "started";
1617
static constexpr const char* RESTARTED_SIGNAL_STRING = "restarted";
1718
static constexpr const char* STOPPED_SIGNAL_STRING = "stopped";
1819

19-
static constexpr const char* EVENT_PARAMETER_PREFIX_FOR_PROPERTIES = "fmod_parameters";
20-
2120
namespace godot {
2221

2322
template<class Derived, class NodeType>
@@ -605,9 +604,10 @@ namespace godot {
605604

606605
template<class Derived, class NodeType>
607606
bool FmodEventEmitter<Derived, NodeType>::_set(const StringName& p_name, const Variant& p_property) {
608-
if (!p_name.begins_with(EVENT_PARAMETER_PREFIX_FOR_PROPERTIES)) { return false; }
607+
if (!p_name.begins_with(FmodStringNames::EVENT_PARAMETER_PREFIX_FOR_PROPERTIES)) { return false; }
608+
if (p_name == FmodStringNames::get_instance()->event_parameter_prefix_for_properties) { return false; }
609609

610-
PackedStringArray parts {p_name.trim_prefix(vformat("%s/", EVENT_PARAMETER_PREFIX_FOR_PROPERTIES)).split("/")};
610+
PackedStringArray parts {p_name.trim_prefix(vformat("%s/", FmodStringNames::EVENT_PARAMETER_PREFIX_FOR_PROPERTIES)).split("/")};
611611

612612
const String& parameter_name {parts[0]};
613613

@@ -658,9 +658,10 @@ namespace godot {
658658

659659
template<class Derived, class NodeType>
660660
bool FmodEventEmitter<Derived, NodeType>::_get(const StringName& p_name, Variant& r_property) const {
661-
if (!p_name.begins_with(EVENT_PARAMETER_PREFIX_FOR_PROPERTIES)) { return false; }
661+
if (!p_name.begins_with(FmodStringNames::EVENT_PARAMETER_PREFIX_FOR_PROPERTIES)) { return false; }
662+
if (p_name == FmodStringNames::get_instance()->event_parameter_prefix_for_properties) { return false; }
662663

663-
PackedStringArray parts {p_name.trim_prefix(vformat("%s/", EVENT_PARAMETER_PREFIX_FOR_PROPERTIES)).split("/")};
664+
PackedStringArray parts {p_name.trim_prefix(vformat("%s/", FmodStringNames::EVENT_PARAMETER_PREFIX_FOR_PROPERTIES)).split("/")};
664665

665666
Parameter* parameter {_find_parameter(parts[0])};
666667

@@ -692,9 +693,10 @@ namespace godot {
692693

693694
template<class Derived, class NodeType>
694695
bool FmodEventEmitter<Derived, NodeType>::_property_can_revert(const StringName& p_name) const {
695-
if (!p_name.begins_with(EVENT_PARAMETER_PREFIX_FOR_PROPERTIES)) { return false; }
696+
if (!p_name.begins_with(FmodStringNames::EVENT_PARAMETER_PREFIX_FOR_PROPERTIES)) { return false; }
697+
if (p_name == FmodStringNames::get_instance()->event_parameter_prefix_for_properties) { return false; }
696698

697-
PackedStringArray parts {p_name.trim_prefix(vformat("%s/", EVENT_PARAMETER_PREFIX_FOR_PROPERTIES)).split("/")};
699+
PackedStringArray parts {p_name.trim_prefix(vformat("%s/", FmodStringNames::EVENT_PARAMETER_PREFIX_FOR_PROPERTIES)).split("/")};
698700

699701
if (parts.size() == 1) { return true; }
700702

@@ -703,9 +705,10 @@ namespace godot {
703705

704706
template<class Derived, class NodeType>
705707
bool FmodEventEmitter<Derived, NodeType>::_property_get_revert(const StringName& p_name, Variant& r_property) const {
706-
if (!p_name.begins_with(EVENT_PARAMETER_PREFIX_FOR_PROPERTIES)) { return false; }
708+
if (!p_name.begins_with(FmodStringNames::EVENT_PARAMETER_PREFIX_FOR_PROPERTIES)) { return false; }
709+
if (p_name == FmodStringNames::get_instance()->event_parameter_prefix_for_properties) { return false; }
707710

708-
PackedStringArray parts {p_name.trim_prefix(vformat("%s/", EVENT_PARAMETER_PREFIX_FOR_PROPERTIES)).split("/")};
711+
PackedStringArray parts {p_name.trim_prefix(vformat("%s/", FmodStringNames::EVENT_PARAMETER_PREFIX_FOR_PROPERTIES)).split("/")};
709712

710713
Parameter* parameter {_find_parameter(parts[0])};
711714

@@ -724,7 +727,7 @@ namespace godot {
724727
p_list->push_back(
725728
PropertyInfo(
726729
Variant::Type::DICTIONARY,
727-
EVENT_PARAMETER_PREFIX_FOR_PROPERTIES,
730+
FmodStringNames::get_instance()->event_parameter_prefix_for_properties,
728731
PROPERTY_HINT_NONE,
729732
"",
730733
PROPERTY_USAGE_NO_EDITOR
@@ -741,22 +744,22 @@ namespace godot {
741744
const Variant::Type parameter_variant_type {parameter.variant_type};
742745

743746
p_list->push_back(
744-
PropertyInfo(Variant::Type::INT, vformat("%s/%s/id", EVENT_PARAMETER_PREFIX_FOR_PROPERTIES, parameter_name), PROPERTY_HINT_NONE, "", PROPERTY_USAGE_NO_EDITOR)
747+
PropertyInfo(Variant::Type::INT, vformat("%s/%s/id", FmodStringNames::EVENT_PARAMETER_PREFIX_FOR_PROPERTIES, parameter_name), PROPERTY_HINT_NONE, "", PROPERTY_USAGE_NO_EDITOR)
745748
);
746749

747750
if (!parameter.labels.is_empty()) {
748751
p_list->push_back(
749752
PropertyInfo(
750753
parameter_variant_type,
751-
vformat("%s/%s", EVENT_PARAMETER_PREFIX_FOR_PROPERTIES, parameter_name),
754+
vformat("%s/%s", FmodStringNames::EVENT_PARAMETER_PREFIX_FOR_PROPERTIES, parameter_name),
752755
PROPERTY_HINT_ENUM,
753756
vformat(String(",").join(parameter.labels))
754757
)
755758
);
756759
p_list->push_back(
757760
PropertyInfo(
758761
Variant::Type::PACKED_STRING_ARRAY,
759-
vformat("%s/%s/labels", EVENT_PARAMETER_PREFIX_FOR_PROPERTIES, parameter_name),
762+
vformat("%s/%s/labels", FmodStringNames::EVENT_PARAMETER_PREFIX_FOR_PROPERTIES, parameter_name),
760763
PROPERTY_HINT_NONE,
761764
"",
762765
PROPERTY_USAGE_NO_EDITOR
@@ -766,7 +769,7 @@ namespace godot {
766769
p_list->push_back(
767770
PropertyInfo(
768771
parameter_variant_type,
769-
vformat("%s/%s", EVENT_PARAMETER_PREFIX_FOR_PROPERTIES, parameter_name),
772+
vformat("%s/%s", FmodStringNames::EVENT_PARAMETER_PREFIX_FOR_PROPERTIES, parameter_name),
770773
PROPERTY_HINT_RANGE,
771774
vformat("%s,%s,0.1", parameter_min_value, parameter_max_value)
772775
)
@@ -776,7 +779,7 @@ namespace godot {
776779
p_list->push_back(
777780
PropertyInfo(
778781
Variant::Type::INT,
779-
vformat("%s/%s/variant_type", EVENT_PARAMETER_PREFIX_FOR_PROPERTIES, parameter_name),
782+
vformat("%s/%s/variant_type", FmodStringNames::EVENT_PARAMETER_PREFIX_FOR_PROPERTIES, parameter_name),
780783
PROPERTY_HINT_ENUM,
781784
"",
782785
PROPERTY_USAGE_NO_EDITOR

0 commit comments

Comments
 (0)