Example #1
0
    // Update is called once per frame
    void Update()
    {
        UnitState = UnitState.NAND(Enums.UnitStateEnum.Moving);

        // Apply landing
        if (UnitState.HasFlag(Enums.UnitStateEnum.Landing))
        {
            UnitState |= Enums.UnitStateEnum.Grounded;
            UnitState  = UnitState.NAND(Enums.UnitStateEnum.Landing);
        }

        // Zero vertical velocity when we're on the ground
        if (UnitState.HasFlag(Enums.UnitStateEnum.Grounded))
        {
            rigidBody.velocity = new Vector2(rigidBody.velocity.x, 0);
        }

        TakeAction();

        MotionDamping();

        UpdateUnitState();

        var scale = new Vector3(Mathf.Abs(transform.localScale.x), transform.localScale.y, transform.localScale.z);

        if (UnitState.HasFlag(Enums.UnitStateEnum.FacingLeft))
        {
            scale.x *= -1;
        }
        transform.localScale = scale;

        UpdateAnimations();
    }
Example #2
0
        public static string StateSummary(this Enums.UnitStateEnum self)
        {
            var result = new StringBuilder("Debug State Info\n");

            foreach (var value in Enum.GetValues(typeof(Enums.UnitStateEnum)))
            {
                //Debug.Log(String.Format("{0}: {1}", Enum.GetName(typeof(Enums.UnitStateEnum), value), self.HasFlag((Enums.UnitStateEnum)value)));

                if (self.HasFlag((Enums.UnitStateEnum)value))
                {
                    result.AppendLine(Enum.GetName(typeof(Enums.UnitStateEnum), value));
                }
            }

            return(result.ToString());
        }