--[[ Basic UI Animation Manager by darraghd493 A basic management library for UI libraries. ]] local TweenService = game:GetService("TweenService") local UIAnimationManager = {} UIAnimationManager.ActiveTweens = {} function UIAnimationManager:Play(instance: Instance, tweenInfo: TweenInfo, properties: table, tag: string?) assert(instance, "Instance is required") assert(tweenInfo, "TweenInfo is required") assert(properties, "Properties table is required") self:Cancel(instance, tag) local tween = TweenService:Create(instance, tweenInfo, properties) local tweenTag = tag or "default" self.ActiveTweens[instance] = self.ActiveTweens[instance] or {} self.ActiveTweens[instance][tweenTag] = tween tween.Completed:Connect(function() if self.ActiveTweens[instance] then self.ActiveTweens[instance][tweenTag] = nil if next(self.ActiveTweens[instance]) == nil then self.ActiveTweens[instance] = nil end end end) tween:Play() return tween end function UIAnimationManager:Cancel(instance: Instance, tag: string?) local instanceTweens = self.ActiveTweens[instance] if not instanceTweens then return end if tag then local tween = instanceTweens[tag] if tween then tween:Cancel() instanceTweens[tag] = nil end else for key, tween in pairs(instanceTweens) do tween:Cancel() instanceTweens[key] = nil end end if next(instanceTweens) == nil then self.ActiveTweens[instance] = nil end end function UIAnimationManager:CancelAll() for instance, _ in pairs(self.ActiveTweens) do self:Cancel(instance) end end return UIAnimationManager