diff options
Diffstat (limited to 'source/blender/depsgraph/intern/depsgraph_types.h')
-rw-r--r-- | source/blender/depsgraph/intern/depsgraph_types.h | 325 |
1 files changed, 0 insertions, 325 deletions
diff --git a/source/blender/depsgraph/intern/depsgraph_types.h b/source/blender/depsgraph/intern/depsgraph_types.h deleted file mode 100644 index 9e6b1260a4b..00000000000 --- a/source/blender/depsgraph/intern/depsgraph_types.h +++ /dev/null @@ -1,325 +0,0 @@ -/* - * ***** BEGIN GPL LICENSE BLOCK ***** - * - * This program is free software; you can redistribute it and/or - * modify it under the terms of the GNU General Public License - * as published by the Free Software Foundation; either version 2 - * of the License, or (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program; if not, write to the Free Software Foundation, - * Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. - * - * The Original Code is Copyright (C) 2013 Blender Foundation. - * All rights reserved. - * - * Original Author: Joshua Leung - * Contributor(s): None Yet - * - * ***** END GPL LICENSE BLOCK ***** - */ - -/** \file blender/depsgraph/intern/depsgraph_types.h - * \ingroup depsgraph - * - * Datatypes for internal use in the Depsgraph - * - * All of these datatypes are only really used within the "core" depsgraph. - * In particular, node types declared here form the structure of operations - * in the graph. - */ - -#pragma once - -#include "util/deg_util_function.h" - -/* TODO(sergey): Ideally we'll just use char* and statically allocated strings - * to avoid any possible overhead caused by string (re)allocation/formatting. - */ -#include <string> -#include <vector> -#include <algorithm> - -struct ChannelDriver; -struct Depsgraph; -struct FCurve; -struct ModifierData; -struct PointerRNA; -struct bAction; - -namespace DEG { - -/* TODO(sergey): Find a better place for this. */ -using std::string; -using std::vector; -using std::max; - -/* Evaluation Operation for atomic operation */ -// XXX: move this to another header that can be exposed? -typedef function<void(struct ::Depsgraph *)> DepsEvalOperationCb; - -/* Metatype of Nodes - The general "level" in the graph structure - * the node serves. - */ -typedef enum eDepsNode_Class { - /* Types generally unassociated with user-visible entities, - * but needed for graph functioning. - */ - DEG_NODE_CLASS_GENERIC = 0, - /* [Outer Node] An "aspect" of evaluating/updating an ID-Block, requiring - * certain types of evaluation behavior. - */ - DEG_NODE_CLASS_COMPONENT = 1, - /* [Inner Node] A glorified function-pointer/callback for scheduling up - * evaluation operations for components, subject to relationship - * requirements. - */ - DEG_NODE_CLASS_OPERATION = 2, -} eDepsNode_Class; - -/* Note: We use max comparison to mark an id node that is linked more than once - * So keep this enum ordered accordingly. - */ -typedef enum eDepsNode_LinkedState_Type { - /* Generic indirectly linked id node. */ - DEG_ID_LINKED_INDIRECTLY = 0, - /* Id node present in the set (background) only. */ - DEG_ID_LINKED_VIA_SET = 1, - /* Id node directly linked via the ScenLayer. */ - DEG_ID_LINKED_DIRECTLY = 2, -} eDepsNode_LinkedState_Type; - -/* Types of Nodes */ -typedef enum eDepsNode_Type { - /* Fallback type for invalid return value */ - DEG_NODE_TYPE_UNDEFINED = 0, - /* Inner Node (Operation) */ - DEG_NODE_TYPE_OPERATION, - - /* **** Generic Types **** */ - - /* Time-Source */ - DEG_NODE_TYPE_TIMESOURCE, - /* ID-Block reference - used as landmarks/collection point for components, - * but not usually part of main graph. - */ - DEG_NODE_TYPE_ID_REF, - - /* **** Outer Types **** */ - - /* Parameters Component - Default when nothing else fits - * (i.e. just SDNA property setting). - */ - DEG_NODE_TYPE_PARAMETERS, - /* Generic "Proxy-Inherit" Component. */ - DEG_NODE_TYPE_PROXY, - /* Animation Component */ - DEG_NODE_TYPE_ANIMATION, - /* Transform Component (Parenting/Constraints) */ - DEG_NODE_TYPE_TRANSFORM, - /* Geometry Component (Mesh/Displist) */ - DEG_NODE_TYPE_GEOMETRY, - /* Sequencer Component (Scene Only) */ - DEG_NODE_TYPE_SEQUENCER, - /* Component which contains all operations needed for layer collections - * evaluation. - */ - DEG_NODE_TYPE_LAYER_COLLECTIONS, - /* Entry component of majority of ID nodes: prepares CoW pointers for - * execution. - */ - DEG_NODE_TYPE_COPY_ON_WRITE, - /* Used by all operations which are updating object when something is - * changed in view layer. - */ - DEG_NODE_TYPE_OBJECT_FROM_LAYER, - /* Un-interestying datablock, which is a part of dependency graph, but does - * not have very distinctive update procedure. */ - DEG_NODE_TYPE_GENERIC_DATABLOCK, - - /* **** Evaluation-Related Outer Types (with Subdata) **** */ - - /* Pose Component - Owner/Container of Bones Eval */ - DEG_NODE_TYPE_EVAL_POSE, - /* Bone Component - Child/Subcomponent of Pose */ - DEG_NODE_TYPE_BONE, - /* Particle Systems Component */ - DEG_NODE_TYPE_PARTICLE_SYSTEM, - DEG_NODE_TYPE_PARTICLE_SETTINGS, - /* Material Shading Component */ - DEG_NODE_TYPE_SHADING, - DEG_NODE_TYPE_SHADING_PARAMETERS, - /* Point cache Component */ - DEG_NODE_TYPE_POINT_CACHE, - /* Cache Component */ - /* TODO(sergey); Verify that we really need this. */ - DEG_NODE_TYPE_CACHE, - /* Batch Cache Component - TODO (dfelinto/sergey) rename to make it more generic. */ - DEG_NODE_TYPE_BATCH_CACHE, - /* Duplication system. Used to force duplicated objects visible when - * when duplicator is visible. - */ - DEG_NODE_TYPE_DUPLI, - /* Synchronization back to original datablock. */ - DEG_NODE_TYPE_SYNCHRONIZE, - - /* Total number of meaningful node types. */ - NUM_DEG_NODE_TYPES, -} eDepsNode_Type; -const char *nodeTypeAsString(eDepsNode_Type type); - -/* Identifiers for common operations (as an enum). */ -typedef enum eDepsOperation_Code { - /* Generic Operations. -------------------------------------------------- */ - - /* Placeholder for operations which don't need special mention */ - DEG_OPCODE_OPERATION = 0, - - /* Generic parameters evaluation. */ - DEG_OPCODE_ID_PROPERTY, - DEG_OPCODE_PARAMETERS_EVAL, - - // XXX: Placeholder while porting depsgraph code - DEG_OPCODE_PLACEHOLDER, - - /* Animation, Drivers, etc. --------------------------------------------- */ - /* NLA + Action */ - DEG_OPCODE_ANIMATION, - /* Driver */ - DEG_OPCODE_DRIVER, - - /* Object related. ------------------------------------------------------ */ - DEG_OPCODE_OBJECT_BASE_FLAGS, - - /* Transform. ----------------------------------------------------------- */ - /* Transform entry point - local transforms only */ - DEG_OPCODE_TRANSFORM_LOCAL, - /* Parenting */ - DEG_OPCODE_TRANSFORM_PARENT, - /* Constraints */ - DEG_OPCODE_TRANSFORM_CONSTRAINTS, - /* Transform exit point */ - DEG_OPCODE_TRANSFORM_FINAL, - /* Handle object-level updates, mainly proxies hacks and recalc flags. */ - DEG_OPCODE_TRANSFORM_OBJECT_UBEREVAL, - - /* Rigid body. ---------------------------------------------------------- */ - /* Perform Simulation */ - DEG_OPCODE_RIGIDBODY_REBUILD, - DEG_OPCODE_RIGIDBODY_SIM, - /* Copy results to object */ - DEG_OPCODE_RIGIDBODY_TRANSFORM_COPY, - - /* Geometry. ------------------------------------------------------------ */ - - /* Evaluate the whole geometry, including modifiers. */ - DEG_OPCODE_GEOMETRY_UBEREVAL, - /* Evaluation of a shape key. */ - DEG_OPCODE_GEOMETRY_SHAPEKEY, - - /* Object data. --------------------------------------------------------- */ - DEG_OPCODE_LIGHT_PROBE_EVAL, - DEG_OPCODE_SPEAKER_EVAL, - - /* Pose. ---------------------------------------------------------------- */ - /* Init pose, clear flags, etc. */ - DEG_OPCODE_POSE_INIT, - /* Initialize IK solver related pose stuff. */ - DEG_OPCODE_POSE_INIT_IK, - /* Pose is evaluated, and runtime data can be freed. */ - DEG_OPCODE_POSE_CLEANUP, - /* Pose has been fully evaluated and ready to be used by others. */ - DEG_OPCODE_POSE_DONE, - /* IK/Spline Solvers */ - DEG_OPCODE_POSE_IK_SOLVER, - DEG_OPCODE_POSE_SPLINE_IK_SOLVER, - - /* Bone. ---------------------------------------------------------------- */ - /* Bone local transforms - entry point */ - DEG_OPCODE_BONE_LOCAL, - /* Pose-space conversion (includes parent + restpose, */ - DEG_OPCODE_BONE_POSE_PARENT, - /* Constraints */ - DEG_OPCODE_BONE_CONSTRAINTS, - /* Bone transforms are ready - * - * - "READY" This (internal, noop is used to signal that all pre-IK - * operations are done. Its role is to help mediate situations - * where cyclic relations may otherwise form (i.e. one bone in - * chain targeting another in same chain, - * - * - "DONE" This noop is used to signal that the bone's final pose - * transform can be read by others - */ - // TODO: deform mats could get calculated in the final_transform ops... - DEG_OPCODE_BONE_READY, - DEG_OPCODE_BONE_DONE, - /* B-Bone segment shape computation (after DONE) */ - DEG_OPCODE_BONE_SEGMENTS, - - /* Particle System. ----------------------------------------------------- */ - DEG_OPCODE_PARTICLE_SYSTEM_INIT, - DEG_OPCODE_PARTICLE_SYSTEM_EVAL, - DEG_OPCODE_PARTICLE_SYSTEM_DONE, - - /* Particle Settings. --------------------------------------------------- */ - DEG_OPCODE_PARTICLE_SETTINGS_INIT, - DEG_OPCODE_PARTICLE_SETTINGS_EVAL, - DEG_OPCODE_PARTICLE_SETTINGS_RESET, - - /* Point Cache. --------------------------------------------------------- */ - DEG_OPCODE_POINT_CACHE_RESET, - - /* Collections. --------------------------------------------------------- */ - DEG_OPCODE_VIEW_LAYER_EVAL, - - /* Copy on Write. ------------------------------------------------------- */ - DEG_OPCODE_COPY_ON_WRITE, - - /* Shading. ------------------------------------------------------------- */ - DEG_OPCODE_SHADING, - DEG_OPCODE_MATERIAL_UPDATE, - DEG_OPCODE_WORLD_UPDATE, - - /* Batch caches. -------------------------------------------------------- */ - DEG_OPCODE_GEOMETRY_SELECT_UPDATE, - - /* Masks. --------------------------------------------------------------- */ - DEG_OPCODE_MASK_ANIMATION, - DEG_OPCODE_MASK_EVAL, - - /* Movie clips. --------------------------------------------------------- */ - DEG_OPCODE_MOVIECLIP_EVAL, - DEG_OPCODE_MOVIECLIP_SELECT_UPDATE, - - /* Synchronization clips. ----------------------------------------------- */ - DEG_OPCODE_SYNCHRONIZE_TO_ORIGINAL, - - /* Generic datablock ---------------------------------------------------- */ - DEG_OPCODE_GENERIC_DATABLOCK_UPDATE, - - DEG_NUM_OPCODES, -} eDepsOperation_Code; -const char *operationCodeAsString(eDepsOperation_Code opcode); - -/* Source of the dependency graph node update tag. - * - * NOTE: This is a bit mask, so accumulation of sources is possible. - */ -typedef enum eUpdateSource { - /* Update is caused by a time change. */ - DEG_UPDATE_SOURCE_TIME = (1 << 0), - /* Update caused by user directly or indirectly influencing the node. */ - DEG_UPDATE_SOURCE_USER_EDIT = (1 << 1), - /* Update is happening as a special response for the relations update. */ - DEG_UPDATE_SOURCE_RELATIONS = (1 << 2), - /* Update is happening due to visibility change. */ - DEG_UPDATE_SOURCE_VISIBILITY = (1 << 3), -} eUpdateSource; - -} // namespace DEG |