protected UpdateMode DetermineUpdateMode() { _motor = this.GetComponent <MovementMotor>(); _controller = this.entityRoot.GetComponent <MovementController>(); _charController = this.entityRoot.GetComponent <CharacterController>(); _rigidbody = this.entityRoot.GetComponent <Rigidbody>(); if (_motor != null) { _mode = UpdateMode.Motor; } else if (_controller != null) { _mode = UpdateMode.MovementControllerOnly; } else if (_charController != null) { _mode = UpdateMode.CharacterController; } else if (_rigidbody != null) { _mode = UpdateMode.DumbRigidbody; } else { _mode = UpdateMode.DumbTransformOnly; } return(_mode); }
internal MovementStyleStateMachine(MovementMotor owner) { _owner = owner; _stateSupplier = new ComponentStateSupplier <IMovementStyle>(_owner.gameObject); _changeStyleDelayed = null; _changeStyleDelayedPrecedence = float.NegativeInfinity; _stackStyleDelayed.Clear(); _styleStack = new Deque <IMovementStyle>(); }
protected override void Awake() { base.Awake(); if (_motor == null) { _motor = this.GetComponent <MovementMotor>(); } }
public static InjectedMovementStyle InjectMovement(MovementMotor motor, System.Func <System.Collections.IEnumerator> routine, float precedence = 0) { if (motor == null) { throw new System.ArgumentNullException("motor"); } if (routine == null) { throw new System.ArgumentNullException("routine"); } var style = motor.AddComponent <InjectedMovementStyle>(); style.Purge(); style._routine = new RadicalCoroutine(routine()); motor.States.ChangeState(style, precedence); return(style); }
public static InjectedMovementStyle InjectMovement(MovementMotor motor, System.Action updateCallback, float precedence = 0) { if (motor == null) { throw new System.ArgumentNullException("motor"); } if (updateCallback == null) { throw new System.ArgumentNullException("updateCallback"); } var style = motor.AddComponent <InjectedMovementStyle>(); style.Purge(); style._updateMovementCallback = updateCallback; motor.States.ChangeState(style, precedence); return(style); }