Exemplo n.º 1
0
 /// <summary>
 /// 解绑条件
 /// </summary>
 /// <param name="condtion"></param>
 public void UnBindCondition(ITransitionCondition condtion)
 {
     if (condtion == null)
     {
         throw new Exception("Func is" + condtion);
     }
     conditions -= condtion.IsMetCondition;
 }
        public override bool AddFinishCondition(ITransitionCondition condition)
        {
            if (condition == null || this.finishConditions.Contains(condition))
            {
                return(false);
            }

            this.finishConditions.Add(condition);
            return(true);
        }
Exemplo n.º 3
0
 // PRAGMA MARK - ISerializationCallbackReceiver Implementation
 public void OnAfterDeserialize()
 {
     this._conditions = new List <ITransitionCondition>();
     foreach (string serializedCondition in this._serializedConditions)
     {
         ITransitionCondition condition = JsonSerialization.DeserializeGeneric <ITransitionCondition>(serializedCondition);
         if (condition != null)
         {
             this._conditions.Add(condition);
         }
     }
 }
        private void AddTransitionCondition(object tupleAsObject)
        {
            Tuple <NodeTransition, Type> data = tupleAsObject as Tuple <NodeTransition, Type>;
            NodeTransition nodeTransition     = data.Item1;
            Type           type = data.Item2;

            ITransitionCondition transitionCondition = Activator.CreateInstance(type) as ITransitionCondition;

            if (transitionCondition == null)
            {
                Debug.LogError("AddTransitionCondition - Failed to cast created type as ITransitionCondition!");
                return;
            }

            nodeTransition.transition.AddTransitionCondition(transitionCondition);
            this.SetTargetDirty();
        }
        public static string Serialize(ITransitionCondition condition)
        {
            if (condition == null)
            {
                Debug.LogError("TransitionConditionSerializer - Serialize was passed in null condition!");
                return("");
            }

            Type type = condition.GetType();

            MethodInfo genericMethod = typeof(TransitionConditionSerializer).GetMethod("SerializeCondition", BindingFlags.Static | BindingFlags.NonPublic);
            MethodInfo method        = genericMethod.MakeGenericMethod(type);

            string serializedCondition = (string)method.Invoke(null, new object[] { condition });

            var serializedConditionWrapper = new SerializedClassWrapper(type, serializedCondition);

            return(JsonUtility.ToJson(serializedConditionWrapper, prettyPrint: true));
        }
Exemplo n.º 6
0
        public void BoolTransitionCondition_MatchesOtherTests_AfterSerializingAndDeserializing(string key, bool targetValue, bool expectedEntered)
        {
            Graph graph = new Graph();

            Node nodeA = graph.MakeNode();
            Node nodeB = graph.MakeNode();

            Transition transition = new Transition(waitForManualExit: false);

            BoolTransitionCondition condition = new BoolTransitionCondition(key, targetValue);
            // NEW CODE
            string serialized = TransitionConditionSerializer.Serialize(condition);
            ITransitionCondition deserialized = TransitionConditionSerializer.Deserialize(serialized);

            transition.AddTransitionCondition(deserialized);
            // END NEW CODE

            NodeTransition nodeTransition = new NodeTransition {
                targets = new NodeId[] { nodeB.Id }, transition = transition
            };

            graph.AddOutgoingTransitionForNode(nodeA, nodeTransition);

            IGraphContext stubContext = Substitute.For <IGraphContext>();

            stubContext.HasBoolParameterKey(Arg.Is("Key")).Returns(true);
            stubContext.GetBool(Arg.Is("Key")).Returns(true);

            IGraphContextFactory stubFactory = Substitute.For <IGraphContextFactory>();

            stubFactory.MakeContext().Returns(stubContext);
            GraphContextFactoryLocator.Provide(stubFactory);

            bool entered = false;

            nodeB.OnEnter += () => { entered = true; };

            graph.Start();
            Assert.AreEqual(expectedEntered, entered);
        }
 public Transition <TState, TTransition, TSignal> FinishWhen(
     ITransitionCondition condition)
 {
     AddFinishCondition(condition);
     return(this);
 }
 public Transition <TState, TTransition, TSignal> StartWhen(
     ITransitionCondition condition)
 {
     AddStartCondition(condition);
     return(this);
 }
Exemplo n.º 9
0
 public OrthogonalTransition <TState, TTransition, TSignal> FinishWhen(
     ITransitionCondition condition)
 {
     this.Transition.StartWhen(condition);
     return(this);
 }
Exemplo n.º 10
0
 public void AddTransitionCondition(ITransitionCondition condition)
 {
     this._conditions.Add(condition);
 }
Exemplo n.º 11
0
 public abstract bool AddFinishCondition(ITransitionCondition condition);
Exemplo n.º 12
0
 public abstract bool AddStartCondition(ITransitionCondition condition);