Esempio n. 1
0
 public FlexFSM(GameObject _owner)
 {
     states              = new Dictionary <Enum, FlexState>();
     isActive            = false;
     currentState        = null;
     previousToBlipState = null;
     Owner = _owner;
 }
Esempio n. 2
0
 private Enum GetIDFromState(FlexState state)
 {
     if (!states.ContainsValue(state))
     {
         Debug.LogError("Can't get ID from state: StateID Not found");
         return(null);
     }
     return(states.FirstOrDefault(x => x.Value == state).Key);
 }
Esempio n. 3
0
 private void ChangeState(FlexState state)
 {
     if (currentState != null)
     {
         currentState.OnExit(Owner);
     }
     currentState = state;
     currentState.OnEnter(Owner);
 }
Esempio n. 4
0
 public void ChangeState(Enum stateID)
 {
     if (currentState != null)
     {
         currentState.OnExit(Owner);
     }
     currentState = GetStateFromID(stateID);
     currentState.OnEnter(Owner);
 }
Esempio n. 5
0
 public void AddState(Enum stateID, FlexState state)
 {
     if (states.ContainsValue(state) || states.ContainsKey(stateID))
     {
         Debug.LogError("Can't add state: state is already present");
         return;
     }
     state.SetFSM(this);
     state.Configure(Owner);
     states.Add(stateID, state);
 }
Esempio n. 6
0
 public void PushBlipState(Enum stateID)
 {
     if (IsCurrentState(stateID))
     {
         return;
     }
     currentState.OnExit(Owner);
     previousToBlipState = currentState;
     ChangeState(stateID);
     currentState.OnEnter(Owner);
 }
Esempio n. 7
0
 public void RevertBlipState()
 {
     if (previousToBlipState == null)
     {
         Debug.LogError("Attempting to revert a blip state that hasn't been defined");
         return;
     }
     currentState.OnExit(Owner);
     ChangeState(previousToBlipState);
     previousToBlipState = null;
     currentState.OnEnter(Owner);
 }
Esempio n. 8
0
        private double GetContentAlignedCrossOffset(double extraCrossSpaceInExtent, int lineIndex, FlexState state)
        {
            double crossContentOffset = 0;

            if (extraCrossSpaceInExtent > 0)
            {
                switch (AlignContent)
                {
                case AlignContent.FlexStart:
                    break;

                case AlignContent.FlexEnd:
                    crossContentOffset = extraCrossSpaceInExtent;
                    break;

                case AlignContent.Center:
                    crossContentOffset = extraCrossSpaceInExtent / 2;
                    break;

                case AlignContent.Stretch:
                    crossContentOffset = lineIndex * extraCrossSpaceInExtent / (state.Lines.Count);
                    break;

                case AlignContent.SpaceBetween:
                    if (state.Lines.Count > 1)
                    {
                        crossContentOffset = lineIndex * (extraCrossSpaceInExtent / (state.Lines.Count - 1));
                    }
                    break;

                case AlignContent.SpaceAround:
                    crossContentOffset = (lineIndex * 2 + 1) * extraCrossSpaceInExtent / (state.Lines.Count * 2);
                    break;
                }
            }

            return(crossContentOffset);
        }