using UnityEngine; <%IF !EQUATABLE%>using System;<%ENDIF%> <%IF TYPE_HAS_NAMESPACE%>using {TYPE_NAMESPACE};<%ENDIF%> <%IF HAS_SUB_UA_NAMESPACE%> namespace UnityAtoms.{SUB_UA_NAMESPACE} <%ELSE%> namespace UnityAtoms <%ENDIF%> { <%IF EQUATABLE%> /// /// Variable of type `{VALUE_TYPE}`. Inherits from `EquatableAtomVariable<{VALUE_TYPE}, {VALUE_TYPE_NAME}Pair, {VALUE_TYPE_NAME}Event, {VALUE_TYPE_NAME}PairEvent, {VALUE_TYPE_NAME}{VALUE_TYPE_NAME}Function>`. /// [EditorIcon("atom-icon-lush")] [CreateAssetMenu(menuName = "Unity Atoms/Variables/{VALUE_TYPE_NAME}", fileName = "{VALUE_TYPE_NAME}Variable")] public <%IF !TYPE_IS_STRING%>sealed <%ENDIF%>class {VALUE_TYPE_NAME}Variable : EquatableAtomVariable<{VALUE_TYPE}, {VALUE_TYPE_NAME}Pair, {VALUE_TYPE_NAME}Event, {VALUE_TYPE_NAME}PairEvent, {VALUE_TYPE_NAME}{VALUE_TYPE_NAME}Function> { <%IF TYPE_IS_COLOR%> /// /// Set Alpha of Color by value. /// /// New alpha value. public void SetAlpha(float value) => Value = new Color(Value.r, Value.g, Value.b, value); /// /// Set Alpha of Color by Variable value. /// /// New alpha Variable value. public void SetAlpha(AtomBaseVariable variable) => SetAlpha(variable.Value); <%ENDIF%> <%IF IS_NUMERIC%> /// /// Add value to Variable. /// /// Value to add. public void Add({VALUE_TYPE} value) => Value += value; /// /// Add variable value to Variable. /// /// Variable with value to add. public void Add(AtomBaseVariable<{VALUE_TYPE}> variable) => Add(variable.Value); /// /// Subtract value from Variable. /// /// Value to subtract. public void Subtract({VALUE_TYPE} value) => Value -= value; /// /// Subtract variable value from Variable. /// /// Variable with value to subtract. public void Subtract(AtomBaseVariable<{VALUE_TYPE}> variable) => Subtract(variable.Value); /// /// Multiply variable by value. /// /// Value to multiple by. public void MultiplyBy({VALUE_TYPE} value) => Value *= value; /// /// Multiply variable by Variable value. /// /// Variable with value to multiple by. public void MultiplyBy(AtomBaseVariable<{VALUE_TYPE}> variable) => MultiplyBy(variable.Value); /// /// Divide Variable by value. /// /// Value to divide by. public void DivideBy({VALUE_TYPE} value) => Value /= value; /// /// Divide Variable by Variable value. /// /// Variable value to divide by. public void DivideBy(AtomBaseVariable<{VALUE_TYPE}> variable) => DivideBy(variable.Value); <%ENDIF%> <%IF IS_VECTOR%> /// /// Multiply variable by value. /// /// Value to multiple by. public void MultiplyBy(float value) => Value *= value; /// /// Multiply variable by Variable value. /// /// Variable with value to multiple by. public void MultiplyBy(AtomBaseVariable variable) => MultiplyBy(variable.Value); /// /// Divide Variable by value. /// /// Value to divide by. public void DivideBy(float value) => Value /= value; /// /// Divide Variable by Variable value. /// /// Variable value to divide by. public void DivideBy(AtomBaseVariable variable) => DivideBy(variable.Value); <%ENDIF%> } <%ELSE%> /// /// Variable of type `{VALUE_TYPE}`. Inherits from `AtomVariable<{VALUE_TYPE}, {VALUE_TYPE_NAME}Pair, {VALUE_TYPE_NAME}Event, {VALUE_TYPE_NAME}PairEvent, {VALUE_TYPE_NAME}{VALUE_TYPE_NAME}Function>`. /// [EditorIcon("atom-icon-lush")] [CreateAssetMenu(menuName = "Unity Atoms/Variables/{VALUE_TYPE_NAME}", fileName = "{VALUE_TYPE_NAME}Variable")] public sealed class {VALUE_TYPE_NAME}Variable : AtomVariable<{VALUE_TYPE}, {VALUE_TYPE_NAME}Pair, {VALUE_TYPE_NAME}Event, {VALUE_TYPE_NAME}PairEvent, {VALUE_TYPE_NAME}{VALUE_TYPE_NAME}Function> { protected override bool ValueEquals({VALUE_TYPE} other) { <%IF TYPE_IS_GAMEOBJECT|TYPE_IS_COLLIDER|TYPE_IS_COLLIDER2D|TYPE_IS_COLLISION|TYPE_IS_COLLISION2D%> return _value == other; <%ELSE%> throw new NotImplementedException(); <%ENDIF%> } } <%ENDIF%> }