Add optional arguments to AudioStreamRandomizer

Adds stream and weight parameters to add_stream. By default, weight is
1.0f.
This commit is contained in:
MrBlockers 2022-10-26 17:54:31 -04:00
parent 2a04b18d37
commit 569ead5762
4 changed files with 9 additions and 7 deletions

View File

@ -12,8 +12,10 @@
<method name="add_stream"> <method name="add_stream">
<return type="void" /> <return type="void" />
<param index="0" name="index" type="int" /> <param index="0" name="index" type="int" />
<param index="1" name="stream" type="AudioStream" />
<param index="2" name="weight" type="float" default="1.0" />
<description> <description>
Insert a stream at the specified index. Insert a stream at the specified index. If the index is less than zero, the insertion occurs at the end of the underlying pool.
</description> </description>
</method> </method>
<method name="get_stream" qualifiers="const"> <method name="get_stream" qualifiers="const">

View File

@ -81,7 +81,7 @@ void AudioStreamRandomizerEditorPlugin::_move_stream_array_element(Object *p_und
if (p_from_index < 0) { if (p_from_index < 0) {
undo_redo_man->add_undo_method(randomizer, "remove_stream", p_to_pos < 0 ? randomizer->get_streams_count() : p_to_pos); undo_redo_man->add_undo_method(randomizer, "remove_stream", p_to_pos < 0 ? randomizer->get_streams_count() : p_to_pos);
} else if (p_to_pos < 0) { } else if (p_to_pos < 0) {
undo_redo_man->add_undo_method(randomizer, "add_stream", p_from_index); undo_redo_man->add_undo_method(randomizer, "add_stream", p_from_index, Ref<AudioStream>());
} }
List<PropertyInfo> properties; List<PropertyInfo> properties;
@ -107,7 +107,7 @@ void AudioStreamRandomizerEditorPlugin::_move_stream_array_element(Object *p_und
#undef ADD_UNDO #undef ADD_UNDO
if (p_from_index < 0) { if (p_from_index < 0) {
undo_redo_man->add_do_method(randomizer, "add_stream", p_to_pos); undo_redo_man->add_do_method(randomizer, "add_stream", p_to_pos, Ref<AudioStream>());
} else if (p_to_pos < 0) { } else if (p_to_pos < 0) {
undo_redo_man->add_do_method(randomizer, "remove_stream", p_from_index); undo_redo_man->add_do_method(randomizer, "remove_stream", p_from_index);
} else { } else {

View File

@ -410,12 +410,12 @@ AudioStreamPlaybackMicrophone::AudioStreamPlaybackMicrophone() {
//////////////////////////////// ////////////////////////////////
void AudioStreamRandomizer::add_stream(int p_index) { void AudioStreamRandomizer::add_stream(int p_index, Ref<AudioStream> p_stream, float p_weight) {
if (p_index < 0) { if (p_index < 0) {
p_index = audio_stream_pool.size(); p_index = audio_stream_pool.size();
} }
ERR_FAIL_COND(p_index > audio_stream_pool.size()); ERR_FAIL_COND(p_index > audio_stream_pool.size());
PoolEntry entry{ nullptr, 1.0f }; PoolEntry entry{ p_stream, p_weight };
audio_stream_pool.insert(p_index, entry); audio_stream_pool.insert(p_index, entry);
emit_signal(SNAME("changed")); emit_signal(SNAME("changed"));
notify_property_list_changed(); notify_property_list_changed();
@ -709,7 +709,7 @@ void AudioStreamRandomizer::_get_property_list(List<PropertyInfo> *p_list) const
} }
void AudioStreamRandomizer::_bind_methods() { void AudioStreamRandomizer::_bind_methods() {
ClassDB::bind_method(D_METHOD("add_stream", "index"), &AudioStreamRandomizer::add_stream); ClassDB::bind_method(D_METHOD("add_stream", "index", "stream", "weight"), &AudioStreamRandomizer::add_stream, DEFVAL(1.0));
ClassDB::bind_method(D_METHOD("move_stream", "index_from", "index_to"), &AudioStreamRandomizer::move_stream); ClassDB::bind_method(D_METHOD("move_stream", "index_from", "index_to"), &AudioStreamRandomizer::move_stream);
ClassDB::bind_method(D_METHOD("remove_stream", "index"), &AudioStreamRandomizer::remove_stream); ClassDB::bind_method(D_METHOD("remove_stream", "index"), &AudioStreamRandomizer::remove_stream);

View File

@ -241,7 +241,7 @@ protected:
void _get_property_list(List<PropertyInfo> *p_list) const; void _get_property_list(List<PropertyInfo> *p_list) const;
public: public:
void add_stream(int p_index); void add_stream(int p_index, Ref<AudioStream> p_stream, float p_weight = 1.0);
void move_stream(int p_index_from, int p_index_to); void move_stream(int p_index_from, int p_index_to);
void remove_stream(int p_index); void remove_stream(int p_index);