Fixed building of editor app, though crashes everywhere.

This commit is contained in:
Martin Felis
2024-04-24 21:58:47 +02:00
parent c267276be3
commit 3fb2995b02
2 changed files with 125 additions and 85 deletions
+55 -40
View File
@@ -61,10 +61,10 @@ void RemoveBlendTreeConnectionsForSocket(
BlendTreeResource& blend_tree_resource,
AnimNodeResource* node_resource,
Socket& socket) {
std::vector<BlendTreeConnectionResource>::iterator iter =
blend_tree_resource.m_connections.begin();
std::vector<BlendTreeConnectionResource>::const_iterator iter =
blend_tree_resource.GetConnections().begin();
while (iter != blend_tree_resource.m_connections.end()) {
while (iter != blend_tree_resource.GetConnections().end()) {
// TODO adjust for refactor
assert(false);
@@ -299,11 +299,11 @@ void AnimGraphEditorUpdate(ax::NodeEditor::EditorContext* context) {
#if 1
for (size_t node_id = 0,
n = sGraphGresource.m_blend_tree_resource.m_nodes.size();
n = sGraphGresource.m_blend_tree_resource.GetNumNodes();
node_id < n;
node_id++) {
AnimNodeResource* node_resource =
sGraphGresource.m_blend_tree_resource.m_nodes[node_id];
sGraphGresource.m_blend_tree_resource.GetNode(node_id);
if (node_id == 0 || node_id == 1) {
// continue;
@@ -346,31 +346,31 @@ void AnimGraphEditorUpdate(ax::NodeEditor::EditorContext* context) {
int link_id = 0;
for (size_t connection_id = 0,
n = sGraphGresource.m_blend_tree_resource.m_connections.size();
n = sGraphGresource.m_blend_tree_resource.GetNumConnections();
connection_id < n;
connection_id++) {
const BlendTreeConnectionResource& connection_resource =
sGraphGresource.m_blend_tree_resource.m_connections[connection_id];
const BlendTreeConnectionResource* connection_resource =
sGraphGresource.m_blend_tree_resource.GetConnection(connection_id);
const AnimNodeResource* source_node_resource =
sGraphGresource.m_blend_tree_resource
.m_nodes[connection_resource.source_node_index];
sGraphGresource.m_blend_tree_resource.GetNode(
connection_resource->source_node_index);
int source_socket_index =
source_node_resource->m_socket_accessor->GetOutputIndex(
connection_resource.source_socket_name.c_str());
connection_resource->source_socket_name.c_str());
const AnimNodeResource* target_node_resource =
sGraphGresource.m_blend_tree_resource
.m_nodes[connection_resource.target_node_index];
sGraphGresource.m_blend_tree_resource.GetNode(
connection_resource->target_node_index);
int target_socket_index =
target_node_resource->m_socket_accessor->GetInputIndex(
connection_resource.target_socket_name.c_str());
connection_resource->target_socket_name.c_str());
int source_socket_id = GetNodeOutputSocketId(
static_cast<int>(connection_resource.source_node_index),
static_cast<int>(connection_resource->source_node_index),
source_socket_index);
int target_socket_id = GetNodeInputSocketId(
static_cast<int>(connection_resource.target_node_index),
static_cast<int>(connection_resource->target_node_index),
target_socket_index);
ax::NodeEditor::Link(link_id++, source_socket_id, target_socket_id);
@@ -407,11 +407,11 @@ void LegacyAnimGraphEditorUpdate() {
if (ImGui::Button("Load")) {
sGraphGresource.LoadFromFile("editor_graph.json");
for (size_t i = 0, n = sGraphGresource.m_blend_tree_resource.m_nodes.size();
for (size_t i = 0, n = sGraphGresource.m_blend_tree_resource.GetNumNodes();
i < n;
i++) {
const AnimNodeResource* node_resource =
sGraphGresource.m_blend_tree_resource.m_nodes[i];
sGraphGresource.m_blend_tree_resource.GetNode(i);
ImNodes::SetNodeGridSpacePos(
i,
ImVec2(node_resource->m_position[0], node_resource->m_position[1]));
@@ -485,9 +485,9 @@ void LegacyAnimGraphEditorUpdate() {
if (node_type_name != "") {
AnimNodeResource* node_resource =
AnimNodeResourceFactory(node_type_name);
size_t node_id = sGraphGresource.m_blend_tree_resource.m_nodes.size();
size_t node_id = sGraphGresource.m_blend_tree_resource.GetNumNodes();
ImNodes::SetNodeScreenSpacePos(node_id, ImGui::GetMousePos());
sGraphGresource.m_blend_tree_resource.m_nodes.push_back(node_resource);
sGraphGresource.m_blend_tree_resource.AddNode(node_resource);
}
ImGui::EndPopup();
@@ -496,11 +496,11 @@ void LegacyAnimGraphEditorUpdate() {
ImGui::PopStyleVar(ImGuiStyleVar_WindowPadding);
}
for (size_t i = 0, n = sGraphGresource.m_blend_tree_resource.m_nodes.size();
for (size_t i = 0, n = sGraphGresource.m_blend_tree_resource.GetNumNodes();
i < n;
i++) {
AnimNodeResource* node_resource =
sGraphGresource.m_blend_tree_resource.m_nodes[i];
sGraphGresource.m_blend_tree_resource.GetNode(i);
ImNodes::BeginNode(i);
ImGui::PushItemWidth(110.0f);
@@ -624,30 +624,30 @@ void LegacyAnimGraphEditorUpdate() {
}
for (size_t i = 0,
n = sGraphGresource.m_blend_tree_resource.m_connections.size();
n = sGraphGresource.m_blend_tree_resource.GetNumConnections();
i < n;
i++) {
const BlendTreeConnectionResource& connection =
sGraphGresource.m_blend_tree_resource.m_connections[i];
const BlendTreeConnectionResource* connection =
sGraphGresource.m_blend_tree_resource.GetConnection(i);
int start_attr, end_attr;
const AnimNodeResource* source_node =
sGraphGresource.m_blend_tree_resource
.m_nodes[connection.source_node_index];
sGraphGresource.m_blend_tree_resource.GetNode(
connection->source_node_index);
int source_socket_index = source_node->m_socket_accessor->GetOutputIndex(
connection.source_socket_name.c_str());
connection->source_socket_name.c_str());
const AnimNodeResource* target_node =
sGraphGresource.m_blend_tree_resource
.m_nodes[connection.target_node_index];
sGraphGresource.m_blend_tree_resource.GetNode(
connection->target_node_index);
int target_socket_index = target_node->m_socket_accessor->GetInputIndex(
connection.target_socket_name.c_str());
connection->target_socket_name.c_str());
start_attr = GenerateOutputAttributeId(
connection.source_node_index,
connection->source_node_index,
source_socket_index);
end_attr = GenerateInputAttributeId(
connection.target_node_index,
connection->target_node_index,
target_socket_index);
ImNodes::Link(i, start_attr, end_attr);
@@ -672,18 +672,22 @@ void LegacyAnimGraphEditorUpdate() {
BlendTreeConnectionResource connection;
connection.source_node_index = node_start_id;
const AnimNodeResource* source_node =
sGraphGresource.m_blend_tree_resource.m_nodes[node_start_id];
sGraphGresource.m_blend_tree_resource.GetNode(node_start_id);
connection.source_socket_name =
source_node->m_socket_accessor->m_outputs[node_start_output_index]
.m_name;
connection.target_node_index = node_end_id;
const AnimNodeResource* target_node =
sGraphGresource.m_blend_tree_resource.m_nodes[node_end_id];
sGraphGresource.m_blend_tree_resource.GetNode(node_end_id);
connection.target_socket_name =
target_node->m_socket_accessor->m_inputs[node_end_input_index].m_name;
sGraphGresource.m_blend_tree_resource.m_connections.push_back(connection);
sGraphGresource.m_blend_tree_resource.ConnectSockets(
source_node,
connection.source_socket_name,
target_node,
connection.target_socket_name);
}
if (ImGui::IsKeyPressed(ImGuiKey_Delete, false)) {
@@ -693,8 +697,19 @@ void LegacyAnimGraphEditorUpdate() {
// Handle link detachements.
int link_id = 0;
if (ImNodes::IsLinkDestroyed(&link_id)) {
sGraphGresource.m_blend_tree_resource.m_connections.erase(
sGraphGresource.m_blend_tree_resource.m_connections.begin() + link_id);
BlendTreeConnectionResource* connection =
sGraphGresource.m_blend_tree_resource.GetConnection(link_id);
AnimNodeResource* source_node =
sGraphGresource.m_blend_tree_resource.GetNode(
connection->source_node_index);
AnimNodeResource* target_node =
sGraphGresource.m_blend_tree_resource.GetNode(
connection->target_node_index);
sGraphGresource.m_blend_tree_resource.DisconnectSockets(
source_node,
connection->source_socket_name,
target_node,
connection->target_socket_name);
}
int selected_nodes[ImNodes::NumSelectedNodes()];
@@ -707,9 +722,9 @@ void LegacyAnimGraphEditorUpdate() {
if (ImNodes::NumSelectedNodes() == 1) {
if (selected_nodes[0]
< sGraphGresource.m_blend_tree_resource.m_nodes.size()) {
< sGraphGresource.m_blend_tree_resource.GetNumNodes()) {
AnimNodeResource* selected_node =
sGraphGresource.m_blend_tree_resource.m_nodes[selected_nodes[0]];
sGraphGresource.m_blend_tree_resource.GetNode(selected_nodes[0]);
AnimGraphEditorRenderSidebar(
sGraphGresource.m_blend_tree_resource,
selected_node);