|
|
- using System.Collections;
- using UnityEngine;
-
- /// <summary>
- /// Logic block which deals with moving a character in a direction
- /// </summary>
- [CreateAssetMenu(menuName = "Major Project/Rotate Block")]
- [System.Serializable]
- public class Rotate : LogicBlock
- {
- #region Inspector Fields
- [SerializeField]
- [Header("Rotate Settings")]
- [Tooltip("Direction to rotate in")]
- protected Direction direction;
-
- [SerializeField]
- [Tooltip("Angle in Degrees")]
- protected int Angle = 90;
- #endregion Inspector Fields
-
- #region Class Functions
- /// <summary>
- /// Rotates the player in the direction specified by this block
- /// </summary>
- /// <param name="player">Player to rotate</param>
- protected override IEnumerator BlockLogic(Character player, float animationTime, bool useBlockDirection = false)
- {
- yield return player.StartCoroutine(player.RotateInDirection(direction,Angle, Character.Animation.Jump, animationTime));
- }
-
- /// <summary>
- /// Returns the block that the character will endUp on after they use this logic element
- /// </summary>
- /// <param name="startBlock">block character is on</param>
- /// <param name="layerMask">layers to ignore</param>
- /// <returns>block which character will finish on after performing this function </returns>
- public override Block GetEndBlock(Block startBlock,Transform transform, LayerMask layerMask)
- {
- //no movement when rotating
- return startBlock;
- }
-
- public override void CopyToken(BlockToken token)
- {
- base.CopyToken(token);
- direction = ((RotateToken)token).direction;
- Angle = ((RotateToken)token).angle;
- }
-
- public override BlockToken ToToken(BlockToken token = null)
- {
- if (token == null)
- token = new RotateToken(this);
-
- RotateToken retVal = (RotateToken)base.ToToken(token);
- retVal.direction = direction;
- retVal.angle = Angle;
-
- return retVal;
- }
- #endregion Class Functions
- }
-
- [System.Serializable]
- public class RotateToken : BlockToken
- {
- public Direction direction;
- public int angle;
-
- public RotateToken(LogicBlock block) : base(block) { }
- }
|