public DelayedEvent(Skill fsm, SkillEvent fsmEvent, float delay)
		{
			this.fsm = fsm;
			this.timer = delay;
			this.fsmEvent = fsmEvent;
			this.eventData = new SkillEventData(Skill.EventData)
			{
				SentByFsm = SkillExecutionStack.ExecutingFsm,
				SentByState = SkillExecutionStack.ExecutingState,
				SentByAction = SkillExecutionStack.ExecutingAction
			};
		}
		public void Update()
		{
			this.timer -= Time.get_deltaTime();
			if (this.timer < 0f)
			{
				SkillEventData fsmEventData = Skill.EventData;
				Skill.EventData = this.eventData;
				if (this.eventTarget == null)
				{
					this.fsm.Event(this.fsmEvent);
				}
				else
				{
					this.fsm.Event(this.eventTarget, this.fsmEvent);
				}
				this.fsm.UpdateStateChanges();
				this.eventFired = true;
				this.eventData = null;
				Skill.EventData = fsmEventData;
			}
		}
 public SkillEventData(SkillEventData source)
 {
     this.SentByFsm          = source.SentByFsm;
     this.SentByState        = source.SentByState;
     this.SentByAction       = source.SentByAction;
     this.BoolData           = source.BoolData;
     this.IntData            = source.IntData;
     this.FloatData          = source.FloatData;
     this.Vector2Data        = source.Vector2Data;
     this.Vector3Data        = source.Vector3Data;
     this.StringData         = source.StringData;
     this.QuaternionData     = source.QuaternionData;
     this.RectData           = source.RectData;
     this.ColorData          = source.ColorData;
     this.ObjectData         = source.ObjectData;
     this.GameObjectData     = source.GameObjectData;
     this.MaterialData       = source.MaterialData;
     this.TextureData        = source.TextureData;
     this.Player             = source.Player;
     this.DisconnectionInfo  = source.DisconnectionInfo;
     this.ConnectionError    = source.ConnectionError;
     this.NetworkMessageInfo = source.NetworkMessageInfo;
     this.MasterServerEvent  = source.MasterServerEvent;
 }