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/depsgraph/intern/node/deg_node_operation.cc')
-rw-r--r--source/blender/depsgraph/intern/node/deg_node_operation.cc315
1 files changed, 182 insertions, 133 deletions
diff --git a/source/blender/depsgraph/intern/node/deg_node_operation.cc b/source/blender/depsgraph/intern/node/deg_node_operation.cc
index b0b47f89acf..54a5ecef35c 100644
--- a/source/blender/depsgraph/intern/node/deg_node_operation.cc
+++ b/source/blender/depsgraph/intern/node/deg_node_operation.cc
@@ -37,112 +37,161 @@ namespace DEG {
const char *operationCodeAsString(OperationCode opcode)
{
- switch (opcode) {
- /* Generic Operations. */
- case OperationCode::OPERATION: return "OPERATION";
- case OperationCode::ID_PROPERTY: return "ID_PROPERTY";
- case OperationCode::PARAMETERS_ENTRY: return "PARAMETERS_ENTRY";
- case OperationCode::PARAMETERS_EVAL: return "PARAMETERS_EVAL";
- case OperationCode::PARAMETERS_EXIT: return "PARAMETERS_EXIT";
- /* Animation, Drivers, etc. */
- case OperationCode::ANIMATION_ENTRY: return "ANIMATION_ENTRY";
- case OperationCode::ANIMATION_EVAL: return "ANIMATION_EVAL";
- case OperationCode::ANIMATION_EXIT: return "ANIMATION_EXIT";
- case OperationCode::DRIVER: return "DRIVER";
- /* Scene related. */
- case OperationCode::SCENE_EVAL: return "SCENE_EVAL";
- /* Object related. */
- case OperationCode::OBJECT_BASE_FLAGS: return "OBJECT_BASE_FLAGS";
- /* Transform. */
- case OperationCode::TRANSFORM_INIT: return "TRANSFORM_INIT";
- case OperationCode::TRANSFORM_LOCAL: return "TRANSFORM_LOCAL";
- case OperationCode::TRANSFORM_PARENT: return "TRANSFORM_PARENT";
- case OperationCode::TRANSFORM_CONSTRAINTS:
- return "TRANSFORM_CONSTRAINTS";
- case OperationCode::TRANSFORM_FINAL: return "TRANSFORM_FINAL";
- case OperationCode::TRANSFORM_EVAL: return "TRANSFORM_EVAL";
- case OperationCode::TRANSFORM_SIMULATION_INIT:
- return "TRANSFORM_SIMULATION_INIT";
- /* Rigid body. */
- case OperationCode::RIGIDBODY_REBUILD: return "RIGIDBODY_REBUILD";
- case OperationCode::RIGIDBODY_SIM: return "RIGIDBODY_SIM";
- case OperationCode::RIGIDBODY_TRANSFORM_COPY:
- return "RIGIDBODY_TRANSFORM_COPY";
- /* Geometry. */
- case OperationCode::GEOMETRY_EVAL_INIT: return "GEOMETRY_EVAL_INIT";
- case OperationCode::GEOMETRY_EVAL: return "GEOMETRY_EVAL";
- case OperationCode::GEOMETRY_EVAL_DONE: return "GEOMETRY_EVAL_DONE";
- case OperationCode::GEOMETRY_SHAPEKEY: return "GEOMETRY_SHAPEKEY";
- /* Object data. */
- case OperationCode::LIGHT_PROBE_EVAL: return "LIGHT_PROBE_EVAL";
- case OperationCode::SPEAKER_EVAL: return "SPEAKER_EVAL";
- case OperationCode::ARMATURE_EVAL: return "ARMATURE_EVAL";
- /* Pose. */
- case OperationCode::POSE_INIT: return "POSE_INIT";
- case OperationCode::POSE_INIT_IK: return "POSE_INIT_IK";
- case OperationCode::POSE_CLEANUP: return "POSE_CLEANUP";
- case OperationCode::POSE_DONE: return "POSE_DONE";
- case OperationCode::POSE_IK_SOLVER: return "POSE_IK_SOLVER";
- case OperationCode::POSE_SPLINE_IK_SOLVER:
- return "POSE_SPLINE_IK_SOLVER";
- /* Bone. */
- case OperationCode::BONE_LOCAL: return "BONE_LOCAL";
- case OperationCode::BONE_POSE_PARENT: return "BONE_POSE_PARENT";
- case OperationCode::BONE_CONSTRAINTS: return "BONE_CONSTRAINTS";
- case OperationCode::BONE_READY: return "BONE_READY";
- case OperationCode::BONE_DONE: return "BONE_DONE";
- case OperationCode::BONE_SEGMENTS: return "BONE_SEGMENTS";
- /* Particle System. */
- case OperationCode::PARTICLE_SYSTEM_INIT: return "PARTICLE_SYSTEM_INIT";
- case OperationCode::PARTICLE_SYSTEM_EVAL: return "PARTICLE_SYSTEM_EVAL";
- case OperationCode::PARTICLE_SYSTEM_DONE: return "PARTICLE_SYSTEM_DONE";
- /* Particles Settings. */
- case OperationCode::PARTICLE_SETTINGS_INIT:
- return "PARTICLE_SETTINGS_INIT";
- case OperationCode::PARTICLE_SETTINGS_EVAL:
- return "PARTICLE_SETTINGS_EVAL";
- case OperationCode::PARTICLE_SETTINGS_RESET:
- return "PARTICLE_SETTINGS_RESET";
- /* Point Cache. */
- case OperationCode::POINT_CACHE_RESET: return "POINT_CACHE_RESET";
- /* File cache. */
- case OperationCode::FILE_CACHE_UPDATE: return "FILE_CACHE_UPDATE";
- /* Batch cache. */
- case OperationCode::GEOMETRY_SELECT_UPDATE:
- return "GEOMETRY_SELECT_UPDATE";
- /* Masks. */
- case OperationCode::MASK_ANIMATION: return "MASK_ANIMATION";
- case OperationCode::MASK_EVAL: return "MASK_EVAL";
- /* Collections. */
- case OperationCode::VIEW_LAYER_EVAL: return "VIEW_LAYER_EVAL";
- /* Copy on write. */
- case OperationCode::COPY_ON_WRITE: return "COPY_ON_WRITE";
- /* Shading. */
- case OperationCode::SHADING: return "SHADING";
- case OperationCode::MATERIAL_UPDATE: return "MATERIAL_UPDATE";
- case OperationCode::WORLD_UPDATE: return "WORLD_UPDATE";
- /* Movie clip. */
- case OperationCode::MOVIECLIP_EVAL: return "MOVIECLIP_EVAL";
- case OperationCode::MOVIECLIP_SELECT_UPDATE:
- return "MOVIECLIP_SELECT_UPDATE";
- /* Image. */
- case OperationCode::IMAGE_ANIMATION: return "IMAGE_ANIMATION";
- /* Synchronization. */
- case OperationCode::SYNCHRONIZE_TO_ORIGINAL:
- return "SYNCHRONIZE_TO_ORIGINAL";
- /* Generic datablock. */
- case OperationCode::GENERIC_DATABLOCK_UPDATE:
- return "GENERIC_DATABLOCK_UPDATE";
- /* instancing/duplication. */
- case OperationCode::DUPLI: return "DUPLI";
- }
- BLI_assert(!"Unhandled operation code, should never happen.");
- return "UNKNOWN";
+ switch (opcode) {
+ /* Generic Operations. */
+ case OperationCode::OPERATION:
+ return "OPERATION";
+ case OperationCode::ID_PROPERTY:
+ return "ID_PROPERTY";
+ case OperationCode::PARAMETERS_ENTRY:
+ return "PARAMETERS_ENTRY";
+ case OperationCode::PARAMETERS_EVAL:
+ return "PARAMETERS_EVAL";
+ case OperationCode::PARAMETERS_EXIT:
+ return "PARAMETERS_EXIT";
+ /* Animation, Drivers, etc. */
+ case OperationCode::ANIMATION_ENTRY:
+ return "ANIMATION_ENTRY";
+ case OperationCode::ANIMATION_EVAL:
+ return "ANIMATION_EVAL";
+ case OperationCode::ANIMATION_EXIT:
+ return "ANIMATION_EXIT";
+ case OperationCode::DRIVER:
+ return "DRIVER";
+ /* Scene related. */
+ case OperationCode::SCENE_EVAL:
+ return "SCENE_EVAL";
+ /* Object related. */
+ case OperationCode::OBJECT_BASE_FLAGS:
+ return "OBJECT_BASE_FLAGS";
+ /* Transform. */
+ case OperationCode::TRANSFORM_INIT:
+ return "TRANSFORM_INIT";
+ case OperationCode::TRANSFORM_LOCAL:
+ return "TRANSFORM_LOCAL";
+ case OperationCode::TRANSFORM_PARENT:
+ return "TRANSFORM_PARENT";
+ case OperationCode::TRANSFORM_CONSTRAINTS:
+ return "TRANSFORM_CONSTRAINTS";
+ case OperationCode::TRANSFORM_FINAL:
+ return "TRANSFORM_FINAL";
+ case OperationCode::TRANSFORM_EVAL:
+ return "TRANSFORM_EVAL";
+ case OperationCode::TRANSFORM_SIMULATION_INIT:
+ return "TRANSFORM_SIMULATION_INIT";
+ /* Rigid body. */
+ case OperationCode::RIGIDBODY_REBUILD:
+ return "RIGIDBODY_REBUILD";
+ case OperationCode::RIGIDBODY_SIM:
+ return "RIGIDBODY_SIM";
+ case OperationCode::RIGIDBODY_TRANSFORM_COPY:
+ return "RIGIDBODY_TRANSFORM_COPY";
+ /* Geometry. */
+ case OperationCode::GEOMETRY_EVAL_INIT:
+ return "GEOMETRY_EVAL_INIT";
+ case OperationCode::GEOMETRY_EVAL:
+ return "GEOMETRY_EVAL";
+ case OperationCode::GEOMETRY_EVAL_DONE:
+ return "GEOMETRY_EVAL_DONE";
+ case OperationCode::GEOMETRY_SHAPEKEY:
+ return "GEOMETRY_SHAPEKEY";
+ /* Object data. */
+ case OperationCode::LIGHT_PROBE_EVAL:
+ return "LIGHT_PROBE_EVAL";
+ case OperationCode::SPEAKER_EVAL:
+ return "SPEAKER_EVAL";
+ case OperationCode::ARMATURE_EVAL:
+ return "ARMATURE_EVAL";
+ /* Pose. */
+ case OperationCode::POSE_INIT:
+ return "POSE_INIT";
+ case OperationCode::POSE_INIT_IK:
+ return "POSE_INIT_IK";
+ case OperationCode::POSE_CLEANUP:
+ return "POSE_CLEANUP";
+ case OperationCode::POSE_DONE:
+ return "POSE_DONE";
+ case OperationCode::POSE_IK_SOLVER:
+ return "POSE_IK_SOLVER";
+ case OperationCode::POSE_SPLINE_IK_SOLVER:
+ return "POSE_SPLINE_IK_SOLVER";
+ /* Bone. */
+ case OperationCode::BONE_LOCAL:
+ return "BONE_LOCAL";
+ case OperationCode::BONE_POSE_PARENT:
+ return "BONE_POSE_PARENT";
+ case OperationCode::BONE_CONSTRAINTS:
+ return "BONE_CONSTRAINTS";
+ case OperationCode::BONE_READY:
+ return "BONE_READY";
+ case OperationCode::BONE_DONE:
+ return "BONE_DONE";
+ case OperationCode::BONE_SEGMENTS:
+ return "BONE_SEGMENTS";
+ /* Particle System. */
+ case OperationCode::PARTICLE_SYSTEM_INIT:
+ return "PARTICLE_SYSTEM_INIT";
+ case OperationCode::PARTICLE_SYSTEM_EVAL:
+ return "PARTICLE_SYSTEM_EVAL";
+ case OperationCode::PARTICLE_SYSTEM_DONE:
+ return "PARTICLE_SYSTEM_DONE";
+ /* Particles Settings. */
+ case OperationCode::PARTICLE_SETTINGS_INIT:
+ return "PARTICLE_SETTINGS_INIT";
+ case OperationCode::PARTICLE_SETTINGS_EVAL:
+ return "PARTICLE_SETTINGS_EVAL";
+ case OperationCode::PARTICLE_SETTINGS_RESET:
+ return "PARTICLE_SETTINGS_RESET";
+ /* Point Cache. */
+ case OperationCode::POINT_CACHE_RESET:
+ return "POINT_CACHE_RESET";
+ /* File cache. */
+ case OperationCode::FILE_CACHE_UPDATE:
+ return "FILE_CACHE_UPDATE";
+ /* Batch cache. */
+ case OperationCode::GEOMETRY_SELECT_UPDATE:
+ return "GEOMETRY_SELECT_UPDATE";
+ /* Masks. */
+ case OperationCode::MASK_ANIMATION:
+ return "MASK_ANIMATION";
+ case OperationCode::MASK_EVAL:
+ return "MASK_EVAL";
+ /* Collections. */
+ case OperationCode::VIEW_LAYER_EVAL:
+ return "VIEW_LAYER_EVAL";
+ /* Copy on write. */
+ case OperationCode::COPY_ON_WRITE:
+ return "COPY_ON_WRITE";
+ /* Shading. */
+ case OperationCode::SHADING:
+ return "SHADING";
+ case OperationCode::MATERIAL_UPDATE:
+ return "MATERIAL_UPDATE";
+ case OperationCode::WORLD_UPDATE:
+ return "WORLD_UPDATE";
+ /* Movie clip. */
+ case OperationCode::MOVIECLIP_EVAL:
+ return "MOVIECLIP_EVAL";
+ case OperationCode::MOVIECLIP_SELECT_UPDATE:
+ return "MOVIECLIP_SELECT_UPDATE";
+ /* Image. */
+ case OperationCode::IMAGE_ANIMATION:
+ return "IMAGE_ANIMATION";
+ /* Synchronization. */
+ case OperationCode::SYNCHRONIZE_TO_ORIGINAL:
+ return "SYNCHRONIZE_TO_ORIGINAL";
+ /* Generic datablock. */
+ case OperationCode::GENERIC_DATABLOCK_UPDATE:
+ return "GENERIC_DATABLOCK_UPDATE";
+ /* instancing/duplication. */
+ case OperationCode::DUPLI:
+ return "DUPLI";
+ }
+ BLI_assert(!"Unhandled operation code, should never happen.");
+ return "UNKNOWN";
}
-OperationNode::OperationNode() :
- name_tag(-1),
- flag(0)
+OperationNode::OperationNode() : name_tag(-1), flag(0)
{
}
@@ -152,52 +201,52 @@ OperationNode::~OperationNode()
string OperationNode::identifier() const
{
- return string(operationCodeAsString(opcode)) + "(" + name + ")";
+ return string(operationCodeAsString(opcode)) + "(" + name + ")";
}
/* Full node identifier, including owner name.
* used for logging and debug prints. */
string OperationNode::full_identifier() const
{
- string owner_str = "";
- if (owner->type == NodeType::BONE) {
- owner_str = string(owner->owner->name) + "." + owner->name;
- }
- else {
- owner_str = owner->owner->name;
- }
- return owner_str + "." + identifier();
+ string owner_str = "";
+ if (owner->type == NodeType::BONE) {
+ owner_str = string(owner->owner->name) + "." + owner->name;
+ }
+ else {
+ owner_str = owner->owner->name;
+ }
+ return owner_str + "." + identifier();
}
void OperationNode::tag_update(Depsgraph *graph, eUpdateSource source)
{
- if ((flag & DEPSOP_FLAG_NEEDS_UPDATE) == 0) {
- graph->add_entry_tag(this);
- }
- /* Tag for update, but also note that this was the source of an update. */
- flag |= (DEPSOP_FLAG_NEEDS_UPDATE | DEPSOP_FLAG_DIRECTLY_MODIFIED);
- switch (source) {
- case DEG_UPDATE_SOURCE_TIME:
- case DEG_UPDATE_SOURCE_RELATIONS:
- case DEG_UPDATE_SOURCE_VISIBILITY:
- /* Currently nothing. */
- break;
- case DEG_UPDATE_SOURCE_USER_EDIT:
- flag |= DEPSOP_FLAG_USER_MODIFIED;
- break;
- }
+ if ((flag & DEPSOP_FLAG_NEEDS_UPDATE) == 0) {
+ graph->add_entry_tag(this);
+ }
+ /* Tag for update, but also note that this was the source of an update. */
+ flag |= (DEPSOP_FLAG_NEEDS_UPDATE | DEPSOP_FLAG_DIRECTLY_MODIFIED);
+ switch (source) {
+ case DEG_UPDATE_SOURCE_TIME:
+ case DEG_UPDATE_SOURCE_RELATIONS:
+ case DEG_UPDATE_SOURCE_VISIBILITY:
+ /* Currently nothing. */
+ break;
+ case DEG_UPDATE_SOURCE_USER_EDIT:
+ flag |= DEPSOP_FLAG_USER_MODIFIED;
+ break;
+ }
}
void OperationNode::set_as_entry()
{
- BLI_assert(owner != NULL);
- owner->set_entry_operation(this);
+ BLI_assert(owner != NULL);
+ owner->set_entry_operation(this);
}
void OperationNode::set_as_exit()
{
- BLI_assert(owner != NULL);
- owner->set_exit_operation(this);
+ BLI_assert(owner != NULL);
+ owner->set_exit_operation(this);
}
DEG_DEPSNODE_DEFINE(OperationNode, NodeType::OPERATION, "Operation");
@@ -205,7 +254,7 @@ static DepsNodeFactoryImpl<OperationNode> DNTI_OPERATION;
void deg_register_operation_depsnodes()
{
- register_node_typeinfo(&DNTI_OPERATION);
+ register_node_typeinfo(&DNTI_OPERATION);
}
} // namespace DEG