From 5659d24d33c8127bab7c8ad1d8c3a880cd293ed0 Mon Sep 17 00:00:00 2001
From: taoria <445625470@qq.com>
Date: Tue, 2 Aug 2022 12:20:02 +0800
Subject: [PATCH] fix:fix a bug of scene object view
---
.../Runtime/Components/RuntimeGraph.cs | 22 ++++++++++++++-----
.../Editor/NodeGraphView/DataGraphView.cs | 4 +++-
TilemapGenerator.meta | 8 +++++++
3 files changed, 27 insertions(+), 7 deletions(-)
create mode 100644 TilemapGenerator.meta
diff --git a/TNode/TNodeCore/Runtime/Components/RuntimeGraph.cs b/TNode/TNodeCore/Runtime/Components/RuntimeGraph.cs
index 2363561..64fc549 100644
--- a/TNode/TNodeCore/Runtime/Components/RuntimeGraph.cs
+++ b/TNode/TNodeCore/Runtime/Components/RuntimeGraph.cs
@@ -196,6 +196,10 @@ namespace TNodeCore.Runtime.Components{
ModifyOrCreateInNode(linkData);
ModifyOrCreateOutNode(linkData);
}
+ //iterate nodes and create runtime nodes
+ foreach (var nodeData in graphData.NodeDictionary.Values){
+ CreateRuntimeNodeIfNone(nodeData);
+ }
var nodeList = RuntimeNodes.Values;
_graphTool = new GraphTool(nodeList.ToList(),RuntimeNodes,this);
var sceneNodes = RuntimeNodes.Values.Where(x => x.NodeData is SceneNodeData).Select(x => x.NodeData as SceneNodeData);
@@ -208,6 +212,12 @@ namespace TNodeCore.Runtime.Components{
_build = true;
}
+ private void CreateRuntimeNodeIfNone(NodeData nodeData){
+ if (RuntimeNodes.ContainsKey(nodeData.id)) return;
+ var runtimeNode = new RuntimeNode(nodeData);
+ RuntimeNodes.Add(nodeData.id,runtimeNode);
+ }
+
///
/// Cast the node data to a runtime node
///
@@ -227,6 +237,8 @@ namespace TNodeCore.Runtime.Components{
///
///
public RuntimeNode Get(string id){
+ if(!_build)
+ Build();
if (RuntimeNodes.ContainsKey(id)){
return RuntimeNodes[id];
}
@@ -266,13 +278,11 @@ namespace TNodeCore.Runtime.Components{
public void BuildSceneNode(){
var fetchedSceneNode = graphData.NodeDictionary.Values.Where(x => x is SceneNodeData and not BlackboardDragNodeData);
+ var scenePersistent = transform.Find("PersistentData").GetComponent();
foreach (var nodeData in fetchedSceneNode){
- if (transform.Find(nodeData.id.GetHashCode().ToString())){
- var scenePersistent = transform.Find("PersistentData").GetComponent();
- if (scenePersistent.SceneNodeDataDictionary.ContainsKey(nodeData.id)){
- var sceneNodeData = scenePersistent.SceneNodeDataDictionary[nodeData.id];
- RuntimeNodes[nodeData.id].NodeData = sceneNodeData;
- }
+ if (scenePersistent.SceneNodeDataDictionary.ContainsKey(nodeData.id)){
+ var sceneNodeData = scenePersistent.SceneNodeDataDictionary[nodeData.id];
+ RuntimeNodes[nodeData.id].NodeData = sceneNodeData;
}
else if (nodeData.Clone() is SceneNodeData clonedNodeData){
clonedNodeData.BlackboardData = runtimeBlackboardData;
diff --git a/TNode/TNodeGraphViewImpl/Editor/NodeGraphView/DataGraphView.cs b/TNode/TNodeGraphViewImpl/Editor/NodeGraphView/DataGraphView.cs
index 6eb4104..7aabeb9 100644
--- a/TNode/TNodeGraphViewImpl/Editor/NodeGraphView/DataGraphView.cs
+++ b/TNode/TNodeGraphViewImpl/Editor/NodeGraphView/DataGraphView.cs
@@ -281,10 +281,12 @@ namespace TNode.TNodeGraphViewImpl.Editor.NodeGraphView{
continue;
//Get the derived type of NodeAttribute View from the node type
if (dataNode is SceneNodeData runtimeNodeData){
- if (runtimeNodeData is not BlackboardDragNodeData){
+ if (runtimeNodeData is BlackboardDragNodeData){
runtimeNodeData.BlackboardData = GetBlackboardData();
+ AddPersistentNode(runtimeNodeData);
}
else{
+
var node = _runtimeGraph.Get(runtimeNodeData.id).NodeData as SceneNodeData;
AddPersistentNode(node);
}
diff --git a/TilemapGenerator.meta b/TilemapGenerator.meta
new file mode 100644
index 0000000..fb32c7a
--- /dev/null
+++ b/TilemapGenerator.meta
@@ -0,0 +1,8 @@
+fileFormatVersion: 2
+guid: cf0168c8ec1f9304c9872577b1e6abdf
+folderAsset: yes
+DefaultImporter:
+ externalObjects: {}
+ userData:
+ assetBundleName:
+ assetBundleVariant: