83 Commits

Author SHA1 Message Date
Linden
99b146d7b9 fix(client/zones): zone triggers twice when inside and debug is enabled
Zones would be added to the temporary array twice, so callback functions
and the zone draw would trigger twice.
2022-09-11 11:02:04 +10:00
Linden
5d71c4efdf fix(client/zones): debug erroneously triggers zone:inside
Should only trigger when the player is, in fact, inside the zone.
2022-09-02 22:23:24 +10:00
Linden
3a97a0c569 fix(client/zones): convert tables to vectors
Ensure tables (either array or map) set as points, coords, or size are
converted into vectors.
Includes complementary reformatting.
2022-08-30 02:58:41 +10:00
Linden
46a525e057 fix(zones/client): debug DrawPoly and DrawLine
Debug for boxes broke with the oal fixes, since vectors don't unpack.
Also fixes flicker when entering a debug zone.
2022-08-13 17:08:39 +10:00
Linden
231ca90b8f fix(zones/client): do not overwrite zone.distance with contains
Manually calling the contains method would overwrite zone distance.
Also move Wait to the end of the thread to prevent race conditions.
2022-08-10 23:45:48 +10:00
Linden
d33df54f0e tweak(zones): store distance to zone center
Should make sphere "zones" nearly 1:1 with the points api.
Distance added for polygons too for consistency and some use-cases,
but generally only worthwhile for smaller zones.
2022-06-26 12:30:25 +10:00
Linden
84867900eb fix(zones): zone.inside should not depend on zone.onEnter 2022-05-18 01:46:58 +10:00
DokaDoka
d52d5adac2 fix(zones): debug thickness misalignment and standardize defaults
all total sizes now default to 4
2022-05-14 12:45:50 +10:00
DokaDoka
14ce365de1 fix(zones): thickness workaround
thickness is calculated incorrectly by glm.polygon.contains so this is required until it is fixed
2022-05-14 12:34:12 +10:00
DokaDoka
6a8ebb5a0d chore(zones): rearrange variables 2022-05-11 13:38:27 +10:00
DokaDoka
2a1ae2e287 feat(zones): consistent zone debug appearance
through merging debugPoly and debugBox
2022-05-11 13:36:36 +10:00
DokaDoka
38dbc2ac34 refactor(zones): create data.triangles even if the polygon is convex 2022-05-11 13:34:06 +10:00
DokaDoka
9b5ac35ab3 refactior(zones): make makeTriangles available outside of getTriangles 2022-05-11 13:29:18 +10:00
Linden
7a4745c0da chore(zones): adjust debug rgba 2022-05-10 15:29:07 +10:00
Linden
55bfa7ca3d refactor(zones): global Zones 2022-05-07 11:47:39 +10:00
Linden
ce3f916c42 refactor(zones): centroid -> coords
While centroid is a more accurate term, coords is a little simpler when
writing it a million times.
Prefer to use a single term (sphere was using coords) to simplify API.
2022-05-07 11:19:27 +10:00
Linden
d3718622cf feat(zones): sphere zone
It's just a distance check and works exactly like lib.points, with some
minor API changes for consistency.
2022-05-06 14:28:45 +10:00
Linden
4555fa0a22 refactor(zones): call zone:contains instead of zone.polygon:contains
Added this function earlier but forgot to include thickness, so
it didn't work.
2022-05-06 14:26:56 +10:00
DokaDoka
18f55ffefe refactor(zones): handle multiple points in the same horizontal line
- new intersection points are generated per vertical coord present in the original polygon rather than per vertex and are grouped together rather than associated directly with the parent
- hopefully better code structure and organisation for the entire triangle generating section
2022-05-01 12:49:56 +10:00
Linden
c7bab9b47f fix(zones): debug functions should not be global 2022-04-29 02:01:51 +10:00
Linden
634dd747b7 refactor(zones): assign X directly and store triangles as matrices 2022-04-29 02:01:17 +10:00
Linden
754ae1bd8d refactor(zones): use array table structure when creating triangles 2022-04-29 01:50:31 +10:00
Linden
247b9916e1 refactor(zones): rename variables and minor perf
Set box vertices and poly triangles once during creation (with debug).
2022-04-29 01:38:01 +10:00
DokaDoka
65787d3b6d fix(zones): draw complex polygons properly
convex polygons are split into triangles more simply
complex polygons are split into trapezoids and then triangles to be drawn
2022-04-29 00:41:21 +10:00
Linden
cfffcee577 feat(zones): debugBox draw lines on edges
It's an abomination until Doka works his magic.
2022-04-27 17:13:26 +10:00
Linden
5dce90682f refactor(zones): reduce value reassignments 2022-04-27 17:11:36 +10:00
Linden
fc3e5d6339 feat(zones): add contains method to zones
Reduces number of table lookups for micro-optimisation.
zone:contains(coords) is also a bit nicer than zone.polygon:contains(coords).
2022-04-27 17:09:32 +10:00
Linden
a340c83e1a perf(zones): assign inside count and index to local
Reduce number of times the inside table needs to be indexed or have length checked.
Also assign debug zones to table without having to be inside the zone.
2022-04-27 17:07:24 +10:00
Linden
cc770ada64 refactor(zones): change new to poly, default box rotation 2022-04-27 10:33:18 +10:00
DokaDoka
de201dcf03 feat(zones): box
streamlined rectangle polygon creation for the lazy, with rotation
2022-04-26 23:06:23 +10:00
Linden
f651a91bf6 perf(zones): debug
Iterate polygon userdata directly, instead of creating a new table each frame.
2022-04-25 21:51:03 +10:00
Linden
94a460903d refactor(zones): perf, args, and insideZone
lib.zones.new should take a single argument containing all
data related to the new zone, then append new fields to the table.
No need for a distance check and 'nearby', instead check if player
is inside the polygon.
Use a function ref instead of closures for debug (drawPolygon).
2022-04-25 21:33:56 +10:00
DokaDoka
adb110d8d8 feat(imports/zones): basic glm polygon zones
build on the points structure
2022-04-25 20:28:10 +10:00