Merge pull request #23083 from Windfisch/pathfollow_configwarn

Add a configuration warning to [Oriented]PathFollow
This commit is contained in:
Rémi Verschelde 2018-10-25 00:11:41 +02:00 committed by GitHub
commit bf957a414a
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 43 additions and 0 deletions

View File

@ -43,6 +43,16 @@ void Path::_curve_changed() {
if (is_inside_tree()) {
emit_signal("curve_changed");
}
// update the configuration warnings of all children of type OrientedPathFollows
if (is_inside_tree()) {
for (int i = 0; i < get_child_count(); i++) {
OrientedPathFollow *child = Object::cast_to<OrientedPathFollow>(get_child(i));
if (child) {
child->update_configuration_warning();
}
}
}
}
void Path::set_curve(const Ref<Curve3D> &p_curve) {
@ -207,6 +217,18 @@ void PathFollow::_validate_property(PropertyInfo &property) const {
}
}
String PathFollow::get_configuration_warning() const {
if (!is_visible_in_tree() || !is_inside_tree())
return String();
if (!Object::cast_to<Path>(get_parent())) {
return TTR("PathFollow only works when set as a child of a Path node.");
}
return String();
}
void PathFollow::_bind_methods() {
ClassDB::bind_method(D_METHOD("set_offset", "offset"), &PathFollow::set_offset);
@ -444,6 +466,23 @@ void OrientedPathFollow::_validate_property(PropertyInfo &property) const {
}
}
String OrientedPathFollow::get_configuration_warning() const {
if (!is_visible_in_tree() || !is_inside_tree())
return String();
if (!Object::cast_to<Path>(get_parent())) {
return TTR("OrientedPathFollow only works when set as a child of a Path node.");
} else {
Path *path = Object::cast_to<Path>(get_parent());
if (path->get_curve().is_valid() && !path->get_curve()->is_up_vector_enabled()) {
return TTR("OrientedPathFollow requires up vectors enabled in its parent Path.");
}
}
return String();
}
void OrientedPathFollow::_bind_methods() {
ClassDB::bind_method(D_METHOD("set_offset", "offset"), &OrientedPathFollow::set_offset);

View File

@ -106,6 +106,8 @@ public:
void set_cubic_interpolation(bool p_enable);
bool get_cubic_interpolation() const;
String get_configuration_warning() const;
PathFollow();
};
@ -151,6 +153,8 @@ public:
void set_cubic_interpolation(bool p_enable);
bool get_cubic_interpolation() const;
String get_configuration_warning() const;
OrientedPathFollow();
};