Remove the corner helpers akgl_collide_rectangles no longer uses
akgl_rectangle_points, akgl_collide_point_rectangle, akgl_Point and akgl_RectanglePoints go. They were the intermediate form of an implementation that changed: akgl_collide_rectangles was eight corner-containment tests built on them, and it has been four span comparisons since the cross-case fix. Nothing outside tests/ called either function, and a point-in-rectangle test is four comparisons a caller can write without a struct conversion in front of them. akgl_collide_rectangles stays. It has two correct callers in the sidescroller asking a game-level overlap question -- a coin, a hazard, from an updatefunc -- where a bool is the whole answer and a proxy plus a narrowphase call would be computing a normal nothing reads. TODO.md records the split rather than leaving it to be rediscovered. Public API removal, so 194 exported akgl_ symbols against 196, and the manual's counts move with them. The perf suite loses its rectangle_points row; the all-pairs sweep stays as the control it is now labelled, and PERFORMANCE.md says what 0.8.0 measured against it -- 188.5 us for 32,640 pairs at 256 actors, where a whole step with collision attached is 54.1 us doing strictly more. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01KzBDV2fqgnUAcqCKqKvc71
This commit is contained in:
@@ -1,13 +1,15 @@
|
||||
# 01. Introduction
|
||||
|
||||
libakgl is a C library for building 2D games on SDL3. This is version **0.8.0**. It ships
|
||||
195 functions declared across the twenty-three public headers in `include/akgl/`, plus
|
||||
`akgl_version()` from the generated `version.h` — 196 exported `akgl_` symbols in
|
||||
193 functions declared across the twenty-three public headers in `include/akgl/`, plus
|
||||
`akgl_version()` from the generated `version.h` — 194 exported `akgl_` symbols in
|
||||
`libakgl.so.0.8`.
|
||||
|
||||
**0.8.0 is an ABI break.** The `collide` slot on `akgl_PhysicsBackend` changed signature,
|
||||
four public structs grew, and `akgl_physics_arcade_collide` stopped raising `AKERR_API`.
|
||||
Collision is the reason; it is [Chapter 15](15-collision.md).
|
||||
four public structs grew, `akgl_physics_arcade_collide` stopped raising `AKERR_API`, and
|
||||
four symbols were removed — `akgl_rectangle_points`, `akgl_collide_point_rectangle` and the
|
||||
two types they used ([Chapter 19](19-utilities.md)). Collision is the reason for all of it;
|
||||
it is [Chapter 15](15-collision.md).
|
||||
|
||||
It gives you object pools instead of `malloc`, name-based registries instead of pointer
|
||||
plumbing, a per-frame tick that updates and draws every live actor, JSON asset formats for
|
||||
@@ -122,7 +124,7 @@ text you read *is* the header.
|
||||
|
||||
## Reading order
|
||||
|
||||
[Chapter 4](04-errors.md) comes before every subsystem chapter, because 183 of those 195
|
||||
[Chapter 4](04-errors.md) comes before every subsystem chapter, because 181 of those 193
|
||||
functions return `akerr_ErrorContext AKERR_NOIGNORE *` and you cannot read a single example
|
||||
until you can read that return value. The dozen that do not are the `void` SDL enumeration
|
||||
callbacks and the collision arena's accessors. After that, [Chapter 3](03-getting-started.md) gets a window on
|
||||
|
||||
Reference in New Issue
Block a user