Repository navigation
Releases: breadboardengineer1234/ZoneService
Releases · breadboardengineer1234/ZoneService
Release list
ZoneService v0.5.0-beta
Bug fixes
- Fixed onZoneChange firing nil on zone transitions
- Fixed onEnter and onExit signals not providing a way to identify the group associated with the fire
- Fixed zone:update not storing the new size
Features
- Removed groups entirely, including internal default group special case
- Added observers as a replacement for groups: onEnter, onExit, and onZoneChange signals have been moved onto observers. Logically, observers work pretty much the same way as groups
- Removed .ballSize and .cylinderSize helpers
- Zone objects now expose isDynamic, priority, and observers as read-only fields
- Added Zone collections and associated Zones type
- Zone collection objects have add, remove, and destroy methods
- Added .fromZones method for constructing a zone collection (in other words, a union of zones)
- onEnter and onExit can now observe a collection of zones in addition to a single zone
- Added Performance Mode: when ZoneService is causing heavy load, automatically reduces the polling rate to increase FPS. Performance Mode is often very worth it as a small reduction in polling rate can lead to a significant increase in FPS
- Added error message to onZoneChange and getZones when the entity is no longer tracked
ZoneService v0.4.0-beta
- API rework: removed all old zone registration methods and all string key usage. New API forces the user to register zones and track entities in correct order. For example, with the new API you cannot try to observe an entity before it's registered or before a group is registered
- Added Zone, Group, and Tracked objects
- Zone and Group objects can be instantiated with .new while Tracked objects are returned when calling :track
- Zone specific methods (anything that used to require a zone name) moved onto new Zone object
- Method name changes: isPointInZone -> isPointInside, getRandomPointInZone -> getRandomPointInside, updateZone -> update, removeZone -> destroy, entered -> onEnter, exited -> onExit, changed -> onZoneChange, addZone -> ZoneService.new, addZoneFromPart -> ZoneService.fromPart
- getSubjectsInZone method removed
- Subject type changed to "Entity" and all subject variables renamed to entity for more clarity
- Added metadata and destroyed flag to zones
- New group creation method via Group.new
- Add/remove zones to/from groups using new :add and :remove methods
- Destroy groups using Group:destroy
- If a zone is not added to any group, it defaults to a default internal group. In this state, zones cannot be observed with :zoneChanged
- A single zone can now belong to multiple groups, which scales better than creating multiple copies of the same zone under different groups. That said, scaling with multiple groups is still not amazing due to an information limit, so it's recommended the user does not add the same zone to multiple groups unless absolutely necessary
- Max groups limit removed
- Reworked group tracking logic: scalability with number of groups improved significantly
- Removed unnecessary internal bookkeeping
- changed signal (now called onZoneChange) moved onto Tracked handle
- getZones method moved onto Tracked handle
- Added adaptive polling algorithm: dynamically selects the optimal frame interval, improves performance significantly in some cases
- Polling interval is no longer configurable; instead, there is a new polling rate config
- Added strict typing for new type solver
ZoneService v0.3.0-beta
- BVH module can now instantiate separate trees
- Trees can now be reset, which allows ZoneService to be reset to a clean state
- Tables and buffers are now reused on tree rebuilds (buffers only if the number of tree nodes remains the same)
- Replaced default table.sort with custom quicksort, which allows 2 flat arrays to be sorted at once without having to allocate intermediate tables
- Added a morton bounds cumulative tracker which replaces O(N) bounds recalculation on tree rebuilds (only applies for dynamic zones)
- Rebuilding tree no longer allocates a new zones array each time
- Dynamic zones now use a BVH tree instead of a flat dictionary (significantly better scalability)
- Added shape support for Wedge and CornerWedge
- Replaced :rebuildBVH with :rebuildStaticBVH and :rebuildDynamicBVH
- Added :updateDynamicBounds which forces a morton bounds recalculation for the dynamic tree
- Modified :updateZone to allow optional CFrame and Size arguments
- :getSubjectsInZoneFlags changed to :getSubjectsInZone
- Fixed :getRandomPointInZone bug where cylinder height was on the Y axis
ZoneService v0.2.1-beta
Fixed: bvh rebuilds on dynamic zone removal
ZoneService v0.2.0-beta
Release