BITFALL/Assets/BITKit/UnityPluginsSupport/NodeCanvas/Monobehaviour/SetBehaviourEnabled.cs

45 lines
1.0 KiB
C#

using System.Collections;
using System.Collections.Generic;
using System.Reflection;
using NodeCanvas.Framework;
using UnityEngine;
namespace BITKit.NodeCanvas
{
public sealed class SetBehaviourEnabled:ActionTask
{
public BBParameter<Object> behaviour;
public BBParameter<bool> enabled;
protected override void OnExecute()
{
switch (behaviour.value)
{
case MonoBehaviour monoBehaviour:
monoBehaviour.enabled = enabled.value;
break;
case Collider collider:
collider.enabled = enabled.value;
break;
case Component component:
component.GetType().GetProperty(nameof(BoxCollider.enabled),
BindingFlags.Public | BindingFlags.Instance | BindingFlags.IgnoreCase
).SetValue(behaviour.value, enabled.value);
break;
}
EndAction();
}
protected override string info
{
get
{
if(behaviour.isNoneOrNull || enabled.isNoneOrNull)
return "Set Behaviour Enabled";
var enabledStr = enabled.value ? "Enabled" : "Disabled";
return $"Set {behaviour.name} {enabledStr}";
}
}
}
}