I am using oop. I made a class but it’s object’s self becomes whatever I send to the function
for example:
Inside random script
v:GetVector3(5.5)
Inside module
function Vertex:GetVector3(y: number)
print(self) -- returns 5.5
return Vector3.new(self["x"], y, self["y"])
end
Vertex module
local Vertex = {}
Vertex.__index = Vertex
local sss = game:GetService("ServerScriptService")
local types = require(sss.Types)
function Vertex.new(x: number,y: number): types.Vertex -- big triangle coordinates.
local skeleton = {
["x"] = x,
["y"] = y,
["halfedges"] = {}
}
setmetatable(skeleton, Vertex)
print(skeleton)
return skeleton
end
function Vertex:AddHalfEdge(halfedge)
table.insert(self.halfedges,halfedge)
end
function Vertex:RemoveHalfEdge(halfedge)
for i,v in ipairs(self.halfedges) do
if v == halfedge then
table.remove(self.halfedges,i)
break
end
end
end
function Vertex:__add(v2)
return Vertex.new(self.x + v2.x, self.y + v2.y)
end
function Vertex:__sub(v2)
return Vertex.new(self.x - v2.x, self.y - v2.y)
end
function Vertex:GetVector3(y: number)
print(self)
return Vector3.new(self["x"], y, self["y"])
end
function Vertex:Magnitude(Vertex2)
return math.sqrt(math.pow(Vertex2.x - self.x,2) + math.pow(Vertex2.y - self.y,2))
end
function Vertex:MidPoint(v2)
return Vertex.new((self.x + v2.x)/2, (self.y + v2.y)/2)
end
function Vertex:Show(t,y)
coroutine.wrap(function()
local part = Instance.new("Part")
part.Size = Vector3.new(1,1,1)
part.Position = Vector3.new(self.x,y,self.y)
part.Anchored = true
part.Parent = workspace
part.Material = Enum.Material.Neon
part.Color = Color3.new(0.666667, 0, 1)
part.CanCollide = false
task.wait(t)
part:Destroy()
end)()
end
return Vertex