diff --git a/Assets/Fungus/Flowchart/Scripts/Variable.cs b/Assets/Fungus/Flowchart/Scripts/Variable.cs index c5f9ef1d..f2c151e6 100644 --- a/Assets/Fungus/Flowchart/Scripts/Variable.cs +++ b/Assets/Fungus/Flowchart/Scripts/Variable.cs @@ -32,6 +32,14 @@ namespace Fungus this.VariableTypes = variableTypes; } + public VariablePropertyAttribute (string defaultText, params System.Type[] variableTypes) + { + this.defaultText = defaultText; + this.VariableTypes = variableTypes; + } + + public String defaultText = ""; + public System.Type[] VariableTypes { get; set; } } diff --git a/Assets/Fungus/Flowchart/Scripts/VariableTypes/BooleanVariable.cs b/Assets/Fungus/Flowchart/Scripts/VariableTypes/BooleanVariable.cs index e8ff1ea7..fadfbe14 100644 --- a/Assets/Fungus/Flowchart/Scripts/VariableTypes/BooleanVariable.cs +++ b/Assets/Fungus/Flowchart/Scripts/VariableTypes/BooleanVariable.cs @@ -36,11 +36,23 @@ namespace Fungus public struct BooleanData { [SerializeField] + [VariableProperty("", typeof(BooleanVariable))] public BooleanVariable booleanRef; [SerializeField] public bool booleanVal; + public BooleanData(bool v) + { + booleanVal = v; + booleanRef = null; + } + + public static implicit operator bool(BooleanData booleanData) + { + return booleanData.Value; + } + public bool Value { get { return (booleanRef == null) ? booleanVal : booleanRef.value; } diff --git a/Assets/Fungus/Flowchart/Scripts/VariableTypes/ColorVariable.cs b/Assets/Fungus/Flowchart/Scripts/VariableTypes/ColorVariable.cs index 9f859fea..0592cd4e 100644 --- a/Assets/Fungus/Flowchart/Scripts/VariableTypes/ColorVariable.cs +++ b/Assets/Fungus/Flowchart/Scripts/VariableTypes/ColorVariable.cs @@ -12,11 +12,23 @@ namespace Fungus public struct ColorData { [SerializeField] + [VariableProperty("", typeof(ColorVariable))] public ColorVariable colorRef; [SerializeField] public Color colorVal; + + public ColorData(Color v) + { + colorVal = v; + colorRef = null; + } + public static implicit operator Color(ColorData colorData) + { + return colorData.Value; + } + public Color Value { get { return (colorRef == null) ? colorVal : colorRef.value; } diff --git a/Assets/Fungus/Flowchart/Scripts/VariableTypes/FloatVariable.cs b/Assets/Fungus/Flowchart/Scripts/VariableTypes/FloatVariable.cs index c50df12e..f3eb7a4d 100644 --- a/Assets/Fungus/Flowchart/Scripts/VariableTypes/FloatVariable.cs +++ b/Assets/Fungus/Flowchart/Scripts/VariableTypes/FloatVariable.cs @@ -44,11 +44,23 @@ namespace Fungus public struct FloatData { [SerializeField] + [VariableProperty("", typeof(FloatVariable))] public FloatVariable floatRef; [SerializeField] public float floatVal; + public FloatData(float v) + { + floatVal = v; + floatRef = null; + } + + public static implicit operator float(FloatData floatData) + { + return floatData.Value; + } + public float Value { get { return (floatRef == null) ? floatVal : floatRef.value; } diff --git a/Assets/Fungus/Flowchart/Scripts/VariableTypes/GameObjectVariable.cs b/Assets/Fungus/Flowchart/Scripts/VariableTypes/GameObjectVariable.cs index 76f4859c..c0fd5db5 100644 --- a/Assets/Fungus/Flowchart/Scripts/VariableTypes/GameObjectVariable.cs +++ b/Assets/Fungus/Flowchart/Scripts/VariableTypes/GameObjectVariable.cs @@ -12,11 +12,23 @@ namespace Fungus public struct GameObjectData { [SerializeField] + [VariableProperty("", typeof(GameObjectVariable))] public GameObjectVariable gameObjectRef; [SerializeField] public GameObject gameObjectVal; + + public GameObjectData(GameObject v) + { + gameObjectVal = v; + gameObjectRef = null; + } + public static implicit operator GameObject(GameObjectData gameObjectData) + { + return gameObjectData.Value; + } + public GameObject Value { get { return (gameObjectRef == null) ? gameObjectVal : gameObjectRef.value; } diff --git a/Assets/Fungus/Flowchart/Scripts/VariableTypes/IntegerVariable.cs b/Assets/Fungus/Flowchart/Scripts/VariableTypes/IntegerVariable.cs index a490214b..15698ad9 100644 --- a/Assets/Fungus/Flowchart/Scripts/VariableTypes/IntegerVariable.cs +++ b/Assets/Fungus/Flowchart/Scripts/VariableTypes/IntegerVariable.cs @@ -44,11 +44,23 @@ namespace Fungus public struct IntegerData { [SerializeField] + [VariableProperty("", typeof(IntegerVariable))] public IntegerVariable integerRef; [SerializeField] public int integerVal; + public IntegerData(int v) + { + integerVal = v; + integerRef = null; + } + + public static implicit operator int(IntegerData integerData) + { + return integerData.Value; + } + public int Value { get { return (integerRef == null) ? integerVal : integerRef.value; } diff --git a/Assets/Fungus/Flowchart/Scripts/VariableTypes/MaterialVariable.cs b/Assets/Fungus/Flowchart/Scripts/VariableTypes/MaterialVariable.cs index 81d05a1e..fa965ce2 100644 --- a/Assets/Fungus/Flowchart/Scripts/VariableTypes/MaterialVariable.cs +++ b/Assets/Fungus/Flowchart/Scripts/VariableTypes/MaterialVariable.cs @@ -12,11 +12,23 @@ namespace Fungus public struct MaterialData { [SerializeField] + [VariableProperty("", typeof(MaterialVariable))] public MaterialVariable materialRef; [SerializeField] public Material materialVal; + + public MaterialData(Material v) + { + materialVal = v; + materialRef = null; + } + public static implicit operator Material(MaterialData materialData) + { + return materialData.Value; + } + public Material Value { get { return (materialRef == null) ? materialVal : materialRef.value; } diff --git a/Assets/Fungus/Flowchart/Scripts/VariableTypes/ObjectVariable.cs b/Assets/Fungus/Flowchart/Scripts/VariableTypes/ObjectVariable.cs index 04d28a95..f7531f3f 100644 --- a/Assets/Fungus/Flowchart/Scripts/VariableTypes/ObjectVariable.cs +++ b/Assets/Fungus/Flowchart/Scripts/VariableTypes/ObjectVariable.cs @@ -12,11 +12,23 @@ namespace Fungus public struct ObjectData { [SerializeField] + [VariableProperty("", typeof(ObjectVariable))] public ObjectVariable objectRef; [SerializeField] public Object objectVal; + + public ObjectData(Object v) + { + objectVal = v; + objectRef = null; + } + public static implicit operator Object(ObjectData objectData) + { + return objectData.Value; + } + public Object Value { get { return (objectRef == null) ? objectVal : objectRef.value; } diff --git a/Assets/Fungus/Flowchart/Scripts/VariableTypes/SpriteVariable.cs b/Assets/Fungus/Flowchart/Scripts/VariableTypes/SpriteVariable.cs index abe3203c..8e69a697 100644 --- a/Assets/Fungus/Flowchart/Scripts/VariableTypes/SpriteVariable.cs +++ b/Assets/Fungus/Flowchart/Scripts/VariableTypes/SpriteVariable.cs @@ -12,11 +12,23 @@ namespace Fungus public struct SpriteData { [SerializeField] + [VariableProperty("", typeof(SpriteVariable))] public SpriteVariable spriteRef; [SerializeField] public Sprite spriteVal; + + public SpriteData(Sprite v) + { + spriteVal = v; + spriteRef = null; + } + public static implicit operator Sprite(SpriteData spriteData) + { + return spriteData.Value; + } + public Sprite Value { get { return (spriteRef == null) ? spriteVal : spriteRef.value; } diff --git a/Assets/Fungus/Flowchart/Scripts/VariableTypes/StringVariable.cs b/Assets/Fungus/Flowchart/Scripts/VariableTypes/StringVariable.cs index 321adbe8..024e61cc 100644 --- a/Assets/Fungus/Flowchart/Scripts/VariableTypes/StringVariable.cs +++ b/Assets/Fungus/Flowchart/Scripts/VariableTypes/StringVariable.cs @@ -34,11 +34,24 @@ namespace Fungus public struct StringData { [SerializeField] + [VariableProperty("", typeof(StringVariable))] public StringVariable stringRef; + [TextArea(1,10)] [SerializeField] public string stringVal; + public StringData(string v) + { + stringVal = v; + stringRef = null; + } + + public static implicit operator string(StringData spriteData) + { + return spriteData.Value; + } + public string Value { get { return (stringRef == null) ? stringVal : stringRef.value; } diff --git a/Assets/Fungus/Flowchart/Scripts/VariableTypes/TextureVariable.cs b/Assets/Fungus/Flowchart/Scripts/VariableTypes/TextureVariable.cs index a242491c..30081881 100644 --- a/Assets/Fungus/Flowchart/Scripts/VariableTypes/TextureVariable.cs +++ b/Assets/Fungus/Flowchart/Scripts/VariableTypes/TextureVariable.cs @@ -12,11 +12,23 @@ namespace Fungus public struct TextureData { [SerializeField] + [VariableProperty("", typeof(TextureVariable))] public TextureVariable textureRef; [SerializeField] public Texture textureVal; + + public TextureData(Texture v) + { + textureVal = v; + textureRef = null; + } + public static implicit operator Texture(TextureData textureData) + { + return textureData.Value; + } + public Texture Value { get { return (textureRef == null) ? textureVal : textureRef.value; } diff --git a/Assets/Fungus/Flowchart/Scripts/VariableTypes/Vector2Variable.cs b/Assets/Fungus/Flowchart/Scripts/VariableTypes/Vector2Variable.cs index b67f092f..c4504569 100644 --- a/Assets/Fungus/Flowchart/Scripts/VariableTypes/Vector2Variable.cs +++ b/Assets/Fungus/Flowchart/Scripts/VariableTypes/Vector2Variable.cs @@ -12,11 +12,23 @@ namespace Fungus public struct Vector2Data { [SerializeField] + [VariableProperty("", typeof(Vector2Variable))] public Vector2Variable vector2Ref; [SerializeField] public Vector2 vector2Val; + + public Vector2Data(Vector2 v) + { + vector2Val = v; + vector2Ref = null; + } + public static implicit operator Vector2(Vector2Data vector2Data) + { + return vector2Data.Value; + } + public Vector2 Value { get { return (vector2Ref == null) ? vector2Val : vector2Ref.value; } diff --git a/Assets/Fungus/Flowchart/Scripts/VariableTypes/Vector3Variable.cs b/Assets/Fungus/Flowchart/Scripts/VariableTypes/Vector3Variable.cs index baacea1c..f4131db9 100644 --- a/Assets/Fungus/Flowchart/Scripts/VariableTypes/Vector3Variable.cs +++ b/Assets/Fungus/Flowchart/Scripts/VariableTypes/Vector3Variable.cs @@ -12,11 +12,23 @@ namespace Fungus public struct Vector3Data { [SerializeField] + [VariableProperty("", typeof(Vector3Variable))] public Vector3Variable vector3Ref; [SerializeField] public Vector3 vector3Val; + + public Vector3Data(Vector3 v) + { + vector3Val = v; + vector3Ref = null; + } + public static implicit operator Vector3(Vector3Data vector3Data) + { + return vector3Data.Value; + } + public Vector3 Value { get { return (vector3Ref == null) ? vector3Val : vector3Ref.value; }