|
|
|
@ -67,31 +67,39 @@ namespace guecs { |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
void Shader::init(lel::Cell &cell) { |
|
|
|
|
auto shader = shaders::get(name); |
|
|
|
|
shader->setUniform("u_resolution", sf::Vector2f({float(cell.w), float(cell.h)})); |
|
|
|
|
clock = std::make_shared<sf::Clock>(); |
|
|
|
|
$shader_version = shaders::version(); |
|
|
|
|
$shader = shaders::get(name); |
|
|
|
|
$shader->setUniform("u_resolution", sf::Vector2f({float(cell.w), float(cell.h)})); |
|
|
|
|
$clock = std::make_shared<sf::Clock>(); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
void Shader::step() { |
|
|
|
|
auto shader = shaders::get(name); |
|
|
|
|
sf::Time u_time = clock->getElapsedTime(); |
|
|
|
|
float current_time = u_time.asSeconds(); |
|
|
|
|
sf::Time cur_time = $clock->getElapsedTime(); |
|
|
|
|
float u_time = cur_time.asSeconds(); |
|
|
|
|
|
|
|
|
|
if(current_time < u_time_end) { |
|
|
|
|
shader->setUniform("u_time", current_time); |
|
|
|
|
if(u_time < $u_time_end) { |
|
|
|
|
$shader->setUniform("u_time", u_time); |
|
|
|
|
} else { |
|
|
|
|
active = false; |
|
|
|
|
$active = false; |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
void Shader::run() { |
|
|
|
|
auto shader = shaders::get(name); |
|
|
|
|
$shader = checkout_ptr(); |
|
|
|
|
$active = true; |
|
|
|
|
sf::Time u_time = $clock->getElapsedTime(); |
|
|
|
|
$u_time_end = u_time.asSeconds() + duration; |
|
|
|
|
$shader->setUniform("u_duration", duration); |
|
|
|
|
$shader->setUniform("u_time_end", $u_time_end); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
shared_ptr<sf::Shader> Shader::checkout_ptr() { |
|
|
|
|
if(shaders::updated($shader_version)) { |
|
|
|
|
$shader = shaders::get(name); |
|
|
|
|
$shader_version = shaders::version(); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
active = true; |
|
|
|
|
sf::Time u_time = clock->getElapsedTime(); |
|
|
|
|
u_time_end = u_time.asSeconds() + duration; |
|
|
|
|
shader->setUniform("u_duration", duration); |
|
|
|
|
shader->setUniform("u_time_end", u_time_end); |
|
|
|
|
return $shader; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
UI::UI() { |
|
|
|
@ -185,7 +193,7 @@ namespace guecs { |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
$world.query<Shader>([&](auto, auto& shader) { |
|
|
|
|
if(shader.active) shader.step(); |
|
|
|
|
if(shader.$active) shader.step(); |
|
|
|
|
}); |
|
|
|
|
|
|
|
|
|
$world.query<Rectangle>([&](auto ent, auto& rect) { |
|
|
|
|