Files
unity-iso-tools/Assets/PlayMaker/Actions/AddScript.cs
2015-12-13 14:35:35 +06:00

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);
}
}
}
}