From 4b378adc91d302a5a35efba217c8c20cf4fbea6e Mon Sep 17 00:00:00 2001 From: Martin Felis Date: Sun, 16 Feb 2025 12:31:44 +0100 Subject: [PATCH] Minor cleanup. --- src/AnimGraph/AnimGraphBlendTree.cc | 2 -- src/AnimGraph/AnimGraphBlendTree.h | 5 +---- src/AnimGraph/AnimGraphData.h | 6 +++--- src/AnimGraph/AnimGraphNodes.cc | 6 ++++-- src/AnimGraph/AnimGraphNodes.h | 14 +++++++------- src/AnimGraph/AnimGraphResource.cc | 4 +++- src/AnimGraph/AnimGraphResource.h | 11 +++++++++++ tests/AnimGraphResourceTests.cc | 2 ++ 8 files changed, 31 insertions(+), 19 deletions(-) diff --git a/src/AnimGraph/AnimGraphBlendTree.cc b/src/AnimGraph/AnimGraphBlendTree.cc index dfc4395..35133b0 100644 --- a/src/AnimGraph/AnimGraphBlendTree.cc +++ b/src/AnimGraph/AnimGraphBlendTree.cc @@ -116,8 +116,6 @@ void AnimGraphBlendTree::CalcSyncTrack( } void AnimGraphBlendTree::UpdateTime(float time_last, float time_now) { - float dt = time_now - time_last; - const std::vector& graph_output_inputs = m_node_input_connections[0]; for (const AnimGraphConnection& graph_output_input : graph_output_inputs) { diff --git a/src/AnimGraph/AnimGraphBlendTree.h b/src/AnimGraph/AnimGraphBlendTree.h index b32fef7..047b3bc 100644 --- a/src/AnimGraph/AnimGraphBlendTree.h +++ b/src/AnimGraph/AnimGraphBlendTree.h @@ -93,9 +93,6 @@ struct AnimGraphBlendTree : public AnimNode { } } - const Socket* GetInputSocket(const std::string& name) const; - const Socket* GetOutputSocket(const std::string& name) const; - /** Sets the address that is used for the specified AnimGraph input Socket. * * @tparam T Type of the Socket. @@ -207,7 +204,7 @@ struct BlendTreeSocketNode : public AnimNode {}; template <> struct NodeDescriptor : public NodeDescriptorBase { - NodeDescriptor(BlendTreeSocketNode* node_) {} + explicit NodeDescriptor(BlendTreeSocketNode* node_) {} }; #endif //ANIMTESTBED_ANIMGRAPHBLENDTREE_H diff --git a/src/AnimGraph/AnimGraphData.h b/src/AnimGraph/AnimGraphData.h index 323a091..cbf0385 100644 --- a/src/AnimGraph/AnimGraphData.h +++ b/src/AnimGraph/AnimGraphData.h @@ -422,7 +422,7 @@ struct NodeDescriptorBase { protected: Socket* FindSocket(const char* name, std::vector& sockets) { - for (int i = 0, n = sockets.size(); i < n; i++) { + for (size_t i = 0, n = sockets.size(); i < n; i++) { if (sockets[i].m_name == name) { return &sockets[i]; } @@ -433,7 +433,7 @@ struct NodeDescriptorBase { const Socket* FindSocket(const char* name, const std::vector& sockets) const { - for (int i = 0, n = sockets.size(); i < n; i++) { + for (size_t i = 0, n = sockets.size(); i < n; i++) { if (sockets[i].m_name == name) { return &sockets[i]; } @@ -443,7 +443,7 @@ struct NodeDescriptorBase { } int FindSocketIndex(const char* name, std::vector& sockets) { - for (int i = 0, n = sockets.size(); i < n; i++) { + for (size_t i = 0, n = sockets.size(); i < n; i++) { if (sockets[i].m_name == name) { return i; } diff --git a/src/AnimGraph/AnimGraphNodes.cc b/src/AnimGraph/AnimGraphNodes.cc index 4828d0b..4d4f321 100644 --- a/src/AnimGraph/AnimGraphNodes.cc +++ b/src/AnimGraph/AnimGraphNodes.cc @@ -12,7 +12,8 @@ #include "ozz/base/log.h" AnimNode* AnimNodeFactory(const std::string& name) { - AnimNode* result; + AnimNode* result = nullptr; + if (name == "Blend2") { result = new Blend2Node; } else if (name == "SpeedScale") { @@ -31,6 +32,8 @@ AnimNode* AnimNodeFactory(const std::string& name) { result = new MathFloatToVec3Node; } else if (name == "ConstScalarNode") { result = new ConstScalarNode; + } else { + std::cerr << "Invalid node type: " << name << std::endl; } if (result != nullptr) { @@ -38,7 +41,6 @@ AnimNode* AnimNodeFactory(const std::string& name) { return result; } - std::cerr << "Invalid node type: " << name << std::endl; return nullptr; } diff --git a/src/AnimGraph/AnimGraphNodes.h b/src/AnimGraph/AnimGraphNodes.h index 54cc3cd..0f804b7 100644 --- a/src/AnimGraph/AnimGraphNodes.h +++ b/src/AnimGraph/AnimGraphNodes.h @@ -49,7 +49,7 @@ struct Blend2Node : public AnimNode { template <> struct NodeDescriptor : public NodeDescriptorBase { - NodeDescriptor(Blend2Node* node) { + explicit NodeDescriptor(Blend2Node* node) { RegisterInput("Input0", &node->i_input0); RegisterInput("Input1", &node->i_input1); RegisterInput("Weight", &node->i_blend_weight); @@ -95,7 +95,7 @@ struct SpeedScaleNode : public AnimNode { template <> struct NodeDescriptor : public NodeDescriptorBase { - NodeDescriptor(SpeedScaleNode* node) { + explicit NodeDescriptor(SpeedScaleNode* node) { RegisterInput( "SpeedScale", &node->i_speed_scale, @@ -127,7 +127,7 @@ struct AnimSamplerNode : public AnimNode { template <> struct NodeDescriptor : public NodeDescriptorBase { - NodeDescriptor(AnimSamplerNode* node) { + explicit NodeDescriptor(AnimSamplerNode* node) { RegisterOutput("Output", &node->o_output); RegisterProperty("Filename", &node->m_filename); @@ -150,7 +150,7 @@ struct LockTranslationNode : public AnimNode { template <> struct NodeDescriptor : public NodeDescriptorBase { - NodeDescriptor(LockTranslationNode* node) { + explicit NodeDescriptor(LockTranslationNode* node) { RegisterInput("Input", &node->i_input); RegisterOutput("Output", &node->o_output); @@ -173,7 +173,7 @@ struct ConstScalarNode : public AnimNode { template <> struct NodeDescriptor : public NodeDescriptorBase { - NodeDescriptor(ConstScalarNode* node) { + explicit NodeDescriptor(ConstScalarNode* node) { RegisterOutput("ScalarOutput", &node->o_value); RegisterProperty("ScalarValue", &node->value); } @@ -197,7 +197,7 @@ struct MathAddNode : public AnimNode { template <> struct NodeDescriptor : public NodeDescriptorBase { - NodeDescriptor(MathAddNode* node) { + explicit NodeDescriptor(MathAddNode* node) { RegisterInput("Input0", &node->i_input0); RegisterInput("Input1", &node->i_input1); RegisterOutput("Output", &node->o_output); @@ -226,7 +226,7 @@ struct MathFloatToVec3Node : public AnimNode { template <> struct NodeDescriptor : public NodeDescriptorBase { - NodeDescriptor(MathFloatToVec3Node* node) { + explicit NodeDescriptor(MathFloatToVec3Node* node) { RegisterInput("Input0", &node->i_input0); RegisterInput("Input1", &node->i_input1); RegisterInput("Input2", &node->i_input2); diff --git a/src/AnimGraph/AnimGraphResource.cc b/src/AnimGraph/AnimGraphResource.cc index 9b5970b..1949745 100644 --- a/src/AnimGraph/AnimGraphResource.cc +++ b/src/AnimGraph/AnimGraphResource.cc @@ -182,7 +182,6 @@ AnimNodeResource* sAnimGraphNodeFromJson( if (node_type == "BlendTree") { AnimGraphResource* result = new AnimGraphResource(); - result->m_socket_accessor = new NodeDescriptorBase; sAnimGraphResourceBlendTreeFromJson(json_node, result); return result; } @@ -312,6 +311,9 @@ static bool sAnimGraphResourceBlendTreeFromJson( result_graph_resource->m_name = json_data["name"]; result_graph_resource->m_position[0] = json_data["position"][0]; result_graph_resource->m_position[1] = json_data["position"][1]; + assert(result_graph_resource->m_socket_accessor == nullptr); + result_graph_resource->m_socket_accessor = + AnimNodeDescriptorFactory("BlendTree", nullptr); // Load nodes for (size_t i = 0, n = json_data["nodes"].size(); i < n; i++) { diff --git a/src/AnimGraph/AnimGraphResource.h b/src/AnimGraph/AnimGraphResource.h index 9f801bf..d6bddf2 100644 --- a/src/AnimGraph/AnimGraphResource.h +++ b/src/AnimGraph/AnimGraphResource.h @@ -59,6 +59,7 @@ struct BlendTreeResource { for (AnimNodeResource* node_resource : m_nodes) { delete node_resource->m_anim_node; delete node_resource->m_socket_accessor; + node_resource->m_socket_accessor = nullptr; delete node_resource; } @@ -263,6 +264,15 @@ struct StateMachineResource { }; struct AnimGraphResource : AnimNodeResource { + virtual ~AnimGraphResource() { + Clear(); + + if (m_socket_accessor != nullptr) { + delete m_socket_accessor; + m_socket_accessor = nullptr; + } + }; + std::string m_graph_type_name; BlendTreeResource m_blend_tree_resource; @@ -367,6 +377,7 @@ static inline AnimNodeResource* AnimNodeResourceFactory( if (node_type_name == "BlendTree") { AnimGraphResource* blend_tree_resource = new AnimGraphResource(); + blend_tree_resource->m_graph_type_name = "BlendTree"; blend_tree_resource->m_blend_tree_resource.InitGraphConnectors(); result = blend_tree_resource; } else { diff --git a/tests/AnimGraphResourceTests.cc b/tests/AnimGraphResourceTests.cc index e79b192..e5822e6 100644 --- a/tests/AnimGraphResourceTests.cc +++ b/tests/AnimGraphResourceTests.cc @@ -1351,4 +1351,6 @@ TEST_CASE( CHECK(blend_tree_graph_resource->RegisterBlendTreeOutputSocket(socket)); CHECK(!blend_tree_graph_resource->RegisterBlendTreeOutputSocket(socket)); + + delete blend_tree_anim_node_resource; } \ No newline at end of file