• There is NO official Otland's Discord server and NO official Otland's server list. The Otland's Staff does not manage any Discord server or server list. Moderators or administrator of any Discord server or server lists have NO connection to the Otland's Staff. Do not get scammed!
  • 2026 staff recruitment is open! Check it out and consider applying!
  • New resources must be posted under Resources tab. A discussion thread will be created automatically, you can't open threads manually anymore.

Lua vector helper

Lyu

Well-Known Member
Joined
Jul 13, 2018
Messages
14
Solutions
1
Reaction score
51
Hi, here's a simple lua vector helper i just wrote:
LUA:
--[[
    Lua vector helper created by Lyµ
    Discord: Lyµ#8767
]]

vector = {}

setmetatable(vector, {
    __call = function(self, ...)
        local obj = {...}
        return setmetatable(obj, {__index = self})
    end
})

function vector:front()
    return self[1]
end

function vector:back()
    return self[#self]
end

function vector:at(index)
    return self[index]
end

function vector:empty()
    return #self == 0
end

function vector:size()
    return #self
end

function vector:clear()
    for i = 1, #self do
        self[i] = nil
    end
end

function vector:emplace_back(element)
    self[#self + 1] = element
end

function vector:emplace_front(element)
    table.insert(self, 1, element)
end

function vector:erase(element)
    for i = 1, #self do
        if self[i] == element then
            table.remove(self, i)
            break
        end
    end
end

function vector:pop_back()
    self[#self] = nil
end

function vector:pop_front()
    self:erase(self[1])
end

function vector:rand()
    return self[math.random(#self)]
end

github gist: lua vector helper (https://gist.github.com/Lyuzera/83e7fde34862140eff8739d2ca3e5d8f)

example of how to use:
LUA:
local vec = vector(5, 2)

vec:pop_front()
vec:emplace_back(10)

print(vec:front(), vec:back()) --> 2    10
 
Last edited:
Back
Top