updated checkerpick.lua test script, moved it into lib/demo

git-svn-id: svn://anubis/anaglym/trunk@322 99a6e188-d820-4881-8870-2d33a10e2619
This commit is contained in:
Josh Holtrop 2010-09-23 17:09:35 +00:00
parent e265cf21b7
commit 2c98e88dae
2 changed files with 42 additions and 25 deletions

42
lib/demo/checkerpick.lua Normal file
View File

@ -0,0 +1,42 @@
function init_event()
local checker_texture = ag.loadTexture("checker.jpg")
checker_box = ag.createBox(8, 8, 0.1, {static = true})
checker_box:setPosition(0, 0, 0.1/2)
checker_box:setTexture(checker_texture)
checker_box:setTextureScale(2)
hilite = ag.createBox(1, 1, 0.1, {static = true, enable_blending = true})
hilite:setColor(0.3, 0.5, 1)
hilite:setPosition(1.5, 1.5, 0.15)
hilite:setTransparency(0.4)
ag.setCamera(4, -8, 8, 0, 0, 0)
ag.setCursorVisible(true)
end
function mouse_motion_event(x, y, xrel, yrel)
local hit = ag.pickOne(x, y, checker_box)
if hit then
local cx, cy = checker_box:getPosition()
local sx, sy = checker_box:getSize()
local px = checker_box.pick_pos[1]
local py = checker_box.pick_pos[2]
local x_coord = math.floor((px - cx + sx / 2) * 8 / sx)
local y_coord = math.floor((py - cy + sy / 2) * 8 / sy)
if x_coord >= 0 and x_coord <= 7 and y_coord >= 0 and y_coord <= 7 then
hilite:setPosition((x_coord - 3.5) * sx / 8 + cx,
(y_coord - 3.5) * sy / 8 + cy, 0.15)
end
end
end
function mousebutton_down_event(button, x, y)
if (button == 1) then
local spawnSphere = ag.createSphere(0.45)
spawnSphere:setColor(math.random(), math.random(), math.random())
local hlx, hly = hilite:getPosition()
spawnSphere:setPosition(hlx, hly, 0.6)
spawnSphere:addForce(0, 0, 100)
end
end

View File

@ -1,25 +0,0 @@
function init_event()
local checker_texture = ag.loadTexture("checker.jpg")
ground = ag.createBox(8, 8, 0.1, {static = true})
ground:setTexture(checker_texture)
ag.setCamera(10, -10, 10, 0, 0, 0)
hilite = ag.createBox(2, 2, 0.1, {static = true, enable_blending = true})
hilite:setColor(0.3, 0.5, 1)
hilite:setPosition(1, 1, 0.1)
hilite:setTransparency(0.4)
ag.setCursorVisible(true)
end
function mouse_motion_event(x, y, xrel, yrel)
local hit = ag.pickOne(x, y, ground)
if hit then
x = ground.pick_pos[1]
y = ground.pick_pos[2]
xp = 2 * math.floor(x / 2) + 1
yp = 2 * math.floor(y / 2) + 1
if xp >= -3 and xp <= 3 and yp >= -3 and yp <= 3 then
hilite:setPosition(xp, yp, 0.1)
end
end
end