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)
| 515 | * @return {Array<EngineObject>} - List of collected objects |
| 516 | * @memberof Engine */ |
| 517 | function 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 |
no test coverage detected