summaryrefslogtreecommitdiff
path: root/Other/NodeEditorExamples/Assets/Examples/LibNoiseEditor/Nodes
diff options
context:
space:
mode:
Diffstat (limited to 'Other/NodeEditorExamples/Assets/Examples/LibNoiseEditor/Nodes')
-rw-r--r--Other/NodeEditorExamples/Assets/Examples/LibNoiseEditor/Nodes/GeneratorNodes.meta9
-rw-r--r--Other/NodeEditorExamples/Assets/Examples/LibNoiseEditor/Nodes/GeneratorNodes/PerlinNode.cs73
-rw-r--r--Other/NodeEditorExamples/Assets/Examples/LibNoiseEditor/Nodes/GeneratorNodes/PerlinNode.cs.meta12
-rw-r--r--Other/NodeEditorExamples/Assets/Examples/LibNoiseEditor/Nodes/GeneratorNodes/VoronoiNode.cs35
-rw-r--r--Other/NodeEditorExamples/Assets/Examples/LibNoiseEditor/Nodes/GeneratorNodes/VoronoiNode.cs.meta12
-rw-r--r--Other/NodeEditorExamples/Assets/Examples/LibNoiseEditor/Nodes/OperatorNodes.meta9
-rw-r--r--Other/NodeEditorExamples/Assets/Examples/LibNoiseEditor/Nodes/OperatorNodes/CurveNode.cs32
-rw-r--r--Other/NodeEditorExamples/Assets/Examples/LibNoiseEditor/Nodes/OperatorNodes/CurveNode.cs.meta12
-rw-r--r--Other/NodeEditorExamples/Assets/Examples/LibNoiseEditor/Nodes/OperatorNodes/SelectNode.cs34
-rw-r--r--Other/NodeEditorExamples/Assets/Examples/LibNoiseEditor/Nodes/OperatorNodes/SelectNode.cs.meta12
-rw-r--r--Other/NodeEditorExamples/Assets/Examples/LibNoiseEditor/Nodes/OutputMesh.cs7
-rw-r--r--Other/NodeEditorExamples/Assets/Examples/LibNoiseEditor/Nodes/OutputMesh.cs.meta12
-rw-r--r--Other/NodeEditorExamples/Assets/Examples/LibNoiseEditor/Nodes/OutputTexture2D.cs70
-rw-r--r--Other/NodeEditorExamples/Assets/Examples/LibNoiseEditor/Nodes/OutputTexture2D.cs.meta12
14 files changed, 341 insertions, 0 deletions
diff --git a/Other/NodeEditorExamples/Assets/Examples/LibNoiseEditor/Nodes/GeneratorNodes.meta b/Other/NodeEditorExamples/Assets/Examples/LibNoiseEditor/Nodes/GeneratorNodes.meta
new file mode 100644
index 00000000..12e35e80
--- /dev/null
+++ b/Other/NodeEditorExamples/Assets/Examples/LibNoiseEditor/Nodes/GeneratorNodes.meta
@@ -0,0 +1,9 @@
+fileFormatVersion: 2
+guid: 32e99ed3c4c33a245a4ee182fd560c24
+folderAsset: yes
+timeCreated: 1502695282
+licenseType: Free
+DefaultImporter:
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Other/NodeEditorExamples/Assets/Examples/LibNoiseEditor/Nodes/GeneratorNodes/PerlinNode.cs b/Other/NodeEditorExamples/Assets/Examples/LibNoiseEditor/Nodes/GeneratorNodes/PerlinNode.cs
new file mode 100644
index 00000000..1ffac177
--- /dev/null
+++ b/Other/NodeEditorExamples/Assets/Examples/LibNoiseEditor/Nodes/GeneratorNodes/PerlinNode.cs
@@ -0,0 +1,73 @@
+
+using System.Collections.Generic;
+
+using UnityEngine;
+using UnityEditor;
+
+using UNEB;
+using LibNoise.Generator;
+
+public class PerlinNode : Node
+{
+ private Perlin _noise = new Perlin();
+
+ public override void Init() {
+ var noiseIn = AddInput();
+ noiseIn.name = "Input";
+
+ var mask = AddInput();
+ mask.name = "Mask";
+
+ var noiseOut = AddOutput();
+ noiseOut.name = "Output";
+ noiseOut.getValue = () => { return _noise; };
+
+ FitKnobs();
+
+ bodyRect.height += 95f;
+ bodyRect.width = 150f;
+ }
+
+ public override void OnBodyGUI()
+ {
+ EditorGUI.BeginChangeCheck();
+
+ _noise.Seed = EditorGUILayout.IntField("Seed", _noise.Seed);
+ _noise.OctaveCount = EditorGUILayout.IntField("Octaves", _noise.OctaveCount);
+ _noise.Persistence = EditorGUILayout.DoubleField("Persistence", _noise.Persistence);
+ _noise.Frequency = EditorGUILayout.DoubleField("Frequency", _noise.Frequency);
+ _noise.Lacunarity = EditorGUILayout.DoubleField("Lacunarity", _noise.Lacunarity);
+
+ if (EditorGUI.EndChangeCheck()) {
+ updateOutputNodes();
+ }
+ }
+
+ // Uses a simple DFS traversal to find the connected outputs.
+ // Assumes a tree-like structure following output to input.
+ // Does not handle cycles.
+ private void updateOutputNodes()
+ {
+ // Temp solution.
+ var dfs = new Stack<Node>();
+
+ dfs.Push(this);
+
+ while (dfs.Count != 0) {
+
+ var node = dfs.Pop();
+
+ // Search neighbors
+ foreach (var output in node.Outputs) {
+ foreach (var input in output.Inputs) {
+ dfs.Push(input.ParentNode);
+ }
+ }
+
+ var outputNode = node as OutputTexture2D;
+ if (outputNode != null) {
+ outputNode.UpdateTexture();
+ }
+ }
+ }
+} \ No newline at end of file
diff --git a/Other/NodeEditorExamples/Assets/Examples/LibNoiseEditor/Nodes/GeneratorNodes/PerlinNode.cs.meta b/Other/NodeEditorExamples/Assets/Examples/LibNoiseEditor/Nodes/GeneratorNodes/PerlinNode.cs.meta
new file mode 100644
index 00000000..ae4ff21c
--- /dev/null
+++ b/Other/NodeEditorExamples/Assets/Examples/LibNoiseEditor/Nodes/GeneratorNodes/PerlinNode.cs.meta
@@ -0,0 +1,12 @@
+fileFormatVersion: 2
+guid: 1f2d0ea566c0d2e4799418dc4757938e
+timeCreated: 1502695509
+licenseType: Free
+MonoImporter:
+ serializedVersion: 2
+ defaultReferences: []
+ executionOrder: 0
+ icon: {instanceID: 0}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Other/NodeEditorExamples/Assets/Examples/LibNoiseEditor/Nodes/GeneratorNodes/VoronoiNode.cs b/Other/NodeEditorExamples/Assets/Examples/LibNoiseEditor/Nodes/GeneratorNodes/VoronoiNode.cs
new file mode 100644
index 00000000..b5a82013
--- /dev/null
+++ b/Other/NodeEditorExamples/Assets/Examples/LibNoiseEditor/Nodes/GeneratorNodes/VoronoiNode.cs
@@ -0,0 +1,35 @@
+
+using UnityEditor;
+using LibNoise.Generator;
+using UNEB;
+
+public class VoronoiNode : Node
+{
+ private Voronoi _noise = new Voronoi();
+
+ public override void Init()
+ {
+ var noiseIn = AddInput();
+ noiseIn.name = "Input";
+
+ var mask = AddInput();
+ mask.name = "Mask";
+
+ var noiseOut = AddOutput();
+ noiseOut.name = "Output";
+ noiseOut.getValue = () => { return _noise; };
+
+ FitKnobs();
+
+ bodyRect.height += 80f;
+ bodyRect.width = 150f;
+ }
+
+ public override void OnBodyGUI()
+ {
+ _noise.Seed = EditorGUILayout.IntField("Seed", _noise.Seed);
+ _noise.Frequency = EditorGUILayout.DoubleField("Frequency", _noise.Frequency);
+ _noise.Displacement = EditorGUILayout.DoubleField("Displacement", _noise.Displacement);
+ _noise.UseDistance = EditorGUILayout.Toggle("Use Distance", _noise.UseDistance);
+ }
+} \ No newline at end of file
diff --git a/Other/NodeEditorExamples/Assets/Examples/LibNoiseEditor/Nodes/GeneratorNodes/VoronoiNode.cs.meta b/Other/NodeEditorExamples/Assets/Examples/LibNoiseEditor/Nodes/GeneratorNodes/VoronoiNode.cs.meta
new file mode 100644
index 00000000..02e63cde
--- /dev/null
+++ b/Other/NodeEditorExamples/Assets/Examples/LibNoiseEditor/Nodes/GeneratorNodes/VoronoiNode.cs.meta
@@ -0,0 +1,12 @@
+fileFormatVersion: 2
+guid: a0eb0464f69bb1140b0cf06461db0501
+timeCreated: 1502696495
+licenseType: Free
+MonoImporter:
+ serializedVersion: 2
+ defaultReferences: []
+ executionOrder: 0
+ icon: {instanceID: 0}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Other/NodeEditorExamples/Assets/Examples/LibNoiseEditor/Nodes/OperatorNodes.meta b/Other/NodeEditorExamples/Assets/Examples/LibNoiseEditor/Nodes/OperatorNodes.meta
new file mode 100644
index 00000000..12586983
--- /dev/null
+++ b/Other/NodeEditorExamples/Assets/Examples/LibNoiseEditor/Nodes/OperatorNodes.meta
@@ -0,0 +1,9 @@
+fileFormatVersion: 2
+guid: 76cd34ec88c324d46b9b5041c12a93a8
+folderAsset: yes
+timeCreated: 1502695460
+licenseType: Free
+DefaultImporter:
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Other/NodeEditorExamples/Assets/Examples/LibNoiseEditor/Nodes/OperatorNodes/CurveNode.cs b/Other/NodeEditorExamples/Assets/Examples/LibNoiseEditor/Nodes/OperatorNodes/CurveNode.cs
new file mode 100644
index 00000000..7babc539
--- /dev/null
+++ b/Other/NodeEditorExamples/Assets/Examples/LibNoiseEditor/Nodes/OperatorNodes/CurveNode.cs
@@ -0,0 +1,32 @@
+
+using UnityEngine;
+using UnityEditor;
+using UNEB;
+
+public class CurveNode : Node
+{
+ private AnimationCurve _curve = new AnimationCurve();
+ private readonly Rect kCurveRange = new Rect(-1, -1, 2, 2);
+
+ private const float kBodyHeight = 100f;
+
+ public override void Init()
+ {
+ var input = AddInput();
+ input.name = "Input";
+
+ var output = AddOutput();
+ output.name = "Output";
+
+ FitKnobs();
+
+ bodyRect.height += kBodyHeight;
+ bodyRect.width = 150f;
+ }
+
+ public override void OnBodyGUI()
+ {
+ float boxHeight = kBodyHeight - kHeaderHeight;
+ _curve = EditorGUILayout.CurveField(_curve, Color.cyan, kCurveRange, GUILayout.Height(boxHeight), GUILayout.ExpandWidth(true));
+ }
+}
diff --git a/Other/NodeEditorExamples/Assets/Examples/LibNoiseEditor/Nodes/OperatorNodes/CurveNode.cs.meta b/Other/NodeEditorExamples/Assets/Examples/LibNoiseEditor/Nodes/OperatorNodes/CurveNode.cs.meta
new file mode 100644
index 00000000..e797acc3
--- /dev/null
+++ b/Other/NodeEditorExamples/Assets/Examples/LibNoiseEditor/Nodes/OperatorNodes/CurveNode.cs.meta
@@ -0,0 +1,12 @@
+fileFormatVersion: 2
+guid: ed443b489ef3d2345a35685cf3a9e1e5
+timeCreated: 1502703666
+licenseType: Free
+MonoImporter:
+ serializedVersion: 2
+ defaultReferences: []
+ executionOrder: 0
+ icon: {instanceID: 0}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Other/NodeEditorExamples/Assets/Examples/LibNoiseEditor/Nodes/OperatorNodes/SelectNode.cs b/Other/NodeEditorExamples/Assets/Examples/LibNoiseEditor/Nodes/OperatorNodes/SelectNode.cs
new file mode 100644
index 00000000..8e568bf6
--- /dev/null
+++ b/Other/NodeEditorExamples/Assets/Examples/LibNoiseEditor/Nodes/OperatorNodes/SelectNode.cs
@@ -0,0 +1,34 @@
+using LibNoise.Operator;
+
+using UnityEngine;
+using UnityEditor;
+using UNEB;
+
+public class SelectNode : Node
+{
+ private Select _op = new Select();
+
+ public override void Init()
+ {
+ var inputA = AddInput();
+ inputA.name = "Input A";
+
+ var inputB = AddInput();
+ inputB.name = "Input B";
+
+ var output = AddOutput();
+ output.name = "Output";
+
+ FitKnobs();
+
+ bodyRect.height += 60f;
+ bodyRect.width = 150f;
+ }
+
+ public override void OnBodyGUI()
+ {
+ _op.FallOff = EditorGUILayout.DoubleField("Fall Off", _op.FallOff);
+ _op.Minimum = EditorGUILayout.DoubleField("Min Bound", _op.Minimum);
+ _op.Maximum = EditorGUILayout.DoubleField("Max Bound", _op.Maximum);
+ }
+}
diff --git a/Other/NodeEditorExamples/Assets/Examples/LibNoiseEditor/Nodes/OperatorNodes/SelectNode.cs.meta b/Other/NodeEditorExamples/Assets/Examples/LibNoiseEditor/Nodes/OperatorNodes/SelectNode.cs.meta
new file mode 100644
index 00000000..8b89c28c
--- /dev/null
+++ b/Other/NodeEditorExamples/Assets/Examples/LibNoiseEditor/Nodes/OperatorNodes/SelectNode.cs.meta
@@ -0,0 +1,12 @@
+fileFormatVersion: 2
+guid: 2ff619b535e53e74a94aa5c56dfc462b
+timeCreated: 1502702570
+licenseType: Free
+MonoImporter:
+ serializedVersion: 2
+ defaultReferences: []
+ executionOrder: 0
+ icon: {instanceID: 0}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Other/NodeEditorExamples/Assets/Examples/LibNoiseEditor/Nodes/OutputMesh.cs b/Other/NodeEditorExamples/Assets/Examples/LibNoiseEditor/Nodes/OutputMesh.cs
new file mode 100644
index 00000000..5e379668
--- /dev/null
+++ b/Other/NodeEditorExamples/Assets/Examples/LibNoiseEditor/Nodes/OutputMesh.cs
@@ -0,0 +1,7 @@
+
+using UnityEngine;
+using UNEB;
+
+public class OutputMesh : Node {
+
+}
diff --git a/Other/NodeEditorExamples/Assets/Examples/LibNoiseEditor/Nodes/OutputMesh.cs.meta b/Other/NodeEditorExamples/Assets/Examples/LibNoiseEditor/Nodes/OutputMesh.cs.meta
new file mode 100644
index 00000000..7face9eb
--- /dev/null
+++ b/Other/NodeEditorExamples/Assets/Examples/LibNoiseEditor/Nodes/OutputMesh.cs.meta
@@ -0,0 +1,12 @@
+fileFormatVersion: 2
+guid: c975064dd2bbba44d8bb3655a76889e2
+timeCreated: 1502709420
+licenseType: Free
+MonoImporter:
+ serializedVersion: 2
+ defaultReferences: []
+ executionOrder: 0
+ icon: {instanceID: 0}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Other/NodeEditorExamples/Assets/Examples/LibNoiseEditor/Nodes/OutputTexture2D.cs b/Other/NodeEditorExamples/Assets/Examples/LibNoiseEditor/Nodes/OutputTexture2D.cs
new file mode 100644
index 00000000..c20a99d8
--- /dev/null
+++ b/Other/NodeEditorExamples/Assets/Examples/LibNoiseEditor/Nodes/OutputTexture2D.cs
@@ -0,0 +1,70 @@
+
+using UnityEngine;
+using UnityEditor;
+using UNEB;
+
+public class OutputTexture2D : Node
+{
+ private Texture2D texPreview;
+
+ NodeInput inputNoise;
+
+ private int _texRes = 100;
+ public int Resolution
+ {
+ get { return _texRes; }
+ set { _texRes = Mathf.Clamp(value, 10, 300); }
+ }
+
+ public override void Init()
+ {
+ inputNoise = AddInput();
+ inputNoise.name = "Input Noise";
+
+ texPreview = new Texture2D(200, 200);
+
+ FitKnobs();
+ bodyRect.height += 245;
+ bodyRect.width = 210f;
+ }
+
+ public override void OnBodyGUI()
+ {
+ EditorGUI.BeginChangeCheck();
+ Resolution = EditorGUILayout.IntField("Resolution", Resolution);
+
+ GUILayout.Box(texPreview, GUILayout.Width(texPreview.width), GUILayout.Height(texPreview.height));
+
+ if (GUILayout.Button("Update")) {
+ UpdateTexture();
+ }
+
+ if (EditorGUI.EndChangeCheck()) {
+ UpdateTexture();
+ }
+ }
+
+ public void UpdateTexture()
+ {
+ if (!inputNoise.HasOutputConnected()) {
+ return;
+ }
+
+ var noise = inputNoise.Outputs[0].GetValue<LibNoise.Generator.Perlin>();
+
+ for (int x = 0; x < texPreview.width; ++x) {
+ for (int y = 0; y < texPreview.height; ++y) {
+
+ var point = new Vector3(x, y, 0f) / _texRes;
+ float value = (float)noise.GetValue(point);
+
+ value = Mathf.Clamp01((value + 1) / 2f);
+ Color color = Color.HSVToRGB(value, 1f, 1f);
+
+ texPreview.SetPixel(x, y, color);
+ }
+ }
+
+ texPreview.Apply();
+ }
+}
diff --git a/Other/NodeEditorExamples/Assets/Examples/LibNoiseEditor/Nodes/OutputTexture2D.cs.meta b/Other/NodeEditorExamples/Assets/Examples/LibNoiseEditor/Nodes/OutputTexture2D.cs.meta
new file mode 100644
index 00000000..e1c18fbd
--- /dev/null
+++ b/Other/NodeEditorExamples/Assets/Examples/LibNoiseEditor/Nodes/OutputTexture2D.cs.meta
@@ -0,0 +1,12 @@
+fileFormatVersion: 2
+guid: 565809ecf7ca4524bbae5ea481a509a8
+timeCreated: 1502709401
+licenseType: Free
+MonoImporter:
+ serializedVersion: 2
+ defaultReferences: []
+ executionOrder: 0
+ icon: {instanceID: 0}
+ userData:
+ assetBundleName:
+ assetBundleVariant: