void SendEvent() { _eventBlock = AnimFSMEventBlock.pool.Get(); _eventBlock.attacker = Agent.BlackBoard.desiredTarget; _eventBlock.holdTime = Agent.BlackBoard.blockHoldTime; Agent.FSMComponent.SendEvent(_eventBlock); }
public override void OnExit(Phenix.Unity.AI.WorldState ws) { if (_eventBlock != null) { _eventBlock.Release(); _eventBlock = null; } base.OnExit(ws); }
protected override void Initialize(FSMEvent ev = null) { _eventBlock = ev as AnimFSMEventBlock; string animName = Agent.AnimSet.GetBlockAnim(BlockState.START, Agent.BlackBoard.weaponSelected); _startRotation = Agent.Transform.rotation; _startPosition = Agent.Transform.position; Vector3 dir = _eventBlock.attacker.Position - Agent.Transform.position; float angle = 0; if (dir.sqrMagnitude > 0.1f * 0.1f) { dir.Normalize(); angle = Vector3.Angle(Agent.Transform.forward, dir); } else { dir = Agent.Transform.forward; } _finalRotation.SetLookRotation(dir); _rotationTime = angle / 500.0f; _moveTime = 0; _rotationOK = _rotationTime == 0; _positionOK = _moveTime == 0; _curRotationTime = 0; _curMoveTime = 0; AnimationTools.PlayAnim(Agent.AnimEngine, animName, 0.05f); _endOfStateTime = Time.timeSinceLevelLoad + Agent.AnimEngine[animName].length * 0.9f; _blockHoldEndTime = Time.timeSinceLevelLoad + _eventBlock.holdTime; _blockState = BlockState.START; }
public override void Reset() { base.Reset(); _eventBlock = null; }