1
0
mirror of https://github.com/godotengine/godot.git synced 2025-11-11 13:10:58 +00:00

Clean up normalmapping, make sure tangents are imported correctly.

This commit is contained in:
Juan Linietsky
2017-07-03 10:44:45 -03:00
parent afbb5261e6
commit e63c64e256
9 changed files with 133 additions and 99 deletions

View File

@@ -37,7 +37,6 @@
#include "viewport.h"
VARIANT_ENUM_CAST(Node::PauseMode);
VARIANT_ENUM_CAST(Node::NetworkMode);
VARIANT_ENUM_CAST(Node::RPCMode);
void Node::_notification(int p_notification) {
@@ -77,16 +76,6 @@ void Node::_notification(int p_notification) {
data.pause_owner = this;
}
if (data.network_mode == NETWORK_MODE_INHERIT) {
if (data.parent)
data.network_owner = data.parent->data.network_owner;
else
data.network_owner = NULL;
} else {
data.network_owner = this;
}
if (data.input)
add_to_group("_vp_input" + itos(get_viewport()->get_instance_ID()));
if (data.unhandled_input)
@@ -108,7 +97,6 @@ void Node::_notification(int p_notification) {
remove_from_group("_vp_unhandled_key_input" + itos(get_viewport()->get_instance_ID()));
data.pause_owner = NULL;
data.network_owner = NULL;
if (data.path_cache) {
memdelete(data.path_cache);
data.path_cache = NULL;
@@ -472,69 +460,28 @@ void Node::_propagate_pause_owner(Node *p_owner) {
}
}
void Node::set_network_mode(NetworkMode p_mode) {
void Node::set_network_master(int p_peer_id, bool p_recursive) {
if (data.network_mode == p_mode)
return;
data.network_master = p_peer_id;
bool prev_inherits = data.network_mode == NETWORK_MODE_INHERIT;
data.network_mode = p_mode;
if (!is_inside_tree())
return; //pointless
if ((data.network_mode == NETWORK_MODE_INHERIT) == prev_inherits)
return; ///nothing changed
if (p_recursive) {
for (int i = 0; i < data.children.size(); i++) {
Node *owner = NULL;
if (data.network_mode == NETWORK_MODE_INHERIT) {
if (data.parent)
owner = data.parent->data.network_owner;
} else {
owner = this;
data.children[i]->set_network_master(p_peer_id, true);
}
}
_propagate_network_owner(owner);
}
Node::NetworkMode Node::get_network_mode() const {
int Node::get_network_master() const {
return data.network_mode;
return data.network_master;
}
bool Node::is_network_master() const {
ERR_FAIL_COND_V(!is_inside_tree(), false);
switch (data.network_mode) {
case NETWORK_MODE_INHERIT: {
if (data.network_owner)
return data.network_owner->is_network_master();
else
return get_tree()->is_network_server();
} break;
case NETWORK_MODE_MASTER: {
return true;
} break;
case NETWORK_MODE_SLAVE: {
return false;
} break;
}
return false;
}
void Node::_propagate_network_owner(Node *p_owner) {
if (data.network_mode != NETWORK_MODE_INHERIT)
return;
data.network_owner = p_owner;
for (int i = 0; i < data.children.size(); i++) {
data.children[i]->_propagate_network_owner(p_owner);
}
return get_tree()->get_network_unique_id() == data.network_master;
}
/***** RPC CONFIG ********/
@@ -962,7 +909,7 @@ void Node::rset_unreliable_id(int p_peer_id, const StringName &p_property, const
//////////// end of rpc
bool Node::can_call_rpc(const StringName &p_method) const {
bool Node::can_call_rpc(const StringName &p_method, int p_from) const {
const Map<StringName, RPCMode>::Element *E = data.rpc_methods.find(p_method);
if (E) {
@@ -982,7 +929,7 @@ bool Node::can_call_rpc(const StringName &p_method) const {
return is_network_master();
} break;
case RPC_MODE_SLAVE: {
return !is_network_master();
return !is_network_master() && p_from == get_network_master();
} break;
}
}
@@ -1006,16 +953,16 @@ bool Node::can_call_rpc(const StringName &p_method) const {
return is_network_master();
} break;
case ScriptInstance::RPC_MODE_SLAVE: {
return !is_network_master();
return !is_network_master() && p_from == get_network_master();
} break;
}
}
ERR_PRINTS("RPC on unauthorized method attempted: " + String(p_method) + " on base: " + String(Variant(this)));
ERR_PRINTS("RPC from " + itos(p_from) + " on unauthorized method attempted: " + String(p_method) + " on base: " + String(Variant(this)));
return false;
}
bool Node::can_call_rset(const StringName &p_property) const {
bool Node::can_call_rset(const StringName &p_property, int p_from) const {
const Map<StringName, RPCMode>::Element *E = data.rpc_properties.find(p_property);
if (E) {
@@ -1035,7 +982,7 @@ bool Node::can_call_rset(const StringName &p_property) const {
return is_network_master();
} break;
case RPC_MODE_SLAVE: {
return !is_network_master();
return !is_network_master() && p_from == get_network_master();
} break;
}
}
@@ -1059,12 +1006,12 @@ bool Node::can_call_rset(const StringName &p_property) const {
return is_network_master();
} break;
case ScriptInstance::RPC_MODE_SLAVE: {
return !is_network_master();
return !is_network_master() && p_from == get_network_master();
} break;
}
}
ERR_PRINTS("RSET on unauthorized property attempted: " + String(p_property) + " on base: " + String(Variant(this)));
ERR_PRINTS("RSET from " + itos(p_from) + " on unauthorized property attempted: " + String(p_property) + " on base: " + String(Variant(this)));
return false;
}
@@ -2845,8 +2792,8 @@ void Node::_bind_methods() {
ClassDB::bind_method(D_METHOD("request_ready"), &Node::request_ready);
ClassDB::bind_method(D_METHOD("set_network_mode", "mode"), &Node::set_network_mode);
ClassDB::bind_method(D_METHOD("get_network_mode"), &Node::get_network_mode);
ClassDB::bind_method(D_METHOD("set_network_master", "id", "recursive"), &Node::set_network_master, DEFVAL(true));
ClassDB::bind_method(D_METHOD("get_network_master"), &Node::get_network_master);
ClassDB::bind_method(D_METHOD("is_network_master"), &Node::is_network_master);
@@ -2902,10 +2849,6 @@ void Node::_bind_methods() {
BIND_CONSTANT(NOTIFICATION_INTERNAL_PROCESS);
BIND_CONSTANT(NOTIFICATION_INTERNAL_FIXED_PROCESS);
BIND_CONSTANT(NETWORK_MODE_INHERIT);
BIND_CONSTANT(NETWORK_MODE_MASTER);
BIND_CONSTANT(NETWORK_MODE_SLAVE);
BIND_CONSTANT(RPC_MODE_DISABLED);
BIND_CONSTANT(RPC_MODE_REMOTE);
BIND_CONSTANT(RPC_MODE_SYNC);
@@ -2977,8 +2920,7 @@ Node::Node() {
data.unhandled_key_input = false;
data.pause_mode = PAUSE_MODE_INHERIT;
data.pause_owner = NULL;
data.network_mode = NETWORK_MODE_INHERIT;
data.network_owner = NULL;
data.network_master = 1; //server by default
data.path_cache = NULL;
data.parent_owned = false;
data.in_constructor = true;