Commit: 23627f717d9c724d60a3f9a1570ed0513cacdf71
Author: Kévin Dietrich
Date:   Mon Aug 3 16:35:26 2015 +0200
Branches: openvdb
https://developer.blender.org/rB23627f717d9c724d60a3f9a1570ed0513cacdf71

Add an operator to free the cache and delete the cached files.

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

M       release/scripts/startup/bl_ui/properties_physics_smoke.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

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

diff --git a/release/scripts/startup/bl_ui/properties_physics_smoke.py 
b/release/scripts/startup/bl_ui/properties_physics_smoke.py
index 4c13d0c..6ff216e 100644
--- a/release/scripts/startup/bl_ui/properties_physics_smoke.py
+++ b/release/scripts/startup/bl_ui/properties_physics_smoke.py
@@ -364,6 +364,7 @@ class PHYSICS_PT_smoke_cache(PhysicButtonsPanel, Panel):
                 row = layout.row()
                 row.prop(cache, "save_as_half")
                 layout.operator("object.smoke_vdb_export", text="Bake")
+                layout.operator("object.openvdb_cache_free")
 
 
 class PHYSICS_PT_smoke_field_weights(PhysicButtonsPanel, Panel):
diff --git a/source/blender/editors/object/object_intern.h 
b/source/blender/editors/object/object_intern.h
index 73e88a5..c883699 100644
--- a/source/blender/editors/object/object_intern.h
+++ b/source/blender/editors/object/object_intern.h
@@ -188,6 +188,7 @@ void OBJECT_OT_smoke_vdb_export(struct wmOperatorType *ot);
 void OBJECT_OT_openvdb_cache_add(struct wmOperatorType *ot);
 void OBJECT_OT_openvdb_cache_remove(struct wmOperatorType *ot);
 void OBJECT_OT_openvdb_cache_move(struct wmOperatorType *ot);
+void OBJECT_OT_openvdb_cache_free(struct wmOperatorType *ot);
 
 /* object_constraint.c */
 void OBJECT_OT_constraint_add(struct wmOperatorType *ot);
diff --git a/source/blender/editors/object/object_modifier.c 
b/source/blender/editors/object/object_modifier.c
index b1fcc3a..d2752b0 100644
--- a/source/blender/editors/object/object_modifier.c
+++ b/source/blender/editors/object/object_modifier.c
@@ -2647,3 +2647,51 @@ void OBJECT_OT_openvdb_cache_move(wmOperatorType *ot)
        ot->flag = OPTYPE_REGISTER | OPTYPE_UNDO;
        ot->prop = RNA_def_enum(ot->srna, "direction", cache_move, 
VDB_CACHE_MOVE_UP, "Direction", "");
 }
+
+static int openvdb_cache_free_exec(bContext *C, wmOperator *op)
+{
+       Object *ob = CTX_data_active_object(C);
+       SmokeModifierData *smd = (SmokeModifierData *)modifiers_findByType(ob, 
eModifierType_Smoke);
+       SmokeDomainSettings *sds = smd->domain;
+       OpenVDBCache *cache;
+       const char *relbase = modifier_path_relbase(ob);
+       char filename[FILE_MAX];
+       int fr;
+
+       if (!smd) {
+               return OPERATOR_CANCELLED;
+       }
+
+       cache = BKE_openvdb_get_current_cache(sds);
+
+       if ((cache->flags & VDB_CACHE_SMOKE_EXPORTED) != 0) {
+               for (fr = cache->startframe; fr <= cache->endframe; fr++) {
+                       BKE_openvdb_cache_filename(filename, cache->path, 
cache->name, relbase, fr);
+
+                       if (BLI_exists(filename)) {
+                               BLI_delete(filename, false, false);
+                       }
+               }
+
+               cache->flags &= ~VDB_CACHE_SMOKE_EXPORTED;
+       }
+
+       WM_event_add_notifier(C, NC_OBJECT | ND_POINTCACHE, ob);
+
+       return OPERATOR_FINISHED;
+
+       UNUSED_VARS(op);
+}
+
+void OBJECT_OT_openvdb_cache_free(wmOperatorType *ot)
+{
+       ot->name = "Free Cache";
+       ot->description = "Mark cache as not baked and delete cached files to 
further edit the smoke simulation";
+       ot->idname = "OBJECT_OT_openvdb_cache_free";
+
+       ot->poll = openvdb_cache_poll;
+       ot->exec = openvdb_cache_free_exec;
+
+       /* flags */
+       ot->flag = OPTYPE_REGISTER | OPTYPE_UNDO;
+}
diff --git a/source/blender/editors/object/object_ops.c 
b/source/blender/editors/object/object_ops.c
index c543876..9640290 100644
--- a/source/blender/editors/object/object_ops.c
+++ b/source/blender/editors/object/object_ops.c
@@ -146,6 +146,7 @@ void ED_operatortypes_object(void)
        WM_operatortype_append(OBJECT_OT_openvdb_cache_add);
        WM_operatortype_append(OBJECT_OT_openvdb_cache_remove);
        WM_operatortype_append(OBJECT_OT_openvdb_cache_move);
+       WM_operatortype_append(OBJECT_OT_openvdb_cache_free);
 
        WM_operatortype_append(OBJECT_OT_correctivesmooth_bind);
        WM_operatortype_append(OBJECT_OT_meshdeform_bind);

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

Reply via email to