local BaseRoom = require("rooms.base") local Room = {} Room.__index = Room setmetatable(Room, { __index = BaseRoom }) function Room:new(asset) self = setmetatable(BaseRoom:new(asset), Room) self.treeMask = asset.imageLoader("tree_mask") self.treeShader = love.graphics.newShader [[ extern float time; vec4 effect(vec4 color, Image texture, vec2 texture_coords, vec2 screen_coords) { vec2 uv = texture_coords; float sway = sin(uv.y * 10.0 + time * 2.0) * 0.00125 * (1.0 - uv.y); uv.x += sway; return Texel(texture, uv) * color; } ]] self.cloudMask = asset.imageLoader("cloud_mask") self.cloudShader = love.graphics.newShader [[ extern float time; vec4 effect(vec4 color, Image texture, vec2 texture_coords, vec2 screen_coords) { vec2 uv = texture_coords; uv.x = mod(uv.x + time * 0.0075, 1.0); return Texel(texture, uv) * color; } ]] ParticlePlayer:play("leaves", 0, 150, { duration = 9999 }) return self end function Room:drawBack() self:drawBackground() self:drawShaderWithMask(self.treeShader, self.treeMask) self:drawShaderWithMask(self.cloudShader, self.cloudMask) end function Room:drawFront() end return Room