dobrograd-13-06-2022/garrysmod/addons/util-dlib/lua/dlib/classes/rainbow.lua
Jonny_Bro (Nikita) e4d5311906 first commit
2023-11-16 15:01:19 +05:00

143 lines
3.8 KiB
Lua

local HUDCommons = HUDCommons
local rnd = util.SharedRandom
local Color = Color
local math = math
local sin = math.sin
local cos = math.cos
do
local _class_0
local _base_0 = {
Randomize = function(self)
self.pointer = 1
do
local _accum_0 = { }
local _len_0 = 1
for i = 1, self.iterations do
_accum_0[_len_0] = Color(128 + rnd(self.seed, -128, 127, i * self.strength), 128 + rnd(self.seed, -128, 127, i * self.strength + self.move), 128 + rnd(self.seed, -128, 127, i * self.strength + self.move * 2))
_len_0 = _len_0 + 1
end
self.values = _accum_0
end
return self
end,
Next = function(self)
self.pointer = self.pointer + 1
if #self.values < self.pointer then
self.pointer = 1
end
return self.values[self.pointer]
end
}
_base_0.__index = _base_0
_class_0 = setmetatable({
__init = function(self, seed, iterations, strength, move)
if seed == nil then
seed = 'DLib.RandomRainbow'
end
if iterations == nil then
iterations = 8
end
if strength == nil then
strength = 1
end
if move == nil then
move = iterations * 2
end
self.seed = seed
self.iterations = iterations
self.strength = strength
self.move = move
self.values = { }
self.pointer = 1
return self:Randomize()
end,
__base = _base_0,
__name = "RandomRainbow"
}, {
__index = _base_0,
__call = function(cls, ...)
local _self_0 = setmetatable({}, _base_0)
cls.__init(_self_0, ...)
return _self_0
end
})
_base_0.__class = _class_0
DLib.RandomRainbow = _class_0
end
do
local _class_0
local _base_0 = {
Create = function(self)
self.pointer = 1
if self.forward then
do
local _accum_0 = { }
local _len_0 = 1
for i = 1, self.length do
_accum_0[_len_0] = Color(128 * self.mult + cos(i * self.strength) * 127 * self.mult, 128 + cos(i * self.strength + self.move) * 127 * self.mult, 128 * self.mult + cos(i * self.strength + self.move * 2) * 127 * self.mult)
_len_0 = _len_0 + 1
end
self.values = _accum_0
end
else
do
local _accum_0 = { }
local _len_0 = 1
for i = 1, self.length do
_accum_0[_len_0] = Color(128 * self.mult + sin(i * self.strength) * 127 * self.mult, 128 + sin(i * self.strength + self.move) * 127 * self.mult, 128 * self.mult + sin(i * self.strength + self.move * 2) * 127 * self.mult)
_len_0 = _len_0 + 1
end
self.values = _accum_0
end
end
return self
end,
Next = function(self)
self.pointer = self.pointer + 1
if #self.values < self.pointer then
self.pointer = 1
end
return self.values[self.pointer]
end
}
_base_0.__index = _base_0
_class_0 = setmetatable({
__init = function(self, length, strength, move, forward, mult)
if length == nil then
length = 64
end
if strength == nil then
strength = 0.2
end
if move == nil then
move = 2
end
if forward == nil then
forward = true
end
if mult == nil then
mult = 1
end
self.mult = mult
self.length = length
self.strength = strength
self.move = move
self.forward = forward
self.values = { }
self.pointer = 1
return self:Create()
end,
__base = _base_0,
__name = "Rainbow"
}, {
__index = _base_0,
__call = function(cls, ...)
local _self_0 = setmetatable({}, _base_0)
cls.__init(_self_0, ...)
return _self_0
end
})
_base_0.__class = _class_0
DLib.Rainbow = _class_0
return _class_0
end