Add a configuration warning to [Oriented]PathFollow
Will update OrientedPathFollows' configuration_warnings if the parent Path changes
This commit is contained in:
parent
1dbb6e4554
commit
d67c7487f2
2 changed files with 43 additions and 0 deletions
|
@ -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);
|
||||
|
|
|
@ -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();
|
||||
};
|
||||
|
||||
|
|
Loading…
Reference in a new issue