コード例 #1
0
        public void RightTopButton()
        {
            selectedNode = null;

            Shortcuts.editingNodes = !Shortcuts.editingNodes;

            IsRendering = true;

            if (editButton)
            {
                editButton.Text = Shortcuts.editingNodes ? "Play" : "Edit";
            }

            if (addButton)
            {
                addButton.gameObject.SetActive(Shortcuts.editingNodes);
            }

            if (deleteButton)
            {
                deleteButton.gameObject.SetActive(false);
            }

            SetShowAddButtons(false);

            LevelArea.OnEditingNodesToggle();
        }
コード例 #2
0
        public override bool Inspect()
        {
            var changed = false;

            inspected = this;

            "Mesh object".write();

            /* if ("Edit".Click())
             * {
             *
             *   MeshEditorManager.Inst.EditMesh(_painter, true);
             *   QcUnity.FocusOn(_painter);
             * }*/


            this.ClickHighlight().nl();

            //if ("Mat".select(40, ref _materialTag, Shortcuts.Instance.GetMaterialKeys()).nl())
            //  UpdateMaterial();

            "Relative Pos".edit(ref relativePosition).nl();

            "Relative Zoom".edit(ref relativeZoom).nl();

            return(changed);
        }
コード例 #3
0
        private LevelArea MeshObjectGetOrCreate()
        {
            if (!LevelArea)
            {
                LevelArea = new GameObject().AddComponent <LevelArea>();
                LevelArea.gameObject.name = source.NameForPEGI + " Mesh Object";
                LevelArea.Reset(source);
            }

            return(LevelArea);
        }
コード例 #4
0
        public override void ManagedOnDeInitialize()
        {
            foreach (var e in NodesPool)
            {
                if (e)
                {
                    e.Unlink();
                    e.gameObject.DestroyWhatever();
                }
            }

            NodesPool.Clear();

            LevelArea.ManagedOnDisable();
        }
コード例 #5
0
        public void Unlink()
        {
            if (source != null)
            {
                source.Unlink(Encode());
                source = null;
            }

            isFading = true;

            if (LevelArea)
            {
                LevelArea.FadeAway();
                LevelArea = null;
            }

            if (circleCollider)
            {
                circleCollider.enabled = false;
            }
        }
コード例 #6
0
        //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);
        }
コード例 #7
0
        public override void OnBeforeNodeSet(Node node)
        {
            if (!_loopLock.Unlocked)
            {
                return;
            }

            using (_loopLock.Lock())
            {
                IsRendering = true;

                var previousN = Shortcuts.CurrentNode;

                if (Application.isPlaying && (previousN == null || previousN != node))
                {
                    if (node == null)
                    {
                        return;
                    }

                    SetSelected(null);

                    var previous = previousN?.visualRepresentation as NodeCircleController;

                    Shortcuts.CurrentNode = node;

                    UpdateVisibility(node, previous);

                    foreach (var n in NodesPool)
                    {
                        UpdateVisibility(n.source, previous);
                    }

                    UpdateCurrentNodeGroupVisibilityAround(node, previous);

                    _firstFree = 0;

                    /*if (rtx)
                     * {
                     *  Node iteration = node;
                     *  while (iteration != null)
                     *  {
                     *      var val = perNodeRtxConfigs[iteration.IndexForPEGI];
                     *      if (!val.IsNullOrEmpty())
                     *      {
                     *          rtx.Decode(val);
                     *
                     *          break;
                     *      }
                     *      iteration = iteration.parentNode;
                     *  }
                     * }*/
                }
                else
                {
                    Shortcuts.CurrentNode = node;
                }

                LevelArea.OnNodeChange();
            }
        }
コード例 #8
0
        public static void OnNodeChange()
        {
            var newCenterNode = Shortcuts.CurrentNode;

            if (newCenterNode == null)
            {
                return;
            }

            LevelArea newCenterMesh = null;

            foreach (var m in allAreas)
            {
                if (m.source == newCenterNode)
                {
                    newCenterMesh = m;
                    break;
                }
            }

            if (!newCenterMesh)
            {
                return;
            }

            if (!meshesParentTf)
            {
                var go = GameObject.CreatePrimitive(PrimitiveType.Plane);
                go.name        = "WORLD ROOT";
                meshesParentTf = go.transform;
                meshesParentTf.transform.position    = Vector3.zero;
                _meshParentMeshRenderer              = go.GetComponent <MeshRenderer>();
                go.GetComponent <Collider>().enabled = false;
                positionLerp = new LinkedLerp.TransformPosition(meshesParentTf, 1000);
                scaleLerp    = new LinkedLerp.TransformLocalScale(meshesParentTf, 10);
                OnEditingNodesToggle();
            }
            else
            {
                UnparentAll();
            }

            var currentCenterNode = currentCenterMesh ? currentCenterMesh.source.AsNode : null;

            if (currentCenterMesh && (newCenterNode.IsDirectChildOf(currentCenterNode) ||
                                      currentCenterNode.IsDirectChildOf(newCenterNode)))
            {
                bool zoomingIn = newCenterNode.IsDirectChildOf(currentCenterNode);

                Debug.Log("Got zooming " + (zoomingIn ? "In" : "Out"));

                //Zoomin out is wrong

                float previousZoom = meshesParentTf.localScale.x;

                float newZoom =
                    (zoomingIn ? (1f / newCenterMesh.relativeZoom) :
                     currentCenterMesh.relativeZoom    // zooming out
                    ) / previousZoom;

                Vector3 currentCenter = meshesParentTf.position;

                meshesParentTf.position = zoomingIn ?
                                          newCenterMesh.transform.position :
                                          (currentCenter - currentCenterMesh.relativePosition * newZoom); // New mesh doesn't exist yet

                meshesParentTf.localScale = Vector3.one * newZoom;
            }
            else
            {
                meshesParentTf.position   = Vector3.zero;
                meshesParentTf.localScale = Vector3.one;
            }

            // currentCenterNode = newCenterNode;
            ParentAll();

            foreach (var m in allAreas)
            {
                if (m == newCenterMesh)
                {
                    currentCenterMesh         = m;
                    m.transform.localPosition = Vector3.zero;
                    m.transform.localScale    = Vector3.one * m.relativeZoom;
                }
                else
                {
                    m.transform.localPosition = m.relativePosition;
                    m.transform.localScale    = Vector3.one;
                }
            }
        }