99 lines
2.0 KiB
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 |