asdf
This commit is contained in:
parent
78349e2854
commit
b23208888d
1 changed files with 50 additions and 49 deletions
|
@ -2051,6 +2051,56 @@ namespace K::UI {
|
||||||
delete_requests[K_DR_Selected_Compositions] = false;
|
delete_requests[K_DR_Selected_Compositions] = false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (delete_requests[K_DR_Make_Subcomposition]) {
|
||||||
|
auto itt = app_state.project.compositions.emplace();
|
||||||
|
CompositionState& new_comp = *itt;
|
||||||
|
new_comp.name = "subcomp";
|
||||||
|
new_comp.fps = s.fps;
|
||||||
|
new_comp.width = s.width;
|
||||||
|
new_comp.height = s.height;
|
||||||
|
new_comp.Setup();
|
||||||
|
u32 index_in_new_comp = 0;
|
||||||
|
u64 frame_min = -1, frame_max = 0;
|
||||||
|
for (auto& j : s.selected) {
|
||||||
|
new_comp.layers.push_back(s.layers[j]);
|
||||||
|
for (auto& u : new_comp.layers.back().track.uniforms)
|
||||||
|
if (u.status & K_U_Exposed) {
|
||||||
|
VisualTrack::ExposeUniform(new_comp, u);
|
||||||
|
}
|
||||||
|
if (std::ranges::find(s.disabled, j) != s.disabled.end())
|
||||||
|
new_comp.disabled.push_back(index_in_new_comp);
|
||||||
|
frame_min = std::min(frame_min, s.layers[j].in);
|
||||||
|
frame_max = std::max(frame_max, s.layers[j].out);
|
||||||
|
index_in_new_comp++;
|
||||||
|
}
|
||||||
|
new_comp.frame_max = frame_max - frame_min;
|
||||||
|
for (auto& layer : new_comp.layers)
|
||||||
|
layer.in -= frame_min;
|
||||||
|
|
||||||
|
if (std::ranges::find(s.selected, s.active) != s.selected.end()) // unset active if active is selected
|
||||||
|
s.active = -1;
|
||||||
|
u32 deleted = 0, before_active = 0; // stupid counting tricks
|
||||||
|
const u32 sz = s.layers.size();
|
||||||
|
for (u32 j = 0; j < sz; j++) { // im sure this isn't the best way to go about this
|
||||||
|
if (std::ranges::find(s.selected, j) != s.selected.end()) {
|
||||||
|
for (auto &u: s.layers[j - deleted].track.uniforms)
|
||||||
|
VisualTrack::HideUniform(s, u);
|
||||||
|
s.layers.erase(s.layers.begin() + j - deleted);
|
||||||
|
std::erase(s.disabled, j);
|
||||||
|
if (static_cast<i32>(j) < s.active)
|
||||||
|
before_active++;
|
||||||
|
deleted++;
|
||||||
|
}
|
||||||
|
else if (auto it = std::ranges::find(s.disabled, j); it != s.disabled.end())
|
||||||
|
*it -= deleted;
|
||||||
|
}
|
||||||
|
s.selected.clear();
|
||||||
|
if (s.active != -1)
|
||||||
|
s.active -= static_cast<i32>(before_active);
|
||||||
|
|
||||||
|
delete_requests[K_DR_Make_Subcomposition] = false;
|
||||||
|
}
|
||||||
|
|
||||||
if (delete_requests[K_DR_Selected_Layers]) {
|
if (delete_requests[K_DR_Selected_Layers]) {
|
||||||
if (std::ranges::find(s.selected, s.active) != s.selected.end()) // unset active if active is selected
|
if (std::ranges::find(s.selected, s.active) != s.selected.end()) // unset active if active is selected
|
||||||
s.active = -1;
|
s.active = -1;
|
||||||
|
@ -2077,55 +2127,6 @@ namespace K::UI {
|
||||||
delete_requests[K_DR_Selected_Layers] = false;
|
delete_requests[K_DR_Selected_Layers] = false;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (delete_requests[K_DR_Make_Subcomposition]) {
|
|
||||||
auto itt = app_state.project.compositions.emplace();
|
|
||||||
CompositionState& new_comp = *itt;
|
|
||||||
new_comp.name = "subcomp";
|
|
||||||
new_comp.fps = s.fps;
|
|
||||||
new_comp.width = s.width;
|
|
||||||
new_comp.height = s.height;
|
|
||||||
new_comp.Setup();
|
|
||||||
u32 index_in_new_comp = 0;
|
|
||||||
u64 frame_min = -1, frame_max = 0;
|
|
||||||
for (auto& j : s.selected) {
|
|
||||||
for (auto& u : s.layers[j].track.uniforms)
|
|
||||||
if (u.status & K_U_Exposed) {
|
|
||||||
VisualTrack::HideUniform(s, u); // fixme
|
|
||||||
VisualTrack::ExposeUniform(new_comp, u);
|
|
||||||
}
|
|
||||||
new_comp.layers.push_back(std::move(s.layers[j]));
|
|
||||||
if (std::ranges::find(s.disabled, j) != s.disabled.end())
|
|
||||||
new_comp.disabled.push_back(index_in_new_comp);
|
|
||||||
frame_min = std::min(frame_min, s.layers[j].in);
|
|
||||||
frame_max = std::max(frame_max, s.layers[j].out);
|
|
||||||
index_in_new_comp++;
|
|
||||||
}
|
|
||||||
new_comp.frame_max = frame_max - frame_min;
|
|
||||||
for (auto& layer : new_comp.layers)
|
|
||||||
layer.in -= frame_min;
|
|
||||||
|
|
||||||
if (std::ranges::find(s.selected, s.active) != s.selected.end()) // unset active if active is selected
|
|
||||||
s.active = -1;
|
|
||||||
u32 deleted = 0, before_active = 0; // stupid counting tricks
|
|
||||||
const u32 sz = s.layers.size();
|
|
||||||
for (u32 j = 0; j < sz; j++) { // im sure this isn't the best way to go about this
|
|
||||||
if (std::ranges::find(s.selected, j) != s.selected.end()) {
|
|
||||||
s.layers.erase(s.layers.begin() + j - deleted);
|
|
||||||
std::erase(s.disabled, j);
|
|
||||||
if (static_cast<i32>(j) < s.active)
|
|
||||||
before_active++;
|
|
||||||
deleted++;
|
|
||||||
}
|
|
||||||
else if (auto it = std::ranges::find(s.disabled, j); it != s.disabled.end())
|
|
||||||
*it -= deleted;
|
|
||||||
}
|
|
||||||
s.selected.clear();
|
|
||||||
if (s.active != -1)
|
|
||||||
s.active -= static_cast<i32>(before_active);
|
|
||||||
|
|
||||||
delete_requests[K_DR_Make_Subcomposition] = false;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (delete_requests[K_DR_Selected_Nodes]) {
|
if (delete_requests[K_DR_Selected_Nodes]) {
|
||||||
for (auto p: s.plugboard.selected_nodes) {
|
for (auto p: s.plugboard.selected_nodes) {
|
||||||
std::visit([&s](auto &&arg) {
|
std::visit([&s](auto &&arg) {
|
||||||
|
|
Loading…
Add table
Reference in a new issue