[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