summaryrefslogtreecommitdiff
path: root/src
AgeCommit message (Collapse)Author
2018-12-14libix2: support nested area searchesVito Caputo
See 6ea78c53 in libix3 for more info, this replicates the change to keep them in something resembling API parity.
2018-11-30libix2: drop pointer from ix2_search_cb typedefVito Caputo
I despise hiding pointer types in typedefs, it makes usage less clear/obvious to the reader.
2018-11-27libix2: cleanup pads w/pad_free on ix2_new errorsVito Caputo
oops
2018-11-27libix2: disambiguate ix2_search_status_tVito Caputo
Previously one could say stop/ignore/continue. There was no way to say stop and ignore, or stop but don't ignore. Now there are basically two classes of returns, stop and continue, and each of those have ignore/don't ignore sub-statuses. The naming is changed to STOP vs. MORE and HIT vs. MISS for brevity: typedef enum ix2_search_status_t { IX2_SEARCH_STOP_MISS, IX2_SEARCH_STOP_HIT, IX2_SEARCH_MORE_MISS, IX2_SEARCH_MORE_HIT } ix2_search_status_t;
2018-11-27libpad: sync with upstream, use PAD_FLAGS_ZEROVito Caputo
The code used calloc() previously, and there remain assumptions about the allocated memory being zeroed, hence adding the flag to libpad and using it here.
2018-11-27libpad: add ix2_reset()Vito Caputo
This basically amounts to adding a pad_reset() wrapper. Also incorporated resets into the test, while fixing a stupid bug there.
2018-11-27libix2: pivot from libc to libpadVito Caputo
Note that libpad doesn't currently have the fixed size variant, so the pad_get() calls must include the size temporarily. Regardless, I've still utilized three distinct pads for the three object types in preparation for the fixed size variant.
2018-11-27test: s/aabb_t/bb2f_t/gVito Caputo
mechanical change syncing the test code with the aabb type rename
2018-10-31libix2: trivial whitespace fixesVito Caputo
2018-10-03libix2: make split_node() staticVito Caputo
This is a private helper function.
2018-09-13libix2: s/aabb_t/bb2f_t/gVito Caputo
aabb_t is a dimensionless name, and I've started mixing 2D and 3D paradigms in the same projects so it's time to include the number of dimensions for the bounding box. bb2f_t is also more consistent with the vector and matrix header naming schemes I've been using.
2018-05-21libix2: introduce origin for anchoring positionVito Caputo
also use v2f_t everywhere for positions instead of the occasional float x, float y.
2018-05-18test: update test.c to conform to latest api stateVito Caputo
2018-05-18libix2: rename ix2_object_t functionsVito Caputo
ix2_insert_object ix2_remove_object ix2_move_object becomes ix2_object_new ix2_object_free ix2_object_move to be more consistent with the other libraries intended to be used with this.
2018-05-18libix2: count the last hit in stopped searchesVito Caputo
I may need to add another status code to control wether the stop should be counted. For now, all my use cases wanted the count.
2018-05-18libix2: introduce AABB-independent object positionVito Caputo
Much like libstage nodes can now have their position set using relative AABBs, it's convenient to have the same paradigm in libix2.
2018-05-17libix2: fix bug in OOB insertVito Caputo
Was returning the user-supplied object pointer as the ix2_object_t, oops.
2018-05-17libix2: support default on NULL AABB in ix2_new()Vito Caputo
The -1,-1...1,1 AABB seems so likely to be used, make it the default used when supplying a NULL for the root AABB.
2018-05-14*: initial commitVito Caputo
libix2 implements a simple spatial index of objects described by 2D axis-aligned bounding boxes (AABB). It does so by internally utilizing a traditional quadtree data structure. At this time only simple AABB and point search queries are supported, with a simple per-match callback interface. It may make sense to in the future add support for indexing other 2D shapes than AABBs, like circles. It would also make senes to add more interesting search queries like radial ranges and such. The intended use is for broad-phase collision detection in 2D games.
© All Rights Reserved