[Bf-blender-cvs] [118cadf1ceb] soc-2018-npr: move line layer and delete line layer component ok.
Nick Wu
noreply at git.blender.org
Tue Jul 3 11:44:25 CEST 2018
Commit: 118cadf1ceb2cf88b1faea009a9f5c5f9cf16ec2
Author: Nick Wu
Date: Tue Jul 3 17:43:35 2018 +0800
Branches: soc-2018-npr
https://developer.blender.org/rB118cadf1ceb2cf88b1faea009a9f5c5f9cf16ec2
move line layer and delete line layer component ok.
===================================================================
M release/scripts/startup/bl_ui/properties_scene.py
M source/blender/draw/engines/lanpr/lanpr_all.h
M source/blender/draw/engines/lanpr/lanpr_engine.c
M source/blender/draw/engines/lanpr/lanpr_ops.c
===================================================================
diff --git a/release/scripts/startup/bl_ui/properties_scene.py b/release/scripts/startup/bl_ui/properties_scene.py
index 0c59f470664..88ca9e117f4 100644
--- a/release/scripts/startup/bl_ui/properties_scene.py
+++ b/release/scripts/startup/bl_ui/properties_scene.py
@@ -540,8 +540,10 @@ class SCENE_PT_lanpr(SceneButtonsPanel, Panel):
split = layout.split()
col = split.column()
col.operator("scene.lanpr_add_line_layer", icon="ZOOMIN")
- col = split.column()
col.operator("scene.lanpr_delete_line_layer", icon="ZOOMOUT")
+ col = split.column()
+ col.operator("scene.lanpr_move_line_layer", icon="TRIA_UP").direction = "UP"
+ col.operator("scene.lanpr_move_line_layer", icon="TRIA_DOWN").direction = "DOWN"
layout.operator("scene.lanpr_rebuild_all_commands")
else:
layout.operator("scene.lanpr_add_line_layer")
@@ -634,7 +636,8 @@ class SCENE_PT_lanpr_line_components(SceneButtonsPanel, Panel):
active_layer = lanpr.layers.active_layer
layout.operator("scene.lanpr_add_line_component", icon = "ZOOMIN")
-
+
+ i=0
for c in active_layer.components:
split = layout.split(percentage=0.85)
col = split.column()
@@ -649,7 +652,8 @@ class SCENE_PT_lanpr_line_components(SceneButtonsPanel, Panel):
elif c.component_mode == "COLLECTION":
cl.prop(c,"collection_select", text = "")
col = split.column()
- col.label(text = "X")
+ col.operator("scene.lanpr_delete_line_component", text="", icon = "ZOOMOUT").index=i
+ i=i+1
class SCENE_PT_lanpr_line_effects(SceneButtonsPanel, Panel):
diff --git a/source/blender/draw/engines/lanpr/lanpr_all.h b/source/blender/draw/engines/lanpr/lanpr_all.h
index 321b3323967..5408e908270 100644
--- a/source/blender/draw/engines/lanpr/lanpr_all.h
+++ b/source/blender/draw/engines/lanpr/lanpr_all.h
@@ -391,7 +391,8 @@ typedef struct LANPR_RenderTriangle {
struct LANPR_RenderLine *RL[3];
real GN[3];
real GC[3];
- struct BMFace *F;
+ //struct BMFace *F;
+ short MaterialID;
nListHandle IntersectingVerts;
char CullStatus;
struct LANPR_RenderTriangle *Testing; //Should Be tRT** Testing[NumOfThreads]
diff --git a/source/blender/draw/engines/lanpr/lanpr_engine.c b/source/blender/draw/engines/lanpr/lanpr_engine.c
index 0e02cce0aca..bc514380939 100644
--- a/source/blender/draw/engines/lanpr/lanpr_engine.c
+++ b/source/blender/draw/engines/lanpr/lanpr_engine.c
@@ -477,6 +477,8 @@ static void lanpr_draw_scene_exec(void *vedata, GPUFrameBuffer* dfb) {
//DRW_draw_pass(psl->color_pass);
GPU_framebuffer_bind(fbl->software_ms);
+ // almost forgot
+ GPU_framebuffer_clear(fbl->software_ms, clear_bits, lanpr->background_color, clear_depth, clear_stencil);
DRW_draw_pass(psl->software_pass);
GPU_framebuffer_bind(dfb);
diff --git a/source/blender/draw/engines/lanpr/lanpr_ops.c b/source/blender/draw/engines/lanpr/lanpr_ops.c
index 0ffa4c092f8..494bfb27a9a 100644
--- a/source/blender/draw/engines/lanpr/lanpr_ops.c
+++ b/source/blender/draw/engines/lanpr/lanpr_ops.c
@@ -34,6 +34,8 @@
#include "WM_api.h"
#include <math.h>
+#include "RNA_access.h"
+#include "RNA_define.h"
/*
@@ -1589,7 +1591,7 @@ void lanpr_MakeRenderGeometryBuffersObject(Object *o, real *MVMat, real *MVPMat,
rt->V[2] = &orv[BM_elem_index_get(loop->v)];
rt->RL[2] = &orl[BM_elem_index_get(loop->e)];
- rt->F = f;
+ rt->MaterialID = f->mat_nr;
rt->GN[0] = f->no[0];
rt->GN[1] = f->no[1];
rt->GN[2] = f->no[2];
@@ -2474,7 +2476,7 @@ void lanpr_ComputeSceneContours(LANPR_RenderBuffer *rb) {
if (!Add) {
if ((Result = Dot1 * Dot2) <= 0) Add = 1;
elif(tMatDot3d(rl->TL->GN, rl->TR->GN, 0) < 0.7) Add = 2;
- //elif(rl->TL && rl->TR && rl->TL->F && rl->TR->F && rl->TL->F->MaterialID != rl->TR->F->MaterialID) Add = 3;
+ elif(rl->TL && rl->TR && rl->TL->MaterialID != rl->TR->MaterialID) Add = 3;
}
if (Add == 1) {
@@ -2706,12 +2708,13 @@ int lanpr_CountThisLine(LANPR_RenderLine* rl, LANPR_LineLayer* ll) {
if (!llc) return 1;
for (llc; llc; llc = llc->next) {
if (llc->component_mode == LANPR_COMPONENT_MODE_ALL) { OrResult = 1; }
- elif(llc->component_mode == LANPR_COMPONENT_MODE_OBJECT) {
- if (rl->ObjectRef->id.orig_id == &llc->object_select->id) { OrResult = 1;}
+ elif(llc->component_mode == LANPR_COMPONENT_MODE_OBJECT && llc->object_select) {
+ if (rl->ObjectRef && rl->ObjectRef->id.orig_id == &llc->object_select->id) { OrResult = 1;}
else { AndResult = 0; }
- }elif(llc->component_mode == LANPR_COMPONENT_MODE_MATERIAL) {
- OrResult = 1;
- }elif(llc->component_mode == LANPR_COMPONENT_MODE_COLLECTION) {
+ }elif(llc->component_mode == LANPR_COMPONENT_MODE_MATERIAL && llc->material_select) {
+ if ((rl->TL && rl->TL->MaterialID == llc->material_select->index)||(rl->TR && rl->TR->MaterialID == llc->material_select->index) || (!rl->TL && !rl->TR)) { OrResult = 1; }
+ else { AndResult = 0; }
+ }elif(llc->component_mode == LANPR_COMPONENT_MODE_COLLECTION && llc->collection_select) {
if(BKE_collection_has_object(llc->collection_select, (Object*)rl->ObjectRef->id.orig_id)) { OrResult = 1; }
else { AndResult = 0; }
}
@@ -2997,11 +3000,15 @@ int lanpr_move_line_layer_exec(struct bContext *C, struct wmOperator *op) {
if (!ll) return OPERATOR_FINISHED;
- //if (strArgumentMatch(a->ExtraInstructionsP, "direction", "up")) {
- //lstMoveUp(&ll->Parentlanpr->line_layers, ll);
- //}elif(strArgumentMatch(a->ExtraInstructionsP, "direction", "down")) {
- //lstMoveDown(&ll->Parentlanpr->line_layers, ll);
- //}
+ int dir = RNA_enum_get(op->ptr, "direction");
+
+ if (dir == 1 && ll->prev) {
+ BLI_remlink(&lanpr->line_layers, ll);
+ BLI_insertlinkbefore(&lanpr->line_layers, ll->prev, ll);
+ }elif(dir == -1 && ll->next) {
+ BLI_remlink(&lanpr->line_layers, ll);
+ BLI_insertlinkafter(&lanpr->line_layers, ll->next, ll);
+ }
return OPERATOR_FINISHED;
}
@@ -3016,8 +3023,23 @@ int lanpr_add_line_component_exec(struct bContext *C, struct wmOperator *op) {
int lanpr_delete_line_component_exec(struct bContext *C, struct wmOperator *op) {
Scene *scene = CTX_data_scene(C);
SceneLANPR *lanpr = &scene->lanpr;
+ LANPR_LineLayer* ll = lanpr->active_layer;
+ LANPR_LineLayerComponent* llc;
+ int i = 0;
- // need property access
+ if (!ll) return;
+
+ int index = RNA_int_get(op->ptr, "index");
+
+ for (llc = ll->components.first; llc; llc = llc->next) {
+ if (index == i) break;
+ i++;
+ }
+
+ if (llc) {
+ BLI_remlink(&ll->components, llc);
+ MEM_freeN(llc);
+ }
return OPERATOR_FINISHED;
}
@@ -3104,6 +3126,11 @@ void SCENE_OT_lanpr_auto_create_line_layer(struct wmOperatorType *ot) {
}
void SCENE_OT_lanpr_move_line_layer(struct wmOperatorType *ot) {
+ static const EnumPropertyItem line_layer_move[] = {
+ { 1, "UP", 0, "Up", "" },
+ { -1, "DOWN", 0, "Down", "" },
+ { 0, NULL, 0, NULL, NULL }
+ };
ot->name = "Move Line Layer";
ot->description = "Move LANPR line layer up and down";
@@ -3113,6 +3140,8 @@ void SCENE_OT_lanpr_move_line_layer(struct wmOperatorType *ot) {
ot->exec = lanpr_move_line_layer_exec;
+ RNA_def_enum(ot->srna, "direction", line_layer_move, 0, "Direction",
+ "Direction to move the active line layer towards");
}
void SCENE_OT_lanpr_add_line_component(struct wmOperatorType *ot) {
@@ -3132,4 +3161,5 @@ void SCENE_OT_lanpr_delete_line_component(struct wmOperatorType *ot) {
ot->exec = lanpr_delete_line_component_exec;
+ RNA_def_int(ot->srna, "index", 0, 0, 10000, "index", "index of this line component", 0, 10000);
}
More information about the Bf-blender-cvs
mailing list