Besides owning the navmesh, the A* stepper stores g-scores and f-scores,
displaying which will be helpful for debugging, so we want to be able to
access the whole A* stepper instead of only the navmesh.
This is mostly to improve readability. Since we don't check the values
of the continue statuses anywhere anyway, this doesn't result in any
changes to code outside of the router/astar module.
Rename `NavcordStepper<...>` to `Navcord<...>. Since the navcord is not
actually considered a true stepper, having the word "stepper" in its
identifier would confuse anyone new to source-diving Topola's code.
Rename Navcord's `.step(...)` to `.step_to(...)` to make it clear
that this is not just a step like in a stepper, but a step to a some
specified position.
e.g. find the bounds of false, true in [false, true, true, false, false]
under the condition that the blocks in partitions of a single value are connected,
meaning when considering the list as cyclic, there are at most 2 blocks (for value true, false).
This implements only the binary case.
Exponential search was suggested by Harold Aptroot <@harold@mastodon.gamedev.place>
Example/motivating use case: detecting which parts of the exterior of a Polygon
face towards a point, and which parts don't, in particular finding the (extremal) points
contained in the tangents. This use case is implemented in `poly_ext_tangent_points`.
Signed-off-by: Ellen Emilia Anna Zscheile <fogti+devel@ytrizja.de>
example usages would be marking the apex of a polygon explicitly,
or marking the nodes of a polygon which are part of the convex hull
- make ManageCompounds more generic
- removes unnecessary bounds on handles/refs
The most important difference in this PR is that we now enforce scope
and subject line length. `conventional-pre-commit`, which we have been
using until now, does not appear to allow that unlike `committed` which
we will be now using.
On the other hand, `committed` doesn't allow to require having a scope,
unlike `conventional-pre-commit`, but I will probably submit them a PR
for this later.
I also find it questionable that disabling particular checks is to be
done by switching boolean options to false. Doing so by string options
would be more future-proof.
Also note that this has a check to make sure the commit message starts
with a verb. I am fine with this myself, but it may be an overkill.
Timestep should never be set to 0 because this freezes the GUI if the
execution takes a long time.
Of course, this solution assumes that any lengthy operation is split
into sufficiently fine steppable steps.
Fixes https://codeberg.org/topola/topola/issues/203