can someone tell me why this throws the error "attempt to call global vec a table value"?
vec clearly has its metatable set with a call metaevent
vec= { x=0, y=0, mag=function(o) return sqrt (o.x^2+o.y^2) end, ang=function(o) return atan2(o.x, o.y ) end, nrm=function(o) return vec(o:ang()/360) end, } vecmeta= { __call=function(o,x,y) o =o or {} o.x=y and x or cos((x+90)/360) o.y=y and y or-sin((x+90)/360) return setmetatable(o,vec) end, __eq=function(a,b) a=type(a) == "number" and vec(a,a) or a b=type(b) == "number" and vec(b,b) or b return (a.x==b.x and a.y==b.y) end, __add=function(a,b) a=type(a) == "number" and vec(a,a) or a b=type(b) == "number" and vec(b,b) or b return vec(a.x+b.x,a.y+b.y) end, __sub=function(a,b) a=type(a) == "number" and vec(a,a) or a b=type(b) == "number" and vec(b,b) or b return vec(a.x-b.x,a.y-b.y) end, __mul=function(a,b) a=type(a) == "number" and vec(a,a) or a b=type(b) == "number" and vec(b,b) or b return vec(a.x*b.x,a.y*b.y) end, __div=function(a,b) a=type(a) == "number" and vec(a,a) or a b=type(b) == "number" and vec(b,b) or b return vec(a.x/b.x,a.y/b.y) end, } setmetatable(vec, vecmeta) local test = { pos=vec(0,0), vel=vec(0,0), } |
[Please log in to post a comment]