local Direction = require("lib.direction") ---@class Position ---@field x number ---@field y number ---@field z number ---@field dir Direction local Position = {} Position.__index = Position ---@return Position function Position:Empty() local t = {} setmetatable(t, Position) t.x = 0 t.y = 0 t.z = 0 t.dir = Direction.NORTH return t end ---@param x number ---@param y number ---@param z number ---@param dir Direction ---@return Position function Position:Create(x, y, z, dir) local t = {} setmetatable(t, Position) t.x = x t.y = y t.z = z t.dir = dir or Direction.NORTH return t end ---@param other Position ---@return Position function Position:Copy(other) local t = {} setmetatable(t, Position) t.x = other.x t.y = other.y t.z = other.z t.dir = other.dir return t end ---@param other Position function Position:Add(other) self.x = self.x + other.x self.y = self.y + other.y self.z = self.z + other.z end ---@param other Position function Position:Subtract(other) self.x = self.x - other.x self.y = self.y - other.y self.z = self.z - other.z end return Position