mirror of
https://github.com/Relintai/pandemonium_engine.git
synced 2025-01-18 15:27:17 +01:00
Added avoidance position property to LayeredTileData.
This commit is contained in:
parent
8998814481
commit
4f11a25ef7
@ -6782,6 +6782,17 @@ real_t LayeredTileData::get_avoidance_radius(int p_layer_id) const {
|
|||||||
return avoidance[p_layer_id].radius;
|
return avoidance[p_layer_id].radius;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void LayeredTileData::set_avoidance_position(int p_layer_id, const Vector2 &p_position) {
|
||||||
|
ERR_FAIL_INDEX(p_layer_id, avoidance.size());
|
||||||
|
avoidance.write[p_layer_id].position = p_position;
|
||||||
|
emit_signal("changed");
|
||||||
|
}
|
||||||
|
|
||||||
|
Vector2 LayeredTileData::get_avoidance_position(int p_layer_id) const {
|
||||||
|
ERR_FAIL_INDEX_V(p_layer_id, avoidance.size(), Vector2());
|
||||||
|
return avoidance[p_layer_id].position;
|
||||||
|
}
|
||||||
|
|
||||||
void LayeredTileData::set_avoidance_polygon_points(int p_layer_id, Vector<Vector2> p_polygon) {
|
void LayeredTileData::set_avoidance_polygon_points(int p_layer_id, Vector<Vector2> p_polygon) {
|
||||||
ERR_FAIL_INDEX(p_layer_id, avoidance.size());
|
ERR_FAIL_INDEX(p_layer_id, avoidance.size());
|
||||||
ERR_FAIL_COND_MSG(p_polygon.size() != 0 && p_polygon.size() < 3, "Invalid polygon. Needs either 0 or more than 3 points.");
|
ERR_FAIL_COND_MSG(p_polygon.size() != 0 && p_polygon.size() < 3, "Invalid polygon. Needs either 0 or more than 3 points.");
|
||||||
@ -6975,6 +6986,9 @@ bool LayeredTileData::_set(const StringName &p_name, const Variant &p_value) {
|
|||||||
if (components[1] == "radius") {
|
if (components[1] == "radius") {
|
||||||
set_avoidance_radius(layer_index, p_value);
|
set_avoidance_radius(layer_index, p_value);
|
||||||
return true;
|
return true;
|
||||||
|
} else if (components[1] == "position") {
|
||||||
|
set_avoidance_position(layer_index, p_value);
|
||||||
|
return true;
|
||||||
} else if (components[1] == "polygon") {
|
} else if (components[1] == "polygon") {
|
||||||
Vector<Vector2> polygon = p_value;
|
Vector<Vector2> polygon = p_value;
|
||||||
set_avoidance_polygon_points(layer_index, polygon);
|
set_avoidance_polygon_points(layer_index, polygon);
|
||||||
@ -7099,6 +7113,9 @@ bool LayeredTileData::_get(const StringName &p_name, Variant &r_ret) const {
|
|||||||
if (components[1] == "radius") {
|
if (components[1] == "radius") {
|
||||||
r_ret = get_avoidance_radius(layer_index);
|
r_ret = get_avoidance_radius(layer_index);
|
||||||
return true;
|
return true;
|
||||||
|
} else if (components[1] == "position") {
|
||||||
|
r_ret = get_avoidance_position(layer_index);
|
||||||
|
return true;
|
||||||
} else if (components[1] == "polygon") {
|
} else if (components[1] == "polygon") {
|
||||||
r_ret = get_avoidance_polygon_points(layer_index);
|
r_ret = get_avoidance_polygon_points(layer_index);
|
||||||
return true;
|
return true;
|
||||||
@ -7198,6 +7215,9 @@ void LayeredTileData::_get_property_list(List<PropertyInfo> *p_list) const {
|
|||||||
property_info = PropertyInfo(Variant::REAL, vformat("avoidance_layer_%d/%s", i, "radius"));
|
property_info = PropertyInfo(Variant::REAL, vformat("avoidance_layer_%d/%s", i, "radius"));
|
||||||
p_list->push_back(property_info);
|
p_list->push_back(property_info);
|
||||||
|
|
||||||
|
property_info = PropertyInfo(Variant::VECTOR2, vformat("avoidance_layer_%d/%s", i, "position"));
|
||||||
|
p_list->push_back(property_info);
|
||||||
|
|
||||||
property_info = PropertyInfo(Variant::POOL_VECTOR2_ARRAY, vformat("avoidance_layer_%d/%s", i, "polygon"));
|
property_info = PropertyInfo(Variant::POOL_VECTOR2_ARRAY, vformat("avoidance_layer_%d/%s", i, "polygon"));
|
||||||
|
|
||||||
if (avoidance[i].polygon.empty()) {
|
if (avoidance[i].polygon.empty()) {
|
||||||
@ -7276,6 +7296,9 @@ void LayeredTileData::_bind_methods() {
|
|||||||
ClassDB::bind_method(D_METHOD("set_avoidance_radius", "layer_id", "radius"), &LayeredTileData::set_avoidance_radius);
|
ClassDB::bind_method(D_METHOD("set_avoidance_radius", "layer_id", "radius"), &LayeredTileData::set_avoidance_radius);
|
||||||
ClassDB::bind_method(D_METHOD("get_avoidance_radius", "layer_id"), &LayeredTileData::get_avoidance_radius);
|
ClassDB::bind_method(D_METHOD("get_avoidance_radius", "layer_id"), &LayeredTileData::get_avoidance_radius);
|
||||||
|
|
||||||
|
ClassDB::bind_method(D_METHOD("set_avoidance_position", "layer_id", "position"), &LayeredTileData::set_avoidance_position);
|
||||||
|
ClassDB::bind_method(D_METHOD("get_avoidance_position", "layer_id"), &LayeredTileData::get_avoidance_position);
|
||||||
|
|
||||||
ClassDB::bind_method(D_METHOD("set_avoidance_polygon_points", "layer_id", "polygon"), &LayeredTileData::set_avoidance_polygon_points);
|
ClassDB::bind_method(D_METHOD("set_avoidance_polygon_points", "layer_id", "polygon"), &LayeredTileData::set_avoidance_polygon_points);
|
||||||
ClassDB::bind_method(D_METHOD("get_avoidance_polygon_points", "layer_id"), &LayeredTileData::get_avoidance_polygon_points);
|
ClassDB::bind_method(D_METHOD("get_avoidance_polygon_points", "layer_id"), &LayeredTileData::get_avoidance_polygon_points);
|
||||||
|
|
||||||
|
@ -916,6 +916,7 @@ private:
|
|||||||
struct AvoidanceLayerTileData {
|
struct AvoidanceLayerTileData {
|
||||||
Vector<Vector2> polygon;
|
Vector<Vector2> polygon;
|
||||||
real_t radius = 0.0;
|
real_t radius = 0.0;
|
||||||
|
Vector2 position;
|
||||||
};
|
};
|
||||||
Vector<AvoidanceLayerTileData> avoidance;
|
Vector<AvoidanceLayerTileData> avoidance;
|
||||||
|
|
||||||
@ -1028,6 +1029,8 @@ public:
|
|||||||
// Avoidance
|
// Avoidance
|
||||||
void set_avoidance_radius(int p_layer_id, const real_t p_radius);
|
void set_avoidance_radius(int p_layer_id, const real_t p_radius);
|
||||||
real_t get_avoidance_radius(int p_layer_id) const;
|
real_t get_avoidance_radius(int p_layer_id) const;
|
||||||
|
void set_avoidance_position(int p_layer_id, const Vector2 &p_position);
|
||||||
|
Vector2 get_avoidance_position(int p_layer_id) const;
|
||||||
void set_avoidance_polygon_points(int p_layer_id, Vector<Vector2> p_polygon);
|
void set_avoidance_polygon_points(int p_layer_id, Vector<Vector2> p_polygon);
|
||||||
Vector<Vector2> get_avoidance_polygon_points(int p_layer_id) const;
|
Vector<Vector2> get_avoidance_polygon_points(int p_layer_id) const;
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user