|
|
|
|
@ -473,19 +473,19 @@ bool Area3D::is_monitoring() const {
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
TypedArray<Node3D> Area3D::get_overlapping_bodies() const {
|
|
|
|
|
ERR_FAIL_COND_V(!monitoring, Array());
|
|
|
|
|
Array ret;
|
|
|
|
|
TypedArray<Node3D> ret;
|
|
|
|
|
ERR_FAIL_COND_V_MSG(!monitoring, ret, "Can't find overlapping bodies when monitoring is off.");
|
|
|
|
|
ret.resize(body_map.size());
|
|
|
|
|
int idx = 0;
|
|
|
|
|
for (const KeyValue<ObjectID, BodyState> &E : body_map) {
|
|
|
|
|
Object *obj = ObjectDB::get_instance(E.key);
|
|
|
|
|
if (!obj) {
|
|
|
|
|
ret.resize(ret.size() - 1); //ops
|
|
|
|
|
} else {
|
|
|
|
|
ret[idx++] = obj;
|
|
|
|
|
if (obj) {
|
|
|
|
|
ret[idx] = obj;
|
|
|
|
|
idx++;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
ret.resize(idx);
|
|
|
|
|
return ret;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
@ -506,19 +506,18 @@ bool Area3D::is_monitorable() const {
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
TypedArray<Area3D> Area3D::get_overlapping_areas() const {
|
|
|
|
|
ERR_FAIL_COND_V(!monitoring, Array());
|
|
|
|
|
Array ret;
|
|
|
|
|
TypedArray<Area3D> ret;
|
|
|
|
|
ERR_FAIL_COND_V_MSG(!monitoring, ret, "Can't find overlapping areas when monitoring is off.");
|
|
|
|
|
ret.resize(area_map.size());
|
|
|
|
|
int idx = 0;
|
|
|
|
|
for (const KeyValue<ObjectID, AreaState> &E : area_map) {
|
|
|
|
|
Object *obj = ObjectDB::get_instance(E.key);
|
|
|
|
|
if (!obj) {
|
|
|
|
|
ret.resize(ret.size() - 1); //ops
|
|
|
|
|
} else {
|
|
|
|
|
ret[idx++] = obj;
|
|
|
|
|
if (obj) {
|
|
|
|
|
ret[idx] = obj;
|
|
|
|
|
idx++;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
ret.resize(idx);
|
|
|
|
|
return ret;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|