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