From c425f8f56a65e23d4484dc41e467cb19507d0681 Mon Sep 17 00:00:00 2001 From: Matthew Miller Date: Sat, 12 Apr 2025 10:03:56 -0400 Subject: [PATCH 1/2] Added Observe method to SustainModel --- .../src/Shared/Sustain/SustainModel.lua | 24 +++++++++++++++++++ 1 file changed, 24 insertions(+) diff --git a/src/transitionmodel/src/Shared/Sustain/SustainModel.lua b/src/transitionmodel/src/Shared/Sustain/SustainModel.lua index 274f43fb1f..02955ed2b3 100644 --- a/src/transitionmodel/src/Shared/Sustain/SustainModel.lua +++ b/src/transitionmodel/src/Shared/Sustain/SustainModel.lua @@ -10,6 +10,7 @@ local require = require(script.Parent.loader).load(script) local BaseObject = require("BaseObject") local Maid = require("Maid") +local Observable = require("Observable") local Promise = require("Promise") local Signal = require("Signal") @@ -95,6 +96,29 @@ function SustainModel:PromiseSustain(doNotAnimate: boolean?) return self:_promiseSustained() end +--[=[ + Observes the current state of the SustainModel. + Emits true when sustaining and false otherwise. + + @return Observable +]=] +function SustainModel:Observe() + return Observable.new(function(sub) + if not self.Destroy then + warn("[SustainModel.Observe] - Connecting to dead SustainModel") + sub:Complete() + end + + local connection = self.SustainChanged:Connect(function(isSustained) + sub:Fire(isSustained) + end) + + sub:Fire(self._isSustained) + + return connection + end) +end + function SustainModel:_promiseSustained() if not self._isSustained then return Promise.resolved() From c2378a366456327b5ceacd1929abc76d5c5aa249 Mon Sep 17 00:00:00 2001 From: Matthew Miller Date: Sat, 12 Apr 2025 10:08:01 -0400 Subject: [PATCH 2/2] Update SustainModel.lua Oops --- src/transitionmodel/src/Shared/Sustain/SustainModel.lua | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/transitionmodel/src/Shared/Sustain/SustainModel.lua b/src/transitionmodel/src/Shared/Sustain/SustainModel.lua index 02955ed2b3..c9564885fc 100644 --- a/src/transitionmodel/src/Shared/Sustain/SustainModel.lua +++ b/src/transitionmodel/src/Shared/Sustain/SustainModel.lua @@ -107,6 +107,7 @@ function SustainModel:Observe() if not self.Destroy then warn("[SustainModel.Observe] - Connecting to dead SustainModel") sub:Complete() + return end local connection = self.SustainChanged:Connect(function(isSustained) @@ -166,4 +167,4 @@ function SustainModel:_executeSustain(doNotAnimate: boolean?) end -return SustainModel \ No newline at end of file +return SustainModel