fix:fix a bug of scene object view

main
taoria 3 years ago
parent 34815e6634
commit 5659d24d33
  1. 22
      TNode/TNodeCore/Runtime/Components/RuntimeGraph.cs
  2. 4
      TNode/TNodeGraphViewImpl/Editor/NodeGraphView/DataGraphView.cs
  3. 8
      TilemapGenerator.meta

@ -196,6 +196,10 @@ namespace TNodeCore.Runtime.Components{
ModifyOrCreateInNode(linkData); ModifyOrCreateInNode(linkData);
ModifyOrCreateOutNode(linkData); ModifyOrCreateOutNode(linkData);
} }
//iterate nodes and create runtime nodes
foreach (var nodeData in graphData.NodeDictionary.Values){
CreateRuntimeNodeIfNone(nodeData);
}
var nodeList = RuntimeNodes.Values; var nodeList = RuntimeNodes.Values;
_graphTool = new GraphTool(nodeList.ToList(),RuntimeNodes,this); _graphTool = new GraphTool(nodeList.ToList(),RuntimeNodes,this);
var sceneNodes = RuntimeNodes.Values.Where(x => x.NodeData is SceneNodeData).Select(x => x.NodeData as SceneNodeData); 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; _build = true;
} }
private void CreateRuntimeNodeIfNone(NodeData nodeData){
if (RuntimeNodes.ContainsKey(nodeData.id)) return;
var runtimeNode = new RuntimeNode(nodeData);
RuntimeNodes.Add(nodeData.id,runtimeNode);
}
/// <summary> /// <summary>
/// Cast the node data to a runtime node /// Cast the node data to a runtime node
/// </summary> /// </summary>
@ -227,6 +237,8 @@ namespace TNodeCore.Runtime.Components{
/// <param name="id"></param> /// <param name="id"></param>
/// <returns></returns> /// <returns></returns>
public RuntimeNode Get(string id){ public RuntimeNode Get(string id){
if(!_build)
Build();
if (RuntimeNodes.ContainsKey(id)){ if (RuntimeNodes.ContainsKey(id)){
return RuntimeNodes[id]; return RuntimeNodes[id];
} }
@ -266,13 +278,11 @@ namespace TNodeCore.Runtime.Components{
public void BuildSceneNode(){ public void BuildSceneNode(){
var fetchedSceneNode = graphData.NodeDictionary.Values.Where(x => x is SceneNodeData and not BlackboardDragNodeData); var fetchedSceneNode = graphData.NodeDictionary.Values.Where(x => x is SceneNodeData and not BlackboardDragNodeData);
var scenePersistent = transform.Find("PersistentData").GetComponent<SceneDataPersistent>();
foreach (var nodeData in fetchedSceneNode){ foreach (var nodeData in fetchedSceneNode){
if (transform.Find(nodeData.id.GetHashCode().ToString())){ if (scenePersistent.SceneNodeDataDictionary.ContainsKey(nodeData.id)){
var scenePersistent = transform.Find("PersistentData").GetComponent<SceneDataPersistent>(); var sceneNodeData = scenePersistent.SceneNodeDataDictionary[nodeData.id];
if (scenePersistent.SceneNodeDataDictionary.ContainsKey(nodeData.id)){ RuntimeNodes[nodeData.id].NodeData = sceneNodeData;
var sceneNodeData = scenePersistent.SceneNodeDataDictionary[nodeData.id];
RuntimeNodes[nodeData.id].NodeData = sceneNodeData;
}
} }
else if (nodeData.Clone() is SceneNodeData clonedNodeData){ else if (nodeData.Clone() is SceneNodeData clonedNodeData){
clonedNodeData.BlackboardData = runtimeBlackboardData; clonedNodeData.BlackboardData = runtimeBlackboardData;

@ -281,10 +281,12 @@ namespace TNode.TNodeGraphViewImpl.Editor.NodeGraphView{
continue; continue;
//Get the derived type of NodeAttribute View from the node type //Get the derived type of NodeAttribute View from the node type
if (dataNode is SceneNodeData runtimeNodeData){ if (dataNode is SceneNodeData runtimeNodeData){
if (runtimeNodeData is not BlackboardDragNodeData){ if (runtimeNodeData is BlackboardDragNodeData){
runtimeNodeData.BlackboardData = GetBlackboardData(); runtimeNodeData.BlackboardData = GetBlackboardData();
AddPersistentNode(runtimeNodeData);
} }
else{ else{
var node = _runtimeGraph.Get(runtimeNodeData.id).NodeData as SceneNodeData; var node = _runtimeGraph.Get(runtimeNodeData.id).NodeData as SceneNodeData;
AddPersistentNode(node); AddPersistentNode(node);
} }

@ -0,0 +1,8 @@
fileFormatVersion: 2
guid: cf0168c8ec1f9304c9872577b1e6abdf
folderAsset: yes
DefaultImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:
Loading…
Cancel
Save