public void UpdateFields()
    {
        if (EditorApplication.timeSinceStartup - lastTime < 1.0 || attachedType == null)
        {
            return;
        }

        //UpdateFilePath();
        int  count = -1;
        Type t     = attachedType;

        FieldInfo[]          fields        = t.GetFields(BindingFlags.Instance | BindingFlags.Public | BindingFlags.NonPublic);
        List <string>        varsCollected = new List <string>();
        InspectorPlusSummary s             = new InspectorPlusSummary();

        s.ReadSummaries(filePath);

        foreach (FieldInfo fieldInfo in fields)
        {
            if (ignoredProperties.Contains(fieldInfo.Name))
            {
                continue;
            }

            if (fieldInfo.IsPrivate && !fieldInfo.IsDefined(typeof(SerializeField), false))
            {
                continue;
            }

            if (fieldInfo.IsDefined(typeof(HideInInspector), false))
            {
                continue;
            }

            ++count;
            varsCollected.Add(fieldInfo.Name);

            if (varsHad.Contains(fieldInfo.Name))
            {
                continue;
            }

            if (!first)
            {
                varsHad.Insert(count, fieldInfo.Name);
            }
            else
            {
                varsHad.Add(fieldInfo.Name);
            }

            InspectorPlusVar newVar = new InspectorPlusVar();
            newVar.name = fieldInfo.Name;
            newVar.SetDispName();
            newVar.type      = fieldInfo.FieldType.Name;
            newVar.isArray   = fieldInfo.FieldType.IsArray;
            newVar.classType = attachedType.Name;

            if (!first)
            {
                vars.Insert(count, newVar);
            }
            else
            {
                vars.Add(newVar);
            }
        }

        foreach (FieldInfo fieldInfo in fields)
        {
            string           newTooltip = s.GetSummary(fieldInfo.Name);
            InspectorPlusVar ipv        = vars.Find(delegate(InspectorPlusVar i) { return(i.name == fieldInfo.Name); });

            if (ipv == null)
            {
                continue;
            }

            if (fieldInfo.IsDefined(typeof(InspectorTip), false))
            {
                object[] tips = fieldInfo.GetCustomAttributes(typeof(InspectorTip), false);
                newTooltip = ((InspectorTip)tips[tips.Length - 1]).tip;
            }

            if (newTooltip != "")
            {
                ipv.hasTooltip = true;
                ipv.tooltip    = newTooltip;
                ipv.fixedTip   = true;
            }
            else
            {
                ipv.fixedTip = false;
            }
        }

        vars.RemoveAll(delegate(InspectorPlusVar v) { return(!varsCollected.Contains(v.name)); });
        varsHad.RemoveAll(delegate(string n) { return(!varsCollected.Contains(n)); });

        lastTime = EditorApplication.timeSinceStartup;
        first    = false;
    }
    public void UpdateFields()
    {
		if (EditorApplication.timeSinceStartup - lastTime < 1.0 || attachedType == null)
            return;

        //UpdateFilePath();
        int count = -1;
        Type t = attachedType;
        FieldInfo[] fields = t.GetFields(BindingFlags.Instance | BindingFlags.Public | BindingFlags.NonPublic);
        List<string> varsCollected = new List<string>();
		InspectorPlusSummary s = new InspectorPlusSummary();
        s.ReadSummaries(filePath);

        foreach (FieldInfo fieldInfo in fields)
        {
            if (ignoredProperties.Contains(fieldInfo.Name))
                continue;

            if (fieldInfo.IsPrivate && !fieldInfo.IsDefined(typeof(SerializeField), false))
                continue;

            if (fieldInfo.IsDefined(typeof(HideInInspector), false))
                continue;

            ++count;
            varsCollected.Add(fieldInfo.Name);

            if (varsHad.Contains(fieldInfo.Name))
                continue;

            if (!first)
                varsHad.Insert(count, fieldInfo.Name);
            else
                varsHad.Add(fieldInfo.Name);

            InspectorPlusVar newVar = new InspectorPlusVar();
            newVar.name = fieldInfo.Name;
            newVar.SetDispName();
            newVar.type = fieldInfo.FieldType.Name;
            newVar.isArray = fieldInfo.FieldType.IsArray;
            newVar.classType = attachedType.Name;

            if (!first)
                vars.Insert(count, newVar);
            else
                vars.Add(newVar);
        }

        foreach (FieldInfo fieldInfo in fields)
        {
            string newTooltip = s.GetSummary(fieldInfo.Name);
            InspectorPlusVar ipv = vars.Find(delegate(InspectorPlusVar i) { return i.name == fieldInfo.Name; });

            if (ipv == null)
                continue;

            if (fieldInfo.IsDefined(typeof(InspectorTip), false))
            {
                object[] tips = fieldInfo.GetCustomAttributes(typeof(InspectorTip), false);
                newTooltip = ((InspectorTip)tips[tips.Length - 1]).tip;
            }

            if (newTooltip != "")
            {
                ipv.hasTooltip = true;
                ipv.tooltip = newTooltip;
                ipv.fixedTip = true;
            }
            else ipv.fixedTip = false;
        }

        vars.RemoveAll(delegate(InspectorPlusVar v) { return (!varsCollected.Contains(v.name)); });
        varsHad.RemoveAll(delegate(string n) { return (!varsCollected.Contains(n)); });
		
		lastTime = EditorApplication.timeSinceStartup;
        first = false;
    }