45 lines
1.0 KiB
C#
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}";
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|