瀏覽代碼

Merge pull request #60756 from timothyqiu/animated-sprite-autocomplete

Add autocompletion for `AnimatedSprite.play()`
Rémi Verschelde 3 年之前
父節點
當前提交
f6e896a968
共有 4 個文件被更改,包括 26 次插入0 次删除
  1. 11 0
      scene/2d/animated_sprite_2d.cpp
  2. 2 0
      scene/2d/animated_sprite_2d.h
  3. 11 0
      scene/3d/sprite_3d.cpp
  4. 2 0
      scene/3d/sprite_3d.h

+ 11 - 0
scene/2d/animated_sprite_2d.cpp

@@ -443,6 +443,17 @@ TypedArray<String> AnimatedSprite2D::get_configuration_warnings() const {
 	return warnings;
 }
 
+void AnimatedSprite2D::get_argument_options(const StringName &p_function, int p_idx, List<String> *r_options) const {
+	if (p_idx == 0 && p_function == "play" && frames.is_valid()) {
+		List<StringName> al;
+		frames->get_animation_list(&al);
+		for (const StringName &name : al) {
+			r_options->push_back(String(name).quote());
+		}
+	}
+	Node::get_argument_options(p_function, p_idx, r_options);
+}
+
 void AnimatedSprite2D::_bind_methods() {
 	ClassDB::bind_method(D_METHOD("set_sprite_frames", "sprite_frames"), &AnimatedSprite2D::set_sprite_frames);
 	ClassDB::bind_method(D_METHOD("get_sprite_frames"), &AnimatedSprite2D::get_sprite_frames);

+ 2 - 0
scene/2d/animated_sprite_2d.h

@@ -109,6 +109,8 @@ public:
 	bool is_flipped_v() const;
 
 	TypedArray<String> get_configuration_warnings() const override;
+	virtual void get_argument_options(const StringName &p_function, int p_idx, List<String> *r_options) const override;
+
 	AnimatedSprite2D();
 };
 

+ 11 - 0
scene/3d/sprite_3d.cpp

@@ -1247,6 +1247,17 @@ TypedArray<String> AnimatedSprite3D::get_configuration_warnings() const {
 	return warnings;
 }
 
+void AnimatedSprite3D::get_argument_options(const StringName &p_function, int p_idx, List<String> *r_options) const {
+	if (p_idx == 0 && p_function == "play" && frames.is_valid()) {
+		List<StringName> al;
+		frames->get_animation_list(&al);
+		for (const StringName &name : al) {
+			r_options->push_back(String(name).quote());
+		}
+	}
+	Node::get_argument_options(p_function, p_idx, r_options);
+}
+
 void AnimatedSprite3D::_bind_methods() {
 	ClassDB::bind_method(D_METHOD("set_sprite_frames", "sprite_frames"), &AnimatedSprite3D::set_sprite_frames);
 	ClassDB::bind_method(D_METHOD("get_sprite_frames"), &AnimatedSprite3D::get_sprite_frames);

+ 2 - 0
scene/3d/sprite_3d.h

@@ -248,6 +248,8 @@ public:
 	virtual Rect2 get_item_rect() const override;
 
 	virtual TypedArray<String> get_configuration_warnings() const override;
+	virtual void get_argument_options(const StringName &p_function, int p_idx, List<String> *r_options) const override;
+
 	AnimatedSprite3D();
 };