mirror of
https://github.com/Relintai/pandemonium_engine.git
synced 2025-02-19 22:24:23 +01:00
Expose NavigationObstacle2D/3D get_rid() and add config warning
Exposes get_rid() function for scripting. Adds configuration warning when obstacle is used with not intended static body parent. (cherry picked from commit 001d89223f1377717d2b3d5ec453ff8dd3604182)
This commit is contained in:
parent
96b8c4d323
commit
4a5982b9e1
@ -15,6 +15,12 @@
|
||||
Returns the [Navigation] node that the obstacle is using for its navigation system.
|
||||
</description>
|
||||
</method>
|
||||
<method name="get_rid" qualifiers="const">
|
||||
<return type="RID" />
|
||||
<description>
|
||||
Returns the [RID] of this obstacle on the [NavigationServer].
|
||||
</description>
|
||||
</method>
|
||||
<method name="set_navigation">
|
||||
<return type="void" />
|
||||
<argument index="0" name="navigation" type="Node" />
|
||||
|
@ -15,6 +15,12 @@
|
||||
Returns the [Navigation2D] node that the obstacle is using for its navigation system.
|
||||
</description>
|
||||
</method>
|
||||
<method name="get_rid" qualifiers="const">
|
||||
<return type="RID" />
|
||||
<description>
|
||||
Returns the [RID] of this obstacle on the [Navigation2DServer].
|
||||
</description>
|
||||
</method>
|
||||
<method name="set_navigation">
|
||||
<return type="void" />
|
||||
<argument index="0" name="navigation" type="Node" />
|
||||
|
@ -37,8 +37,11 @@
|
||||
#include "servers/navigation_2d_server.h"
|
||||
|
||||
void NavigationObstacle2D::_bind_methods() {
|
||||
ClassDB::bind_method(D_METHOD("get_rid"), &NavigationObstacle2D::get_rid);
|
||||
|
||||
ClassDB::bind_method(D_METHOD("set_navigation", "navigation"), &NavigationObstacle2D::set_navigation_node);
|
||||
ClassDB::bind_method(D_METHOD("get_navigation"), &NavigationObstacle2D::get_navigation_node);
|
||||
|
||||
ClassDB::bind_method(D_METHOD("set_estimate_radius", "estimate_radius"), &NavigationObstacle2D::set_estimate_radius);
|
||||
ClassDB::bind_method(D_METHOD("is_radius_estimated"), &NavigationObstacle2D::is_radius_estimated);
|
||||
ClassDB::bind_method(D_METHOD("set_radius", "radius"), &NavigationObstacle2D::set_radius);
|
||||
@ -137,6 +140,11 @@ String NavigationObstacle2D::get_configuration_warning() const {
|
||||
return TTR("The NavigationObstacle2D only serves to provide collision avoidance to a Node2D object.");
|
||||
}
|
||||
|
||||
if (Object::cast_to<StaticBody2D>(get_parent())) {
|
||||
return TTR("The NavigationObstacle2D is intended for constantly moving bodies like KinematicBody2D or RigidBody2D as it creates only an RVO avoidance radius and does not follow scene geometry exactly."
|
||||
"\nNot constantly moving or complete static objects should be captured with a refreshed NavigationPolygon so agents can not only avoid them but also move along those objects outline at high detail");
|
||||
}
|
||||
|
||||
return String();
|
||||
}
|
||||
|
||||
|
@ -38,6 +38,8 @@
|
||||
#include "servers/navigation_server.h"
|
||||
|
||||
void NavigationObstacle::_bind_methods() {
|
||||
ClassDB::bind_method(D_METHOD("get_rid"), &NavigationObstacle::get_rid);
|
||||
|
||||
ClassDB::bind_method(D_METHOD("set_navigation", "navigation"), &NavigationObstacle::set_navigation_node);
|
||||
ClassDB::bind_method(D_METHOD("get_navigation"), &NavigationObstacle::get_navigation_node);
|
||||
ClassDB::bind_method(D_METHOD("is_radius_estimated"), &NavigationObstacle::is_radius_estimated);
|
||||
@ -142,7 +144,12 @@ Node *NavigationObstacle::get_navigation_node() const {
|
||||
|
||||
String NavigationObstacle::get_configuration_warning() const {
|
||||
if (!Object::cast_to<Spatial>(get_parent())) {
|
||||
return TTR("The NavigationObstacle only serves to provide collision avoidance to a spatial object.");
|
||||
return TTR("The NavigationObstacle only serves to provide collision avoidance to a Spatial inheriting parent object.");
|
||||
}
|
||||
|
||||
if (Object::cast_to<StaticBody>(get_parent())) {
|
||||
return TTR("The NavigationObstacle is intended for constantly moving bodies like KinematicBody3D or RigidBody3D as it creates only an RVO avoidance radius and does not follow scene geometry exactly."
|
||||
"\nNot constantly moving or complete static objects should be (re)baked to a NavigationMesh so agents can not only avoid them but also move along those objects outline at high detail");
|
||||
}
|
||||
|
||||
return String();
|
||||
|
Loading…
Reference in New Issue
Block a user