By this project convention, the line extend will start from p1 and
end at p2, but not including p2 [p1, p2). Thus, existing tests are
testing a zero-length line, which should assert no collision.
Add test to properly test AABB edge collision with a line
Also update existing collision function to account for this
Changelog:
- Fill only a range of reachable tiles instead
- Tweak fill complete check
- Count tiles filled, if zero: complete
- Allow multiple runner to fill without breaking the game
Changelog:
- Add in scanline filling process
- Use signed integer for calculation
- Generalise BFS to only depend on the current cell
- During the search for the lowest reachable tile, allow a single
tile equal or higher to the starting tile
This is to allow moving upwards when no valid lower tile exists
Changelog:
- Add new state for when runner reaches target position
- Skip movement if already on target position
- Add extra handling for spawning on solid tile
- Fix tile toggling bug on the same tile
Changelog:
- Clear to_update queue correctly
- Move entity deletion after adding
- This is to allow deletion immediately after adding
- Should be okay
- Fix incorrect null checking when adding entity
- Queue deletion when removing entity even if not found at removal time
- The update function should handle such case
Changelog:
- Add new component: water runner component
- specific for such an entity. Not general, but i dont really care
- Implement adding and freeing the water filler entity
- Component involves dynamic memory allocation, so need custom
function to add and free
- May look into custom allocation for this part in the future.
Changelog:
- Add Lifetimer and remove hurtbox on hit
- Still insta-remove on player hit
- Fix adding a component to an entity that already has that component
- Reorder lifetimer update system
Changelog:
- Defer component updates as iterator invalidation can occur
- Add new struct for this + queue on entity manager
- Add new component: CLifeTimer
- Basically a timer to live for entity
Changelog:
- Add function spawn arrow
- Update game system to handle null components
- enough for the arrow to work
- Render arrow, sort of
- Initial implementation, definitely need more work
Changelog:
- Fix incomplete line-AABB collision check
- Add line-AABB check for grid
- Change len_reduction to 0
- Set tiles to check once during edge checking
Changelog:
- Figure out why the previous AABB behaviour was correct: continuum
[0, 5) does not collide with [5, 10)
For tile check however, need to subtract one to avoid extra tile
check. Exception is the tile collision
Changelog:
- Kinematic mode ignores accelerations, that's all
- Update moveable to use kinematic mode and set accel & velocity to zero
when entering gridmove mode
Changelog:
- Add handling for complete overlap
- It will attempt to move into an empty space near the checked
entity. If no free space, it will move up. Ripe for exploit!
- Move boundary collision check into movement update
- AABB check now returns overlap mode:
- 0: no overlap
- 1: partial overlap
- 2: complete overlap
Changelog:
- Update collision functions to omit entity_manager
- Change tile entity set to use map 64v to store entity pointer
- For complete overlap, return the smaller magnitude
- Still incorrect though
- Add a check for empty space before moving the entity during collision
check
Changelog:
- Add previous velocity in ctransform component
- Add functions to check if a boulder can move left or right when
landing on a boulder
- Adjust system execution order