From 9e11ea3729e74374afe8d4c7e43fd716e47b7a69 Mon Sep 17 00:00:00 2001 From: HF Date: Fri, 11 Nov 2022 00:51:05 +0100 Subject: [PATCH] give extensions a way to hook into pixel updates via window.registerPixelUpdates --- src/store/middleware/extensions.js | 2 ++ src/ui/PixelTransferController.js | 10 ++++++++++ 2 files changed, 12 insertions(+) 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;