using System; using UnityAtoms.BaseAtoms; <%IF TYPE_HAS_NAMESPACE%> using {TYPE_NAMESPACE}; <%ENDIF%> <%IF HAS_SUB_UA_NAMESPACE%> namespace UnityAtoms.{SUB_UA_NAMESPACE} <%ELSE%> namespace UnityAtoms <%ENDIF%> { <%IF EQUATABLE%> /// /// Reference of type `{VALUE_TYPE}`. Inherits from `EquatableAtomReference<{VALUE_TYPE}, {VALUE_TYPE_NAME}Pair, {VALUE_TYPE_NAME}Constant, {VALUE_TYPE_NAME}Variable, {VALUE_TYPE_NAME}Event, {VALUE_TYPE_NAME}PairEvent, {VALUE_TYPE_NAME}{VALUE_TYPE_NAME}Function, {VALUE_TYPE_NAME}VariableInstancer, AtomCollection, AtomList>`. /// [Serializable] public sealed class {VALUE_TYPE_NAME}Reference : EquatableAtomReference< {VALUE_TYPE}, {VALUE_TYPE_NAME}Pair, {VALUE_TYPE_NAME}Constant, {VALUE_TYPE_NAME}Variable, {VALUE_TYPE_NAME}Event, {VALUE_TYPE_NAME}PairEvent, {VALUE_TYPE_NAME}{VALUE_TYPE_NAME}Function, {VALUE_TYPE_NAME}VariableInstancer>, IEquatable<{VALUE_TYPE_NAME}Reference> { public {VALUE_TYPE_NAME}Reference() : base() { } public {VALUE_TYPE_NAME}Reference({VALUE_TYPE} value) : base(value) { } public bool Equals({VALUE_TYPE_NAME}Reference other) { return base.Equals(other); } <%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%> } <%ELSE%> /// /// Reference of type `{VALUE_TYPE}`. Inherits from `AtomReference<{VALUE_TYPE}, {VALUE_TYPE_NAME}Pair, {VALUE_TYPE_NAME}Constant, {VALUE_TYPE_NAME}Variable, {VALUE_TYPE_NAME}Event, {VALUE_TYPE_NAME}PairEvent, {VALUE_TYPE_NAME}{VALUE_TYPE_NAME}Function, {VALUE_TYPE_NAME}VariableInstancer, AtomCollection, AtomList>`. /// [Serializable] public sealed class {VALUE_TYPE_NAME}Reference : AtomReference< {VALUE_TYPE}, {VALUE_TYPE_NAME}Pair, {VALUE_TYPE_NAME}Constant, {VALUE_TYPE_NAME}Variable, {VALUE_TYPE_NAME}Event, {VALUE_TYPE_NAME}PairEvent, {VALUE_TYPE_NAME}{VALUE_TYPE_NAME}Function, {VALUE_TYPE_NAME}VariableInstancer>, IEquatable<{VALUE_TYPE_NAME}Reference> { public {VALUE_TYPE_NAME}Reference() : base() { } public {VALUE_TYPE_NAME}Reference({VALUE_TYPE} value) : base(value) { } public bool Equals({VALUE_TYPE_NAME}Reference other) { return base.Equals(other); } 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%> }