summaryrefslogtreecommitdiff
path: root/Other/NodeEditorExamples/Assets/Examples/LibNoiseEditor/Plugins/LibNoise/ModuleBase.cs
diff options
context:
space:
mode:
authorchai <chaifix@163.com>2022-06-28 09:40:37 +0800
committerchai <chaifix@163.com>2022-06-28 09:40:37 +0800
commit49b25e755b70ec412feaaf0b898d6f7e09d2bea6 (patch)
tree3c5f4260f30d1c2d7196db93153700d7ddec3157 /Other/NodeEditorExamples/Assets/Examples/LibNoiseEditor/Plugins/LibNoise/ModuleBase.cs
parentc92269331692feca2c276649f6c4ee8911f1f859 (diff)
+node example
Diffstat (limited to 'Other/NodeEditorExamples/Assets/Examples/LibNoiseEditor/Plugins/LibNoise/ModuleBase.cs')
-rw-r--r--Other/NodeEditorExamples/Assets/Examples/LibNoiseEditor/Plugins/LibNoise/ModuleBase.cs187
1 files changed, 187 insertions, 0 deletions
diff --git a/Other/NodeEditorExamples/Assets/Examples/LibNoiseEditor/Plugins/LibNoise/ModuleBase.cs b/Other/NodeEditorExamples/Assets/Examples/LibNoiseEditor/Plugins/LibNoise/ModuleBase.cs
new file mode 100644
index 00000000..c6cef0f1
--- /dev/null
+++ b/Other/NodeEditorExamples/Assets/Examples/LibNoiseEditor/Plugins/LibNoise/ModuleBase.cs
@@ -0,0 +1,187 @@
+using System;
+using System.Xml.Serialization;
+using UnityEngine;
+using Debug = System.Diagnostics.Debug;
+
+namespace LibNoise
+{
+
+ #region Enumerations
+
+ /// <summary>
+ /// Defines a collection of quality modes.
+ /// </summary>
+ public enum QualityMode
+ {
+ Low,
+ Medium,
+ High,
+ }
+
+ #endregion
+
+ /// <summary>
+ /// Base class for noise modules.
+ /// </summary>
+ public abstract class ModuleBase : IDisposable
+ {
+ #region Fields
+
+ private ModuleBase[] _modules;
+
+ #endregion
+
+ #region Constructors
+
+ /// <summary>
+ /// Initializes a new instance of Helpers.
+ /// </summary>
+ /// <param name="count">The number of source modules.</param>
+ protected ModuleBase(int count)
+ {
+ if (count > 0)
+ {
+ _modules = new ModuleBase[count];
+ }
+ }
+
+ #endregion
+
+ #region Indexers
+
+ /// <summary>
+ /// Gets or sets a source module by index.
+ /// </summary>
+ /// <param name="index">The index of the source module to aquire.</param>
+ /// <returns>The requested source module.</returns>
+ public virtual ModuleBase this[int index]
+ {
+ get
+ {
+ Debug.Assert(_modules != null);
+ Debug.Assert(_modules.Length > 0);
+ if (index < 0 || index >= _modules.Length)
+ {
+ throw new ArgumentOutOfRangeException("Index out of valid module range");
+ }
+ if (_modules[index] == null)
+ {
+ throw new ArgumentNullException("Desired element is null");
+ }
+ return _modules[index];
+ }
+ set
+ {
+ Debug.Assert(_modules.Length > 0);
+ if (index < 0 || index >= _modules.Length)
+ {
+ throw new ArgumentOutOfRangeException("Index out of valid module range");
+ }
+ if (value == null)
+ {
+ throw new ArgumentNullException("Value should not be null");
+ }
+ _modules[index] = value;
+ }
+ }
+
+ #endregion
+
+ #region Properties
+ protected ModuleBase[] Modules
+ {
+ get { return _modules; }
+ }
+
+ /// <summary>
+ /// Gets the number of source modules required by this noise module.
+ /// </summary>
+ public int SourceModuleCount
+ {
+ get { return (_modules == null) ? 0 : _modules.Length; }
+ }
+
+ #endregion
+
+ #region Methods
+
+ /// <summary>
+ /// Returns the output value for the given input coordinates.
+ /// </summary>
+ /// <param name="x">The input coordinate on the x-axis.</param>
+ /// <param name="y">The input coordinate on the y-axis.</param>
+ /// <param name="z">The input coordinate on the z-axis.</param>
+ /// <returns>The resulting output value.</returns>
+ public abstract double GetValue(double x, double y, double z);
+
+ /// <summary>
+ /// Returns the output value for the given input coordinates.
+ /// </summary>
+ /// <param name="coordinate">The input coordinate.</param>
+ /// <returns>The resulting output value.</returns>
+ public double GetValue(Vector3 coordinate)
+ {
+ return GetValue(coordinate.x, coordinate.y, coordinate.z);
+ }
+
+ /// <summary>
+ /// Returns the output value for the given input coordinates.
+ /// </summary>
+ /// <param name="coordinate">The input coordinate.</param>
+ /// <returns>The resulting output value.</returns>
+ public double GetValue(ref Vector3 coordinate)
+ {
+ return GetValue(coordinate.x, coordinate.y, coordinate.z);
+ }
+
+ #endregion
+
+ #region IDisposable Members
+
+ [XmlIgnore]
+#if !XBOX360 && !ZUNE
+ [NonSerialized]
+#endif
+ private bool _disposed;
+
+ /// <summary>
+ /// Gets a value whether the object is disposed.
+ /// </summary>
+ public bool IsDisposed
+ {
+ get { return _disposed; }
+ }
+
+ /// <summary>
+ /// Immediately releases the unmanaged resources used by this object.
+ /// </summary>
+ public void Dispose()
+ {
+ if (!_disposed)
+ {
+ _disposed = Disposing();
+ }
+ GC.SuppressFinalize(this);
+ }
+
+ /// <summary>
+ /// Immediately releases the unmanaged resources used by this object.
+ /// </summary>
+ /// <returns>True if the object is completely disposed.</returns>
+ protected virtual bool Disposing()
+ {
+ if (_modules != null)
+ {
+ for (var i = 0; i < _modules.Length; i++)
+ {
+ _modules[i].Dispose();
+ _modules[i] = null;
+ }
+ _modules = null;
+ }
+ return true;
+ }
+
+ #endregion
+ }
+} \ No newline at end of file