Beispiel #1
0
        private static void DrawElement(Rect rect, int index, bool active, bool focused)
        {
            var el = _currentReorderedList[index];

            var selected = GetIsSelected(index);

            var after = EditorGUI.Toggle(new Rect(rect.x, rect.y, 30, rect.height), selected);

            if (after != selected)
            {
                SetIsSelected(index, after);
            }

            rect.x     += 30;
            rect.width -= 30;

            if (el != null)
            {
                var ty = el.GetType();

                bool exactType = ty == _currentReorderedType;

                textAndToolTip.text    = "{0} {1}".F(exactType ? "" : (ty.ToPegiStringType() + ":"), el.GetNameForInspector());
                textAndToolTip.tooltip = el.ToString();

                var uo = el as Object;
                if (uo)
                {
                    var mb = uo as Component;
                    var go = mb ? mb.gameObject : uo as GameObject;

                    if (!go)
                    {
                        EditorGUI.ObjectField(rect, textAndToolTip, uo, _currentReorderedType, true);
                    }
                    else
                    {
                        var mbs = go.GetComponents <Component>();

                        if (mbs.Length > 1)
                        {
                            if (select(ref mb, mbs, rect))
                            {
                                _currentReorderedList[index] = mb;
                            }
                        }
                        else
                        {
                            EditorGUI.ObjectField(rect, textAndToolTip, uo, _currentReorderedType, true);
                        }
                    }
                }
                else
                {
                    if (_currentReorderedListTypes != null)
                    {
                        textAndToolTip.text = el.GetNameForInspector();

                        rect.width = 100;
                        EditorGUI.LabelField(rect, textAndToolTip);
                        rect.x    += 100;
                        rect.width = 100;

                        if (select_Type(ref ty, _currentReorderedListTypes, rect))
                        {
                            TaggedTypes.TryChangeObjectType(_currentReorderedList, index, ty, _listMetaData);
                        }
                    }
                    else
                    {
                        EditorGUI.LabelField(rect, textAndToolTip);
                    }
                }
            }
            else
            {
                var ed = _listMetaData.TryGetElement(index);

                if (ed != null && ed.unrecognized)
                {
                    if (_currentTaggedTypes != null)
                    {
                        rect.width = 100;
                        EditorGUI.LabelField(rect, TextAndTip("UNREC {0}".F(ed.unrecognizedUnderTag), "Select New Class"));
                        rect.x    += 100;
                        rect.width = 100;

                        Type ty = null;

                        if (select_Type(ref ty, _currentReorderedListTypes, rect))
                        {
                            el = Activator.CreateInstance(ty);
                            _currentReorderedList[index] = el;

                            var std = el as ICfg;

                            if (std != null)
                            {
                                std.Decode(ed.SetRecognized().stdDta);
                            }
                        }
                    }
                }
                else
                {
                    EditorGUI.LabelField(rect, "Empty {0}".F(_currentReorderedType.ToPegiStringType()));
                }
            }
        }
        //readonly LoopLock _loopLock = new LoopLock();

        public override bool Inspect()
        {
            var changed = pegi.toggleDefaultInspector(this);

            /*if (_loopLock.Unlocked && source != null && source.inspectionLock.Unlocked) {
             *  using (_loopLock.Lock()) {
             *      if (pegi.Try_Nested_Inspect(source).changes(ref changed)) {
             *
             *          if (name != source.name)
             *              NameForPEGI = source.name;
             *
             *          Shortcuts.visualLayer.OnLogicVersionChange();
             *      }
             *  }
             * } else {*/

            var onPlayScreen = pegi.PaintingGameViewUI;

            if (source != null)
            {
                var conditionPassed = source.Conditions_isEnabled();

                var nd = source.AsNode;

                if (nd != null)
                {
                    if (IsCurrent && nd.parentNode != null && icon.Back.Click("Exit this Node"))
                    {
                        Shortcuts.TryExitCurrentNode();
                    }

                    if (!IsCurrent && icon.Enter.Click("Enter this Node"))
                    {
                        Shortcuts.CurrentNode = nd;
                    }
                }

                if ((conditionPassed ? icon.Active : icon.InActive).Click("Try Force Active conditions to {0}".F(!conditionPassed)) && !source.TryForceEnabledConditions(Values.global, !conditionPassed))
                {
                    Debug.Log("No Conditions to force to {0}".F(!conditionPassed));
                }

                pegi.nl();

                if (IsCurrent)
                {
                    source.name.write(PEGI_Styles.ListLabel);
                }
                else
                {
                    source.name.write("Lerp parameter {0}".F(dominantParameter), conditionPassed ? PEGI_Styles.EnterLabel : PEGI_Styles.ExitLabel);
                }
            }

            pegi.nl();

            if (source == null)
            {
                "No source node is currently linked.".writeHint();
            }

            if ("Shape & Color".enter(ref inspectedItems, 2).nl())
            {
                if (circleRenderer && source != null)
                {
                    var node = source.AsNode;

                    if (node != null)
                    {
                        var bg = TaggedTypes.TryGetByTag(Mgmt.presentationControllers, node.visualStyleTag);

                        if (bg != null)
                        {
                            if (pegi.Try_Nested_Inspect(bg).nl(ref changed))
                            {
                                source.visualStyleConfigs[NodesVisualLayer.SelectedPresentationMode.ClassTag] =
                                    bg.Encode().CfgData;
                            }
                        }
                    }
                }

                if (source == null || (!source.InspectingTriggerItems))
                {
                    var altVis = PossibleOverrideVisualConfig;
                    var act    = ActiveConfig;

                    if (altVis != _nodeActiveDefaultVisuals)
                    {
                        if ("Override visuals for {0}".F(altVis == _nodeInactiveVisuals ? "Disabled" : "Entered")
                            .toggleIcon(ref altVis.enabled).nl())
                        {
                            if (altVis.enabled)
                            {
                                altVis.Decode(act.Encode().ToString());
                            }
                        }
                    }

                    ActiveConfig.Nested_Inspect().changes(ref changed);
                }
            }

            if ("Mesh Object".enter(ref inspectedItems, 3).nl())
            {
                if (!LevelArea && "Create Mesh Object".Click())
                {
                    MeshObjectGetOrCreate();
                }

                if (LevelArea && icon.Delete.ClickConfirm("dMo", "This will also erase any data of this meshobject"))
                {
                    LevelArea.FadeAway();
                    LevelArea = null;
                }

                LevelArea.Nested_Inspect().nl(ref changed);
            }

            if ("Image".enter(ref inspectedItems, 4).nl())
            {
                if (_imageIndex != -1)
                {
                    if (!pegi.PaintingGameViewUI)
                    {
                        "Downloading {0} [1]".F(imageUrl, _imageIndex).write();
                    }
                }
                else
                {
                    if ("Image".edit("Will not be saved", 40, ref _coverImage).nl())
                    {
                        SetImage();
                    }

                    var shortUrl = imageUrl.SimplifyDirectory();

                    var reload = false;

                    var changedUrl = "Paste URL".edit(90, ref shortUrl).changes(ref changed);
                    if (changedUrl && (shortUrl.Length > 8 || shortUrl.Length == 0))
                    {
                        reload   = true;
                        imageUrl = shortUrl;
                    }

                    reload |= (imageUrl.Length > 8 && icon.Refresh.Click().changes(ref changed));

                    if (reload)
                    {
                        LoadCoverImage();
                    }

                    pegi.nl();

                    if (_coverImage)
                    {
                        if ("Img Mode".editEnum(50, ref _mode).nl())
                        {
                            SetImage();
                        }

                        if (_mode == ImageMode.Tile)
                        {
                            "Image Scale".edit(70, ref _imageScaling, 1, 10).nl(ref changed);
                        }
                        else
                        {
                            "Hide Label".toggleIcon(ref _hideLabel).nl(ref changed);
                        }

                        if (!pegi.PaintingGameViewUI)
                        {
                            _coverImage.write(200);
                        }
                        pegi.nl();
                    }
                }
            }

            if ("Lerp Debug".enter(ref inspectedItems, 5).nl())
            {
                "Is Lerping: {0}".F(lerpsFinished).nl();
                "Fade portion: {0}".F(fadePortion).nl();
                "Fading: {0}".F(isFading).nl();
            }

            if (!onPlayScreen)
            {
                pegi.nl();

                var seeDependencies = "Dependencies".enter(ref inspectedItems, 8).nl();

                if (!textA || seeDependencies)
                {
                    "Text A".edit(ref textA).nl(ref changed);
                }

                if (!textB || seeDependencies)
                {
                    "Text B".edit(ref textB).nl(ref changed);
                }

                if (!circleRenderer || seeDependencies)
                {
                    "Mesh Renderer".edit(ref circleRenderer).nl(ref changed);
                }

                if (!circleCollider || seeDependencies)
                {
                    "Collider".edit(ref circleCollider).nl(ref changed);
                }

                if (!linkRenderer || seeDependencies)
                {
                    "Link Renderer".edit(ref linkRenderer).nl(ref changed);
                }

                if (!audioSource || seeDependencies)
                {
                    "Aduio Source".edit(ref audioSource).nl(ref changed);
                }
            }
            // }

            if (changed)
            {
                SetDirty();
                bgColor = ActiveConfig.targetColor;
                OnShaderParametersChanged();
            }

            return(changed);
        }