Prechádzať zdrojové kódy

Expose VideoStreamPlayer video length

今井きなみ 2 rokov pred
rodič
commit
e3da9176a0

+ 7 - 0
doc/classes/VideoStreamPlayer.xml

@@ -12,6 +12,13 @@
 	<tutorials>
 	</tutorials>
 	<methods>
+		<method name="get_stream_length" qualifiers="const">
+			<return type="float" />
+			<description>
+				The length of the current stream, in seconds.
+				[b]Note:[/b] For [VideoStreamTheora] streams (the built-in format supported by Godot), this value will always be zero, as getting the stream length is not implemented yet. The feature may be supported by video formats implemented by a GDExtension add-on.
+			</description>
+		</method>
 		<method name="get_stream_name" qualifiers="const">
 			<return type="String" />
 			<description>

+ 8 - 0
scene/gui/video_stream_player.cpp

@@ -386,6 +386,13 @@ String VideoStreamPlayer::get_stream_name() const {
 	return stream->get_name();
 }
 
+double VideoStreamPlayer::get_stream_length() const {
+	if (playback.is_null()) {
+		return 0;
+	}
+	return playback->get_length();
+}
+
 double VideoStreamPlayer::get_stream_position() const {
 	if (playback.is_null()) {
 		return 0;
@@ -468,6 +475,7 @@ void VideoStreamPlayer::_bind_methods() {
 	ClassDB::bind_method(D_METHOD("get_audio_track"), &VideoStreamPlayer::get_audio_track);
 
 	ClassDB::bind_method(D_METHOD("get_stream_name"), &VideoStreamPlayer::get_stream_name);
+	ClassDB::bind_method(D_METHOD("get_stream_length"), &VideoStreamPlayer::get_stream_length);
 
 	ClassDB::bind_method(D_METHOD("set_stream_position", "position"), &VideoStreamPlayer::set_stream_position);
 	ClassDB::bind_method(D_METHOD("get_stream_position"), &VideoStreamPlayer::get_stream_position);

+ 1 - 0
scene/gui/video_stream_player.h

@@ -104,6 +104,7 @@ public:
 	float get_volume_db() const;
 
 	String get_stream_name() const;
+	double get_stream_length() const;
 	double get_stream_position() const;
 	void set_stream_position(double p_position);