Added common file to store useful functions

This commit is contained in:
Иван Грачёв 2021-03-26 22:32:47 +05:00
parent 03f68e85e5
commit 2f8c949776
2 changed files with 45 additions and 9 deletions

26
koptilnya/common.txt Normal file
View File

@ -0,0 +1,26 @@
NULL_ENTITY = entity(0)
function deepcopy(orig)
local orig_type = type(orig)
local copy
if orig_type == 'table' then
copy = {}
for orig_key, orig_value in next, orig, nil do
copy[deepcopy(orig_key)] = deepcopy(orig_value)
end
setmetatable(copy, deepcopy(getmetatable(orig)))
else -- number, string, boolean, etc
copy = orig
end
return copy
end
function table:merge(table1, table2)
local newTable = deepcopy(table1)
for k, v in pairs(table2) do
newTable[k] = v
end
return newTable
end

View File

@ -44,16 +44,26 @@ function render.drawArc(x, y, ang, p, rad, seg)
end
function render.drawFilledCircle(x, y, radius, seg)
local cir = {}
local cir = {}
table.insert(cir, { x = x, y = y, u = 0.5, v = 0.5 })
for i = 0, seg do
local a = math.rad(( i / seg ) * -360)
table.insert(cir, { x = x + math.sin( a ) * radius, y = y + math.cos( a ) * radius, u = math.sin( a ) / 2 + 0.5, v = math.cos( a ) / 2 + 0.5 })
end
table.insert(cir, { x = x, y = y, u = 0.5, v = 0.5 })
for i = 0, seg do
local a = math.rad(( i / seg ) * -360)
table.insert(cir, { x = x + math.sin( a ) * radius, y = y + math.cos( a ) * radius, u = math.sin( a ) / 2 + 0.5, v = math.cos( a ) / 2 + 0.5 })
end
local a = math.rad(0)
table.insert(cir, { x = x + math.sin( a ) * radius, y = y + math.cos( a ) * radius, u = math.sin( a ) / 2 + 0.5, v = math.cos( a ) / 2 + 0.5 })
local a = math.rad(0)
table.insert(cir, { x = x + math.sin( a ) * radius, y = y + math.cos( a ) * radius, u = math.sin( a ) / 2 + 0.5, v = math.cos( a ) / 2 + 0.5 })
render.drawPoly(cir)
render.drawPoly(cir)
end
function render.drawRotatedSimpleText(x, y, text, ang)
local m = Matrix()
m:translate(Vector(x, y, 0 ))
m:rotate(Angle(0, ang, 0))
render.pushMatrix(m)
render.drawSimpleText(0, 0, text)
render.popMatrix()
end