[Bf-blender-cvs] [3c185098c6d] soc-2019-npr: LANPR: ensure chain only contains one type of segments.

YimingWu noreply at git.blender.org
Thu Jun 27 08:44:18 CEST 2019


Commit: 3c185098c6dc9bc052103deddbbfeb81a7f9fae3
Author: YimingWu
Date:   Thu Jun 27 14:35:02 2019 +0800
Branches: soc-2019-npr
https://developer.blender.org/rB3c185098c6dc9bc052103deddbbfeb81a7f9fae3

LANPR: ensure chain only contains one type of segments.

===================================================================

M	source/blender/draw/engines/lanpr/lanpr_chain.c
M	source/blender/draw/engines/lanpr/lanpr_data_types.h

===================================================================

diff --git a/source/blender/draw/engines/lanpr/lanpr_chain.c b/source/blender/draw/engines/lanpr/lanpr_chain.c
index 7e7568c18c2..0cde4ce5f04 100644
--- a/source/blender/draw/engines/lanpr/lanpr_chain.c
+++ b/source/blender/draw/engines/lanpr/lanpr_chain.c
@@ -230,6 +230,7 @@ void lanpr_NO_THREAD_chain_feature_lines(LANPR_RenderBuffer *rb)
     rlc = lanpr_create_render_line_chain(rb);
 
     rlc->object_ref = rl->object_ref; /*  can only be the same object in a chain. */
+    rlc->type = (rl->flags & LANPR_EDGE_FLAG_ALL_TYPE);
 
     int r1, r2, c1, c2, row, col;
     LANPR_RenderLine *new_rl = rl;
@@ -639,7 +640,8 @@ void lanpr_connect_chains(LANPR_RenderBuffer *rb, int do_geometry_space)
           continue;
         }
         if (cre->rlc == rlc ||
-            ((LANPR_RenderLineChainItem *)cre->rlc->chain.first)->occlusion != occlusion) {
+            ((LANPR_RenderLineChainItem *)cre->rlc->chain.first)->occlusion != occlusion||
+            (cre->rlc->type != rlc->type)) {
           continue;
         }
         if (cre->rlc->picked) {
@@ -685,7 +687,8 @@ void lanpr_connect_chains(LANPR_RenderBuffer *rb, int do_geometry_space)
           continue;
         }
         if (cre->rlc == rlc ||
-            ((LANPR_RenderLineChainItem *)cre->rlc->chain.first)->occlusion != occlusion) {
+            ((LANPR_RenderLineChainItem *)cre->rlc->chain.first)->occlusion != occlusion||
+            (cre->rlc->type != rlc->type)) {
           continue;
         }
         if (cre->rlc->picked) {
diff --git a/source/blender/draw/engines/lanpr/lanpr_data_types.h b/source/blender/draw/engines/lanpr/lanpr_data_types.h
index 1f5eb4ac56c..ef00f5a67df 100644
--- a/source/blender/draw/engines/lanpr/lanpr_data_types.h
+++ b/source/blender/draw/engines/lanpr/lanpr_data_types.h
@@ -127,6 +127,7 @@ typedef struct LANPR_RenderLineChain {
   float length; /*  calculated before draw cmd. */
   char picked;  /*  used when re-connecting and gp stroke generation */
   char level;
+  int  type; /* Chain now only contains one type of segments */
   struct Object *object_ref;
 } LANPR_RenderLineChain;



More information about the Bf-blender-cvs mailing list