diff options
Diffstat (limited to 'scene/main/node.h')
-rw-r--r-- | scene/main/node.h | 32 |
1 files changed, 15 insertions, 17 deletions
diff --git a/scene/main/node.h b/scene/main/node.h index 4ff1247e14..4b8f584ba7 100644 --- a/scene/main/node.h +++ b/scene/main/node.h @@ -65,18 +65,14 @@ public: #endif }; - enum RPCMode { + struct Comparator { - RPC_MODE_DISABLED, //no rpc for this method, calls to this will be blocked (default) - RPC_MODE_REMOTE, // using rpc() on it will call method / set property in all other peers - RPC_MODE_SYNC, // using rpc() on it will call method / set property in all other peers and locally - RPC_MODE_MASTER, // usinc rpc() on it will call method on wherever the master is, be it local or remote - RPC_MODE_SLAVE, // usinc rpc() on it will call method for all slaves, be it local or remote + bool operator()(const Node *p_a, const Node *p_b) const { return p_b->is_greater_than(p_a); } }; - struct Comparator { + struct ComparatorWithPriority { - bool operator()(const Node *p_a, const Node *p_b) const { return p_b->is_greater_than(p_a); } + bool operator()(const Node *p_a, const Node *p_b) const { return p_b->has_priority_higher_than(p_a) || p_b->is_greater_than(p_a); } }; private: @@ -120,13 +116,14 @@ private: Node *pause_owner; int network_master; - Map<StringName, RPCMode> rpc_methods; - Map<StringName, RPCMode> rpc_properties; + Map<StringName, MultiplayerAPI::RPCMode> rpc_methods; + Map<StringName, MultiplayerAPI::RPCMode> rpc_properties; // variables used to properly sort the node when processing, ignored otherwise //should move all the stuff below to bits bool physics_process; bool idle_process; + int process_priority; bool physics_process_internal; bool idle_process_internal; @@ -237,6 +234,7 @@ public: NOTIFICATION_TRANSLATION_CHANGED = 24, NOTIFICATION_INTERNAL_PROCESS = 25, NOTIFICATION_INTERNAL_PHYSICS_PROCESS = 26, + NOTIFICATION_POST_ENTER_TREE = 27, }; @@ -267,6 +265,7 @@ public: bool is_a_parent_of(const Node *p_node) const; bool is_greater_than(const Node *p_node) const; + bool has_priority_higher_than(const Node *p_node) const; NodePath get_path() const; NodePath get_path_to(const Node *p_node) const; @@ -327,6 +326,8 @@ public: void set_process_internal(bool p_idle_process_internal); bool is_processing_internal() const; + void set_process_priority(int p_priority); + void set_process_input(bool p_enable); bool is_processing_input() const; @@ -403,8 +404,8 @@ public: int get_network_master() const; bool is_network_master() const; - void rpc_config(const StringName &p_method, RPCMode p_mode); // config a local method for RPC - void rset_config(const StringName &p_property, RPCMode p_mode); // config a local property for RPC + void rpc_config(const StringName &p_method, MultiplayerAPI::RPCMode p_mode); // config a local method for RPC + void rset_config(const StringName &p_property, MultiplayerAPI::RPCMode p_mode); // config a local property for RPC void rpc(const StringName &p_method, VARIANT_ARG_LIST); //rpc call, honors RPCMode void rpc_unreliable(const StringName &p_method, VARIANT_ARG_LIST); //rpc call, honors RPCMode @@ -422,11 +423,8 @@ public: Ref<MultiplayerAPI> get_multiplayer() const; Ref<MultiplayerAPI> get_custom_multiplayer() const; void set_custom_multiplayer(Ref<MultiplayerAPI> p_multiplayer); - const Map<StringName, RPCMode>::Element *get_node_rpc_mode(const StringName &p_method); - const Map<StringName, RPCMode>::Element *get_node_rset_mode(const StringName &p_property); - - bool can_call_rpc(const StringName &p_method, int p_from) const; - bool can_call_rset(const StringName &p_property, int p_from) const; + const Map<StringName, MultiplayerAPI::RPCMode>::Element *get_node_rpc_mode(const StringName &p_method); + const Map<StringName, MultiplayerAPI::RPCMode>::Element *get_node_rset_mode(const StringName &p_property); Node(); ~Node(); |