hp-bar-the-dumb-way #22
24
assets/shaders/reveal.glsl
Normal file
24
assets/shaders/reveal.glsl
Normal file
@ -0,0 +1,24 @@
|
||||
extern float t;
|
||||
extern float blockSize;
|
||||
|
||||
// hash-функция для шума по целочисленным координатам блока
|
||||
float hash(vec2 p) {
|
||||
p = vec2(
|
||||
dot(p, vec2(127.1, 311.7)),
|
||||
dot(p, vec2(269.5, 183.3))
|
||||
);
|
||||
return fract(sin(p.x + p.y) * 43758.5453123);
|
||||
}
|
||||
|
||||
vec4 effect(vec4 color, Image tex, vec2 texCoord, vec2 screenCoord)
|
||||
{
|
||||
float blockSize = 4.0;
|
||||
|
||||
vec2 cell = floor(screenCoord / blockSize);
|
||||
float n = hash(cell); // [0..1]
|
||||
float mask = 1.0 - step(t, n);
|
||||
|
||||
vec4 base = Texel(tex, texCoord) * color;
|
||||
base.a *= mask;
|
||||
return base;
|
||||
}
|
||||
@ -209,6 +209,16 @@ function characterPanel:update(dt)
|
||||
width = self.bars.bounds.width,
|
||||
height = self.bars.bounds.height + self.skillRow.bounds.height
|
||||
}
|
||||
|
||||
--- анимация появления
|
||||
local alpha = 1
|
||||
if self.state == "show" then
|
||||
alpha = self.animationNode:getValue()
|
||||
elseif self.state == "hide" then
|
||||
alpha = 1 - self.animationNode:getValue()
|
||||
end
|
||||
local revealShader = Tree.assets.files.shaders.reveal
|
||||
revealShader:send("t", alpha)
|
||||
end
|
||||
|
||||
function characterPanel:draw()
|
||||
@ -219,17 +229,13 @@ function characterPanel:draw()
|
||||
|
||||
self:drawBorder("outer")
|
||||
|
||||
local alpha = 1
|
||||
if self.state == "show" then
|
||||
alpha = self.animationNode:getValue()
|
||||
elseif self.state == "hide" then
|
||||
alpha = 1 - self.animationNode:getValue()
|
||||
end
|
||||
|
||||
--- рисуем текстуру шейдером появления
|
||||
love.graphics.setCanvas()
|
||||
love.graphics.setColor(1, 1, 1, alpha)
|
||||
love.graphics.setShader(Tree.assets.files.shaders.reveal)
|
||||
love.graphics.setColor(1, 1, 1, 1)
|
||||
love.graphics.draw(c)
|
||||
love.graphics.setColor(1, 1, 1)
|
||||
love.graphics.setShader()
|
||||
end
|
||||
|
||||
-----------------------------------
|
||||
|
||||
@ -1,6 +1,4 @@
|
||||
local icons = require("lib.utils.sprite_atlas").load(Tree.assets.files.dev_icons)
|
||||
local easing = require "lib.utils.easing"
|
||||
local AnimationNode = require "lib.animation_node"
|
||||
local Element = require "lib.simple_ui.element"
|
||||
local Rect = require "lib.simple_ui.rect"
|
||||
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user