From c33fcdf932dfede54557311fbb30771daf6e7900 Mon Sep 17 00:00:00 2001 From: omigamedev Date: Wed, 27 Feb 2019 11:59:44 +0100 Subject: [PATCH] fix initial direction --- src/brush.cpp | 20 +++++++++++--------- src/brush.h | 1 + src/node_panel_stroke.cpp | 1 + 3 files changed, 13 insertions(+), 9 deletions(-) diff --git a/src/brush.cpp b/src/brush.cpp index 9fb66a8..cd6b2fb 100644 --- a/src/brush.cpp +++ b/src/brush.cpp @@ -210,7 +210,11 @@ std::vector Stroke::compute_samples() } m_dir_kp = m_last_kp; m_dir_dist = 0; - m_dir_valid = true; + if (!m_dir_valid) + { + m_dir_init = m_dir_angle + m_dir_ref_angle; + m_dir_valid = true; + } } bool need_dir = false; @@ -225,20 +229,18 @@ std::vector Stroke::compute_samples() auto s = randomize_sample(pos, pressure, m_dir_angle + m_dir_ref_angle); if (s.valid()) { - if (m_brush->m_tip_angle_follow || (!m_dir_valid && m_brush->m_tip_angle_init)) + if (m_brush->m_tip_angle_follow) { m_direction.add(m_dir_angle); s.angle += m_direction.average() + m_dir_ref_angle; - m_prev_sample = s; - samples.push_back(s); } - else + else if (m_brush->m_tip_angle_init) { - if (m_brush->m_tip_angle_init) - s.angle += m_direction.average() + m_dir_ref_angle; - m_prev_sample = s; - samples.push_back(s); + s.angle = m_dir_init; } + + m_prev_sample = s; + samples.push_back(s); } else { diff --git a/src/brush.h b/src/brush.h index 3aaeb15..7cf2ee4 100644 --- a/src/brush.h +++ b/src/brush.h @@ -160,6 +160,7 @@ public: float m_dir_dist = 0; float m_dir_step = 10; float m_dir_angle = 0; + float m_dir_init = 0; float m_curve = 0; float m_dist = 0; float m_step = 0; diff --git a/src/node_panel_stroke.cpp b/src/node_panel_stroke.cpp index 8da4799..1f3439b 100644 --- a/src/node_panel_stroke.cpp +++ b/src/node_panel_stroke.cpp @@ -166,6 +166,7 @@ void NodePanelStroke::update_controls() m_jitter_val->m_value.x = b->m_jitter_val; m_jitter_aspect->m_value.x = b->m_jitter_aspect; m_tip_angle_follow->checked = b->m_tip_angle_follow; + m_tip_angle_init->checked = b->m_tip_angle_init; m_tip_flow_pressure->checked = b->m_tip_flow_pressure; m_tip_size_pressure->checked = b->m_tip_size_pressure; m_jitter_aspect_bothaxis->checked = b->m_jitter_aspect_bothaxis;