Minor cleanup.

This commit is contained in:
Martin Felis 2025-02-16 12:31:44 +01:00
parent 99d5a5eb0f
commit 4b378adc91
8 changed files with 31 additions and 19 deletions

View File

@ -116,8 +116,6 @@ void AnimGraphBlendTree::CalcSyncTrack(
} }
void AnimGraphBlendTree::UpdateTime(float time_last, float time_now) { void AnimGraphBlendTree::UpdateTime(float time_last, float time_now) {
float dt = time_now - time_last;
const std::vector<AnimGraphConnection>& graph_output_inputs = const std::vector<AnimGraphConnection>& graph_output_inputs =
m_node_input_connections[0]; m_node_input_connections[0];
for (const AnimGraphConnection& graph_output_input : graph_output_inputs) { for (const AnimGraphConnection& graph_output_input : graph_output_inputs) {

View File

@ -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. /** Sets the address that is used for the specified AnimGraph input Socket.
* *
* @tparam T Type of the Socket. * @tparam T Type of the Socket.
@ -207,7 +204,7 @@ struct BlendTreeSocketNode : public AnimNode {};
template <> template <>
struct NodeDescriptor<BlendTreeSocketNode> : public NodeDescriptorBase { struct NodeDescriptor<BlendTreeSocketNode> : public NodeDescriptorBase {
NodeDescriptor(BlendTreeSocketNode* node_) {} explicit NodeDescriptor(BlendTreeSocketNode* node_) {}
}; };
#endif //ANIMTESTBED_ANIMGRAPHBLENDTREE_H #endif //ANIMTESTBED_ANIMGRAPHBLENDTREE_H

View File

@ -422,7 +422,7 @@ struct NodeDescriptorBase {
protected: protected:
Socket* FindSocket(const char* name, std::vector<Socket>& sockets) { Socket* FindSocket(const char* name, std::vector<Socket>& 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) { if (sockets[i].m_name == name) {
return &sockets[i]; return &sockets[i];
} }
@ -433,7 +433,7 @@ struct NodeDescriptorBase {
const Socket* FindSocket(const char* name, const std::vector<Socket>& sockets) const Socket* FindSocket(const char* name, const std::vector<Socket>& sockets)
const { 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) { if (sockets[i].m_name == name) {
return &sockets[i]; return &sockets[i];
} }
@ -443,7 +443,7 @@ struct NodeDescriptorBase {
} }
int FindSocketIndex(const char* name, std::vector<Socket>& sockets) { int FindSocketIndex(const char* name, std::vector<Socket>& 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) { if (sockets[i].m_name == name) {
return i; return i;
} }

View File

@ -12,7 +12,8 @@
#include "ozz/base/log.h" #include "ozz/base/log.h"
AnimNode* AnimNodeFactory(const std::string& name) { AnimNode* AnimNodeFactory(const std::string& name) {
AnimNode* result; AnimNode* result = nullptr;
if (name == "Blend2") { if (name == "Blend2") {
result = new Blend2Node; result = new Blend2Node;
} else if (name == "SpeedScale") { } else if (name == "SpeedScale") {
@ -31,6 +32,8 @@ AnimNode* AnimNodeFactory(const std::string& name) {
result = new MathFloatToVec3Node; result = new MathFloatToVec3Node;
} else if (name == "ConstScalarNode") { } else if (name == "ConstScalarNode") {
result = new ConstScalarNode; result = new ConstScalarNode;
} else {
std::cerr << "Invalid node type: " << name << std::endl;
} }
if (result != nullptr) { if (result != nullptr) {
@ -38,7 +41,6 @@ AnimNode* AnimNodeFactory(const std::string& name) {
return result; return result;
} }
std::cerr << "Invalid node type: " << name << std::endl;
return nullptr; return nullptr;
} }

View File

@ -49,7 +49,7 @@ struct Blend2Node : public AnimNode {
template <> template <>
struct NodeDescriptor<Blend2Node> : public NodeDescriptorBase { struct NodeDescriptor<Blend2Node> : public NodeDescriptorBase {
NodeDescriptor(Blend2Node* node) { explicit NodeDescriptor(Blend2Node* node) {
RegisterInput("Input0", &node->i_input0); RegisterInput("Input0", &node->i_input0);
RegisterInput("Input1", &node->i_input1); RegisterInput("Input1", &node->i_input1);
RegisterInput("Weight", &node->i_blend_weight); RegisterInput("Weight", &node->i_blend_weight);
@ -95,7 +95,7 @@ struct SpeedScaleNode : public AnimNode {
template <> template <>
struct NodeDescriptor<SpeedScaleNode> : public NodeDescriptorBase { struct NodeDescriptor<SpeedScaleNode> : public NodeDescriptorBase {
NodeDescriptor(SpeedScaleNode* node) { explicit NodeDescriptor(SpeedScaleNode* node) {
RegisterInput( RegisterInput(
"SpeedScale", "SpeedScale",
&node->i_speed_scale, &node->i_speed_scale,
@ -127,7 +127,7 @@ struct AnimSamplerNode : public AnimNode {
template <> template <>
struct NodeDescriptor<AnimSamplerNode> : public NodeDescriptorBase { struct NodeDescriptor<AnimSamplerNode> : public NodeDescriptorBase {
NodeDescriptor(AnimSamplerNode* node) { explicit NodeDescriptor(AnimSamplerNode* node) {
RegisterOutput("Output", &node->o_output); RegisterOutput("Output", &node->o_output);
RegisterProperty("Filename", &node->m_filename); RegisterProperty("Filename", &node->m_filename);
@ -150,7 +150,7 @@ struct LockTranslationNode : public AnimNode {
template <> template <>
struct NodeDescriptor<LockTranslationNode> : public NodeDescriptorBase { struct NodeDescriptor<LockTranslationNode> : public NodeDescriptorBase {
NodeDescriptor(LockTranslationNode* node) { explicit NodeDescriptor(LockTranslationNode* node) {
RegisterInput("Input", &node->i_input); RegisterInput("Input", &node->i_input);
RegisterOutput("Output", &node->o_output); RegisterOutput("Output", &node->o_output);
@ -173,7 +173,7 @@ struct ConstScalarNode : public AnimNode {
template <> template <>
struct NodeDescriptor<ConstScalarNode> : public NodeDescriptorBase { struct NodeDescriptor<ConstScalarNode> : public NodeDescriptorBase {
NodeDescriptor(ConstScalarNode* node) { explicit NodeDescriptor(ConstScalarNode* node) {
RegisterOutput("ScalarOutput", &node->o_value); RegisterOutput("ScalarOutput", &node->o_value);
RegisterProperty("ScalarValue", &node->value); RegisterProperty("ScalarValue", &node->value);
} }
@ -197,7 +197,7 @@ struct MathAddNode : public AnimNode {
template <> template <>
struct NodeDescriptor<MathAddNode> : public NodeDescriptorBase { struct NodeDescriptor<MathAddNode> : public NodeDescriptorBase {
NodeDescriptor(MathAddNode* node) { explicit NodeDescriptor(MathAddNode* node) {
RegisterInput("Input0", &node->i_input0); RegisterInput("Input0", &node->i_input0);
RegisterInput("Input1", &node->i_input1); RegisterInput("Input1", &node->i_input1);
RegisterOutput("Output", &node->o_output); RegisterOutput("Output", &node->o_output);
@ -226,7 +226,7 @@ struct MathFloatToVec3Node : public AnimNode {
template <> template <>
struct NodeDescriptor<MathFloatToVec3Node> : public NodeDescriptorBase { struct NodeDescriptor<MathFloatToVec3Node> : public NodeDescriptorBase {
NodeDescriptor(MathFloatToVec3Node* node) { explicit NodeDescriptor(MathFloatToVec3Node* node) {
RegisterInput("Input0", &node->i_input0); RegisterInput("Input0", &node->i_input0);
RegisterInput("Input1", &node->i_input1); RegisterInput("Input1", &node->i_input1);
RegisterInput("Input2", &node->i_input2); RegisterInput("Input2", &node->i_input2);

View File

@ -182,7 +182,6 @@ AnimNodeResource* sAnimGraphNodeFromJson(
if (node_type == "BlendTree") { if (node_type == "BlendTree") {
AnimGraphResource* result = new AnimGraphResource(); AnimGraphResource* result = new AnimGraphResource();
result->m_socket_accessor = new NodeDescriptorBase;
sAnimGraphResourceBlendTreeFromJson(json_node, result); sAnimGraphResourceBlendTreeFromJson(json_node, result);
return result; return result;
} }
@ -312,6 +311,9 @@ static bool sAnimGraphResourceBlendTreeFromJson(
result_graph_resource->m_name = json_data["name"]; result_graph_resource->m_name = json_data["name"];
result_graph_resource->m_position[0] = json_data["position"][0]; result_graph_resource->m_position[0] = json_data["position"][0];
result_graph_resource->m_position[1] = json_data["position"][1]; 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 // Load nodes
for (size_t i = 0, n = json_data["nodes"].size(); i < n; i++) { for (size_t i = 0, n = json_data["nodes"].size(); i < n; i++) {

View File

@ -59,6 +59,7 @@ struct BlendTreeResource {
for (AnimNodeResource* node_resource : m_nodes) { for (AnimNodeResource* node_resource : m_nodes) {
delete node_resource->m_anim_node; delete node_resource->m_anim_node;
delete node_resource->m_socket_accessor; delete node_resource->m_socket_accessor;
node_resource->m_socket_accessor = nullptr;
delete node_resource; delete node_resource;
} }
@ -263,6 +264,15 @@ struct StateMachineResource {
}; };
struct AnimGraphResource : AnimNodeResource { 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; std::string m_graph_type_name;
BlendTreeResource m_blend_tree_resource; BlendTreeResource m_blend_tree_resource;
@ -367,6 +377,7 @@ static inline AnimNodeResource* AnimNodeResourceFactory(
if (node_type_name == "BlendTree") { if (node_type_name == "BlendTree") {
AnimGraphResource* blend_tree_resource = new AnimGraphResource(); AnimGraphResource* blend_tree_resource = new AnimGraphResource();
blend_tree_resource->m_graph_type_name = "BlendTree";
blend_tree_resource->m_blend_tree_resource.InitGraphConnectors(); blend_tree_resource->m_blend_tree_resource.InitGraphConnectors();
result = blend_tree_resource; result = blend_tree_resource;
} else { } else {

View File

@ -1351,4 +1351,6 @@ TEST_CASE(
CHECK(blend_tree_graph_resource->RegisterBlendTreeOutputSocket(socket)); CHECK(blend_tree_graph_resource->RegisterBlendTreeOutputSocket(socket));
CHECK(!blend_tree_graph_resource->RegisterBlendTreeOutputSocket(socket)); CHECK(!blend_tree_graph_resource->RegisterBlendTreeOutputSocket(socket));
delete blend_tree_anim_node_resource;
} }