fishy facepunch
This commit is contained in:
@ -1,8 +0,0 @@
|
||||
fileFormatVersion: 2
|
||||
guid: e1b7ac5a63cb24c4a8b836efecf5b432
|
||||
folderAsset: yes
|
||||
DefaultImporter:
|
||||
externalObjects: {}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
@ -1,14 +0,0 @@
|
||||
using System.Collections;
|
||||
using System.Collections.Generic;
|
||||
using UnityEngine;
|
||||
|
||||
namespace Adobe.Substance
|
||||
{
|
||||
public enum ShuffleIndex
|
||||
{
|
||||
Red = 0,
|
||||
Green = 1,
|
||||
Blue = 2,
|
||||
AlphaChannel = 3
|
||||
}
|
||||
}
|
@ -1,11 +0,0 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 19b7748e2fed01745849ab203806a4da
|
||||
MonoImporter:
|
||||
externalObjects: {}
|
||||
serializedVersion: 2
|
||||
defaultReferences: []
|
||||
executionOrder: 0
|
||||
icon: {instanceID: 0}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
@ -1,24 +0,0 @@
|
||||
using System.Collections;
|
||||
using System.Collections.Generic;
|
||||
using UnityEngine;
|
||||
|
||||
namespace Adobe.Substance
|
||||
{
|
||||
/// <summary>
|
||||
/// Types of values supported by the substance Engine.
|
||||
/// </summary>
|
||||
public enum SubstanceValueType : uint
|
||||
{
|
||||
Float,
|
||||
Float2,
|
||||
Float3,
|
||||
Float4,
|
||||
Int,
|
||||
Int2,
|
||||
Int3,
|
||||
Int4,
|
||||
Image,
|
||||
String,
|
||||
Font,
|
||||
}
|
||||
}
|
@ -1,11 +0,0 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 4e3e8edcd045aa4439639e4dd4a876e1
|
||||
MonoImporter:
|
||||
externalObjects: {}
|
||||
serializedVersion: 2
|
||||
defaultReferences: []
|
||||
executionOrder: 0
|
||||
icon: {instanceID: 0}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
@ -1,21 +0,0 @@
|
||||
using System.Collections;
|
||||
using System.Collections.Generic;
|
||||
using UnityEngine;
|
||||
|
||||
namespace Adobe.Substance
|
||||
{
|
||||
/// <summary>
|
||||
/// Represents different types of widgets used to assign input values.
|
||||
/// </summary>
|
||||
public enum SubstanceWidgetType
|
||||
{
|
||||
NoWidget,
|
||||
Slider,
|
||||
Angle,
|
||||
Color,
|
||||
ToggleButton,
|
||||
ComboBox,
|
||||
Image,
|
||||
Position
|
||||
}
|
||||
}
|
@ -1,11 +0,0 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 73d408e59cbb3044e807be21f8dce834
|
||||
MonoImporter:
|
||||
externalObjects: {}
|
||||
serializedVersion: 2
|
||||
defaultReferences: []
|
||||
executionOrder: 0
|
||||
icon: {instanceID: 0}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
@ -1,14 +0,0 @@
|
||||
using System.Collections;
|
||||
using System.Collections.Generic;
|
||||
using UnityEngine;
|
||||
|
||||
namespace Adobe.Substance
|
||||
{
|
||||
public enum TextureFlip
|
||||
{
|
||||
None = 0x0,
|
||||
Horizontal = 0x1,
|
||||
Vertical = 0x2,
|
||||
Both = 0x3
|
||||
}
|
||||
}
|
@ -1,11 +0,0 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 01ed99cadd094f841b47e95378e7d415
|
||||
MonoImporter:
|
||||
externalObjects: {}
|
||||
serializedVersion: 2
|
||||
defaultReferences: []
|
||||
executionOrder: 0
|
||||
icon: {instanceID: 0}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
@ -1,8 +0,0 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 1d0e13b745090064e9c7e0bbd2b23b47
|
||||
folderAsset: yes
|
||||
DefaultImporter:
|
||||
externalObjects: {}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
@ -1,8 +0,0 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 8d3285958facb6f44b410e1c81fa19c1
|
||||
folderAsset: yes
|
||||
DefaultImporter:
|
||||
externalObjects: {}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
@ -1,10 +0,0 @@
|
||||
using System.Collections;
|
||||
using System.Collections.Generic;
|
||||
using UnityEngine;
|
||||
|
||||
namespace Adobe.Substance
|
||||
{
|
||||
public interface ISubstanceInputDescNumerical
|
||||
{
|
||||
}
|
||||
}
|
@ -1,11 +0,0 @@
|
||||
fileFormatVersion: 2
|
||||
guid: c6c5115cae5711a46a6d74d20391cfb8
|
||||
MonoImporter:
|
||||
externalObjects: {}
|
||||
serializedVersion: 2
|
||||
defaultReferences: []
|
||||
executionOrder: 0
|
||||
icon: {instanceID: 0}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
@ -1,56 +0,0 @@
|
||||
using System.Collections;
|
||||
using System.Collections.Generic;
|
||||
using UnityEngine;
|
||||
|
||||
namespace Adobe.Substance.Input.Description
|
||||
{
|
||||
/// <summary>
|
||||
/// Numeric input description for input of type float.
|
||||
/// </summary>
|
||||
[System.Serializable]
|
||||
public class SubstanceInputDescNumericalFloat : ISubstanceInputDescNumerical
|
||||
{
|
||||
/// <summary>
|
||||
/// Default input value
|
||||
/// </summary>
|
||||
public float DefaultValue;
|
||||
|
||||
/// <summary>
|
||||
/// Minimum value (UI hint only)
|
||||
/// </summary>
|
||||
public float MinValue;
|
||||
|
||||
/// <summary>
|
||||
/// Maximum value (UI hint only) (Only relevant if widget is Input_Slider)
|
||||
/// </summary>
|
||||
public float MaxValue;
|
||||
|
||||
/// <summary>
|
||||
/// Slider step size (UI hint only) (Only relevant if widget is Input_Slider)
|
||||
/// </summary>
|
||||
public float SliderStep;
|
||||
|
||||
/// <summary>
|
||||
/// Should the slider clamp the value? (UI hint only) (Only relevant if widget is Input_Slider)
|
||||
/// </summary>
|
||||
public bool SliderClamp;
|
||||
|
||||
/// <summary>
|
||||
/// Number of enum option for this value.
|
||||
/// </summary>
|
||||
public int EnumValueCount;
|
||||
|
||||
/// <summary>
|
||||
/// Array of enum values for this property. Only relevant if widget is SBSARIO_WIDGET_COMBOBOX (UI hint only).
|
||||
/// </summary>
|
||||
public SubstanceFloatEnumOption[] EnumValues;
|
||||
}
|
||||
|
||||
[System.Serializable]
|
||||
public class SubstanceFloatEnumOption
|
||||
{
|
||||
public float Value;
|
||||
|
||||
public string Label;
|
||||
}
|
||||
}
|
@ -1,11 +0,0 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 17cc9d69d9e234541a84546059a02135
|
||||
MonoImporter:
|
||||
externalObjects: {}
|
||||
serializedVersion: 2
|
||||
defaultReferences: []
|
||||
executionOrder: 0
|
||||
icon: {instanceID: 0}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
@ -1,56 +0,0 @@
|
||||
using System.Collections;
|
||||
using System.Collections.Generic;
|
||||
using UnityEngine;
|
||||
|
||||
namespace Adobe.Substance.Input.Description
|
||||
{
|
||||
/// <summary>
|
||||
/// Numeric input description for input of type float 2.
|
||||
/// </summary>
|
||||
[System.Serializable]
|
||||
public class SubstanceInputDescNumericalFloat2 : ISubstanceInputDescNumerical
|
||||
{
|
||||
/// <summary>
|
||||
/// Default input value
|
||||
/// </summary>
|
||||
public Vector2 DefaultValue;
|
||||
|
||||
/// <summary>
|
||||
/// Minimum value (UI hint only)
|
||||
/// </summary>
|
||||
public Vector2 MinValue;
|
||||
|
||||
/// <summary>
|
||||
/// Maximum value (UI hint only) (Only relevant if widget is Input_Slider)
|
||||
/// </summary>
|
||||
public Vector2 MaxValue;
|
||||
|
||||
/// <summary>
|
||||
/// Slider step size (UI hint only) (Only relevant if widget is Input_Slider)
|
||||
/// </summary>
|
||||
public float SliderStep;
|
||||
|
||||
/// <summary>
|
||||
/// Should the slider clamp the value? (UI hint only) (Only relevant if widget is Input_Slider)
|
||||
/// </summary>
|
||||
public bool SliderClamp;
|
||||
|
||||
/// <summary>
|
||||
/// Number of enum option for this value.
|
||||
/// </summary>
|
||||
public int EnumValueCount;
|
||||
|
||||
/// <summary>
|
||||
/// Array of enum values for this property. Only relevant if widget is SBSARIO_WIDGET_COMBOBOX (UI hint only).
|
||||
/// </summary>
|
||||
public SubstanceFloat2EnumOption[] EnumValues;
|
||||
}
|
||||
|
||||
[System.Serializable]
|
||||
public class SubstanceFloat2EnumOption
|
||||
{
|
||||
public Vector2 Value;
|
||||
|
||||
public string Label;
|
||||
}
|
||||
}
|
@ -1,11 +0,0 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 6cd3bc40ad7c1cc41bc69189c63590b2
|
||||
MonoImporter:
|
||||
externalObjects: {}
|
||||
serializedVersion: 2
|
||||
defaultReferences: []
|
||||
executionOrder: 0
|
||||
icon: {instanceID: 0}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
@ -1,56 +0,0 @@
|
||||
using System.Collections;
|
||||
using System.Collections.Generic;
|
||||
using UnityEngine;
|
||||
|
||||
namespace Adobe.Substance.Input.Description
|
||||
{
|
||||
/// <summary>
|
||||
/// Numeric input description for input of type float3.
|
||||
/// </summary>
|
||||
[System.Serializable]
|
||||
public class SubstanceInputDescNumericalFloat3 : ISubstanceInputDescNumerical
|
||||
{
|
||||
/// <summary>
|
||||
/// Default input value
|
||||
/// </summary>
|
||||
public Vector3 DefaultValue;
|
||||
|
||||
/// <summary>
|
||||
/// Minimum value (UI hint only)
|
||||
/// </summary>
|
||||
public Vector3 MinValue;
|
||||
|
||||
/// <summary>
|
||||
/// Maximum value (UI hint only) (Only relevant if widget is Input_Slider)
|
||||
/// </summary>
|
||||
public Vector3 MaxValue;
|
||||
|
||||
/// <summary>
|
||||
/// Slider step size (UI hint only) (Only relevant if widget is Input_Slider)
|
||||
/// </summary>
|
||||
public float SliderStep;
|
||||
|
||||
/// <summary>
|
||||
/// Should the slider clamp the value? (UI hint only) (Only relevant if widget is Input_Slider)
|
||||
/// </summary>
|
||||
public bool SliderClamp;
|
||||
|
||||
/// <summary>
|
||||
/// Number of enum option for this value.
|
||||
/// </summary>
|
||||
public int EnumValueCount;
|
||||
|
||||
/// <summary>
|
||||
/// Array of enum values for this property. Only relevant if widget is SBSARIO_WIDGET_COMBOBOX (UI hint only).
|
||||
/// </summary>
|
||||
public SubstanceFloat3EnumOption[] EnumValues;
|
||||
}
|
||||
|
||||
[System.Serializable]
|
||||
public class SubstanceFloat3EnumOption
|
||||
{
|
||||
public Vector3 Value;
|
||||
|
||||
public string Label;
|
||||
}
|
||||
}
|
@ -1,11 +0,0 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 95d340e6db1018d4888654b6d6e4bfbc
|
||||
MonoImporter:
|
||||
externalObjects: {}
|
||||
serializedVersion: 2
|
||||
defaultReferences: []
|
||||
executionOrder: 0
|
||||
icon: {instanceID: 0}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
@ -1,56 +0,0 @@
|
||||
using System.Collections;
|
||||
using System.Collections.Generic;
|
||||
using UnityEngine;
|
||||
|
||||
namespace Adobe.Substance.Input.Description
|
||||
{
|
||||
/// <summary>
|
||||
/// Numeric input description for input of type float4.
|
||||
/// </summary>
|
||||
[System.Serializable]
|
||||
public class SubstanceInputDescNumericalFloat4 : ISubstanceInputDescNumerical
|
||||
{
|
||||
/// <summary>
|
||||
/// Default input value
|
||||
/// </summary>
|
||||
public Vector4 DefaultValue;
|
||||
|
||||
/// <summary>
|
||||
/// Minimum value (UI hint only)
|
||||
/// </summary>
|
||||
public Vector4 MinValue;
|
||||
|
||||
/// <summary>
|
||||
/// Maximum value (UI hint only) (Only relevant if widget is Input_Slider)
|
||||
/// </summary>
|
||||
public Vector4 MaxValue;
|
||||
|
||||
/// <summary>
|
||||
/// Slider step size (UI hint only) (Only relevant if widget is Input_Slider)
|
||||
/// </summary>
|
||||
public float SliderStep;
|
||||
|
||||
/// <summary>
|
||||
/// Should the slider clamp the value? (UI hint only) (Only relevant if widget is Input_Slider)
|
||||
/// </summary>
|
||||
public bool SliderClamp;
|
||||
|
||||
/// <summary>
|
||||
/// Number of enum option for this value.
|
||||
/// </summary>
|
||||
public int EnumValueCount;
|
||||
|
||||
/// <summary>
|
||||
/// Array of enum values for this property. Only relevant if widget is SBSARIO_WIDGET_COMBOBOX (UI hint only).
|
||||
/// </summary>
|
||||
public SubstanceFloat4EnumOption[] EnumValues;
|
||||
}
|
||||
|
||||
[System.Serializable]
|
||||
public class SubstanceFloat4EnumOption
|
||||
{
|
||||
public Vector4 Value;
|
||||
|
||||
public string Label;
|
||||
}
|
||||
}
|
@ -1,11 +0,0 @@
|
||||
fileFormatVersion: 2
|
||||
guid: b59f3763c24dd4b489b67cbf059c97e7
|
||||
MonoImporter:
|
||||
externalObjects: {}
|
||||
serializedVersion: 2
|
||||
defaultReferences: []
|
||||
executionOrder: 0
|
||||
icon: {instanceID: 0}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
@ -1,63 +0,0 @@
|
||||
using System.Collections;
|
||||
using System.Collections.Generic;
|
||||
using UnityEngine;
|
||||
|
||||
namespace Adobe.Substance.Input.Description
|
||||
{
|
||||
/// <summary>
|
||||
/// Numeric input description for input of type int.
|
||||
/// </summary>
|
||||
[System.Serializable]
|
||||
public class SubstanceInputDescNumericalInt : ISubstanceInputDescNumerical
|
||||
{
|
||||
/// <summary>
|
||||
/// Default input value
|
||||
/// </summary>
|
||||
public int DefaultValue;
|
||||
|
||||
/// <summary>
|
||||
/// Minimum value (UI hint only)
|
||||
/// </summary>
|
||||
public int MinValue;
|
||||
|
||||
/// <summary>
|
||||
/// Maximum value. Only relevant if widget is Slider (UI hint only)
|
||||
/// </summary>
|
||||
public int MaxValue;
|
||||
|
||||
/// <summary>
|
||||
/// Slider step size. Only relevant if widget is Slider (UI hint only).
|
||||
/// </summary>
|
||||
public float SliderStep;
|
||||
|
||||
/// <summary>
|
||||
/// True if the slider value is clamped. Only relevant if widget is Slider (UI hint only)
|
||||
/// </summary>
|
||||
public bool SliderClamp;
|
||||
|
||||
/// <summary>
|
||||
/// If non-empty, the labels to use for False (unchecked) and True (checked) values. Only relevant if widget is Input_Togglebutton
|
||||
/// </summary>
|
||||
public string LabelFalse;
|
||||
|
||||
public string LabelTrue;
|
||||
|
||||
/// <summary>
|
||||
/// Number of enum option for this value.
|
||||
/// </summary>
|
||||
public int EnumValueCount;
|
||||
|
||||
/// <summary>
|
||||
/// Array of enum values for this property. Only relevant if widget is SBSARIO_WIDGET_COMBOBOX (UI hint only).
|
||||
/// </summary>
|
||||
public SubstanceIntEnumOption[] EnumValues;
|
||||
}
|
||||
|
||||
[System.Serializable]
|
||||
public class SubstanceIntEnumOption
|
||||
{
|
||||
public int Value;
|
||||
|
||||
public string Label;
|
||||
}
|
||||
}
|
@ -1,11 +0,0 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 4505bd299acddfa42a93618bb3eb3144
|
||||
MonoImporter:
|
||||
externalObjects: {}
|
||||
serializedVersion: 2
|
||||
defaultReferences: []
|
||||
executionOrder: 0
|
||||
icon: {instanceID: 0}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
@ -1,51 +0,0 @@
|
||||
using System.Collections;
|
||||
using System.Collections.Generic;
|
||||
using UnityEngine;
|
||||
|
||||
namespace Adobe.Substance.Input.Description
|
||||
{
|
||||
/// <summary>
|
||||
/// Numeric input description for input of type int2.
|
||||
/// </summary>
|
||||
[System.Serializable]
|
||||
public class SubstanceInputDescNumericalInt2 : ISubstanceInputDescNumerical
|
||||
{
|
||||
/// <summary>
|
||||
/// Default input value
|
||||
/// </summary>
|
||||
public Vector2Int DefaultValue;
|
||||
|
||||
/// <summary>
|
||||
/// Minimum value (UI hint only)
|
||||
/// </summary>
|
||||
public Vector2Int MinValue;
|
||||
|
||||
/// <summary>
|
||||
/// Maximum value. Only relevant if widget is Slider (UI hint only)
|
||||
/// </summary>
|
||||
public Vector2Int MaxValue;
|
||||
|
||||
/// <summary>
|
||||
/// True if the slider value is clamped. Only relevant if widget is Slider (UI hint only)
|
||||
/// </summary>
|
||||
public bool SliderClamp;
|
||||
|
||||
/// <summary>
|
||||
/// Number of enum option for this value.
|
||||
/// </summary>
|
||||
public int EnumValueCount;
|
||||
|
||||
/// <summary>
|
||||
/// Array of enum values for this property. Only relevant if widget is ComboBox (UI hint only).
|
||||
/// </summary>
|
||||
public SubstanceInt2EnumOption[] EnumValues;
|
||||
}
|
||||
|
||||
[System.Serializable]
|
||||
public class SubstanceInt2EnumOption
|
||||
{
|
||||
public Vector2Int Value;
|
||||
|
||||
public string Label;
|
||||
}
|
||||
}
|
@ -1,11 +0,0 @@
|
||||
fileFormatVersion: 2
|
||||
guid: f227c26b9ad4bc144b20f140676c3d39
|
||||
MonoImporter:
|
||||
externalObjects: {}
|
||||
serializedVersion: 2
|
||||
defaultReferences: []
|
||||
executionOrder: 0
|
||||
icon: {instanceID: 0}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
@ -1,32 +0,0 @@
|
||||
using System.Collections;
|
||||
using System.Collections.Generic;
|
||||
using UnityEngine;
|
||||
|
||||
namespace Adobe.Substance.Input.Description
|
||||
{
|
||||
[System.Serializable]
|
||||
public class SubstanceInputDescNumericalInt3 : ISubstanceInputDescNumerical
|
||||
{
|
||||
public Vector3Int DefaultValue;
|
||||
|
||||
public Vector3Int MinValue;
|
||||
|
||||
public Vector3Int MaxValue;
|
||||
|
||||
public Vector3Int SliderStep;
|
||||
|
||||
public bool SliderClamp;
|
||||
|
||||
public int EnumValueCount;
|
||||
|
||||
public SubstanceInt3EnumOption[] EnumValues;
|
||||
}
|
||||
|
||||
[System.Serializable]
|
||||
public class SubstanceInt3EnumOption
|
||||
{
|
||||
public Vector3Int Value;
|
||||
|
||||
public string Label;
|
||||
}
|
||||
}
|
@ -1,11 +0,0 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 36e74c56f6c8da5478de4fa824d907ac
|
||||
MonoImporter:
|
||||
externalObjects: {}
|
||||
serializedVersion: 2
|
||||
defaultReferences: []
|
||||
executionOrder: 0
|
||||
icon: {instanceID: 0}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
@ -1,47 +0,0 @@
|
||||
using System.Collections;
|
||||
using System.Collections.Generic;
|
||||
using UnityEngine;
|
||||
|
||||
namespace Adobe.Substance.Input.Description
|
||||
{
|
||||
[System.Serializable]
|
||||
public class SubstanceInputDescNumericalInt4 : ISubstanceInputDescNumerical
|
||||
{
|
||||
public int DefaultValue0;
|
||||
public int DefaultValue1;
|
||||
public int DefaultValue2;
|
||||
public int DefaultValue3;
|
||||
|
||||
public int MinValue0;
|
||||
public int MinValue1;
|
||||
public int MinValue2;
|
||||
public int MinValue3;
|
||||
|
||||
public int MaxValue0;
|
||||
public int MaxValue1;
|
||||
public int MaxValue2;
|
||||
public int MaxValue3;
|
||||
|
||||
public int SliderStep0;
|
||||
public int SliderStep1;
|
||||
public int SliderStep2;
|
||||
public int SliderStep3;
|
||||
|
||||
public bool SliderClamp;
|
||||
|
||||
public int EnumValueCount;
|
||||
|
||||
public SubstanceInt4EnumOption[] EnumValues;
|
||||
}
|
||||
|
||||
[System.Serializable]
|
||||
public class SubstanceInt4EnumOption
|
||||
{
|
||||
public int Value0;
|
||||
public int Value1;
|
||||
public int Value2;
|
||||
public int Value3;
|
||||
|
||||
public string Label;
|
||||
}
|
||||
}
|
@ -1,11 +0,0 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 7ba763c16c13298419198087a5b6db66
|
||||
MonoImporter:
|
||||
externalObjects: {}
|
||||
serializedVersion: 2
|
||||
defaultReferences: []
|
||||
executionOrder: 0
|
||||
icon: {instanceID: 0}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
@ -1,21 +0,0 @@
|
||||
using System.Collections.Generic;
|
||||
using UnityEngine;
|
||||
|
||||
namespace Adobe.Substance.Input.Description
|
||||
{
|
||||
[System.Serializable]
|
||||
public class SubstanceInputDescription
|
||||
{
|
||||
public string Identifier;
|
||||
|
||||
public string Label;
|
||||
|
||||
public string GuiGroup;
|
||||
|
||||
public string GuiDescription;
|
||||
|
||||
public SubstanceValueType Type;
|
||||
|
||||
public SubstanceWidgetType WidgetType;
|
||||
}
|
||||
}
|
@ -1,11 +0,0 @@
|
||||
fileFormatVersion: 2
|
||||
guid: fc6a243b92a09374d89b9c500fffa0e9
|
||||
MonoImporter:
|
||||
externalObjects: {}
|
||||
serializedVersion: 2
|
||||
defaultReferences: []
|
||||
executionOrder: 0
|
||||
icon: {instanceID: 0}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
@ -1,117 +0,0 @@
|
||||
using System.Collections;
|
||||
using System.Collections.Generic;
|
||||
using UnityEngine;
|
||||
|
||||
using Adobe.Substance.Input.Description;
|
||||
|
||||
namespace Adobe.Substance.Input
|
||||
{
|
||||
public interface ISubstanceInput
|
||||
{
|
||||
int Index { get; }
|
||||
|
||||
SubstanceValueType ValueType { get; }
|
||||
|
||||
bool IsNumeric { get; }
|
||||
|
||||
bool IsValid { get; }
|
||||
SubstanceInputDescription Description { get; }
|
||||
|
||||
void UpdateNativeHandle(SubstanceNativeGraph handler);
|
||||
|
||||
internal void SetNumericDescription(NativeNumericInputDesc desc);
|
||||
|
||||
/// <summary>
|
||||
/// Assigns the native enum data from the substance engine to the numerical input description (Only valid if input is numeric)
|
||||
/// </summary>
|
||||
/// <param name="options"></param>
|
||||
internal void SetEnumOptions(NativeEnumInputDesc[] options);
|
||||
|
||||
bool TryGetNumericalDescription(out ISubstanceInputDescNumerical description);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Interface for representing all the different types of substance graph inputs.
|
||||
/// </summary>
|
||||
public abstract class SubstanceInputBase : ISubstanceInput
|
||||
{
|
||||
/// <summary>
|
||||
/// Input index inside the Substance Graph.
|
||||
/// </summary>
|
||||
public int Index;
|
||||
|
||||
/// <summary>
|
||||
/// Input type.
|
||||
/// </summary>
|
||||
public abstract SubstanceValueType ValueType { get; }
|
||||
|
||||
/// <summary>
|
||||
/// True if this input is numeric.
|
||||
/// </summary>
|
||||
public abstract bool IsNumeric { get; }
|
||||
|
||||
/// <summary>
|
||||
/// True if this input is supported by the Unity plugin.
|
||||
/// </summary>
|
||||
public abstract bool IsValid { get; }
|
||||
|
||||
/// <summary>
|
||||
/// Description with aditional information about the input.
|
||||
/// </summary>
|
||||
public SubstanceInputDescription Description;
|
||||
|
||||
/// <summary>
|
||||
/// Updates the native side of the substance engine with the current value for this input.
|
||||
/// </summary>
|
||||
/// <param name="handler"></param>
|
||||
public virtual void UpdateNativeHandle(SubstanceNativeGraph handler)
|
||||
{
|
||||
}
|
||||
|
||||
public virtual bool TryGetNumericalDescription(out ISubstanceInputDescNumerical description)
|
||||
{
|
||||
description = null;
|
||||
return false;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Assigns the native data from the substance engine to the numerical input description (Only valid if input is numeric)
|
||||
/// </summary>
|
||||
/// <param name="desc"></param>
|
||||
internal virtual void SetNumericDescription(NativeNumericInputDesc desc)
|
||||
{
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Assigns the native enum data from the substance engine to the numerical input description (Only valid if input is numeric)
|
||||
/// </summary>
|
||||
/// <param name="options"></param>
|
||||
internal virtual void SetEnumOptions(NativeEnumInputDesc[] options)
|
||||
{
|
||||
}
|
||||
|
||||
#region ISubstanceInput
|
||||
|
||||
int ISubstanceInput.Index => Index;
|
||||
|
||||
SubstanceInputDescription ISubstanceInput.Description => Description;
|
||||
|
||||
SubstanceValueType ISubstanceInput.ValueType => ValueType;
|
||||
|
||||
bool ISubstanceInput.IsNumeric => IsNumeric;
|
||||
|
||||
bool ISubstanceInput.IsValid => IsValid;
|
||||
|
||||
void ISubstanceInput.SetNumericDescription(NativeNumericInputDesc desc)
|
||||
{
|
||||
SetNumericDescription(desc);
|
||||
}
|
||||
|
||||
void ISubstanceInput.SetEnumOptions(NativeEnumInputDesc[] options)
|
||||
{
|
||||
SetEnumOptions(options);
|
||||
}
|
||||
|
||||
#endregion ISubstanceInput
|
||||
}
|
||||
}
|
@ -1,11 +0,0 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 82a826b2d9a131a4598c52e033409dae
|
||||
MonoImporter:
|
||||
externalObjects: {}
|
||||
serializedVersion: 2
|
||||
defaultReferences: []
|
||||
executionOrder: 0
|
||||
icon: {instanceID: 0}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
@ -1,67 +0,0 @@
|
||||
using System.Collections;
|
||||
using System.Collections.Generic;
|
||||
using UnityEngine;
|
||||
|
||||
namespace Adobe.Substance.Input
|
||||
{
|
||||
/// <summary>
|
||||
/// Static factory for creating Unity input object from native data.
|
||||
/// </summary>
|
||||
public static class SubstanceInputFactory
|
||||
{
|
||||
/// <summary>
|
||||
/// Create a unity data object from native substance data.
|
||||
/// </summary>
|
||||
/// <param name="nativeData">Native data.</param>
|
||||
/// <returns>Instance of a substance input interface object.</returns>
|
||||
internal static SubstanceInputBase CreateInput(NativeData nativeData)
|
||||
{
|
||||
int index = (int)nativeData.Index;
|
||||
DataInternalNumeric data = nativeData.Data;
|
||||
|
||||
switch (nativeData.ValueType)
|
||||
{
|
||||
case ValueType.SBSARIO_VALUE_FLOAT:
|
||||
return new SubstanceInputFloat(index, data);
|
||||
|
||||
case ValueType.SBSARIO_VALUE_FLOAT2:
|
||||
return new SubstanceInputFloat2(index, data);
|
||||
|
||||
case ValueType.SBSARIO_VALUE_FLOAT3:
|
||||
return new SubstanceInputFloat3(index, data);
|
||||
|
||||
case ValueType.SBSARIO_VALUE_FLOAT4:
|
||||
return new SubstanceInputFloat4(index, data);
|
||||
|
||||
case ValueType.SBSARIO_VALUE_INT:
|
||||
return new SubstanceInputInt(index, data);
|
||||
|
||||
case ValueType.SBSARIO_VALUE_INT2:
|
||||
return new SubstanceInputInt2(index, data);
|
||||
|
||||
case ValueType.SBSARIO_VALUE_INT3:
|
||||
return new SubstanceInputInt3(index, data);
|
||||
|
||||
case ValueType.SBSARIO_VALUE_INT4:
|
||||
return new SubstanceInputInt4(index, data);
|
||||
|
||||
case ValueType.SBSARIO_VALUE_IMAGE:
|
||||
return new SubstanceInputTexture(index, data);
|
||||
|
||||
case ValueType.SBSARIO_VALUE_STRING:
|
||||
return new SubstanceInputString(index, data);
|
||||
|
||||
case ValueType.SBSARIO_VALUE_FONT:
|
||||
return new SubstanceInputFont(index, data);
|
||||
|
||||
default:
|
||||
throw new System.InvalidOperationException($"Can not create unity type from native data for type {nativeData.ValueType}.");
|
||||
}
|
||||
}
|
||||
|
||||
internal static SubstanceInputBase CreateInvalidInput(int inputID)
|
||||
{
|
||||
return new SubstanceInvalidInput(inputID);
|
||||
}
|
||||
}
|
||||
}
|
@ -1,11 +0,0 @@
|
||||
fileFormatVersion: 2
|
||||
guid: bb4c90b1beaaf634092abf47829fe011
|
||||
MonoImporter:
|
||||
externalObjects: {}
|
||||
serializedVersion: 2
|
||||
defaultReferences: []
|
||||
executionOrder: 0
|
||||
icon: {instanceID: 0}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
@ -1,8 +0,0 @@
|
||||
fileFormatVersion: 2
|
||||
guid: a314bf34bf71b50468f5d639e47d5c14
|
||||
folderAsset: yes
|
||||
DefaultImporter:
|
||||
externalObjects: {}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
@ -1,71 +0,0 @@
|
||||
using Adobe.Substance.Input.Description;
|
||||
using System;
|
||||
using System.Collections;
|
||||
using System.Collections.Generic;
|
||||
using System.Runtime.InteropServices;
|
||||
using UnityEngine;
|
||||
|
||||
namespace Adobe.Substance.Input
|
||||
{
|
||||
[Serializable]
|
||||
public class SubstanceInputFloat : SubstanceInputBase
|
||||
{
|
||||
public float Data;
|
||||
|
||||
public SubstanceInputDescNumericalFloat NumericalDescription;
|
||||
|
||||
public override bool IsNumeric => true;
|
||||
public override bool IsValid => true;
|
||||
public override SubstanceValueType ValueType => SubstanceValueType.Float;
|
||||
|
||||
internal SubstanceInputFloat(int index, DataInternalNumeric data)
|
||||
{
|
||||
Index = index;
|
||||
Data = data.mFloatData0;
|
||||
}
|
||||
|
||||
public override void UpdateNativeHandle(SubstanceNativeGraph handler)
|
||||
{
|
||||
handler.SetInputFloat(Index, Data);
|
||||
}
|
||||
|
||||
internal override void SetNumericDescription(NativeNumericInputDesc desc)
|
||||
{
|
||||
NumericalDescription = new SubstanceInputDescNumericalFloat
|
||||
{
|
||||
DefaultValue = desc.default_value.mFloatData0,
|
||||
MaxValue = desc.max_value.mFloatData0,
|
||||
MinValue = desc.min_value.mFloatData0,
|
||||
SliderClamp = Convert.ToBoolean(desc.sliderClamp.ToInt32()),
|
||||
SliderStep = desc.sliderStep,
|
||||
EnumValueCount = desc.enumValueCount.ToInt32()
|
||||
};
|
||||
|
||||
return;
|
||||
}
|
||||
|
||||
internal override void SetEnumOptions(NativeEnumInputDesc[] options)
|
||||
{
|
||||
NumericalDescription.EnumValues = new SubstanceFloatEnumOption[options.Length];
|
||||
|
||||
for (int i = 0; i < NumericalDescription.EnumValues.Length; i++)
|
||||
{
|
||||
var option = new SubstanceFloatEnumOption
|
||||
{
|
||||
Label = Marshal.PtrToStringAnsi(options[i].label),
|
||||
Value = options[i].value.mFloatData0
|
||||
};
|
||||
|
||||
NumericalDescription.EnumValues[i] = option;
|
||||
}
|
||||
|
||||
return;
|
||||
}
|
||||
|
||||
public override bool TryGetNumericalDescription(out ISubstanceInputDescNumerical description)
|
||||
{
|
||||
description = NumericalDescription;
|
||||
return true;
|
||||
}
|
||||
}
|
||||
}
|
@ -1,11 +0,0 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 6a2b5e2d6e8627946aee84ca2cad43a2
|
||||
MonoImporter:
|
||||
externalObjects: {}
|
||||
serializedVersion: 2
|
||||
defaultReferences: []
|
||||
executionOrder: 0
|
||||
icon: {instanceID: 0}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
@ -1,71 +0,0 @@
|
||||
using System.Collections;
|
||||
using System.Collections.Generic;
|
||||
using UnityEngine;
|
||||
using Adobe.Substance.Input.Description;
|
||||
using System;
|
||||
using System.Runtime.InteropServices;
|
||||
|
||||
namespace Adobe.Substance.Input
|
||||
{
|
||||
[System.Serializable]
|
||||
public class SubstanceInputFloat2 : SubstanceInputBase
|
||||
{
|
||||
public Vector2 Data;
|
||||
|
||||
public SubstanceInputDescNumericalFloat2 NumericalDescription;
|
||||
|
||||
public override SubstanceValueType ValueType => SubstanceValueType.Float2;
|
||||
public override bool IsNumeric => true;
|
||||
public override bool IsValid => true;
|
||||
|
||||
internal SubstanceInputFloat2(int index, DataInternalNumeric data)
|
||||
{
|
||||
Index = index;
|
||||
Data = new Vector2(data.mFloatData0, data.mFloatData1);
|
||||
}
|
||||
|
||||
public override void UpdateNativeHandle(SubstanceNativeGraph handler)
|
||||
{
|
||||
handler.SetInputFloat2(Index, Data);
|
||||
}
|
||||
|
||||
internal override void SetNumericDescription(NativeNumericInputDesc desc)
|
||||
{
|
||||
NumericalDescription = new SubstanceInputDescNumericalFloat2
|
||||
{
|
||||
DefaultValue = new Vector2(desc.default_value.mFloatData0, desc.default_value.mFloatData1),
|
||||
MaxValue = new Vector2(desc.max_value.mFloatData0, desc.max_value.mFloatData1),
|
||||
MinValue = new Vector2(desc.min_value.mFloatData0, desc.min_value.mFloatData1),
|
||||
SliderClamp = Convert.ToBoolean(desc.sliderClamp.ToInt32()),
|
||||
SliderStep = desc.sliderStep,
|
||||
EnumValueCount = desc.enumValueCount.ToInt32()
|
||||
};
|
||||
|
||||
return;
|
||||
}
|
||||
|
||||
internal override void SetEnumOptions(NativeEnumInputDesc[] options)
|
||||
{
|
||||
NumericalDescription.EnumValues = new SubstanceFloat2EnumOption[options.Length];
|
||||
|
||||
for (int i = 0; i < NumericalDescription.EnumValues.Length; i++)
|
||||
{
|
||||
var option = new SubstanceFloat2EnumOption
|
||||
{
|
||||
Label = Marshal.PtrToStringAnsi(options[i].label),
|
||||
Value = new Vector2(options[i].value.mFloatData0, options[i].value.mFloatData1)
|
||||
};
|
||||
|
||||
NumericalDescription.EnumValues[i] = option;
|
||||
}
|
||||
|
||||
return;
|
||||
}
|
||||
|
||||
public override bool TryGetNumericalDescription(out ISubstanceInputDescNumerical description)
|
||||
{
|
||||
description = NumericalDescription;
|
||||
return true;
|
||||
}
|
||||
}
|
||||
}
|
@ -1,11 +0,0 @@
|
||||
fileFormatVersion: 2
|
||||
guid: d0c4e3cee5c04494089d8b2b921a09a7
|
||||
MonoImporter:
|
||||
externalObjects: {}
|
||||
serializedVersion: 2
|
||||
defaultReferences: []
|
||||
executionOrder: 0
|
||||
icon: {instanceID: 0}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
@ -1,71 +0,0 @@
|
||||
using System.Collections;
|
||||
using System.Collections.Generic;
|
||||
using UnityEngine;
|
||||
using Adobe.Substance.Input.Description;
|
||||
using System;
|
||||
using System.Runtime.InteropServices;
|
||||
|
||||
namespace Adobe.Substance.Input
|
||||
{
|
||||
[System.Serializable]
|
||||
public class SubstanceInputFloat3 : SubstanceInputBase
|
||||
{
|
||||
public Vector3 Data;
|
||||
|
||||
public SubstanceInputDescNumericalFloat3 NumericalDescription;
|
||||
|
||||
public override SubstanceValueType ValueType => SubstanceValueType.Float3;
|
||||
public override bool IsNumeric => true;
|
||||
public override bool IsValid => true;
|
||||
|
||||
internal SubstanceInputFloat3(int index, DataInternalNumeric data)
|
||||
{
|
||||
Index = index;
|
||||
Data = new Vector3(data.mFloatData0, data.mFloatData1, data.mFloatData2);
|
||||
}
|
||||
|
||||
public override void UpdateNativeHandle(SubstanceNativeGraph handler)
|
||||
{
|
||||
handler.SetInputFloat3(Index, Data);
|
||||
}
|
||||
|
||||
internal override void SetNumericDescription(NativeNumericInputDesc desc)
|
||||
{
|
||||
NumericalDescription = new SubstanceInputDescNumericalFloat3
|
||||
{
|
||||
DefaultValue = new Vector3(desc.default_value.mFloatData0, desc.default_value.mFloatData1, desc.default_value.mFloatData2),
|
||||
MaxValue = new Vector3(desc.max_value.mFloatData0, desc.max_value.mFloatData1, desc.max_value.mFloatData2),
|
||||
MinValue = new Vector3(desc.min_value.mFloatData0, desc.min_value.mFloatData1, desc.min_value.mFloatData2),
|
||||
SliderClamp = Convert.ToBoolean(desc.sliderClamp.ToInt32()),
|
||||
SliderStep = desc.sliderStep,
|
||||
EnumValueCount = desc.enumValueCount.ToInt32()
|
||||
};
|
||||
|
||||
return;
|
||||
}
|
||||
|
||||
internal override void SetEnumOptions(NativeEnumInputDesc[] options)
|
||||
{
|
||||
NumericalDescription.EnumValues = new SubstanceFloat3EnumOption[options.Length];
|
||||
|
||||
for (int i = 0; i < NumericalDescription.EnumValues.Length; i++)
|
||||
{
|
||||
var option = new SubstanceFloat3EnumOption
|
||||
{
|
||||
Label = Marshal.PtrToStringAnsi(options[i].label),
|
||||
Value = new Vector3(options[i].value.mFloatData0, options[i].value.mFloatData1, options[i].value.mFloatData2)
|
||||
};
|
||||
|
||||
NumericalDescription.EnumValues[i] = option;
|
||||
}
|
||||
|
||||
return;
|
||||
}
|
||||
|
||||
public override bool TryGetNumericalDescription(out ISubstanceInputDescNumerical description)
|
||||
{
|
||||
description = NumericalDescription;
|
||||
return true;
|
||||
}
|
||||
}
|
||||
}
|
@ -1,11 +0,0 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 972cacc8762922b4c899c029ca6f30ee
|
||||
MonoImporter:
|
||||
externalObjects: {}
|
||||
serializedVersion: 2
|
||||
defaultReferences: []
|
||||
executionOrder: 0
|
||||
icon: {instanceID: 0}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
@ -1,71 +0,0 @@
|
||||
using System.Collections;
|
||||
using System.Collections.Generic;
|
||||
using UnityEngine;
|
||||
using Adobe.Substance.Input.Description;
|
||||
using System;
|
||||
using System.Runtime.InteropServices;
|
||||
|
||||
namespace Adobe.Substance.Input
|
||||
{
|
||||
[System.Serializable]
|
||||
public class SubstanceInputFloat4 : SubstanceInputBase
|
||||
{
|
||||
public Vector4 Data;
|
||||
|
||||
public SubstanceInputDescNumericalFloat4 NumericalDescription;
|
||||
|
||||
public override bool IsNumeric => true;
|
||||
public override bool IsValid => true;
|
||||
public override SubstanceValueType ValueType => SubstanceValueType.Float4;
|
||||
|
||||
internal SubstanceInputFloat4(int index, DataInternalNumeric data)
|
||||
{
|
||||
Index = index;
|
||||
Data = new Vector4(data.mFloatData0, data.mFloatData1, data.mFloatData2, data.mFloatData3);
|
||||
}
|
||||
|
||||
public override void UpdateNativeHandle(SubstanceNativeGraph handler)
|
||||
{
|
||||
handler.SetInputFloat4(Index, Data);
|
||||
}
|
||||
|
||||
internal override void SetNumericDescription(NativeNumericInputDesc desc)
|
||||
{
|
||||
NumericalDescription = new SubstanceInputDescNumericalFloat4
|
||||
{
|
||||
DefaultValue = new Vector4(desc.default_value.mFloatData0, desc.default_value.mFloatData1, desc.default_value.mFloatData2, desc.default_value.mFloatData3),
|
||||
MaxValue = new Vector4(desc.max_value.mFloatData0, desc.max_value.mFloatData1, desc.max_value.mFloatData2, desc.max_value.mFloatData3),
|
||||
MinValue = new Vector4(desc.min_value.mFloatData0, desc.min_value.mFloatData1, desc.min_value.mFloatData2, desc.min_value.mFloatData3),
|
||||
SliderClamp = Convert.ToBoolean(desc.sliderClamp.ToInt32()),
|
||||
SliderStep = desc.sliderStep,
|
||||
EnumValueCount = desc.enumValueCount.ToInt32()
|
||||
};
|
||||
|
||||
return;
|
||||
}
|
||||
|
||||
internal override void SetEnumOptions(NativeEnumInputDesc[] options)
|
||||
{
|
||||
NumericalDescription.EnumValues = new SubstanceFloat4EnumOption[options.Length];
|
||||
|
||||
for (int i = 0; i < NumericalDescription.EnumValues.Length; i++)
|
||||
{
|
||||
var option = new SubstanceFloat4EnumOption
|
||||
{
|
||||
Label = Marshal.PtrToStringAnsi(options[i].label),
|
||||
Value = new Vector4(options[i].value.mFloatData0, options[i].value.mFloatData1, options[i].value.mFloatData2, options[i].value.mFloatData3)
|
||||
};
|
||||
|
||||
NumericalDescription.EnumValues[i] = option;
|
||||
}
|
||||
|
||||
return;
|
||||
}
|
||||
|
||||
public override bool TryGetNumericalDescription(out ISubstanceInputDescNumerical description)
|
||||
{
|
||||
description = NumericalDescription;
|
||||
return true;
|
||||
}
|
||||
}
|
||||
}
|
@ -1,11 +0,0 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 38a7b8b2e997dce43af21e967aabeb90
|
||||
MonoImporter:
|
||||
externalObjects: {}
|
||||
serializedVersion: 2
|
||||
defaultReferences: []
|
||||
executionOrder: 0
|
||||
icon: {instanceID: 0}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
@ -1,37 +0,0 @@
|
||||
using System;
|
||||
using UnityEngine;
|
||||
using Adobe.Substance.Input.Description;
|
||||
|
||||
namespace Adobe.Substance.Input
|
||||
{
|
||||
[System.Serializable]
|
||||
public class SubstanceInputFont : SubstanceInputBase
|
||||
{
|
||||
public Font Data;
|
||||
public override bool IsValid => true;
|
||||
public override SubstanceValueType ValueType => SubstanceValueType.Font;
|
||||
public override bool IsNumeric => false;
|
||||
public ISubstanceInputDescNumerical NumericalDescription => null;
|
||||
|
||||
internal SubstanceInputFont(int index, DataInternalNumeric data)
|
||||
{
|
||||
Index = index;
|
||||
Data = null;
|
||||
}
|
||||
|
||||
public override void UpdateNativeHandle(SubstanceNativeGraph handler)
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
internal override void SetNumericDescription(NativeNumericInputDesc desc)
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
internal override void SetEnumOptions(NativeEnumInputDesc[] options)
|
||||
{
|
||||
return;
|
||||
}
|
||||
}
|
||||
}
|
@ -1,11 +0,0 @@
|
||||
fileFormatVersion: 2
|
||||
guid: b54963e3fd7509d47a7807204ab5ad0c
|
||||
MonoImporter:
|
||||
externalObjects: {}
|
||||
serializedVersion: 2
|
||||
defaultReferences: []
|
||||
executionOrder: 0
|
||||
icon: {instanceID: 0}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
@ -1,69 +0,0 @@
|
||||
using System.Collections;
|
||||
using System.Collections.Generic;
|
||||
using UnityEngine;
|
||||
using Adobe.Substance.Input.Description;
|
||||
using System;
|
||||
using System.Runtime.InteropServices;
|
||||
|
||||
namespace Adobe.Substance.Input
|
||||
{
|
||||
[System.Serializable]
|
||||
public class SubstanceInputInt : SubstanceInputBase
|
||||
{
|
||||
public int Data;
|
||||
|
||||
public SubstanceInputDescNumericalInt NumericalDescription;
|
||||
|
||||
public override bool IsValid => true;
|
||||
public override SubstanceValueType ValueType => SubstanceValueType.Int;
|
||||
public override bool IsNumeric => true;
|
||||
|
||||
internal SubstanceInputInt(int index, DataInternalNumeric data)
|
||||
{
|
||||
Index = index;
|
||||
Data = data.mIntData0;
|
||||
}
|
||||
|
||||
public override void UpdateNativeHandle(SubstanceNativeGraph handler)
|
||||
{
|
||||
handler.SetInputInt(Index, Data);
|
||||
}
|
||||
|
||||
internal override void SetNumericDescription(NativeNumericInputDesc desc)
|
||||
{
|
||||
NumericalDescription = new SubstanceInputDescNumericalInt
|
||||
{
|
||||
DefaultValue = desc.default_value.mIntData0,
|
||||
MaxValue = desc.max_value.mIntData0,
|
||||
MinValue = desc.min_value.mIntData0,
|
||||
SliderClamp = Convert.ToBoolean(desc.sliderClamp.ToInt32()),
|
||||
SliderStep = desc.sliderStep,
|
||||
EnumValueCount = desc.enumValueCount.ToInt32()
|
||||
};
|
||||
}
|
||||
|
||||
internal override void SetEnumOptions(NativeEnumInputDesc[] options)
|
||||
{
|
||||
NumericalDescription.EnumValues = new SubstanceIntEnumOption[options.Length];
|
||||
|
||||
for (int i = 0; i < NumericalDescription.EnumValues.Length; i++)
|
||||
{
|
||||
var option = new SubstanceIntEnumOption
|
||||
{
|
||||
Label = Marshal.PtrToStringAnsi(options[i].label),
|
||||
Value = options[i].value.mIntData0
|
||||
};
|
||||
|
||||
NumericalDescription.EnumValues[i] = option;
|
||||
}
|
||||
|
||||
return;
|
||||
}
|
||||
|
||||
public override bool TryGetNumericalDescription(out ISubstanceInputDescNumerical description)
|
||||
{
|
||||
description = NumericalDescription;
|
||||
return true;
|
||||
}
|
||||
}
|
||||
}
|
@ -1,11 +0,0 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 1601ac9007c2d7a40a34b1bb071fd814
|
||||
MonoImporter:
|
||||
externalObjects: {}
|
||||
serializedVersion: 2
|
||||
defaultReferences: []
|
||||
executionOrder: 0
|
||||
icon: {instanceID: 0}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
@ -1,64 +0,0 @@
|
||||
using System;
|
||||
using UnityEngine;
|
||||
using System.Runtime.InteropServices;
|
||||
using Adobe.Substance.Input.Description;
|
||||
|
||||
namespace Adobe.Substance.Input
|
||||
{
|
||||
[System.Serializable]
|
||||
public class SubstanceInputInt2 : SubstanceInputBase
|
||||
{
|
||||
public Vector2Int Data;
|
||||
|
||||
public SubstanceInputDescNumericalInt2 NumericalDescription;
|
||||
|
||||
public override bool IsValid => true;
|
||||
public override SubstanceValueType ValueType => SubstanceValueType.Int2;
|
||||
public override bool IsNumeric => true;
|
||||
|
||||
internal SubstanceInputInt2(int index, DataInternalNumeric data)
|
||||
{
|
||||
Index = index;
|
||||
Data = new Vector2Int(data.mIntData0, data.mIntData1);
|
||||
}
|
||||
|
||||
public override void UpdateNativeHandle(SubstanceNativeGraph handler)
|
||||
{
|
||||
handler.SetInputInt2(Index, Data);
|
||||
}
|
||||
|
||||
internal override void SetNumericDescription(NativeNumericInputDesc desc)
|
||||
{
|
||||
NumericalDescription = new SubstanceInputDescNumericalInt2
|
||||
{
|
||||
DefaultValue = new Vector2Int(desc.default_value.mIntData0, desc.default_value.mIntData1),
|
||||
MaxValue = new Vector2Int(desc.max_value.mIntData0, desc.max_value.mIntData1),
|
||||
MinValue = new Vector2Int(desc.min_value.mIntData0, desc.min_value.mIntData1),
|
||||
SliderClamp = Convert.ToBoolean(desc.sliderClamp.ToInt32()),
|
||||
EnumValueCount = desc.enumValueCount.ToInt32()
|
||||
};
|
||||
}
|
||||
|
||||
internal override void SetEnumOptions(NativeEnumInputDesc[] options)
|
||||
{
|
||||
NumericalDescription.EnumValues = new SubstanceInt2EnumOption[options.Length];
|
||||
|
||||
for (int i = 0; i < NumericalDescription.EnumValues.Length; i++)
|
||||
{
|
||||
var option = new SubstanceInt2EnumOption
|
||||
{
|
||||
Label = Marshal.PtrToStringAnsi(options[i].label),
|
||||
Value = new Vector2Int(options[i].value.mIntData0, options[i].value.mIntData1)
|
||||
};
|
||||
|
||||
NumericalDescription.EnumValues[i] = option;
|
||||
}
|
||||
}
|
||||
|
||||
public override bool TryGetNumericalDescription(out ISubstanceInputDescNumerical description)
|
||||
{
|
||||
description = NumericalDescription;
|
||||
return true;
|
||||
}
|
||||
}
|
||||
}
|
@ -1,11 +0,0 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 1edf95e7b56e87b43bf900d164c150b9
|
||||
MonoImporter:
|
||||
externalObjects: {}
|
||||
serializedVersion: 2
|
||||
defaultReferences: []
|
||||
executionOrder: 0
|
||||
icon: {instanceID: 0}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
@ -1,64 +0,0 @@
|
||||
using UnityEngine;
|
||||
using System;
|
||||
using System.Runtime.InteropServices;
|
||||
using Adobe.Substance.Input.Description;
|
||||
|
||||
namespace Adobe.Substance.Input
|
||||
{
|
||||
[System.Serializable]
|
||||
public class SubstanceInputInt3 : SubstanceInputBase
|
||||
{
|
||||
public Vector3Int Data;
|
||||
|
||||
public SubstanceInputDescNumericalInt3 NumericalDescription;
|
||||
|
||||
public override bool IsValid => true;
|
||||
public override SubstanceValueType ValueType => SubstanceValueType.Int3;
|
||||
public override bool IsNumeric => true;
|
||||
|
||||
internal SubstanceInputInt3(int index, DataInternalNumeric data)
|
||||
{
|
||||
Index = index;
|
||||
Data = new Vector3Int(data.mIntData0, data.mIntData1, data.mIntData2);
|
||||
}
|
||||
|
||||
public override void UpdateNativeHandle(SubstanceNativeGraph handler)
|
||||
{
|
||||
handler.SetInputInt3(Index, Data);
|
||||
}
|
||||
|
||||
internal override void SetNumericDescription(NativeNumericInputDesc desc)
|
||||
{
|
||||
NumericalDescription = new SubstanceInputDescNumericalInt3
|
||||
{
|
||||
DefaultValue = new Vector3Int(desc.default_value.mIntData0, desc.default_value.mIntData1, desc.default_value.mIntData2),
|
||||
MaxValue = new Vector3Int(desc.max_value.mIntData0, desc.max_value.mIntData1, desc.max_value.mIntData2),
|
||||
MinValue = new Vector3Int(desc.min_value.mIntData0, desc.min_value.mIntData1, desc.min_value.mIntData2),
|
||||
SliderClamp = Convert.ToBoolean(desc.sliderClamp.ToInt32()),
|
||||
EnumValueCount = desc.enumValueCount.ToInt32()
|
||||
};
|
||||
}
|
||||
|
||||
internal override void SetEnumOptions(NativeEnumInputDesc[] options)
|
||||
{
|
||||
NumericalDescription.EnumValues = new SubstanceInt3EnumOption[options.Length];
|
||||
|
||||
for (int i = 0; i < NumericalDescription.EnumValues.Length; i++)
|
||||
{
|
||||
var option = new SubstanceInt3EnumOption
|
||||
{
|
||||
Label = Marshal.PtrToStringAnsi(options[i].label),
|
||||
Value = new Vector3Int(options[i].value.mIntData0, options[i].value.mIntData1, options[i].value.mIntData2)
|
||||
};
|
||||
|
||||
NumericalDescription.EnumValues[i] = option;
|
||||
}
|
||||
}
|
||||
|
||||
public override bool TryGetNumericalDescription(out ISubstanceInputDescNumerical description)
|
||||
{
|
||||
description = NumericalDescription;
|
||||
return true;
|
||||
}
|
||||
}
|
||||
}
|
@ -1,11 +0,0 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 920e7de597d6a3744b255c5fa47734d5
|
||||
MonoImporter:
|
||||
externalObjects: {}
|
||||
serializedVersion: 2
|
||||
defaultReferences: []
|
||||
executionOrder: 0
|
||||
icon: {instanceID: 0}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
@ -1,92 +0,0 @@
|
||||
using System.Collections;
|
||||
using System.Collections.Generic;
|
||||
using UnityEngine;
|
||||
using Adobe.Substance.Input.Description;
|
||||
using System;
|
||||
using System.Runtime.InteropServices;
|
||||
|
||||
namespace Adobe.Substance.Input
|
||||
{
|
||||
[Serializable]
|
||||
public class SubstanceInputInt4 : SubstanceInputBase
|
||||
{
|
||||
public int Data0;
|
||||
|
||||
public int Data1;
|
||||
|
||||
public int Data2;
|
||||
|
||||
public int Data3;
|
||||
|
||||
public SubstanceInputDescNumericalInt4 NumericalDescription;
|
||||
|
||||
public override bool IsValid => true;
|
||||
public override SubstanceValueType ValueType => SubstanceValueType.Int4;
|
||||
public override bool IsNumeric => true;
|
||||
|
||||
internal SubstanceInputInt4(int index, DataInternalNumeric data)
|
||||
{
|
||||
Index = index;
|
||||
Data0 = data.mIntData0;
|
||||
Data1 = data.mIntData1;
|
||||
Data2 = data.mIntData2;
|
||||
Data3 = data.mIntData3;
|
||||
}
|
||||
|
||||
public override void UpdateNativeHandle(SubstanceNativeGraph handler)
|
||||
{
|
||||
handler.SetInputInt4(Index, Data0, Data1, Data2, Data3);
|
||||
}
|
||||
|
||||
internal override void SetNumericDescription(NativeNumericInputDesc desc)
|
||||
{
|
||||
NumericalDescription = new SubstanceInputDescNumericalInt4
|
||||
{
|
||||
DefaultValue0 = desc.default_value.mIntData0,
|
||||
DefaultValue1 = desc.default_value.mIntData1,
|
||||
DefaultValue2 = desc.default_value.mIntData2,
|
||||
DefaultValue3 = desc.default_value.mIntData3,
|
||||
|
||||
MaxValue0 = desc.max_value.mIntData0,
|
||||
MaxValue1 = desc.max_value.mIntData1,
|
||||
MaxValue2 = desc.max_value.mIntData2,
|
||||
MaxValue3 = desc.max_value.mIntData3,
|
||||
|
||||
MinValue0 = desc.min_value.mIntData0,
|
||||
MinValue1 = desc.min_value.mIntData1,
|
||||
MinValue2 = desc.min_value.mIntData2,
|
||||
MinValue3 = desc.min_value.mIntData3,
|
||||
|
||||
SliderClamp = Convert.ToBoolean(desc.sliderClamp.ToInt32()),
|
||||
EnumValueCount = desc.enumValueCount.ToInt32()
|
||||
};
|
||||
}
|
||||
|
||||
internal override void SetEnumOptions(NativeEnumInputDesc[] options)
|
||||
{
|
||||
NumericalDescription.EnumValues = new SubstanceInt4EnumOption[options.Length];
|
||||
|
||||
for (int i = 0; i < NumericalDescription.EnumValues.Length; i++)
|
||||
{
|
||||
var option = new SubstanceInt4EnumOption
|
||||
{
|
||||
Label = Marshal.PtrToStringAnsi(options[i].label),
|
||||
Value0 = options[i].value.mIntData0,
|
||||
Value1 = options[i].value.mIntData1,
|
||||
Value2 = options[i].value.mIntData2,
|
||||
Value3 = options[i].value.mIntData3
|
||||
};
|
||||
|
||||
NumericalDescription.EnumValues[i] = option;
|
||||
}
|
||||
|
||||
return;
|
||||
}
|
||||
|
||||
public override bool TryGetNumericalDescription(out ISubstanceInputDescNumerical description)
|
||||
{
|
||||
description = NumericalDescription;
|
||||
return true;
|
||||
}
|
||||
}
|
||||
}
|
@ -1,11 +0,0 @@
|
||||
fileFormatVersion: 2
|
||||
guid: bf61790262550134a96f236697c83fe8
|
||||
MonoImporter:
|
||||
externalObjects: {}
|
||||
serializedVersion: 2
|
||||
defaultReferences: []
|
||||
executionOrder: 0
|
||||
icon: {instanceID: 0}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
@ -1,39 +0,0 @@
|
||||
using System;
|
||||
using UnityEngine;
|
||||
using System.Runtime.InteropServices;
|
||||
using Adobe.Substance.Input.Description;
|
||||
|
||||
namespace Adobe.Substance.Input
|
||||
{
|
||||
[System.Serializable]
|
||||
public class SubstanceInputString : SubstanceInputBase
|
||||
{
|
||||
[Multiline]
|
||||
public string Data;
|
||||
|
||||
public override bool IsValid => true;
|
||||
public override SubstanceValueType ValueType => SubstanceValueType.String;
|
||||
public override bool IsNumeric => false;
|
||||
|
||||
internal SubstanceInputString(int index, DataInternalNumeric data)
|
||||
{
|
||||
Index = index;
|
||||
Data = Marshal.PtrToStringAnsi(data.mPtr);
|
||||
}
|
||||
|
||||
public override void UpdateNativeHandle(SubstanceNativeGraph handler)
|
||||
{
|
||||
handler.SetInputString(Index, Data);
|
||||
}
|
||||
|
||||
internal override void SetNumericDescription(NativeNumericInputDesc desc)
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
internal override void SetEnumOptions(NativeEnumInputDesc[] options)
|
||||
{
|
||||
return;
|
||||
}
|
||||
}
|
||||
}
|
@ -1,11 +0,0 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 3466988ea5300af49966ff9b94174f4c
|
||||
MonoImporter:
|
||||
externalObjects: {}
|
||||
serializedVersion: 2
|
||||
defaultReferences: []
|
||||
executionOrder: 0
|
||||
icon: {instanceID: 0}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
@ -1,49 +0,0 @@
|
||||
using System;
|
||||
using UnityEngine;
|
||||
using Adobe.Substance.Input.Description;
|
||||
using System.Runtime.InteropServices;
|
||||
|
||||
namespace Adobe.Substance.Input
|
||||
{
|
||||
[System.Serializable]
|
||||
public class SubstanceInputTexture : SubstanceInputBase
|
||||
{
|
||||
[SerializeField]
|
||||
private Texture2D Data;
|
||||
|
||||
public override bool IsValid => true;
|
||||
public override SubstanceValueType ValueType => SubstanceValueType.Image;
|
||||
public override bool IsNumeric => false;
|
||||
|
||||
internal SubstanceInputTexture(int index, DataInternalNumeric data)
|
||||
{
|
||||
Index = index;
|
||||
Data = null;
|
||||
}
|
||||
|
||||
public override void UpdateNativeHandle(SubstanceNativeGraph handler)
|
||||
{
|
||||
if (Data == null)
|
||||
return;
|
||||
|
||||
if (!Data.isReadable)
|
||||
{
|
||||
Debug.LogWarning($"Input textures must be set as readable. Texture assigned to {Description.Identifier} will have no effect.");
|
||||
return;
|
||||
}
|
||||
|
||||
var pixels = Data.GetPixels32();
|
||||
handler.SetInputTexture2D(Index, pixels, Data.width, Data.height);
|
||||
}
|
||||
|
||||
internal override void SetNumericDescription(NativeNumericInputDesc desc)
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
internal override void SetEnumOptions(NativeEnumInputDesc[] options)
|
||||
{
|
||||
return;
|
||||
}
|
||||
}
|
||||
}
|
@ -1,11 +0,0 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 1c1f96014c3c29946a956e0f6e220a34
|
||||
MonoImporter:
|
||||
externalObjects: {}
|
||||
serializedVersion: 2
|
||||
defaultReferences: []
|
||||
executionOrder: 0
|
||||
icon: {instanceID: 0}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
@ -1,34 +0,0 @@
|
||||
using System;
|
||||
using UnityEngine;
|
||||
using Adobe.Substance.Input.Description;
|
||||
|
||||
namespace Adobe.Substance.Input
|
||||
{
|
||||
[System.Serializable]
|
||||
public class SubstanceInvalidInput : SubstanceInputBase
|
||||
{
|
||||
public override bool IsValid => false;
|
||||
public override SubstanceValueType ValueType => Description.Type;
|
||||
public override bool IsNumeric => false;
|
||||
|
||||
public SubstanceInvalidInput(int index)
|
||||
{
|
||||
Index = index;
|
||||
}
|
||||
|
||||
public override void UpdateNativeHandle(SubstanceNativeGraph handler)
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
internal override void SetNumericDescription(NativeNumericInputDesc desc)
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
internal override void SetEnumOptions(NativeEnumInputDesc[] options)
|
||||
{
|
||||
return;
|
||||
}
|
||||
}
|
||||
}
|
@ -1,11 +0,0 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 1cdb98b233312594e90f752da97365a4
|
||||
MonoImporter:
|
||||
externalObjects: {}
|
||||
serializedVersion: 2
|
||||
defaultReferences: []
|
||||
executionOrder: 0
|
||||
icon: {instanceID: 0}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
@ -1,8 +0,0 @@
|
||||
fileFormatVersion: 2
|
||||
guid: db03028550561014ba04fce2cb7449ac
|
||||
folderAsset: yes
|
||||
DefaultImporter:
|
||||
externalObjects: {}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
@ -1,30 +0,0 @@
|
||||
namespace Adobe.Substance
|
||||
{
|
||||
[System.Serializable]
|
||||
public class SubstanceOutputDescription
|
||||
{
|
||||
[UnityEngine.SerializeField]
|
||||
public string Identifier;
|
||||
|
||||
[UnityEngine.SerializeField]
|
||||
public string Label;
|
||||
|
||||
[UnityEngine.SerializeField]
|
||||
public int Index;
|
||||
|
||||
[UnityEngine.SerializeField]
|
||||
public SubstanceValueType Type;
|
||||
|
||||
[UnityEngine.SerializeField]
|
||||
public string Channel;
|
||||
|
||||
public override string ToString()
|
||||
{
|
||||
return $"Identifier: {Identifier}\n" +
|
||||
$"Label:{Label}\n" +
|
||||
$"Index:{Index}\n" +
|
||||
$"Type:{Type}\n" +
|
||||
$"Channel{Channel}\n";
|
||||
}
|
||||
}
|
||||
}
|
@ -1,11 +0,0 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 06fa5ea573078b642bf69b2798e26884
|
||||
MonoImporter:
|
||||
externalObjects: {}
|
||||
serializedVersion: 2
|
||||
defaultReferences: []
|
||||
executionOrder: 0
|
||||
icon: {instanceID: 0}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
@ -1,58 +0,0 @@
|
||||
using UnityEngine;
|
||||
|
||||
namespace Adobe.Substance
|
||||
{
|
||||
[System.Serializable]
|
||||
public class SubstanceOutputTexture
|
||||
{
|
||||
[SerializeField]
|
||||
public int Index;
|
||||
|
||||
[SerializeField]
|
||||
public int VirtualOutputIndex;
|
||||
|
||||
[SerializeField]
|
||||
public SubstanceOutputDescription Description;
|
||||
|
||||
[SerializeField]
|
||||
public Texture2D OutputTexture;
|
||||
|
||||
[SerializeField]
|
||||
public bool sRGB;
|
||||
|
||||
[SerializeField]
|
||||
public bool IsVirtual;
|
||||
|
||||
[SerializeField]
|
||||
public bool IsAlphaAssignable;
|
||||
|
||||
[SerializeField]
|
||||
public string AlphaChannel;
|
||||
|
||||
[SerializeField]
|
||||
public bool InvertAssignedAlpha;
|
||||
|
||||
[SerializeField]
|
||||
public uint Flags = 0;
|
||||
|
||||
[SerializeField]
|
||||
public string MaterialTextureTarget;
|
||||
|
||||
public SubstanceOutputTexture(SubstanceOutputDescription description, string unityTextureName)
|
||||
{
|
||||
Index = description.Index;
|
||||
Description = description;
|
||||
MaterialTextureTarget = unityTextureName;
|
||||
|
||||
if (!string.IsNullOrEmpty(description.Channel))
|
||||
IsAlphaAssignable = !string.Equals(description.Channel, "normal", System.StringComparison.OrdinalIgnoreCase);
|
||||
else
|
||||
IsAlphaAssignable = false;
|
||||
|
||||
IsVirtual = false;
|
||||
sRGB = false;
|
||||
OutputTexture = null;
|
||||
AlphaChannel = string.Empty;
|
||||
}
|
||||
}
|
||||
}
|
@ -1,11 +0,0 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 4eb2b73a785c95a4c87339cd11964fb2
|
||||
MonoImporter:
|
||||
externalObjects: {}
|
||||
serializedVersion: 2
|
||||
defaultReferences: []
|
||||
executionOrder: 0
|
||||
icon: {instanceID: 0}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
@ -1,102 +0,0 @@
|
||||
using System.Collections;
|
||||
using System.Collections.Generic;
|
||||
using System.Runtime.InteropServices;
|
||||
using UnityEngine;
|
||||
|
||||
namespace Adobe.Substance
|
||||
{
|
||||
public class SubstanceVirtualOutputChannelInfo
|
||||
{
|
||||
public uint ChannelSource { get; }
|
||||
|
||||
public ShuffleIndex Index { get; }
|
||||
|
||||
public bool Invert { get; }
|
||||
|
||||
private const uint SBSARIO_USE_DEFAULT = ~0u;
|
||||
|
||||
private const uint SBSARIO_COMPONENT_EMPTY = 0;
|
||||
|
||||
public SubstanceVirtualOutputChannelInfo(uint outputUID, ShuffleIndex index = ShuffleIndex.Red, bool invert = false)
|
||||
{
|
||||
ChannelSource = outputUID;
|
||||
Index = index;
|
||||
Invert = invert;
|
||||
}
|
||||
|
||||
internal NativeOutputFormatComponent CreateNativeComponent()
|
||||
{
|
||||
return new NativeOutputFormatComponent()
|
||||
{
|
||||
levelMax = Invert ? 0 : 1,
|
||||
levelMin = Invert ? 1 : 0,
|
||||
outputIndex = ChannelSource,
|
||||
ShuffleIndex = Index
|
||||
};
|
||||
}
|
||||
|
||||
public readonly static SubstanceVirtualOutputChannelInfo Default = new SubstanceVirtualOutputChannelInfo(SBSARIO_USE_DEFAULT);
|
||||
|
||||
public readonly static SubstanceVirtualOutputChannelInfo Black = new SubstanceVirtualOutputChannelInfo(SBSARIO_COMPONENT_EMPTY, ShuffleIndex.Red);
|
||||
|
||||
public static SubstanceVirtualOutputChannelInfo White = new SubstanceVirtualOutputChannelInfo(SBSARIO_COMPONENT_EMPTY, ShuffleIndex.Red, true);
|
||||
}
|
||||
|
||||
public class SubstanceVirtualOutputCreateInfo
|
||||
{
|
||||
public TextureFormat Format { get; }
|
||||
|
||||
public string Label { get; }
|
||||
|
||||
public TextureFlip FlipOption { get; }
|
||||
|
||||
public SubstanceVirtualOutputChannelInfo RedChannelSource { get; }
|
||||
|
||||
public SubstanceVirtualOutputChannelInfo GreenChannelSource { get; }
|
||||
|
||||
public SubstanceVirtualOutputChannelInfo BlueChannelSource { get; }
|
||||
|
||||
public SubstanceVirtualOutputChannelInfo AlphaChannelSource { get; }
|
||||
|
||||
public SubstanceVirtualOutputCreateInfo(TextureFormat format,
|
||||
string name,
|
||||
TextureFlip flip = TextureFlip.None,
|
||||
params SubstanceVirtualOutputChannelInfo[] channels)
|
||||
{
|
||||
Format = format;
|
||||
Label = name;
|
||||
FlipOption = flip;
|
||||
RedChannelSource = channels.Length > 0 ? channels[0] : SubstanceVirtualOutputChannelInfo.Default;
|
||||
GreenChannelSource = channels.Length > 1 ? channels[1] : SubstanceVirtualOutputChannelInfo.Default;
|
||||
BlueChannelSource = channels.Length > 2 ? channels[2] : SubstanceVirtualOutputChannelInfo.Default;
|
||||
AlphaChannelSource = channels.Length > 3 ? channels[3] : SubstanceVirtualOutputChannelInfo.Default;
|
||||
}
|
||||
|
||||
internal NativeOutputDesc CreateOutputDesc()
|
||||
{
|
||||
var labelPtr = Marshal.StringToHGlobalAnsi(Label);
|
||||
|
||||
return new NativeOutputDesc()
|
||||
{
|
||||
mLabel = labelPtr,
|
||||
mIdentifier = labelPtr,
|
||||
mValueType = ValueType.SBSARIO_VALUE_IMAGE,
|
||||
};
|
||||
}
|
||||
|
||||
internal NativeOutputFormat CreateOutputFormat()
|
||||
{
|
||||
var format = new NativeOutputFormat
|
||||
{
|
||||
hvFlip = FlipOption.ToSubstance(),
|
||||
format = (uint)Format.ToSubstance()
|
||||
};
|
||||
|
||||
format.ChannelComponent0 = RedChannelSource.CreateNativeComponent();
|
||||
format.ChannelComponent1 = GreenChannelSource.CreateNativeComponent();
|
||||
format.ChannelComponent2 = BlueChannelSource.CreateNativeComponent();
|
||||
format.ChannelComponent3 = AlphaChannelSource.CreateNativeComponent();
|
||||
return format;
|
||||
}
|
||||
}
|
||||
}
|
@ -1,11 +0,0 @@
|
||||
fileFormatVersion: 2
|
||||
guid: c9be437653642a947898654bbb857e27
|
||||
MonoImporter:
|
||||
externalObjects: {}
|
||||
serializedVersion: 2
|
||||
defaultReferences: []
|
||||
executionOrder: 0
|
||||
icon: {instanceID: 0}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
@ -1,12 +0,0 @@
|
||||
using UnityEngine;
|
||||
|
||||
namespace Adobe.Substance
|
||||
{
|
||||
[PreferBinarySerialization]
|
||||
public class SubstanceFileRawData : ScriptableObject
|
||||
{
|
||||
[SerializeField]
|
||||
[HideInInspector]
|
||||
public byte[] FileContent = default;
|
||||
}
|
||||
}
|
@ -1,11 +0,0 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 9349db640c23d1b4ead3baa0734949e8
|
||||
MonoImporter:
|
||||
externalObjects: {}
|
||||
serializedVersion: 2
|
||||
defaultReferences: []
|
||||
executionOrder: 0
|
||||
icon: {instanceID: 0}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
@ -1,10 +0,0 @@
|
||||
using System.Collections;
|
||||
using System.Collections.Generic;
|
||||
using UnityEngine;
|
||||
|
||||
namespace Adobe.Substance
|
||||
{
|
||||
public class SubstanceFileSO : ScriptableObject
|
||||
{
|
||||
}
|
||||
}
|
@ -1,11 +0,0 @@
|
||||
fileFormatVersion: 2
|
||||
guid: f5f261fec84a6d544a8b61047a092314
|
||||
MonoImporter:
|
||||
externalObjects: {}
|
||||
serializedVersion: 2
|
||||
defaultReferences: []
|
||||
executionOrder: 0
|
||||
icon: {instanceID: 0}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
@ -1,355 +0,0 @@
|
||||
using Adobe.Substance.Input;
|
||||
using System;
|
||||
using System.Collections;
|
||||
using System.Collections.Concurrent;
|
||||
using System.Collections.Generic;
|
||||
using System.Runtime.InteropServices;
|
||||
using System.Threading.Tasks;
|
||||
using UnityEngine;
|
||||
|
||||
#if UNITY_EDITOR
|
||||
|
||||
using Unity.Collections.LowLevel.Unsafe;
|
||||
|
||||
#endif
|
||||
|
||||
namespace Adobe.Substance
|
||||
{
|
||||
/// <summary>
|
||||
/// Scriptable object to store information about an instance of a sbsar file. Each instance has it own input values and output textures.
|
||||
/// </summary>
|
||||
public class SubstanceGraphSO : ScriptableObject
|
||||
{
|
||||
/// <summary>
|
||||
/// Path to the sbsar file that owns this instance. (Editor only)
|
||||
/// </summary>
|
||||
[SerializeField]
|
||||
public string AssetPath = default;
|
||||
|
||||
/// <summary>
|
||||
/// Folder where assets related to this instance should be placed. (Editor only)
|
||||
/// </summary>
|
||||
[SerializeField]
|
||||
public string OutputPath = default;
|
||||
|
||||
/// <summary>
|
||||
/// Scriptable object that holds sbsar file binary data.
|
||||
/// </summary>
|
||||
[SerializeField]
|
||||
public SubstanceFileRawData RawData = default;
|
||||
|
||||
/// <summary>
|
||||
/// Name for the instance.
|
||||
/// </summary>
|
||||
[SerializeField]
|
||||
public string Name = default;
|
||||
|
||||
/// <summary>
|
||||
/// Is root instance.
|
||||
/// </summary>
|
||||
[SerializeField]
|
||||
public bool IsRoot = false;
|
||||
|
||||
/// <summary>
|
||||
/// Signalized for the API that this instance should be deleted. (Editor only)
|
||||
/// </summary>
|
||||
[SerializeField]
|
||||
public bool FlagedForDelete = false;
|
||||
|
||||
/// <summary>
|
||||
/// GUI to uniquely identify this instance during runtime.
|
||||
/// </summary>
|
||||
[SerializeField]
|
||||
public string GUID = default;
|
||||
|
||||
/// <summary>
|
||||
/// Graph index in the sbsar file. This is a property that is imported from the sbsar file and should not be assigned in Unity.
|
||||
/// </summary>
|
||||
[SerializeField]
|
||||
public int Index = -1;
|
||||
|
||||
/// <summary>
|
||||
/// Input list.
|
||||
/// </summary>
|
||||
[SerializeReference]
|
||||
public List<ISubstanceInput> Input = default;
|
||||
|
||||
/// <summary>
|
||||
/// Output list.
|
||||
/// </summary>
|
||||
[SerializeField]
|
||||
public List<SubstanceOutputTexture> Output = default;
|
||||
|
||||
/// <summary>
|
||||
/// True if this graph has physical size.
|
||||
/// </summary>
|
||||
[SerializeField]
|
||||
public bool HasPhysicalSize;
|
||||
|
||||
/// <summary>
|
||||
/// Graph physical size. If HasPhysicalSize is false this will be Vector3.zero.
|
||||
/// </summary>
|
||||
[SerializeField]
|
||||
public Vector3 PhysicalSize;
|
||||
|
||||
/// <summary>
|
||||
/// If se to true physical size will be applyed to the material.
|
||||
/// </summary>
|
||||
[SerializeField]
|
||||
public bool EnablePhysicalSize;
|
||||
|
||||
/// <summary>
|
||||
/// Sbsar file thumbnail data.
|
||||
/// </summary>
|
||||
[SerializeField]
|
||||
public byte[] Thumbnail = default;
|
||||
|
||||
/// <summary>
|
||||
/// True if sbsar file has thumbnail.
|
||||
/// </summary>
|
||||
[SerializeField]
|
||||
public bool HasThumbnail = false;
|
||||
|
||||
/// <summary>
|
||||
/// Preset that holds the current state of the inputs. (Editor only)
|
||||
/// </summary>
|
||||
[SerializeField]
|
||||
public string CurrentStatePreset = default;
|
||||
|
||||
/// <summary>
|
||||
/// If true, this asset will not generate tga files for the output textures.
|
||||
/// </summary>
|
||||
[SerializeField]
|
||||
public bool IsRuntimeOnly = false;
|
||||
|
||||
/// <summary>
|
||||
/// True if this graph should generate all outputs.
|
||||
/// </summary>
|
||||
[SerializeField]
|
||||
public bool GenerateAllOutputs = false;
|
||||
|
||||
/// <summary>
|
||||
/// True if this graph should generate mipmap chain.
|
||||
/// </summary>
|
||||
[SerializeField]
|
||||
public bool GenerateAllMipmaps = false;
|
||||
|
||||
/// <summary>
|
||||
/// Output material.
|
||||
/// </summary>
|
||||
[SerializeField]
|
||||
public Material OutputMaterial = default;
|
||||
|
||||
/// <summary>
|
||||
/// Default preset for the sbsar file.
|
||||
/// </summary>
|
||||
[SerializeField]
|
||||
public string DefaultPreset = default;
|
||||
|
||||
/// <summary>
|
||||
/// Cached material shader name. (Editor only)
|
||||
/// </summary>
|
||||
[SerializeField]
|
||||
public string MaterialShader = default;
|
||||
|
||||
/// <summary>
|
||||
/// Flags that the substance native inputs should be updated and material should be rendered. (Editor only)
|
||||
/// </summary>
|
||||
[SerializeField, HideInInspector]
|
||||
public bool RenderTextures = false;
|
||||
|
||||
/// <summary>
|
||||
/// Flags that the current generated textures should be deleted. (Editor only)
|
||||
/// </summary>
|
||||
[SerializeField, HideInInspector]
|
||||
public bool OutputRemaped = false;
|
||||
|
||||
/// <summary>
|
||||
/// Initialized the substance graph. Uses the native handle to set all the input parameters, configure output textures, create Unity Texture2D objects for each output and properly assign them to the target material.
|
||||
/// This must be called if the substance graph was flagged as Runtime only and will require its assets be generated at runtime.
|
||||
/// </summary>
|
||||
/// <param name="handler">Handle to a native substance object.</param>
|
||||
public void RuntimeInitialize(SubstanceNativeGraph handler, bool isRuntime = false)
|
||||
{
|
||||
if (handler.IsInitialized)
|
||||
return;
|
||||
|
||||
foreach (var input in Input)
|
||||
input.UpdateNativeHandle(handler);
|
||||
|
||||
RenderingUtils.ConfigureOutputTextures(handler, this, isRuntime);
|
||||
|
||||
if (isRuntime)
|
||||
{
|
||||
var result = handler.Render();
|
||||
CreateAndUpdateOutputTextures(result, isRuntime);
|
||||
MaterialUtils.AssignOutputTexturesToMaterial(this);
|
||||
}
|
||||
|
||||
handler.IsInitialized = true;
|
||||
}
|
||||
|
||||
public Texture2D GetThumbnailTexture()
|
||||
{
|
||||
if (!HasThumbnail)
|
||||
return null;
|
||||
|
||||
Texture2D thumbnailTexture = new Texture2D(0, 0);
|
||||
thumbnailTexture.LoadImage(Thumbnail);
|
||||
return thumbnailTexture;
|
||||
}
|
||||
|
||||
public void CreateAndUpdateOutputTextures(IntPtr resultPtr, bool runtimeUsage = false)
|
||||
{
|
||||
unsafe
|
||||
{
|
||||
for (int i = 0; i < Output.Count; i++)
|
||||
{
|
||||
var output = Output[i];
|
||||
|
||||
if (!output.IsStandardOutput(OutputMaterial) && !GenerateAllOutputs)
|
||||
continue;
|
||||
|
||||
var index = output.VirtualOutputIndex;
|
||||
IntPtr pI = resultPtr + (index * sizeof(NativeData));
|
||||
NativeData data = Marshal.PtrToStructure<NativeData>(pI);
|
||||
|
||||
if (data.ValueType != ValueType.SBSARIO_VALUE_IMAGE)
|
||||
{
|
||||
Debug.LogError($"Skiping render index #{index} of {output.Description.Channel} because it was not an image");
|
||||
continue;
|
||||
}
|
||||
|
||||
if (data.ValueType == ValueType.SBSARIO_VALUE_IMAGE)
|
||||
{
|
||||
NativeDataImage imgData = data.Data.ImageData;
|
||||
|
||||
if (TryGetUnityTextureFormat(imgData, runtimeUsage, out int width, out int height, out int imageSize, out TextureFormat format, out int mipsCount))
|
||||
{
|
||||
var texture = new Texture2D(width, height, format, GenerateAllMipmaps, IsRuntimeOnly ? !output.sRGB : output.sRGB);
|
||||
#if UNITY_EDITOR
|
||||
texture.alphaIsTransparency = imgData.image_format.ChannelCount() == 4;
|
||||
#endif
|
||||
output.OutputTexture = texture;
|
||||
texture.Apply();
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
UpdateOutputTextures(resultPtr);
|
||||
}
|
||||
|
||||
public void UpdateOutputTextures(IntPtr renderResultPtr)
|
||||
{
|
||||
unsafe
|
||||
{
|
||||
foreach (var output in Output)
|
||||
{
|
||||
var texture = output.OutputTexture;
|
||||
|
||||
if (texture == null)
|
||||
{
|
||||
continue;
|
||||
}
|
||||
|
||||
var index = output.VirtualOutputIndex;
|
||||
IntPtr dataPtr = renderResultPtr + (index * sizeof(NativeData));
|
||||
NativeData data = Marshal.PtrToStructure<NativeData>(dataPtr);
|
||||
|
||||
if (data.ValueType != ValueType.SBSARIO_VALUE_IMAGE)
|
||||
{
|
||||
Debug.LogError($"Fail to update substance output: output is not an image.");
|
||||
continue;
|
||||
}
|
||||
|
||||
NativeDataImage srcImage = data.Data.ImageData;
|
||||
|
||||
if (texture.format != TextureFormat.RGBA32 && texture.format != TextureFormat.BGRA32)
|
||||
{
|
||||
Debug.LogError($"Fail to update target texture. Output textures are expected to be RGBA32 or BGRA32.");
|
||||
continue;
|
||||
}
|
||||
|
||||
var size = GenerateAllMipmaps ? srcImage.GetSizeWithMipMaps() : srcImage.GetSize();
|
||||
texture.LoadRawTextureData(srcImage.data, size);
|
||||
texture.Apply();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Returns a list of texture outputs that have resized since last render.
|
||||
/// </summary>
|
||||
/// <param name="resultPtr">Render result.</param>
|
||||
/// <returns>List of pair with output ID and new size.</returns>
|
||||
public List<(int, Vector2Int)> GetResizedOutputs(IntPtr resultPtr)
|
||||
{
|
||||
List<(int, Vector2Int)> textureSizes = new List<(int, Vector2Int)>();
|
||||
|
||||
unsafe
|
||||
{
|
||||
foreach (var output in Output)
|
||||
{
|
||||
var texture = output.OutputTexture;
|
||||
|
||||
if (texture == null)
|
||||
continue;
|
||||
|
||||
var index = output.VirtualOutputIndex;
|
||||
IntPtr pI = resultPtr + (index * sizeof(NativeData));
|
||||
NativeData data = Marshal.PtrToStructure<NativeData>(pI);
|
||||
|
||||
if (data.ValueType != ValueType.SBSARIO_VALUE_IMAGE)
|
||||
{
|
||||
Debug.LogError($"Results fail for {output.Description.Label}");
|
||||
continue;
|
||||
}
|
||||
|
||||
NativeDataImage imgData = data.Data.ImageData;
|
||||
|
||||
if (texture.width != (int)imgData.width || texture.height != (int)imgData.height)
|
||||
textureSizes.Add((output.Index, new Vector2Int((int)imgData.width, (int)imgData.height)));
|
||||
}
|
||||
}
|
||||
|
||||
return textureSizes;
|
||||
}
|
||||
|
||||
private static bool TryGetUnityTextureFormat(NativeDataImage nativeData, bool runtimeUsage, out int width, out int height, out int imageSize, out TextureFormat format, out int mipsCount)
|
||||
{
|
||||
width = (int)nativeData.width;
|
||||
height = (int)nativeData.height;
|
||||
mipsCount = (int)nativeData.mipmaps;
|
||||
|
||||
imageSize = nativeData.GetSizeWithMipMaps();
|
||||
format = nativeData.image_format.ToUnityFormat();
|
||||
|
||||
if ((nativeData.channel_order == ChannelOrder.SBSARIO_CHANNEL_ORDER_BGRA) && runtimeUsage)
|
||||
format = TextureFormat.BGRA32;
|
||||
|
||||
//#endif
|
||||
return true;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Returns the native ID of this graph in the sbsar file.
|
||||
/// </summary>
|
||||
/// <returns>Graph native ID.</returns>
|
||||
public int GetNativeID()
|
||||
{
|
||||
return Index;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Sets the value for the native index of this graph. (This should only be assigned on object creation based on the values from the sbsar file.)
|
||||
/// </summary>
|
||||
public void SetNativeID(int index)
|
||||
{
|
||||
if (Index != -1)
|
||||
throw new ArgumentException("SubstanceGraphSO NativeID should not be changed after it has been assigned.");
|
||||
|
||||
Index = index;
|
||||
}
|
||||
}
|
||||
}
|
@ -1,11 +0,0 @@
|
||||
fileFormatVersion: 2
|
||||
guid: eed5864476f84ce4b85454db09ca4eaa
|
||||
MonoImporter:
|
||||
externalObjects: {}
|
||||
serializedVersion: 2
|
||||
defaultReferences: []
|
||||
executionOrder: 0
|
||||
icon: {instanceID: 0}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
Reference in New Issue
Block a user