Some progress with single socket storage.

This commit is contained in:
Martin Felis
2024-04-02 18:22:30 +02:00
parent 5d54b57a95
commit 4b8bee5a9b
4 changed files with 60 additions and 129 deletions
+25 -28
View File
@@ -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,17 +888,17 @@ TEST_CASE("ResourceSaveLoadMathGraphInputs", "[AnimGraphResource]") {
AnimGraphBlendTree blend_tree_node;
graph_resource_loaded.CreateBlendTreeInstance(blend_tree_node);
REQUIRE(blend_tree_node.GetInputSocket("GraphFloatInput") != nullptr);
Socket* input_socket =
blend_tree_node.GetInputSocket("GraphFloatInput");
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;
@@ -1028,8 +1026,7 @@ TEST_CASE("SimpleMathEvaluations", "[AnimGraphResource]") {
AnimGraphBlendTree blend_tree;
graph_resource_loaded.CreateBlendTreeInstance(blend_tree);
REQUIRE(blend_tree.GetInputSocket("GraphFloatInput") != nullptr);
REQUIRE(
CHECK(
blend_tree.GetInputPtr("GraphFloatInput")
== blend_tree.m_input_buffer);