BlendTree input and output sockets can now be registered via the AnimGraphResource.

This commit is contained in:
Martin Felis
2024-05-01 21:49:34 +02:00
parent b9789bd1e1
commit 698abbce4b
3 changed files with 94 additions and 17 deletions
+25 -15
View File
@@ -304,21 +304,11 @@ class EmbeddedTreeBlend2GraphResource {
embedded_blend_tree_resource = &embedded_graph->m_blend_tree_resource;
// Embedded: outputs
AnimNodeResource* embedded_outputs =
embedded_blend_tree_resource->GetGraphOutputNode();
embedded_outputs->m_socket_accessor->RegisterInput<AnimData>(
"AnimOutput",
nullptr);
embedded_graph->RegisterBlendTreeOutputSocket<AnimData>("AnimOutput");
// Embedded: inputs
AnimNodeResource* embedded_inputs =
embedded_blend_tree_resource->GetGraphInputNode();
embedded_inputs->m_socket_accessor->RegisterOutput<AnimData>(
"AnimInput",
nullptr);
embedded_inputs->m_socket_accessor->RegisterOutput<float>(
"BlendWeight",
nullptr);
embedded_graph->RegisterBlendTreeInputSocket<AnimData>("AnimInput");
embedded_graph->RegisterBlendTreeInputSocket<float>("BlendWeight");
// Embedded nodes
embedded_blend2_node_index = embedded_blend_tree_resource->AddNode(
@@ -343,7 +333,7 @@ class EmbeddedTreeBlend2GraphResource {
// Embedded: setup connections
REQUIRE(embedded_blend_tree_resource->ConnectSockets(
embedded_inputs,
embedded_blend_tree_resource->GetGraphInputNode(),
"AnimInput",
embedded_blend2_node_resource,
"Input0"));
@@ -358,7 +348,7 @@ class EmbeddedTreeBlend2GraphResource {
embedded_blend_tree_resource->GetGraphOutputNode(),
"AnimOutput"));
REQUIRE(embedded_blend_tree_resource->ConnectSockets(
embedded_inputs,
embedded_blend_tree_resource->GetGraphInputNode(),
"BlendWeight",
embedded_blend2_node_resource,
"Weight"));
@@ -1341,4 +1331,24 @@ TEST_CASE_METHOD(
}
graph_context.freeAnimations();
}
TEST_CASE(
"Register AnimGraphResource Blendtree Sockets",
"[AnimGraphResource]") {
AnimNodeResource* blend_tree_anim_node_resource =
AnimNodeResourceFactory("BlendTree");
AnimGraphResource* blend_tree_graph_resource =
dynamic_cast<AnimGraphResource*>(blend_tree_anim_node_resource);
Socket socket;
socket.m_name = "FloatSocket";
socket.m_type = SocketType::SocketTypeFloat;
socket.m_reference.ptr = nullptr;
CHECK(blend_tree_graph_resource->RegisterBlendTreeInputSocket(socket));
CHECK(!blend_tree_graph_resource->RegisterBlendTreeInputSocket(socket));
CHECK(blend_tree_graph_resource->RegisterBlendTreeOutputSocket(socket));
CHECK(!blend_tree_graph_resource->RegisterBlendTreeOutputSocket(socket));
}