Hello!
Sure, here it is:
public static void GenerateTemplate(string effectName) {
var fsmTemplate = (FsmTemplate)CreateInstance(typeof(FsmTemplate));
fsmTemplate.Category = "HotspotEffect";
fsmTemplate.fsm = new Fsm();
fsmTemplate.fsm.Reset(null);
var startEvent = new FsmEvent("START " + effectName);
var startTransition = new FsmTransition
{
FsmEvent = startEvent,
ToState = effectName
};
var applyState = new FsmState(fsmTemplate.fsm)
{
Name = effectName,
Position = new Rect(130, 60, 128, 30),
Transitions = new[]
{
new FsmTransition {
FsmEvent = FsmEvent.Finished,
ToState = "After " + effectName
}
}
};
var finishState = new FsmState(fsmTemplate.fsm)
{
Name = "After " + effectName,
Position = new Rect(130, 120, 128, 15)
};
var finishAction = new DebugLog();
finishState.Actions = new FsmStateAction[] { finishAction };
finishState.SaveActions();
fsmTemplate.fsm.States = new[] { applyState, finishState };
fsmTemplate.fsm.Events = new[] { startEvent };
fsmTemplate.fsm.GlobalTransitions = new[] { startTransition };
fsmTemplate.fsm.Name = effectName;
fsmTemplate.fsm.UsedInTemplate = fsmTemplate;
AssetDatabase.CreateAsset(fsmTemplate, @"Assets\Data\PlaymakerCustomTemplates\" + effectName + ".asset");
AssetDatabase.SaveAssets();
}
I used a string instead of my class, and switched out my custom action for the DebugLog() action, included in Playmaker. The issue still appears. The function is static because i run it via a button in the editor, using my custom editor script, but it should also work if you call it non-statically, so feel free to remove that. Also feel free to change the path at which i save the created Template.
Thank you very much!