diff --git a/src/store/middleware/extensions.js b/src/store/middleware/extensions.js index 5005f05..5decd89 100644 --- a/src/store/middleware/extensions.js +++ b/src/store/middleware/extensions.js @@ -1,6 +1,8 @@ /* * sends events via window.pixelPlanetEvents to potential * Extensions and Userscripts + * Also check out ui/PixelTransferController.js, which sends received + * pixels to a window.registerPixelUpdates callback * */ diff --git a/src/ui/PixelTransferController.js b/src/ui/PixelTransferController.js index 9dbde2d..63c3c42 100644 --- a/src/ui/PixelTransferController.js +++ b/src/ui/PixelTransferController.js @@ -28,6 +28,13 @@ class PixelTransferController { * [[i, j, offset, colorold, colornew], ...] */ this.clientPredictions = []; + /* + * allow extensions to hook into pixel updates + */ + this.extension = null; + window.registerPixelUpdates = (cb) => { + this.extension = cb; + }; } initialize(store, socketClient, getRenderer) { @@ -211,6 +218,9 @@ class PixelTransferController { j, pixels, }) { + if (this.extension) { + this.extension(i, j, pixels); + } pixels.forEach((pxl) => { const [offset, color] = pxl; const { clientPredictions } = this;