Welcome to mirror list, hosted at ThFree Co, Russian Federation.

git.blender.org/blender.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
Diffstat (limited to 'source/blender/makesdna/DNA_ID.h')
-rw-r--r--source/blender/makesdna/DNA_ID.h71
1 files changed, 55 insertions, 16 deletions
diff --git a/source/blender/makesdna/DNA_ID.h b/source/blender/makesdna/DNA_ID.h
index 9e5e822c4d5..bf2a6a727d3 100644
--- a/source/blender/makesdna/DNA_ID.h
+++ b/source/blender/makesdna/DNA_ID.h
@@ -502,22 +502,61 @@ enum {
LIB_TAG_NOT_ALLOCATED = 1 << 17,
};
-/* WARNING - when adding flags check on PSYS_RECALC */
-enum {
- /* RESET_AFTER_USE, used by update code (depsgraph). */
- ID_RECALC_NONE = 0,
- /* Generic recalc flag, when nothing else matches. */
- ID_RECALC = 1 << 0,
- /* Per-component update flags. */
- ID_RECALC_ANIMATION = 1 << 1,
- ID_RECALC_DRAW = 1 << 2,
- ID_RECALC_DRAW_CACHE = 1 << 3,
- ID_RECALC_GEOMETRY = 1 << 4,
- ID_RECALC_TRANSFORM = 1 << 5,
- ID_RECALC_COPY_ON_WRITE = 1 << 6,
- /* Special flag to check if SOMETHING was changed. */
- ID_RECALC_ALL = (~(int)0),
-};
+/* Tag given ID for an update in all the dependency graphs. */
+typedef enum IDRecalcFlag {
+ /* Individual update tags, this is what ID gets tagged for update with. */
+
+ /* Object transformation changed. */
+ ID_RECALC_TRANSFORM = (1 << 0),
+ /* Object geometry changed.
+ *
+ * When object of armature type gets tagged with this flag, it's pose is
+ * re-evaluated.
+ * When object of other type is tagged with this flag it makes the modifier
+ * stack to be re-evaluated.
+ * When object data type (mesh, curve, ...) gets tagged with this flag it
+ * makes all objects which shares this datablock to be updated. */
+ ID_RECALC_GEOMETRY = (1 << 1),
+ /* Animation or time changed and animation is to be re-evaluated. */
+ ID_RECALC_ANIMATION = (1 << 2),
+ /* Particle system changed; values are aligned with ID_RECALC_PSYS_xxx. */
+ ID_RECALC_PSYS_REDO = (1 << 3), /* Only do pathcache etc */
+ ID_RECALC_PSYS_RESET = (1 << 4), /* Reset everything including pointcache. */
+ ID_RECALC_PSYS_YPE = (1 << 5), /* Handle system type change. */
+ ID_RECALC_PSYS_CHILD = (1 << 6), /* Only child settings changed. */
+ ID_RECALC_PSYS_PHYS = (1 << 7), /* Physics type changed. */
+ /* Update copy on write component without flushing down the road. */
+ ID_RECALC_COPY_ON_WRITE = (1 << 8),
+ /* Tag shading components for update. Only parameters of material changed).
+ */
+ ID_RECALC_SHADING = (1 << 9),
+ /* Selection of the ID itself or its components (for example, vertices) did
+ * change, and all the drawing data is to eb updated. */
+ ID_RECALC_SELECT = (1 << 10),
+ /* Flags on the base did change, and is to be compied onto all the copies of
+ * corresponding objects. */
+ ID_RECALC_BASE_FLAGS = (1 << 11),
+ ID_RECALC_POINT_CACHE = (1 << 12),
+ /* Only inform editors about the change. Is used to force update of editors
+ * when datablock which is not a part of dependency graph did change.
+ *
+ * For example, brush texture did change and the preview is to be
+ * re-rendered. */
+ ID_RECALC_EDITORS = (1 << 13),
+
+ /* Aggregate flags, use only for checks on runtime.
+ * Do NOT use those for tagging. */
+
+ /* Identifies that SOMETHING has been changed in this ID. */
+ ID_RECALC_ALL = ~(0),
+ /* Identifies that something in particle system did change. */
+ ID_RECALC_PSYS_ALL = (ID_RECALC_PSYS_REDO |
+ ID_RECALC_PSYS_RESET |
+ ID_RECALC_PSYS_YPE |
+ ID_RECALC_PSYS_CHILD |
+ ID_RECALC_PSYS_PHYS),
+
+} IDRecalcFlag;
/* To filter ID types (filter_id) */
/* XXX We cannot put all needed IDs inside an enum...