| 123456789101112131415161718192021222324252627282930313233343536373839404142434445 | 
							- using System;
 
- using System.IO;
 
- using System.Linq;
 
- using UnityEditor;
 
- using UnityEditor.Experimental.AssetImporters;
 
- using UnityEngine;
 
- using XNode;
 
- namespace XNodeEditor {
 
-     /// <summary> Deals with modified assets </summary>
 
-     class NodeGraphImporter : AssetPostprocessor {
 
-         private static void OnPostprocessAllAssets(string[] importedAssets, string[] deletedAssets, string[] movedAssets, string[] movedFromAssetPaths) {
 
-             foreach (string path in importedAssets) {
 
-                 // Skip processing anything without the .asset extension
 
-                 if (Path.GetExtension(path) != ".asset") continue;
 
-                 // Get the object that is requested for deletion
 
-                 NodeGraph graph = AssetDatabase.LoadAssetAtPath<NodeGraph>(path);
 
-                 if (graph == null) continue;
 
-                 // Get attributes
 
-                 Type graphType = graph.GetType();
 
-                 NodeGraph.RequireNodeAttribute[] attribs = Array.ConvertAll(
 
-                     graphType.GetCustomAttributes(typeof(NodeGraph.RequireNodeAttribute), true), x => x as NodeGraph.RequireNodeAttribute);
 
-                 Vector2 position = Vector2.zero;
 
-                 foreach (NodeGraph.RequireNodeAttribute attrib in attribs) {
 
-                     if (attrib.type0 != null) AddRequired(graph, attrib.type0, ref position);
 
-                     if (attrib.type1 != null) AddRequired(graph, attrib.type1, ref position);
 
-                     if (attrib.type2 != null) AddRequired(graph, attrib.type2, ref position);
 
-                 }
 
-             }
 
-         }
 
-         private static void AddRequired(NodeGraph graph, Type type, ref Vector2 position) {
 
-             if (!graph.nodes.Any(x => x.GetType() == type)) {
 
-                 XNode.Node node = graph.AddNode(type);
 
-                 node.position = position;
 
-                 position.x += 200;
 
-                 if (node.name == null || node.name.Trim() == "") node.name = NodeEditorUtilities.NodeDefaultName(type);
 
-                 if (!string.IsNullOrEmpty(AssetDatabase.GetAssetPath(graph))) AssetDatabase.AddObjectToAsset(node, graph);
 
-             }
 
-         }
 
-     }
 
- }
 
 
  |