|
@@ -59,13 +59,18 @@ String XRCamera3D::get_configuration_warning() const {
|
|
|
return String();
|
|
|
}
|
|
|
|
|
|
+ String warning = Camera3D::get_configuration_warning();
|
|
|
+
|
|
|
// must be child node of XROrigin3D!
|
|
|
XROrigin3D *origin = Object::cast_to<XROrigin3D>(get_parent());
|
|
|
if (origin == nullptr) {
|
|
|
- return TTR("XRCamera3D must have an XROrigin3D node as its parent.");
|
|
|
+ if (!warning.empty()) {
|
|
|
+ warning += "\n\n";
|
|
|
+ }
|
|
|
+ warning += TTR("XRCamera3D must have an XROrigin3D node as its parent.");
|
|
|
};
|
|
|
|
|
|
- return String();
|
|
|
+ return warning;
|
|
|
};
|
|
|
|
|
|
Vector3 XRCamera3D::project_local_ray_normal(const Point2 &p_pos) const {
|
|
@@ -369,17 +374,25 @@ String XRController3D::get_configuration_warning() const {
|
|
|
return String();
|
|
|
}
|
|
|
|
|
|
+ String warning = Node3D::get_configuration_warning();
|
|
|
+
|
|
|
// must be child node of XROrigin!
|
|
|
XROrigin3D *origin = Object::cast_to<XROrigin3D>(get_parent());
|
|
|
if (origin == nullptr) {
|
|
|
- return TTR("XRController3D must have an XROrigin3D node as its parent.");
|
|
|
+ if (!warning.empty()) {
|
|
|
+ warning += "\n\n";
|
|
|
+ }
|
|
|
+ warning += TTR("XRController3D must have an XROrigin3D node as its parent.");
|
|
|
};
|
|
|
|
|
|
if (controller_id == 0) {
|
|
|
- return TTR("The controller ID must not be 0 or this controller won't be bound to an actual controller.");
|
|
|
+ if (!warning.empty()) {
|
|
|
+ warning += "\n\n";
|
|
|
+ }
|
|
|
+ warning += TTR("The controller ID must not be 0 or this controller won't be bound to an actual controller.");
|
|
|
};
|
|
|
|
|
|
- return String();
|
|
|
+ return warning;
|
|
|
};
|
|
|
|
|
|
XRController3D::XRController3D() {
|
|
@@ -496,17 +509,25 @@ String XRAnchor3D::get_configuration_warning() const {
|
|
|
return String();
|
|
|
}
|
|
|
|
|
|
+ String warning = Node3D::get_configuration_warning();
|
|
|
+
|
|
|
// must be child node of XROrigin3D!
|
|
|
XROrigin3D *origin = Object::cast_to<XROrigin3D>(get_parent());
|
|
|
if (origin == nullptr) {
|
|
|
- return TTR("XRAnchor3D must have an XROrigin3D node as its parent.");
|
|
|
+ if (!warning.empty()) {
|
|
|
+ warning += "\n\n";
|
|
|
+ }
|
|
|
+ warning += TTR("XRAnchor3D must have an XROrigin3D node as its parent.");
|
|
|
};
|
|
|
|
|
|
if (anchor_id == 0) {
|
|
|
- return TTR("The anchor ID must not be 0 or this anchor won't be bound to an actual anchor.");
|
|
|
+ if (!warning.empty()) {
|
|
|
+ warning += "\n\n";
|
|
|
+ }
|
|
|
+ warning += TTR("The anchor ID must not be 0 or this anchor won't be bound to an actual anchor.");
|
|
|
};
|
|
|
|
|
|
- return String();
|
|
|
+ return warning;
|
|
|
};
|
|
|
|
|
|
Plane XRAnchor3D::get_plane() const {
|
|
@@ -538,11 +559,16 @@ String XROrigin3D::get_configuration_warning() const {
|
|
|
return String();
|
|
|
}
|
|
|
|
|
|
+ String warning = Node3D::get_configuration_warning();
|
|
|
+
|
|
|
if (tracked_camera == nullptr) {
|
|
|
- return TTR("XROrigin3D requires an XRCamera3D child node.");
|
|
|
+ if (!warning.empty()) {
|
|
|
+ warning += "\n\n";
|
|
|
+ }
|
|
|
+ warning += TTR("XROrigin3D requires an XRCamera3D child node.");
|
|
|
}
|
|
|
|
|
|
- return String();
|
|
|
+ return warning;
|
|
|
};
|
|
|
|
|
|
void XROrigin3D::_bind_methods() {
|