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);
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);
}
/// <summary>
/// Cast the node data to a runtime node
/// </summary>
@ -227,6 +237,8 @@ namespace TNodeCore.Runtime.Components{
/// <param name="id"></param>
/// <returns></returns>
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<SceneDataPersistent>();
foreach (var nodeData in fetchedSceneNode){
if (transform.Find(nodeData.id.GetHashCode().ToString())){
var scenePersistent = transform.Find("PersistentData").GetComponent<SceneDataPersistent>();
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;

@ -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);
}

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