Made BlendTreeResource::m_nodes and ::m_connections private.
This is a prerequisite to properly track Node input/output connections and to compute eval order in the BlendTreeResources.
This commit is contained in:
+115
-229
@@ -28,11 +28,9 @@ class SimpleAnimSamplerGraphResource {
|
||||
blend_tree_resource->InitGraphConnectors();
|
||||
|
||||
// Prepare graph inputs and outputs
|
||||
blend_tree_resource->m_nodes.push_back(
|
||||
AnimNodeResourceFactory("AnimSampler"));
|
||||
walk_node_index = blend_tree_resource->m_nodes.size() - 1;
|
||||
|
||||
walk_node = blend_tree_resource->m_nodes[walk_node_index];
|
||||
walk_node_index =
|
||||
blend_tree_resource->AddNode(AnimNodeResourceFactory("AnimSampler"));
|
||||
walk_node = blend_tree_resource->GetNode(walk_node_index);
|
||||
walk_node->m_name = "WalkAnim";
|
||||
walk_node->m_socket_accessor->SetPropertyValue(
|
||||
"Filename",
|
||||
@@ -72,28 +70,26 @@ class Blend2GraphResource {
|
||||
blend_tree_resource->InitGraphConnectors();
|
||||
|
||||
// Prepare graph inputs and outputs
|
||||
blend_tree_resource->m_nodes.push_back(
|
||||
AnimNodeResourceFactory("AnimSampler"));
|
||||
walk_node_index = blend_tree_resource->m_nodes.size() - 1;
|
||||
walk_node_index =
|
||||
blend_tree_resource->AddNode(AnimNodeResourceFactory("AnimSampler"));
|
||||
|
||||
blend_tree_resource->m_nodes.push_back(
|
||||
AnimNodeResourceFactory("AnimSampler"));
|
||||
run_node_index = blend_tree_resource->m_nodes.size() - 1;
|
||||
run_node_index =
|
||||
blend_tree_resource->AddNode(AnimNodeResourceFactory("AnimSampler"));
|
||||
|
||||
blend_tree_resource->m_nodes.push_back(AnimNodeResourceFactory("Blend2"));
|
||||
blend_node_index = blend_tree_resource->m_nodes.size() - 1;
|
||||
blend_node_index =
|
||||
blend_tree_resource->AddNode(AnimNodeResourceFactory("Blend2"));
|
||||
|
||||
walk_node = blend_tree_resource->m_nodes[walk_node_index];
|
||||
walk_node = blend_tree_resource->GetNode(walk_node_index);
|
||||
walk_node->m_name = "WalkAnim";
|
||||
walk_node->m_socket_accessor->SetPropertyValue(
|
||||
"Filename",
|
||||
std::string("media/Walking-loop.ozz"));
|
||||
run_node = blend_tree_resource->m_nodes[run_node_index];
|
||||
run_node = blend_tree_resource->GetNode(run_node_index);
|
||||
run_node->m_socket_accessor->SetPropertyValue(
|
||||
"Filename",
|
||||
std::string("media/Running0-loop.ozz"));
|
||||
run_node->m_name = "RunAnim";
|
||||
blend_node = blend_tree_resource->m_nodes[blend_node_index];
|
||||
blend_node = blend_tree_resource->GetNode(blend_node_index);
|
||||
blend_node->m_name = "BlendWalkRun";
|
||||
|
||||
AnimNodeResource* graph_node = blend_tree_resource->GetGraphOutputNode();
|
||||
@@ -161,11 +157,10 @@ class EmbeddedBlendTreeGraphResource {
|
||||
nullptr);
|
||||
|
||||
// Parent AnimSampler
|
||||
parent_blend_tree_resource->m_nodes.push_back(
|
||||
walk_node_index = parent_blend_tree_resource->AddNode(
|
||||
AnimNodeResourceFactory("AnimSampler"));
|
||||
walk_node_index = parent_blend_tree_resource->m_nodes.size() - 1;
|
||||
|
||||
walk_node_resource = parent_blend_tree_resource->m_nodes[walk_node_index];
|
||||
walk_node_resource = parent_blend_tree_resource->GetNode(walk_node_index);
|
||||
walk_node_resource->m_name = "WalkAnim";
|
||||
walk_node_resource->m_socket_accessor->SetPropertyValue(
|
||||
"Filename",
|
||||
@@ -174,12 +169,10 @@ class EmbeddedBlendTreeGraphResource {
|
||||
//
|
||||
// Embedded Tree
|
||||
//
|
||||
parent_blend_tree_resource->m_nodes.push_back(
|
||||
embedded_blend_tree_node_index = parent_blend_tree_resource->AddNode(
|
||||
AnimNodeResourceFactory("BlendTree"));
|
||||
embedded_blend_tree_node_index =
|
||||
parent_blend_tree_resource->m_nodes.size() - 1;
|
||||
embedded_graph = dynamic_cast<AnimGraphResource*>(
|
||||
parent_blend_tree_resource->m_nodes.back());
|
||||
parent_blend_tree_resource->GetNode(embedded_blend_tree_node_index));
|
||||
embedded_graph->m_name = "EmbeddedBlendTree";
|
||||
embedded_graph->m_node_type_name = "BlendTree";
|
||||
embedded_graph->m_graph_type_name = "BlendTree";
|
||||
@@ -200,12 +193,10 @@ class EmbeddedBlendTreeGraphResource {
|
||||
nullptr);
|
||||
|
||||
// Embedded: SpeedScale node
|
||||
embedded_blend_tree_resource->m_nodes.push_back(
|
||||
embedded_speed_scale_index = embedded_blend_tree_resource->AddNode(
|
||||
AnimNodeResourceFactory("SpeedScale"));
|
||||
embedded_speed_scale_index =
|
||||
embedded_blend_tree_resource->m_nodes.size() - 1;
|
||||
AnimNodeResource* embedded_speed_scale_resource =
|
||||
embedded_blend_tree_resource->m_nodes[embedded_speed_scale_index];
|
||||
embedded_blend_tree_resource->GetNode(embedded_speed_scale_index);
|
||||
embedded_speed_scale_resource->m_socket_accessor->SetInputValue(
|
||||
"SpeedScale",
|
||||
0.1f);
|
||||
@@ -291,11 +282,10 @@ class EmbeddedTreeBlend2GraphResource {
|
||||
nullptr);
|
||||
|
||||
// Parent AnimSampler
|
||||
parent_blend_tree_resource->m_nodes.push_back(
|
||||
walk_node_index = parent_blend_tree_resource->AddNode(
|
||||
AnimNodeResourceFactory("AnimSampler"));
|
||||
walk_node_index = parent_blend_tree_resource->m_nodes.size() - 1;
|
||||
|
||||
walk_node_resource = parent_blend_tree_resource->m_nodes[walk_node_index];
|
||||
walk_node_resource = parent_blend_tree_resource->GetNode(walk_node_index);
|
||||
walk_node_resource->m_name = "WalkAnim";
|
||||
walk_node_resource->m_socket_accessor->SetPropertyValue(
|
||||
"Filename",
|
||||
@@ -304,12 +294,10 @@ class EmbeddedTreeBlend2GraphResource {
|
||||
//
|
||||
// Embedded Tree
|
||||
//
|
||||
parent_blend_tree_resource->m_nodes.push_back(
|
||||
embedded_blend_tree_node_index = parent_blend_tree_resource->AddNode(
|
||||
AnimNodeResourceFactory("BlendTree"));
|
||||
embedded_blend_tree_node_index =
|
||||
parent_blend_tree_resource->m_nodes.size() - 1;
|
||||
embedded_graph = dynamic_cast<AnimGraphResource*>(
|
||||
parent_blend_tree_resource->m_nodes.back());
|
||||
parent_blend_tree_resource->GetNode(embedded_blend_tree_node_index));
|
||||
embedded_graph->m_name = "EmbeddedTreeBlend2GraphResource";
|
||||
embedded_graph->m_node_type_name = "BlendTree";
|
||||
embedded_graph->m_graph_type_name = "BlendTree";
|
||||
@@ -333,24 +321,21 @@ class EmbeddedTreeBlend2GraphResource {
|
||||
nullptr);
|
||||
|
||||
// Embedded nodes
|
||||
embedded_blend_tree_resource->m_nodes.push_back(
|
||||
embedded_blend2_node_index = embedded_blend_tree_resource->AddNode(
|
||||
AnimNodeResourceFactory("Blend2"));
|
||||
embedded_blend2_node_index =
|
||||
embedded_blend_tree_resource->m_nodes.size() - 1;
|
||||
|
||||
embedded_blend_tree_resource->m_nodes.push_back(
|
||||
embedded_run_node_index = embedded_blend_tree_resource->AddNode(
|
||||
AnimNodeResourceFactory("AnimSampler"));
|
||||
embedded_run_node_index = embedded_blend_tree_resource->m_nodes.size() - 1;
|
||||
|
||||
// Configure node resources
|
||||
embedded_blend2_node_resource =
|
||||
embedded_blend_tree_resource->m_nodes[embedded_blend2_node_index];
|
||||
embedded_blend_tree_resource->GetNode(embedded_blend2_node_index);
|
||||
embedded_blend2_node_resource->m_socket_accessor->SetInputValue(
|
||||
"Weight",
|
||||
0.1f);
|
||||
|
||||
embedded_run_node_resource =
|
||||
embedded_blend_tree_resource->m_nodes[embedded_run_node_index];
|
||||
embedded_blend_tree_resource->GetNode(embedded_run_node_index);
|
||||
embedded_run_node_resource->m_name = "RunAnim";
|
||||
embedded_run_node_resource->m_socket_accessor->SetPropertyValue(
|
||||
"Filename",
|
||||
@@ -418,6 +403,64 @@ bool load_skeleton(ozz::animation::Skeleton& skeleton, const char* filename) {
|
||||
return true;
|
||||
}
|
||||
|
||||
void CheckBlendTreeResourcesEqual(
|
||||
const BlendTreeResource* blend_tree_resource_reference,
|
||||
const BlendTreeResource* blend_tree_resource_rhs) {
|
||||
REQUIRE(
|
||||
blend_tree_resource_reference->GetNumNodes()
|
||||
== blend_tree_resource_rhs->GetNumNodes());
|
||||
for (size_t i = 0; i < blend_tree_resource_reference->GetNumNodes(); i++) {
|
||||
const AnimNodeResource* node = blend_tree_resource_reference->GetNode(i);
|
||||
const AnimNodeResource* node_loaded = blend_tree_resource_rhs->GetNode(i);
|
||||
|
||||
REQUIRE(node->m_name == node_loaded->m_name);
|
||||
REQUIRE(node->m_node_type_name == node_loaded->m_node_type_name);
|
||||
}
|
||||
|
||||
REQUIRE(
|
||||
blend_tree_resource_reference->GetNumConnections()
|
||||
== blend_tree_resource_rhs->GetNumConnections());
|
||||
for (size_t i = 0; i < blend_tree_resource_reference->GetNumConnections();
|
||||
i++) {
|
||||
const BlendTreeConnectionResource* connection =
|
||||
blend_tree_resource_reference->GetConnection(i);
|
||||
const BlendTreeConnectionResource* connection_loaded =
|
||||
blend_tree_resource_rhs->GetConnection(i);
|
||||
|
||||
REQUIRE(
|
||||
connection->source_node_index == connection_loaded->source_node_index);
|
||||
REQUIRE(
|
||||
connection->source_socket_name
|
||||
== connection_loaded->source_socket_name);
|
||||
REQUIRE(
|
||||
connection->target_node_index == connection_loaded->target_node_index);
|
||||
REQUIRE(
|
||||
connection->target_socket_name
|
||||
== connection_loaded->target_socket_name);
|
||||
}
|
||||
}
|
||||
|
||||
void CheckAnimGraphResourceEqual(
|
||||
const AnimGraphResource& graph_resource_reference,
|
||||
const AnimGraphResource& graph_resource_rhs) {
|
||||
REQUIRE(
|
||||
graph_resource_reference.m_graph_type_name
|
||||
== graph_resource_rhs.m_graph_type_name);
|
||||
REQUIRE(graph_resource_reference.m_name == graph_resource_rhs.m_name);
|
||||
|
||||
REQUIRE(graph_resource_reference.m_graph_type_name == "BlendTree");
|
||||
|
||||
const BlendTreeResource* blend_tree_resource_reference =
|
||||
&graph_resource_reference.m_blend_tree_resource;
|
||||
|
||||
const BlendTreeResource* blend_tree_resource_rhs =
|
||||
&graph_resource_rhs.m_blend_tree_resource;
|
||||
|
||||
CheckBlendTreeResourcesEqual(
|
||||
blend_tree_resource_reference,
|
||||
blend_tree_resource_rhs);
|
||||
}
|
||||
|
||||
TEST_CASE("InputAttributeConversion", "[AnimGraphResource]") {
|
||||
int node_id = 3321;
|
||||
int input_index = 221;
|
||||
@@ -447,44 +490,7 @@ TEST_CASE_METHOD(
|
||||
AnimGraphResource graph_resource_loaded;
|
||||
graph_resource_loaded.LoadFromFile("TestGraphAnimSamplerBlendTree.json");
|
||||
|
||||
REQUIRE(
|
||||
graph_resource.m_graph_type_name
|
||||
== graph_resource_loaded.m_graph_type_name);
|
||||
REQUIRE(graph_resource.m_name == graph_resource_loaded.m_name);
|
||||
|
||||
BlendTreeResource* blend_tree_resource_loaded =
|
||||
&graph_resource_loaded.m_blend_tree_resource;
|
||||
|
||||
REQUIRE(
|
||||
blend_tree_resource->m_nodes.size()
|
||||
== blend_tree_resource_loaded->m_nodes.size());
|
||||
for (size_t i = 0; i < blend_tree_resource->m_nodes.size(); i++) {
|
||||
const AnimNodeResource* node = blend_tree_resource->m_nodes[i];
|
||||
const AnimNodeResource* node_loaded =
|
||||
blend_tree_resource_loaded->m_nodes[i];
|
||||
|
||||
REQUIRE(node->m_name == node_loaded->m_name);
|
||||
REQUIRE(node->m_node_type_name == node_loaded->m_node_type_name);
|
||||
}
|
||||
|
||||
REQUIRE(
|
||||
blend_tree_resource->m_connections.size()
|
||||
== blend_tree_resource_loaded->m_connections.size());
|
||||
for (size_t i = 0; i < blend_tree_resource->m_connections.size(); i++) {
|
||||
const BlendTreeConnectionResource& connection =
|
||||
blend_tree_resource->m_connections[i];
|
||||
const BlendTreeConnectionResource& connection_loaded =
|
||||
blend_tree_resource_loaded->m_connections[i];
|
||||
|
||||
REQUIRE(
|
||||
connection.source_node_index == connection_loaded.source_node_index);
|
||||
REQUIRE(
|
||||
connection.source_socket_name == connection_loaded.source_socket_name);
|
||||
REQUIRE(
|
||||
connection.target_node_index == connection_loaded.target_node_index);
|
||||
REQUIRE(
|
||||
connection.target_socket_name == connection_loaded.target_socket_name);
|
||||
}
|
||||
CheckAnimGraphResourceEqual(graph_resource, graph_resource_loaded);
|
||||
}
|
||||
|
||||
TEST_CASE_METHOD(
|
||||
@@ -558,20 +564,20 @@ TEST_CASE("AnimSamplerSpeedScaleGraph", "[AnimGraphResource]") {
|
||||
blend_tree_resource.InitGraphConnectors();
|
||||
|
||||
// Prepare graph inputs and outputs
|
||||
blend_tree_resource.m_nodes.push_back(AnimNodeResourceFactory("AnimSampler"));
|
||||
size_t walk_node_index = blend_tree_resource.m_nodes.size() - 1;
|
||||
size_t walk_node_index =
|
||||
blend_tree_resource.AddNode(AnimNodeResourceFactory("AnimSampler"));
|
||||
|
||||
blend_tree_resource.m_nodes.push_back(AnimNodeResourceFactory("SpeedScale"));
|
||||
size_t speed_scale_node_index = blend_tree_resource.m_nodes.size() - 1;
|
||||
size_t speed_scale_node_index =
|
||||
blend_tree_resource.AddNode(AnimNodeResourceFactory("SpeedScale"));
|
||||
|
||||
AnimNodeResource* walk_node = blend_tree_resource.m_nodes[walk_node_index];
|
||||
AnimNodeResource* walk_node = blend_tree_resource.GetNode(walk_node_index);
|
||||
walk_node->m_name = "WalkAnim";
|
||||
walk_node->m_socket_accessor->SetPropertyValue(
|
||||
"Filename",
|
||||
std::string("media/Walking-loop.ozz"));
|
||||
|
||||
AnimNodeResource* speed_scale_node =
|
||||
blend_tree_resource.m_nodes[speed_scale_node_index];
|
||||
blend_tree_resource.GetNode(speed_scale_node_index);
|
||||
speed_scale_node->m_name = "SpeedScale";
|
||||
float speed_scale_value = 1.35f;
|
||||
speed_scale_node->m_socket_accessor->SetInputValue(
|
||||
@@ -602,7 +608,7 @@ TEST_CASE("AnimSamplerSpeedScaleGraph", "[AnimGraphResource]") {
|
||||
graph_resource_loaded.m_blend_tree_resource;
|
||||
|
||||
Socket* speed_scale_resource_loaded_input =
|
||||
blend_tree_resource_loaded.m_nodes[speed_scale_node_index]
|
||||
blend_tree_resource_loaded.GetNode(speed_scale_node_index)
|
||||
->m_socket_accessor->GetInputSocket("SpeedScale");
|
||||
REQUIRE(speed_scale_resource_loaded_input != nullptr);
|
||||
|
||||
@@ -628,50 +634,16 @@ TEST_CASE_METHOD(
|
||||
AnimGraphResource graph_resource_loaded;
|
||||
graph_resource_loaded.LoadFromFile("TestGraphBlend2Graph.animgraph.json");
|
||||
|
||||
REQUIRE(
|
||||
graph_resource.m_graph_type_name
|
||||
== graph_resource_loaded.m_graph_type_name);
|
||||
REQUIRE(graph_resource.m_name == graph_resource_loaded.m_name);
|
||||
CheckAnimGraphResourceEqual(graph_resource, graph_resource_loaded);
|
||||
|
||||
BlendTreeResource* blend_tree_resource_loaded =
|
||||
&graph_resource_loaded.m_blend_tree_resource;
|
||||
|
||||
REQUIRE(
|
||||
blend_tree_resource->m_nodes.size()
|
||||
== blend_tree_resource_loaded->m_nodes.size());
|
||||
for (size_t i = 0; i < blend_tree_resource->m_nodes.size(); i++) {
|
||||
const AnimNodeResource* node = blend_tree_resource->m_nodes[i];
|
||||
const AnimNodeResource* node_loaded =
|
||||
blend_tree_resource_loaded->m_nodes[i];
|
||||
|
||||
REQUIRE(node->m_name == node_loaded->m_name);
|
||||
REQUIRE(node->m_node_type_name == node_loaded->m_node_type_name);
|
||||
}
|
||||
|
||||
REQUIRE(
|
||||
blend_tree_resource->m_connections.size()
|
||||
== blend_tree_resource_loaded->m_connections.size());
|
||||
for (size_t i = 0; i < blend_tree_resource->m_connections.size(); i++) {
|
||||
const BlendTreeConnectionResource& connection =
|
||||
blend_tree_resource->m_connections[i];
|
||||
const BlendTreeConnectionResource& connection_loaded =
|
||||
blend_tree_resource_loaded->m_connections[i];
|
||||
|
||||
REQUIRE(
|
||||
connection.source_node_index == connection_loaded.source_node_index);
|
||||
REQUIRE(
|
||||
connection.source_socket_name == connection_loaded.source_socket_name);
|
||||
REQUIRE(
|
||||
connection.target_node_index == connection_loaded.target_node_index);
|
||||
REQUIRE(
|
||||
connection.target_socket_name == connection_loaded.target_socket_name);
|
||||
}
|
||||
|
||||
// Check that the constant weight of the Blend2 node was properly applied when
|
||||
// loading the resource.
|
||||
const NodeDescriptor<Blend2Node>* blend2_node_descriptor_loaded =
|
||||
dynamic_cast<NodeDescriptor<Blend2Node>*>(
|
||||
blend_tree_resource_loaded->m_nodes[blend_node_index]
|
||||
blend_tree_resource_loaded->GetNode(blend_node_index)
|
||||
->m_socket_accessor);
|
||||
|
||||
REQUIRE_THAT(
|
||||
@@ -794,9 +766,8 @@ TEST_CASE("ResourceSaveLoadMathGraphInputs", "[AnimGraphResource]") {
|
||||
blend_tree_resource.InitGraphConnectors();
|
||||
|
||||
// Prepare graph inputs and outputs
|
||||
blend_tree_resource.m_nodes.push_back(
|
||||
size_t float_to_vec3_node_index = blend_tree_resource.AddNode(
|
||||
AnimNodeResourceFactory("MathFloatToVec3Node"));
|
||||
size_t float_to_vec3_node_index = blend_tree_resource.m_nodes.size() - 1;
|
||||
|
||||
AnimNodeResource* graph_output_node =
|
||||
blend_tree_resource.GetGraphOutputNode();
|
||||
@@ -815,7 +786,7 @@ TEST_CASE("ResourceSaveLoadMathGraphInputs", "[AnimGraphResource]") {
|
||||
|
||||
// Prepare graph inputs and outputs
|
||||
AnimNodeResource* float_to_vec3_node_resource =
|
||||
blend_tree_resource.m_nodes[float_to_vec3_node_index];
|
||||
blend_tree_resource.GetNode(float_to_vec3_node_index);
|
||||
|
||||
REQUIRE(blend_tree_resource.ConnectSockets(
|
||||
graph_input_node_resource,
|
||||
@@ -856,9 +827,9 @@ TEST_CASE("ResourceSaveLoadMathGraphInputs", "[AnimGraphResource]") {
|
||||
graph_resource_loaded.m_blend_tree_resource;
|
||||
|
||||
const AnimNodeResource* graph_loaded_output_node =
|
||||
graph_blend_tree_loaded.m_nodes[0];
|
||||
graph_blend_tree_loaded.GetGraphOutputNode();
|
||||
const AnimNodeResource* graph_loaded_input_node =
|
||||
graph_blend_tree_loaded.m_nodes[1];
|
||||
graph_blend_tree_loaded.GetGraphInputNode();
|
||||
|
||||
THEN("Graph inputs and outputs must be in loaded resource as well.") {
|
||||
REQUIRE(
|
||||
@@ -952,11 +923,10 @@ TEST_CASE("SimpleMathEvaluations", "[AnimGraphResource]") {
|
||||
blend_tree_resource.InitGraphConnectors();
|
||||
|
||||
// Prepare graph inputs and outputs
|
||||
blend_tree_resource.m_nodes.push_back(AnimNodeResourceFactory("MathAddNode"));
|
||||
size_t math_add0_node_index = blend_tree_resource.m_nodes.size() - 1;
|
||||
|
||||
blend_tree_resource.m_nodes.push_back(AnimNodeResourceFactory("MathAddNode"));
|
||||
size_t math_add1_node_index = blend_tree_resource.m_nodes.size() - 1;
|
||||
size_t math_add0_node_index =
|
||||
blend_tree_resource.AddNode(AnimNodeResourceFactory("MathAddNode"));
|
||||
size_t math_add1_node_index =
|
||||
blend_tree_resource.AddNode(AnimNodeResourceFactory("MathAddNode"));
|
||||
|
||||
AnimNodeResource* graph_output_node =
|
||||
blend_tree_resource.GetGraphOutputNode();
|
||||
@@ -978,9 +948,9 @@ TEST_CASE("SimpleMathEvaluations", "[AnimGraphResource]") {
|
||||
|
||||
// Prepare graph inputs and outputs
|
||||
AnimNodeResource* math_add0_node =
|
||||
blend_tree_resource.m_nodes[math_add0_node_index];
|
||||
blend_tree_resource.GetNode(math_add0_node_index);
|
||||
AnimNodeResource* math_add1_node =
|
||||
blend_tree_resource.m_nodes[math_add1_node_index];
|
||||
blend_tree_resource.GetNode(math_add1_node_index);
|
||||
|
||||
// direct output
|
||||
REQUIRE(blend_tree_resource.ConnectSockets(
|
||||
@@ -1095,112 +1065,28 @@ TEST_CASE_METHOD(
|
||||
AnimGraphResource parent_graph_resource_loaded;
|
||||
parent_graph_resource_loaded.LoadFromFile("TestGraphEmbeddedBlendTree.json");
|
||||
|
||||
//
|
||||
// Check the loaded parent graph
|
||||
//
|
||||
CHECK(parent_graph_resource.m_name == parent_graph_resource_loaded.m_name);
|
||||
CHECK(
|
||||
parent_graph_resource.m_graph_type_name
|
||||
== parent_graph_resource_loaded.m_graph_type_name);
|
||||
CHECK(
|
||||
parent_graph_resource.m_node_type_name
|
||||
== parent_graph_resource_loaded.m_node_type_name);
|
||||
CheckAnimGraphResourceEqual(
|
||||
parent_graph_resource,
|
||||
parent_graph_resource_loaded);
|
||||
|
||||
const BlendTreeResource& parent_blend_tree_resource_loaded =
|
||||
parent_graph_resource_loaded.m_blend_tree_resource;
|
||||
|
||||
CHECK(
|
||||
parent_blend_tree_resource->m_nodes.size()
|
||||
== parent_blend_tree_resource_loaded.m_nodes.size());
|
||||
for (size_t i = 0; i < parent_blend_tree_resource->m_nodes.size(); i++) {
|
||||
const AnimNodeResource* parent_node =
|
||||
parent_blend_tree_resource->m_nodes[i];
|
||||
const AnimNodeResource* parent_node_loaded =
|
||||
parent_blend_tree_resource_loaded.m_nodes[i];
|
||||
|
||||
CHECK(parent_node->m_name == parent_node_loaded->m_name);
|
||||
CHECK(
|
||||
parent_node->m_node_type_name == parent_node_loaded->m_node_type_name);
|
||||
}
|
||||
|
||||
CHECK(
|
||||
parent_blend_tree_resource->m_connections.size()
|
||||
== parent_blend_tree_resource_loaded.m_connections.size());
|
||||
for (size_t i = 0; i < parent_blend_tree_resource->m_connections.size();
|
||||
i++) {
|
||||
const BlendTreeConnectionResource& parent_connection =
|
||||
parent_blend_tree_resource->m_connections[i];
|
||||
const BlendTreeConnectionResource& parent_connection_loaded =
|
||||
parent_blend_tree_resource_loaded.m_connections[i];
|
||||
|
||||
CHECK(
|
||||
parent_connection.source_node_index
|
||||
== parent_connection_loaded.source_node_index);
|
||||
CHECK(
|
||||
parent_connection.source_socket_name
|
||||
== parent_connection_loaded.source_socket_name);
|
||||
CHECK(
|
||||
parent_connection.target_node_index
|
||||
== parent_connection_loaded.target_node_index);
|
||||
CHECK(
|
||||
parent_connection.target_socket_name
|
||||
== parent_connection_loaded.target_socket_name);
|
||||
}
|
||||
|
||||
//
|
||||
// Check the loaded embedded graph
|
||||
//
|
||||
REQUIRE(
|
||||
parent_blend_tree_resource_loaded.m_nodes[3]->m_node_type_name
|
||||
parent_blend_tree_resource_loaded.GetNode(3)->m_node_type_name
|
||||
== "BlendTree");
|
||||
|
||||
const AnimGraphResource* embedded_graph_loaded =
|
||||
dynamic_cast<AnimGraphResource*>(
|
||||
parent_blend_tree_resource_loaded.m_nodes[3]);
|
||||
const BlendTreeResource& embedded_blend_tree_resource_loaded =
|
||||
embedded_graph_loaded->m_blend_tree_resource;
|
||||
dynamic_cast<const AnimGraphResource*>(
|
||||
parent_blend_tree_resource_loaded.GetNode(3));
|
||||
const BlendTreeResource* embedded_blend_tree_resource_loaded =
|
||||
&embedded_graph_loaded->m_blend_tree_resource;
|
||||
|
||||
CHECK(
|
||||
embedded_blend_tree_resource->m_nodes.size()
|
||||
== embedded_blend_tree_resource_loaded.m_nodes.size());
|
||||
CHECK(
|
||||
embedded_blend_tree_resource->m_connections.size()
|
||||
== embedded_blend_tree_resource_loaded.m_connections.size());
|
||||
|
||||
for (size_t i = 0; i < embedded_blend_tree_resource->m_nodes.size(); i++) {
|
||||
const AnimNodeResource* parent_node =
|
||||
embedded_blend_tree_resource->m_nodes[i];
|
||||
const AnimNodeResource* parent_node_loaded =
|
||||
embedded_blend_tree_resource_loaded.m_nodes[i];
|
||||
|
||||
CHECK(parent_node->m_name == parent_node_loaded->m_name);
|
||||
CHECK(
|
||||
parent_node->m_node_type_name == parent_node_loaded->m_node_type_name);
|
||||
}
|
||||
|
||||
CHECK(
|
||||
embedded_blend_tree_resource->m_connections.size()
|
||||
== embedded_blend_tree_resource_loaded.m_connections.size());
|
||||
for (size_t i = 0; i < embedded_blend_tree_resource->m_connections.size();
|
||||
i++) {
|
||||
const BlendTreeConnectionResource& embedded_connection =
|
||||
embedded_blend_tree_resource->m_connections[i];
|
||||
const BlendTreeConnectionResource& embedded_connection_loaded =
|
||||
embedded_blend_tree_resource_loaded.m_connections[i];
|
||||
|
||||
CHECK(
|
||||
embedded_connection.source_node_index
|
||||
== embedded_connection_loaded.source_node_index);
|
||||
CHECK(
|
||||
embedded_connection.source_socket_name
|
||||
== embedded_connection_loaded.source_socket_name);
|
||||
CHECK(
|
||||
embedded_connection.target_node_index
|
||||
== embedded_connection_loaded.target_node_index);
|
||||
CHECK(
|
||||
embedded_connection.target_socket_name
|
||||
== embedded_connection_loaded.target_socket_name);
|
||||
}
|
||||
CheckBlendTreeResourcesEqual(
|
||||
embedded_blend_tree_resource,
|
||||
embedded_blend_tree_resource_loaded);
|
||||
}
|
||||
|
||||
TEST_CASE_METHOD(
|
||||
|
||||
Reference in New Issue
Block a user