On Toggle Change#
UI / On Toggle Change
Description#
Executed when the Toggle on the target game object is turned on or off
Code#
using System;
using UnityEngine;
using VisualScript.Icons;
namespace VisualScript.Runtime.UI
{
[Title("On Toggle Change")]
[Image(typeof(IconUIToggle), ColorTheme.Type.TextLight)]
[Description("Executed when the Toggle on the target game object is turned on or off")]
[Category("UI/On Toggle Change")]
[Keywords("UI", "Canvas", "Toggle", "Check", "Box", "Switch", "On", "Off", "Radio")]
[Serializable]
public class TriggerCoreUIToggle : TriggerHandleSourceBase<HandleOnUIToggle>
{
// EXPOSED MEMBERS: -----------------------------------------------------------------------
[SerializeField] private UIToggleChange m_When = UIToggleChange.Any;
// PROPERTIES: ----------------------------------------------------------------------------
protected override string GetTitle(GameObject source) => this.m_When switch
{
UIToggleChange.Any => $"{this.SourceName} Toggle Change",
UIToggleChange.TurnedOn => $"{this.SourceName} Toggle On",
UIToggleChange.TurnedOff => $"{this.SourceName} Toggle Off",
_ => throw new ArgumentOutOfRangeException()
};
// OVERRIDE METHODS: ----------------------------------------------------------------------
protected override void OnTrigger(GameObject target)
{
if (this.m_Handle == null) return;
switch (this.m_When)
{
case UIToggleChange.Any: break;
case UIToggleChange.TurnedOn: if (!this.m_Handle.IsOn) return; break;
case UIToggleChange.TurnedOff: if (this.m_Handle.IsOn) return; break;
default: throw new ArgumentOutOfRangeException();
}
using Args args = Args.Get(this.Component, target);
this.Run(args);
}
}
}