{"_id":"wle-pp","_rev":"39-5f3016bb0bdf1bfc963c8d5991aab06c","name":"wle-pp","dist-tags":{"latest":"0.8.4"},"versions":{"0.4.1":{"name":"wle-pp","version":"0.4.1","keywords":["pp","pipo","wonderland","wonderlandengine","wonderland-engine","wonderland engine","wle","webxr"],"author":{"name":"Pipo"},"license":"ISC","_id":"wle-pp@0.4.1","maintainers":[{"name":"signor_pipo","email":"eliaducceschi@hotmail.it"}],"homepage":"https://github.com/SignorPipo/wle_pp","bugs":{"url":"https://github.com/SignorPipo/wle_pp/issues"},"dist":{"shasum":"01444f5d692cf42463302a5b5193a5ac6cee0b0d","tarball":"https://registry.npmjs.org/wle-pp/-/wle-pp-0.4.1.tgz","fileCount":284,"integrity":"sha512-FIs+Rj2pr0F2hXq3UjdaK8JdjiExkWn58s5LIl83R3b1gnkAL5sfOnJlgvuWqSjwrvFYBbX5KWfgd7YFLdbxTA==","signatures":[{"sig":"MEYCIQCLnJWabK0ZLhvPznUuvqgPMbOwP0z+rZXpQcMu98uwiAIhAPIOTFJUJ/JSjjLm8sF3c22oW5y4qSj6vtutpJSTwrUf","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":2335417},"main":"./js/pp/index.js","type":"module","module":"./js/pp/index.js","exports":"./js/pp/index.js","gitHead":"6c60ca8570dcac2b30f178f18f599e5d817e0bba","scripts":{"build":"node dev/build.js"},"_npmUser":{"name":"signor_pipo","email":"eliaducceschi@hotmail.it"},"repository":{"url":"git+https://github.com/SignorPipo/wle_pp.git","type":"git"},"_npmVersion":"8.18.0","description":"A library for the Wonderland Engine","directories":{},"_nodeVersion":"16.17.0","_hasShrinkwrap":false,"devDependencies":{"esbuild":"^0.14.54","esbuild-node-externals":"^1.7.0"},"peerDependencies":{"howler":"^2.2.3","gl-matrix":"^3.4.3","@wonderlandengine/api":"^1.0.0","@wonderlandengine/components":"^1.0.3"},"wonderlandengine":{},"_npmOperationalInternal":{"tmp":"tmp/wle-pp_0.4.1_1683480333257_0.8916033789004469","host":"s3://npm-registry-packages"}},"0.4.2":{"name":"wle-pp","version":"0.4.2","keywords":["pp","pipo","wonderland","wonderlandengine","wonderland-engine","wonderland engine","wle","webxr"],"author":{"name":"Pipo"},"license":"ISC","_id":"wle-pp@0.4.2","maintainers":[{"name":"signor_pipo","email":"eliaducceschi@hotmail.it"}],"homepage":"https://github.com/SignorPipo/wle-pp","bugs":{"url":"https://github.com/SignorPipo/wle-pp/issues"},"dist":{"shasum":"8c449fb43ff8f2bc96e63edf3d20a0b9610180a7","tarball":"https://registry.npmjs.org/wle-pp/-/wle-pp-0.4.2.tgz","fileCount":259,"integrity":"sha512-JsVWwyKn4l45vdQVt9HI3gqt5iqYPBnMdYyLz8+ilMkCsVpcz8Dh+dnBOtaOtBGy+2A8EPMh4aX88RJs5jBMWQ==","signatures":[{"sig":"MEQCIBP6uXltvtmV5hd9vqNZN6b/m5Kd9u0oDcDffjOouCcUAiBymQzkndBKOW5Ypnsh4BtH0a5ATdoxRnUft+8p5GNiMA==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":2279762},"main":"./js/pp/index.js","type":"module","module":"./js/pp/index.js","exports":"./js/pp/index.js","gitHead":"8e72789c1005ec4a51481618b26eb300d019ca6d","scripts":{"build":"node dev/build.js"},"_npmUser":{"name":"signor_pipo","email":"eliaducceschi@hotmail.it"},"repository":{"url":"git+https://github.com/SignorPipo/wle-pp.git","type":"git"},"_npmVersion":"8.18.0","description":"A library for the Wonderland Engine","directories":{},"_nodeVersion":"16.17.0","_hasShrinkwrap":false,"devDependencies":{"esbuild":"^0.14.54","esbuild-node-externals":"^1.7.0"},"peerDependencies":{"howler":"^2.2.3","gl-matrix":"^3.4.3","@wonderlandengine/api":"^1.0.0","@wonderlandengine/components":"^1.0.3"},"wonderlandengine":{},"_npmOperationalInternal":{"tmp":"tmp/wle-pp_0.4.2_1686641821685_0.5083673002614444","host":"s3://npm-registry-packages"}},"0.4.3":{"name":"wle-pp","version":"0.4.3","keywords":["pp","pipo","wonderland","wonderlandengine","wonderland-engine","wonderland engine","wle","webxr"],"author":{"name":"Pipo"},"license":"ISC","_id":"wle-pp@0.4.3","maintainers":[{"name":"signor_pipo","email":"eliaducceschi@hotmail.it"}],"homepage":"https://github.com/SignorPipo/wle-pp","bugs":{"url":"https://github.com/SignorPipo/wle-pp/issues"},"dist":{"shasum":"5bffa05ead664a38ed722465b1a4ad4399bd0c06","tarball":"https://registry.npmjs.org/wle-pp/-/wle-pp-0.4.3.tgz","fileCount":259,"integrity":"sha512-R+jriPyREUGkzIOqzI++QO20VIL0Q5+JFhSESJ1zg7AIXRHD5dWrEHVPyjkIgp+ruyNOIS1SqcLWFUVXEpiqKg==","signatures":[{"sig":"MEQCIBBN3mWrTz0PJym6KSVwa7Z9c+dJFKrfjbkOH5glAZFyAiBEyZcyjZyxKh/Knn7qjjp9Q+6GVe/PzB4JhkNr592Msw==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":2283313},"main":"./js/pp/index.js","type":"module","module":"./js/pp/index.js","exports":"./js/pp/index.js","gitHead":"b7676dbe258305475c5bbfd6ea6adfe0230b3bd2","scripts":{"build":"node dev/build.js"},"_npmUser":{"name":"signor_pipo","email":"eliaducceschi@hotmail.it"},"repository":{"url":"git+https://github.com/SignorPipo/wle-pp.git","type":"git"},"_npmVersion":"8.18.0","description":"A library for the Wonderland Engine","directories":{},"_nodeVersion":"16.17.0","_hasShrinkwrap":false,"devDependencies":{"esbuild":"^0.14.54","esbuild-node-externals":"^1.7.0"},"peerDependencies":{"howler":"^2.2.3","gl-matrix":"^3.4.3","@wonderlandengine/api":"^1.0.0","@wonderlandengine/components":"^1.0.3"},"wonderlandengine":{},"_npmOperationalInternal":{"tmp":"tmp/wle-pp_0.4.3_1686751018817_0.5714318674479566","host":"s3://npm-registry-packages"}},"0.4.4":{"name":"wle-pp","version":"0.4.4","keywords":["pp","pipo","wonderland","wonderlandengine","wonderland-engine","wonderland engine","wle","webxr"],"author":{"name":"Pipo"},"license":"ISC","_id":"wle-pp@0.4.4","maintainers":[{"name":"signor_pipo","email":"eliaducceschi@hotmail.it"}],"homepage":"https://github.com/SignorPipo/wle-pp","bugs":{"url":"https://github.com/SignorPipo/wle-pp/issues"},"dist":{"shasum":"44a2f1b8737b4e312b3fcfb27f8cbced412be823","tarball":"https://registry.npmjs.org/wle-pp/-/wle-pp-0.4.4.tgz","fileCount":259,"integrity":"sha512-Yany6k+LwhFA00uKwgjRsASfEjIfQyf/UoI6eiK07rdTVOtPtaOy0HlzJfUc1xG6s7mKFk+KOw+r/t4UTDgrMQ==","signatures":[{"sig":"MEUCIQDUa+eJGxBKxCIWg97McRsMR09f1bOC6bvY37huqT8mfAIgNQXD4dHVaQ+hZWNJAbHXDmsV24ouK1g4ydAqvWewwu0=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":2299334},"main":"./js/pp/index.js","type":"module","module":"./js/pp/index.js","exports":"./js/pp/index.js","gitHead":"b36601d906ca0bd424cc6d989a5ee3fa5c99d112","scripts":{"build":"node dev/build.js"},"_npmUser":{"name":"signor_pipo","email":"eliaducceschi@hotmail.it"},"repository":{"url":"git+https://github.com/SignorPipo/wle-pp.git","type":"git"},"_npmVersion":"8.18.0","description":"A library for the Wonderland Engine","directories":{},"_nodeVersion":"16.17.0","_hasShrinkwrap":false,"devDependencies":{"esbuild":"^0.14.54","esbuild-node-externals":"^1.8.0"},"peerDependencies":{"howler":"^2.2.3","gl-matrix":"^3.4.3","@wonderlandengine/api":"^1.0.1","@wonderlandengine/components":"^1.0.5"},"wonderlandengine":{},"_npmOperationalInternal":{"tmp":"tmp/wle-pp_0.4.4_1692691555926_0.2570238664376554","host":"s3://npm-registry-packages"}},"0.5.0":{"name":"wle-pp","version":"0.5.0","keywords":["pp","pipo","wonderland","wonderlandengine","wonderland-engine","wonderland engine","wle","webxr"],"author":{"name":"Pipo"},"license":"ISC","_id":"wle-pp@0.5.0","maintainers":[{"name":"signor_pipo","email":"eliaducceschi@hotmail.it"}],"homepage":"https://github.com/SignorPipo/wle-pp","bugs":{"url":"https://github.com/SignorPipo/wle-pp/issues"},"dist":{"shasum":"790f1efaf23f54f76d2d7b54372faa9cbf7bd532","tarball":"https://registry.npmjs.org/wle-pp/-/wle-pp-0.5.0.tgz","fileCount":260,"integrity":"sha512-aXFGrzdebZ7gEzWRs6tw8/oF0hluDEIGGSNnH6x6dar2eaxL8mfhDjTX1x0mzg4Ch10FsKFuQpyGiFVygaet5w==","signatures":[{"sig":"MEQCIGZjY4ESdVp8ZKXZWvBIPTcyB3q51kNckCsN/8aeKPCuAiAUAdZwMjDHyMW5qlM0C8p+KIt+OL7BVRV6OQKFKo7jFg==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":2319690},"main":"./js/pp/index.js","type":"module","module":"./js/pp/index.js","exports":"./js/pp/index.js","gitHead":"8feb2dcbbfef52954fe537e430d60a209197638f","scripts":{"build":"node dev/build.js"},"_npmUser":{"name":"signor_pipo","email":"eliaducceschi@hotmail.it"},"repository":{"url":"git+https://github.com/SignorPipo/wle-pp.git","type":"git"},"_npmVersion":"10.1.0","description":"A library for the Wonderland Engine","directories":{},"_nodeVersion":"18.18.0","_hasShrinkwrap":false,"devDependencies":{"esbuild":"^0.14.54","esbuild-node-externals":"^1.9.0"},"peerDependencies":{"howler":"^2.2.4","gl-matrix":"^3.4.3","@wonderlandengine/api":"^1.1.3","@wonderlandengine/components":"^1.0.6"},"wonderlandengine":{},"_npmOperationalInternal":{"tmp":"tmp/wle-pp_0.5.0_1697553629549_0.9622018938826968","host":"s3://npm-registry-packages"}},"0.5.1":{"name":"wle-pp","version":"0.5.1","keywords":["pp","pipo","wonderland","wonderlandengine","wonderland-engine","wonderland engine","wle","webxr"],"author":{"name":"Pipo"},"license":"ISC","_id":"wle-pp@0.5.1","maintainers":[{"name":"signor_pipo","email":"eliaducceschi@hotmail.it"}],"homepage":"https://github.com/SignorPipo/wle-pp","bugs":{"url":"https://github.com/SignorPipo/wle-pp/issues"},"dist":{"shasum":"e0130942bbbcc26934e4d7e4f5ce435f4d8ea7d2","tarball":"https://registry.npmjs.org/wle-pp/-/wle-pp-0.5.1.tgz","fileCount":260,"integrity":"sha512-pxmaXSZdLDiHovklYPFB+avkfBGrYnyNlhPO9O6lHjT7fcdSqjq38aDDCVm6PbIX42y8fkXrxGdkWpo2qH4paQ==","signatures":[{"sig":"MEQCIExXyRTQJgkamkS28X97Uf70G88yKylQtmL1WXTv1ShnAiAduU0Zbd7NWHSZJqwakrpylxIjyf9dpyCK9i7KlVTw8w==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":2319698},"main":"./js/pp/index.js","type":"module","module":"./js/pp/index.js","exports":"./js/pp/index.js","gitHead":"c79a5ca637f8f877521bfd2ec4245e79c98a5413","scripts":{"build":"node dev/build.js"},"_npmUser":{"name":"signor_pipo","email":"eliaducceschi@hotmail.it"},"repository":{"url":"git+https://github.com/SignorPipo/wle-pp.git","type":"git"},"_npmVersion":"10.1.0","description":"A library for the Wonderland Engine","directories":{},"_nodeVersion":"18.18.0","_hasShrinkwrap":false,"devDependencies":{"esbuild":"^0.14.54","esbuild-node-externals":"^1.9.0"},"peerDependencies":{"howler":"^2.2.4","gl-matrix":"^3.4.3","@wonderlandengine/api":"^1.1.3","@wonderlandengine/components":"^1.0.6"},"wonderlandengine":{},"_npmOperationalInternal":{"tmp":"tmp/wle-pp_0.5.1_1697553923973_0.24429025268620963","host":"s3://npm-registry-packages"}},"0.5.2":{"name":"wle-pp","version":"0.5.2","keywords":["pp","pipo","wonderland","wonderlandengine","wonderland-engine","wonderland engine","wle","webxr"],"author":{"name":"Pipo"},"license":"ISC","_id":"wle-pp@0.5.2","maintainers":[{"name":"signor_pipo","email":"eliaducceschi@hotmail.it"}],"homepage":"https://github.com/SignorPipo/wle-pp","bugs":{"url":"https://github.com/SignorPipo/wle-pp/issues"},"dist":{"shasum":"a10a201d339b314d5567aa450c72965225372b75","tarball":"https://registry.npmjs.org/wle-pp/-/wle-pp-0.5.2.tgz","fileCount":260,"integrity":"sha512-9LuAHuvvV/ON5wiNQvCpDL/QGm2fR7APA8B5YPp0FQ+0zFoE33TyvTalzvXy+U8w70M23BewJm0zJ6lwDR/A0g==","signatures":[{"sig":"MEUCIQDW10QiuFKKNZos9NJvBQviFUgGin0WWtbyzOmJCICgPgIgJkBYn+xIO4ip6s2+5W2ZhABj+GISTdIodg4iJRVbDDk=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":2319697},"main":"./js/pp/index.js","type":"module","module":"./js/pp/index.js","exports":"./js/pp/index.js","gitHead":"1c997013512d6581f1d5ca311d402da89fa0cc63","scripts":{"build":"node dev/build.js"},"_npmUser":{"name":"signor_pipo","email":"eliaducceschi@hotmail.it"},"repository":{"url":"git+https://github.com/SignorPipo/wle-pp.git","type":"git"},"_npmVersion":"10.1.0","description":"A library for the Wonderland Engine","directories":{},"_nodeVersion":"18.18.0","_hasShrinkwrap":false,"devDependencies":{"esbuild":"^0.19.5","esbuild-node-externals":"^1.9.0"},"peerDependencies":{"howler":"^2.2.4","gl-matrix":"^3.4.3","@wonderlandengine/api":"^1.1.3","@wonderlandengine/components":"^1.0.6"},"wonderlandengine":{},"_npmOperationalInternal":{"tmp":"tmp/wle-pp_0.5.2_1697556041086_0.05863706608136621","host":"s3://npm-registry-packages"}},"0.6.0":{"name":"wle-pp","version":"0.6.0","keywords":["pp","pipo","wonderland","wonderlandengine","wonderland-engine","wonderland engine","wle","webxr"],"author":{"name":"Pipo"},"license":"ISC","_id":"wle-pp@0.6.0","maintainers":[{"name":"signor_pipo","email":"eliaducceschi@hotmail.it"}],"homepage":"https://github.com/signorpipo/wle-pp","bugs":{"url":"https://github.com/signorpipo/wle-pp/issues"},"dist":{"shasum":"a5c380ad793866f7e6bd136cbf495c5e8c7d0544","tarball":"https://registry.npmjs.org/wle-pp/-/wle-pp-0.6.0.tgz","fileCount":849,"integrity":"sha512-Myx6514VUPC18L078WHLdMgKiSh4PyLOkaOZjrzWOtIi+LgQUX9HONAzOUvgzJdLlhZzb1oyxzZ5Qm/paHN4KA==","signatures":[{"sig":"MEUCIHQyZuUZd+FjV5xHY9TWm6Mki41mr1QsqCqBhN99C+lCAiEAuuUsoyVmy1BT0Kj0ruQ06sDjes4sLtZuSEPZO6xid9A=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":7464393},"main":"./dist/index.js","type":"module","exports":{".":"./dist/pp/index.js","./*":"./dist/pp/*","./add_type_extensions_to_typescript":"./dist/pp/plugin/add_type_extensions_to_typescript.js"},"gitHead":"e1e05a5afe19a044dbfa013937b023461cae40ea","scripts":{"build":"tsc","bundle":"node dev/build.js"},"_npmUser":{"name":"signor_pipo","email":"eliaducceschi@hotmail.it"},"repository":{"url":"git+https://github.com/signorpipo/wle-pp.git","type":"git"},"_npmVersion":"10.1.0","description":"A library for the Wonderland Engine","directories":{},"_nodeVersion":"18.18.0","_hasShrinkwrap":false,"devDependencies":{"esbuild":"0.19.5","typescript":"^5.4.5","esbuild-node-externals":"^1.13.0"},"peerDependencies":{"howler":"^2.2.4","gl-matrix":"^3.4.3","@wonderlandengine/api":"^1.1.5","@wonderlandengine/components":"^1.1.3"},"wonderlandengine":{},"_npmOperationalInternal":{"tmp":"tmp/wle-pp_0.6.0_1713365285589_0.5756815434024125","host":"s3://npm-registry-packages"}},"0.6.1":{"name":"wle-pp","version":"0.6.1","keywords":["pp","pipo","wonderland","wonderlandengine","wonderland-engine","wonderland engine","wle","webxr"],"author":{"name":"Pipo"},"license":"ISC","_id":"wle-pp@0.6.1","maintainers":[{"name":"signor_pipo","email":"eliaducceschi@hotmail.it"}],"homepage":"https://github.com/signorpipo/wle-pp","bugs":{"url":"https://github.com/signorpipo/wle-pp/issues"},"dist":{"shasum":"9fbfd9e776ecffce58b3a61708540f5ffb3fa444","tarball":"https://registry.npmjs.org/wle-pp/-/wle-pp-0.6.1.tgz","fileCount":849,"integrity":"sha512-dVuDwyyanqlN0ueGXJalEWoJMDsmlQJxhGwoBDzFTDNRSmoR/m0IHz15EN6p8vq3FWuCTgMMRdaIcmZIF/VFbQ==","signatures":[{"sig":"MEQCIBHwRlX7EnjVnyRBCd8ff3XkJUcvyhdaVq7TyYh7OY/OAiABjvZ/zONVaXq4/e9oBEu+BzDyCZlzk24VGj9AlOr8sA==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":7464394},"main":"./dist/index.js","type":"module","exports":{".":"./dist/pp/index.js","./*":"./dist/pp/*","./add_type_extensions_to_typescript.js":"./dist/pp/plugin/add_type_extensions_to_typescript.js"},"gitHead":"76334b2e274f5c03295db3e1e74ee8a32bcdfcd8","scripts":{"build":"tsc","bundle":"node dev/build.js"},"_npmUser":{"name":"signor_pipo","email":"eliaducceschi@hotmail.it"},"repository":{"url":"git+https://github.com/signorpipo/wle-pp.git","type":"git"},"_npmVersion":"10.1.0","description":"A library for the Wonderland Engine","directories":{},"_nodeVersion":"18.18.0","_hasShrinkwrap":false,"devDependencies":{"esbuild":"0.19.5","typescript":"^5.4.5","esbuild-node-externals":"^1.13.0"},"peerDependencies":{"howler":"^2.2.4","gl-matrix":"^3.4.3","@wonderlandengine/api":"^1.1.5","@wonderlandengine/components":"^1.1.3"},"wonderlandengine":{},"_npmOperationalInternal":{"tmp":"tmp/wle-pp_0.6.1_1713368463564_0.5545436905676038","host":"s3://npm-registry-packages"}},"0.6.2":{"name":"wle-pp","version":"0.6.2","keywords":["pp","pipo","wonderland","wonderlandengine","wonderland-engine","wonderland engine","wle","webxr"],"author":{"name":"Pipo"},"license":"ISC","_id":"wle-pp@0.6.2","maintainers":[{"name":"signor_pipo","email":"eliaducceschi@hotmail.it"}],"homepage":"https://github.com/signorpipo/wle-pp","bugs":{"url":"https://github.com/signorpipo/wle-pp/issues"},"dist":{"shasum":"67d94f291b27eac671d2c985be6fdb38e857111e","tarball":"https://registry.npmjs.org/wle-pp/-/wle-pp-0.6.2.tgz","fileCount":852,"integrity":"sha512-hGrVUbLi4IjRADCo1XNFwF+l4PeYJU/0JQe5O+hVcD5wul8M5zPEb6NTicz26hH3PPOxVCB8+cw0arKArUbFZg==","signatures":[{"sig":"MEUCIHEMmUVPMzari2olhFV6kDDNtwNh3NSIUTG3F33qZsmWAiEA0aBBfsP47lS0yvAPjjVo8LPdO3dN+E3ysNUE+BzW6zk=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":7464939},"main":"./dist/index.js","type":"module","exports":{".":"./dist/pp/index.js","./*":"./dist/pp/*","./add_type_extensions_to_typescript.js":"./dist/pp/plugin/add_type_extensions_to_typescript.js"},"gitHead":"6aef0626317821386d719298d60e0c0aba580f7e","scripts":{"build":"tsc","bundle":"node dev/bundler.js"},"_npmUser":{"name":"signor_pipo","email":"eliaducceschi@hotmail.it"},"repository":{"url":"git+https://github.com/signorpipo/wle-pp.git","type":"git"},"_npmVersion":"10.1.0","description":"A library for the Wonderland Engine","directories":{},"_nodeVersion":"18.18.0","_hasShrinkwrap":false,"devDependencies":{"esbuild":"0.19.5","typescript":"^5.4.5","esbuild-node-externals":"^1.13.0"},"peerDependencies":{"howler":"^2.2.4","gl-matrix":"^3.4.3","@wonderlandengine/api":"^1.1.5","@wonderlandengine/components":"^1.1.3"},"wonderlandengine":{},"_npmOperationalInternal":{"tmp":"tmp/wle-pp_0.6.2_1713445834940_0.6325869303147662","host":"s3://npm-registry-packages"}},"0.6.3":{"name":"wle-pp","version":"0.6.3","keywords":["pp","pipo","wonderland","wonderlandengine","wonderland-engine","wonderland engine","wle","webxr"],"author":{"name":"Pipo"},"license":"ISC","_id":"wle-pp@0.6.3","maintainers":[{"name":"signor_pipo","email":"eliaducceschi@hotmail.it"}],"homepage":"https://github.com/signorpipo/wle-pp","bugs":{"url":"https://github.com/signorpipo/wle-pp/issues"},"dist":{"shasum":"404d7515f6222bdd16df3e3508dc4a51dbd476f5","tarball":"https://registry.npmjs.org/wle-pp/-/wle-pp-0.6.3.tgz","fileCount":852,"integrity":"sha512-GzRamQT/HjhDb58yEjA4C4tWzF+S844nH5NZ5bfwQo0ScDk5sFcVyn6DrekZTZmN0kuwnhOGw5hZzwFuOpSFKQ==","signatures":[{"sig":"MEUCIFBI0oAMjQjYWrKmaZMeXh2Dr45BeOK0eUBZKccMfiuzAiEAlV6+5g0vG7bQBwM97zSfqe2TU3HEq4jcVlKtzVszllM=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":7466206},"main":"./dist/index.js","type":"module","exports":{".":"./dist/pp/index.js","./*":"./dist/pp/*","./add_type_extensions_to_typescript.js":"./dist/pp/plugin/add_type_extensions_to_typescript.js"},"gitHead":"b46e8246cfcf47399086d50ca828397ffdadabc8","scripts":{"build":"tsc","bundle":"node dev/bundler.js"},"_npmUser":{"name":"signor_pipo","email":"eliaducceschi@hotmail.it"},"repository":{"url":"git+https://github.com/signorpipo/wle-pp.git","type":"git"},"_npmVersion":"10.1.0","description":"A library for the Wonderland Engine","directories":{},"_nodeVersion":"18.18.0","_hasShrinkwrap":false,"devDependencies":{"esbuild":"0.19.5","typescript":"^5.4.5","esbuild-node-externals":"^1.13.0"},"peerDependencies":{"howler":"^2.2.4","gl-matrix":"^3.4.3","@wonderlandengine/api":"^1.1.5","@wonderlandengine/components":"^1.1.3"},"wonderlandengine":{},"_npmOperationalInternal":{"tmp":"tmp/wle-pp_0.6.3_1713516178811_0.5812147920172104","host":"s3://npm-registry-packages"}},"0.6.4":{"name":"wle-pp","version":"0.6.4","keywords":["pp","pipo","wonderland","wonderlandengine","wonderland-engine","wonderland engine","wle","webxr"],"author":{"name":"Pipo"},"license":"ISC","_id":"wle-pp@0.6.4","maintainers":[{"name":"signor_pipo","email":"eliaducceschi@hotmail.it"}],"homepage":"https://github.com/signorpipo/wle-pp","bugs":{"url":"https://github.com/signorpipo/wle-pp/issues"},"dist":{"shasum":"fe328546dc4134781ceff8592d6cc535e685c92c","tarball":"https://registry.npmjs.org/wle-pp/-/wle-pp-0.6.4.tgz","fileCount":864,"integrity":"sha512-Ur+UI9DkMe+YI15tVUZlK+yd9JD0KZtTVUQwwyke4b2ZLlLcrv0XuARgadwRy9/vdpUf4T1etnT8NqnFEgAehQ==","signatures":[{"sig":"MEYCIQDImV+lXc2pg8vbJuUw+GuNfwlDVoocPSb2alepKjCiKwIhAJQ9rx9FAW1QV/Xxt46M/I5sq8ZjQRm7UfdichRzNNVp","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":7515002},"main":"./dist/index.js","type":"module","exports":{".":"./dist/pp/index.js","./*":"./dist/pp/*","./add_type_extensions_to_typescript.js":"./dist/pp/plugin/add_type_extensions_to_typescript.js"},"gitHead":"08b35a65f6379271bbb02f882b4d4a287fe66a54","scripts":{"build":"tsc","bundle":"node dev/bundler.js"},"_npmUser":{"name":"signor_pipo","email":"eliaducceschi@hotmail.it"},"repository":{"url":"git+https://github.com/signorpipo/wle-pp.git","type":"git"},"_npmVersion":"10.1.0","description":"A library for the Wonderland Engine","directories":{},"_nodeVersion":"18.18.0","_hasShrinkwrap":false,"devDependencies":{"esbuild":"0.19.5","typescript":"^5.4.5","esbuild-node-externals":"^1.13.0"},"peerDependencies":{"howler":"^2.2.4","gl-matrix":"^3.4.3","@wonderlandengine/api":"^1.1.5","@wonderlandengine/components":"^1.1.3"},"wonderlandengine":{},"_npmOperationalInternal":{"tmp":"tmp/wle-pp_0.6.4_1713976875600_0.015238687126158945","host":"s3://npm-registry-packages"}},"0.6.5":{"name":"wle-pp","version":"0.6.5","keywords":["pp","pipo","wonderland","wonderlandengine","wonderland-engine","wonderland engine","wle","webxr"],"author":{"name":"Pipo"},"license":"ISC","_id":"wle-pp@0.6.5","maintainers":[{"name":"signor_pipo","email":"eliaducceschi@hotmail.it"}],"homepage":"https://github.com/signorpipo/wle-pp","bugs":{"url":"https://github.com/signorpipo/wle-pp/issues"},"dist":{"shasum":"7da309a308afa6f7c4b1637e232777e6b45ff082","tarball":"https://registry.npmjs.org/wle-pp/-/wle-pp-0.6.5.tgz","fileCount":864,"integrity":"sha512-bN2xmtDU+m90KIL4nlfPgiAlcJN3sUcKo1c7233voVhiT8nEATW9ZPWSfMOgj4npZs/I55OO2T/JdbL2FLLqlA==","signatures":[{"sig":"MEUCIEUw/KvZtXJEOsoUiUpr1IJA38ZFCjpOW3ILSvf46WhXAiEAiwV3FswcKKm/MXR03//rrZIJlj3wi+xRp1ENoor2O/o=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":7526388},"main":"./dist/index.js","type":"module","exports":{".":"./dist/pp/index.js","./*":"./dist/pp/*","./add_type_extensions_to_typescript.js":"./dist/pp/plugin/add_type_extensions_to_typescript.js"},"gitHead":"d95a215a73ff4214658561fa8134121d1ac27a62","scripts":{"build":"tsc","bundle":"node dev/bundler.js"},"_npmUser":{"name":"signor_pipo","email":"eliaducceschi@hotmail.it"},"repository":{"url":"git+https://github.com/signorpipo/wle-pp.git","type":"git"},"_npmVersion":"10.1.0","description":"A library for the Wonderland Engine","directories":{},"_nodeVersion":"18.18.0","_hasShrinkwrap":false,"devDependencies":{"esbuild":"0.19.5","typescript":"^5.4.5","esbuild-node-externals":"^1.13.0"},"peerDependencies":{"howler":"^2.2.4","gl-matrix":"^3.4.3","@wonderlandengine/api":"^1.1.5","@wonderlandengine/components":"^1.1.3"},"wonderlandengine":{},"_npmOperationalInternal":{"tmp":"tmp/wle-pp_0.6.5_1714646138136_0.9872076140686945","host":"s3://npm-registry-packages"}},"0.6.6":{"name":"wle-pp","version":"0.6.6","keywords":["pp","pipo","wonderland","wonderlandengine","wonderland-engine","wonderland engine","wle","webxr"],"author":{"name":"Pipo"},"license":"ISC","_id":"wle-pp@0.6.6","maintainers":[{"name":"signor_pipo","email":"eliaducceschi@hotmail.it"}],"homepage":"https://github.com/signorpipo/wle-pp","bugs":{"url":"https://github.com/signorpipo/wle-pp/issues"},"dist":{"shasum":"d88bf2090913b78ee249be64f2ee2cacaa624af6","tarball":"https://registry.npmjs.org/wle-pp/-/wle-pp-0.6.6.tgz","fileCount":876,"integrity":"sha512-Ji3NVtFnaFuvYfrQ7QxmML/ZaXw+ETjQjAwY1ogO/bR6DFKsRd1G+QKQVU3Y5Cy7cNwrnC0hMGTdnhTUdkvJcA==","signatures":[{"sig":"MEUCIAk/Wb33hacyzmMPHnrjRgkZlZnTZB+rDwpHXAK/wK1AAiEAw/Z1sdPwSLPGbxVgzrAJ7TM0B6F8FLz2OdJDED/8nQ0=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":7624282},"main":"./dist/index.js","type":"module","exports":{".":"./dist/pp/index.js","./*":"./dist/pp/*","./add_type_extensions_to_typescript.js":"./dist/pp/plugin/add_type_extensions_to_typescript.js"},"gitHead":"1734ea6065adfc17cd521d49904be17329a1c052","scripts":{"build":"tsc","bundle":"node dev/bundler.js"},"_npmUser":{"name":"signor_pipo","email":"eliaducceschi@hotmail.it"},"repository":{"url":"git+https://github.com/signorpipo/wle-pp.git","type":"git"},"_npmVersion":"10.1.0","description":"A library for the Wonderland Engine","directories":{},"_nodeVersion":"18.18.0","_hasShrinkwrap":false,"devDependencies":{"esbuild":"0.19.5","typescript":"^5.4.5","esbuild-node-externals":"^1.13.0"},"peerDependencies":{"howler":"^2.2.4","gl-matrix":"^3.4.3","@wonderlandengine/api":"^1.1.5","@wonderlandengine/components":"^1.1.3"},"wonderlandengine":{},"_npmOperationalInternal":{"tmp":"tmp/wle-pp_0.6.6_1715097132409_0.3860786785852097","host":"s3://npm-registry-packages"}},"0.6.7":{"name":"wle-pp","version":"0.6.7","keywords":["pp","pipo","wonderland","wonderlandengine","wonderland-engine","wonderland engine","wle","webxr"],"author":{"name":"Pipo"},"license":"ISC","_id":"wle-pp@0.6.7","maintainers":[{"name":"signor_pipo","email":"eliaducceschi@hotmail.it"}],"homepage":"https://github.com/signorpipo/wle-pp","bugs":{"url":"https://github.com/signorpipo/wle-pp/issues"},"dist":{"shasum":"32cb647df639f9d6654b9c21e91d5a1021406581","tarball":"https://registry.npmjs.org/wle-pp/-/wle-pp-0.6.7.tgz","fileCount":876,"integrity":"sha512-eb2qx7/tXVSUb0DXG5xAsr4D+PnuAvKNKohXCHK7dreyXciZhQFnforTzHgZv952CTZ2HAatOXBUqJsNIE09Eg==","signatures":[{"sig":"MEUCIQClBpbORYIKY50KsKohE3DxMGWF7idgiTsArOgrJzQ6HwIgOyO2d5lrSjCDmjKF89mL7nfLhLKixs5iIYdzbXV0L34=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":7626610},"main":"./dist/index.js","type":"module","exports":{".":"./dist/pp/index.js","./*":"./dist/pp/*","./add_type_extensions_to_typescript.js":"./dist/pp/plugin/add_type_extensions_to_typescript.js"},"gitHead":"1df204df46b7549f616cd0def360443ce431e98b","scripts":{"build":"tsc","bundle":"node dev/bundler.js"},"_npmUser":{"name":"signor_pipo","email":"eliaducceschi@hotmail.it"},"repository":{"url":"git+https://github.com/signorpipo/wle-pp.git","type":"git"},"_npmVersion":"10.1.0","description":"A library for the Wonderland Engine","directories":{},"_nodeVersion":"18.18.0","_hasShrinkwrap":false,"devDependencies":{"esbuild":"0.19.5","typescript":"^5.4.5","esbuild-node-externals":"^1.13.0"},"peerDependencies":{"howler":"^2.2.4","gl-matrix":"^3.4.3","@wonderlandengine/api":"^1.1.5","@wonderlandengine/components":"^1.1.3"},"wonderlandengine":{},"_npmOperationalInternal":{"tmp":"tmp/wle-pp_0.6.7_1715172673926_0.6590649431729252","host":"s3://npm-registry-packages"}},"0.6.8":{"name":"wle-pp","version":"0.6.8","keywords":["pp","pipo","wonderland","wonderlandengine","wonderland-engine","wonderland engine","wle","webxr"],"author":{"name":"Pipo"},"license":"ISC","_id":"wle-pp@0.6.8","maintainers":[{"name":"signor_pipo","email":"eliaducceschi@hotmail.it"}],"homepage":"https://github.com/signorpipo/wle-pp","bugs":{"url":"https://github.com/signorpipo/wle-pp/issues"},"dist":{"shasum":"d23a83e6d320b9b909189820f9eb41824a502da9","tarball":"https://registry.npmjs.org/wle-pp/-/wle-pp-0.6.8.tgz","fileCount":891,"integrity":"sha512-smbc9lkMLB8uTYjCFA1a+iI9QGugR5X8Gepg4WMegEAwvJ9L32tjDNSrsfQ3iFvl44eRJcmh2gbi3CK6XfnEpw==","signatures":[{"sig":"MEUCIDjaWpztFYq4NbKgwqAHcSr+n3bcCAeJZ+8QZhRPzCfaAiEAjSLAeS/RQVAuhgNMMxegjdQBIwXvbirF3f4m76WbDMM=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":7690239},"main":"./dist/index.js","type":"module","exports":{".":"./dist/pp/index.js","./*":"./dist/pp/*","./add_type_extensions_to_typescript.js":"./dist/pp/plugin/add_type_extensions_to_typescript.js"},"gitHead":"f7bbeae8cbd166553376ac741523e8d653677456","scripts":{"build":"tsc","bundle":"node dev/bundler.js"},"_npmUser":{"name":"signor_pipo","email":"eliaducceschi@hotmail.it"},"repository":{"url":"git+https://github.com/signorpipo/wle-pp.git","type":"git"},"_npmVersion":"10.1.0","description":"A library for the Wonderland Engine","directories":{},"_nodeVersion":"18.18.0","_hasShrinkwrap":false,"devDependencies":{"esbuild":"0.19.5","typescript":"^5.4.5","esbuild-node-externals":"^1.13.0"},"peerDependencies":{"howler":"^2.2.4","gl-matrix":"^3.4.3","@wonderlandengine/api":"^1.1.5","@wonderlandengine/components":"^1.1.3"},"wonderlandengine":{},"_npmOperationalInternal":{"tmp":"tmp/wle-pp_0.6.8_1715787059231_0.8200009669620989","host":"s3://npm-registry-packages"}},"0.6.9":{"name":"wle-pp","version":"0.6.9","keywords":["pp","pipo","wonderland","wonderlandengine","wonderland-engine","wonderland engine","wle","webxr"],"author":{"name":"Pipo"},"license":"ISC","_id":"wle-pp@0.6.9","maintainers":[{"name":"signor_pipo","email":"eliaducceschi@hotmail.it"}],"homepage":"https://github.com/signorpipo/wle-pp","bugs":{"url":"https://github.com/signorpipo/wle-pp/issues"},"dist":{"shasum":"6798f1e767686efbb5e5a141a2d65b98be605b46","tarball":"https://registry.npmjs.org/wle-pp/-/wle-pp-0.6.9.tgz","fileCount":915,"integrity":"sha512-Y7JOXMoRGBnlb1HIUxy/NXs8eZzTRCGUs7fAVghwOiBB/HmloxxHbqGHkHQW9vX2cYDzLGzuq3QFKvqrlaZaHg==","signatures":[{"sig":"MEUCIDg1agNUMIhuAv4nRrWhWwcMo52ySvxTez3MxSZotv4MAiEAupUdjx3XzrI91TY/xddjsNLgQTOtfkNn3SwDeoGvR3I=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":7944254},"main":"./dist/index.js","type":"module","exports":{".":"./dist/pp/index.js","./*":"./dist/pp/*","./add_type_extensions_to_typescript.js":"./dist/pp/plugin/add_type_extensions_to_typescript.js"},"gitHead":"1c35a79cd10130a141ead82fd7ad63d95bdee8aa","scripts":{"build":"tsc","bundle":"node dev/bundler.js"},"_npmUser":{"name":"signor_pipo","email":"eliaducceschi@hotmail.it"},"repository":{"url":"git+https://github.com/signorpipo/wle-pp.git","type":"git"},"_npmVersion":"10.1.0","description":"A library for the Wonderland Engine","directories":{},"_nodeVersion":"18.18.0","_hasShrinkwrap":false,"devDependencies":{"esbuild":"0.19.5","typescript":"^5.4.5","esbuild-node-externals":"^1.13.0"},"peerDependencies":{"howler":"^2.2.4","gl-matrix":"^3.4.3","@wonderlandengine/api":"^1.1.5","@wonderlandengine/components":"^1.1.3"},"wonderlandengine":{},"_npmOperationalInternal":{"tmp":"tmp/wle-pp_0.6.9_1718008398827_0.2883575881062237","host":"s3://npm-registry-packages"}},"0.6.10":{"name":"wle-pp","version":"0.6.10","keywords":["pp","pipo","wonderland","wonderlandengine","wonderland-engine","wonderland engine","wle","webxr"],"author":{"name":"Pipo"},"license":"ISC","_id":"wle-pp@0.6.10","maintainers":[{"name":"signor_pipo","email":"eliaducceschi@hotmail.it"}],"homepage":"https://github.com/signorpipo/wle-pp","bugs":{"url":"https://github.com/signorpipo/wle-pp/issues"},"dist":{"shasum":"a3b61346dd5d1f3fe1618fb2bdea23f2341fabdf","tarball":"https://registry.npmjs.org/wle-pp/-/wle-pp-0.6.10.tgz","fileCount":915,"integrity":"sha512-ZmZv8w8FiWafTI9uFjXev1QSnwUG/a1Srx1vamvD1aVUxAj/Ziab9iH4dxK0sOhzgHICdO9V3DJhpi7hZiiHZg==","signatures":[{"sig":"MEYCIQCjT0b4WyNtuy6X3xM1lNGRmSMezIpYZlqCUgBn3MDh2AIhAOqKVSTZtWba+gMKvoqYOnzqke8O0LXhvcOnFBJ9q5ec","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":7946745},"main":"./dist/index.js","type":"module","exports":{".":"./dist/pp/index.js","./*":"./dist/pp/*","./add_type_extensions_to_typescript.js":"./dist/pp/plugin/add_type_extensions_to_typescript.js"},"gitHead":"d7bf294724c14067c6fdc701a74b21fbe5c0692b","scripts":{"build":"tsc","bundle":"node dev/bundler.js"},"_npmUser":{"name":"signor_pipo","email":"eliaducceschi@hotmail.it"},"repository":{"url":"git+https://github.com/signorpipo/wle-pp.git","type":"git"},"_npmVersion":"10.1.0","description":"A library for the Wonderland Engine","directories":{},"_nodeVersion":"18.18.0","_hasShrinkwrap":false,"devDependencies":{"esbuild":"0.19.5","typescript":"^5.4.5","esbuild-node-externals":"^1.13.0"},"peerDependencies":{"howler":"^2.2.4","gl-matrix":"^3.4.3","@wonderlandengine/api":"^1.1.5","@wonderlandengine/components":"^1.1.3"},"wonderlandengine":{},"_npmOperationalInternal":{"tmp":"tmp/wle-pp_0.6.10_1718013250423_0.16098946695718186","host":"s3://npm-registry-packages"}},"0.6.11":{"name":"wle-pp","version":"0.6.11","keywords":["pp","pipo","wonderland","wonderlandengine","wonderland-engine","wonderland engine","wle","webxr"],"author":{"name":"Pipo"},"license":"ISC","_id":"wle-pp@0.6.11","maintainers":[{"name":"signor_pipo","email":"eliaducceschi@hotmail.it"}],"homepage":"https://github.com/signorpipo/wle-pp","bugs":{"url":"https://github.com/signorpipo/wle-pp/issues"},"dist":{"shasum":"d95eb7e1f7847ff5135831fea89560da587121b0","tarball":"https://registry.npmjs.org/wle-pp/-/wle-pp-0.6.11.tgz","fileCount":921,"integrity":"sha512-wjw44L+x+Mwq21VatiLF/lsk/iRn9QQPSIr1r/gJWKgkl5Rs5SADmF7X8nW3WX28eXYxLZaHT/XUY/A7HVDFPQ==","signatures":[{"sig":"MEUCIQDNWtTp5lzzS8x2GwB2aDgIphlpI6APJ+R/puvTGFU9NQIgRFj7wOS0awghUzNtv5WhZVIBG4uaJb5jw58s9Ha638w=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":8054095},"main":"./dist/index.js","type":"module","exports":{".":"./dist/pp/index.js","./*":"./dist/pp/*","./add_type_extensions_to_typescript.js":"./dist/pp/plugin/add_type_extensions_to_typescript.js"},"gitHead":"019ac82b2081241f7c6e17ad3f0ed1c3bff20210","scripts":{"build":"tsc","bundle":"node dev/bundler.js"},"_npmUser":{"name":"signor_pipo","email":"eliaducceschi@hotmail.it"},"repository":{"url":"git+https://github.com/signorpipo/wle-pp.git","type":"git"},"_npmVersion":"10.1.0","description":"A library for the Wonderland Engine","directories":{},"_nodeVersion":"18.18.0","_hasShrinkwrap":false,"devDependencies":{"esbuild":"0.19.5","typescript":"^5.4.5","esbuild-node-externals":"^1.13.0"},"peerDependencies":{"howler":"^2.2.4","gl-matrix":"^3.4.3","@wonderlandengine/api":"^1.1.5","@wonderlandengine/components":"^1.1.3"},"wonderlandengine":{},"_npmOperationalInternal":{"tmp":"tmp/wle-pp_0.6.11_1718612741665_0.22052032315543002","host":"s3://npm-registry-packages"}},"0.6.12":{"name":"wle-pp","version":"0.6.12","keywords":["pp","pipo","wonderland","wonderlandengine","wonderland-engine","wonderland engine","wle","webxr"],"author":{"name":"Pipo"},"license":"ISC","_id":"wle-pp@0.6.12","maintainers":[{"name":"signor_pipo","email":"eliaducceschi@hotmail.it"}],"homepage":"https://github.com/signorpipo/wle-pp","bugs":{"url":"https://github.com/signorpipo/wle-pp/issues"},"dist":{"shasum":"a3d65a6c8694ef8e92a9354dfb8ce6471e976615","tarball":"https://registry.npmjs.org/wle-pp/-/wle-pp-0.6.12.tgz","fileCount":921,"integrity":"sha512-e9mmPap0Vly47i7/rLxomIApgOA/ZmT66Air34jkQBBM1jBHoHbL/O7sjPaqOzcE5ko3KcvSR8fC1vqtjoASTg==","signatures":[{"sig":"MEUCIQDGcI6QV2CsdcWW0QdF2gL5aNH1J8ywEzqpeTlXE+tVzQIgOFHTINFipQPoe5cYJ6I6VMepeslK4qv2XGbdA3jnHIA=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":8054163},"main":"./dist/index.js","type":"module","exports":{".":"./dist/pp/index.js","./*":"./dist/pp/*","./add_type_extensions_to_typescript.js":"./dist/pp/plugin/add_type_extensions_to_typescript.js"},"gitHead":"94ad98c9fd948f77b40b0d901b7b7c772dbcdaf5","scripts":{"build":"tsc","bundle":"node dev/bundler.js"},"_npmUser":{"name":"signor_pipo","email":"eliaducceschi@hotmail.it"},"repository":{"url":"git+https://github.com/signorpipo/wle-pp.git","type":"git"},"_npmVersion":"10.1.0","description":"A library for the Wonderland Engine","directories":{},"_nodeVersion":"18.18.0","_hasShrinkwrap":false,"devDependencies":{"esbuild":"0.19.5","typescript":"^5.4.5","esbuild-node-externals":"^1.13.0"},"peerDependencies":{"howler":"^2.2.4","gl-matrix":"^3.4.3","@wonderlandengine/api":"^1.1.5","@wonderlandengine/components":"^1.1.3"},"wonderlandengine":{},"_npmOperationalInternal":{"tmp":"tmp/wle-pp_0.6.12_1718613661474_0.41800402432847106","host":"s3://npm-registry-packages"}},"0.6.13":{"name":"wle-pp","version":"0.6.13","keywords":["pp","pipo","wonderland","wonderlandengine","wonderland-engine","wonderland engine","wle","webxr"],"author":{"name":"Pipo"},"license":"ISC","_id":"wle-pp@0.6.13","maintainers":[{"name":"signor_pipo","email":"eliaducceschi@hotmail.it"}],"homepage":"https://github.com/signorpipo/wle-pp","bugs":{"url":"https://github.com/signorpipo/wle-pp/issues"},"dist":{"shasum":"4929c0c82e370fc54f2eb14c5577f6bb7dde1590","tarball":"https://registry.npmjs.org/wle-pp/-/wle-pp-0.6.13.tgz","fileCount":921,"integrity":"sha512-WN2yKtuRxtVOIg+Di2LS8vhV07lN1Hfjoi4GDI044SGcEkvZW0jElr7QuptHQALXNCgReH3/L3Edmjl55Gb+rg==","signatures":[{"sig":"MEQCIDFgXy7rSUGwzCBHNbKg0qyJBjSsX4Mk7HqXfi+gV1+cAiAtCdR2qrCRrTo53XaFtguAKSU+Ss/qFQ7aJw9X108tXQ==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":8054166},"main":"./dist/index.js","type":"module","exports":{".":"./dist/pp/index.js","./*":"./dist/pp/*","./add_type_extensions_to_typescript.js":"./dist/pp/plugin/add_type_extensions_to_typescript.js"},"gitHead":"cfcebc3134d5e550450372b89684db3999bdabea","scripts":{"build":"tsc","bundle":"node dev/bundler.js"},"_npmUser":{"name":"signor_pipo","email":"eliaducceschi@hotmail.it"},"repository":{"url":"git+https://github.com/signorpipo/wle-pp.git","type":"git"},"_npmVersion":"10.1.0","description":"A library for the Wonderland Engine","directories":{},"_nodeVersion":"18.18.0","_hasShrinkwrap":false,"devDependencies":{"esbuild":"0.19.5","typescript":"^5.4.5","esbuild-node-externals":"^1.13.0"},"peerDependencies":{"howler":"^2.2.4","gl-matrix":"^3.4.3","@wonderlandengine/api":"^1.1.5","@wonderlandengine/components":"^1.1.3"},"wonderlandengine":{},"_npmOperationalInternal":{"tmp":"tmp/wle-pp_0.6.13_1718614128009_0.3854811210676412","host":"s3://npm-registry-packages"}},"0.6.14":{"name":"wle-pp","version":"0.6.14","keywords":["pp","pipo","wonderland","wonderlandengine","wonderland-engine","wonderland engine","wle","webxr"],"author":{"name":"Pipo"},"license":"ISC","_id":"wle-pp@0.6.14","maintainers":[{"name":"signor_pipo","email":"eliaducceschi@hotmail.it"}],"homepage":"https://github.com/signorpipo/wle-pp","bugs":{"url":"https://github.com/signorpipo/wle-pp/issues"},"dist":{"shasum":"fa3bd22d8ae7373ba95d358c94ecdd4d97d0f4fa","tarball":"https://registry.npmjs.org/wle-pp/-/wle-pp-0.6.14.tgz","fileCount":921,"integrity":"sha512-iTLWpKpQdWHkBide083H2DLKOJ9pEBwzTiNi0hG3wPEHM9Jsxs1QNwkXegeG4U8e1KS0DQ1VTGHpROVEgaE0Kg==","signatures":[{"sig":"MEUCIH9dWjSRiWrS43Pe8JKFshmt6AUD5qk9tHe+Qe+DGFzoAiEArB62RIYEkmNpstDG5p3BkgaHNr6YWyjJxO/8xoPLvHY=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":8053878},"main":"./dist/index.js","type":"module","exports":{".":"./dist/pp/index.js","./*":"./dist/pp/*","./add_type_extensions_to_typescript.js":"./dist/pp/plugin/add_type_extensions_to_typescript.js"},"gitHead":"3c9cfe31c322844c383a974548be81f4103f9d5c","scripts":{"build":"tsc","bundle":"node dev/bundler.js"},"_npmUser":{"name":"signor_pipo","email":"eliaducceschi@hotmail.it"},"repository":{"url":"git+https://github.com/signorpipo/wle-pp.git","type":"git"},"_npmVersion":"10.1.0","description":"A library for the Wonderland Engine","directories":{},"_nodeVersion":"18.18.0","_hasShrinkwrap":false,"devDependencies":{"esbuild":"0.19.5","typescript":"^5.4.5","esbuild-node-externals":"^1.13.0"},"peerDependencies":{"howler":"^2.2.4","gl-matrix":"^3.4.3","@wonderlandengine/api":"^1.1.5","@wonderlandengine/components":"^1.1.3"},"wonderlandengine":{},"_npmOperationalInternal":{"tmp":"tmp/wle-pp_0.6.14_1718615247339_0.8916446557387425","host":"s3://npm-registry-packages"}},"0.6.15":{"name":"wle-pp","version":"0.6.15","keywords":["pp","pipo","wonderland","wonderlandengine","wonderland-engine","wonderland engine","wle","webxr"],"author":{"name":"Pipo"},"license":"ISC","_id":"wle-pp@0.6.15","maintainers":[{"name":"signor_pipo","email":"eliaducceschi@hotmail.it"}],"homepage":"https://github.com/signorpipo/wle-pp","bugs":{"url":"https://github.com/signorpipo/wle-pp/issues"},"dist":{"shasum":"b606abc6b2169c28a16f55d44e2f3e7475ad9a4b","tarball":"https://registry.npmjs.org/wle-pp/-/wle-pp-0.6.15.tgz","fileCount":921,"integrity":"sha512-CCrgAgRDci0k4hncXmxszq2h/UeXE1bSEDF8qp7rtHpvW/IdUOo6exfsu5gxZfGxk1RRx/TZL8oykOxo3y0WQQ==","signatures":[{"sig":"MEYCIQCW+R4c2lS465fINY9OeNV+Z7IglmsAqCMGeTaH+KcRpAIhAIkq5ld+GAEsoWa/8cQxLPmg0gd8V1uUq4Dvd0m2cHuJ","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":8062769},"main":"./dist/index.js","type":"module","exports":{".":"./dist/pp/index.js","./*":"./dist/pp/*","./add_type_extensions_to_typescript.js":"./dist/pp/plugin/add_type_extensions_to_typescript.js"},"gitHead":"bcc2cf480a1371a3785aa5b700ab66ef152fe79f","scripts":{"build":"tsc","bundle":"node dev/bundler.js"},"_npmUser":{"name":"signor_pipo","email":"eliaducceschi@hotmail.it"},"repository":{"url":"git+https://github.com/signorpipo/wle-pp.git","type":"git"},"_npmVersion":"10.1.0","description":"A library for the Wonderland Engine","directories":{},"_nodeVersion":"18.18.0","_hasShrinkwrap":false,"devDependencies":{"esbuild":"0.19.5","typescript":"^5.4.5","esbuild-node-externals":"^1.13.0"},"peerDependencies":{"howler":"^2.2.4","gl-matrix":"^3.4.3","@wonderlandengine/api":"^1.1.5","@wonderlandengine/components":"^1.1.3"},"wonderlandengine":{},"_npmOperationalInternal":{"tmp":"tmp/wle-pp_0.6.15_1718788349198_0.4123987553542743","host":"s3://npm-registry-packages"}},"0.6.16":{"name":"wle-pp","version":"0.6.16","keywords":["pp","pipo","wonderland","wonderlandengine","wonderland-engine","wonderland engine","wle","webxr"],"author":{"name":"Pipo"},"license":"ISC","_id":"wle-pp@0.6.16","maintainers":[{"name":"signor_pipo","email":"eliaducceschi@hotmail.it"}],"homepage":"https://github.com/signorpipo/wle-pp","bugs":{"url":"https://github.com/signorpipo/wle-pp/issues"},"dist":{"shasum":"eb98190b57c679961b784afa14a56c890adb3297","tarball":"https://registry.npmjs.org/wle-pp/-/wle-pp-0.6.16.tgz","fileCount":915,"integrity":"sha512-FB6fnaG8SvSjKe8KNSBhAgHnJgK/UAmvWlwzl1k2o8/YSQjhjrb0b3Iu5IK993SJMR6LyRB2x1NQ+aGJ95043Q==","signatures":[{"sig":"MEUCIGDfKi5pt8KtP3KBu/fY3YXSzk9sggvsjJ5j3OdzZqVOAiEAojoDVCQHcJIlTIzW/l154Nzk5GQyPaBTJLj/5TaNDNk=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":8196076},"main":"./dist/index.js","type":"module","exports":{".":"./dist/pp/index.js","./*":"./dist/pp/*","./add_type_extensions_to_typescript.js":"./dist/pp/plugin/add_type_extensions_to_typescript.js"},"gitHead":"a34cd08f0b8a6d36e33e1de0653d529c0e254e73","scripts":{"build":"tsc","bundle":"node dev/bundler.js"},"_npmUser":{"name":"signor_pipo","email":"eliaducceschi@hotmail.it"},"repository":{"url":"git+https://github.com/signorpipo/wle-pp.git","type":"git"},"_npmVersion":"10.1.0","description":"A library for the Wonderland Engine","directories":{},"_nodeVersion":"18.18.0","_hasShrinkwrap":false,"devDependencies":{"esbuild":"0.19.5","typescript":"^5.4.5","esbuild-node-externals":"^1.13.0"},"peerDependencies":{"howler":"^2.2.4","gl-matrix":"^3.4.3","@wonderlandengine/api":"^1.1.5","@wonderlandengine/components":"^1.1.3"},"wonderlandengine":{},"_npmOperationalInternal":{"tmp":"tmp/wle-pp_0.6.16_1720705921092_0.7738324196355604","host":"s3://npm-registry-packages"}},"0.6.17":{"name":"wle-pp","version":"0.6.17","keywords":["pp","pipo","wonderland","wonderlandengine","wonderland-engine","wonderland engine","wle","webxr"],"author":{"name":"Pipo"},"license":"ISC","_id":"wle-pp@0.6.17","maintainers":[{"name":"signor_pipo","email":"eliaducceschi@hotmail.it"}],"homepage":"https://github.com/signorpipo/wle-pp","bugs":{"url":"https://github.com/signorpipo/wle-pp/issues"},"dist":{"shasum":"1fcaf2ddf4d3d962387fb283d44cb17f6cd611d0","tarball":"https://registry.npmjs.org/wle-pp/-/wle-pp-0.6.17.tgz","fileCount":927,"integrity":"sha512-f57jZVFSbUKWuJafBaZRTdQvUiWi2ID/jdI9YjIFtsWd9iscEjC0P5X26s2WAXvkkeJcTbUbCHy9Im2UldqMIA==","signatures":[{"sig":"MEYCIQCuJoXmqvOuRAZ+V+ZYzE4zaZQXnyb5R2K8j0y8poItfgIhAPuYvvADs4I2jLKmfO2aZu5PS4wn7KcbVpKG5D/jEzO6","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":8339625},"main":"./dist/index.js","type":"module","exports":{".":"./dist/pp/index.js","./*":"./dist/pp/*","./add_type_extensions_to_typescript.js":"./dist/pp/plugin/add_type_extensions_to_typescript.js"},"gitHead":"e963b358cb8cffd1627f1934e0666da17da85cc1","scripts":{"build":"tsc","bundle":"node dev/bundler.js"},"_npmUser":{"name":"signor_pipo","email":"eliaducceschi@hotmail.it"},"repository":{"url":"git+https://github.com/signorpipo/wle-pp.git","type":"git"},"_npmVersion":"10.1.0","description":"A library for the Wonderland Engine","directories":{},"_nodeVersion":"18.18.0","_hasShrinkwrap":false,"devDependencies":{"esbuild":"0.19.5","typescript":"^5.4.5","esbuild-node-externals":"^1.13.0"},"peerDependencies":{"howler":"^2.2.4","gl-matrix":"^3.4.3","@wonderlandengine/api":"^1.1.5","@wonderlandengine/components":"^1.1.3"},"wonderlandengine":{},"_npmOperationalInternal":{"tmp":"tmp/wle-pp_0.6.17_1722436803280_0.0747429978384675","host":"s3://npm-registry-packages"}},"0.7.0":{"name":"wle-pp","version":"0.7.0","keywords":["pp","pipo","wonderland","wonderlandengine","wonderland-engine","wonderland engine","wle","webxr"],"author":{"name":"Pipo"},"license":"ISC","_id":"wle-pp@0.7.0","maintainers":[{"name":"signor_pipo","email":"eliaducceschi@hotmail.it"}],"homepage":"https://github.com/signorpipo/wle-pp","bugs":{"url":"https://github.com/signorpipo/wle-pp/issues"},"dist":{"shasum":"533e3e7334c1383bebf11126be3b715cbc41f679","tarball":"https://registry.npmjs.org/wle-pp/-/wle-pp-0.7.0.tgz","fileCount":933,"integrity":"sha512-7xId05Ww7mUaz2TNVGJiB6vUxTphHKlAl+aWhFLFiivFGyD+AULBpPgStIyKA5HmwTKXGQF+JtEVzaivJvhx/A==","signatures":[{"sig":"MEUCIB33nSb7g4FuoqygJqlhYdOwHTHmIpEKOLL/gJpTaMl8AiEA/Cmd1fCii4TPVDnnxqdPI4eyC0irXAK1VOAZcBMXV9o=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":8712572},"main":"./dist/index.js","type":"module","exports":{".":"./dist/pp/index.js","./*":"./dist/pp/*","./add_type_extensions_to_typescript.js":"./dist/pp/plugin/add_type_extensions_to_typescript.js"},"gitHead":"2f4aba925f995d7fff4f37a2bae06a7012027eda","scripts":{"build":"tsc","bundle":"node dev/bundler.js"},"_npmUser":{"name":"signor_pipo","email":"eliaducceschi@hotmail.it"},"repository":{"url":"git+https://github.com/signorpipo/wle-pp.git","type":"git"},"_npmVersion":"10.1.0","description":"A library for the Wonderland Engine","directories":{},"_nodeVersion":"18.18.0","_hasShrinkwrap":false,"devDependencies":{"esbuild":"^0.24.0","typescript":"^5.6.3","esbuild-node-externals":"^1.15.0"},"peerDependencies":{"howler":"^2.2.4","gl-matrix":"^3.4.3","@wonderlandengine/api":"~1.2.4","@wonderlandengine/components":"~1.1.5"},"wonderlandengine":{},"_npmOperationalInternal":{"tmp":"tmp/wle-pp_0.7.0_1731174378736_0.7229515896734195","host":"s3://npm-registry-packages"}},"0.7.1":{"name":"wle-pp","version":"0.7.1","keywords":["pp","pipo","wonderland","wonderlandengine","wonderland-engine","wonderland engine","wle","webxr"],"author":{"name":"Pipo"},"license":"ISC","_id":"wle-pp@0.7.1","maintainers":[{"name":"signor_pipo","email":"eliaducceschi@hotmail.it"}],"homepage":"https://github.com/signorpipo/wle-pp","bugs":{"url":"https://github.com/signorpipo/wle-pp/issues"},"dist":{"shasum":"d98ca5b9188c6a88a8c654d4165f2f9caafae887","tarball":"https://registry.npmjs.org/wle-pp/-/wle-pp-0.7.1.tgz","fileCount":933,"integrity":"sha512-164neSl4ZpWldL0VYtoSPa5ME7wJQwF7tH91aMobJb36KVrumlfdeuIJHKEeJkNyjY8XNn9PxAGpDyEo7wq2AA==","signatures":[{"sig":"MEYCIQCKU/TcvGagDU9LtLdm9djRM2zFC1sijVq4u7VxNmU9pgIhAP+YPJIrI5WPAjE1fdvZzgvjuaqJPHYEyA5BPSPF4K3w","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":8713486},"main":"./dist/index.js","type":"module","exports":{".":"./dist/pp/index.js","./*":"./dist/pp/*","./add_type_extensions_to_typescript.js":"./dist/pp/plugin/add_type_extensions_to_typescript.js"},"gitHead":"8ce386a4c9aa5ad553afe9fef6e1747969b8a73d","scripts":{"build":"tsc","bundle":"node dev/bundler.js"},"_npmUser":{"name":"signor_pipo","email":"eliaducceschi@hotmail.it"},"repository":{"url":"git+https://github.com/signorpipo/wle-pp.git","type":"git"},"_npmVersion":"10.1.0","description":"A library for the Wonderland Engine","directories":{},"_nodeVersion":"18.18.0","_hasShrinkwrap":false,"devDependencies":{"esbuild":"^0.24.0","typescript":"^5.6.3","esbuild-node-externals":"^1.15.0"},"peerDependencies":{"howler":"^2.2.4","gl-matrix":"^3.4.3","@wonderlandengine/api":"~1.2.4","@wonderlandengine/components":"~1.1.5"},"wonderlandengine":{},"_npmOperationalInternal":{"tmp":"tmp/wle-pp_0.7.1_1731177864577_0.5326130158018336","host":"s3://npm-registry-packages"}},"0.7.2":{"name":"wle-pp","version":"0.7.2","keywords":["pp","pipo","wonderland","wonderlandengine","wonderland-engine","wonderland engine","wle","webxr"],"author":{"name":"Pipo"},"license":"ISC","_id":"wle-pp@0.7.2","maintainers":[{"name":"signor_pipo","email":"eliaducceschi@hotmail.it"}],"homepage":"https://github.com/signorpipo/wle-pp","bugs":{"url":"https://github.com/signorpipo/wle-pp/issues"},"dist":{"shasum":"38fd85d41c07f01b83aabefa5fb53a7ae50cd551","tarball":"https://registry.npmjs.org/wle-pp/-/wle-pp-0.7.2.tgz","fileCount":936,"integrity":"sha512-XKZ4eGGsMXf3GrbqNbUMAV8BbfyIRa4b0hPLYJMZbBWZmgb9A0McOuQfOti0KrNKTAjYeiTjoi3XHKPvGYvHeQ==","signatures":[{"sig":"MEUCIQCZGtJrbXDIeMUd4/S0RaxPbAAweh6B4EXogY+yrJNQhAIgZDfvek9J8rbQQiBuMomlvJOw5gUOb+hKdzlt56K1RGQ=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":8731648},"main":"./dist/index.js","type":"module","exports":{".":"./dist/pp/index.js","./*":"./dist/pp/*","./add_type_extensions_to_typescript.js":"./dist/pp/plugin/add_type_extensions_to_typescript.js"},"gitHead":"b91c55bfd2990d21da14d9a2414390ecd3750501","scripts":{"build":"tsc","bundle":"node dev/bundler.js"},"_npmUser":{"name":"signor_pipo","email":"eliaducceschi@hotmail.it"},"repository":{"url":"git+https://github.com/signorpipo/wle-pp.git","type":"git"},"_npmVersion":"10.1.0","description":"A library for the Wonderland Engine","directories":{},"_nodeVersion":"18.18.0","_hasShrinkwrap":false,"devDependencies":{"esbuild":"^0.24.0","typescript":"^5.6.3","esbuild-node-externals":"^1.15.0"},"peerDependencies":{"howler":"^2.2.4","gl-matrix":"^3.4.3","@wonderlandengine/api":"~1.2.4","@wonderlandengine/components":"~1.1.5"},"wonderlandengine":{},"_npmOperationalInternal":{"tmp":"tmp/wle-pp_0.7.2_1731688944863_0.6277145725335949","host":"s3://npm-registry-packages"}},"0.7.3":{"name":"wle-pp","version":"0.7.3","keywords":["pp","pipo","wonderland","wonderlandengine","wonderland-engine","wonderland engine","wle","webxr"],"author":{"name":"Pipo"},"license":"ISC","_id":"wle-pp@0.7.3","maintainers":[{"name":"signor_pipo","email":"eliaducceschi@hotmail.it"}],"homepage":"https://github.com/signorpipo/wle-pp","bugs":{"url":"https://github.com/signorpipo/wle-pp/issues"},"dist":{"shasum":"db917028e3ec8a7a71533a2a369aac7e5d72dbae","tarball":"https://registry.npmjs.org/wle-pp/-/wle-pp-0.7.3.tgz","fileCount":936,"integrity":"sha512-SJIlo6DrMsbj5Q8GD7f1iTjXC1ObuquvYocjfoSxtF+v64YJx36JwG5pEma2eg1pc3To/W+JlkHur6qTIADxLA==","signatures":[{"sig":"MEYCIQDbMKqHxIx1dhG4ULR9pBYRSh8QjcpmorVU/aabAeQWJQIhAMdd8rBI0HMhJ0srM+lqLUA4dYwgpGDdBV77ccFnpwvu","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":8731810},"main":"./dist/index.js","type":"module","exports":{".":"./dist/pp/index.js","./*":"./dist/pp/*","./add_type_extensions_to_typescript.js":"./dist/pp/plugin/add_type_extensions_to_typescript.js"},"gitHead":"dbf01e0c32d710f1c0a51d0957c71d58cea73828","scripts":{"build":"tsc","bundle":"node dev/bundler.js"},"_npmUser":{"name":"signor_pipo","email":"eliaducceschi@hotmail.it"},"repository":{"url":"git+https://github.com/signorpipo/wle-pp.git","type":"git"},"_npmVersion":"10.1.0","description":"A library for the Wonderland Engine","directories":{},"_nodeVersion":"18.18.0","_hasShrinkwrap":false,"devDependencies":{"esbuild":"^0.24.0","typescript":"^5.6.3","esbuild-node-externals":"^1.15.0"},"peerDependencies":{"howler":"^2.2.4","gl-matrix":"^3.4.3","@wonderlandengine/api":"~1.2.4","@wonderlandengine/components":"~1.1.5"},"wonderlandengine":{},"_npmOperationalInternal":{"tmp":"tmp/wle-pp_0.7.3_1731776020975_0.9836861110707047","host":"s3://npm-registry-packages"}},"0.7.6":{"name":"wle-pp","version":"0.7.6","keywords":["pp","pipo","wonderland","wonderlandengine","wonderland-engine","wonderland engine","wle","webxr"],"author":{"name":"Pipo"},"license":"ISC","_id":"wle-pp@0.7.6","maintainers":[{"name":"signor_pipo","email":"eliaducceschi@hotmail.it"}],"homepage":"https://github.com/signorpipo/wle-pp","bugs":{"url":"https://github.com/signorpipo/wle-pp/issues"},"dist":{"shasum":"2b63a8b1d7bade8ef20e02d684509d7828bff011","tarball":"https://registry.npmjs.org/wle-pp/-/wle-pp-0.7.6.tgz","fileCount":936,"integrity":"sha512-j+ckueclmv+WUvIgSDA9TtFBo1/rhk9QYesjxfEGyQ/HCHP14mjbpigEMdUBYwc1mSBLrIzy0IVB3BgcSCLsSQ==","signatures":[{"sig":"MEUCIQCXJ/iu9NjC9WfUVzODSy1jwLiSqp9fUql6zGsUUyW5mwIgTDuPIdiyJmC5R19TI/OeyM/ozjtoXPI3IzG02f7DACM=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":8757608},"main":"./dist/index.js","type":"module","exports":{".":"./dist/pp/index.js","./*":"./dist/pp/*","./add_type_extensions_to_typescript.js":"./dist/pp/plugin/add_type_extensions_to_typescript.js"},"gitHead":"6168a5ba4cda5670e77fcceeaa12df8e0c193811","scripts":{"build":"tsc","bundle":"node dev/bundler.js"},"_npmUser":{"name":"signor_pipo","email":"eliaducceschi@hotmail.it"},"repository":{"url":"git+https://github.com/signorpipo/wle-pp.git","type":"git"},"_npmVersion":"10.9.0","description":"A library for the Wonderland Engine","directories":{},"_nodeVersion":"22.11.0","_hasShrinkwrap":false,"devDependencies":{"esbuild":"^0.24.0","typescript":"^5.7.2","esbuild-node-externals":"^1.15.0"},"peerDependencies":{"howler":"^2.2.4","gl-matrix":"^3.4.3","@wonderlandengine/api":"~1.2.4","@wonderlandengine/components":"~1.1.5"},"wonderlandengine":{},"_npmOperationalInternal":{"tmp":"tmp/wle-pp_0.7.6_1732806437696_0.02828259903054886","host":"s3://npm-registry-packages"}},"0.8.0":{"name":"wle-pp","version":"0.8.0","keywords":["pp","pipo","wonderland","wonderlandengine","wonderland-engine","wonderland engine","wle","webxr"],"author":{"name":"Pipo"},"license":"ISC","_id":"wle-pp@0.8.0","maintainers":[{"name":"signor_pipo","email":"eliaducceschi@hotmail.it"}],"homepage":"https://github.com/signorpipo/wle-pp","bugs":{"url":"https://github.com/signorpipo/wle-pp/issues"},"dist":{"shasum":"5f7b794ee1130c1a42dbccd49b8d38ccdc478ed1","tarball":"https://registry.npmjs.org/wle-pp/-/wle-pp-0.8.0.tgz","fileCount":936,"integrity":"sha512-7MkqwMCvWZbU4aCWKuQ9/6/9f3JmQpkAt+We5v96jfeUPyi6LcNAWYvTOj125ZX4/JA9Cg6p3PzGNqepmZtHDQ==","signatures":[{"sig":"MEUCIQCWPpEC/Ak45zPvOFMMEp+MS+8TD+9jtxqlJUX3B8UaiAIgPngjgQ+N1g3hcTZL4tG9MOOmUCE7M4tuYmqBu7vr5qc=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":8757801},"main":"./dist/index.js","type":"module","exports":{".":"./dist/pp/index.js","./*":"./dist/pp/*","./add_type_extensions_to_typescript.js":"./dist/pp/plugin/add_type_extensions_to_typescript.js"},"gitHead":"db6b438cbaaa38d1d3327b25a4596e12bfe7dd2b","scripts":{"build":"tsc","bundle":"node dev/bundler.js"},"_npmUser":{"name":"signor_pipo","email":"eliaducceschi@hotmail.it"},"repository":{"url":"git+https://github.com/signorpipo/wle-pp.git","type":"git"},"_npmVersion":"10.9.0","description":"A library for the Wonderland Engine","directories":{},"_nodeVersion":"22.11.0","_hasShrinkwrap":false,"devDependencies":{"esbuild":"^0.24.0","typescript":"^5.7.2","esbuild-node-externals":"^1.15.0"},"peerDependencies":{"howler":"^2.2.4","gl-matrix":"^3.4.3","@wonderlandengine/api":"~1.3.0","@wonderlandengine/components":"~1.2.0"},"wonderlandengine":{},"_npmOperationalInternal":{"tmp":"tmp/wle-pp_0.8.0_1738234919908_0.4841325375244965","host":"s3://npm-registry-packages-npm-production"}},"0.8.1":{"name":"wle-pp","version":"0.8.1","keywords":["pp","pipo","wonderland","wonderlandengine","wonderland-engine","wonderland engine","wle","webxr"],"author":{"name":"Pipo"},"license":"ISC","_id":"wle-pp@0.8.1","maintainers":[{"name":"signor_pipo","email":"eliaducceschi@hotmail.it"}],"homepage":"https://github.com/signorpipo/wle-pp","bugs":{"url":"https://github.com/signorpipo/wle-pp/issues"},"dist":{"shasum":"2f49827a6944c98d5f3fee1e3c0d38343b3ad65e","tarball":"https://registry.npmjs.org/wle-pp/-/wle-pp-0.8.1.tgz","fileCount":936,"integrity":"sha512-baJRyWR52bcXqeV9a0pFofCCKNw6MaaB8HK9flHg2bU7FRJdIAuItZVsZWYOl7CQTuNpVeJMz/bm4Z5qGjEIOg==","signatures":[{"sig":"MEQCICqWss4L8Ke/iugNLi54m6NHXVP5zkRSW9FANubLorDIAiAzbK+wm+C9hGYJtp2zSDTzGmq499KceBnXOqjiVZdqYw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":8761782},"main":"./dist/index.js","type":"module","exports":{".":"./dist/pp/index.js","./*":"./dist/pp/*","./add_type_extensions_to_typescript.js":"./dist/pp/plugin/add_type_extensions_to_typescript.js"},"gitHead":"279d1125c396e5103749a788e781812e0e20595e","scripts":{"build":"tsc","bundle":"node dev/bundler.js"},"_npmUser":{"name":"signor_pipo","email":"eliaducceschi@hotmail.it"},"repository":{"url":"git+https://github.com/signorpipo/wle-pp.git","type":"git"},"_npmVersion":"10.9.0","description":"A library for the Wonderland Engine","directories":{},"_nodeVersion":"22.11.0","_hasShrinkwrap":false,"devDependencies":{"esbuild":"^0.24.0","typescript":"^5.8.2","esbuild-node-externals":"^1.15.0"},"peerDependencies":{"howler":"^2.2.4","gl-matrix":"^3.4.3","@wonderlandengine/api":"~1.3.1","@wonderlandengine/components":"~1.2.1"},"wonderlandengine":{},"_npmOperationalInternal":{"tmp":"tmp/wle-pp_0.8.1_1743695672073_0.47231342418218647","host":"s3://npm-registry-packages-npm-production"}},"0.8.2":{"name":"wle-pp","version":"0.8.2","keywords":["pp","pipo","wonderland","wonderlandengine","wonderland-engine","wonderland engine","wle","webxr"],"author":{"name":"Pipo"},"license":"ISC","_id":"wle-pp@0.8.2","maintainers":[{"name":"signor_pipo","email":"eliaducceschi@hotmail.it"}],"homepage":"https://github.com/signorpipo/wle-pp","bugs":{"url":"https://github.com/signorpipo/wle-pp/issues"},"dist":{"shasum":"71f680d66363854a7fa54ada587d399042f1fc66","tarball":"https://registry.npmjs.org/wle-pp/-/wle-pp-0.8.2.tgz","fileCount":939,"integrity":"sha512-ffTU1Qb5wGoW8pYWz39Hj7aCd/1qFoglvhN0gzEj0KIkX7pPSANmU1DYR4C8W5UAQDSof2putLdJdZjCkgyWxw==","signatures":[{"sig":"MEUCIAVmQE0HoMClOonDsfGDQ2Phl9t5Dn7b2GschpVKtKHBAiEA2osI/m4ouA+f24MkIf0bSUui1U6coPR8wRlEB7jVOVM=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":8767069},"main":"./dist/index.js","type":"module","exports":{".":"./dist/pp/index.js","./*":"./dist/pp/*","./add_type_extensions_to_typescript.js":"./dist/pp/plugin/add_type_extensions_to_typescript.js"},"gitHead":"f2ca628a88ae411b38aecf4324ca36369c75de5b","scripts":{"build":"tsc","bundle":"node dev/bundler.js"},"_npmUser":{"name":"signor_pipo","email":"eliaducceschi@hotmail.it"},"repository":{"url":"git+https://github.com/signorpipo/wle-pp.git","type":"git"},"_npmVersion":"10.9.0","description":"A library for the Wonderland Engine","directories":{},"_nodeVersion":"22.11.0","_hasShrinkwrap":false,"devDependencies":{"esbuild":"^0.24.0","typescript":"^5.8.2","esbuild-node-externals":"^1.15.0"},"peerDependencies":{"howler":"^2.2.4","gl-matrix":"^3.4.3","@wonderlandengine/api":"^1.3.1","@wonderlandengine/components":"^1.2.1"},"wonderlandengine":{},"_npmOperationalInternal":{"tmp":"tmp/wle-pp_0.8.2_1747067764303_0.05270424324135381","host":"s3://npm-registry-packages-npm-production"}},"0.8.3":{"name":"wle-pp","version":"0.8.3","keywords":["pp","pipo","wonderland","wonderlandengine","wonderland-engine","wonderland engine","wle","webxr"],"author":{"name":"Pipo"},"license":"ISC","_id":"wle-pp@0.8.3","maintainers":[{"name":"signor_pipo","email":"eliaducceschi@hotmail.it"}],"homepage":"https://github.com/signorpipo/wle-pp","bugs":{"url":"https://github.com/signorpipo/wle-pp/issues"},"dist":{"shasum":"018e980a52b93c017add2683ebea27ffedf9b04a","tarball":"https://registry.npmjs.org/wle-pp/-/wle-pp-0.8.3.tgz","fileCount":939,"integrity":"sha512-d9wC6+Cqh5IZGaoVyDmZpKj7xdRhxSKBzFgK35LMtSR2TYrSsQGuAH5vXAJoXDC31CoMAj3k4lgX/Y3RaHMr8w==","signatures":[{"sig":"MEUCIQCR3iJf3Oxq8DG3oz+l6gUSnVnU3UyiriXx7HrKSjO8TwIgcMibwtl2fKNI2C1P59tX6ARV8Gh5Ya3atJvvGYB41T8=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":8767905},"main":"./dist/index.js","type":"module","exports":{".":"./dist/pp/index.js","./*":"./dist/pp/*","./add_type_extensions_to_typescript.js":"./dist/pp/plugin/add_type_extensions_to_typescript.js"},"gitHead":"77f28f1f2276b4056fb451e87687d31dd999e532","scripts":{"build":"tsc","bundle":"node dev/bundler.js"},"_npmUser":{"name":"signor_pipo","actor":{"name":"signor_pipo","type":"user","email":"eliaducceschi@hotmail.it"},"email":"eliaducceschi@hotmail.it"},"repository":{"url":"git+https://github.com/signorpipo/wle-pp.git","type":"git"},"_npmVersion":"10.9.0","description":"A library for the Wonderland Engine","directories":{},"_nodeVersion":"22.11.0","_hasShrinkwrap":false,"devDependencies":{"esbuild":"^0.24.2","typescript":"^5.8.3","esbuild-node-externals":"^1.18.0"},"peerDependencies":{"howler":"^2.2.4","gl-matrix":"^3.4.3","@wonderlandengine/api":"^1.4.5","@wonderlandengine/components":"^1.2.3"},"wonderlandengine":{},"_npmOperationalInternal":{"tmp":"tmp/wle-pp_0.8.3_1750949075319_0.9547546925260915","host":"s3://npm-registry-packages-npm-production"}},"0.8.4":{"name":"wle-pp","version":"0.8.4","author":{"name":"Pipo"},"description":"A library for the Wonderland Engine","homepage":"https://github.com/signorpipo/wle-pp","repository":{"type":"git","url":"git+https://github.com/signorpipo/wle-pp.git"},"license":"ISC","keywords":["pp","pipo","wonderland","wonderlandengine","wonderland-engine","wonderland engine","wle","webxr"],"type":"module","main":"./dist/index.js","exports":{".":"./dist/pp/index.js","./*":"./dist/pp/*","./add_type_extensions_to_typescript.js":"./dist/pp/plugin/add_type_extensions_to_typescript.js"},"wonderlandengine":{},"peerDependencies":{"@wonderlandengine/api":"^1.4.7","@wonderlandengine/components":"^1.2.3","gl-matrix":"^3.4.4","howler":"^2.2.4"},"devDependencies":{"esbuild":"^0.24.2","esbuild-node-externals":"^1.18.0","typescript":"^5.9.2"},"scripts":{"build":"tsc","bundle":"node dev/bundler.js"},"_id":"wle-pp@0.8.4","gitHead":"e814c4a248bf4d635c95c100e1cfcc6877e2a3d8","bugs":{"url":"https://github.com/signorpipo/wle-pp/issues"},"_nodeVersion":"22.11.0","_npmVersion":"10.9.0","dist":{"integrity":"sha512-iy/dhbzljzsezpXBrpE0mTOTFDIuQ2gmm1EN9lY6wuSvd+UPTDeVZDU3BMiozmLIML/Sd/C5Q5Zt8nKO8zs7FQ==","shasum":"aee4d5adbeb07065f5440b398f669db20d038669","tarball":"https://registry.npmjs.org/wle-pp/-/wle-pp-0.8.4.tgz","fileCount":939,"unpackedSize":8769127,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEUCIB9hxMdEGIvtqJ3EdLI3mbS5zFWOfu6raNvDLsSL8/SOAiEAoi7W0Hjn6PWW56vy8UrlPY3l7T8phYIjtJ29LaJVr+k="}]},"_npmUser":{"name":"signor_pipo","email":"eliaducceschi@hotmail.it"},"directories":{},"maintainers":[{"name":"signor_pipo","email":"eliaducceschi@hotmail.it"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/wle-pp_0.8.4_1757583237382_0.853634773514452"},"_hasShrinkwrap":false}},"time":{"created":"2023-05-07T17:25:33.257Z","modified":"2025-09-11T09:33:57.810Z","0.4.0":"2023-05-05T12:27:19.728Z","0.4.1":"2023-05-07T17:25:33.515Z","0.4.2":"2023-06-13T07:37:01.920Z","0.4.3":"2023-06-14T13:56:59.023Z","0.4.4":"2023-08-22T08:05:56.216Z","0.5.0":"2023-10-17T14:40:29.918Z","0.5.1":"2023-10-17T14:45:24.329Z","0.5.2":"2023-10-17T15:20:41.512Z","0.6.0":"2024-04-17T14:48:05.809Z","0.6.1":"2024-04-17T15:41:03.860Z","0.6.2":"2024-04-18T13:10:35.306Z","0.6.3":"2024-04-19T08:42:59.068Z","0.6.4":"2024-04-24T16:41:15.777Z","0.6.5":"2024-05-02T10:35:38.512Z","0.6.6":"2024-05-07T15:52:12.642Z","0.6.7":"2024-05-08T12:51:14.220Z","0.6.8":"2024-05-15T15:30:59.422Z","0.6.9":"2024-06-10T08:33:19.040Z","0.6.10":"2024-06-10T09:54:10.617Z","0.6.11":"2024-06-17T08:25:41.911Z","0.6.12":"2024-06-17T08:41:01.717Z","0.6.13":"2024-06-17T08:48:48.218Z","0.6.14":"2024-06-17T09:07:27.565Z","0.6.15":"2024-06-19T09:12:29.452Z","0.6.16":"2024-07-11T13:52:01.424Z","0.6.17":"2024-07-31T14:40:03.547Z","0.7.0":"2024-11-09T17:46:19.280Z","0.7.1":"2024-11-09T18:44:24.863Z","0.7.2":"2024-11-15T16:42:25.270Z","0.7.3":"2024-11-16T16:53:41.239Z","0.7.5":"2024-11-28T15:00:13.027Z","0.7.6":"2024-11-28T15:07:17.939Z","0.8.0":"2025-01-30T11:02:00.232Z","0.8.1":"2025-04-03T15:54:32.465Z","0.8.2":"2025-05-12T16:36:04.599Z","0.8.3":"2025-06-26T14:44:35.524Z","0.8.4":"2025-09-11T09:33:57.627Z"},"bugs":{"url":"https://github.com/signorpipo/wle-pp/issues"},"author":{"name":"Pipo"},"license":"ISC","homepage":"https://github.com/signorpipo/wle-pp","keywords":["pp","pipo","wonderland","wonderlandengine","wonderland-engine","wonderland engine","wle","webxr"],"repository":{"type":"git","url":"git+https://github.com/signorpipo/wle-pp.git"},"description":"A library for the Wonderland Engine","maintainers":[{"name":"signor_pipo","email":"eliaducceschi@hotmail.it"}],"readme":"# Overview\r\n\r\nA library for the [Wonderland Engine](https://wonderlandengine.com/).\r\n\r\nThe code folder can be found [here](https://github.com/signorpipo/wle-pp/tree/main/wle_pp/wle_pp/src/pp).\r\n\r\nA default template project that already includes the PP library can be found [here](https://github.com/signorpipo/wle-ppefault).  \r\nA collection of playground template projects that already include the PP library can be found [here](https://github.com/signorpipo/wle-pplaygrounds).\r\n\r\nA collection of assets that can be useful while working with the Wonderland Engine (like gamepads 3D models) can be found [here](https://github.com/signorpipo/wle-assets).\r\n\r\nThe development of this library is actually being done on the [wle-pp-dev](https://github.com/signorpipo/wle-pp-dev) repository, where you can find the most up to date version of the library, even though it might not be stable.\r\n\r\n## Table Of Contents  \r\n\r\n- [Downloads](#downloads)\r\n- [Quick Features Summary](#quick-features-summary)\r\n- [How To Import](#how-to-import)\r\n- [How To Setup](#how-to-setup)\r\n- [Things To Know](#things-to-know)\r\n- [License](#license)\r\n- [Credits](#credits)\r\n- [Documentation](#documentation)\r\n\r\n# Downloads\r\n\r\nYou can get the library through `npm`: \r\n  - [`npm install wle-pp`](https://www.npmjs.com/package/wle-pp)\r\n    - install the library as a list of `js` files and their corresponding TypeScript type definitions\r\n  - [`npm install wle-pp-bundle`](https://www.npmjs.com/package/wle-pp-bundle)\r\n    - install the library as a single `js` bundle file\r\n\r\nYou can download the `js` version of the library through the following link:\r\n  - [`wle-pp`](https://github.com/signorpipo/wle-pp/releases/latest/download/wle_pp.zip)\r\n\r\nYou can download the bundle file through the following link:\r\n  - [`wle-pp-bundle`](https://github.com/signorpipo/wle-pp/releases/latest/download/wle_pp_bundle.zip)\r\n\r\nYou can also download the library in TypeScript through the following link:\r\n  - [`wle-pp-ts`](https://github.com/signorpipo/wle-pp/releases/latest/download/wle_pp_ts.zip)\r\n  \r\n# Quick Features Summary\r\n\r\nSome of the features that you can get with this library are:\r\n  - Object Extension\r\n    - add to the WLE object lots of functions that make the object interface more cohesive and complete\r\n  - Array Extension\r\n    - add to the Array object lots of functions that makes it easy to work with `vec3`, `quat` and more\r\n  - Gamepad\r\n    - manages the input from the gamepads, like reading the state of a button or the value of the thumbstick\r\n\t  - automatically works with the keyboard\r\n\t  - u can also add a virtual gamepad to use the gamepad on a mobile device\r\n  - Experimental Locomotion\r\n    - smooth and teleport locomotion with physics collision check\r\n\t  - view obscuration when going inside walls\r\n\t  - the feature is in an experimental phase, this means u can use it but won't be simple to adjust and may have weird bugs (please report them!)\r\n  - Grab & Throw\r\n    - a ready to use gameplay feature for grabbing and throwing objects\r\n  - FSM\r\n    - a simple but powerful finite state machine, your best friend when developing a game\r\n  - Debug Draw\r\n    - easily draw some debug object in the scene using functions like `PP.myDebugVisualManager.drawLine`, `PP.myDebugVisualManager.drawArrow` or `PP.myDebugVisualManager.drawRaycast`\r\n\t  - this is also available in a non debug mode by using `PP.myVisualManager`, even though the quick draw methods like `drawLine` are not available\r\n  - Debug Functions Performance Analyzer\r\n    - let you specify a class or an object instance and count all the calls that are being made on its functions as for its total execution time\r\n  - Console VR\r\n    - a tool that let you see the console even when u are inside a VR session\r\n  - Easy Tune\r\n    - a tool that makes it easy to tune design values at runtime\r\n    - let you define special variables in the code, like for the speed of the player, that will then be editable at runtime through a visual interface\r\n\r\n# How To Import\r\n\r\nYou can find a collection of Wonderland Engine default projects that already includes the PP library [here](https://github.com/signorpipo/wle-ppefault).\r\n\r\n## Import through npm\r\n\r\nIf you want to import this library into your own project through `npm` you have to:\r\n  - open a command prompt inside your project folder\r\n  - type `npm install wle-pp`\r\n\r\n## Import by getting the entire code folder\r\n\r\nYou can also import this library by importing the entire code folder, which could be useful if you want to customize it while developing your project.  \r\n\r\nIn this case, you have to:\r\n  - get the `ts` version of the library from [here](https://github.com/signorpipo/wle-pp/releases/latest/download/wle_pp_ts.zip)\r\n  - put the `pp` folder inside your project `src` folder\r\n  - add the `pp/index.ts` script to the source paths inside the `Project Settings`\r\n  \r\nIf TypeScript is not an option, you can also do the same thing but with the generated `js` library:\r\n  - get the `js` version of the library from [here](https://github.com/signorpipo/wle-pp/releases/latest/download/wle_pp.zip)\r\n  - put the `pp` folder inside your project `js` folder\r\n  - add the `pp/index.js` script to the source paths inside the `Project Settings`\r\n  \r\n# How To Setup\r\n\r\nThe setup for the PP library is very simple but requires a few steps:\r\n  - add the `pp-gateway` component to your scene\r\n    - this components have some flags and options to customize the PP library behavior at runtime\r\n    - some of these flags are meant for development and should be disabled when u want to release your app!\r\n    - you have to fill in some fields in this component by either specifying an object in your scene or a resource like a material or a mesh\r\n      - for the meshes this should be quite trivial, since they are the default ones in the engine\r\n      - for the materials you might have to create some\r\n        - for example the `Flat Transparent No Depth` is a material that does not perform depth checks\r\n      - for the scene objects, you can mostly pick the ones u should already find in a default Wonderland Engine project, but some needs to be created\r\n        - u need to create a `Reference Space`, which is just an empty object that must be a children of the `Player` and has every other player objects (like the `Eyes` or the `Hands`) as children\r\n          - this will be used to adjust, for example, the player height\r\n          - u should not change this transform directly since it is already managed by the library\r\n          - if u need to add your own offsets to the reference space of the player, the approach would be:\r\n            - add an object to the `Reference Space` parent\r\n            - set the `Reference Space` object as a child of this newly created object\r\n            - use the new object to offset the reference space\r\n            - this way, u will be sure that every objects under `Reference Space` will always have all the offsets applied to them\r\n        - u will have to create a `Head` object, on which u have to add the `pp-set-head-local-transform`\r\n        - it would be best to change the component on the `Hands` from the default `input` to `pp-set-hand-local-transform`\r\n          - this component takes into consideration the `Fix Forward` flag found on the `pp-gateway` component\r\n  - make type extensions available to typescript, so that using them do not cause type errors\r\n    - u have to add this import somewhere in your code where your `tsconfig.json` can see it (usually inside your `js` or `src` folder)\r\n      - `import \"wle-pp/add_type_extensions_to_typescript.js\";`\r\n      - a good place to put this is at the start of the `app.js` file\r\n    - if the `tsconfig.json` can see the file where this has been imported, it should be available everywhere without the need to import it in every file where u use a type extension\r\n    - u don't actually need to do this if u don't plan to use the type extensions\r\n    - note that these extensions are automatically initialized by the `pp-gateway` component\r\n      - if u don't add this component, you would have to initialize these extensions yourself (see [Advanced Setup](#advanced-setup))\r\n\r\nMy advice is, if possible, to start by using a `PP` template project like the default one, which can be found [here](https://github.com/signorpipo/wle-ppefault).  \r\nYou can also just give a look at it to better understand how to setup your own project properly.\r\n\r\n## Advanced Setup\r\n\r\nIf u don't want to use every feature of the library, or need to customize its behavior in a more advanced way, you can go for an advanced setup.\r\n\r\nThe advanced setup basically consists in checking out the `pp-gateway` component and the `initPP` function and only use the code u see there that u actually need.\r\n\r\nFor example, if you don't need to register all the `WL` and `PP` components, something that the `pp-gateway` component does on register, you can avoid using that component and create a custom gateway component which only calls the functions that u need from `initPP`.  \r\n\r\nYou can also avoid having a gateway component directly and call the functions u need directly in your `index.js`, at the start of the function that registers all components.  \r\nFor example, if u just wanted to initialize the array extension, you could just call the `initArrayExtension` function before the components are registered. Besides, if u import the extension initialization function (or the `initPP` function) directly, u will also automatically import that type extension for typescript too, so there should be no need to also add the `wle-pp/add_type_extensions_to_typescript.js` import.\r\n\r\nA lot of features relies on the proper setup of the library, so it might not be easy to customize it as you would like to, and you will probably need to do some trial and error to figure out what you can actually remove or change to get it working.\r\nGood luck!\r\n\r\n# Things To Know\r\n\r\nWhen using the PP library, there are certain things to take into consideration, some of which are customizable (○):\r\n  - forward is positive Z axis, which is not the default\r\n    - Wonderland Engine default forward method returns negative Z, which is the default for some engines\r\n    - since I find it pretty hard to work with, I prefer to switch to positive\r\n    - the only downside of this is that right will now be negative X, but since the right axis is less useful, I opted for this compromise\r\n  - the library almost always assume that the pose forward is fixed, which is a setting on the `pp-gateway` component set to true by default\r\n    - you can switch it to false, by might not be able to use properly some of the features which assume it to be true\r\n    - having the pose forward fixed means that objects like the hands or the head have the forward in the direction they are looking at\r\n    - this is true by default in the Wonderland Engine only if you are ok with having the forward as negative Z\r\n  - ○ all components from the Wonderland Engine and from PP are always registered and therefore added to your final bundled project\r\n    - this is just to make it simplier, instead of having to specify the dependencies on components if u want to add them at runtime\r\n    - customizable with an advanced setup of the library\r\n  - ○ extensions, which are a way to add more features to a type, are injected on some types like the Wonderland Engine `Object` or the Javascript `Array`\r\n    - this might not work properly if u install the library as a link to another location instead of inside your own `node_modules` folder\r\n    - customizable with an advanced setup of the library\r\n  - ○ mods, which are a way to edit the behavior of a type, are injected on some types like the Wonderland Engine `Cursor` component\r\n    - this might not work properly if u install the library as a link to another location instead of inside your own `node_modules` folder\r\n    - customizable with an advanced setup of the library\r\n  - some of the features of the library uses extensions and mods\r\n    - if they are not initialized, those features will not be able to work properly\r\n    - if you also want to use them, you have to add the type extensions to typescript as explained in the [How To Setup](#how-to-setup) section to avoid type errors\r\n  - some of the features of the library uses globals variable that are usually setup by the `pp-gateway` component, like `Globals.getSceneObjects` or `Globals.getDefaultResources`\r\n    - if these variables are not setup, those features will not be able to work properly\r\n  - when you are going to release your app, you most likely want to disable the following development flags on the `pp-gateway` component:\r\n    - `enable debug`, `enable tool`, `add PP to Window`, `add WL to Window`\r\n\r\n# License\r\n\r\nCopyright (c) 2021-2024 [Elia \"Pipo\" Ducceschi](https://signorpipo.itch.io/).\r\n\r\nReleased under the [ISC License](https://github.com/signorpipo/wle-pp/blob/main/LICENSE.md).\r\n\r\n# Credits\r\n\r\n- [Yinch](https://twitter.com/yinch), without whom the PP library would have not been able to be developed\r\n- [Jonathan](https://twitter.com/squareys) and the whole [Wonderland Engine Team](https://wonderlandengine.com/), that have and still are supporting me with the issues or requests I have about the engine (and I have plenty)\r\n- [Florian](https://twitter.com/SrileXR), because he would be pissed to not be credited, but also for being a true friend since the start of this journey\r\n- [glMatrix](https://glmatrix.net), used as the main vector library\r\n- [howler.js](https://howlerjs.com), used as the main audio library\r\n\r\n# Documentation\r\n\r\n## :warning: Warning\r\n\r\nThe following documentation has not been updated yet since the migration to Wonderland Engine version 1.0.0.\r\n\r\n## \r\n\r\n[Code Folder](https://github.com/signorpipo/wle-pp/tree/main/wle_pp/wle_pp/src/pp)\r\n\r\nI will explain more or less everything but without going too much into details.  \r\nEach folder under the `pp` folder will be a main section of this documentation.  \r\n`Cauldron` is a tag name for a folder that contains a bunch of features that don't belong anywhere else.\r\n\r\nAs you will notice, everything in this library (classes, functions, variables) can be found under the `PP` object, that works as a sort of namespace.  \r\nThe components names always start with a `pp-` prefix.  \r\nFor the extensions (features added to already existing objects), the names usually start with a `pp_` prefix, or, for array extensions, with something like `vec_`, `vec3_`, `quat2_` based on how you want to intepret the array value.\r\n\r\n## Table Of Contents  \r\n\r\n- [Audio](#audio)\r\n- [Cauldron](#cauldron-1)\r\n  - [Benchmarks](#benchmarks)\r\n  - [Components](#components)\r\n  - [FSM](#fsm)\r\n  - [Physics](#physics)\r\n  - [Utils](#utils)\r\n  - [Visual](#visual)\r\n- [Debug](#debug)\r\n- [Gameplay](#gameplay)\r\n  - [Experimental Locomotion](#locomotion)\r\n  - [Grab & Throw](#grab--throw)\r\n- [Input](#input)\r\n  - [Gamepad](#gamepad)\r\n  - [Pose](#pose)\r\n- [Plugin](#plugin)\r\n  - [Component Mods](#component-mods)\r\n  - [Extensions](#extensions)\r\n- [PP](#pp)\r\n- [Tool](#tool)\r\n  - [Console VR](#console-vr)\r\n  - [Easy Tune](#easy-tune)\r\n\r\n## Audio\r\n\r\n[Code Folder](https://github.com/signorpipo/wle-pp/tree/main/wle_pp/wle_pp/src/pp/audio)\r\n\r\nA collection of classes and components to manage audio files, creating audio players for a specific audio file, adding an audio listener and some other utilities.\r\n\r\nList of features:\r\n- [`pp-spatial-audio-listener`](https://github.com/signorpipo/wle-pp/blob/main/wle_pp/wle_pp/src/pp/audio/spatial_audio_listener.js)\r\n  - component that will work as a spatial audio listener in the scene\r\n  - usually added on the player head \r\n- [`PP.AudioSetup`](https://github.com/signorpipo/wle-pp/blob/main/wle_pp/wle_pp/src/pp/audio/audio_setup.js)\r\n  - class that let you specify which audio file to load and its settings like volume or pitch\r\n- [`PP.AudioPlayer`](https://github.com/signorpipo/wle-pp/blob/main/wle_pp/wle_pp/src/pp/audio/audio_player.js)\r\n  - class that, given an Audio Setup (or a file path) will create an audio player for that file\r\n- [`PP.AudioManager`](https://github.com/signorpipo/wle-pp/blob/main/wle_pp/wle_pp/src/pp/audio/audio_manager.js)\r\n  - this is a convenient way to manage all the audio setups in your game\r\n  - you can add to it every setup you need and later ask it to create a player for a specif setup, by using an ID specified when adding the setup\r\n  - also allow you to change the volume of the game, or stop every audio that is playing\r\n- [`PP.AudioUtils`](https://github.com/signorpipo/wle-pp/blob/main/wle_pp/wle_pp/src/pp/audio/audio_utils.js)\r\n  - some functions related to audio stuff, like checking if the audio context is running\r\n- [`pp-audio-manager`](https://github.com/signorpipo/wle-pp/blob/main/wle_pp/wle_pp/src/pp/audio/audio_manager_component.js)\r\n  - component that adds a global audio manager to your game, feel free to initialize your Audio Manager this way or to use a custom solution\r\n- [`pp-mute-everything`](https://github.com/signorpipo/wle-pp/blob/main/wle_pp/wle_pp/src/pp/audio/mute_everything.js)\r\n  - component that, when active, mutes the game\r\n  - useful when u are testing and don't want to hear your game music without muting the browser or the headset\r\n      \r\n### How To\r\n\r\nIf u don't want to use the audio manager, it is as simple as filling the fields of the audio setup and then using it to create an audio player.\r\n \r\n```js\r\nlet audioSetup = new PP.AudioSetup(\"path/to/file.wav\");\r\naudioSetup.myLoop = true;\r\naudioSetup.mySpatial = false;\r\naudioSetup.myVolume = 0.5;\r\n\r\nlet audioPlayer = new PP.AudioPlayer(audioSetup);\r\naudioPlayer.play();\r\n```\r\n\r\nIf u want to use the Audio Manager, you just have to create it somewhere and make it accessible from the rest of the code where u need to add a player (easy way is making it global for example).  \r\nYou can then add every setup you need when loading the project, so that everything that will ask for an audio player of a specific audio ID will already find it.  \r\nThe ID can be everything, an enum like SoundID could make things easier to manage but also a string can be used.\r\n\r\n```js\r\nvar globalAudioManager = new PP.AudioManager();\r\n\r\nglobalAudioManager.addAudioSetup(\"audioSetupID1\", audioSetup1);\r\nglobalAudioManager.addAudioSetup(\"audioSetupID2\", audioSetup2);\r\nglobalAudioManager.addAudioSetup(\"audioSetupID3\", audioSetup3);\r\n\r\n...\r\n\r\nlet audioPlayer = globalAudioManager.createAudioPlayer(\"audioSetupID2\");\r\naudioPlayer.play();\r\n```\r\n\r\n## Cauldron\r\n\r\n[Code Folder](https://github.com/signorpipo/wle-pp/tree/main/wle_pp/wle_pp/src/pp/cauldron)\r\n\r\nA generic collection of features.\r\n\r\n### Benchmarks\r\n\r\n[Code Folder](https://github.com/signorpipo/wle-pp/tree/main/wle_pp/wle_pp/src/pp/cauldron/benchmarks)\r\n\r\nA set of utilities to test the performance and capabilities of the Wonderland Engine.\r\n\r\nList of features:\r\n- [`pp-benchmark-max-physx`](https://github.com/signorpipo/wle-pp/blob/main/wle_pp/wle_pp/src/pp/cauldron/benchmarks/max_physx.js)\r\n  - test how many physx objects/raycasts u can have/perform in the scene at the same time\r\n- [`pp-benchmark-max-visible-triangles`](https://github.com/signorpipo/wle-pp/blob/main/wle_pp/wle_pp/src/pp/cauldron/benchmarks/max_visible_triangles.js)\r\n  - test how many visible triangles u can have in the scene at the same time\r\n\r\n### Cauldron\r\n\r\n[Code Folder](https://github.com/signorpipo/wle-pp/tree/main/wle_pp/wle_pp/src/pp/cauldron/cauldron)\r\n\r\nList of features:\r\n- [`PP.ObjectPool`](https://github.com/signorpipo/wle-pp/blob/main/wle_pp/wle_pp/src/pp/cauldron/cauldron/object_pool.js)\r\n  - a pool of objects\r\n  - you can get an object from it and it will refill if it runs out of them\r\n  - by default works with wonderland objects that can be cloned (see object extension)\r\n- [`PP.ObjectPoolsManager`](https://github.com/signorpipo/wle-pp/blob/main/wle_pp/wle_pp/src/pp/cauldron/cauldron/object_pools_manager.js)\r\n  - a simple way to manage a set of pools of objects\r\n  - example:\r\n    ```js\r\n    let objectPoolParams = new PP.ObjectPoolParams();\r\n    objectPoolParams.myInitialPoolSize = 20;\r\n    objectPoolParams.myPercentageToAddWhenEmpty = 0.2;\r\n    \r\n    let objectPoolsManager = new PP.ObjectPoolsManager();\r\n    \r\n    objectPoolsManager.addPool(\"pool_ID\", gameObjectToClone, objectPoolParams);\r\n    \r\n    ...\r\n    \r\n    let object = objectPoolsManager.getObject(\"pool_ID\");    \r\n    ```\r\n- [`PP.SaveManager`](https://github.com/signorpipo/wle-pp/blob/main/wle_pp/wle_pp/src/pp/cauldron/cauldron/save_manager.js)\r\n  - let you save and load from the local storage\r\n  - takes care of caching the loaded result so that you don't need to load again when asking for the same data\r\n- [`PP.Timer`](https://github.com/signorpipo/wle-pp/blob/main/wle_pp/wle_pp/src/pp/cauldron/cauldron/timer.js)\r\n  - nothing more than a timer that u can update and ask if it is done\r\n\r\n### Components\r\n\r\n[Code Folder](https://github.com/signorpipo/wle-pp/tree/main/wle_pp/wle_pp/src/pp/cauldron/components)\r\n\r\nList of components:\r\n- [`pp-clear-console-on-xr-session-start`](https://github.com/signorpipo/wle-pp/blob/main/wle_pp/wle_pp/src/pp/cauldron/components/clear_console_on_xr_session_start.js)\r\n  - u can add this to the scene so that when u press VR and enter the session, the console is cleared\r\n  - useful to clear the console from everything related to the initialization that you may have already checked before entering\r\n- [`pp-set-active`](https://github.com/signorpipo/wle-pp/blob/main/wle_pp/wle_pp/src/pp/cauldron/components/set_active.js)\r\n  - component that let you specify if the hierarchy of an object should be set active or not\r\n  - useful to deactivate a tree of objects that you prefer to be visible in the editor\r\n- [`pp-adjust-hierarchy-physx-scale`](https://github.com/signorpipo/wle-pp/blob/main/wle_pp/wle_pp/src/pp/cauldron/components/adjust_hierarchy_physx_scale.js)\r\n  - can be used to adjust the physx scale of all the physx components in the hierarchy the current object\r\n  - adjusting means that every physx scale will be multiplied by the scale of the current object, since physx does not automatically adjust with the object scale\r\n  - makes it easier to scale up/down an entire scene made of physx since u don't have to scale every single one manually\r\n- [`pp-show-fps`](https://github.com/signorpipo/wle-pp/blob/main/wle_pp/wle_pp/src/pp/cauldron/components/show_fps.js)\r\n  - easy way to show fps as a UI element\r\n\r\n### FSM\r\n\r\n[Code Folder](https://github.com/signorpipo/wle-pp/tree/main/wle_pp/wle_pp/src/pp/cauldron/fsm)\r\n\r\nAn fsm let you create game logic like switching between the menu and the game, or character logic like running and jumping.  \r\nI'm not going to explain it in details, I'll suppose you already know the overall idea of what a finite state machine is.\r\n\r\nList of features:\r\n- [`PP.FSM`](https://github.com/signorpipo/wle-pp/blob/main/wle_pp/wle_pp/src/pp/cauldron/fsm/fsm.js)\r\n  - let you add states and transition between them, init it in a specific state and specify when to perform a transition\r\n  - you can also check what is the current state, or if it can perform a specific transition or go to a specifi state and stuff like that\r\n  - the IDs for the states and the transitions can be everything, from string to an enum to just numbers\r\n- [`PP.State`](https://github.com/signorpipo/wle-pp/blob/main/wle_pp/wle_pp/src/pp/cauldron/fsm/state.js)\r\n  - a class that can be inherited from when you want to create a \"class\" state\r\n- [`PP.Transition`](https://github.com/signorpipo/wle-pp/blob/main/wle_pp/wle_pp/src/pp/cauldron/fsm/transition.js)\r\n  - a class that can be inherited from when you want to create a \"class\" transition\r\n  \r\n#### How To\r\n\r\nIn this case an example is worth more than a billion words:\r\n```js\r\nlet fsm = new PP.FSM();\r\n\r\nfsm.addState(\"move\", this._move.bind(this));\r\nfsm.addState(\"jump\", this._jump.bind(this));\r\nfsm.addState(\"wait\", new PP.TimerState(0, \"end\"));\r\n\r\nfsm.addTransition(\"init\", \"move\", \"start\");\r\nfsm.addTransition(\"move\", \"jump\", \"jump\", this._prepareJump.bind(this));\r\nfsm.addTransition(\"jump\", \"wait\", \"end\");\r\nfsm.addTransition(\"wait\", \"move\", \"end\");\r\n\r\nfsm.setDebugLogActive(true, \"FSM Name\"); // let you see in the console what the fsm is doing\r\n\r\nfsm..init(\"move\");\r\n\r\n...\r\n\r\nfsm.update(dt); // calls _move\r\n\r\n...\r\n\r\nfsm.perform(\"jump\"); // calls _prepareJump and then change state to jump\r\n\r\n```\r\n\r\nAs u can see, a state can be either a function, a \"class\" state or even nothing at all, which means there will be no update, and the same is true for a transition.  \r\nYou can look at the `PP.State` and `PP.Transition` classes to have an idea of what the function signature should be.\r\n\r\nIt's important to notice that you can specify if the perform should be immediate or delayed.  \r\nImmediate means the transition will execute when asked, while delayed means the transition will be executed when the fsm will be updated.  \r\nThis can be useful if u want to enforce a specific flow in your code.\r\n\r\nAnother thing is that nothing prevents you from doing a transition from within a state of the fsm, it can be useful and quick, but may also have unexpected result and sometimes could require a perform delayed to work properly.\r\n\r\n#### States\r\n\r\n[Code Folder](https://github.com/signorpipo/wle-pp/tree/main/wle_pp/wle_pp/src/pp/cauldron/fsm/states)\r\n\r\nA collection of states that can be used with the FSM.\r\n  \r\nList of states:\r\n- [`PP.TimerState`](https://github.com/signorpipo/wle-pp/blob/main/wle_pp/wle_pp/src/pp/cauldron/fsm/states/timer_state.js)\r\n  - let you wait in a specific state for a given time before performing a specified transition\r\n\r\n### Physics\r\n\r\n[Code Folder](https://github.com/signorpipo/wle-pp/tree/main/wle_pp/wle_pp/src/pp/cauldron/physics)\r\n\r\nList of features:\r\n- [`PP.PhysicsLayerFlags`](https://github.com/signorpipo/wle-pp/blob/main/wle_pp/wle_pp/src/pp/cauldron/physics/physics_layer_flags.js)\r\n  - a class that makes it easier to create and interact with a physx mask\r\n- [`PP.RaycastSetup`](https://github.com/signorpipo/wle-pp/blob/main/wle_pp/wle_pp/src/pp/cauldron/physics/physics_raycast_data.js) / [`PP.RaycastResult`](https://github.com/signorpipo/wle-pp/blob/main/wle_pp/wle_pp/src/pp/cauldron/physics/physics_raycast_data.js) / [`PP.RaycastHit`](https://github.com/signorpipo/wle-pp/blob/main/wle_pp/wle_pp/src/pp/cauldron/physics/physics_raycast_data.js)\r\n  - a set of classes that are used to raycast into the scene and get the result of it  \r\n- [`PP.PhysicsUtils`](https://github.com/signorpipo/wle-pp/blob/main/wle_pp/wle_pp/src/pp/cauldron/physics/physics_utils.js)\r\n  - some functions to interact with physics\r\n  - let you raycast into the scene\r\n- [`PP.PhysicsCollisionCollector`](https://github.com/signorpipo/wle-pp/blob/main/wle_pp/wle_pp/src/pp/cauldron/physics/physics_collision_collector.js)\r\n  - collects the objects that are currently colliding with a given physx component\r\n  - if updated it also let you know when a collision is just started or ended\r\n  - it also let you register callback for collision start and end, even though you could still do that on the physx component itself\r\n \r\n### Utils\r\n\r\n[Code Folder](https://github.com/signorpipo/wle-pp/tree/main/wle_pp/wle_pp/src/pp/cauldron/utils)\r\n\r\nList of features:\r\n- [`PP.ColorUtils`](https://github.com/signorpipo/wle-pp/blob/main/wle_pp/wle_pp/src/pp/cauldron/utils/color_utils.js)\r\n  - bunch of functions to work with colors, like converting hsv to rgb, or code notation (0,1) to the human one (0,255)\r\n- [`PP.MeshUtils`](https://github.com/signorpipo/wle-pp/blob/main/wle_pp/wle_pp/src/pp/cauldron/utils/ca_utils.js)\r\n  - some functions to create/clone/invert a mesh in an easy way\r\n  - let you create some simple meshes like a plane, and also change the alpha (or material or else) of all the meshes of an object\r\n- [`PP.SaveUtils`](https://github.com/signorpipo/wle-pp/blob/main/wle_pp/wle_pp/src/pp/cauldron/utils/mesh_utils.js)\r\n  - a set of functions to interact with the local storage, that is to save and load data\r\n- [`PP.TextUtils`](https://github.com/signorpipo/wle-pp/blob/main/wle_pp/wle_pp/src/pp/cauldron/utils/text_utils.js)\r\n  - for now almost empty, but could be seen as a mirror utils to the PP.MeshUtils, but for text\r\n  - let you make every text materials under an object cloned, so that it won't be tied to the original one anymore\r\n- [`PP.XRUtils`](https://github.com/signorpipo/wle-pp/blob/main/wle_pp/wle_pp/src/pp/cauldron/utils/xr_utils.js)\r\n  - some functions to interact with the WebXR APIs\r\n  - you can check if the device that is running is emulated or if the session is active\r\n- [`PP.BrowserUtils`](https://github.com/signorpipo/wle-pp/blob/main/wle_pp/wle_pp/src/pp/cauldron/utils/browser_utils.js)\r\n  - some functions related to browser stuff, like checking if u are on a mobile or desktop browser\r\n- [`PP.MaterialUtils`](https://github.com/signorpipo/wle-pp/blob/main/wle_pp/wle_pp/src/pp/cauldron/utils/material_utils.js)\r\n  - a set of functions to interact with materials, like setting the alpha of all the materials of an object to easily make it fade in/out\r\n- [`PP.JSUtils`](https://github.com/signorpipo/wle-pp/blob/main/wle_pp/wle_pp/src/pp/cauldron/utils/js_utils.js)\r\n  - a set of functions related to Javascript itself, like checking if a reference is a function, or getting all the property names of a reference\r\n  \r\n### Visual\r\n\r\n[Code Folder](https://github.com/signorpipo/wle-pp/tree/main/wle_pp/wle_pp/src/pp/cauldron/visual)\r\n\r\nThis feature let you add visual objects like lines, arrows, points and more easily.\r\n\r\nList of features:\r\n- [`PP.VisualManager`](https://github.com/signorpipo/wle-pp/blob/main/wle_pp/wle_pp/src/pp/cauldron/visual/visual_manager.js)\r\n  - let you easily draw visual in the scene\r\n- [`PP.VisualLine`](https://github.com/signorpipo/wle-pp/blob/main/wle_pp/wle_pp/src/pp/cauldron/visual/visual_line.js)\r\n  - you can specify a start and end position and it will visualize it as a line\r\n- [`PP.VisualArrow`](https://github.com/signorpipo/wle-pp/blob/main/wle_pp/wle_pp/src/pp/cauldron/visual/visual_arrow.js)\r\n  - you can specify a start and end position and it will visualize it as an arrow toward the end position\r\n- [`PP.VisualPoint`](https://github.com/signorpipo/wle-pp/blob/main/wle_pp/wle_pp/src/pp/cauldron/visual/visual_point.js)\r\n  - you can specify a position and it will display a point on it with a given radius\r\n- [`PP.VisualMesh`](https://github.com/signorpipo/wle-pp/blob/main/wle_pp/wle_pp/src/pp/cauldron/visual/visual_mesh.js)\r\n  - you can specify a mesh and a material and it will visualize it\r\n- [`PP.VisualTransform`](https://github.com/signorpipo/wle-pp/blob/main/wle_pp/wle_pp/src/pp/cauldron/visual/visual_transform.js)\r\n  - show the position, orientation and scale of a transform\r\n- [`PP.VisualRaycast`](https://github.com/signorpipo/wle-pp/blob/main/wle_pp/wle_pp/src/pp/cauldron/visual/visual_raycast.js)\r\n  - display the result of a raycast\r\n- [`PP.VisualText`](https://github.com/signorpipo/wle-pp/blob/main/wle_pp/wle_pp/src/pp/cauldron/visual/visual_text.js)\r\n  - displays a text on a specified position\r\n- [`PP.VisualTorus`](https://github.com/signorpipo/wle-pp/blob/main/wle_pp/wle_pp/src/pp/cauldron/visual/visual_torus.js)\r\n  - you can specify a radius, the number of segment and their thickness and it will visualize a torus with those params\r\n\r\n#### Components\r\n\r\n[Code Folder](https://github.com/signorpipo/wle-pp/tree/main/wle_pp/wle_pp/src/pp/cauldron/visual/components)\r\n\r\nList of components:\r\n- [`pp-visual-manager`](https://github.com/signorpipo/wle-pp/blob/main/wle_pp/wle_pp/src/pp/cauldron/visual/components/visual_manager_component.js)\r\n  - handy component that will create a visual manager and update it\r\n  \r\n#### How To\r\n\r\nIn this case an example is worth more than a billion words:\r\n```js\r\nlet visualParams = new PP.VisualLineParams();\r\nvisualParams.myStart.vec3_copy([0,0,0]);\r\nvisualParams.myDirection.vec3_copy([0,0,1]);\r\nvisualParams.myLength = l;\r\nvisualParams.myMaterial = PP.myDefaultResources.myMaterials.myFlatOpaque.clone();\r\nvisualParams.myMaterial.color = [1, 1, 1, 1];\r\nPP.myVisualManager.draw(visualParams, lifetimeSeconds);\r\n\r\nor\r\n\r\nlet visualLine = new PP.VisualLine(visualParams);\r\n\r\n```\r\n\r\nIn the example above two tecniques are shown: the first let the manager draw the line for the amount of seconds specified, the second one create the object and let you manage it yourself.\r\nIf the value of the `lifetimeSeconds` is set to 0 the visual will be drawn for onle 1 frame.\r\n\r\n## Debug\r\n\r\n[Code Folder](https://github.com/signorpipo/wle-pp/tree/main/wle_pp/wle_pp/src/pp/debug)\r\n\r\nA collection of classes and components to help with debugging, like showing in real time the position and orientation of an object.\r\n\r\nList of features:\r\n- [`PP.DebugManager`](https://github.com/signorpipo/wle-pp/blob/main/wle_pp/wle_pp/src/pp/debug/debug_manager.js)\r\n  - manages all the debug features\r\n- [`PP.DebugVisualManager`](https://github.com/signorpipo/wle-pp/blob/main/wle_pp/wle_pp/src/pp/debug/debug_manager.js)\r\n  - a debug version of the visual manager, so that u can split between the normal visual and the debug ones\r\n  - it also feature some quick draw methods not available with the `PP.VisualManager` to add debug objects even more easily\r\n\r\n### Components\r\n\r\n[Code Folder](https://github.com/signorpipo/wle-pp/tree/main/wle_pp/wle_pp/src/pp/debug/components)\r\n  \r\nList of components:\r\n- [`pp-debug-manager`](https://github.com/signorpipo/wle-pp/blob/main/wle_pp/wle_pp/src/pp/debug/components/debug_manager_component.js)\r\n  - creates and updates a debug manager\r\n- [`pp-debug-transform`](https://github.com/signorpipo/wle-pp/blob/main/wle_pp/wle_pp/src/pp/debug/components/debug_transform_component.js)\r\n  - a handy component to add the debug transform debug to an existing object in the scene  \r\n  \r\n### Debug Functions Overwriter\r\n\r\n[Code Folder](https://github.com/signorpipo/wle-pp/tree/main/wle_pp/wle_pp/src/pp/debug/debug_functions_overwriter)\r\n\r\nList of features:\r\n- [`PP.DebugFunctionsOverwriter`](https://github.com/signorpipo/wle-pp/blob/main/wle_pp/wle_pp/src/pp/debug/debug_functions_overwriter/debug_functions_overwriter.js)\r\n  - Let you overwrite a group of functions for debug purposes, like counting the calls being made.\r\n  \r\n#### Debug Functions Performance Analyzer\r\n\r\n[Code Folder](https://github.com/signorpipo/wle-pp/tree/main/wle_pp/wle_pp/src/pp/debug/debug_functions_overwriter/debug_functions_performance_analyzer)\r\n\r\nList of features:\r\n- [`PP.DebugFunctionsPerformanceAnalyzer`](https://github.com/signorpipo/wle-pp/tree/main/wle_pp/wle_pp/src/pp/debug/debug_functions_overwriter/debug_functions_performance_analyzer/debug_functions_performance_analyzer.js)\r\n  - let you specify a class or an object instance and count all the calls that are being made on its functions as for its total execution time\r\n  - it's a very useful class to understand how many times specific functions are being called, helping you in finding bottlenecks or garbage collection issues\r\n- [`PP.DebugFunctionsPerformanceAnalysisResultsLogger`](https://github.com/signorpipo/wle-pp/tree/main/wle_pp/wle_pp/src/pp/debug/debug_functions_overwriter/debug_functions_performance_analyzer/debug_functions_performance_analysis_results_logger.js)\r\n  - an utility class to easily log the result of the `PP.DebugFunctionCallsCounter`\r\n- [`pp-debug-functions-performance-analyzer`](https://github.com/signorpipo/wle-pp/blob/main/wle_pp/wle_pp/src/pp/debug/debug_functions_overwriter/debug_functions_performance_analyzer/components/debug_functions_performance_analyzer_component.js)\r\n  - a handy component to add a function performance analyzer for any class you want and log the result\r\n  - u can also find some specific versions of this component like 'pp-debug-array-functions-performance-analyzer'\r\n  \r\n### How To\r\n\r\nYou can add debug visuals exactly like you would do for the plain visual feature.  \r\nIn addition to that, you can also use a bunch of quick draw methods only avaiable in the debug feature, for example: \r\n\r\n```js\r\nPP.myDebugVisualManager.drawLine(lifetimeSeconds, position, direction, length, color, thickness);\r\nPP.myDebugVisualManager.drawArrow(lifetimeSeconds, position, direction, length, color, thickness);\r\nPP.myDebugVisualManager.drawPoint(lifetimeSeconds, position, color, radius);\r\nPP.myDebugVisualManager.drawRaycast(lifetimeSeconds, raycastResult, showOnlyFirstHit, hitNormalLength, thickness);\r\n```\r\n\r\n## Gameplay\r\n\r\n[Code Folder](https://github.com/signorpipo/wle-pp/tree/main/wle_pp/wle_pp/src/pp/gameplay)\r\n\r\nA collection of gameplay features ready to be used.\r\n\r\n### Cauldron\r\n\r\n[Code Folder](https://github.com/signorpipo/wle-pp/tree/main/wle_pp/wle_pp/src/pp/gameplay/cauldron)\r\n\r\n#### Cauldron\r\n\r\n[Code Folder](https://github.com/signorpipo/wle-pp/tree/main/wle_pp/wle_pp/src/pp/gameplay/cauldron/cauldron)\r\n\r\nList of features:\r\n- [`PP.Direction2DTo3DConverter`](https://github.com/signorpipo/wle-pp/blob/main/wle_pp/wle_pp/src/pp/gameplay/cauldron/direction_2D_to_3D_converter.js)\r\n  - convert a 2D direction (like the ones from the gamepad stick) to a 3D direction based on a reference transform\r\n  - takes care of making the 3D direction flat, for example to keep moving parallel to the ground\r\n  - it also have an automatic and customizable way of detecting when the 3D direction should start to \"fly\", that is stop being flat\r\n- [`PP.NumberOverValue`](https://github.com/signorpipo/wle-pp/blob/main/wle_pp/wle_pp/src/pp/cauldron/cauldron/number_over_value.js)\r\n  - this set of classes let you create a special number, that interpolate between different numbers based on a value u used to get it\r\n  - it is especially useful if u want a number to change over time during a level, where the value is the time spent in the level itself\r\n  - the range version returns a random number in the range, where the range change based on the given value\r\n  - example:\r\n    ```js\r\n    //enemy speed will change from 5 to 8 as the time goes from 30 to 60\r\n    let enemySpeed = new PP.NumberOverValue(5, 8, 30, 60); \r\n    let currentSpeed = enemySpeed.get(timeElapsed);\r\n    ```\r\n  \r\n### Grab & Throw\r\n\r\n[Code Folder](https://github.com/signorpipo/wle-pp/tree/main/wle_pp/wle_pp/src/pp/gameplay/grab_throw)\r\n\r\nLet you add a grab and throw mechanic in your game with little effort.\r\nYou can find an outdated example of the Grab & Throw [here](https://github.com/signorpipo/wle_grab_throw).\r\n\r\nList of features:\r\n- [`pp-grabber-hand`](https://github.com/signorpipo/wle-pp/blob/main/wle_pp/wle_pp/src/pp/gameplay/grab_throw/grabber_hand.js)\r\n  - the component that let you grab other objects\r\n  - it is made to work when added on the player hand, even though is not a must\r\n  - this object must also have a `physx` component on itself, used to detect the grab\r\n- [`pp-grabbable`](https://github.com/signorpipo/wle-pp/blob/main/wle_pp/wle_pp/src/pp/gameplay/grab_throw/grabbable.js)\r\n  - the component you have to add to the object you want to grab\r\n  - this object must also have a `physx` component on itself, used to detect the grab and to simulate the throw\r\n\r\n#### How To\r\n\r\nThe configuration is pretty straight forward:\r\n1. Enable the `Physics` feature, that u can find under the `Project Settings`\r\n1. Add the following components somewhere in your scene:\r\n\t- [`pp-gamepads-manager`](https://github.com/signorpipo/wle-pp/blob/main/wle_pp/wle_pp/src/pp/input/gamepad/gamepad_managers_component.js)\r\n\t- [`pp-get-player-objects`](https://github.com/signorpipo/wle-pp/blob/main/wle_pp/wle_pp/src/pp/cauldron/components/get_player_objects.js)\r\n\t- If you are using one of the [wle_ppefault](https://github.com/signorpipo/wle-ppefault) default projects you will find these components already setup in the scene\r\n3. Add a `pp-grabber-hand` component to one of the hands of the player\r\n\t  - Make sure the `handedness` parameter of the component matches the hand one\r\n\t  - The component can also be added to a child of the hand if you want the grab detection to have an offset from the hand position\r\n4. Add a `physx` component on the same object\r\n\t  - The `physx` must be `kinematic` (if you select `trigger`, be sure to select `kinematic` first if it disappear, otherwise the object will fall)\r\n\t  - The `physx` should be set as `trigger` for the hand, otherwise it will push the objects that collide with it\r\n5. Add a `pp-grabbable` component on the object you want to grab\r\n\t  - In this case, the component must be added on the object itself, it can't be a child\r\n6. Add a `physx` component on the same object\r\n\t  - Be sure that the groups/block flags match the one u used for the hand\r\n\r\n### Integrations\r\n\r\n[Code Folder](https://github.com/signorpipo/wle-pp/tree/main/wle_pp/wle_pp/src/pp/gameplay/integrations)\r\n\r\nGameplay features that are integrations of already existing functionalities so that they are easier to use and more compliant to the PP library.\r\n\r\n### Construct Arcade\r\n\r\n[Code Folder](https://github.com/signorpipo/wle-pp/tree/main/wle_pp/wle_pp/src/pp/gameplay/integrations/construct_arcade)\r\n\r\nList of features:\r\n- [`PP.CAUtils`](https://github.com/signorpipo/wle-pp/tree/main/wle_pp/wle_pp/src/pp/gameplay/integrations/construct_arcade/ca_utils.js)\r\n  - a set of functions to interact with the Construct Arcade SDK, like getting the leaderboard or the data of the current user\r\n- [`PP.CADummyServer`](https://github.com/signorpipo/wle-pp/tree/main/wle_pp/wle_pp/src/pp/gameplay/integrations/construct_arcade/ca_dummy_server.js)\r\n  - u can add a dummy server to the CA utils so that when u want to test the funcionalities you can have a faked responde\r\n  - the dummy server can also be used to have a fallback for when there are errors even for the released app\r\n- [`pp-ca-display-leaderboard`](https://github.com/signorpipo/wle-pp/tree/main/wle_pp/wle_pp/src/pp/gameplay/integrations/construct_arcade/ca_display_leaderboard.js)\r\n  - let u easily display a construct arcade leaderboard\r\n  - u need to have two `text` components named `Names` and `Scores` as child of the object that has this component\r\n  \r\n### Experimental\r\n\r\n[Code Folder](https://github.com/signorpipo/wle-pp/tree/main/wle_pp/wle_pp/src/pp/gameplay/experimental)\r\n\r\nGameplay features that are in an experimental phase.\r\n\r\n#### Locomotion\r\n\r\n[Code Folder](https://github.com/signorpipo/wle-pp/tree/main/wle_pp/wle_pp/src/pp/gameplay/experimental/locomotion)\r\n\r\nGives u a standard VR locomotion, this means both smooth and teleport locomotion with physics collision check.  \r\nIt also check when the player goes inside the wall and obscure the view when that happens.  \r\nThe feature is in an experimental phase, this means u can use it but won't be very easy to adjust and may have weird bugs (please report them!).\r\n\r\n##### How To\r\n\r\nAdd the `pp-player-locomotion` component to the player in the scene.  \r\nA bit of setup is available on the component itself, other stuff is available in the code, even though it's not very readable as of now.  \r\nGood luck, you will need it!\r\n\r\n## Input\r\n\r\n[Code Folder](https://github.com/signorpipo/wle-pp/tree/main/wle_pp/wle_pp/src/pp/input)\r\n\r\nA collection of classes and component to read inputs like head/hand transform or gamepad buttons.\r\n\r\n### Cauldron\r\n\r\n[Code Folder](https://github.com/signorpipo/wle-pp/tree/main/wle_pp/wle_pp/src/pp/input/cauldron)\r\n\r\nList of features:\r\n- [`PP.Keyboard`](https://github.com/signorpipo/wle-pp/blob/main/wle_pp/wle_pp/src/pp/input/cauldron/keyboard.js)\r\n  - a class that makes it easier to access the keyboard state\r\n  - let you check if a button is pressed or it's just been pressed/released\r\n- [`PP.Mouse`](https://github.com/signorpipo/wle-pp/blob/main/wle_pp/wle_pp/src/pp/input/cauldron/mouse.js)\r\n  - a class that makes it easier to access the mouse state\r\n  - let you check if a button is pressed or it's just been pressed/released or if the cursor is moving\r\n  - you can get the position on the screen or in the 3D world, and also cast a physics ray from the mouse into the world  \r\n- [`pp-finger-cursor`](https://github.com/signorpipo/wle-pp/blob/main/wle_pp/wle_pp/src/pp/input/cauldron/finger_cursor.js)\r\n  - u can use this component to add a cursor on the tip of the index finger that can interact with WLE `cursor-target`\r\n- [`Input Types`](https://github.com/signorpipo/wle-pp/blob/main/wle_pp/wle_pp/src/pp/input/cauldron/input_types.js)\r\n  - a collection of enums used to specify the type of the input, like the handedness or if it is a gamepad or a hand\r\n- [`PP.InputUtils`](https://github.com/signorpipo/wle-pp/blob/main/wle_pp/wle_pp/src/pp/input/cauldron/input_utils.js)\r\n  - a bunch of functions to work with inputs\r\n- [`PP.InputManager`](https://github.com/signorpipo/wle-pp/blob/main/wle_pp/wle_pp/src/pp/input/cauldron/input_manager.js)\r\n  - a class that handle the creation and the update of the inputs like gamepad, mouse and keyboard\r\n- [`pp-input-manager`](https://github.com/signorpipo/wle-pp/blob/main/wle_pp/wle_pp/src/pp/input/cauldron/input_manager_component.js)\r\n  - handy component that will create a input manager and update it\r\n  - it creates some global variables like `PP.myMouse` or `PP.myGamepads` to easily access these devices\r\n- [`pp-switch-hand-object`](https://github.com/signorpipo/wle-pp/blob/main/wle_pp/wle_pp/src/pp/input/cauldron/switch_hand_object.js)\r\n  - automatically switch between a given gamepad hand object and tracked hand object\r\n- [`pp-tracked-hand-draw-all-joints`](https://github.com/signorpipo/wle-pp/blob/main/wle_pp/wle_pp/src/pp/input/cauldron/tracked_hand_draw_all_joints.js)\r\n  - given a mesh, it draws it on the specified tracked hand joint\r\n- [`pp-tracked-hand-draw-joint`](https://github.com/signorpipo/wle-pp/blob/main/wle_pp/wle_pp/src/pp/input/cauldron/tracked_hand_draw_joint.js)\r\n  - given a mesh, it draws it on all the tracked hand joints\r\n- [`pp-tracked-hand-draw-skin`](https://github.com/signorpipo/wle-pp/blob/main/wle_pp/wle_pp/src/pp/input/cauldron/tracked_hand_draw_skin.js)\r\n  - given a hand skin, it draws it on the tracked hand\r\n\r\n### Gamepad\r\n\r\n[Code Folder](https://github.com/signorpipo/wle-pp/tree/main/wle_pp/wle_pp/src/pp/input/gamepad)\r\n\r\nEverything u need to get inputs from a gamepad, and some utilities to animate a gamepad or get multiple buttons press.\r\nYou can find an outdated example of the Gamepad [here](https://github.com/signorpipo/wle_gamepad).\r\n\r\nList of features:\r\n- [`PP.UniversalGamepad`](https://github.com/signorpipo/wle-pp/blob/main/wle_pp/wle_pp/src/pp/input/gamepad/universal_gamepad.js)\r\n  - a simple interface to retrieve buttons and axes state, get the gamepad transform and also make it pulse/vibrate\r\n  - it works through gamepad cores, that specify how the buttons are activated (keyboard, mouse, gamepads)\r\n  - example:\r\n    ```js\r\n    PP.myLeftGamepad.registerButtonEventListener(PP.GamepadButtonID.THUMBSTICK, PP.GamepadButtonEvent.PRESS_START, this, this._thumbstickPressStart.bind(this));        \r\n    PP.myRightGamepad.getButtonInfo(PP.GamepadButtonID.TOP_BUTTON).isTouchEnd();    \r\n    PP.myLeftGamepad.getButtonInfo(PP.GamepadButtonID.SQUEEZE).isPressStart(2); // fast pressed 2 times     \r\n    PP.myGamepads[PP.Handedness.LEFT].getAxesInfo(PP.GamepadAxesID.THUMBSTICK).getAxes();\r\n    PP.myRightGamepad.pulse(0.5, 1);    \r\n    ```\r\n- [`Gamepad Buttons`](https://github.com/signorpipo/wle-pp/blob/main/wle_pp/wle_pp/src/pp/input/gamepad/gamepad_buttons.js)\r\n  - here u can find the enums for the buttons and axes ids and events and the classes the contains the buttons and axes infos\r\n- [`PP.GamepadCore`](https://github.com/signorpipo/wle-pp/blob/main/wle_pp/wle_pp/src/pp/input/gamepad/gamepad_cores/gamepad_core.js)\r\n  - the base class that u can inherit to create a custom gamepad core that u can then plug into the universal gamepad\r\n- [`PP.XRGamepadCore`](https://github.com/signorpipo/wle-pp/blob/main/wle_pp/wle_pp/src/pp/input/gamepad/gamepad_cores/xr_gamepad_core.js) / [`PP.KeyboardGamepadCore`](https://github.com/signorpipo/wle-pp/blob/main/wle_pp/wle_pp/src/pp/input/gamepad/gamepad_cores/keyboard_gamepad_core.js) / [`PP.ClassicGamepadCore`](https://github.com/signorpipo/wle-pp/blob/main/wle_pp/wle_pp/src/pp/input/gamepad/gamepad_cores/classic_gamepad_core.js)\r\n  - a few gamepad cores that let you retrieve the buttons through the xr/classic gamepads or the keyboard  \r\n- [`PP.BaseGamepad`](https://github.com/signorpipo/wle-pp/blob/main/wle_pp/wle_pp/src/pp/input/gamepad/base_gamepad.js)\r\n  - the base class that u can inherit to create your own gamepad, so that u can specify how buttons activate and stuff\r\n  - `PP.UniversalGamepad` inherits from this class\r\n- [`PP.GamepadUtils`](https://github.com/signorpipo/wle-pp/blob/main/wle_pp/wle_pp/src/pp/input/gamepad/cauldron/gamepad_utils.js)\r\n  - a bunch of functions that work with the gamepad\r\n  - let you check if multiple buttons are pressed at the same time, or if any button in a specified list is pressed\r\n- [`PP.GamepadsManager`](https://github.com/signorpipo/wle-pp/blob/main/wle_pp/wle_pp/src/pp/input/gamepad/cauldron/gamepads_manager.js)\r\n  - a class that handle the creation and the update of the gamepads\r\n- [`pp-gamepads-manager`](https://github.com/signorpipo/wle-pp/blob/main/wle_pp/wle_pp/src/pp/input/gamepad/cauldron/gamepad_managers_component.js)\r\n  - handy component that will create a gamepads manager and update it\r\n  - it adds by default a few gamepad cores like the `PP.XRGamepadCore` and the `PP.KeyboardGamepadCore`\r\n  - it will create a global `PP.myLeftGamepad` and a global `PP.myRightGamepad`\r\n  - it will also create a global `PP.myGamepads` that contains both gamepads and use `PP.Handedness` as index\r\n- [`pp-gamepad-mesh-animator`](https://github.com/signorpipo/wle-pp/blob/main/wle_pp/wle_pp/src/pp/input/gamepad/cauldron/gamepad_mesh_animator.js)\r\n  - component that let you animate a gamepad, that is buttons and axes move in the game like the one in real life\r\n  - to make this work you have to use a gamepad model where buttons and axes have a proper positioned pivot\r\n    - you can use [this 3D model](https://github.com/signorpipo/wle_assets/tree/main/wle_assets/assets/models/gamepads/meta_quest_2/classic/high_res) as a reference\r\n- [`pp-gamepad-control-scheme`](https://github.com/signorpipo/wle-pp/blob/main/wle_pp/wle_pp/src/pp/input/gamepad/cauldron/gamepad_control_scheme.js)\r\n  - component that let you add a visual control scheme on the gamepad\r\n  - to make this work you have to use a gamepad model where buttons and axes have a proper positioned pivot\r\n    - you can use [this 3D model](https://github.com/signorpipo/wle_assets/tree/main/wle_assets/assets/models/gamepads/meta_quest_2/classic/high_res) as a reference\r\n\t\r\n#### Virtual Gamepad\r\n\r\n[Code Folder](https://github.com/signorpipo/wle-pp/tree/main/wle_pp/wle_pp/src/pp/input/gamepad/virtual_gamepad)\r\n\r\nA virtual gamepad that let u use the gamepad on mobile devices.\r\n\r\nList of features:\r\n- [`pp-virtual-gamepad`](https://github.com/signorpipo/wle-pp/blob/main/wle_pp/wle_pp/src/pp/input/gamepad/virtual_gamepad/virtual_gamepad_component.js)\r\n  - add a virtual gamepad interface on top of the screen\r\n  - allow for a bit of customization of the interface, like specifying the colors, the buttons that should be visible, what kind of icon you want on every button and so on\r\n  - it also add a `PP.VirtualGamepadGamepadCore` to the `PP.UniversalGamepad` so that it automatically works with that\r\n- [`PP.VirtualGamepad`](https://github.com/signorpipo/wle-pp/blob/main/wle_pp/wle_pp/src/pp/input/gamepad/virtual_gamepad/virtual_gamepad.js)\r\n  - the actual virtual gamepad, you may want to use directly this class instead of the built in component if you want to specify a custom set of parameters to build the interface\r\n\r\n### Pose\r\n\r\n[Code Folder](https://github.com/signorpipo/wle-pp/tree/main/wle_pp/wle_pp/src/pp/input/pose)\r\n\r\nList of features:\r\n- [`PP.HeadPose`](https://github.com/signorpipo/wle-pp/blob/main/wle_pp/wle_pp/src/pp/input/pose/head_pose.js) / [`PP.HandPose`](https://github.com/signorpipo/wle-pp/blob/main/wle_pp/wle_pp/src/pp/input/pose/hand_pose.js)\r\n  - two classes that let you retrieve the pose of the head/hand, that is their transform and their linear and angular velocities\r\n- [`PP.TrackedHandJointPose`](https://github.com/signorpipo/wle-pp/blob/main/wle_pp/wle_pp/src/pp/input/pose/tracked_hand_joint_pose.js)\r\n  - let you retrieve the pose of the specified tracked hand joint, that is its transform and its linear and angular velocities\r\n- [`PP.TrackedHandPose`](https://github.com/signorpipo/wle-pp/blob/main/wle_pp/wle_pp/src/pp/input/pose/tracked_hand_pose.js)\r\n  - let you retrieve the pose of the specified tracked hand joints, that is their transform and their linear and angular velocities\r\n  - it is like having multiple `PP.TrackedHandJointPose` but without the need to update them all yourself\r\n\r\n#### Components\r\n\r\n[Code Folder](https://github.com/signorpipo/wle-pp/tree/main/wle_pp/wle_pp/src/pp/input/pose/components)\r\n  \r\nList of components:\r\n- [`pp-set-player-height`](https://github.com/signorpipo/wle-pp/blob/main/wle_pp/wle_pp/src/pp/input/pose/components/set_player_height.js)\r\n  - used on the pivot of the player let you specify its height, when the feature `local-floor` is disabled or not supported\r\n  - the component does nothing if `local-floor` is enabled and supported\r\n  - this let you fallback on a default height if not supported or when testing\r\n- [`pp-set-head-local-transform`](https://github.com/signorpipo/wle-pp/blob/main/wle_pp/wle_pp/src/pp/input/pose/components/set_head_local_transform.js) / [`pp-set-vr-head-local-transform`](https://github.com/signorpipo/wle-pp/blob/main/wle_pp/wle_pp/src/pp/input/pose/components/set_vr_head_local_transform.js) / [`pp-set-non-vr-head-local-transform`](https://github.com/signorpipo/wle-pp/blob/main/wle_pp/wle_pp/src/pp/input/pose/components/set_non_vr_head_local_transform.js) / [`pp-set-hand-local-transform`](https://github.com/signorpipo/wle-pp/blob/main/wle_pp/wle_pp/src/pp/input/pose/components/set_hand_local_transform.js)\r\n  - components that set the local transform of their object to the one of the head/hand, relative to the real space (reference space)\r\n  - fix forward can be used to make it so that the head/hand has the forward in the direction they look at since WebXR by default make it so the forward is in the opposite direction\r\n- [`pp-set-tracked-hand-joint-local-transform`](https://github.com/signorpipo/wle-pp/blob/main/wle_pp/wle_pp/src/pp/input/pose/components/set_tracked_hand_joint_local_transform.js)\r\n  - component that sets the local transform of their object to the one of the specified tracked hand joint\r\n- [`pp-copy-head-transform`](https://github.com/signorpipo/wle-pp/blob/main/wle_pp/wle_pp/src/pp/input/pose/components/copy_head_transform.js) / [`pp-copy-hand-transform`](https://github.com/signorpipo/wle-pp/blob/main/wle_pp/wle_pp/src/pp/input/pose/components/copy_hand_transform.js) / [`pp-copy-player-transform`](https://github.com/signorpipo/wle-pp/blob/main/wle_pp/wle_pp/src/pp/input/pose/components/copy_player_transform.js) / [`pp-copy-player-pivot-transform`](https://github.com/signorpipo/wle-pp/blob/main/wle_pp/wle_pp/src/pp/input/pose/components/copy_player_pivot_transform.js)\r\n  - components that set the world transform of its object to the one of the head/hand\r\n  - it needs a head/hand to be already setup in the scene\r\n\r\n## Plugin\r\n\r\n[Code Folder](https://github.com/signorpipo/wle-pp/tree/main/wle_pp/wle_pp/src/pp/plugin)\r\n\r\nA set of features that extends what WLE and Javascript already offer.\r\n\r\n### Component Mods\r\n\r\n[Code Folder](https://github.com/signorpipo/wle-pp/tree/main/wle_pp/wle_pp/src/pp/plugin/component_mods)\r\n\r\nThese files change some of the functions of WLE components, or add to them new ones:\r\n- [`clone_component_mod.js`](https://github.com/signorpipo/wle-pp/blob/main/wle_pp/wle_pp/src/pp/plugin/component_mods/clone_component_mod.js)\r\n  - adds a clone function to some built int component like mesh, text and collision\r\n- [`cursor_component_mod.js`](https://github.com/signorpipo/wle-pp/blob/main/wle_pp/wle_pp/src/pp/plugin/component_mods/cursor_component_mod.js) / [`cursor_target_component_mod.js`](https://github.com/signorpipo/wle-pp/blob/main/wle_pp/wle_pp/src/pp/plugin/component_mods/cursor_target_component_mod.js)\r\n  - adds double and triple click\r\n  - bunch of fixes\r\n- [`mouse_look_component_mod.js`](https://github.com/signorpipo/wle-pp/blob/main/wle_pp/wle_pp/src/pp/plugin/component_mods/mouse_look_component_mod.js)\r\n  - adds support for gamepad as a pointer to move the view\r\n  - improves how the view is rotated based on the pointer movement\r\n\r\n### Extensions\r\n\r\n[Code Folder](https://github.com/signorpipo/wle-pp/tree/main/wle_pp/wle_pp/src/pp/plugin/extensions)\r\n\r\nThe extensions add new functions to already existing features:\r\n- [`object_extension.js`](https://github.com/signorpipo/wle-pp/blob/main/wle_pp/wle_pp/src/pp/plugin/extensions/object_extension.js)\r\n  - greatly enhance what a WLE object can do\r\n  - create a consistent and user friendly interface to get position/rotation/scale and everything u need from the object\r\n  - all the extensions methods start with `pp_`\r\n  - let you easily get the data in World or Local form, and in Quaternion or Degrees\r\n  - lots of utilities to get a component in all the hierarchy, to change the active state of all the hierarchy, to change the parent without modifying its current world transform, to convert a position from/to object space and to make the object look at something\r\n  - at the start of the file you can find a comment section explaining all the features in more details\r\n  - example:\r\n    ```js\r\n    this.object.pp_getPosition();\r\n    this.object.pp_getScaleLocal(outScale);  //out parameters are optional, if empty will return a new one\r\n    this.object.pp_rotateAxis(angle, axis);\r\n    this.object.pp_convertPositionObjectToWorld(position, outPosition);\r\n    this.object.pp_getComponentHierarchy(type, index);   \r\n    ```\r\n- [`scene_extension.js`](https://github.com/signorpipo/wle-pp/blob/main/wle_pp/wle_pp/src/pp/plugin/extensions/scene_extension.js)\r\n  - adds some handy functions to the WL.scene object\r\n  - all the extensions methods start with `pp_`\r\n  - ranges from getting the scene root, to getting an object in the entire scene by name, or looking for a component in the entire scene\r\n  - at the start of the file you can find a comment section explaining all the features in more details\r\n  - example:\r\n    ```js\r\n    WL.scene.pp_getRoot();\r\n    WL.scene.pp_getComponent(\"mesh\");\r\n    WL.scene.pp_getObjectByName(\"name\");\r\n    ```\r\n- [`math_extension.js`](https://github.com/signorpipo/wle-pp/blob/main/wle_pp/wle_pp/src/pp/plugin/extensions/math_extension.js)\r\n  - adds some handy functions to the javascript Math library\r\n  - all the extensions methods start with `pp_`\r\n  - ranges from adding a clamp and a sign function that let you specify the sign of 0, to interpolation with easing functions, to random functions and utilities to compute angle ranges\r\n  - at the start of the file you can find a comment section explaining all the features in more details\r\n  - example:\r\n    ```js\r\n    Math.pp_clamp(value, start, end);\r\n    Math.pp_mapToRange(value, originRangeStart, originRangeEnd, newRangeStart, newRangeEnd);\r\n    Math.pp_randomInt(start, end);\r\n    Math.pp_interpolate(from, to, interpolationValue, easingFunction); \r\n    Math.pp_angleDistance(from, to);\r\n    ```\r\n- [`array_extension.js`](https://github.com/signorpipo/wle-pp/blob/main/wle_pp/wle_pp/src/pp/plugin/extensions/array_extension.js)\r\n  - adds some handy functions to the javascript Array/Float32Array/Int32Array/... libraries\r\n  - all the extensions methods start eaither with `pp_`, for method that applies on all arrays, or with the vector type that the Array represent, like `vec3_`, `quat_` and `mat4_`\r\n  - one of the purpose is just to make `glMatrix` functions be available on the array directly\r\n  - ranges from adding a simple remove function, to a push unique one, to one that gets the component along a specified axis and one to convert a quaternion to radians\r\n  - at the start of the file you can find a comment section explaining all the features in more details\r\n  - example:\r\n    ```js\r\n    let array = [];\r\n    array.pp_removeIndex(index);\r\n    array.pp_pushUnique(element);\r\n    array.vec3_componentAlongAxis(axis, outVector); //out parameters are optional, if empty will return a new one\r\n    array.quat_toRadians(); \r\n    array.mat4_getPosition();\r\n    ```\r\n\r\n## PP\r\n\r\n[Code Folder](https://github.com/signorpipo/wle-pp/tree/main/wle_pp/wle_pp/src/pp/pp)\r\n\r\nContains components and scripts related to the PP library or needed to setup it properly.\r\n\r\nList of features:\r\n- [`PP`](https://github.com/signorpipo/wle-pp/blob/main/wle_pp/wle_pp/src/pp/pp/pp.js)\r\n  - the global variables that contains every definitions in the PP library\r\n- [`pp-gateway`](https://github.com/signorpipo/wle-pp/blob/main/wle_pp/wle_pp/src/pp/pp/components/pp_gateway_component.js)\r\n  - entry point of the PP library\r\n  - setup some stuff like creating the `PP.InputManager` and the `PP.VisualManager`\r\n- [`pp-get-default-resources`](https://github.com/signorpipo/wle-pp/blob/main/wle_pp/wle_pp/src/pp/pp/components/get_default_resources.js)\r\n  - setup a variable `PP.myDefaultResources` so that it will contain some engine resources like meshes and materials\r\n- [`pp-get-player-objects`](https://github.com/signorpipo/wle-pp/blob/main/wle_pp/wle_pp/src/pp/pp/components/get_player_objects.js)\r\n  - setup a variable `PP.myPlayerObjects` so that it will contain the player objects that u have setup in the scene\r\n  - this variable can be used to easily obtain the player objects/transforms in the code\r\n\r\n## Tool\r\n\r\n[Code Folder](https://github.com/signorpipo/wle-pp/tree/main/wle_pp/wle_pp/src/pp/tool)\r\n\r\nA set of tools that can help while developing and debugging.\r\n\r\n### Cauldron\r\n\r\n[Code Folder](https://github.com/signorpipo/wle-pp/tree/main/wle_pp/wle_pp/src/pp/tool/cauldron)\r\n\r\nList of features:\r\n- [`pp-tool-cursor`](https://github.com/signorpipo/wle-pp/blob/main/wle_pp/wle_pp/src/pp/tool/cauldron/components/tool_cursor.js)\r\n  - component needed to interact with the tools\r\n  - it also work with hand tracking, by adding a cursor on the index finger tip\r\n  - just place it on one of the hands to use it\r\n\r\n### Console VR\r\n\r\n[Code Folder](https://github.com/signorpipo/wle-pp/tree/main/wle_pp/wle_pp/src/pp/tool/console_vr)\r\n\r\nLet u see the browser console from withing the vr session, making it easier to debug.\r\n\r\nThere is no need to understand the details of this since it's meant to be used.\r\nYou can find an outdated example of the Console VR [here](https://github.com/signorpipo/wle_consolevr).\r\n\r\n#### How To\r\n\r\nYou have to add a `pp-console-vr` component to the scene, usually on the hand since it will let you keep it with you.\r\n\r\nYou can find some flags to customize it on the component.  \r\n`OverrideConsoleBrowser` is the only important one, when enabled it will get the messages from every `console.log/warn/error` call.  \r\nIf u don't want to interfere with the built in console, you can disable it and use `PP.ConsoleVR` instead to log on it (`PP.ConsoleVR.log/error/warn`).\r\n\r\nYou can hide/show the Console VR by pressing both thumbstick buttons (`R3` + `L3`).  \r\nIf you click on the `P` button on the bottom left u can pin the console so that it will stay in place.\r\n\r\n### Easy Tune\r\n\r\n[Code Folder](https://github.com/signorpipo/wle-pp/tree/main/wle_pp/wle_pp/src/pp/tool/easy_tune)\r\n\r\nA set of tools and widgets to make it easier to tune/adjust the values in your game, and also add some \"toggable\" debug stuff.  \r\nThe main idea is that you have some values in the code that you would like to adjust at runtime, and this let you do exactly that.  \r\nFor this same reason, you can have some flags that enable some debug/test features, and you can change the flags values at runtime through this.\r\n\r\n#### Easy Tune\r\n\r\n[Code File Link](https://github.com/signorpipo/wle-pp/blob/main/wle_pp/wle_pp/src/pp/tool/easy_tune/easy_tune.js)\r\n\r\nThe main tool of this feature.  \r\nLet you visualize and edit the EasyTuneVariables you have created, that can be used in the code while also edited at runtime through this tool. \r\nYou can also import and export the variables at runtime, so that you can easily save and load your changes without having to edit the variables in the code every time.\r\n\r\nThere is no need to understand the details of this since it's meant to be used.  \r\nYou can find an outdated example of the Easy Tune [here](https://github.com/signorpipo/wle_easytune).\r\n\r\n##### How To\r\n\r\nYou have to add a `pp-easy-tune` component to the scene, usually on the hand since it will let you keep it with you.  \r\nYou can find some flags to customize it on the component.   \r\n\r\nYou can hide/show it by pressing both the right top and bottom buttons (`B`/`Y` + `A`/`X` on the meta quest gamepad).  \r\nIf you click on the `P` button on the bottom left u can pin the easy tune so that it will stay in place.\r\n\r\n#### Easy Tune Variables\r\n\r\n[Code File Link](https://github.com/signorpipo/wle-pp/tree/main/wle_pp/wle_pp/src/pp/tool/easy_tune/easy_tune_variables.js)\r\n\r\nThese are the variables that you can edit with the easy tune widget.\r\nYou can find different types:\r\n- Bool / Array of Bool\r\n- Number / Array of Number\r\n- Int / Array of Int\r\n- Transform\r\n  \r\nThe easy t","readmeFilename":"README.md"}