146 lines
4.4 KiB
C++
146 lines
4.4 KiB
C++
/*
|
|
* ***** 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) 2014 Blender Foundation.
|
|
* All rights reserved.
|
|
*
|
|
* Original Author: Joshua Leung
|
|
* Contributor(s): None Yet
|
|
*
|
|
* ***** END GPL LICENSE BLOCK *****
|
|
*/
|
|
|
|
/** \file blender/depsgraph/intern/depsnode_opcodes.h
|
|
* \ingroup depsgraph
|
|
*
|
|
* \par OpCodes for OperationDepsNodes
|
|
*
|
|
* This file defines all the "operation codes" (opcodes) used to identify
|
|
* common operation node types. The intention of these defines is to have
|
|
* a fast and reliable way of identifying the relevant nodes within a component
|
|
* without having to use fragile dynamic strings.
|
|
*
|
|
* This file is meant to be used like UI_icons.h. That is, before including
|
|
* the file, the host file must define the DEG_OPCODE(_label) macro, which
|
|
* is responsible for converting the define into whatever form is suitable.
|
|
* Therefore, it intentionally doesn't have header guards.
|
|
*/
|
|
|
|
|
|
/* Example macro define: */
|
|
/* #define DEF_DEG_OPCODE(label) DEG_OPCODE_##label, */
|
|
|
|
/* Generic Operations ------------------------------ */
|
|
|
|
/* Placeholder for operations which don't need special mention */
|
|
DEF_DEG_OPCODE(OPERATION)
|
|
|
|
// XXX: Placeholder while porting depsgraph code
|
|
DEF_DEG_OPCODE(PLACEHOLDER)
|
|
|
|
DEF_DEG_OPCODE(NOOP)
|
|
|
|
/* Animation, Drivers, etc. ------------------------ */
|
|
|
|
/* NLA + Action */
|
|
DEF_DEG_OPCODE(ANIMATION)
|
|
|
|
/* Driver */
|
|
DEF_DEG_OPCODE(DRIVER)
|
|
|
|
/* Proxy Inherit? */
|
|
//DEF_DEG_OPCODE(PROXY)
|
|
|
|
/* Transform --------------------------------------- */
|
|
|
|
/* Transform entry point - local transforms only */
|
|
DEF_DEG_OPCODE(TRANSFORM_LOCAL)
|
|
|
|
/* Parenting */
|
|
DEF_DEG_OPCODE(TRANSFORM_PARENT)
|
|
|
|
/* Constraints */
|
|
DEF_DEG_OPCODE(TRANSFORM_CONSTRAINTS)
|
|
//DEF_DEG_OPCODE(TRANSFORM_CONSTRAINTS_INIT)
|
|
//DEF_DEG_OPCODE(TRANSFORM_CONSTRAINT)
|
|
//DEF_DEG_OPCODE(TRANSFORM_CONSTRAINTS_DONE)
|
|
|
|
/* Rigidbody Sim - Perform Sim */
|
|
DEF_DEG_OPCODE(RIGIDBODY_REBUILD)
|
|
DEF_DEG_OPCODE(RIGIDBODY_SIM)
|
|
|
|
/* Rigidbody Sim - Copy Results to Object */
|
|
DEF_DEG_OPCODE(TRANSFORM_RIGIDBODY)
|
|
|
|
/* Transform exitpoint */
|
|
DEF_DEG_OPCODE(TRANSFORM_FINAL)
|
|
|
|
/* XXX: ubereval is for temporary porting purposes only */
|
|
DEF_DEG_OPCODE(OBJECT_UBEREVAL)
|
|
|
|
/* Geometry ---------------------------------------- */
|
|
|
|
/* XXX: Placeholder - UberEval */
|
|
DEF_DEG_OPCODE(GEOMETRY_UBEREVAL)
|
|
|
|
/* Modifier */
|
|
DEF_DEG_OPCODE(GEOMETRY_MODIFIER)
|
|
|
|
/* Curve Objects - Path Calculation (used for path-following tools) */
|
|
DEF_DEG_OPCODE(GEOMETRY_PATH)
|
|
|
|
/* Pose -------------------------------------------- */
|
|
|
|
/* Init IK Trees, etc. */
|
|
DEF_DEG_OPCODE(POSE_INIT)
|
|
|
|
/* Free IK Trees + Compute Deform Matrices */
|
|
DEF_DEG_OPCODE(POSE_DONE)
|
|
|
|
/* IK/Spline Solvers */
|
|
DEF_DEG_OPCODE(POSE_IK_SOLVER)
|
|
DEF_DEG_OPCODE(POSE_SPLINE_IK_SOLVER)
|
|
|
|
/* Bone -------------------------------------------- */
|
|
|
|
/* Bone local transforms - Entrypoint */
|
|
DEF_DEG_OPCODE(BONE_LOCAL)
|
|
|
|
/* Pose-space conversion (includes parent + restpose) */
|
|
DEF_DEG_OPCODE(BONE_POSE_PARENT)
|
|
|
|
/* Constraints */
|
|
DEF_DEG_OPCODE(BONE_CONSTRAINTS)
|
|
//DEF_DEG_OPCODE(BONE_CONSTRAINTS_INIT)
|
|
//DEF_DEG_OPCODE(BONE_CONSTRAINT)
|
|
//DEF_DEG_OPCODE(BONE_CONSTRAINTS_DONE)
|
|
|
|
/* 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 targetting 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...
|
|
DEF_DEG_OPCODE(BONE_READY)
|
|
DEF_DEG_OPCODE(BONE_DONE)
|
|
|
|
/* Particles --------------------------------------- */
|
|
|
|
/* XXX: placeholder - Particle System eval */
|
|
DEF_DEG_OPCODE(PSYS_EVAL)
|