Exemplo n.º 1
0
        public bool OnGUI()
        {
            bool delete;

            GUIHelper.FoldoutBar(ref _foldout, _overlayData.asset.overlayName, out move, out delete);

            if (!_foldout)
            {
                return(false);
            }

            Delete = delete;

            GUIHelper.BeginHorizontalPadded(10, Color.white);
            GUILayout.BeginVertical();

            bool changed = OnColorGUI();

            GUILayout.BeginHorizontal();
            foreach (var texture in _textures)
            {
                changed |= texture.OnGUI();
            }
            GUILayout.EndHorizontal();

            GUILayout.EndVertical();

            GUIHelper.EndVerticalPadded(10);

            return(changed);
        }
Exemplo n.º 2
0
        public bool OnGUI(UMAData.UMARecipe _recipe)
        {
            GUILayout.BeginHorizontal(EditorStyles.toolbarButton);
            GUILayout.Space(10);
            _foldout = EditorGUILayout.Foldout(_foldout, "Shared Colors");
            GUILayout.EndHorizontal();

            if (_foldout)
            {
                bool changed = false;
                GUIHelper.BeginVerticalPadded(10, new Color(0.75f, 0.875f, 1f));

                EditorGUILayout.BeginHorizontal();
                if (_recipe.sharedColors == null)
                {
                    _recipe.sharedColors = new OverlayColorData[0];
                }

                if (_recipe.sharedColors.Length == 0)
                {
                    selectedChannelCount = EditorGUILayout.IntPopup("Channels", selectedChannelCount, names, channels);
                }
                else
                {
                    selectedChannelCount = _recipe.sharedColors [0].channelMask.Length;
                }

                if (GUILayout.Button("Add Shared Color"))
                {
                    List <OverlayColorData> sharedColors = new List <OverlayColorData> ();
                    sharedColors.AddRange(_recipe.sharedColors);
                    sharedColors.Add(new OverlayColorData(selectedChannelCount));
                    _recipe.sharedColors = sharedColors.ToArray();
                    changed = true;
                }

                if (GUILayout.Button("Save Collection"))
                {
                    changed = true;
                }

                EditorGUILayout.EndHorizontal();


                if (_ColorFoldouts.Length != _recipe.sharedColors.Length)
                {
                    Array.Resize <bool> (ref _ColorFoldouts, _recipe.sharedColors.Length);
                }


                for (int i = 0; i < _recipe.sharedColors.Length; i++)
                {
                    bool             del = false;
                    OverlayColorData ocd = _recipe.sharedColors [i];

                    GUIHelper.FoldoutBar(ref _ColorFoldouts [i], i + ": " + ocd.name, out del);
                    if (del)
                    {
                        List <OverlayColorData> temp = new List <OverlayColorData> ();
                        temp.AddRange(_recipe.sharedColors);
                        temp.RemoveAt(i);
                        _recipe.sharedColors = temp.ToArray();
                        // TODO: search the overlays and adjust the shared colors
                        break;
                    }
                    if (_ColorFoldouts [i])
                    {
                        if (ocd.name == null)
                        {
                            ocd.name = "";
                        }


                        string NewName = EditorGUILayout.TextField("Name", ocd.name);
                        if (NewName != ocd.name)
                        {
                            ocd.name = NewName;
                            //changed = true;
                        }

                        Color NewChannelMask = EditorGUILayout.ColorField("Color Multiplier", ocd.channelMask [0]);
                        if (ocd.channelMask [0] != NewChannelMask)
                        {
                            ocd.channelMask [0] = NewChannelMask;
                            changed             = true;
                        }

                        Color NewChannelAdditiveMask = EditorGUILayout.ColorField("Color Additive", ocd.channelAdditiveMask [0]);
                        if (ocd.channelAdditiveMask [0] != NewChannelAdditiveMask)
                        {
                            ocd.channelAdditiveMask [0] = NewChannelAdditiveMask;
                            changed = true;
                        }

                        for (int j = 1; j < ocd.channelMask.Length; j++)
                        {
                            NewChannelMask = EditorGUILayout.ColorField("Texture " + j + "multiplier", ocd.channelMask [j]);
                            if (ocd.channelMask [j] != NewChannelMask)
                            {
                                ocd.channelMask [j] = NewChannelMask;
                                changed             = true;
                            }

                            NewChannelAdditiveMask = EditorGUILayout.ColorField("Texture " + j + " additive", ocd.channelAdditiveMask [j]);
                            if (ocd.channelAdditiveMask [j] != NewChannelAdditiveMask)
                            {
                                ocd.channelAdditiveMask [j] = NewChannelAdditiveMask;
                                changed = true;
                            }
                        }
                    }
                }
                GUIHelper.EndVerticalPadded(10);
                return(changed);
            }
            return(false);
        }
Exemplo n.º 3
0
        public bool OnGUI(ref bool _dnaDirty, ref bool _textureDirty, ref bool _meshDirty)
        {
            bool delete;

            GUIHelper.FoldoutBar(ref _foldout, _name, out delete);

            if (!_foldout)
            {
                return(false);
            }

            Delete = delete;

            bool changed = false;

            GUIHelper.BeginVerticalPadded(10, new Color(0.75f, 0.875f, 1f));

            if (sharedOverlays)
            {
                EditorGUILayout.LabelField("Shared Overlays");
            }
            else
            {
                var added = (OverlayDataAsset)EditorGUILayout.ObjectField("Add Overlay", null, typeof(OverlayDataAsset), false);

                if (added != null)
                {
                    var newOverlay = new OverlayData(added);
                    _overlayEditors.Add(new OverlayEditor(_recipe, _slotData, newOverlay));
                    _overlayData.Add(newOverlay);
                    _dnaDirty     = true;
                    _textureDirty = true;
                    _meshDirty    = true;
                    changed       = true;
                }

                var addedSlot = (SlotDataAsset)EditorGUILayout.ObjectField("Add Slot", null, typeof(SlotDataAsset), false);

                if (addedSlot != null)
                {
                    var newSlot = new SlotData(addedSlot);
                    newSlot.SetOverlayList(_slotData.GetOverlayList());
                    _recipe.MergeSlot(newSlot, false);
                    _dnaDirty     = true;
                    _textureDirty = true;
                    _meshDirty    = true;
                    changed       = true;
                }

                for (int i = 0; i < _overlayEditors.Count; i++)
                {
                    var overlayEditor = _overlayEditors[i];

                    if (overlayEditor.OnGUI())
                    {
                        _textureDirty = true;
                        changed       = true;
                    }

                    if (overlayEditor.Delete)
                    {
                        _overlayEditors.RemoveAt(i);
                        _overlayData.RemoveAt(i);
                        _textureDirty = true;
                        changed       = true;
                        i--;
                    }
                }

                for (int i = 0; i < _overlayEditors.Count; i++)
                {
                    var overlayEditor = _overlayEditors[i];
                    if (overlayEditor.move > 0 && i + 1 < _overlayEditors.Count)
                    {
                        _overlayEditors[i]     = _overlayEditors[i + 1];
                        _overlayEditors[i + 1] = overlayEditor;

                        var overlayData = _overlayData[i];
                        _overlayData[i]     = _overlayData[i + 1];
                        _overlayData[i + 1] = overlayData;

                        overlayEditor.move = 0;
                        _textureDirty      = true;
                        changed            = true;
                        continue;
                    }

                    if (overlayEditor.move < 0 && i > 0)
                    {
                        _overlayEditors[i]     = _overlayEditors[i - 1];
                        _overlayEditors[i - 1] = overlayEditor;

                        var overlayData = _overlayData[i];
                        _overlayData[i]     = _overlayData[i - 1];
                        _overlayData[i - 1] = overlayData;

                        overlayEditor.move = 0;
                        _textureDirty      = true;
                        changed            = true;
                        continue;
                    }
                }
            }
            GUIHelper.EndVerticalPadded(10);

            return(changed);
        }
Exemplo n.º 4
0
        public bool OnGUI(ref bool _dnaDirty, ref bool _textureDirty, ref bool _meshDirty)
        {
            bool delete;

            GUIHelper.FoldoutBar(ref _foldout, _name, out delete);

            if (!_foldout)
            {
                return(false);
            }

            Delete = delete;

            bool changed = false;

            GUIHelper.BeginVerticalPadded(10, new Color(0.75f, 0.875f, 1f));

            var added = (OverlayData)EditorGUILayout.ObjectField("Add Overlay", null, typeof(OverlayData), false);

            if (added != null)
            {
                _overlayEditors.Add(new OverlayEditor(_slotData, added));
                _overlayData.Add(added);
                _dnaDirty     = true;
                _textureDirty = true;
                _meshDirty    = true;
                changed       = true;
            }

            for (int i = 0; i < _overlayEditors.Count; i++)
            {
                var overlayEditor = _overlayEditors [i];

                if (overlayEditor.OnGUI())
                {
                    _textureDirty = true;
                    changed       = true;
                }

                if (overlayEditor.Delete)
                {
                    _overlayEditors.RemoveAt(i);
                    _overlayData.RemoveAt(i);
                    _textureDirty = true;
                    changed       = true;
                    i--;
                }
            }

            for (int i = 0; i < _overlayEditors.Count; i++)
            {
                var overlayEditor = _overlayEditors[i];
                if (overlayEditor.move > 0)
                {
                    _overlayEditors.MoveElementUpAt(i);
                    _overlayData.MoveElementUpAt(i);

                    overlayEditor.move = 0;
                    _textureDirty      = true;
                    changed            = true;
                    continue;
                }

                if (overlayEditor.move < 0 && i + 1 > 0)
                {
                    _overlayEditors.MoveElementDownAt(i);
                    _overlayData.MoveElementDownAt(i);

                    overlayEditor.move = 0;
                    _textureDirty      = true;
                    changed            = true;
                    continue;
                }
            }

            GUIHelper.EndVerticalPadded(10);

            return(changed);
        }