Commit: 68f470bc35a024548025d05cffa41b18942f0f12
Author: Jacques Lucke
Date:   Sun Dec 9 12:32:02 2018 +0100
Branches: rigid_deform
https://developer.blender.org/rB68f470bc35a024548025d05cffa41b18942f0f12

bind operator

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

M       release/scripts/startup/bl_ui/properties_data_modifier.py
M       source/blender/editors/object/object_intern.h
M       source/blender/editors/object/object_modifier.c
M       source/blender/editors/object/object_ops.c
M       source/blender/makesdna/DNA_modifier_types.h
M       source/blender/makesrna/RNA_access.h
M       source/blender/modifiers/intern/MOD_rigiddeform.c

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

diff --git a/release/scripts/startup/bl_ui/properties_data_modifier.py 
b/release/scripts/startup/bl_ui/properties_data_modifier.py
index 8e31e7d6961..28cfa9bf6fa 100644
--- a/release/scripts/startup/bl_ui/properties_data_modifier.py
+++ b/release/scripts/startup/bl_ui/properties_data_modifier.py
@@ -1635,6 +1635,7 @@ class DATA_PT_modifiers(ModifierButtonsPanel, Panel):
 
     def RIGID_DEFORM(self, layout, ob, md):
         layout.prop_search(md, "anchor_group_name", ob, "vertex_groups", 
text="Anchors")
+        layout.operator("object.rigiddeform_bind", text="Bind")
 
 
 class DATA_PT_gpencil_modifiers(ModifierButtonsPanel, Panel):
diff --git a/source/blender/editors/object/object_intern.h 
b/source/blender/editors/object/object_intern.h
index 1ef0b0f268c..f72eec99763 100644
--- a/source/blender/editors/object/object_intern.h
+++ b/source/blender/editors/object/object_intern.h
@@ -174,6 +174,7 @@ void OBJECT_OT_skin_loose_mark_clear(struct wmOperatorType 
*ot);
 void OBJECT_OT_skin_radii_equalize(struct wmOperatorType *ot);
 void OBJECT_OT_skin_armature_create(struct wmOperatorType *ot);
 void OBJECT_OT_laplaciandeform_bind(struct wmOperatorType *ot);
+void OBJECT_OT_rigiddeform_bind(struct wmOperatorType *ot);
 void OBJECT_OT_surfacedeform_bind(struct wmOperatorType *ot);
 
 /* grease pencil modifiers */
diff --git a/source/blender/editors/object/object_modifier.c 
b/source/blender/editors/object/object_modifier.c
index 02ee1f9c360..3d017e69138 100644
--- a/source/blender/editors/object/object_modifier.c
+++ b/source/blender/editors/object/object_modifier.c
@@ -2342,6 +2342,44 @@ void OBJECT_OT_laplaciandeform_bind(wmOperatorType *ot)
        edit_modifier_properties(ot);
 }
 
+/************************ RigidDeform bind operator *********************/
+
+static bool rigiddeform_bind_poll(bContext *C)
+{
+       return edit_modifier_poll_generic(C, &RNA_RigidDeformModifier, 0);
+}
+
+static int rigiddeform_bind_exec(bContext *UNUSED(C), wmOperator *UNUSED(op))
+{
+       printf("Hello World\n");
+       return OPERATOR_FINISHED;
+}
+
+static int rigiddeform_bind_invoke(bContext *C, wmOperator *op, const wmEvent 
*UNUSED(event))
+{
+       if (edit_modifier_invoke_properties(C, op))
+               return rigiddeform_bind_exec(C, op);
+       else
+               return OPERATOR_CANCELLED;
+}
+
+void OBJECT_OT_rigiddeform_bind(wmOperatorType *ot)
+{
+       /* identifiers */
+       ot->name = "Rigid Deform Bind";
+       ot->description = "Bind current mesh as relaxed state to rigid deform 
modifier";
+       ot->idname = "OBJECT_OT_rigiddeform_bind";
+
+       /* api callbacks */
+       ot->poll = rigiddeform_bind_poll;
+       ot->invoke = rigiddeform_bind_invoke;
+       ot->exec = rigiddeform_bind_exec;
+
+       /* flags */
+       ot->flag = OPTYPE_REGISTER | OPTYPE_UNDO | OPTYPE_INTERNAL;
+       edit_modifier_properties(ot);
+}
+
 /************************ sdef bind operator *********************/
 
 static bool surfacedeform_bind_poll(bContext *C)
diff --git a/source/blender/editors/object/object_ops.c 
b/source/blender/editors/object/object_ops.c
index eb9dd0bbe28..f32f23b49d0 100644
--- a/source/blender/editors/object/object_ops.c
+++ b/source/blender/editors/object/object_ops.c
@@ -259,6 +259,7 @@ void ED_operatortypes_object(void)
        WM_operatortype_append(OBJECT_OT_drop_named_material);
        WM_operatortype_append(OBJECT_OT_unlink_data);
        WM_operatortype_append(OBJECT_OT_laplaciandeform_bind);
+       WM_operatortype_append(OBJECT_OT_rigiddeform_bind);
 
        WM_operatortype_append(TRANSFORM_OT_vertex_random);
 
diff --git a/source/blender/makesdna/DNA_modifier_types.h 
b/source/blender/makesdna/DNA_modifier_types.h
index 02eabdc04b6..5d58efe423b 100644
--- a/source/blender/makesdna/DNA_modifier_types.h
+++ b/source/blender/makesdna/DNA_modifier_types.h
@@ -1948,9 +1948,15 @@ enum {
 #define MOD_MESHSEQ_READ_ALL \
        (MOD_MESHSEQ_READ_VERT | MOD_MESHSEQ_READ_POLY | MOD_MESHSEQ_READ_UV | 
MOD_MESHSEQ_READ_COLOR)
 
+typedef struct RigidDeformModifierBindData {
+       int *anchor_indices;
+} RigidDeformModifierBindData;
+
 typedef struct RigidDeformModifierData {
        ModifierData modifier;
        char anchor_group_name[64];  /* MAX_VGROUP_NAME */
+       RigidDeformModifierBindData *bind_data;
+       char bind_next_execution, pad[7];
 } RigidDeformModifierData;
 
 #endif  /* __DNA_MODIFIER_TYPES_H__ */
diff --git a/source/blender/makesrna/RNA_access.h 
b/source/blender/makesrna/RNA_access.h
index 671b3dd871e..2368819b0ac 100644
--- a/source/blender/makesrna/RNA_access.h
+++ b/source/blender/makesrna/RNA_access.h
@@ -524,6 +524,7 @@ extern StructRNA RNA_RenderSettings;
 extern StructRNA RNA_RigidBodyJointConstraint;
 extern StructRNA RNA_RigidBodyObject;
 extern StructRNA RNA_RigidBodyWorld;
+extern StructRNA RNA_RigidDeformModifier;
 extern StructRNA RNA_SPHFluidSettings;
 extern StructRNA RNA_Scene;
 extern StructRNA RNA_SceneDisplay;
diff --git a/source/blender/modifiers/intern/MOD_rigiddeform.c 
b/source/blender/modifiers/intern/MOD_rigiddeform.c
index 7f40dddde9a..2da1d1235fa 100644
--- a/source/blender/modifiers/intern/MOD_rigiddeform.c
+++ b/source/blender/modifiers/intern/MOD_rigiddeform.c
@@ -50,6 +50,10 @@ static void deformVerts(
 
 static void initData(ModifierData *md)
 {
+       RigidDeformModifierData *rdmd = (RigidDeformModifierData *)md;
+       rdmd->anchor_group_name[0] = '\0';
+       rdmd->bind_data = NULL;
+       rdmd->bind_next_execution = false;
 }
 
  ModifierTypeInfo modifierType_RigidDeform = {

_______________________________________________
Bf-blender-cvs mailing list
[email protected]
https://lists.blender.org/mailman/listinfo/bf-blender-cvs

Reply via email to