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">
<!-- 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">
<text text="Timeline: " margin="8 10 0 0"/>
<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();
};
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");
slider->on_value_changed = [this, frame_text](Node*, float value)
if (auto * slider = layout[main_id]->find<NodeSliderH>("frames-slider"))
{
auto& c = *Canvas::I;
for (int i = 0; i < c.m_layers.size(); i++)
auto frame_text = layout[main_id]->find<NodeText>("timeline-frame");
slider->on_value_changed = [this, frame_text](Node*, float value)
{
auto l = layers->get_layer_at(i);
layers->handle_layer_opacity(l, .0f);
}
auto& c = *Canvas::I;
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(current_layer);
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);
}
for (int i = 0; i < c.m_layers.size(); i++)
{
auto l = layers->get_layer_at(i);
layers->handle_layer_opacity(l, .0f);
}
// First layer always visible
{
auto l = layers->get_layer_at(0);
layers->handle_layer_opacity(l, 1.0f);
}
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(current_layer);
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)
{
char str[16];
snprintf(str, sizeof(str), "%02d", current_layer);
frame_text->set_text(str);
}
};
// First layer always visible
{
auto l = layers->get_layer_at(0);
layers->handle_layer_opacity(l, 1.0f);
}
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)
{
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)
{

View File

@@ -30,7 +30,7 @@ public:
glm::vec2 m_tip_scale = { 1.f, 1.f };
glm::vec2 m_dual_scale = { 1.f, 1.f };
float m_tip_size = 50;
float m_tip_spacing = .25;
float m_tip_spacing = .05;
float m_tip_flow = 1.f;
float m_tip_opacity = 1.f;
float m_tip_angle = 0;
@@ -45,7 +45,7 @@ public:
bool m_tip_angle_follow = false;
bool m_tip_flow_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_angle = 0;
float m_jitter_scatter = 0;

View File

@@ -13,7 +13,7 @@
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;
struct stat m_file_info { 0 };
public:
@@ -34,6 +34,11 @@ public:
auto i = m_layouts.find(id);
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 clear_context();
//Node& operator[](const char* ids) { return m_layouts[const_hash(ids)]; }