Пример #1
0
    private void DrawImages(HeadKeeper keeper)
    {
        int i = 0;

        foreach (Speaker speaker in Enum.GetValues(typeof(Speaker)))
        {
            float aspect = 1;
            if (keeper.heads[i] != null && keeper.heads[i].head != null)
            {
                aspect = (float)keeper.heads[i].head.rect.width / keeper.heads[i].head.rect.height;
                keeper.heads[i].speaker = speaker;
            }

            EditorGUILayout.BeginHorizontal();
            GUILayout.Label((i + 1) + ": " + speaker.ToString(), GUILayout.Width(labelWidth));

            if (keeper.heads [i] != null)
            {
                keeper.heads [i].head = (Sprite)EditorGUILayout.ObjectField(keeper.heads[i].head, typeof(Sprite), false,
                                                                            new GUILayoutOption[] { GUILayout.Height(imageSize), GUILayout.Width(imageSize * aspect) });
            }
            GUILayout.Space(20);
            EditorGUILayout.EndHorizontal();
            GUILayout.Space(verticalSpacing);

            i++;
        }
    }
Пример #2
0
    public override void OnInspectorGUI()
    {
        HeadKeeper keeper = (HeadKeeper)target;

        FixGroupSize(keeper);
        DrawImages(keeper);

        EditorUtility.SetDirty(keeper);
    }
Пример #3
0
    private void FixGroupSize(HeadKeeper keeper)
    {
        int enumCount = Enum.GetValues(typeof(Speaker)).Length;
        int headCount = keeper.heads.Count;

        if (enumCount < headCount)
        {
            keeper.heads.RemoveRange(enumCount, headCount - enumCount);
        }
        else
        {
            keeper.heads.AddRange(new SpeakerHead[enumCount - headCount]);
        }
    }