Add protective checks for invalid handle use in BVH

Adds DEV_ASSERTS that will halt at runtime if the BVH is misused with invalid IDs, and adds ERR_FAIL macros to prevent calling with invalid IDs.

Any such misuse is a bug in the physics, but this should flag any errors quickly.
This commit is contained in:
lawnjelly 2022-03-23 08:06:29 +00:00
parent cd2e7fbc57
commit 109d08c84a
5 changed files with 40 additions and 14 deletions

View file

@ -60,11 +60,23 @@ private:
public:
// accessors
BVHABB_CLASS &get_aabb(uint32_t p_id) { return aabbs[p_id]; }
const BVHABB_CLASS &get_aabb(uint32_t p_id) const { return aabbs[p_id]; }
BVHABB_CLASS &get_aabb(uint32_t p_id) {
BVH_ASSERT(p_id < MAX_ITEMS);
return aabbs[p_id];
}
const BVHABB_CLASS &get_aabb(uint32_t p_id) const {
BVH_ASSERT(p_id < MAX_ITEMS);
return aabbs[p_id];
}
uint32_t &get_item_ref_id(uint32_t p_id) { return item_ref_ids[p_id]; }
const uint32_t &get_item_ref_id(uint32_t p_id) const { return item_ref_ids[p_id]; }
uint32_t &get_item_ref_id(uint32_t p_id) {
BVH_ASSERT(p_id < MAX_ITEMS);
return item_ref_ids[p_id];
}
const uint32_t &get_item_ref_id(uint32_t p_id) const {
BVH_ASSERT(p_id < MAX_ITEMS);
return item_ref_ids[p_id];
}
bool is_dirty() const { return dirty; }
void set_dirty(bool p) { dirty = p; }