[Bf-blender-cvs] [d2a34bc4ce4] greasepencil-object: Use object location as center for swirl
Antonio Vazquez
noreply at git.blender.org
Sat Aug 19 13:40:10 CEST 2017
Commit: d2a34bc4ce402e5c186120e4b5d16788ac6e6810
Author: Antonio Vazquez
Date: Sat Aug 19 12:22:57 2017 +0200
Branches: greasepencil-object
https://developer.blender.org/rBd2a34bc4ce402e5c186120e4b5d16788ac6e6810
Use object location as center for swirl
===================================================================
M release/scripts/startup/bl_ui/properties_data_modifier.py
M source/blender/draw/engines/gpencil/gpencil_vfx.c
M source/blender/makesdna/DNA_modifier_types.h
M source/blender/makesrna/intern/rna_modifier.c
M source/blender/modifiers/intern/MOD_gpencilswirl.c
===================================================================
diff --git a/release/scripts/startup/bl_ui/properties_data_modifier.py b/release/scripts/startup/bl_ui/properties_data_modifier.py
index 007fdbcca3d..36b60d1c099 100644
--- a/release/scripts/startup/bl_ui/properties_data_modifier.py
+++ b/release/scripts/startup/bl_ui/properties_data_modifier.py
@@ -1821,7 +1821,10 @@ class DATA_PT_modifiers(ModifierButtonsPanel, Panel):
col = split.column()
col.label(text="Center:")
- col.prop(md, "center", text="")
+ col.prop(md, "use_loc", text="Use Location")
+ row = col.row()
+ row.enabled = md.use_loc
+ row.prop(md, "center", text="")
col.separator()
col.prop(md, "radius")
diff --git a/source/blender/draw/engines/gpencil/gpencil_vfx.c b/source/blender/draw/engines/gpencil/gpencil_vfx.c
index b2a85d6212e..c2f361f079b 100644
--- a/source/blender/draw/engines/gpencil/gpencil_vfx.c
+++ b/source/blender/draw/engines/gpencil/gpencil_vfx.c
@@ -31,6 +31,9 @@
#include "DNA_gpencil_types.h"
#include "DNA_modifier_types.h"
+#include "DNA_screen_types.h"
+
+#include "ED_view3d.h"
#include "gpencil_engine.h"
@@ -279,8 +282,18 @@ static void DRW_gpencil_vfx_swirl(ModifierData *md, int ob_idx, GPENCIL_e_data *
GPENCIL_StorageList *stl = ((GPENCIL_Data *)vedata)->stl;
GPENCIL_PassList *psl = ((GPENCIL_Data *)vedata)->psl;
DRWShadingGroup *vfx_shgrp;
- stl->vfx[ob_idx].vfx_swirl.center[0] = mmd->center[0];
- stl->vfx[ob_idx].vfx_swirl.center[1] = mmd->center[1];
+ const DRWContextState *draw_ctx = DRW_context_state_get();
+ ARegion *ar = draw_ctx->ar;
+ int co[2];
+ if (mmd->flag & GP_SWIRL_USE_OB_LOC) {
+ ED_view3d_project_int_global(ar, ob->loc, co, V3D_PROJ_TEST_NOP);
+ stl->vfx[ob_idx].vfx_swirl.center[0] = co[0];
+ stl->vfx[ob_idx].vfx_swirl.center[1] = co[1];
+ }
+ else {
+ stl->vfx[ob_idx].vfx_swirl.center[0] = mmd->center[0];
+ stl->vfx[ob_idx].vfx_swirl.center[1] = mmd->center[1];
+ }
stl->vfx[ob_idx].vfx_swirl.radius = mmd->radius;
stl->vfx[ob_idx].vfx_swirl.angle = mmd->angle;
stl->vfx[ob_idx].vfx_swirl.transparent = (int)mmd->flag & GP_SWIRL_MAKE_TRANSPARENT;
diff --git a/source/blender/makesdna/DNA_modifier_types.h b/source/blender/makesdna/DNA_modifier_types.h
index 6b3c64df957..a2d71e96d8a 100644
--- a/source/blender/makesdna/DNA_modifier_types.h
+++ b/source/blender/makesdna/DNA_modifier_types.h
@@ -1844,6 +1844,7 @@ typedef struct GpencilSwirlModifierData {
typedef enum eGpencilSwirl_Flag {
GP_SWIRL_MAKE_TRANSPARENT = (1 << 0),
+ GP_SWIRL_USE_OB_LOC = (1 << 1),
} eGpencilSwirl_Flag;
#define MOD_MESHSEQ_READ_ALL \
diff --git a/source/blender/makesrna/intern/rna_modifier.c b/source/blender/makesrna/intern/rna_modifier.c
index 0f9ac4218e5..2a1bd4e65cf 100644
--- a/source/blender/makesrna/intern/rna_modifier.c
+++ b/source/blender/makesrna/intern/rna_modifier.c
@@ -5513,6 +5513,11 @@ static void rna_def_modifier_gpencilswirl(BlenderRNA *brna)
RNA_def_property_boolean_sdna(prop, NULL, "flag", GP_SWIRL_MAKE_TRANSPARENT);
RNA_def_property_ui_text(prop, "Transparent", "Make image transparent outside of radius");
RNA_def_property_update(prop, 0, "rna_Modifier_update");
+
+ prop = RNA_def_property(srna, "use_loc", PROP_BOOLEAN, PROP_NONE);
+ RNA_def_property_boolean_sdna(prop, NULL, "flag", GP_SWIRL_USE_OB_LOC);
+ RNA_def_property_ui_text(prop, "Use Location", "Use object location as center");
+ RNA_def_property_update(prop, 0, "rna_Modifier_update");
}
void RNA_def_modifier(BlenderRNA *brna)
diff --git a/source/blender/modifiers/intern/MOD_gpencilswirl.c b/source/blender/modifiers/intern/MOD_gpencilswirl.c
index 467b3ab0744..e4791bf834f 100644
--- a/source/blender/modifiers/intern/MOD_gpencilswirl.c
+++ b/source/blender/modifiers/intern/MOD_gpencilswirl.c
@@ -46,6 +46,7 @@ static void initData(ModifierData *md)
gpmd->radius = 100;
ARRAY_SET_ITEMS(gpmd->center, 600, 600);
gpmd->angle = 1.57079f; // PI/2
+ gpmd->flag |= GP_SWIRL_USE_OB_LOC;
BKE_gpencil_batch_cache_alldirty();
}
More information about the Bf-blender-cvs
mailing list