Depsgraph: Make object component conversion more accessible
This commit is contained in:
parent
609e16339f
commit
ea05edceaa
|
@ -77,31 +77,6 @@ static DEG::NodeType deg_build_scene_component_type(eDepsSceneComponentType comp
|
|||
return DEG::NodeType::UNDEFINED;
|
||||
}
|
||||
|
||||
static DEG::NodeType deg_build_object_component_type(eDepsObjectComponentType component)
|
||||
{
|
||||
switch (component) {
|
||||
case DEG_OB_COMP_PARAMETERS:
|
||||
return DEG::NodeType::PARAMETERS;
|
||||
case DEG_OB_COMP_PROXY:
|
||||
return DEG::NodeType::PROXY;
|
||||
case DEG_OB_COMP_ANIMATION:
|
||||
return DEG::NodeType::ANIMATION;
|
||||
case DEG_OB_COMP_TRANSFORM:
|
||||
return DEG::NodeType::TRANSFORM;
|
||||
case DEG_OB_COMP_GEOMETRY:
|
||||
return DEG::NodeType::GEOMETRY;
|
||||
case DEG_OB_COMP_EVAL_POSE:
|
||||
return DEG::NodeType::EVAL_POSE;
|
||||
case DEG_OB_COMP_BONE:
|
||||
return DEG::NodeType::BONE;
|
||||
case DEG_OB_COMP_SHADING:
|
||||
return DEG::NodeType::SHADING;
|
||||
case DEG_OB_COMP_CACHE:
|
||||
return DEG::NodeType::CACHE;
|
||||
}
|
||||
return DEG::NodeType::UNDEFINED;
|
||||
}
|
||||
|
||||
static DEG::DepsNodeHandle *get_node_handle(DepsNodeHandle *node_handle)
|
||||
{
|
||||
return reinterpret_cast<DEG::DepsNodeHandle *>(node_handle);
|
||||
|
@ -123,7 +98,7 @@ void DEG_add_object_relation(DepsNodeHandle *node_handle,
|
|||
eDepsObjectComponentType component,
|
||||
const char *description)
|
||||
{
|
||||
DEG::NodeType type = deg_build_object_component_type(component);
|
||||
DEG::NodeType type = DEG::nodeTypeFromObjectComponent(component);
|
||||
DEG::ComponentKey comp_key(&object->id, type);
|
||||
DEG::DepsNodeHandle *deg_node_handle = get_node_handle(node_handle);
|
||||
deg_node_handle->builder->add_node_handle_relation(comp_key, deg_node_handle, description);
|
||||
|
@ -134,7 +109,7 @@ void DEG_add_object_cache_relation(DepsNodeHandle *node_handle,
|
|||
eDepsObjectComponentType component,
|
||||
const char *description)
|
||||
{
|
||||
DEG::NodeType type = deg_build_object_component_type(component);
|
||||
DEG::NodeType type = DEG::nodeTypeFromObjectComponent(component);
|
||||
DEG::ComponentKey comp_key(&cache_file->id, type);
|
||||
DEG::DepsNodeHandle *deg_node_handle = get_node_handle(node_handle);
|
||||
deg_node_handle->builder->add_node_handle_relation(comp_key, deg_node_handle, description);
|
||||
|
@ -146,7 +121,7 @@ void DEG_add_bone_relation(DepsNodeHandle *node_handle,
|
|||
eDepsObjectComponentType component,
|
||||
const char *description)
|
||||
{
|
||||
DEG::NodeType type = deg_build_object_component_type(component);
|
||||
DEG::NodeType type = DEG::nodeTypeFromObjectComponent(component);
|
||||
DEG::ComponentKey comp_key(&object->id, type, bone_name);
|
||||
DEG::DepsNodeHandle *deg_node_handle = get_node_handle(node_handle);
|
||||
deg_node_handle->builder->add_node_handle_relation(comp_key, deg_node_handle, description);
|
||||
|
@ -157,7 +132,7 @@ void DEG_add_object_pointcache_relation(struct DepsNodeHandle *node_handle,
|
|||
eDepsObjectComponentType component,
|
||||
const char *description)
|
||||
{
|
||||
DEG::NodeType type = deg_build_object_component_type(component);
|
||||
DEG::NodeType type = DEG::nodeTypeFromObjectComponent(component);
|
||||
DEG::ComponentKey comp_key(&object->id, type);
|
||||
DEG::DepsNodeHandle *deg_node_handle = get_node_handle(node_handle);
|
||||
DEG::DepsgraphRelationBuilder *relation_builder = deg_node_handle->builder;
|
||||
|
|
|
@ -120,6 +120,44 @@ const char *nodeTypeAsString(NodeType type)
|
|||
return "UNKNOWN";
|
||||
}
|
||||
|
||||
NodeType nodeTypeFromSceneComponent(eDepsSceneComponentType component)
|
||||
{
|
||||
switch (component) {
|
||||
case DEG_SCENE_COMP_PARAMETERS:
|
||||
return NodeType::PARAMETERS;
|
||||
case DEG_SCENE_COMP_ANIMATION:
|
||||
return NodeType::ANIMATION;
|
||||
case DEG_SCENE_COMP_SEQUENCER:
|
||||
return NodeType::SEQUENCER;
|
||||
}
|
||||
return NodeType::UNDEFINED;
|
||||
}
|
||||
|
||||
NodeType nodeTypeFromObjectComponent(eDepsObjectComponentType component)
|
||||
{
|
||||
switch (component) {
|
||||
case DEG_OB_COMP_PARAMETERS:
|
||||
return NodeType::PARAMETERS;
|
||||
case DEG_OB_COMP_PROXY:
|
||||
return NodeType::PROXY;
|
||||
case DEG_OB_COMP_ANIMATION:
|
||||
return NodeType::ANIMATION;
|
||||
case DEG_OB_COMP_TRANSFORM:
|
||||
return NodeType::TRANSFORM;
|
||||
case DEG_OB_COMP_GEOMETRY:
|
||||
return NodeType::GEOMETRY;
|
||||
case DEG_OB_COMP_EVAL_POSE:
|
||||
return NodeType::EVAL_POSE;
|
||||
case DEG_OB_COMP_BONE:
|
||||
return NodeType::BONE;
|
||||
case DEG_OB_COMP_SHADING:
|
||||
return NodeType::SHADING;
|
||||
case DEG_OB_COMP_CACHE:
|
||||
return NodeType::CACHE;
|
||||
}
|
||||
return NodeType::UNDEFINED;
|
||||
}
|
||||
|
||||
/*******************************************************************************
|
||||
* Type information.
|
||||
*/
|
||||
|
|
|
@ -27,6 +27,8 @@
|
|||
|
||||
#include "BLI_utildefines.h"
|
||||
|
||||
#include "DEG_depsgraph_build.h"
|
||||
|
||||
struct GHash;
|
||||
struct ID;
|
||||
struct Scene;
|
||||
|
@ -130,6 +132,9 @@ enum class NodeType {
|
|||
};
|
||||
const char *nodeTypeAsString(NodeType type);
|
||||
|
||||
NodeType nodeTypeFromSceneComponent(eDepsSceneComponentType component);
|
||||
NodeType nodeTypeFromObjectComponent(eDepsObjectComponentType component);
|
||||
|
||||
/* All nodes in Depsgraph are descended from this. */
|
||||
struct Node {
|
||||
/* Helper class for static typeinfo in subclasses. */
|
||||
|
|
Loading…
Reference in New Issue