95 lines
2.9 KiB
Lua
95 lines
2.9 KiB
Lua
|
|
function init_event()
|
|
local crate_texture = ag.loadTexture("checker.jpg")
|
|
local ground = ag.createPlane(0, 0, 1, 0)
|
|
ground:setColor(0.2, 1.0, 0.2)
|
|
ground:setTexture(crate_texture)
|
|
ag.setCamera(10, -10, 10, 0, 0, 0)
|
|
|
|
if (ag.import("rot_camera") ~= true) then
|
|
ag.println("error importing rot_camera")
|
|
ag.exit()
|
|
end
|
|
ag.setCursorVisible(true)
|
|
pt_x = -1
|
|
pt_y = -1
|
|
end
|
|
|
|
function init_obj(obj)
|
|
obj:setColor(math.random(), math.random(), math.random())
|
|
obj:setPosition((math.random() - 0.5) * 10, (math.random() - 0.5) * 10, 10)
|
|
end
|
|
|
|
-- function update_event()
|
|
-- rot_camera()
|
|
-- end
|
|
|
|
function key_down_event(key)
|
|
if (key == "b") then
|
|
local box = ag.createBox(1, 1, 1)
|
|
init_obj(box)
|
|
-- elseif (key == "c") then
|
|
-- -- cylinders are buggy in ODE
|
|
-- local cyl = ag.createCylinder(0.5, 1)
|
|
-- init_obj(cyl)
|
|
elseif (key == "a") then
|
|
local ccyl = ag.createCapsule(0.5, 1)
|
|
init_obj(ccyl)
|
|
elseif (key == "s") then
|
|
local sphere = ag.createSphere(0.8)
|
|
init_obj(sphere)
|
|
elseif (key == "q") then
|
|
ag.exit()
|
|
elseif (key == "r") then
|
|
-- creating a rotating cube
|
|
local spinner = ag.createBox(10, 1, 0.5)
|
|
spinner:setPosition(0, 0, 1)
|
|
spinner:setColor(1, 0.7, 0.7)
|
|
spinner:setGravityMode(false)
|
|
ag.createAMotor(0, spinner,
|
|
{ x = 0, y = 0, z = 1, vel = 5, fmax = 50 })
|
|
ag.createHinge(0, spinner, {spinner:getPosition()}, {0, 0, 1})
|
|
-- local box = ag.createBox(1, 1, 1)
|
|
-- init_obj(box)
|
|
-- ag.createAMotor(0, box,
|
|
-- { x = 0, y = 0, z = 1, vel = 0, fmax = 0 })
|
|
-- local x, y, z = box:getPosition()
|
|
-- box:setPosition(x, y, 2)
|
|
elseif (key == "minus") then
|
|
ag.setCursorVisible(not ag.getCursorVisible())
|
|
elseif (key == "d") then
|
|
q = ag.createQuad(3, 3, 0, 1, 0, 0, 0, 1, 0)
|
|
q:setOffset(1)
|
|
end
|
|
end
|
|
|
|
function mousebutton_down_event(button, x, y)
|
|
if (button == 1) then
|
|
objects = ag.pickObjects(x, y)
|
|
if (objects ~= nil) then
|
|
for id, obj in ipairs(objects) do
|
|
obj:setColor(0, 0, 1)
|
|
end
|
|
end
|
|
elseif (button == 3) then
|
|
pt_x = x
|
|
pt_y = y
|
|
end
|
|
end
|
|
|
|
function update_overlay_event(width, height)
|
|
if (pt_x >= 0 and pt_y >= 0) then
|
|
ag.drawCircle(0, 1, 0, pt_x, pt_y, 5)
|
|
end
|
|
ag.fillArc(1, 1, 0, 50, 50, 30, 30, 330)
|
|
ag.fillCircle(1, 0, 1, width - 50, height - 50, 40)
|
|
ag.drawRect(1, 0.5, 0, width, height, width/2, height/2)
|
|
ag.drawPoint(1, 0, 1, 0, 0, 0)
|
|
ag.drawPoint(1, 0, 1, 0, width-1, height-1)
|
|
ag.drawPoint(1, 0, 1, 1, -1, -1)
|
|
ag.drawPoint(1, 0, 1, 1, width, height)
|
|
msg = "b a s r d - m1 m3"
|
|
tw, th = ag.getTextSize(msg, 14)
|
|
ag.drawText(msg, 1, 1, 1, 14, width / 2 - tw / 2, 10)
|
|
end
|