import enum gamestateMachineParameterAspect
{
	Temporary,
	Permanent,
	Conditional,
}

importonly abstract class PSMBaseEvent extends Event
{
	import var id : CName;
}

importonly class PSMImpulse extends PSMBaseEvent
{
	import var impulse : Vector4;
}

importonly abstract class PSMPostponedParameterBase extends PSMBaseEvent
{
	import var aspect : gamestateMachineParameterAspect;
}

importonly class PSMPostponedParameterBool extends PSMPostponedParameterBase
{
	import var value : Bool;
}

importonly class PSMPostponedParameterInt extends PSMPostponedParameterBase
{
	import var value : Int32;
}

importonly class PSMPostponedParameterFloat extends PSMPostponedParameterBase
{
	import var value : Float;
}

importonly class PSMPostponedParameterVector extends PSMPostponedParameterBase
{
	import var value : Vector4;
}

importonly class PSMPostponedParameterCName extends PSMPostponedParameterBase
{
	import var value : CName;
}

importonly class PSMPostponedParameterScriptable extends PSMPostponedParameterBase
{
	import var value : IScriptable;
}

importonly class PSMAddOnDemandStateMachine extends Event
{
	import var stateMachineName : CName;
	import var instanceData : StateMachineInstanceData;
	import var tryHotSwap : Bool;
	import var owner : weak< GameObject >;
}

importonly class PSMRemoveOnDemandStateMachine extends Event
{
	import var stateMachineIdentifier : StateMachineIdentifier;
}

importonly class PSMStartStateMachine extends Event
{
	import var stateMachineIdentifier : StateMachineIdentifier;
}

importonly class PSMStopStateMachine extends Event
{
	import var stateMachineIdentifier : StateMachineIdentifier;
}

