mirror of
https://github.com/BlackMATov/unity-iso-tools.git
synced 2025-12-15 01:12:05 +07:00
59 lines
1.5 KiB
C#
Executable File
59 lines
1.5 KiB
C#
Executable File
// (c) Copyright HutongGames, LLC 2010-2013. All rights reserved.
|
|
|
|
using UnityEngine;
|
|
|
|
namespace HutongGames.PlayMaker.Actions
|
|
{
|
|
[ActionCategory(ActionCategory.ScriptControl)]
|
|
[Tooltip("Adds a Script to a Game Object. Use this to change the behaviour of objects on the fly. Optionally remove the Script on exiting the state.")]
|
|
public class AddScript : FsmStateAction
|
|
{
|
|
[RequiredField]
|
|
[Tooltip("The GameObject to add the script to.")]
|
|
public FsmOwnerDefault gameObject;
|
|
|
|
[RequiredField]
|
|
[Tooltip("The Script to add to the GameObject.")]
|
|
[UIHint(UIHint.ScriptComponent)]
|
|
public FsmString script;
|
|
|
|
[Tooltip("Remove the script from the GameObject when this State is exited.")]
|
|
public FsmBool removeOnExit;
|
|
|
|
Component addedComponent;
|
|
|
|
public override void Reset()
|
|
{
|
|
gameObject = null;
|
|
script = null;
|
|
}
|
|
|
|
public override void OnEnter()
|
|
{
|
|
DoAddComponent(gameObject.OwnerOption == OwnerDefaultOption.UseOwner ? Owner : gameObject.GameObject.Value);
|
|
|
|
Finish();
|
|
}
|
|
|
|
public override void OnExit()
|
|
{
|
|
if (removeOnExit.Value)
|
|
{
|
|
if (addedComponent != null)
|
|
{
|
|
Object.Destroy(addedComponent);
|
|
}
|
|
}
|
|
}
|
|
|
|
void DoAddComponent(GameObject go)
|
|
{
|
|
addedComponent = go.AddComponent(ReflectionUtils.GetGlobalType(script.Value));
|
|
|
|
if (addedComponent == null)
|
|
{
|
|
LogError("Can't add script: " + script.Value);
|
|
}
|
|
}
|
|
}
|
|
} |