{"_id":"@afk/multiverse","_rev":"2-7f94771647766f4f3e4ee632d22a7048","name":"@afk/multiverse","dist-tags":{"latest":"0.1.1"},"versions":{"0.1.0":{"name":"@afk/multiverse","version":"0.1.0","description":"Fast tracking and collision detection for large volumes of objects within an arbitrary number of dimensions","main":"src/multiverse.mjs","ava":{"babel":false,"compileEnhancements":false,"require":["@babel/register"],"files":["test/**/*.js"]},"scripts":{"coverage":"nyc npm run unit --report=lcov","test":"npm run coverage","unit":"ava --verbose"},"repository":{"type":"git","url":"git+https://github.com/asilvas/multiverse.git"},"keywords":["multiverse","object","tracking","collision","detection","3d"],"author":{"name":"Aaron Silvas"},"license":"MIT","bugs":{"url":"https://github.com/asilvas/multiverse/issues"},"homepage":"https://github.com/asilvas/multiverse#readme","devDependencies":{"@babel/cli":"^7.7.0","@babel/core":"^7.7.2","@babel/preset-env":"^7.7.1","@babel/register":"^7.7.0","ava":"^2.4.0","cross-env":"^6.0.3","nyc":"^14.1.1"},"dependencies":{"splaytree":"^3.0.1"},"gitHead":"08dfd33e8eb8c6bf77180b4108532cfaf80fac30","_id":"@afk/multiverse@0.1.0","_nodeVersion":"12.12.0","_npmVersion":"6.11.3","dist":{"integrity":"sha512-1WUXZV5MOtYKNa88/RcYIKmoN7a+mU6lf2M42G838jXZVqIWy2urDrHEyCpbVejqwwbid8C+wRuP67LBGdW0hw==","shasum":"6b4def8cd8ce9023d326f1015e613c28973440cf","tarball":"https://registry.npmjs.org/@afk/multiverse/-/multiverse-0.1.0.tgz","fileCount":18,"unpackedSize":21730,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJd/o39CRA9TVsSAnZWagAAEMcP/2g9Paz6E4pMaN6SDRl5\npGLPBl1AFlWGGYt98tPz+1DEFz3azqmApn0yg9BGLrJA3l1zaQ/ggw2avh+2\n6QQ+UBsSUXg8e6g8zjIAlIBPqVFUSOJ/M8rqIYISmKoc9SJvjcnq9KrfRiVs\n0424nbMoyid+rT83O7eh9Up8pCoiFRJzKLjhn2LlIZJYPG5TDCokJoKg0O91\nKXzP5v4MNVWvoVlK9ARPHuaEYUme1PnyHo/FP0nUPYK6mY5+fJntgiZ6dsvB\nBz1m9wa1beGgnaO8VfBFgJAqZzTzQmm4jIbqqThQ+sMBCq15prwk0dI8vAvN\nbEqZUOf5TEZfJS7V7dK7VEofZIWyRa7KaOBKZ9Z9HtfL5UJXEbNffqbd4t8i\nOhnbw5jFki9wIzNsfDye3zwvQo/K692V7sUK97AKn7wlzdXRRX6pYcLnKGe+\nT8ElvuLG/Xx3qDTk7Fq/qHu8N6fPTzJW73B6FLOhOD/PbRDgJC15Co3B1fON\n5bzofQHA8PYOyDGxywIVmMvO8zN0FG1COlNhJrWJXb/VomyfB+w54lstzKv5\nTQP6hp4WDrnO9ORj5EJn6xhAm/RnH+jb5EHnNIXW5pZ4dMcDcf+VvZkpBYlS\nO3GVXF2POrH7o3fLF0VI8bOO9T1skF0Q4vjIbpktLQq69wQzmaphUP4MI6Rf\nggBN\r\n=mZBE\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIHKZpOUsTRrXHRzV99k1jb+3u8fr712/73ISxKpqGglQAiEAuYu3J/0q2+4NhkBcBEgsh3fhr6qwXf5wipqEtIqpLH8="}]},"maintainers":[{"name":"asilvas","email":"asilvas@godaddy.com"}],"_npmUser":{"name":"asilvas","email":"asilvas@godaddy.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/multiverse_0.1.0_1576963580996_0.2923889523160681"},"_hasShrinkwrap":false},"0.1.1":{"name":"@afk/multiverse","version":"0.1.1","description":"Fast tracking and collision detection for large volumes of objects within an arbitrary number of dimensions","main":"src/multiverse.mjs","ava":{"babel":{"compileEnhancements":false},"require":["@babel/register"],"files":["test/**/*.js"]},"scripts":{"coverage":"nyc npm run unit --report=lcov","test":"npm run coverage","unit":"ava --verbose"},"repository":{"type":"git","url":"git+https://github.com/asilvas/multiverse.git"},"keywords":["multiverse","object","tracking","collision","detection","3d"],"author":{"name":"Aaron Silvas"},"license":"MIT","bugs":{"url":"https://github.com/asilvas/multiverse/issues"},"homepage":"https://github.com/asilvas/multiverse#readme","devDependencies":{"@ava/babel":"^1.0.1","@babel/cli":"^7.14.5","@babel/core":"^7.14.6","@babel/preset-env":"^7.14.7","@babel/register":"^7.14.5","ava":"^3.15.0","cross-env":"^7.0.3","nyc":"^15.1.0"},"gitHead":"9344f4956bcbeaa813cebb2b79b95ff2e3e51e9a","_id":"@afk/multiverse@0.1.1","_nodeVersion":"16.3.0","_npmVersion":"7.15.1","dist":{"integrity":"sha512-1XklLF+fuW5eVvyva2jJFcrsubXhUqkMvBG15IRE/eAuJ35x88AqAAdxAniC6USaac3kb9qMStoP5ttlEns9bg==","shasum":"16c59bb866fe79b397006d0d35a9eea01033e0ed","tarball":"https://registry.npmjs.org/@afk/multiverse/-/multiverse-0.1.1.tgz","fileCount":18,"unpackedSize":21715,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJg3HuxCRA9TVsSAnZWagAAMGUP/RlC/9/ephewO/1UbWLq\nQsil5cxPFmo/e0uBgK12ALfYw00nUeVfOpvOjs4zsyfl4mLpXdj9HVJJEE5g\nC4kd0kBivySiyF8iS5VnPKUIkfKe5VELNwfR1ED2Ds4pHAsmpUcHcnXvonoj\nUTZacQmiGDFeYal4yHBG6ie4E6Pq4eXXSEC4vYerNyV9QjR5yWyIpNrbHLc3\nuq0+bLPMvK9+qmgcNZjWJCA2rw1LkhEPNBe2kXJJ7wKnntBgSQ1mfiZnwGle\nLrUjxV6lMbvt6uqb/mIjYrQpeyJkgGIM9QTIAZlhCFG9JaWN7koc+JXZwyRW\nBYEDRqPbKanxP1Etd8nOjXNS42KJS0kV6tiOXFKTlgQ1sxxvbCRLpVdL6wlm\ncfZmSBEk3mPRJq9+xgqsq5NtolMPtBKbfFeBU1Ma0C7rO9znYsaTSfOMnshZ\n4ZsOHoncMhf4YcCACdJzOPsqiiAlXSCimOGzGLa+xvU7O8R334wVhinUqYSP\niO32zzhkUUbdK8YYk4t8BQ7gmIumv3AtqKSzookB8gh2hr9AQs4SWIp3Oyno\npH+3FXCStMt1vyiVhLoHMJsnyygNreRz3S7W6fbPM0XioW1Dve+1bfssQ9uA\n+nEs0SCzSJjck4E7sFbRKxwck8rRoMFyUbk+vE7tk1d4lmUsKqssCA6wuQBl\nG2NW\r\n=6hYV\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCJg/S/6Jg90scGgJ/00yovKjmp2V65ESftOK9VZaITIgIgbtSpsJ33RllAm+00GEKKhy1iEItxWmlRLaNmdjQcqek="}]},"_npmUser":{"name":"asilvas","email":"asilvas@godaddy.com"},"directories":{},"maintainers":[{"name":"asilvas","email":"asilvas@godaddy.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/multiverse_0.1.1_1625062320859_0.3107768003926552"},"_hasShrinkwrap":false}},"time":{"created":"2019-12-21T21:26:20.770Z","0.1.0":"2019-12-21T21:26:21.106Z","modified":"2022-04-04T11:50:54.841Z","0.1.1":"2021-06-30T14:12:00.971Z"},"maintainers":[{"name":"asilvas","email":"asilvas@godaddy.com"}],"description":"Fast tracking and collision detection for large volumes of objects within an arbitrary number of dimensions","homepage":"https://github.com/asilvas/multiverse#readme","keywords":["multiverse","object","tracking","collision","detection","3d"],"repository":{"type":"git","url":"git+https://github.com/asilvas/multiverse.git"},"author":{"name":"Aaron Silvas"},"bugs":{"url":"https://github.com/asilvas/multiverse/issues"},"license":"MIT","readme":"# @afk/multiverse\r\n\r\nFast tracking and collision detection for large volumes of objects within an arbitrary number of dimensions.\r\n\r\n\r\n## Basic Usage\r\n\r\n```\r\nimport multiverse from '@afk/multiverse';\r\n\r\n// 3d world\r\nconst world = multiverse(3);\r\n\r\nconst obj1 = { name: 'Taco' };\r\nconst obj2 = { name: 'Kujo' };\r\n\r\n// insert objects to 3d space with size\r\n// size is optional\r\n// up to you where to store identifier\r\nobj1.mv = world.insert(obj1, [1, 2, 3], [0.1, 0.2, 0.1]);\r\nobj2.mv = world.insert(obj2, [2, 3, 1], [0.1, 0.2, 0.1]);\r\n\r\nworld.move(obj1.mv, [3, 2, 1]);\r\n\r\n// calc distance in 3d space (taking into account size of objects)\r\nconst distance = world.distance(obj1.mv, obj2.mv);\r\n\r\n// find nearest 1 object from obj1 position\r\nconst [[nearest, [nearestX, nearestY, nearestZ]] = world.nearest(obj1.mv, 1);\r\n\r\n// or iterate through nearest... generally ordered, but optimized for speed over accuracy\r\nlet findings = [];\r\nfor (let o of world.nearestIter(obj1.mv)) {\r\n  findings.push(o);\r\n  if (findings.length > 10) break;\r\n}\r\n\r\n// find nearest 1 object from desired position\r\nconst [[find, [findX, findY, findZ]]] = world.find([5, 1, 1], 1);\r\n\r\n// optionally provide a bounding zone (which in this example won't find a result)\r\nconst [nearestInZone] = world.find([5, 1, 1], 1, [1, 1, 1]);\r\n\r\n// change bounding size after the fact\r\nworld.size(obj1.mv, [0.2, 0.2, 0.2]);\r\n\r\n// information about the world\r\nconst { bounds, objects } = world.info();\r\n\r\n// remove object\r\nworld.remove(obj2.mv);\r\n\r\n// copy\r\nconst newWorld = world.clone();\r\n\r\n// clean slate\r\nworld.reset();\r\n```\r\n\r\n\r\n## Advanced Usage\r\n\r\n```\r\n// find intersecting objects if any within the bounds of the provided object\r\nconst [collidingObj] = world.intersect(obj1.mv, 1);\r\n\r\n// similar to `find`, but with conditionals only the caller understands\r\nworld.filter([5, 1, 1], 1, o => o.name === 'Kujo');\r\n\r\n// return serializable object for persistence and/or transfer over wire\r\nconst worldData = world.toJSON();\r\n\r\n// create world from exported data\r\nconst restoredWorld = multiverse(worldData);\r\n```\r\n","readmeFilename":"README.md"}