deactivate timeline

This commit is contained in:
2019-06-03 17:11:24 +02:00
parent 2d43b74956
commit 02b92cf382
5 changed files with 46 additions and 36 deletions

View File

@@ -1749,7 +1749,7 @@ Here's a list of what's available in this release.
<node dir="col" width="1" grow="1"> <node dir="col" width="1" grow="1">
<!-- timeline --> <!-- timeline -->
<node width="100%" shrink="1" dir="col" rtl="ltr"> <node width="100%" shrink="1" dir="col" rtl="ltr" id="timeline">
<border color=".3 .3 .3 .4" height="50" width="100%" pad="10" dir="row" mouse-capture="true"> <border color=".3 .3 .3 .4" height="50" width="100%" pad="10" dir="row" mouse-capture="true">
<text text="Timeline: " margin="8 10 0 0"/> <text text="Timeline: " margin="8 10 0 0"/>
<slider-h id="frames-slider" width="1" grow="1" margin="0 10 0 0"></slider-h> <slider-h id="frames-slider" width="1" grow="1" margin="0 10 0 0"></slider-h>

View File

@@ -1268,43 +1268,47 @@ void App::initLayout()
toggle_ui(); toggle_ui();
}; };
if (auto* slider = layout[main_id]->find<NodeSliderH>("frames-slider")) if (auto* timeline = layout[main_id]->find<NodeSliderH>("timeline"))
{ {
auto frame_text = layout[main_id]->find<NodeText>("timeline-frame"); if (auto * slider = layout[main_id]->find<NodeSliderH>("frames-slider"))
slider->on_value_changed = [this, frame_text](Node*, float value)
{ {
auto& c = *Canvas::I; auto frame_text = layout[main_id]->find<NodeText>("timeline-frame");
slider->on_value_changed = [this, frame_text](Node*, float value)
for (int i = 0; i < c.m_layers.size(); i++)
{ {
auto l = layers->get_layer_at(i); auto& c = *Canvas::I;
layers->handle_layer_opacity(l, .0f);
}
int current_layer = (int)glm::clamp<int>( for (int i = 0; i < c.m_layers.size(); i++)
floor(value * c.m_layers.size()), 1, (int)c.m_layers.size() - 1); {
auto l = layers->get_layer_at(current_layer); auto l = layers->get_layer_at(i);
layers->handle_layer_selected(l); layers->handle_layer_opacity(l, .0f);
layers->handle_layer_opacity(l, 1.f); }
if (current_layer > 0)
{
auto l = layers->get_layer_at(current_layer - 1);
layers->handle_layer_opacity(l, .25f);
}
// First layer always visible int current_layer = (int)glm::clamp<int>(
{ floor(value * c.m_layers.size()), 1, (int)c.m_layers.size() - 1);
auto l = layers->get_layer_at(0); auto l = layers->get_layer_at(current_layer);
layers->handle_layer_opacity(l, 1.0f); layers->handle_layer_selected(l);
} layers->handle_layer_opacity(l, 1.f);
if (current_layer > 0)
{
auto l = layers->get_layer_at(current_layer - 1);
layers->handle_layer_opacity(l, .25f);
}
if (frame_text) // First layer always visible
{ {
char str[16]; auto l = layers->get_layer_at(0);
snprintf(str, sizeof(str), "%02d", current_layer); layers->handle_layer_opacity(l, 1.0f);
frame_text->set_text(str); }
}
}; if (frame_text)
{
char str[16];
snprintf(str, sizeof(str), "%02d", current_layer);
frame_text->set_text(str);
}
};
}
timeline->destroy();
} }
/* /*

View File

@@ -139,7 +139,8 @@ void App::vr_analog(const VRController& c, VRController::kButton b, VRController
void App::vr_digital(const VRController& c, VRController::kButton b, VRController::kAction a, glm::vec2 axis) void App::vr_digital(const VRController& c, VRController::kButton b, VRController::kAction a, glm::vec2 axis)
{ {
if (b == VRController::kButton::A && a == VRController::kAction::Press) if ((b == VRController::kButton::A || b == VRController::kButton::Menu || b == VRController::kButton::Pad)
&& a == VRController::kAction::Press)
{ {
if (glm::length(axis) < 0.5f) if (glm::length(axis) < 0.5f)
{ {

View File

@@ -30,7 +30,7 @@ public:
glm::vec2 m_tip_scale = { 1.f, 1.f }; glm::vec2 m_tip_scale = { 1.f, 1.f };
glm::vec2 m_dual_scale = { 1.f, 1.f }; glm::vec2 m_dual_scale = { 1.f, 1.f };
float m_tip_size = 50; float m_tip_size = 50;
float m_tip_spacing = .25; float m_tip_spacing = .05;
float m_tip_flow = 1.f; float m_tip_flow = 1.f;
float m_tip_opacity = 1.f; float m_tip_opacity = 1.f;
float m_tip_angle = 0; float m_tip_angle = 0;
@@ -45,7 +45,7 @@ public:
bool m_tip_angle_follow = false; bool m_tip_angle_follow = false;
bool m_tip_flow_pressure = false; bool m_tip_flow_pressure = false;
bool m_tip_opacity_pressure = false; bool m_tip_opacity_pressure = false;
bool m_tip_size_pressure = false; bool m_tip_size_pressure = true;
float m_jitter_scale = 0; float m_jitter_scale = 0;
float m_jitter_angle = 0; float m_jitter_angle = 0;
float m_jitter_scatter = 0; float m_jitter_scatter = 0;

View File

@@ -13,7 +13,7 @@
class LayoutManager class LayoutManager
{ {
std::map<uint16_t, std::unique_ptr<class Node>> m_layouts; std::map<uint16_t, std::shared_ptr<class Node>> m_layouts;
std::string m_path; std::string m_path;
struct stat m_file_info { 0 }; struct stat m_file_info { 0 };
public: public:
@@ -34,6 +34,11 @@ public:
auto i = m_layouts.find(id); auto i = m_layouts.find(id);
return i == m_layouts.end() ? nullptr : i->second.get(); return i == m_layouts.end() ? nullptr : i->second.get();
} }
class std::shared_ptr<Node> get_ref(const char* name)
{
auto i = m_layouts.find(const_hash(name));
return i == m_layouts.end() ? nullptr : i->second;
}
void restore_context(); void restore_context();
void clear_context(); void clear_context();
//Node& operator[](const char* ids) { return m_layouts[const_hash(ids)]; } //Node& operator[](const char* ids) { return m_layouts[const_hash(ids)]; }