ring/scenes/main.lua

103 lines
2.8 KiB
Lua

local love = assert( love )
local player = require( "player" )
local settings = require( "settings" )
local renderer = require( "renderer" )
local world = require( "scenes.world" )
local mat = require( "mat4" )
local t = {}
local frameStart = love.timer.getTime()
local rockTexture = love.graphics.newImage( "tex/rock.png", { mipmaps = true } )
rockTexture:setWrap( "repeat", "repeat" )
function t.play()
love.graphics.setNewFont( 14 )
t.mousepressed() --grab window
player:setTurnRate( settings.mouseSensitivity.val )
player:setFOV( settings.FOV.val )
renderer.start()
--[[ local terrain = require( "models/terrain" )
terrain:setTexture( rockTexture )
renderer.add( terrain )
renderer.update( terrain, {{1, 0, 0, 0}, {0,1,0,0},{0,0,1,0},{0,0,-3,1}})]]
local plane = require( "models/plane" )
plane:setTexture( rockTexture )
renderer.add( plane )
local spike = require( "models/spike" )
spike:setTexture( rockTexture )
renderer.add( spike )
renderer.update( spike, mat.TRS( 0.3, 12, 0.3, 0, 0, 0, 4, 0, 3) )
local scene = require( "scene" )
return scene.load( t )
end
function t.draw()
--[[love.graphics.setScissor( )
love.graphics.push( "transform" )
love.graphics.scale( love.graphics.getWidth(), -love.graphics.getHeight() )
love.graphics.translate( 0, -1 )
love.graphics.translate( player.x, player.y )
love.graphics.rotate( player.yaw )
love.graphics.scale( w, h )
love.graphics.draw( playerMesh )
love.graphics.pop()]]
renderer.draw( player.view, player.proj )
local y = 0
for k, v in pairs(love.graphics.getStats()) do
love.graphics.print( k, 0, y )
love.graphics.print( v, 200, y )
y = y + 16
end
love.graphics.print( player:tostring(), 0, y )
end
local updateTimeRemaining = 0
function t.update( dt )
if not love.mouse.getRelativeMode() then return end
player:updateDesiredDirection(
love.keyboard.isScancodeDown( settings.keyForward.val ),
love.keyboard.isScancodeDown( settings.keyLeft.val ),
love.keyboard.isScancodeDown( settings.keyRight.val ),
love.keyboard.isScancodeDown( settings.keyBack.val )
)
updateTimeRemaining = updateTimeRemaining + dt
while updateTimeRemaining >= player.rate do
updateTimeRemaining = updateTimeRemaining - player.rate
player:update()
end
end
function t.mousepressed( x, y, button, isTouch, presses )
love.mouse.setRelativeMode( true )
love.mouse.setVisible( false )
end
function t.keypressed( key, code, isrepeat )
if code == "escape" then
love.mouse.setRelativeMode( false )
love.mouse.setVisible( true )
end
if code == settings.keyUse.val then
end
end
function t.keyreleased( key, code )
end
function t.mousemoved( x, y, dx, dy, isTouch )
if not love.mouse.getRelativeMode() then return end
player:turn( dx, dy )
end
return t