Exemplo n.º 1
0
        ///////////////////////////////
        // StateValues
        ///////////////////////////////

        // Use to set value-type StateValue
        public void SetStateValue <T>(StateValue <T> aStateValue, T aValue)
        {
            if (!IsStateValueInResetterList(aStateValue))
            {
                mStateValueResetters.Add(new StateValueResetterT <T>(aStateValue));
            }

            aStateValue.__ValueToBeAccessedByStateMachineOnly = aValue;
        }
Exemplo n.º 2
0
 private bool IsStateValueInResetterList <T>(StateValue <T> aStateValue)
 {
     if (mStateValueResetters == null) // First time, lazily create list
     {
         mStateValueResetters = new List <IStateValueResetter>();
     }
     else
     {
         foreach (var resetter in mStateValueResetters)
         {
             if (resetter is StateValueResetterT <T> r && r.StateValue == aStateValue)
             {
                 return(true);
             }
         }
     }
     return(false);
 }
Exemplo n.º 3
0
 public StateValueResetterT(StateValue <T> aStateValue)
 {
     mStateValue    = aStateValue;
     mOriginalValue = aStateValue.__ValueToBeAccessedByStateMachineOnly;
 }
Exemplo n.º 4
0
 public override void Reset()
 {
     mStateValue.__ValueToBeAccessedByStateMachineOnly = mOriginalValue;
     mStateValue = null; //@TODO: Add Dispose (or Finalize) that asserts that this is null (that Reset got called)
 }
Exemplo n.º 5
0
 public void SetAttribute <T>(StateValue <T> aStateValue, T aValue) where T : struct
 {
 }