strips and keys
This commit is contained in:
parent
7b91f99ac4
commit
adb32dc5cc
15 changed files with 142 additions and 31 deletions
|
@ -32,7 +32,7 @@ endif()
|
||||||
|
|
||||||
if (WIN32)
|
if (WIN32)
|
||||||
include_directories("include/windows")
|
include_directories("include/windows")
|
||||||
target_link_libraries (Keishiki PRIVATE freetype bgfx bx ${PROJECT_SOURCE_DIR}/lib/x64/SDL2.lib ${PROJECT_SOURCE_DIR}/lib/x64/SDL2main.lib imgui-sdl2)
|
target_link_libraries (Keishiki PRIVATE freetype bgfx bx ${PROJECT_SOURCE_DIR}/lib/x64/SDL2.lib ${PROJECT_SOURCE_DIR}/lib/x64/SDL2main.lib)
|
||||||
elseif (APPLE)
|
elseif (APPLE)
|
||||||
find_package(SDL2 REQUIRED)
|
find_package(SDL2 REQUIRED)
|
||||||
target_link_libraries (Keishiki PRIVATE freetype bgfx bx SDL2::SDL2)
|
target_link_libraries (Keishiki PRIVATE freetype bgfx bx SDL2::SDL2)
|
||||||
|
|
142
Keishiki/UI.cpp
142
Keishiki/UI.cpp
|
@ -10,6 +10,8 @@
|
||||||
#include "backends/imgui_impl_sdl2.h"
|
#include "backends/imgui_impl_sdl2.h"
|
||||||
#include "imgui_impl_bgfx.h"
|
#include "imgui_impl_bgfx.h"
|
||||||
|
|
||||||
|
#include <algorithm>
|
||||||
|
|
||||||
#define STB_IMAGE_WRITE_IMPLEMENTATION
|
#define STB_IMAGE_WRITE_IMPLEMENTATION
|
||||||
#include <stb_image_write.h>
|
#include <stb_image_write.h>
|
||||||
|
|
||||||
|
@ -230,7 +232,6 @@ namespace K::UI {
|
||||||
ImGui::PushID(id);
|
ImGui::PushID(id);
|
||||||
ImGui::PushStyleColor(ImGuiCol_ChildBg, selected ? 0xAA202040 : 0xAA080813);
|
ImGui::PushStyleColor(ImGuiCol_ChildBg, selected ? 0xAA202040 : 0xAA080813);
|
||||||
if (ImGui::BeginChild(n.node->name.c_str(), {}, ImGuiChildFlags_AlwaysAutoResize | ImGuiChildFlags_AutoResizeX | ImGuiChildFlags_AutoResizeY | ImGuiChildFlags_Border)) {
|
if (ImGui::BeginChild(n.node->name.c_str(), {}, ImGuiChildFlags_AlwaysAutoResize | ImGuiChildFlags_AutoResizeX | ImGuiChildFlags_AutoResizeY | ImGuiChildFlags_Border)) {
|
||||||
ImGui::PopStyleColor();
|
|
||||||
if (ImGui::BeginTable(n.node->name.c_str(), 3)) {
|
if (ImGui::BeginTable(n.node->name.c_str(), 3)) {
|
||||||
ImGui::TableNextRow(ImGuiTableRowFlags_None, row_height);
|
ImGui::TableNextRow(ImGuiTableRowFlags_None, row_height);
|
||||||
ImGui::TableNextColumn();
|
ImGui::TableNextColumn();
|
||||||
|
@ -258,6 +259,7 @@ namespace K::UI {
|
||||||
ImGui::EndTable();
|
ImGui::EndTable();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
ImGui::PopStyleColor();
|
||||||
ImGui::EndChild();
|
ImGui::EndChild();
|
||||||
ImGui::PopID();
|
ImGui::PopID();
|
||||||
return stat;
|
return stat;
|
||||||
|
@ -271,6 +273,7 @@ namespace K::UI {
|
||||||
bgfx::blit(Graphics::K_VIEW_COMP_COMPOSITE, composite_blit, 0, 0, composite);
|
bgfx::blit(Graphics::K_VIEW_COMP_COMPOSITE, composite_blit, 0, 0, composite);
|
||||||
for (u32 i = s.layers.size() - 1; i != u32(-1); i--) {
|
for (u32 i = s.layers.size() - 1; i != u32(-1); i--) {
|
||||||
if (s.disabled.contains(i)) continue;
|
if (s.disabled.contains(i)) continue;
|
||||||
|
if (s.current_frame > s.layers[i].out || s.current_frame < s.layers[i].in) continue;
|
||||||
Graphics::Composite( composite_fb, composite_blit, s.layers[i].track.get_frame(s, render_fb, s.width, s.height, proj, view, transform),
|
Graphics::Composite( composite_fb, composite_blit, s.layers[i].track.get_frame(s, render_fb, s.width, s.height, proj, view, transform),
|
||||||
i == s.layers.size() - 1 ? Graphics::K_V_AlphaOver : s.layers[i].mode, s.width, s.height, proj, transform);
|
i == s.layers.size() - 1 ? Graphics::K_V_AlphaOver : s.layers[i].mode, s.width, s.height, proj, transform);
|
||||||
bgfx::blit(Graphics::K_VIEW_COMP_COMPOSITE, composite_blit, 0, 0, composite);
|
bgfx::blit(Graphics::K_VIEW_COMP_COMPOSITE, composite_blit, 0, 0, composite);
|
||||||
|
@ -428,8 +431,6 @@ namespace K::UI {
|
||||||
ImGui::PushStyleColor(ImGuiCol_ChildBg, 0xFF100500);
|
ImGui::PushStyleColor(ImGuiCol_ChildBg, 0xFF100500);
|
||||||
ImGui::SetNextWindowSizeConstraints({avail.x * .1f, -1}, { avail.x * .8f, -1 });
|
ImGui::SetNextWindowSizeConstraints({avail.x * .1f, -1}, { avail.x * .8f, -1 });
|
||||||
if (ImGui::BeginChild("Nodes", {avail.x * .4f, avail.y}, ImGuiChildFlags_ResizeX, ImGuiWindowFlags_NoMove | ImGuiWindowFlags_NoScrollbar)) {
|
if (ImGui::BeginChild("Nodes", {avail.x * .4f, avail.y}, ImGuiChildFlags_ResizeX, ImGuiWindowFlags_NoMove | ImGuiWindowFlags_NoScrollbar)) {
|
||||||
ImGui::PopStyleColor();
|
|
||||||
|
|
||||||
static u32 selected;
|
static u32 selected;
|
||||||
|
|
||||||
ImGuiWindow *window = ImGui::GetCurrentWindow();
|
ImGuiWindow *window = ImGui::GetCurrentWindow();
|
||||||
|
@ -480,6 +481,7 @@ namespace K::UI {
|
||||||
|
|
||||||
ImGui::EndChild();
|
ImGui::EndChild();
|
||||||
}
|
}
|
||||||
|
ImGui::PopStyleColor();
|
||||||
ImGui::EndChild();
|
ImGui::EndChild();
|
||||||
|
|
||||||
ImGui::SameLine(0.0f, 0.5f);
|
ImGui::SameLine(0.0f, 0.5f);
|
||||||
|
@ -594,13 +596,13 @@ namespace K::UI {
|
||||||
|
|
||||||
// Frame Grid
|
// Frame Grid
|
||||||
static f32 frame_grid_min_width = 20.0f;
|
static f32 frame_grid_min_width = 20.0f;
|
||||||
f32 fr_step = 1.0f / static_cast<f32>(s.frame_max + 1) * view_width / view_amt;
|
f32 fr_step = 1.0f / static_cast<f32>(s.frame_max + 1) * view_width / view_amt,
|
||||||
fr_step =
|
grid_step =
|
||||||
fr_step >= frame_grid_min_width ? fr_step : std::ceil(frame_grid_min_width / fr_step) * fr_step;
|
fr_step >= frame_grid_min_width ? fr_step : std::ceil(frame_grid_min_width / fr_step) * fr_step;
|
||||||
for (f32 fr = TimelineFrameToScreenView(view_left, view_amt, view_width,
|
for (f32 fr = TimelineFrameToScreenView(view_left, view_amt, view_width,
|
||||||
std::ceil(view_left * static_cast<f32>(s.frame_max + 1)),
|
std::ceil(view_left * static_cast<f32>(s.frame_max + 1)),
|
||||||
s.frame_max) + tl_init_pos.x;
|
s.frame_max) + tl_init_pos.x;
|
||||||
fr < tl_init_pos.x + view_width; fr += fr_step)
|
fr < tl_init_pos.x + view_width; fr += grid_step)
|
||||||
window->DrawList->AddLine({fr, tl_init_pos.y + row_height},
|
window->DrawList->AddLine({fr, tl_init_pos.y + row_height},
|
||||||
{fr, ImGui::GetWindowSize().y + tl_init_pos.y}, 0x11FFFFFF, 1.0f);
|
{fr, ImGui::GetWindowSize().y + tl_init_pos.y}, 0x11FFFFFF, 1.0f);
|
||||||
|
|
||||||
|
@ -709,13 +711,55 @@ namespace K::UI {
|
||||||
|
|
||||||
f32 init_y = ImGui::GetCursorScreenPos().y;
|
f32 init_y = ImGui::GetCursorScreenPos().y;
|
||||||
|
|
||||||
ImGui::Dummy({TimelineFrameToScreenView(view_left, view_amt, view_width, current_layer.in, s.frame_max) + tl_init_pos.x, 0.0f});
|
static f32 layer_bound_width = 5.0f;
|
||||||
ImGui::Button(current_layer.name.c_str(), {std::min(TimelineFrameToScreenView(view_left, view_amt, view_width, current_layer.out, s.frame_max) + fr_step, view_width), view_height});
|
i32 l_in = TimelineFrameInView(view_left, view_right, current_layer.in, s.frame_max), l_out = TimelineFrameInView(view_left, view_right, current_layer.out, s.frame_max);
|
||||||
|
ImGui::SetCursorPosX(ImGui::GetCursorPosX() + TimelineFrameToScreenView(view_left, view_amt, view_width, current_layer.in, s.frame_max));
|
||||||
|
if (l_in) {
|
||||||
|
ImGui::PushStyleColor(ImGuiCol_Button, 0xFF666666);
|
||||||
|
ImGui::Button("##Layer_L", {layer_bound_width, view_height});
|
||||||
|
if (ImGui::IsItemHovered()) {
|
||||||
|
ImGui::SetMouseCursor(ImGuiMouseCursor_ResizeEW);
|
||||||
|
}
|
||||||
|
if (ImGui::IsItemActive()) {
|
||||||
|
current_layer.in = std::min(TimelineScreenViewToFrame(view_left, view_amt, view_width, std::clamp(io.MousePos.x - tl_init_pos.x, 0.0f, view_width), s.frame_max), current_layer.out);
|
||||||
|
}
|
||||||
|
ImGui::PopStyleColor();
|
||||||
|
ImGui::SameLine(0.0f, 0.0f);
|
||||||
|
}
|
||||||
|
f32 in_pos = TimelineFrameToScreenView(view_left, view_amt, view_width, current_layer.in, s.frame_max);
|
||||||
|
ImGui::PushID(0);
|
||||||
|
ImGui::Button(current_layer.name.c_str(), {std::min(TimelineFrameToScreenView(view_left, view_amt, view_width, current_layer.out, s.frame_max) + fr_step, view_width) - in_pos - layer_bound_width * static_cast<f32>(l_in + l_out), view_height});
|
||||||
|
static f32 layer_strip_drag_begin{};
|
||||||
|
static u32 in_old, out_old;
|
||||||
|
if (ImGui::IsItemClicked()) {
|
||||||
|
layer_strip_drag_begin = io.MousePos.x;
|
||||||
|
in_old = current_layer.in;
|
||||||
|
out_old = current_layer.out;
|
||||||
|
}
|
||||||
|
if (ImGui::IsItemActive()) {
|
||||||
|
i32 off = static_cast<i32>(std::trunc((io.MousePos.x - layer_strip_drag_begin) / fr_step));
|
||||||
|
off = std::max(-static_cast<i32>(in_old), off);
|
||||||
|
current_layer.in = in_old + off;
|
||||||
|
current_layer.out = out_old + off;
|
||||||
|
}
|
||||||
|
ImGui::PopID();
|
||||||
|
if (l_out) {
|
||||||
|
ImGui::SameLine(0.0f, 0.0f);
|
||||||
|
ImGui::PushStyleColor(ImGuiCol_Button, 0xFF666666);
|
||||||
|
ImGui::Button("##Layer_R", {layer_bound_width, view_height});
|
||||||
|
if (ImGui::IsItemHovered()) {
|
||||||
|
ImGui::SetMouseCursor(ImGuiMouseCursor_ResizeEW);
|
||||||
|
}
|
||||||
|
if (ImGui::IsItemActive()) {
|
||||||
|
current_layer.out = std::max(TimelineScreenViewToFrame(view_left, view_amt, view_width, std::clamp(io.MousePos.x - tl_init_pos.x - fr_step, 0.0f, view_width), s.frame_max), current_layer.in);
|
||||||
|
}
|
||||||
|
ImGui::PopStyleColor();
|
||||||
|
}
|
||||||
|
|
||||||
ImGui::SetCursorScreenPos(ImVec2{tl_init_pos.x, init_y} - style.CellPadding);
|
ImGui::SetCursorScreenPos(ImVec2{tl_init_pos.x, init_y} - style.CellPadding);
|
||||||
ImGui::InvisibleButton("##TL_BG", ImVec2{ view_width + style.CellPadding.x * 2, row_height + style.CellPadding.y});
|
ImGui::InvisibleButton("##TL_BG", ImVec2{ view_width + style.CellPadding.x * 2, row_height + style.CellPadding.y});
|
||||||
if (ImGui::IsItemActive()) {
|
if (ImGui::IsItemActive()) {
|
||||||
s.current_frame = TimelineScreenViewToFrame(view_left, view_amt, view_width, std::clamp(ImGui::GetMousePos().x - tl_init_pos.x, 0.0f, view_width), s.frame_max);
|
s.current_frame = TimelineScreenViewToFrame(view_left, view_amt, view_width, std::clamp(io.MousePos.x - tl_init_pos.x, 0.0f, view_width), s.frame_max);
|
||||||
}
|
}
|
||||||
|
|
||||||
ImGui::PopStyleVar(3);
|
ImGui::PopStyleVar(3);
|
||||||
|
@ -799,7 +843,7 @@ namespace K::UI {
|
||||||
ImGui::TableSetColumnIndex(4);
|
ImGui::TableSetColumnIndex(4);
|
||||||
auto p = ImGui::GetCursorScreenPos();
|
auto p = ImGui::GetCursorScreenPos();
|
||||||
|
|
||||||
// draw on tl
|
// draw on tl -- implot probably
|
||||||
|
|
||||||
ImGui::SetCursorScreenPos(p);
|
ImGui::SetCursorScreenPos(p);
|
||||||
|
|
||||||
|
@ -818,8 +862,17 @@ namespace K::UI {
|
||||||
ImGuiTreeNodeFlags_SpanFullWidth | ImGuiTreeNodeFlags_NoTreePushOnOpen | ImGuiTreeNodeFlags_Leaf | ImGuiTreeNodeFlags_FramePadding);
|
ImGuiTreeNodeFlags_SpanFullWidth | ImGuiTreeNodeFlags_NoTreePushOnOpen | ImGuiTreeNodeFlags_Leaf | ImGuiTreeNodeFlags_FramePadding);
|
||||||
ImGui::TableSetColumnIndex(2);
|
ImGui::TableSetColumnIndex(2);
|
||||||
auto *m = std::any_cast<std::map<u32, PlugboardNodes::ChainSegment>>(&std::get<1>(connected_v).p->extra);
|
auto *m = std::any_cast<std::map<u32, PlugboardNodes::ChainSegment>>(&std::get<1>(connected_v).p->extra);
|
||||||
|
bool m_empty = m->empty();
|
||||||
|
ImGui::BeginDisabled(m_empty || m->begin()->first >= s.current_frame);
|
||||||
|
if (ImGui::Button("<")) {
|
||||||
|
auto it = std::prev(m->upper_bound(s.current_frame));
|
||||||
|
s.current_frame = (it->first == s.current_frame ? std::prev(it) : it)->first;
|
||||||
|
}
|
||||||
|
ImGui::SameLine();
|
||||||
|
ImGui::EndDisabled();
|
||||||
f32 v = std::get<PlugboardGraph::T_Map<PlugboardGraph::T_Float>::type>(PlugboardGraph::Eval(s, std::get<1>(connected_v))), copy = v;
|
f32 v = std::get<PlugboardGraph::T_Map<PlugboardGraph::T_Float>::type>(PlugboardGraph::Eval(s, std::get<1>(connected_v))), copy = v;
|
||||||
ImGui::DragFloat("##value", &v);
|
ImGui::DragFloat("##value", &v);
|
||||||
|
ImGui::SameLine();
|
||||||
if (v != copy) {
|
if (v != copy) {
|
||||||
auto l = m->lower_bound(s.current_frame);
|
auto l = m->lower_bound(s.current_frame);
|
||||||
auto interp = l == m->end() ? PlugboardNodes::K_I_Linear : l->second.interp.interp;
|
auto interp = l == m->end() ? PlugboardNodes::K_I_Linear : l->second.interp.interp;
|
||||||
|
@ -830,20 +883,75 @@ namespace K::UI {
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
ImGui::BeginDisabled(m_empty || m->rbegin()->first <= s.current_frame);
|
||||||
|
if (ImGui::Button(">")) {
|
||||||
|
s.current_frame = m->upper_bound(s.current_frame)->first;
|
||||||
|
}
|
||||||
|
ImGui::EndDisabled();
|
||||||
ImGui::TableSetColumnIndex(3);
|
ImGui::TableSetColumnIndex(3);
|
||||||
ImGui::Text("%lu", m->size());
|
ImGui::Text("%lu", m->size());
|
||||||
ImGui::TableSetColumnIndex(4);
|
ImGui::TableSetColumnIndex(4);
|
||||||
ImVec2 begin_tl = ImGui::GetCursorScreenPos();
|
ImVec2 begin_tl = ImGui::GetCursorScreenPos();
|
||||||
static u32 drag_old{};
|
|
||||||
for (auto& [k, segment] : *m)
|
static std::map<u32, PlugboardNodes::ChainSegment> m_copy{};
|
||||||
|
static u32 dragging{};
|
||||||
|
static i64 drag_og = -1;
|
||||||
|
if (drag_og == -1) {
|
||||||
|
for (auto& [k, segment] : *m) {
|
||||||
if (TimelineFrameInView(view_left, view_right, k, s.frame_max)) {
|
if (TimelineFrameInView(view_left, view_right, k, s.frame_max)) {
|
||||||
ImGui::SetCursorScreenPos({TimelineFrameToScreenView(view_left, view_amt, view_width, k, s.frame_max) + begin_tl.x - 2.5f, begin_tl.y});
|
ImGui::SetCursorScreenPos(
|
||||||
|
{TimelineFrameToScreenView(view_left, view_amt, view_width, k,
|
||||||
|
s.frame_max) + begin_tl.x - 2.5f, begin_tl.y});
|
||||||
ImGui::Button("k", {0.0f, row_height * .8f});
|
ImGui::Button("k", {0.0f, row_height * .8f});
|
||||||
if (ImGui::IsItemClicked(ImGuiMouseButton_Left)) {
|
if (ImGui::IsItemClicked()) {
|
||||||
drag_old = k;
|
m_copy = *m;
|
||||||
|
drag_og = k;
|
||||||
}
|
}
|
||||||
if (ImGui::IsItemActive()) {
|
if (ImGui::IsItemActive()) {
|
||||||
// ...
|
dragging = TimelineScreenViewToFrame(view_left, view_amt, view_width,
|
||||||
|
std::clamp(ImGui::GetMousePos().x -
|
||||||
|
tl_init_pos.x, 0.0f,
|
||||||
|
view_width), s.frame_max);
|
||||||
|
}
|
||||||
|
if (drag_og == k && ImGui::IsMouseReleased(ImGuiMouseButton_Left)) {
|
||||||
|
drag_og = -1;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
m->clear();
|
||||||
|
for (auto& [k, segment] : m_copy) {
|
||||||
|
if (drag_og != k) {
|
||||||
|
if (TimelineFrameInView(view_left, view_right, k, s.frame_max)) {
|
||||||
|
ImGui::SetCursorScreenPos(
|
||||||
|
{TimelineFrameToScreenView(view_left, view_amt, view_width, k,
|
||||||
|
s.frame_max) + begin_tl.x - 2.5f, begin_tl.y});
|
||||||
|
ImGui::Button("k", {0.0f, row_height * .8f});
|
||||||
|
m->emplace(k, segment);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
ImGui::SetCursorScreenPos(
|
||||||
|
{TimelineFrameToScreenView(view_left, view_amt, view_width, dragging,
|
||||||
|
s.frame_max) + begin_tl.x - 2.5f, begin_tl.y});
|
||||||
|
ImGui::Button("k", {0.0f, row_height * .8f});
|
||||||
|
if (ImGui::IsItemClicked()) {
|
||||||
|
m_copy = *m;
|
||||||
|
drag_og = k;
|
||||||
|
}
|
||||||
|
if (ImGui::IsItemActive()) {
|
||||||
|
dragging = TimelineScreenViewToFrame(view_left, view_amt, view_width,
|
||||||
|
std::clamp(ImGui::GetMousePos().x -
|
||||||
|
tl_init_pos.x, 0.0f,
|
||||||
|
view_width), s.frame_max);
|
||||||
|
m->emplace(dragging, segment);
|
||||||
|
}
|
||||||
|
if (drag_og == k && ImGui::IsMouseReleased(ImGuiMouseButton_Left)) {
|
||||||
|
m->emplace(dragging, segment);
|
||||||
|
drag_og = -1;
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1117,7 +1225,7 @@ namespace K::UI {
|
||||||
ImGui_Implbgfx_NewFrame();
|
ImGui_Implbgfx_NewFrame();
|
||||||
ImGui::NewFrame();
|
ImGui::NewFrame();
|
||||||
|
|
||||||
ImGui::DockSpaceOverViewport(ImGui::GetMainViewport(), ImGuiDockNodeFlags_PassthruCentralNode);
|
ImGui::DockSpaceOverViewport(0, ImGui::GetMainViewport(), ImGuiDockNodeFlags_PassthruCentralNode);
|
||||||
|
|
||||||
ImGui::ShowDemoWindow();
|
ImGui::ShowDemoWindow();
|
||||||
// static ImGuiStyle& style = ImGui::GetStyle();
|
// static ImGuiStyle& style = ImGui::GetStyle();
|
||||||
|
|
|
@ -1 +1 @@
|
||||||
Subproject commit 701d84c2227e9219ad44c760e75c3c6f24a2cff0
|
Subproject commit 19cb98d40b3d43482bca299ec752aeacd83b21eb
|
|
@ -1 +1 @@
|
||||||
Subproject commit 70299c924fc6782edf0249bd28ca234dcc9d7c2c
|
Subproject commit d41a855aab6d8ce131c465ce01f0f536e0fb2269
|
|
@ -1 +1 @@
|
||||||
Subproject commit b39fc84f8919b87c9d79f6ffaf43efb61d2beb3d
|
Subproject commit fdc084f532189fda8474079f79e74fa5e3541c9f
|
|
@ -8,7 +8,7 @@
|
||||||
|
|
||||||
namespace {
|
namespace {
|
||||||
template <K::PlugboardGraph::Type type>
|
template <K::PlugboardGraph::Type type>
|
||||||
static K::PlugboardGraph::T_Map<type>::type GetNodeInputArg(const K::CompState& s, const K::PlugboardGraph::NodeInstance& n, u32 index) {
|
typename K::PlugboardGraph::T_Map<type>::type GetNodeInputArg(const K::CompState& s, const K::PlugboardGraph::NodeInstance& n, u32 index) {
|
||||||
bool good;
|
bool good;
|
||||||
typename K::PlugboardGraph::T_Map<type>::type v = std::get<typename K::PlugboardGraph::T_Map<type>::type>(K::PlugboardGraph::ConvertValue(std::visit([&s](auto&& arg) {
|
typename K::PlugboardGraph::T_Map<type>::type v = std::get<typename K::PlugboardGraph::T_Map<type>::type>(K::PlugboardGraph::ConvertValue(std::visit([&s](auto&& arg) {
|
||||||
using U = std::decay_t<decltype(arg)>;
|
using U = std::decay_t<decltype(arg)>;
|
||||||
|
@ -552,9 +552,9 @@ namespace K::PlugboardNodes {
|
||||||
auto *v = std::any_cast<std::map<u32, ChainSegment>>(&n.extra);
|
auto *v = std::any_cast<std::map<u32, ChainSegment>>(&n.extra);
|
||||||
if (v->empty())
|
if (v->empty())
|
||||||
return 0.0f;
|
return 0.0f;
|
||||||
if (frame < v->begin()->first)
|
if (frame <= v->begin()->first)
|
||||||
return v->begin()->second.value;
|
return v->begin()->second.value;
|
||||||
if (frame > v->rbegin()->first)
|
if (frame >= v->rbegin()->first)
|
||||||
return v->rbegin()->second.value;
|
return v->rbegin()->second.value;
|
||||||
|
|
||||||
auto nit = v->upper_bound(frame), it = std::prev(nit);
|
auto nit = v->upper_bound(frame), it = std::prev(nit);
|
||||||
|
|
BIN
Keishiki/runtime/mmaker.png
Normal file
BIN
Keishiki/runtime/mmaker.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 438 KiB |
BIN
Keishiki/runtime/shaders/dx11/BinaryComposite.frag.bin
Normal file
BIN
Keishiki/runtime/shaders/dx11/BinaryComposite.frag.bin
Normal file
Binary file not shown.
BIN
Keishiki/runtime/shaders/dx11/BinaryComposite.vert.bin
Normal file
BIN
Keishiki/runtime/shaders/dx11/BinaryComposite.vert.bin
Normal file
Binary file not shown.
BIN
Keishiki/runtime/shaders/dx11/Checkerboard.frag.bin
Normal file
BIN
Keishiki/runtime/shaders/dx11/Checkerboard.frag.bin
Normal file
Binary file not shown.
BIN
Keishiki/runtime/shaders/dx11/Checkerboard.vert.bin
Normal file
BIN
Keishiki/runtime/shaders/dx11/Checkerboard.vert.bin
Normal file
Binary file not shown.
BIN
Keishiki/runtime/shaders/dx11/temp.frag.bin
Normal file
BIN
Keishiki/runtime/shaders/dx11/temp.frag.bin
Normal file
Binary file not shown.
BIN
Keishiki/runtime/shaders/dx11/temp.vert.bin
Normal file
BIN
Keishiki/runtime/shaders/dx11/temp.vert.bin
Normal file
Binary file not shown.
4
Keishiki/runtime/temp.varying.def.sc
Normal file
4
Keishiki/runtime/temp.varying.def.sc
Normal file
|
@ -0,0 +1,4 @@
|
||||||
|
vec2 v_texcoord0 : TEXCOORD0 = vec2(0.0, 0.0);
|
||||||
|
|
||||||
|
vec3 a_position : POSITION;
|
||||||
|
vec2 a_texcoord0 : TEXCOORD0;
|
|
@ -1,10 +1,9 @@
|
||||||
import subprocess, os
|
import subprocess, os
|
||||||
|
|
||||||
#SHADERC = "..\\out\\install\\x64-Debug\\bin\\shaderc"
|
#SHADERC = "..\\build\\Keishiki\\ext\\bgfx\\cmake\\bgfx\\Debug\\shaderc"
|
||||||
# SHADERC = "/Users/lachrymal/Projects/NouVeL/build/ADVect/ext/bgfx/Debug/shaderc"
|
# SHADERC = "/Users/lachrymal/Projects/NouVeL/build/ADVect/ext/bgfx/Debug/shaderc"
|
||||||
SHADERC = "/home/lach/Projects/Keishiki/cmake-build-debug/Keishiki/ext/bgfx/cmake/bgfx/shaderc"
|
SHADERC = "/home/lach/Projects/Keishiki/cmake-build-debug/Keishiki/ext/bgfx/cmake/bgfx/shaderc"
|
||||||
#OUT = "..\\out\\build\\x64-Debug\\ADVect\\shaders\\"
|
#OUT = "..\\build\\Keishiki\\Debug\\shaders\\"
|
||||||
# OUT = "..\\build\\ADVect\\shaders\\"
|
|
||||||
# OUT = "/Users/lachrymal/Projects/NouVeL/ADVect/runtime/shaders/"
|
# OUT = "/Users/lachrymal/Projects/NouVeL/ADVect/runtime/shaders/"
|
||||||
OUT = "/home/lach/Projects/Keishiki/cmake-build-debug/Keishiki/shaders/"
|
OUT = "/home/lach/Projects/Keishiki/cmake-build-debug/Keishiki/shaders/"
|
||||||
I = "/home/lach/Projects/Keishiki/cmake-build-debug/Keishiki/"
|
I = "/home/lach/Projects/Keishiki/cmake-build-debug/Keishiki/"
|
||||||
|
|
Loading…
Add table
Reference in a new issue