add weather to level
This commit is contained in:
parent
82fdd0d609
commit
e6754048f6
@ -30,7 +30,7 @@ function behavior:draw()
|
||||
shader:send("color", { self.color.x, self.color.y, self.color.z })
|
||||
shader:send("time", love.timer.getTime() + self.seed)
|
||||
love.graphics.setShader(shader)
|
||||
love.graphics.setBlendMode("add")
|
||||
-- love.graphics.setBlendMode("add")
|
||||
love.graphics.draw(Tree.assets.files.masks.circle128, self.position.x - self.intensity / 2,
|
||||
self.position.y - self.intensity / 2, 0, self.intensity / 128,
|
||||
self.intensity / 128)
|
||||
|
||||
@ -27,7 +27,8 @@ local function new(type, template)
|
||||
selector = (require "lib.level.selector").new(),
|
||||
camera = (require "lib.level.camera").new(),
|
||||
turnOrder = (require "lib.level.turn_order").new(),
|
||||
render = (require "lib.level.render").new()
|
||||
render = (require "lib.level.render").new(),
|
||||
weather = (require "lib.level.weather").new { ambientLight = Vec3 { 0.36, 0.42, 0.6 }, skyLight = Vec3 { 0.9, 0.9, 0.9 } }
|
||||
}, level)
|
||||
end
|
||||
|
||||
|
||||
@ -9,16 +9,17 @@ local render = {}
|
||||
render.__index = render
|
||||
|
||||
function render:clear()
|
||||
local weather = Tree.level.weather
|
||||
love.graphics.setCanvas(self.shadowLayer)
|
||||
love.graphics.clear()
|
||||
love.graphics.setCanvas(self.spriteLayer)
|
||||
love.graphics.clear()
|
||||
love.graphics.setCanvas(self.spriteLightLayer)
|
||||
love.graphics.clear()
|
||||
love.graphics.clear(weather.skyLight.x, weather.skyLight.y, weather.skyLight.z)
|
||||
love.graphics.setCanvas(self.floorLayer)
|
||||
love.graphics.clear()
|
||||
love.graphics.setCanvas(self.lightLayer)
|
||||
love.graphics.clear()
|
||||
love.graphics.clear(weather.skyLight.x, weather.skyLight.y, weather.skyLight.z)
|
||||
love.graphics.setCanvas(self.overlayLayer)
|
||||
love.graphics.clear()
|
||||
end
|
||||
@ -55,6 +56,7 @@ end
|
||||
|
||||
function render:draw()
|
||||
-- пол -> тени -> спрайты -> свет -> оверлей
|
||||
local weather = Tree.level.weather
|
||||
love.graphics.setCanvas(self.lightLayer)
|
||||
love.graphics.draw(applyBlur(self.shadowLayer, 4 * Tree.level.camera.scale))
|
||||
love.graphics.setCanvas()
|
||||
@ -65,7 +67,7 @@ function render:draw()
|
||||
local lightShader = Tree.assets.files.shaders.light_postprocess
|
||||
lightShader:send("scene", self.floorLayer)
|
||||
lightShader:send("light", self.lightLayer)
|
||||
lightShader:send("ambient", { 0.24, 0.28, 0.40 })
|
||||
lightShader:send("ambient", { weather.ambientLight.x, weather.ambientLight.y, weather.ambientLight.z })
|
||||
love.graphics.setShader(lightShader)
|
||||
love.graphics.draw(self.floorLayer)
|
||||
|
||||
|
||||
12
lib/level/weather.lua
Normal file
12
lib/level/weather.lua
Normal file
@ -0,0 +1,12 @@
|
||||
--- @class Weather
|
||||
--- @field skyLight Vec3
|
||||
--- @field ambientLight Vec3
|
||||
local weather = {}
|
||||
|
||||
--- @param proto Weather
|
||||
--- @return Weather
|
||||
local function new(proto)
|
||||
return setmetatable(proto, { __index = weather })
|
||||
end
|
||||
|
||||
return { new = new }
|
||||
Loading…
x
Reference in New Issue
Block a user