Added Maz Nodes

This commit is contained in:
Chromium 2025-05-17 12:53:28 +01:00
parent 7fcd596a16
commit a17b04566e
12 changed files with 366 additions and 0 deletions

View File

@ -0,0 +1,58 @@
using System.IO;
using AssetGraph.Core;
using UnityEngine;
using UnityEditor;
using AssetGraph.Core.Attributes;
using AssetGraph.Nodes;
using UnityEngine.UIElements;
namespace ImageProcessingGraph.Editor.Nodes.MazStuff
{
[NodeInfo("Debug Log", "Debug/Debug Log", editorType: typeof(DebugLogNodeEditor))]
public class DebugLogNode : AssetGraphNode
{
[AssetGraph.Core.Attributes.Input("Log Text")]
public string logText;
public delegate void OnNodeUpdated();
public OnNodeUpdated onNodeUpdated;
public override void Process()
{
Debug.Log(logText);
onNodeUpdated?.Invoke();
}
}
public class DebugLogNodeEditor : AssetGraphNodeEditor
{
DebugLogNode logNode;
Label label;
public DebugLogNodeEditor(AssetGraphNode node, AssetGraphViewWindow window) : base(node, window)
{
logNode = node as DebugLogNode;
logNode.onNodeUpdated += UpdateEditor;
label = new Label();
label.style.flexGrow = 1;
label.style.flexShrink = 1;
label.style.paddingBottom = label.style.paddingTop = label.style.paddingLeft = label.style.paddingRight = 6;
label.style.backgroundColor = new Color(0.24705f, 0.24705f, 0.24705f, 0.8039216f);
label.style.whiteSpace = WhiteSpace.Normal;
VisualElement bar = new VisualElement();
bar.name = "divider";
bar.AddToClassList("horizontal");
var contents = this.Q("contents");
contents.Add(bar);
contents.Add(label);
}
public void UpdateEditor()
{
label.text = logNode.logText;
}
}
}

View File

@ -0,0 +1,11 @@
fileFormatVersion: 2
guid: ee2323729ea6fa84788137af3807d8b7
MonoImporter:
externalObjects: {}
serializedVersion: 2
defaultReferences: []
executionOrder: 0
icon: {instanceID: 0}
userData:
assetBundleName:
assetBundleVariant:

View File

@ -0,0 +1,26 @@
using System.IO;
using AssetGraph.Core.Attributes;
using AssetGraph.Nodes;
using UnityEngine;
using UnityEditor;
namespace ImageProcessingGraph.Editor.Nodes.MazStuff
{
[NodeInfo("Import Text", "Imports/Import Text")]
public class ImportTextNode : AssetGraphNode
{
[AssetGraph.Core.Attributes.Input("File Name")]
public string fileName;
[AssetGraph.Core.Attributes.Input("Directory")]
public string directory;
[AssetGraph.Core.Attributes.Output("Text")]
public string outputText;
public override void Process()
{
outputText = File.ReadAllText(Path.Combine(directory, fileName));
}
}
}

View File

@ -0,0 +1,11 @@
fileFormatVersion: 2
guid: 455f8a7df4c9c2e4691f68b537e29573
MonoImporter:
externalObjects: {}
serializedVersion: 2
defaultReferences: []
executionOrder: 0
icon: {instanceID: 0}
userData:
assetBundleName:
assetBundleVariant:

View File

@ -0,0 +1,25 @@
using System.IO;
using UnityEngine;
using UnityEditor;
using AssetGraph.Core.Attributes;
using AssetGraph.Nodes;
namespace ImageProcessingGraph.Editor.Nodes.MazStuff
{
[NodeInfo("Create Directory", "Directory/Create Directory")]
public class CreateDirectoryNode : AssetGraphNode
{
[AssetGraph.Core.Attributes.Input("Directory")] public string inputDirectory;
[AssetGraph.Core.Attributes.Output("Directory")] public string outputDirectory;
public override void Process()
{
if (!Directory.Exists(inputDirectory))
{
Directory.CreateDirectory(inputDirectory);
}
outputDirectory = inputDirectory;
}
}
}

View File

@ -0,0 +1,11 @@
fileFormatVersion: 2
guid: 8a32e947621c08940b8f9c68c3bc0bdc
MonoImporter:
externalObjects: {}
serializedVersion: 2
defaultReferences: []
executionOrder: 0
icon: {instanceID: 0}
userData:
assetBundleName:
assetBundleVariant:

View File

@ -0,0 +1,62 @@
using System.IO;
using UnityEngine;
using UnityEditor;
using AssetGraph.Core.Attributes;
using AssetGraph.Nodes;
namespace ImageProcessingGraph.Editor.Nodes.MazStuff
{
[NodeInfo("Create Prefab", "Prefab/Create")]
public class CreatePrefabNode : AssetGraphNode
{
[AssetGraph.Core.Attributes.Input("Prefab Name")]
public string prefabName;
[AssetGraph.Core.Attributes.Input("Directory")]
public string directory;
[AssetGraph.Core.Attributes.Input("")]
public Mesh mesh;
[AssetGraph.Core.Attributes.Input("Submesh Count")]
public int submeshCount = 1;
[AssetGraph.Core.Attributes.Input("")]
public Material material;
[AssetGraph.Core.Attributes.Output("Prefab")]
public GameObject prefab;
public override void Process()
{
GameObject newGO = new GameObject(prefabName);
var prefabPath = Path.Combine(directory, $"{prefabName}.prefab");
PrefabUtility.SaveAsPrefabAsset(newGO, prefabPath);
Object.DestroyImmediate(newGO);
using (var editScope = new PrefabUtility.EditPrefabContentsScope(prefabPath))
{
var root = editScope.prefabContentsRoot;
var meshRenderer = root.AddComponent<MeshRenderer>();
var meshFilter = root.AddComponent<MeshFilter>();
meshFilter.sharedMesh = mesh;
if (submeshCount > 1)
{
Material[] materials = new Material[submeshCount];
for (int i = 0; i < submeshCount; i++)
{
materials[i] = material;
}
meshRenderer.sharedMaterials = materials;
}
else
{
meshRenderer.sharedMaterial = material;
}
}
prefab = AssetDatabase.LoadAssetAtPath<GameObject>(prefabPath);
}
}
}

View File

@ -0,0 +1,11 @@
fileFormatVersion: 2
guid: 851727f1cfe10de4b8073aa6a334518c
MonoImporter:
externalObjects: {}
serializedVersion: 2
defaultReferences: []
executionOrder: 0
icon: {instanceID: 0}
userData:
assetBundleName:
assetBundleVariant:

View File

@ -0,0 +1,69 @@
using System.IO;
using AssetGraph.Core.Attributes;
using AssetGraph.Nodes;
using ImageProcessingGraph.Editor;
using UnityEditor;
using UnityEngine;
namespace ImageProcessingGraph.Editor.Nodes.MazStuff
{
[NodeInfo("Model Import", "Imports/Import Model", true)]
public class ModelImportNode : AssetGraphNode
{
[AssetGraph.Core.Attributes.Input("Model")]
public GameObject modelImport;
[AssetGraph.Core.Attributes.Output("")]
public Mesh mesh;
[AssetGraph.Core.Attributes.Output("")]
public Material material;
[AssetGraph.Core.Attributes.Output("Model Name")]
public string modelName;
[AssetGraph.Core.Attributes.Output("Directory")]
public string directory;
public override void Process()
{
var modelPath = AssetDatabase.GetAssetPath(modelImport);
var allAssets = AssetDatabase.LoadAllAssetsAtPath(modelPath);
material = null;
mesh = null;
foreach (var asset in allAssets)
{
if (material && mesh) break;
if (!material && asset is Material foundMaterial)
{
material = foundMaterial;
}
if (!mesh && asset is Mesh foundMesh)
{
mesh = foundMesh;
}
}
modelName = modelImport.name;
directory = Path.GetDirectoryName(modelPath);
}
}
[NodeInfo("Mesh Info", "Mesh/Mesh Info", true)]
public class MeshInfo : AssetGraphNode
{
[AssetGraph.Core.Attributes.Input("")]
public Mesh mesh;
[AssetGraph.Core.Attributes.Output("Submeshes")]
public int submeshes;
public override void Process()
{
submeshes = mesh.subMeshCount;
}
}
}

View File

@ -0,0 +1,11 @@
fileFormatVersion: 2
guid: 612cfa8fb6e00e14d9f78091cb61cdde
MonoImporter:
externalObjects: {}
serializedVersion: 2
defaultReferences: []
executionOrder: 0
icon: {instanceID: 0}
userData:
assetBundleName:
assetBundleVariant:

View File

@ -0,0 +1,60 @@
using System.IO;
using AssetGraph.Core.Attributes;
using AssetGraph.Nodes;
using UnityEngine;
using UnityEditor;
namespace ImageProcessingGraph.Editor.Nodes.MazStuff
{
[NodeInfo("Material Get Name", "Material/Material Get Name")]
public class MaterialGetNameNode : AssetGraphNode
{
[AssetGraph.Core.Attributes.Input("")] public Material inputObject;
[AssetGraph.Core.Attributes.Output("Name")] public string objectName;
public override void Process()
{
objectName = inputObject.name;
}
}
[NodeInfo("Mesh Get Name", "Mesh/Mesh Get Name")]
public class MeshGetNameNode : AssetGraphNode
{
[AssetGraph.Core.Attributes.Input("")] public Mesh inputObject;
[AssetGraph.Core.Attributes.Output("Name")] public string objectName;
public override void Process()
{
objectName = inputObject.name;
}
}
[NodeInfo("Texture Get Name", "Texture/Texture Get Name")]
public class TextureGetNameNode : AssetGraphNode
{
[AssetGraph.Core.Attributes.Input("")] public Texture2D inputObject;
[AssetGraph.Core.Attributes.Output("Name")] public string objectName;
public override void Process()
{
objectName = inputObject.name;
}
}
[NodeInfo("GameObject Get Name", "GameObject/GameObject Get Name")]
public class GameObjectGetNameNode : AssetGraphNode
{
[AssetGraph.Core.Attributes.Input("")] public GameObject inputObject;
[AssetGraph.Core.Attributes.Output("Name")] public string objectName;
public override void Process()
{
objectName = inputObject.name;
}
}
}

View File

@ -0,0 +1,11 @@
fileFormatVersion: 2
guid: 79f6818ae71efcd48a44d3fb422891bb
MonoImporter:
externalObjects: {}
serializedVersion: 2
defaultReferences: []
executionOrder: 0
icon: {instanceID: 0}
userData:
assetBundleName:
assetBundleVariant: