deactivate timeline
This commit is contained in:
@@ -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>
|
||||
|
||||
@@ -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();
|
||||
}
|
||||
|
||||
/*
|
||||
|
||||
@@ -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)
|
||||
{
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -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)]; }
|
||||
|
||||
Reference in New Issue
Block a user