2025-06-04 05:02:57 +08:00

67 lines
1.9 KiB
Plaintext

CameraAdditiveEffectManager = class("CameraAdditiveEffectManager")
function CameraAdditiveEffectManager.Me()
if nil == CameraAdditiveEffectManager.me then
CameraAdditiveEffectManager.me = CameraAdditiveEffectManager.new()
end
return CameraAdditiveEffectManager.me
end
-- static function begin
function CameraAdditiveEffectManager.CheckPriority(effect, priority)
local manager = FunctionCameraAdditiveEffect.Me()
local currentEffect = manager:GetEffect(effect.type)
return not (nil ~= currentEffect and currentEffect.running and nil ~= currentEffect.priority and currentEffect.priority > priority)
end
function CameraAdditiveEffectManager.CheckToken(effect, token)
return effect.running and effect.token == token
end
function CameraAdditiveEffectManager.StartEffect(effect, priority)
local manager = FunctionCameraAdditiveEffect.Me()
manager:EndEffectByType(effect.type)
manager:StartEffect(effect)
effect.priority = priority
if nil == effect.token then
effect.token = 1
else
effect.token = effect.token + 1
end
end
function CameraAdditiveEffectManager.EndEffect(effect)
local manager = FunctionCameraAdditiveEffect.Me()
manager:EndEffect(effect)
end
-- static function end
function CameraAdditiveEffectManager:ctor()
self.effectShake = CameraAdditiveEffectShake.new()
end
-- return token
function CameraAdditiveEffectManager:StartShake(range, duration, curve, priority)
priority = priority or 1
if not CameraAdditiveEffectManager.CheckPriority(self.effectShake, priority) then
return nil
end
CameraAdditiveEffectManager.EndEffect(self.effectShake)
self.effectShake:SetParams(range, duration, curve)
CameraAdditiveEffectManager.StartEffect(self.effectShake, priority)
return self.effectShake.token
end
function CameraAdditiveEffectManager:EndShake(token)
if not CameraAdditiveEffectManager.CheckToken(self.effectShake, token) then
return
end
CameraAdditiveEffectManager.EndEffect(self.effectShake)
end