Initial graph evaluations, added Float to Vec3 Node, minor editor tweaks.
This commit is contained in:
@@ -2,10 +2,9 @@
|
||||
// Created by martin on 04.02.22.
|
||||
//
|
||||
|
||||
#include "AnimGraph/AnimGraphResource.h"
|
||||
#include "AnimGraph/AnimGraph.h"
|
||||
#include "AnimGraph/AnimGraphEditor.h"
|
||||
|
||||
#include "AnimGraph/AnimGraphResource.h"
|
||||
#include "catch.hpp"
|
||||
|
||||
TEST_CASE("BasicGraph", "[AnimGraphResource]") {
|
||||
@@ -81,14 +80,22 @@ TEST_CASE("BasicGraph", "[AnimGraphResource]") {
|
||||
size_t blend_index = blend2_instance->m_index;
|
||||
|
||||
REQUIRE(graph.m_node_input_connections[blend_index].size() == 2);
|
||||
CHECK(graph.m_node_input_connections[blend_index][0].m_source_node == anim_sampler_walk);
|
||||
CHECK(graph.m_node_input_connections[blend_index][1].m_source_node == anim_sampler_run);
|
||||
CHECK(
|
||||
graph.m_node_input_connections[blend_index][0].m_source_node
|
||||
== anim_sampler_walk);
|
||||
CHECK(
|
||||
graph.m_node_input_connections[blend_index][1].m_source_node
|
||||
== anim_sampler_run);
|
||||
|
||||
REQUIRE(graph.m_node_output_connections[anim_sampler_index0].size() == 1);
|
||||
CHECK(graph.m_node_output_connections[anim_sampler_index0][0].m_target_node == blend2_instance);
|
||||
CHECK(
|
||||
graph.m_node_output_connections[anim_sampler_index0][0].m_target_node
|
||||
== blend2_instance);
|
||||
|
||||
REQUIRE(graph.m_node_output_connections[anim_sampler_index1].size() == 1);
|
||||
CHECK(graph.m_node_output_connections[anim_sampler_index1][0].m_target_node == blend2_instance);
|
||||
CHECK(
|
||||
graph.m_node_output_connections[anim_sampler_index1][0].m_target_node
|
||||
== blend2_instance);
|
||||
|
||||
// Emulate evaluation
|
||||
CHECK(graph.m_anim_data_work_buffer.m_available_data.size() == 5);
|
||||
@@ -108,16 +115,16 @@ TEST_CASE("BasicGraph", "[AnimGraphResource]") {
|
||||
CHECK(graph.m_anim_data_work_buffer.m_available_data.size() == 4);
|
||||
|
||||
graph.prepareNodeEval(0);
|
||||
Socket* graph_output_socket = graph.getOutputSocket("GraphOutput");
|
||||
const Socket* graph_output_socket = graph.getOutputSocket("GraphOutput");
|
||||
CHECK(blend2_instance->o_output == (*graph_output_socket->m_value.ptr_ptr));
|
||||
AnimData* graph_output = static_cast<AnimData*>(*graph_output_socket->m_value.ptr_ptr);
|
||||
AnimData* graph_output =
|
||||
static_cast<AnimData*>(*graph_output_socket->m_value.ptr_ptr);
|
||||
graph.finishNodeEval(0);
|
||||
CHECK(blend2_instance->o_output == nullptr);
|
||||
CHECK(graph_output == (*graph_output_socket->m_value.ptr_ptr));
|
||||
CHECK(graph.m_anim_data_work_buffer.m_available_data.size() == 5);
|
||||
}
|
||||
|
||||
/*
|
||||
TEST_CASE("InputAttributeConversion", "[AnimGraphResource]") {
|
||||
int node_id = 3321;
|
||||
int input_index = 221;
|
||||
@@ -137,30 +144,62 @@ TEST_CASE("InputAttributeConversion", "[AnimGraphResource]") {
|
||||
CHECK(output_index == parsed_output_index);
|
||||
}
|
||||
|
||||
TEST_CASE("ResourceSaveLoadGraphInputs", "[AnimGraphResource]") {
|
||||
TEST_CASE("ResourceSaveLoadMathGraphInputs", "[AnimGraphResource]") {
|
||||
AnimGraphResource graph_resource_origin;
|
||||
|
||||
graph_resource_origin.clear();
|
||||
graph_resource_origin.m_name = "TestInputOutputGraph";
|
||||
|
||||
AnimNodeResource& graph_output_node = graph_resource_origin.m_nodes[0];
|
||||
graph_output_node.m_socket_accessor->RegisterInput<AnimData>(
|
||||
"GraphOutput",
|
||||
nullptr);
|
||||
size_t float_to_vec3_node_index =
|
||||
graph_resource_origin.addNode(AnimNodeResourceFactory("MathFloatToVec3Node"));
|
||||
|
||||
AnimNodeResource& graph_output_node =
|
||||
graph_resource_origin.getGraphOutputNode();
|
||||
graph_output_node.m_socket_accessor->RegisterInput<float>(
|
||||
"SomeFloatOutput",
|
||||
"GraphFloatOutput",
|
||||
nullptr);
|
||||
graph_output_node.m_socket_accessor->RegisterInput<Vec3>(
|
||||
"GraphVec3Output",
|
||||
nullptr);
|
||||
|
||||
AnimNodeResource& graph_input_node = graph_resource_origin.m_nodes[1];
|
||||
graph_input_node.m_socket_accessor->RegisterOutput<AnimData>(
|
||||
"GraphAnimInput",
|
||||
nullptr);
|
||||
AnimNodeResource& graph_input_node =
|
||||
graph_resource_origin.getGraphInputNode();
|
||||
graph_input_node.m_socket_accessor->RegisterOutput<float>(
|
||||
"GraphFloatInput",
|
||||
nullptr);
|
||||
graph_input_node.m_socket_accessor->RegisterOutput<bool>(
|
||||
"GraphBoolInput",
|
||||
nullptr);
|
||||
|
||||
// Prepare graph inputs and outputs
|
||||
AnimNodeResource& float_to_vec3_node =
|
||||
graph_resource_origin.m_nodes[float_to_vec3_node_index];
|
||||
|
||||
REQUIRE(graph_resource_origin.connectSockets(
|
||||
graph_input_node,
|
||||
"GraphFloatInput",
|
||||
graph_output_node,
|
||||
"GraphFloatOutput"));
|
||||
|
||||
REQUIRE(graph_resource_origin.connectSockets(
|
||||
graph_input_node,
|
||||
"GraphFloatInput",
|
||||
float_to_vec3_node,
|
||||
"Input0"));
|
||||
REQUIRE(graph_resource_origin.connectSockets(
|
||||
graph_input_node,
|
||||
"GraphFloatInput",
|
||||
float_to_vec3_node,
|
||||
"Input1"));
|
||||
REQUIRE(graph_resource_origin.connectSockets(
|
||||
graph_input_node,
|
||||
"GraphFloatInput",
|
||||
float_to_vec3_node,
|
||||
"Input2"));
|
||||
|
||||
REQUIRE(graph_resource_origin.connectSockets(
|
||||
float_to_vec3_node,
|
||||
"Output",
|
||||
graph_output_node,
|
||||
"GraphVec3Output"));
|
||||
|
||||
|
||||
WHEN("Saving and loading graph resource") {
|
||||
const char* filename = "ResourceSaveLoadGraphInputs.json";
|
||||
@@ -183,43 +222,49 @@ TEST_CASE("ResourceSaveLoadGraphInputs", "[AnimGraphResource]") {
|
||||
graph_input_node.m_socket_accessor->m_outputs.size()
|
||||
== graph_loaded_input_node.m_socket_accessor->m_outputs.size());
|
||||
|
||||
REQUIRE(
|
||||
graph_loaded_input_node.m_socket_accessor->FindOutputSocket(
|
||||
"GraphAnimInput")
|
||||
!= nullptr);
|
||||
REQUIRE(
|
||||
graph_loaded_input_node.m_socket_accessor->FindOutputSocket(
|
||||
"GraphFloatInput")
|
||||
!= nullptr);
|
||||
REQUIRE(
|
||||
graph_loaded_input_node.m_socket_accessor->FindOutputSocket(
|
||||
"GraphBoolInput")
|
||||
!= nullptr);
|
||||
|
||||
REQUIRE(
|
||||
graph_loaded_output_node.m_socket_accessor->FindInputSocket(
|
||||
"GraphOutput")
|
||||
"GraphFloatOutput")
|
||||
!= nullptr);
|
||||
REQUIRE(
|
||||
graph_loaded_output_node.m_socket_accessor->FindInputSocket(
|
||||
"SomeFloatOutput")
|
||||
"GraphVec3Output")
|
||||
!= nullptr);
|
||||
}
|
||||
|
||||
WHEN("Instantiating an AnimGraph") {
|
||||
AnimGraph anim_graph = graph_resource_loaded.createInstance();
|
||||
WHEN("Instantiating an AnimGraph") {
|
||||
AnimGraph anim_graph = graph_resource_loaded.createInstance();
|
||||
|
||||
REQUIRE(
|
||||
anim_graph.getOutput("GraphOutput") == anim_graph.m_output_buffer);
|
||||
REQUIRE(
|
||||
anim_graph.getOutput("SomeFloatOutput")
|
||||
== anim_graph.m_output_buffer + sizeof(AnimData));
|
||||
REQUIRE(anim_graph.getInputSocket("GraphFloatInput") != nullptr);
|
||||
REQUIRE(anim_graph.getInputPtr("GraphFloatInput") == anim_graph.m_input_buffer);
|
||||
|
||||
REQUIRE(anim_graph.getInput("GraphAnimInput") == nullptr);
|
||||
REQUIRE(anim_graph.getInput("GraphFloatInput") == nullptr);
|
||||
REQUIRE(anim_graph.getInput("GraphBoolInput") == nullptr);
|
||||
float* graph_float_input = nullptr;
|
||||
graph_float_input = static_cast<float*>(anim_graph.getInputPtr("GraphFloatInput"));
|
||||
|
||||
*graph_float_input = 123.456f;
|
||||
|
||||
anim_graph.updateTime(0.f);
|
||||
anim_graph.evaluate();
|
||||
|
||||
anim_graph.evalOutputNode();
|
||||
|
||||
Socket* float_output_socket = anim_graph.getOutputSocket("GraphFloatOutput");
|
||||
Socket* vec3_output_socket = anim_graph.getOutputSocket("GraphVec3Output");
|
||||
Vec3& vec3_output = *static_cast<Vec3*>(vec3_output_socket->m_value.ptr);
|
||||
|
||||
CHECK(vec3_output[0] == *graph_float_input);
|
||||
CHECK(vec3_output[1] == *graph_float_input);
|
||||
CHECK(vec3_output[2] == *graph_float_input);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/*
|
||||
|
||||
WHEN("Connecting input to output and instantiating the graph") {
|
||||
AnimNodeResource& graph_output_node = graph_resource_origin.m_nodes[0];
|
||||
|
||||
Reference in New Issue
Block a user