103 lines
2.8 KiB
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 |