Files
wnsrc/lua/derma/derma_animation.lua

81 lines
1.4 KiB
Lua
Raw Normal View History

2024-08-04 22:55:00 +03:00
--[[
| This file was obtained through the combined efforts
| of Madbluntz & Plymouth Antiquarian Society.
|
| Credits: lifestorm, Gregory Wayne Rossel JR.,
| Maloy, DrPepper10 @ RIP, Atle!
|
| Visit for more: https://plymouth.thetwilightzone.ru/
--]]
local DermaAnimation = {}
DermaAnimation.__index = DermaAnimation
function DermaAnimation:Run()
if ( !self.Running ) then return end
local time = SysTime()
local delta = ( time - self.StartTime ) / self.Length
delta = delta ^ ( 1.0 - ( delta - 0.5 ) )
-- If we have ended we run once more with the Finished member set
-- This allows us to clean up in the same function..
if ( time > self.EndTime ) then
self.Finished = true
self.Running = nil
delta = 1
end
self.Func( self.Panel, self, delta, self.Data )
self.Started = nil
end
function DermaAnimation:Start( Length, Data )
if ( self.Length == 0 ) then return end
self.Running = true
self.Started = true
self.Finished = nil
self.Length = Length
self.StartTime = SysTime()
self.EndTime = SysTime() + Length
self.Data = Data
end
function DermaAnimation:Stop()
if ( !self.Running ) then return end
self.Finished = true
self.Running = nil
end
function DermaAnimation:Active()
return self.Running
end
function Derma_Anim( name, panel, func )
local anim = {}
anim.Name = name
anim.Panel = panel
anim.Func = func
setmetatable( anim, DermaAnimation )
return anim
end