From da24d62d614f4fa032f1d24cadae303ccd95dee8 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Michal=20Kol=C3=A1=C5=99?= Date: Wed, 20 Mar 2024 15:45:45 +0100 Subject: [PATCH] WaitForAll sync node --- src/nodes/WaitForAll.ts | 41 +++++++++++++++++++++++++++++++++++++++++ src/nodes/index.ts | 1 + 2 files changed, 42 insertions(+) create mode 100644 src/nodes/WaitForAll.ts diff --git a/src/nodes/WaitForAll.ts b/src/nodes/WaitForAll.ts new file mode 100644 index 0000000..a490fb9 --- /dev/null +++ b/src/nodes/WaitForAll.ts @@ -0,0 +1,41 @@ +import {ImageVar} from './io/AbstractIOSet'; +import Node from "./Node"; +import {waitForMedia} from "../utils"; + +const inputs = { + image0: { + type: 'Image' + } as ImageVar, + image1: { + type: 'Image' + } as ImageVar, +} + +const outputs = { + image0: { + type: 'Image' + } as ImageVar, + image1: { + type: 'Image' + } as ImageVar, +} + +export default class WaitForAll extends Node { + constructor(options = {}) { + super('WaitForAll', inputs, outputs); + } + + async _update() { + if (!(this.in.image0.value && this.in.image1.value)) { + return; + } + + await Promise.all([ + waitForMedia(this.in.image0.value), + waitForMedia(this.in.image1.value) + ]) + + this.out.image0.value = this.in.image0.value; + this.out.image1.value = this.in.image1.value; + } +} \ No newline at end of file diff --git a/src/nodes/index.ts b/src/nodes/index.ts index 140f07e..c40bcad 100644 --- a/src/nodes/index.ts +++ b/src/nodes/index.ts @@ -33,3 +33,4 @@ export {default as FaceFeaturePosition} from './AI/FaceFeaturePosition'; export {default as Eval} from './Eval'; export {default as QRCodeDetector} from './QRCodeDetector'; export {default as MarkerDetector} from './MarkerDetector'; +export {default as WaitForAll} from './WaitForAll';