//do it by invoking method
        protected override bool OnCheck()
        {
            var instance = targetMethod.IsStatic ? null : agent;

            if (checkValue.varType == typeof(float))
            {
                return(OperationTools.Compare((float)targetMethod.Invoke(instance, null), (float)checkValue.value, comparison, 0.05f));
            }
            if (checkValue.varType == typeof(int))
            {
                return(OperationTools.Compare((int)targetMethod.Invoke(instance, null), (int)checkValue.value, comparison));
            }
            return(ObjectUtils.AnyEquals(targetMethod.Invoke(instance, null), checkValue.value));
        }
        //do it by invoking field
        protected override bool OnCheck()
        {
            if (checkValue.varType == typeof(float))
            {
                return(OperationTools.Compare((float)targetField.GetValue(agent), (float)checkValue.value, comparison, 0.05f));
            }

            if (checkValue.varType == typeof(int))
            {
                return(OperationTools.Compare((int)targetField.GetValue(agent), (int)checkValue.value, comparison));
            }

            return(ObjectUtils.AnyEquals(targetField.GetValue(agent), checkValue.value));
        }
        //do it by invoking method
        protected override bool OnCheck()
        {
            if (functionWrapper == null)
            {
                return(true);
            }

            if (checkValue.varType == typeof(float))
            {
                return(OperationTools.Compare((float)functionWrapper.Call(), (float)checkValue.value, comparison, 0.05f));
            }
            if (checkValue.varType == typeof(int))
            {
                return(OperationTools.Compare((int)functionWrapper.Call(), (int)checkValue.value, comparison));
            }
            return(ObjectUtils.AnyEquals(functionWrapper.Call(), checkValue.value));
        }
 public override bool Invoke(object a, object b)
 {
     return(!ObjectUtils.AnyEquals(a, b));
 }
 protected override bool OnCheck()
 {
     return(ObjectUtils.AnyEquals(valueA.value, valueB.value));
 }