diff --git a/server/TrackedProperty.ts b/server/TrackedProperty.ts new file mode 100644 index 0000000..12b596b --- /dev/null +++ b/server/TrackedProperty.ts @@ -0,0 +1,23 @@ +export class TrackedProperty { + private trackedValue?:T; + private updateCallback?:(value:T) => void; + + constructor(initialValue?:T) { + this.trackedValue = initialValue; + } + + public set OnChange(value:() => void) { + this.updateCallback = value; + } + + public get Value() { + return this.trackedValue; + } + + public set Value(value) { + this.trackedValue = value; + if (this.updateCallback && value) { + this.updateCallback(value); + } + } +} \ No newline at end of file