Repository URL to install this package:
|
Version:
1.3.0 ▾
|
ai.fluctio.fluctio-sim
/
Core
/
Components
/
MachineLearning
/
TriggerActions
/
EnableActiveChanger.cs
|
|---|
using System;
using System.ComponentModel;
using Fluctio.FluctioSim.Common.Configuration;
using UnityEngine;
using Object = UnityEngine.Object;
namespace Fluctio.FluctioSim.Core.Components.MachineLearning.TriggerActions
{
[AddComponentMenu(Config.PrefixedName+"/Machine Learning/Trigger Actions/Enable or Disable", Config.ComponentMenuOrder + 90)]
public class EnableActiveChanger : TriggerAction
{
[field: SerializeField] public Object Object { get; private set; }
[field: SerializeField] public EnabledMode EnabledMode { get; private set; } = EnabledMode.Toggle;
public override void OnExecute()
{
if (Object is null)
{
return;
}
var isCurrentlyEnabled = Object switch
{
GameObject gameObj => gameObj.activeInHierarchy,
Behaviour component => component.enabled,
_ => throw new InvalidOperationException($"{nameof(Object)} should be either {nameof(GameObject)} or {nameof(Behaviour)}"),
};
var newEnabled = EnabledMode switch
{
EnabledMode.Toggle => !isCurrentlyEnabled,
EnabledMode.SetToTrue => true,
EnabledMode.SetToFalse => false,
_ => throw new InvalidEnumArgumentException(
nameof(EnabledMode),
(int)EnabledMode,
EnabledMode.GetType()),
};
switch (Object)
{
case GameObject gameObj:
gameObj.SetActive(newEnabled);
break;
case Behaviour component:
component.enabled = newEnabled;
break;
default:
throw new InvalidOperationException($"{nameof(Object)} should be either {nameof(GameObject)} or {nameof(Behaviour)}");
}
}
}
public enum EnabledMode
{
Toggle,
SetToTrue,
SetToFalse,
}
}