public override bool GetResult()
        {
            A = Inputs[0];
            B = Inputs[1];
            WireNode aOwner = A.GetConnectedPin().GetOwner();
            WireNode bOwner = B.GetConnectedPin().GetOwner();

            if (aOwner is GetVariableWireNode)
            {
                GetVariableWireNode varNode = (GetVariableWireNode)aOwner;
                if (bOwner is GetVariableWireNode)
                {
                    return(!varNode.RetrievedVariable.Equals((bOwner as GetVariableWireNode).RetrievedVariable));
                }
                else if (bOwner is ConstantWireNode)
                {
                    return(!varNode.RetrievedVariable.Equals((bOwner as ConstantWireNode).Constant));
                }
                else if (bOwner is GetAnimatorVariableWireNode)
                {
                    GetAnimatorVariableWireNode animVar = (GetAnimatorVariableWireNode)bOwner;
                    switch (varNode.RetrievedVariable.Type)
                    {
                    case VariableType.FLOAT:
                        return(varNode.RetrievedVariable.GetValueAs <float>() != animVar.GetVariableAsFloat());

                    case VariableType.INT:
                        return(varNode.RetrievedVariable.GetValueAs <int>() != animVar.GetVariableAsInteger());

                    case VariableType.STRING:
                        return(true);
                    }
                }
            }
            else if (aOwner is ConstantWireNode)
            {
                ConstantWireNode constNode = (ConstantWireNode)aOwner;

                if (bOwner is GetVariableWireNode) // To compare a variable and a constant, use the equal method of the variable class
                {
                    return(!((GetVariableWireNode)bOwner).RetrievedVariable.Equals(constNode.Constant));
                }
                else if (bOwner is ConstantWireNode) // To compare two constants, just compare their raw value
                {
                    return(!constNode.Constant.Value.Equals((bOwner as ConstantWireNode).Constant.Value));
                }
                else if (bOwner is GetAnimatorVariableWireNode)
                {
                    GetAnimatorVariableWireNode animVar = (GetAnimatorVariableWireNode)bOwner;
                    switch (constNode.Constant.Type)
                    {
                    case VariableType.FLOAT:
                        return(((float)constNode.Constant.Value) != animVar.GetVariableAsFloat());

                    case VariableType.INT:
                        return(((int)constNode.Constant.Value) != animVar.GetVariableAsInteger());

                    case VariableType.STRING:
                        return(true);
                    }
                }
            }
            else if (aOwner is GetAnimatorVariableWireNode)
            {
                GetAnimatorVariableWireNode animVarNode = (GetAnimatorVariableWireNode)aOwner;
                if (bOwner is GetVariableWireNode) // To compare a variable and a animator variable, use the equal method of the variable class
                {
                    Variable myVar = (bOwner as GetVariableWireNode).RetrievedVariable;
                    switch (myVar.Type)
                    {
                    case VariableType.FLOAT:
                        return(!myVar.Equals(animVarNode.GetVariableAsFloat()));

                    case VariableType.INT:
                        return(!myVar.Equals(animVarNode.GetVariableAsInteger()));

                    case VariableType.STRING:
                        return(true);
                    }
                }
                else if (bOwner is ConstantWireNode) // To compare two constants, just compare their raw value
                {
                    Constant myConst = (bOwner as ConstantWireNode).Constant;
                    switch (myConst.Type)
                    {
                    case VariableType.FLOAT:
                        return(myConst.GetValueAs <float>() != animVarNode.GetVariableAsFloat());

                    case VariableType.INT:
                        return(myConst.GetValueAs <int>() != animVarNode.GetVariableAsInteger());

                    case VariableType.STRING:
                        return(false);
                    }
                }
                else if (bOwner is GetAnimatorVariableWireNode)
                {
                    GetAnimatorVariableWireNode other = (GetAnimatorVariableWireNode)bOwner;
                    try
                    {
                        return(!(other.GetVariableAsFloat() == animVarNode.GetVariableAsFloat() ||
                                 other.GetVariableAsInteger() == animVarNode.GetVariableAsInteger() ||
                                 other.GetVariableAsBool() == animVarNode.GetVariableAsBool()));
                    }
                    catch (Exception)
                    {
                        return(!(other.GetVariableAsBool() == animVarNode.GetVariableAsBool()));
                    }
                }
            }

            return(true);
        }
        public override bool GetResult()
        {
            A = Inputs[0];
            B = Inputs[1];

            WireNode    aOwner = A.GetConnectedPin().GetOwner();
            WireNode    bOwner = B.GetConnectedPin().GetOwner();
            IComparable va     = null;
            IComparable vb     = null;

            if (aOwner is ConstantWireNode)
            {
                Constant constantA = ((ConstantWireNode)aOwner).Constant;
                if (constantA.Type == VariableType.FLOAT)
                {
                    va = constantA.GetValueAs <float>();
                }
                if (constantA.Type == VariableType.INT)
                {
                    va = constantA.GetValueAs <int>();
                }

                if (bOwner is ConstantWireNode)
                {
                    Constant constantB = ((ConstantWireNode)bOwner).Constant;
                    if (constantB.Type == VariableType.FLOAT)
                    {
                        vb = constantB.GetValueAs <float>();
                    }
                    if (constantB.Type == VariableType.INT)
                    {
                        vb = constantB.GetValueAs <int>();
                    }
                }
                else if (bOwner is GetVariableWireNode)
                {
                    Variable variableB = ((GetVariableWireNode)bOwner).RetrievedVariable;
                    if (variableB.Type == VariableType.FLOAT)
                    {
                        vb = variableB.GetValueAs <float>();
                    }
                    if (variableB.Type == VariableType.INT)
                    {
                        vb = variableB.GetValueAs <int>();
                    }
                }
                else if (bOwner is GetAnimatorVariableWireNode)
                {
                    GetAnimatorVariableWireNode bGavwn = (GetAnimatorVariableWireNode)bOwner;
                    try
                    {
                        vb = bGavwn.GetVariableAsFloat();
                    }
                    catch (Exception)
                    {
                        try
                        {
                            vb = bGavwn.GetVariableAsInteger();
                        }
                        catch (Exception) { }
                    }
                }
            }

            else if (aOwner is GetVariableWireNode)
            {
                Variable variableA = ((GetVariableWireNode)aOwner).RetrievedVariable;
                if (variableA.Type == VariableType.FLOAT)
                {
                    va = variableA.GetValueAs <float>();
                }
                if (variableA.Type == VariableType.INT)
                {
                    va = variableA.GetValueAs <int>();
                }
                if (bOwner is ConstantWireNode)
                {
                    Constant constantB = ((ConstantWireNode)bOwner).Constant;
                    if (constantB.Type == VariableType.FLOAT)
                    {
                        vb = constantB.GetValueAs <float>();
                    }
                    if (constantB.Type == VariableType.INT)
                    {
                        vb = constantB.GetValueAs <int>();
                    }
                }
                else if (bOwner is GetVariableWireNode)
                {
                    Variable variableB = ((GetVariableWireNode)bOwner).RetrievedVariable;
                    if (variableB.Type == VariableType.FLOAT)
                    {
                        vb = variableB.GetValueAs <float>();
                    }
                    if (variableB.Type == VariableType.INT)
                    {
                        vb = variableB.GetValueAs <int>();
                    }
                }
                else if (bOwner is GetAnimatorVariableWireNode)
                {
                    GetAnimatorVariableWireNode bGavwn = (GetAnimatorVariableWireNode)bOwner;
                    try
                    {
                        vb = bGavwn.GetVariableAsFloat();
                    }
                    catch (Exception)
                    {
                        try
                        {
                            vb = bGavwn.GetVariableAsInteger();
                        }
                        catch (Exception) { }
                    }
                }
            }

            else if (aOwner is GetAnimatorVariableWireNode)
            {
                GetAnimatorVariableWireNode aGavwn = (GetAnimatorVariableWireNode)aOwner;
                try
                {
                    va = aGavwn.GetVariableAsFloat();
                }
                catch (Exception)
                {
                    try
                    {
                        va = aGavwn.GetVariableAsInteger();
                    }
                    catch (Exception) { }
                }
                if (bOwner is ConstantWireNode)
                {
                    Constant constantB = ((ConstantWireNode)bOwner).Constant;
                    if (constantB.Type == VariableType.FLOAT)
                    {
                        vb = constantB.GetValueAs <float>();
                    }
                    if (constantB.Type == VariableType.INT)
                    {
                        vb = constantB.GetValueAs <int>();
                    }
                }
                else if (bOwner is GetVariableWireNode)
                {
                    Variable variableB = ((GetVariableWireNode)bOwner).RetrievedVariable;
                    if (variableB.Type == VariableType.FLOAT)
                    {
                        vb = variableB.GetValueAs <float>();
                    }
                    if (variableB.Type == VariableType.INT)
                    {
                        vb = variableB.GetValueAs <int>();
                    }
                }
                else if (bOwner is GetAnimatorVariableWireNode)
                {
                    GetAnimatorVariableWireNode bGavwn = (GetAnimatorVariableWireNode)bOwner;
                    try
                    {
                        vb = bGavwn.GetVariableAsFloat();
                    }
                    catch (Exception)
                    {
                        try
                        {
                            vb = bGavwn.GetVariableAsInteger();
                        }
                        catch (Exception) { }
                    }
                }
            }

            if (va == null || vb == null)
            {
                return(false);
            }
            int comparation = va.CompareTo(vb);

            return(comparation < 0);
        }