コード例 #1
0
    private static void RenderProperty(Proxy p, object obj)
    {
        var val = p.GetValue();
        var enabled = GUI.enabled;

        if (!p.canWrite)
            GUI.enabled = false;

        var rendered = false;
        var methods = typeof(RefInspector2).GetMethods(
            BindingFlags.Static | BindingFlags.NonPublic);
        foreach(var method in methods)
        {
            if (method.ReturnType == p.type &&
                method.GetParameters().Length == 2 &&
                method.GetParameters()[1].ParameterType == p.type)
            {
                val = method.Invoke(null, new object[] { p.name, val });
                rendered = true;
                break;
            }
        }

        if (p.type.GetInterface("IList") != null)
        {
            OnList(p, (IList)val);
            return;
        }

        if (!rendered && val != null)
        {
            OnObject(p.name, val);
            return;
        }

        if (!p.canWrite)
            GUI.enabled = enabled;
        else
            p.SetValue(val);
    }