mirror of
https://github.com/Siccity/xNode.git
synced 2025-12-20 09:16:01 +08:00
Added c# script templates
Create > xNode > Node/NodeGraph
This commit is contained in:
parent
b787b57eb3
commit
5ef958f298
@ -1,12 +1,20 @@
|
|||||||
using System;
|
using System;
|
||||||
using System.Collections.Generic;
|
using System.Collections.Generic;
|
||||||
|
using System.IO;
|
||||||
using System.Linq;
|
using System.Linq;
|
||||||
using System.Reflection;
|
using System.Reflection;
|
||||||
|
using System.Text;
|
||||||
|
using UnityEditor;
|
||||||
|
using UnityEngine;
|
||||||
|
using Object = UnityEngine.Object;
|
||||||
|
|
||||||
namespace XNodeEditor {
|
namespace XNodeEditor {
|
||||||
/// <summary> A set of editor-only utilities and extensions for UnityNodeEditorBase </summary>
|
/// <summary> A set of editor-only utilities and extensions for UnityNodeEditorBase </summary>
|
||||||
public static class NodeEditorUtilities {
|
public static class NodeEditorUtilities {
|
||||||
|
|
||||||
|
/// <summary>C#'s Script Icon [The one MonoBhevaiour Scripts have].</summary>
|
||||||
|
private static Texture2D scriptIcon = (EditorGUIUtility.IconContent("cs Script Icon").image as Texture2D);
|
||||||
|
|
||||||
public static bool GetAttrib<T>(Type classType, out T attribOut) where T : Attribute {
|
public static bool GetAttrib<T>(Type classType, out T attribOut) where T : Attribute {
|
||||||
object[] attribs = classType.GetCustomAttributes(typeof(T), false);
|
object[] attribs = classType.GetCustomAttributes(typeof(T), false);
|
||||||
return GetAttrib(attribs, out attribOut);
|
return GetAttrib(attribs, out attribOut);
|
||||||
@ -85,5 +93,86 @@ namespace XNodeEditor {
|
|||||||
}
|
}
|
||||||
} else return type.ToString();
|
} else return type.ToString();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// <summary>Creates a new C# Class.</summary>
|
||||||
|
[MenuItem("Assets/Create/xNode/Node C# Script", false, 89)]
|
||||||
|
private static void CreateNode() {
|
||||||
|
string[] guids = AssetDatabase.FindAssets("xNode_NodeTemplate.cs");
|
||||||
|
if (guids.Length == 0) {
|
||||||
|
Debug.LogWarning("xNode_NodeTemplate.cs.txt not found in asset database");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
string path = AssetDatabase.GUIDToAssetPath(guids[0]);
|
||||||
|
CreateFromTemplate(
|
||||||
|
"NewNode.cs",
|
||||||
|
path
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>Creates a new C# Class.</summary>
|
||||||
|
[MenuItem("Assets/Create/xNode/NodeGraph C# Script", false, 89)]
|
||||||
|
private static void CreateGraph() {
|
||||||
|
string[] guids = AssetDatabase.FindAssets("xNode_NodeGraphTemplate.cs");
|
||||||
|
if (guids.Length == 0) {
|
||||||
|
Debug.LogWarning("xNode_NodeGraphTemplate.cs.txt not found in asset database");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
string path = AssetDatabase.GUIDToAssetPath(guids[0]);
|
||||||
|
CreateFromTemplate(
|
||||||
|
"NewNodeGraph.cs",
|
||||||
|
path
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
public static void CreateFromTemplate(string initialName, string templatePath) {
|
||||||
|
ProjectWindowUtil.StartNameEditingIfProjectWindowExists(
|
||||||
|
0,
|
||||||
|
ScriptableObject.CreateInstance<DoCreateCodeFile>(),
|
||||||
|
initialName,
|
||||||
|
scriptIcon,
|
||||||
|
templatePath
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
/// Inherits from EndNameAction, must override EndNameAction.Action
|
||||||
|
public class DoCreateCodeFile : UnityEditor.ProjectWindowCallback.EndNameEditAction {
|
||||||
|
public override void Action(int instanceId, string pathName, string resourceFile) {
|
||||||
|
Object o = CreateScript(pathName, resourceFile);
|
||||||
|
ProjectWindowUtil.ShowCreatedAsset(o);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>Creates Script from Template's path.</summary>
|
||||||
|
internal static UnityEngine.Object CreateScript(string pathName, string templatePath) {
|
||||||
|
string className = Path.GetFileNameWithoutExtension(pathName).Replace(" ", string.Empty);
|
||||||
|
string templateText = string.Empty;
|
||||||
|
|
||||||
|
UTF8Encoding encoding = new UTF8Encoding(true, false);
|
||||||
|
|
||||||
|
if (File.Exists(templatePath)) {
|
||||||
|
/// Read procedures.
|
||||||
|
StreamReader reader = new StreamReader(templatePath);
|
||||||
|
templateText = reader.ReadToEnd();
|
||||||
|
reader.Close();
|
||||||
|
|
||||||
|
templateText = templateText.Replace("#SCRIPTNAME#", className);
|
||||||
|
templateText = templateText.Replace("#NOTRIM#", string.Empty);
|
||||||
|
/// You can replace as many tags you make on your templates, just repeat Replace function
|
||||||
|
/// e.g.:
|
||||||
|
/// templateText = templateText.Replace("#NEWTAG#", "MyText");
|
||||||
|
|
||||||
|
/// Write procedures.
|
||||||
|
|
||||||
|
StreamWriter writer = new StreamWriter(Path.GetFullPath(pathName), false, encoding);
|
||||||
|
writer.Write(templateText);
|
||||||
|
writer.Close();
|
||||||
|
|
||||||
|
AssetDatabase.ImportAsset(pathName);
|
||||||
|
return AssetDatabase.LoadAssetAtPath(pathName, typeof(Object));
|
||||||
|
} else {
|
||||||
|
Debug.LogError(string.Format("The template file was not found: {0}", templatePath));
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
10
Scripts/Editor/Resources/ScriptTemplates.meta
Normal file
10
Scripts/Editor/Resources/ScriptTemplates.meta
Normal file
@ -0,0 +1,10 @@
|
|||||||
|
fileFormatVersion: 2
|
||||||
|
guid: 86b677955452bb5449f9f4dd47b6ddfe
|
||||||
|
folderAsset: yes
|
||||||
|
timeCreated: 1519049391
|
||||||
|
licenseType: Free
|
||||||
|
DefaultImporter:
|
||||||
|
externalObjects: {}
|
||||||
|
userData:
|
||||||
|
assetBundleName:
|
||||||
|
assetBundleVariant:
|
||||||
@ -0,0 +1,9 @@
|
|||||||
|
using System.Collections;
|
||||||
|
using System.Collections.Generic;
|
||||||
|
using UnityEngine;
|
||||||
|
using XNode;
|
||||||
|
|
||||||
|
[CreateAssetMenu]
|
||||||
|
public class #SCRIPTNAME# : NodeGraph {
|
||||||
|
#NOTRIM#
|
||||||
|
}
|
||||||
@ -0,0 +1,9 @@
|
|||||||
|
fileFormatVersion: 2
|
||||||
|
guid: 8165767f64da7d94e925f61a38da668c
|
||||||
|
timeCreated: 1519049802
|
||||||
|
licenseType: Free
|
||||||
|
TextScriptImporter:
|
||||||
|
externalObjects: {}
|
||||||
|
userData:
|
||||||
|
assetBundleName:
|
||||||
|
assetBundleVariant:
|
||||||
@ -0,0 +1,18 @@
|
|||||||
|
using System.Collections;
|
||||||
|
using System.Collections.Generic;
|
||||||
|
using UnityEngine;
|
||||||
|
using XNode;
|
||||||
|
|
||||||
|
public class #SCRIPTNAME# : Node {
|
||||||
|
|
||||||
|
// Use this for initialization
|
||||||
|
protected override void Init() {
|
||||||
|
base.Init();
|
||||||
|
#NOTRIM#
|
||||||
|
}
|
||||||
|
|
||||||
|
// Return the correct value of an output port when requested
|
||||||
|
public override object GetValue(NodePort port) {
|
||||||
|
return null; // Replace this
|
||||||
|
}
|
||||||
|
}
|
||||||
@ -0,0 +1,9 @@
|
|||||||
|
fileFormatVersion: 2
|
||||||
|
guid: 85f6f570600a1a44d8e734cb111a8b89
|
||||||
|
timeCreated: 1519049802
|
||||||
|
licenseType: Free
|
||||||
|
TextScriptImporter:
|
||||||
|
externalObjects: {}
|
||||||
|
userData:
|
||||||
|
assetBundleName:
|
||||||
|
assetBundleVariant:
|
||||||
Loading…
x
Reference in New Issue
Block a user