189 lines
4.7 KiB
Lua
189 lines
4.7 KiB
Lua
next = ag.next
|
|
type = ag.type
|
|
|
|
pairs = function(table)
|
|
return next, table, nil
|
|
end
|
|
|
|
ipairs = function(table)
|
|
local iter_func = function(t, i)
|
|
i = i + 1
|
|
if t[i] == nil then
|
|
return nil
|
|
else
|
|
return i, t[i]
|
|
end
|
|
end
|
|
return iter_func, table, 0
|
|
end
|
|
|
|
ag.createAMotor = function(obj1, obj2, axis0, axis1, axis2)
|
|
local function setAMotorAxis(amotor, anum, axis)
|
|
local rel, x, y, z = 0, 1, 0, 0
|
|
for k, v in pairs(axis) do
|
|
if (k == "rel") then
|
|
rel = v
|
|
elseif (k == "x") then
|
|
x = v
|
|
elseif (k == "y") then
|
|
y = v
|
|
elseif (k == "z") then
|
|
z = v
|
|
elseif (k == "angle") then
|
|
amotor:setAngle(anum, v)
|
|
elseif (k == "lo_stop") then
|
|
amotor:setLoStop(v)
|
|
elseif (k == "hi_stop") then
|
|
amotor:setHiStop(v)
|
|
elseif (k == "vel") then
|
|
amotor:setVel(v)
|
|
elseif (k == "fmax") then
|
|
amotor:setFMax(v)
|
|
elseif (k == "bounce") then
|
|
amotor:setBounce(v)
|
|
end
|
|
end
|
|
amotor:setAxis(anum, rel, x, y, z)
|
|
end
|
|
|
|
local o1 = obj1
|
|
local o2 = obj2
|
|
local num_axes = 0
|
|
|
|
if (type(obj1) == "number") then
|
|
if (obj1 == 0) then
|
|
o1 = { id = 0 }
|
|
end
|
|
end
|
|
|
|
if (type(obj2) == "number") then
|
|
if (obj2 == 0) then
|
|
o2 = { id = 0 }
|
|
end
|
|
end
|
|
|
|
local amotor = ag._createAMotor(o1, o2)
|
|
|
|
if (amotor ~= nil) then
|
|
if (axis0 ~= nil) then
|
|
setAMotorAxis(amotor, 0, axis0)
|
|
num_axes = 1
|
|
if (axis1 ~= nil) then
|
|
setAMotorAxis(amotor, 1, axis1)
|
|
num_axes = 1
|
|
if (axis2 ~= nil) then
|
|
setAMotorAxis(amotor, 2, axis2)
|
|
num_axes = 2
|
|
end
|
|
end
|
|
end
|
|
amotor:setNumAxes(num_axes)
|
|
else
|
|
ag.println("Error creating AMotor!")
|
|
end
|
|
|
|
return amotor
|
|
end
|
|
|
|
ag.createHinge = function(obj1, obj2, anchor, axis)
|
|
local o1 = obj1
|
|
local o2 = obj2
|
|
|
|
if (type(obj1) == "number") then
|
|
if (obj1 == 0) then
|
|
o1 = { id = 0 }
|
|
end
|
|
end
|
|
|
|
if (type(obj2) == "number") then
|
|
if (obj2 == 0) then
|
|
o2 = { id = 0 }
|
|
end
|
|
end
|
|
|
|
return ag._createHinge(o1, o2,
|
|
anchor[1], anchor[2], anchor[3],
|
|
axis[1], axis[2], axis[3])
|
|
end
|
|
|
|
ag.loadModel = function(name, args)
|
|
local scale = 1.0
|
|
local static = false
|
|
local reference = false
|
|
if (type(args) == "table") then
|
|
if (type(args.scale) == "number") then
|
|
scale = args.scale
|
|
end
|
|
if (type(args.static) == "boolean") then
|
|
static = args.static
|
|
end
|
|
if (type(args.reference) == "boolean") then
|
|
reference = args.reference
|
|
end
|
|
end
|
|
return ag.loadModelSpecify(name, scale, static, reference)
|
|
end
|
|
|
|
ag.createBox = function(x, y, z, args)
|
|
local static = false
|
|
local reference = false
|
|
if (type(args) == "table") then
|
|
if (type(args.static) == "boolean") then
|
|
static = args.static
|
|
end
|
|
if (type(args.reference) == "boolean") then
|
|
reference = args.reference
|
|
end
|
|
end
|
|
return ag.createBoxSpecify(x, y, z, static, reference)
|
|
end
|
|
|
|
ag.createSphere = function(radius, args)
|
|
local static = false
|
|
local reference = false
|
|
if (type(args) == "table") then
|
|
if (type(args.static) == "boolean") then
|
|
static = args.static
|
|
end
|
|
if (type(args.reference) == "boolean") then
|
|
reference = args.reference
|
|
end
|
|
end
|
|
return ag.createSphereSpecify(radius, static, reference)
|
|
end
|
|
|
|
ag.createPlane = function(a, b, c, d, x, y, z)
|
|
local t = nil
|
|
if (type(x) == "table") then
|
|
t = x
|
|
end
|
|
if (type(z) == "table") then
|
|
t = z
|
|
end
|
|
local reference = false
|
|
if (type(t) == "table") then
|
|
if (type(t.reference) == "boolean") then
|
|
reference = t.reference
|
|
end
|
|
end
|
|
if (type(y) == "nil") then
|
|
return ag.createPlaneSpecify(a, b, c, d, reference)
|
|
else
|
|
return ag.createPlaneSpecify(a, b, c, d, x, y, reference)
|
|
end
|
|
end
|
|
|
|
ag.createCapsule = function(radius, length, args)
|
|
local static = false
|
|
local reference = false
|
|
if (type(args) == "table") then
|
|
if (type(args.static) == "boolean") then
|
|
static = args.static
|
|
end
|
|
if (type(args.reference) == "boolean") then
|
|
reference = args.reference
|
|
end
|
|
end
|
|
return ag.createCapsuleSpecify(radius, length, static, reference)
|
|
end
|