#pragma once #include "scene/2d/node_2d.h" class FilePopup : public Node2D { GDCLASS(FilePopup, Node2D); static void _bind_methods(); void enter_tree(); void process(double delta); protected: virtual void unhandled_input(Ref const &what) override; void _notification(int what); public: void request_open(); void request_close(); bool is_open() const; void set_open_position(Node2D *node); Node2D *get_open_position() const; private: double animation_progress{ 0.0 }; bool desire_open{ false }; Transform2D home_position{}; Node2D *open_position{ nullptr }; double const ANIM_SPEED{ 5.0 }; };