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); }