feat: updated engine version to 4.4-rc1
This commit is contained in:
parent
ee00efde1f
commit
21ba8e33af
5459 changed files with 1128836 additions and 198305 deletions
|
|
@ -1,4 +1,5 @@
|
|||
#!/usr/bin/env python
|
||||
from misc.utility.scons_hints import *
|
||||
|
||||
Import("env")
|
||||
|
||||
|
|
|
|||
|
|
@ -72,6 +72,14 @@ float AudioStreamPlayer::get_volume_db() const {
|
|||
return internal->volume_db;
|
||||
}
|
||||
|
||||
void AudioStreamPlayer::set_volume_linear(float p_volume) {
|
||||
set_volume_db(Math::linear_to_db(p_volume));
|
||||
}
|
||||
|
||||
float AudioStreamPlayer::get_volume_linear() const {
|
||||
return Math::db_to_linear(get_volume_db());
|
||||
}
|
||||
|
||||
void AudioStreamPlayer::set_pitch_scale(float p_pitch_scale) {
|
||||
internal->set_pitch_scale(p_pitch_scale);
|
||||
}
|
||||
|
|
@ -112,7 +120,7 @@ void AudioStreamPlayer::seek(float p_seconds) {
|
|||
}
|
||||
|
||||
void AudioStreamPlayer::stop() {
|
||||
internal->stop();
|
||||
internal->stop_basic();
|
||||
}
|
||||
|
||||
bool AudioStreamPlayer::is_playing() const {
|
||||
|
|
@ -154,10 +162,6 @@ void AudioStreamPlayer::_set_playing(bool p_enable) {
|
|||
internal->set_playing(p_enable);
|
||||
}
|
||||
|
||||
bool AudioStreamPlayer::_is_active() const {
|
||||
return internal->is_active();
|
||||
}
|
||||
|
||||
void AudioStreamPlayer::set_stream_paused(bool p_pause) {
|
||||
internal->set_stream_paused(p_pause);
|
||||
}
|
||||
|
|
@ -230,6 +234,9 @@ void AudioStreamPlayer::_bind_methods() {
|
|||
ClassDB::bind_method(D_METHOD("set_volume_db", "volume_db"), &AudioStreamPlayer::set_volume_db);
|
||||
ClassDB::bind_method(D_METHOD("get_volume_db"), &AudioStreamPlayer::get_volume_db);
|
||||
|
||||
ClassDB::bind_method(D_METHOD("set_volume_linear", "volume_linear"), &AudioStreamPlayer::set_volume_linear);
|
||||
ClassDB::bind_method(D_METHOD("get_volume_linear"), &AudioStreamPlayer::get_volume_linear);
|
||||
|
||||
ClassDB::bind_method(D_METHOD("set_pitch_scale", "pitch_scale"), &AudioStreamPlayer::set_pitch_scale);
|
||||
ClassDB::bind_method(D_METHOD("get_pitch_scale"), &AudioStreamPlayer::get_pitch_scale);
|
||||
|
||||
|
|
@ -249,8 +256,7 @@ void AudioStreamPlayer::_bind_methods() {
|
|||
ClassDB::bind_method(D_METHOD("set_mix_target", "mix_target"), &AudioStreamPlayer::set_mix_target);
|
||||
ClassDB::bind_method(D_METHOD("get_mix_target"), &AudioStreamPlayer::get_mix_target);
|
||||
|
||||
ClassDB::bind_method(D_METHOD("_set_playing", "enable"), &AudioStreamPlayer::_set_playing);
|
||||
ClassDB::bind_method(D_METHOD("_is_active"), &AudioStreamPlayer::_is_active);
|
||||
ClassDB::bind_method(D_METHOD("set_playing", "enable"), &AudioStreamPlayer::_set_playing);
|
||||
|
||||
ClassDB::bind_method(D_METHOD("set_stream_paused", "pause"), &AudioStreamPlayer::set_stream_paused);
|
||||
ClassDB::bind_method(D_METHOD("get_stream_paused"), &AudioStreamPlayer::get_stream_paused);
|
||||
|
|
@ -266,8 +272,9 @@ void AudioStreamPlayer::_bind_methods() {
|
|||
|
||||
ADD_PROPERTY(PropertyInfo(Variant::OBJECT, "stream", PROPERTY_HINT_RESOURCE_TYPE, "AudioStream"), "set_stream", "get_stream");
|
||||
ADD_PROPERTY(PropertyInfo(Variant::FLOAT, "volume_db", PROPERTY_HINT_RANGE, "-80,24,suffix:dB"), "set_volume_db", "get_volume_db");
|
||||
ADD_PROPERTY(PropertyInfo(Variant::FLOAT, "volume_linear", PROPERTY_HINT_NONE, "", PROPERTY_USAGE_NONE), "set_volume_linear", "get_volume_linear");
|
||||
ADD_PROPERTY(PropertyInfo(Variant::FLOAT, "pitch_scale", PROPERTY_HINT_RANGE, "0.01,4,0.01,or_greater"), "set_pitch_scale", "get_pitch_scale");
|
||||
ADD_PROPERTY(PropertyInfo(Variant::BOOL, "playing", PROPERTY_HINT_NONE, "", PROPERTY_USAGE_EDITOR), "_set_playing", "is_playing");
|
||||
ADD_PROPERTY(PropertyInfo(Variant::BOOL, "playing", PROPERTY_HINT_ONESHOT, "", PROPERTY_USAGE_EDITOR), "set_playing", "is_playing");
|
||||
ADD_PROPERTY(PropertyInfo(Variant::BOOL, "autoplay"), "set_autoplay", "is_autoplay_enabled");
|
||||
ADD_PROPERTY(PropertyInfo(Variant::BOOL, "stream_paused", PROPERTY_HINT_NONE, ""), "set_stream_paused", "get_stream_paused");
|
||||
ADD_PROPERTY(PropertyInfo(Variant::INT, "mix_target", PROPERTY_HINT_ENUM, "Stereo,Surround,Center"), "set_mix_target", "get_mix_target");
|
||||
|
|
@ -283,7 +290,7 @@ void AudioStreamPlayer::_bind_methods() {
|
|||
}
|
||||
|
||||
AudioStreamPlayer::AudioStreamPlayer() {
|
||||
internal = memnew(AudioStreamPlayerInternal(this, callable_mp(this, &AudioStreamPlayer::play), false));
|
||||
internal = memnew(AudioStreamPlayerInternal(this, callable_mp(this, &AudioStreamPlayer::play), callable_mp(this, &AudioStreamPlayer::stop), false));
|
||||
}
|
||||
|
||||
AudioStreamPlayer::~AudioStreamPlayer() {
|
||||
|
|
|
|||
|
|
@ -80,6 +80,9 @@ public:
|
|||
void set_volume_db(float p_volume);
|
||||
float get_volume_db() const;
|
||||
|
||||
void set_volume_linear(float p_volume);
|
||||
float get_volume_linear() const;
|
||||
|
||||
void set_pitch_scale(float p_pitch_scale);
|
||||
float get_pitch_scale() const;
|
||||
|
||||
|
|
|
|||
|
|
@ -112,6 +112,7 @@ void AudioStreamPlayerInternal::notification(int p_what) {
|
|||
stream_playbacks.clear();
|
||||
} break;
|
||||
|
||||
case Node::NOTIFICATION_SUSPENDED:
|
||||
case Node::NOTIFICATION_PAUSED: {
|
||||
if (!node->can_process()) {
|
||||
// Node can't process so we start fading out to silence
|
||||
|
|
@ -119,6 +120,13 @@ void AudioStreamPlayerInternal::notification(int p_what) {
|
|||
}
|
||||
} break;
|
||||
|
||||
case Node::NOTIFICATION_UNSUSPENDED: {
|
||||
if (node->get_tree()->is_paused()) {
|
||||
break;
|
||||
}
|
||||
[[fallthrough]];
|
||||
}
|
||||
|
||||
case Node::NOTIFICATION_UNPAUSED: {
|
||||
set_stream_paused(false);
|
||||
} break;
|
||||
|
|
@ -132,7 +140,7 @@ Ref<AudioStreamPlayback> AudioStreamPlayerInternal::play_basic() {
|
|||
}
|
||||
ERR_FAIL_COND_V_MSG(!node->is_inside_tree(), stream_playback, "Playback can only happen when a node is inside the scene tree");
|
||||
if (stream->is_monophonic() && is_playing()) {
|
||||
stop();
|
||||
stop_callable.call();
|
||||
}
|
||||
stream_playback = stream->instantiate_playback();
|
||||
ERR_FAIL_COND_V_MSG(stream_playback.is_null(), stream_playback, "Failed to instantiate playback.");
|
||||
|
|
@ -152,6 +160,7 @@ Ref<AudioStreamPlayback> AudioStreamPlayerInternal::play_basic() {
|
|||
Ref<AudioSamplePlayback> sample_playback;
|
||||
sample_playback.instantiate();
|
||||
sample_playback->stream = stream;
|
||||
sample_playback->pitch_scale = pitch_scale;
|
||||
stream_playback->set_sample_playback(sample_playback);
|
||||
}
|
||||
} else if (!stream->is_meta_stream()) {
|
||||
|
|
@ -242,7 +251,7 @@ void AudioStreamPlayerInternal::set_stream(Ref<AudioStream> p_stream) {
|
|||
if (stream.is_valid()) {
|
||||
stream->disconnect(SNAME("parameter_list_changed"), callable_mp(this, &AudioStreamPlayerInternal::_update_stream_parameters));
|
||||
}
|
||||
stop();
|
||||
stop_callable.call();
|
||||
stream = p_stream;
|
||||
_update_stream_parameters();
|
||||
if (stream.is_valid()) {
|
||||
|
|
@ -253,12 +262,12 @@ void AudioStreamPlayerInternal::set_stream(Ref<AudioStream> p_stream) {
|
|||
|
||||
void AudioStreamPlayerInternal::seek(float p_seconds) {
|
||||
if (is_playing()) {
|
||||
stop();
|
||||
stop_callable.call();
|
||||
play_callable.call(p_seconds);
|
||||
}
|
||||
}
|
||||
|
||||
void AudioStreamPlayerInternal::stop() {
|
||||
void AudioStreamPlayerInternal::stop_basic() {
|
||||
for (Ref<AudioStreamPlayback> &playback : stream_playbacks) {
|
||||
AudioServer::get_singleton()->stop_playback_stream(playback);
|
||||
}
|
||||
|
|
@ -289,7 +298,7 @@ void AudioStreamPlayerInternal::set_playing(bool p_enable) {
|
|||
if (p_enable) {
|
||||
play_callable.call(0.0);
|
||||
} else {
|
||||
stop();
|
||||
stop_callable.call();
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -339,9 +348,10 @@ StringName AudioStreamPlayerInternal::get_bus() const {
|
|||
return SceneStringName(Master);
|
||||
}
|
||||
|
||||
AudioStreamPlayerInternal::AudioStreamPlayerInternal(Node *p_node, const Callable &p_play_callable, bool p_physical) {
|
||||
AudioStreamPlayerInternal::AudioStreamPlayerInternal(Node *p_node, const Callable &p_play_callable, const Callable &p_stop_callable, bool p_physical) {
|
||||
node = p_node;
|
||||
play_callable = p_play_callable;
|
||||
stop_callable = p_stop_callable;
|
||||
physical = p_physical;
|
||||
bus = SceneStringName(Master);
|
||||
|
||||
|
|
|
|||
|
|
@ -53,6 +53,7 @@ private:
|
|||
|
||||
Node *node = nullptr;
|
||||
Callable play_callable;
|
||||
Callable stop_callable;
|
||||
bool physical = false;
|
||||
AudioServer::PlaybackType playback_type = AudioServer::PlaybackType::PLAYBACK_TYPE_DEFAULT;
|
||||
|
||||
|
|
@ -94,7 +95,7 @@ public:
|
|||
|
||||
Ref<AudioStreamPlayback> play_basic();
|
||||
void seek(float p_seconds);
|
||||
void stop();
|
||||
void stop_basic();
|
||||
bool is_playing() const;
|
||||
float get_playback_position();
|
||||
|
||||
|
|
@ -110,7 +111,7 @@ public:
|
|||
void set_playback_type(AudioServer::PlaybackType p_playback_type);
|
||||
AudioServer::PlaybackType get_playback_type() const;
|
||||
|
||||
AudioStreamPlayerInternal(Node *p_node, const Callable &p_play_callable, bool p_physical);
|
||||
AudioStreamPlayerInternal(Node *p_node, const Callable &p_play_callable, const Callable &p_stop_callable, bool p_physical);
|
||||
};
|
||||
|
||||
#endif // AUDIO_STREAM_PLAYER_INTERNAL_H
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue