MCPcopy
hub / github.com/KilledByAPixel/LittleJS / engineObjectsCollect

Function engineObjectsCollect

src/engine.js:517–540  ·  view source on GitHub ↗

Collects all object within a given area * @param {Vector2} [pos] - Center of test area, or undefined for all objects * @param {Vector2|number} [size] - Radius of circle if float, rectangle size if Vector2 * @param {Array } [objects=engineObjects] - List of objects to check * @re

(pos, size, objects=engineObjects)

Source from the content-addressed store, hash-verified

515 * @return {Array<EngineObject>} - List of collected objects
516 * @memberof Engine */
517function engineObjectsCollect(pos, size, objects=engineObjects)
518{
519 const collectedObjects = [];
520 if (!pos)
521 {
522 // all objects
523 for (const o of objects)
524 collectedObjects.push(o);
525 }
526 else if (size instanceof Vector2)
527 {
528 // bounding box test
529 for (const o of objects)
530 o.isOverlapping(pos, size) && collectedObjects.push(o);
531 }
532 else
533 {
534 // circle test
535 const sizeSquared = size*size;
536 for (const o of objects)
537 pos.distanceSquared(o.pos) < sizeSquared && collectedObjects.push(o);
538 }
539 return collectedObjects;
540}
541
542/**
543 * @callback ObjectCallbackFunction - Function that processes an object

Callers 1

engineObjectsCallbackFunction · 0.85

Calls 2

isOverlappingMethod · 0.80
distanceSquaredMethod · 0.80

Tested by

no test coverage detected