[Bf-blender-cvs] [23627f7] openvdb: Add an operator to free the cache and delete the cached files.

Kévin Dietrich noreply at git.blender.org
Mon Aug 3 16:41:17 CEST 2015


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);




More information about the Bf-blender-cvs mailing list