Only storing single socket in AnimGraphConnections and simplified wiring logic.
This commit is contained in:
@@ -754,17 +754,14 @@ TEST_CASE_METHOD(
|
||||
CHECK(blend2_instance->i_input0 == anim_sampler_walk->o_output);
|
||||
CHECK(blend2_instance->i_input1 == anim_sampler_run->o_output);
|
||||
|
||||
const Socket* graph_output_socket =
|
||||
blend_tree_graph.GetOutputSocket("GraphOutput");
|
||||
AnimData* graph_output =
|
||||
static_cast<AnimData*>(*graph_output_socket->m_reference.ptr_ptr);
|
||||
AnimData* graph_output = static_cast<AnimData*>(
|
||||
blend_tree_graph.GetOutputPtr<AnimData>("GraphOutput"));
|
||||
|
||||
CHECK(
|
||||
graph_output->m_local_matrices.size()
|
||||
== graph_context.m_skeleton->num_soa_joints());
|
||||
|
||||
CHECK(
|
||||
blend2_instance->o_output == *graph_output_socket->m_reference.ptr_ptr);
|
||||
CHECK(blend2_instance->o_output == graph_output);
|
||||
}
|
||||
|
||||
graph_context.freeAnimations();
|
||||
@@ -811,39 +808,40 @@ TEST_CASE("ResourceSaveLoadMathGraphInputs", "[AnimGraphResource]") {
|
||||
"GraphVec3Output",
|
||||
nullptr);
|
||||
|
||||
AnimNodeResource* graph_input_node = blend_tree_resource.GetGraphInputNode();
|
||||
graph_input_node->m_socket_accessor->RegisterOutput<float>(
|
||||
AnimNodeResource* graph_input_node_resource =
|
||||
blend_tree_resource.GetGraphInputNode();
|
||||
graph_input_node_resource->m_socket_accessor->RegisterOutput<float>(
|
||||
"GraphFloatInput",
|
||||
nullptr);
|
||||
|
||||
// Prepare graph inputs and outputs
|
||||
AnimNodeResource* float_to_vec3_node =
|
||||
AnimNodeResource* float_to_vec3_node_resource =
|
||||
blend_tree_resource.m_nodes[float_to_vec3_node_index];
|
||||
|
||||
REQUIRE(blend_tree_resource.ConnectSockets(
|
||||
graph_input_node,
|
||||
graph_input_node_resource,
|
||||
"GraphFloatInput",
|
||||
graph_output_node,
|
||||
"GraphFloatOutput"));
|
||||
|
||||
REQUIRE(blend_tree_resource.ConnectSockets(
|
||||
graph_input_node,
|
||||
graph_input_node_resource,
|
||||
"GraphFloatInput",
|
||||
float_to_vec3_node,
|
||||
float_to_vec3_node_resource,
|
||||
"Input0"));
|
||||
REQUIRE(blend_tree_resource.ConnectSockets(
|
||||
graph_input_node,
|
||||
graph_input_node_resource,
|
||||
"GraphFloatInput",
|
||||
float_to_vec3_node,
|
||||
float_to_vec3_node_resource,
|
||||
"Input1"));
|
||||
REQUIRE(blend_tree_resource.ConnectSockets(
|
||||
graph_input_node,
|
||||
graph_input_node_resource,
|
||||
"GraphFloatInput",
|
||||
float_to_vec3_node,
|
||||
float_to_vec3_node_resource,
|
||||
"Input2"));
|
||||
|
||||
REQUIRE(blend_tree_resource.ConnectSockets(
|
||||
float_to_vec3_node,
|
||||
float_to_vec3_node_resource,
|
||||
"Output",
|
||||
graph_output_node,
|
||||
"GraphVec3Output"));
|
||||
@@ -869,7 +867,7 @@ TEST_CASE("ResourceSaveLoadMathGraphInputs", "[AnimGraphResource]") {
|
||||
== graph_loaded_output_node->m_socket_accessor->m_inputs.size());
|
||||
|
||||
REQUIRE(
|
||||
graph_input_node->m_socket_accessor->m_outputs.size()
|
||||
graph_input_node_resource->m_socket_accessor->m_outputs.size()
|
||||
== graph_loaded_input_node->m_socket_accessor->m_outputs.size());
|
||||
|
||||
REQUIRE(
|
||||
@@ -890,14 +888,17 @@ TEST_CASE("ResourceSaveLoadMathGraphInputs", "[AnimGraphResource]") {
|
||||
AnimGraphBlendTree blend_tree_node;
|
||||
graph_resource_loaded.CreateBlendTreeInstance(blend_tree_node);
|
||||
|
||||
REQUIRE(blend_tree_node.GetInputSocket("GraphFloatInput") != nullptr);
|
||||
REQUIRE(
|
||||
blend_tree_node.GetInputPtr("GraphFloatInput")
|
||||
== blend_tree_node.m_input_buffer);
|
||||
|
||||
float graph_float_input = 123.456f;
|
||||
blend_tree_node.SetInput("GraphFloatInput", &graph_float_input);
|
||||
|
||||
MathFloatToVec3Node* float_to_vec3_node =
|
||||
dynamic_cast<MathFloatToVec3Node*>(
|
||||
blend_tree_node.m_nodes[float_to_vec3_node_index]);
|
||||
|
||||
CHECK(float_to_vec3_node->i_input0 == &graph_float_input);
|
||||
CHECK(float_to_vec3_node->i_input1 == &graph_float_input);
|
||||
CHECK(float_to_vec3_node->i_input2 == &graph_float_input);
|
||||
|
||||
AND_WHEN("Evaluating Graph") {
|
||||
AnimGraphContext context;
|
||||
context.m_graph = nullptr;
|
||||
@@ -928,6 +929,19 @@ TEST_CASE("ResourceSaveLoadMathGraphInputs", "[AnimGraphResource]") {
|
||||
}
|
||||
}
|
||||
|
||||
//
|
||||
// Graph:
|
||||
// Input: float GraphFloatInputSingle
|
||||
// Output: float GraphFloat0Output
|
||||
// float GraphFloat1Output
|
||||
// float GraphFloat1Output
|
||||
// Nodes: 2x Add Node
|
||||
// Connections:
|
||||
// - Direct GraphFloatInputSingle to GraphFQloat0Output
|
||||
// - Remaining wires such that
|
||||
// GraphFloat1Output -> GraphFLoatInputSingle * 2
|
||||
// GraphFloat1Output -> GraphFLoatInputSingle * 3
|
||||
//
|
||||
TEST_CASE("SimpleMathEvaluations", "[AnimGraphResource]") {
|
||||
AnimGraphResource graph_resource_origin;
|
||||
graph_resource_origin.m_name = "TestSimpleMathGraph";
|
||||
@@ -1025,11 +1039,6 @@ TEST_CASE("SimpleMathEvaluations", "[AnimGraphResource]") {
|
||||
AnimGraphBlendTree blend_tree;
|
||||
graph_resource_loaded.CreateBlendTreeInstance(blend_tree);
|
||||
|
||||
REQUIRE(blend_tree.GetInputSocket("GraphFloatInput") != nullptr);
|
||||
REQUIRE(
|
||||
blend_tree.GetInputPtr("GraphFloatInput")
|
||||
== blend_tree.m_input_buffer);
|
||||
|
||||
float graph_float_input = 123.456f;
|
||||
blend_tree.SetInput("GraphFloatInput", &graph_float_input);
|
||||
|
||||
@@ -1037,12 +1046,13 @@ TEST_CASE("SimpleMathEvaluations", "[AnimGraphResource]") {
|
||||
AnimGraphContext context;
|
||||
context.m_graph = nullptr;
|
||||
|
||||
float float1_output = -1.f;
|
||||
float float2_output = -1.f;
|
||||
|
||||
// float0 output is directly connected to the graph input, therefore
|
||||
// we have to get a ptr to the input data here.
|
||||
float* float0_output_ptr =
|
||||
blend_tree.GetOutputPtr<float>("GraphFloat0Output");
|
||||
float float1_output = -1.f;
|
||||
float float2_output = -1.f;
|
||||
|
||||
blend_tree.SetOutput("GraphFloat1Output", &float1_output);
|
||||
blend_tree.SetOutput("GraphFloat2Output", &float2_output);
|
||||
@@ -1051,7 +1061,7 @@ TEST_CASE("SimpleMathEvaluations", "[AnimGraphResource]") {
|
||||
blend_tree.Evaluate(context);
|
||||
|
||||
THEN("output vector components equal the graph input vaulues") {
|
||||
CHECK(*float0_output_ptr == Approx(graph_float_input));
|
||||
CHECK(float0_output_ptr == &graph_float_input);
|
||||
CHECK(float1_output == Approx(graph_float_input * 2.f));
|
||||
REQUIRE_THAT(
|
||||
float2_output,
|
||||
|
||||
Reference in New Issue
Block a user