ring/src/level/world.lua

99 lines
2.0 KiB
Lua

local love = love
local gpu = require( "gpu" )
local t = {}
local canvas
local meshes = {}
local isDebugging = false
local tf = love.math.newTransform()
local debugTF = love.math.newTransform()
local sky
local bell
local contempra
local terrain
local spike
local water
local light = require( "level.light" )
function t.start()
canvas = {
love.graphics.newCanvas(),
stencil = false,
depth = true,
}
-- water = require( "models.water" )
sky = require( "models.sky" )
bell = require( "models.bell" )
contempra = require( "models.contempra" )
terrain = require( "models.terrain" )
spike = require( "models.spike" )
end
function t.debug()
isDebugging = true
end
local function matte( )
local list = drawLists.matte
local shader = shaders.matte
love.graphics.setShader( shader )
for mesh in pairs( list ) do
shader:send( "mdl", "column", meshes[mesh])
love.graphics.draw( mesh )
end
end
function t.draw( view, proj, x, z )
if isDebugging then
end
love.graphics.push( "all" )
love.graphics.setScissor( 0, 0, love.graphics.getDimensions() )
love.graphics.setCanvas( canvas )
love.graphics.clear()
love.graphics.setDepthMode( "less", true )
love.graphics.replaceTransform( tf )
love.graphics.setMeshCullMode( "back" )
sky.draw( view, proj, light )
terrain.draw( view, proj, light )
bell.draw( view, proj, light )
spike.draw( view, proj, light )
contempra.draw( view, proj, light, x, z )
love.graphics.pop()
love.graphics.setColor( 1, 1, 1, 1 )
love.graphics.draw( canvas[1] )
if isDebugging then
isDebugging = false
io.flush()
end
end
function t.update( player )
end
function t.transposeBells( i, j )
return bell.transpose( i, j )
end
function t.targetLight( i )
return light.setTarget( i )
end
function t.pickupPhone()
return contempra.pickup()
end
function t.ring( idx )
return bell.ring( idx )
end
return t