Esempio n. 1
0
            internal bool Evaluate(TagData inData, object inContext, out TagEventData outEvent)
            {
                outEvent           = new TagEventData(m_EventId);
                outEvent.IsClosing = inData.IsClosing();

                switch (m_DataMode)
                {
                case DataMode.String:
                {
                    if (inData.Data.IsEmpty)
                    {
                        outEvent.StringArgument = m_DefaultString;
                    }
                    else
                    {
                        outEvent.StringArgument = inData.Data;
                    }
                    break;
                }

                case DataMode.Float:
                {
                    float arg;
                    if (!StringParser.TryParseFloat(inData.Data, out arg))
                    {
                        arg = m_DefaultValue.AsFloat();
                    }
                    outEvent.Argument0 = arg;
                    break;
                }

                case DataMode.Bool:
                {
                    bool arg;
                    if (!StringParser.TryParseBool(inData.Data, out arg))
                    {
                        arg = m_DefaultValue.AsBool();
                    }
                    outEvent.Argument0 = arg;
                    break;
                }

                case DataMode.StringHash:
                {
                    StringHash32 arg;
                    if (!StringHash32.TryParse(inData.Data, out arg))
                    {
                        arg = m_DefaultValue.AsStringHash();
                    }
                    outEvent.Argument0 = arg;
                    break;
                }
                }

                if (m_HandleClosing && outEvent.IsClosing)
                {
                    outEvent.Type = m_EventClosingId;
                    if (m_EventClosingDelegate != null)
                    {
                        m_EventClosingDelegate(inData, inContext, ref outEvent);
                    }

                    return(true);
                }
                else
                {
                    if (m_EventDelegate != null)
                    {
                        m_EventDelegate(inData, inContext, ref outEvent);
                    }

                    return(true);
                }
            }
Esempio n. 2
0
        /// <summary>
        /// Attempts to parse a string slice into a variant.
        /// </summary>
        static public bool TryParse(StringSlice inSlice, bool inbAllowImplicitHash, out Variant outValue)
        {
            inSlice = inSlice.Trim();

            if (inSlice.Length <= 0 || inSlice.Equals("null", true))
            {
                outValue = Variant.Null;
                return(true);
            }

            if (inSlice.StartsWith(StringHashing.CustomHashPrefix) || inSlice.StartsWith(StringHashing.StringPrefix) ||
                (inSlice.Length >= 2 && inSlice.StartsWith('"') && inSlice.EndsWith('"')))
            {
                StringHash32 hash;
                if (StringHash32.TryParse(inSlice, out hash))
                {
                    outValue = hash;
                    return(true);
                }
            }

            bool bBoolVal;

            if (StringParser.TryParseBool(inSlice, out bBoolVal))
            {
                outValue = new Variant(bBoolVal);
                return(true);
            }

            int intVal;

            if (StringParser.TryParseInt(inSlice, out intVal))
            {
                outValue = new Variant(intVal);
                return(true);
            }

            uint uintVal;

            if (StringParser.TryParseUInt(inSlice, out uintVal))
            {
                outValue = new Variant(uintVal);
                return(true);
            }

            float floatVal;

            if (StringParser.TryParseFloat(inSlice, out floatVal))
            {
                outValue = new Variant(floatVal);
                return(true);
            }

            if (inbAllowImplicitHash)
            {
                StringHash32 hash;
                if (StringHash32.TryParse(inSlice, out hash))
                {
                    outValue = hash;
                    return(true);
                }
            }

            outValue = default(Variant);
            return(false);
        }