mirror of
https://github.com/Relintai/pandemonium_engine.git
synced 2024-12-22 11:56:49 +01:00
Port small tweaks fot NavigationMeshInstance.
This commit is contained in:
parent
b993bd4760
commit
09118cb939
@ -36,10 +36,10 @@
|
|||||||
#include "navigation.h"
|
#include "navigation.h"
|
||||||
#include "scene/resources/mesh.h"
|
#include "scene/resources/mesh.h"
|
||||||
#include "scene/resources/navigation_mesh.h"
|
#include "scene/resources/navigation_mesh.h"
|
||||||
|
#include "scene/resources/navigation_mesh_source_geometry_data_3d.h"
|
||||||
#include "scene/resources/world_3d.h"
|
#include "scene/resources/world_3d.h"
|
||||||
#include "servers/navigation/navigation_mesh_generator.h"
|
#include "servers/navigation/navigation_mesh_generator.h"
|
||||||
#include "servers/navigation_server.h"
|
#include "servers/navigation_server.h"
|
||||||
#include "scene/resources/navigation_mesh_source_geometry_data_3d.h"
|
|
||||||
|
|
||||||
void NavigationMeshInstance::set_enabled(bool p_enabled) {
|
void NavigationMeshInstance::set_enabled(bool p_enabled) {
|
||||||
if (enabled == p_enabled) {
|
if (enabled == p_enabled) {
|
||||||
@ -107,7 +107,12 @@ uint32_t NavigationMeshInstance::get_navigation_layers() const {
|
|||||||
|
|
||||||
void NavigationMeshInstance::set_enter_cost(real_t p_enter_cost) {
|
void NavigationMeshInstance::set_enter_cost(real_t p_enter_cost) {
|
||||||
ERR_FAIL_COND_MSG(p_enter_cost < 0.0, "The enter_cost must be positive.");
|
ERR_FAIL_COND_MSG(p_enter_cost < 0.0, "The enter_cost must be positive.");
|
||||||
enter_cost = MAX(p_enter_cost, 0.0);
|
if (Math::is_equal_approx(enter_cost, p_enter_cost)) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
enter_cost = p_enter_cost;
|
||||||
|
|
||||||
NavigationServer::get_singleton()->region_set_enter_cost(region, p_enter_cost);
|
NavigationServer::get_singleton()->region_set_enter_cost(region, p_enter_cost);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -117,8 +122,12 @@ real_t NavigationMeshInstance::get_enter_cost() const {
|
|||||||
|
|
||||||
void NavigationMeshInstance::set_travel_cost(real_t p_travel_cost) {
|
void NavigationMeshInstance::set_travel_cost(real_t p_travel_cost) {
|
||||||
ERR_FAIL_COND_MSG(p_travel_cost < 0.0, "The travel_cost must be positive.");
|
ERR_FAIL_COND_MSG(p_travel_cost < 0.0, "The travel_cost must be positive.");
|
||||||
travel_cost = MAX(p_travel_cost, 0.0);
|
if (Math::is_equal_approx(travel_cost, p_travel_cost)) {
|
||||||
NavigationServer::get_singleton()->region_set_enter_cost(region, travel_cost);
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
travel_cost = p_travel_cost;
|
||||||
|
NavigationServer::get_singleton()->region_set_travel_cost(region, travel_cost);
|
||||||
}
|
}
|
||||||
|
|
||||||
real_t NavigationMeshInstance::get_travel_cost() const {
|
real_t NavigationMeshInstance::get_travel_cost() const {
|
||||||
@ -373,8 +382,10 @@ NavigationMeshInstance::NavigationMeshInstance() {
|
|||||||
|
|
||||||
NavigationMeshInstance::~NavigationMeshInstance() {
|
NavigationMeshInstance::~NavigationMeshInstance() {
|
||||||
if (navmesh.is_valid()) {
|
if (navmesh.is_valid()) {
|
||||||
navmesh->remove_change_receptor(this);
|
navmesh->disconnect(CoreStringNames::get_singleton()->changed, this, "_navigation_mesh_changed");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
ERR_FAIL_NULL(NavigationServer::get_singleton());
|
||||||
NavigationServer::get_singleton()->free(region);
|
NavigationServer::get_singleton()->free(region);
|
||||||
|
|
||||||
#ifdef DEBUG_ENABLED
|
#ifdef DEBUG_ENABLED
|
||||||
@ -382,6 +393,8 @@ NavigationMeshInstance::~NavigationMeshInstance() {
|
|||||||
NavigationServer::get_singleton_mut()->disconnect("navigation_debug_changed", this, "_update_debug_mesh");
|
NavigationServer::get_singleton_mut()->disconnect("navigation_debug_changed", this, "_update_debug_mesh");
|
||||||
NavigationServer::get_singleton_mut()->disconnect("navigation_debug_changed", this, "_update_debug_edge_connections_mesh");
|
NavigationServer::get_singleton_mut()->disconnect("navigation_debug_changed", this, "_update_debug_edge_connections_mesh");
|
||||||
|
|
||||||
|
ERR_FAIL_NULL(RenderingServer::get_singleton());
|
||||||
|
|
||||||
if (debug_instance.is_valid()) {
|
if (debug_instance.is_valid()) {
|
||||||
RenderingServer::get_singleton()->free(debug_instance);
|
RenderingServer::get_singleton()->free(debug_instance);
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user