function SpringObject.ObserveOnSignal(M,R)return Observable.new(function(e)local l=Maid.new()local r,Z=StepUtils.bindToSignal(R,function()local R,l=SpringUtils.animating(M._currentSpring)e:Fire(SpringUtils.fromLinearIfNeeded(l))return R end)l:GiveTask(Z)l:GiveTask(M.Changed:Connect(r))r()return l end)end

function SpringObject:ObserveOnSignal(signal)
	return Observable.new(function(sub)
		local maid = Maid.new()

		local startAnimate, stopAnimate = StepUtils.bindToSignal(signal, function()
			local animating, position = SpringUtils.animating(self._currentSpring)
			sub:Fire(SpringUtils.fromLinearIfNeeded(position))
			return animating
		end)

		maid:GiveTask(stopAnimate)
		maid:GiveTask(self.Changed:Connect(startAnimate))
		startAnimate()

		return maid
	end)
end
