Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- os.unloadAPI(shell.resolve("ray"))
- os.loadAPI(shell.resolve("ray"))
- term.clear()
- term.setCursorPos(1, 1)
- local Raycaster = ray.newRaycaster(1, 1)
- Raycaster:loadFromFile(shell.resolve("demoMap"))
- Raycaster:setSkyColour(colours.lightGrey)
- Raycaster:setWallHeight(1.2)
- Raycaster:setCameraTransform(3, 5, 0)
- local renderFunc = Raycaster.draw3D
- local function toggleView()
- if renderFunc == Raycaster.draw3D then
- renderFunc = Raycaster.draw2D
- else
- renderFunc = Raycaster.draw3D
- end
- end
- os.queueEvent("key")
- while true do
- local e, key = os.pullEvent("key")
- term.setBackgroundColour(colours.black)
- term.clear()
- term.setCursorPos(1, 1)
- local x, y, angle = Raycaster:getCameraTransform()
- if key == keys.right then
- Raycaster:setCameraTransform(x, y, angle + 5)
- elseif key == keys.left then
- Raycaster:setCameraTransform(x, y, angle - 5)
- end
- if key == keys.up then
- local nextX, nextY = x + math.cos(math.rad(angle)), y + math.sin(math.rad(angle))
- if Raycaster:getTile(nextX, nextY) == 0 then
- Raycaster:setCameraTransform(nextX, nextY, angle)
- end
- elseif key == keys.down then
- local nextX, nextY = x - math.cos(math.rad(angle)), y - math.sin(math.rad(angle))
- if Raycaster:getTile(nextX, nextY) == 0 then
- Raycaster:setCameraTransform(nextX, nextY, angle)
- end
- end
- if key == keys.space then
- toggleView()
- end
- renderFunc(Raycaster, term)
- end
Advertisement
Add Comment
Please, Sign In to add comment