graph_node.h
1 #ifndef GRAPH_NODE_H
2 #define GRAPH_NODE_H
3 
4 #include "scene/gui/container.h"
5 
6 class GraphNode : public Container {
7 
8  OBJ_TYPE(GraphNode,Container);
9 
10 
11 
12  struct Slot {
13  bool enable_left;
14  int type_left;
15  Color color_left;
16  bool enable_right;
17  int type_right;
18  Color color_right;
19 
20 
21  Slot() { enable_left=false; type_left=0; color_left=Color(1,1,1,1); enable_right=false; type_right=0; color_right=Color(1,1,1,1); }
22  };
23 
24  String title;
25  bool show_close;
26  Vector2 offset;
27 
28  Rect2 close_rect;
29 
30  Vector<int> cache_y;
31 
32  struct ConnCache {
33  Vector2 pos;
34  int type;
35  Color color;
36  };
37 
38  Vector<ConnCache> conn_input_cache;
39  Vector<ConnCache> conn_output_cache;
40 
41  Map<int,Slot> slot_info;
42 
43  bool connpos_dirty;
44 
45  void _connpos_update();
46  void _resort();
47 
48  Vector2 drag_from;
49  bool selected;
50 protected:
51 
52 
53  void _input_event(const InputEvent& p_ev);
54  void _notification(int p_what);
55  static void _bind_methods();
56 
57  bool _set(const StringName& p_name, const Variant& p_value);
58  bool _get(const StringName& p_name,Variant &r_ret) const;
59  void _get_property_list( List<PropertyInfo> *p_list) const;
60 
61 public:
62 
63 
64 
65 
66  void set_slot(int p_idx,bool p_enable_left,int p_type_left,const Color& p_color_left, bool p_enable_right,int p_type_right,const Color& p_color_right);
67  void clear_slot(int p_idx);
68  void clear_all_slots();
69  bool is_slot_enabled_left(int p_idx) const;
70  int get_slot_type_left(int p_idx) const;
71  Color get_slot_color_left(int p_idx) const;
72  bool is_slot_enabled_right(int p_idx) const;
73  int get_slot_type_right(int p_idx) const;
74  Color get_slot_color_right(int p_idx) const;
75 
76  void set_title(const String& p_title);
77  String get_title() const;
78 
79  void set_offset(const Vector2& p_offset);
80  Vector2 get_offset() const;
81 
82  void set_selected(bool p_selected);
83  bool is_selected();
84 
85  void set_drag(bool p_drag);
86  Vector2 get_drag_from();
87 
88  void set_show_close_button(bool p_enable);
89  bool is_close_button_visible() const;
90 
91  int get_connection_input_count() ;
92  int get_connection_output_count() ;
93  Vector2 get_connection_input_pos(int p_idx);
94  int get_connection_input_type(int p_idx);
95  Color get_connection_input_color(int p_idx);
96  Vector2 get_connection_output_pos(int p_idx);
97  int get_connection_output_type(int p_idx);
98  Color get_connection_output_color(int p_idx);
99 
100 
101  virtual Size2 get_minimum_size() const;
102 
103  GraphNode();
104 };
105 
106 
107 #endif // GRAPH_NODE_H
Definition: variant.h:74
Definition: container.h:34
Definition: color.h:37
Definition: math_2d.h:204
Definition: string_db.h:48
Definition: input_event.h:263
Definition: graph_node.h:6
Definition: math_2d.h:65
Definition: ustring.h:64