Exemplo n.º 1
0
 public static void PortalLinkSelected()
 {
     UIPortalMenu.Activate(LevelEditor.CreateLevelData());
     animator.SetTrigger("showPortal");
     animator.ResetTrigger("portalLinkSelected");
     animator.SetTrigger("portalLinkSelected");
     LevelEditor.editorMode = LevelEditor.EditorMode.edit;
 }
Exemplo n.º 2
0
        // checks for double clicks and selectes/deselects objects accordingly
        private void ClickHandler(Vector3 position)
        {
            bool objectSelected = false;

            if (LevelEditor.editorMode == LevelEditor.EditorMode.select)
            {
                // double click
                if (Time.time - doubleClickTime < doubleClickDelay && doubleClickTime > 0)
                {
                    LevelObject levelObject = GetLevelObjectAt(position);
                    if (levelObject != null)
                    {
                        Debug.Log("SELECTED OBJ " + levelObject.name);
                        LevelEditor.SetSelectedObject(levelObject);
                        objectSelected = true;
                    }

                    // the raycast didn't select any levelobjects
                    if (!objectSelected)
                    {
                        Vector3 localPos = LevelPlacer.generatedLevel.moveArea.transform.InverseTransformPoint(position);
                        bool clickInsideMesh = VertHelper.IsInsideMesh(LevelPlacer.generatedLevel.moveArea.meshFilter.mesh, Vector3.zero, localPos);
                        // we double clicked inside the mesh => select the mesh
                        if (clickInsideMesh)
                        {
                            LevelEditor.SetSelectedObject(LevelPlacer.generatedLevel.moveArea);
                            objectSelected = true;
                        }
                    }
                }
            }
            else if (LevelEditor.editorMode == LevelEditor.EditorMode.edit)
            {
                if (Time.time - doubleClickTime < doubleClickDelay && doubleClickTime > 0)
                {
                    LevelObject levelObject = GetLevelObjectAt(position);
                    if (levelObject != null)
                    {
                        // same object got selected again, deselect it
                        if (levelObject == LevelEditor.selectedObject)
                        {
                            LevelEditor.SetSelectedObject(null);
                            objectSelected = true;
                        }
                        // a new object gets selected, replace the old selection with the new one.
                        else if (levelObject != LevelEditor.selectedObject)
                        {
                            LevelEditor.SetSelectedObject(levelObject);
                            objectSelected = true;
                        }
                    }
                    // the raycast didn't select any levelobjects
                    if (!objectSelected)
                    {
                        Vector3 localPos = LevelPlacer.generatedLevel.moveArea.transform.InverseTransformPoint(position);
                        bool clickInsideMesh = VertHelper.IsInsideMesh(LevelPlacer.generatedLevel.moveArea.meshFilter.mesh, Vector3.zero, localPos);
                        // we double clicked inside the mesh => select the mesh
                        if (clickInsideMesh)
                        {
                            if (LevelEditor.selectedObject.objectType != LevelObject.ObjectType.moveArea)
                                LevelEditor.SetSelectedObject(LevelPlacer.generatedLevel.moveArea);
                            else
                                LevelEditor.SetSelectedObject(null);
                            objectSelected = true;
                        }
                    }
                }

                Debug.Log(LevelEditor.selectedObject);

                // there was no double click detected, if a movearea is selected, try to add vertices
                if (LevelEditor.selectedObject != null && LevelEditor.selectedObject.objectType == LevelObject.ObjectType.moveArea && !Handle.vertGettingSelected)
                {
                    Vector3 screenPosition = Camera.main.WorldToScreenPoint(position);
                    bool isInIgnoreArea = screenPosition.y < Camera.main.pixelHeight * ignoreBottomScreenPercent;
                    if (!isInIgnoreArea)
                        if (VertHandler._instance.VertexAdd(position))
                        {
                            SoundManager.ButtonClicked();
                        }
                }
            }
            else if (LevelEditor.editorMode == LevelEditor.EditorMode.place)
            {
                // snapping
                Vector3 snapPos = VertHelper.Snap(position, false);
                LevelObject.ObjectType objectType = UILevelObject.currentSelectedObject.objectType;

                Vector3 screenPosition = Camera.main.WorldToScreenPoint(snapPos);
                bool isInIgnoreArea = screenPosition.y < Camera.main.pixelHeight * ignoreBottomScreenPercent;

                // the snapping found a valid snap position around the given position
                if (snapPos != Vector3.zero && !isInIgnoreArea)
                {
                    Debug.Log("Buttom screen percent " + ignoreBottomScreenPercent + " screenPos.y " + screenPosition.y);
                    // return to selection mode and deselect the inventory item
                    LevelEditor.SetSelectedObject(LevelPlacer.generatedLevel.AddObject(objectType, snapPos));
                    UILevelObject.onItemSelect.Invoke(null);
                }
            }
            else if (LevelEditor.editorMode == LevelEditor.EditorMode.portalLink)
            {
                if (Time.time - doubleClickTime < doubleClickDelay && doubleClickTime > 0)
                {
                    LevelObject levelObject = GetLevelObjectAt(position);
                    if (levelObject != null)
                    {
                        if (levelObject.objectType == LevelObject.ObjectType.portal)
                        {
                            Portal p = levelObject.GetComponent<Portal>();
                            UIPortalMenu.SelectLinkPortal(p);
                        }
                    }
                }
            }
            doubleClickTime = Time.time;
        }
Exemplo n.º 3
0
 private void Start()
 {
     _instance = this;
     onPreferenceChange.AddListener(PreferenceChanged);
 }
Exemplo n.º 4
0
    // activates the properties menu that corresponds to the current selected object
    public static UIPreferenceMenu ShowMenu()
    {
        LevelObject.ObjectType type = LevelEditor.selectedObject.objectType;
        Debug.Log("type " + type + " - " + _instance);
        if (_instance != null)
        {
            UndoManager.AddUndoPoint();
            switch (type)
            {
            case LevelObject.ObjectType.turret:
                UITurretMenu.Activate(LevelEditor.CreateLevelData());
                UIPreferenceMenu.onPreferenceChange.Invoke(_instance.turretMenu);
                animator.ResetTrigger("showTurret");
                animator.ResetTrigger("hideTurret");
                animator.SetTrigger("showTurret");
                Debug.Log("treeehehee " + _instance.turretMenu);
                menuOpen       = true;
                openedMenuType = LevelObject.ObjectType.turret;
                return(_instance.turretMenu);

            case LevelObject.ObjectType.portal:
                UIPortalMenu.Activate(LevelEditor.CreateLevelData());
                UIPreferenceMenu.onPreferenceChange.Invoke(_instance.portalMenu);
                animator.ResetTrigger("showPortal");
                animator.SetTrigger("showPortal");
                menuOpen       = true;
                openedMenuType = LevelObject.ObjectType.portal;
                return(_instance.portalMenu);

            case LevelObject.ObjectType.attractor:
                UIAttractorMenu.Activate(LevelEditor.CreateLevelData());
                UIPreferenceMenu.onPreferenceChange.Invoke(_instance.attractorMenu);
                animator.ResetTrigger("showAttractor");
                animator.SetTrigger("showAttractor");
                menuOpen       = true;
                openedMenuType = LevelObject.ObjectType.attractor;
                return(_instance.attractorMenu);

            case LevelObject.ObjectType.speedStrip:
                UISpeedStripMenu.Activate(LevelEditor.CreateLevelData());
                UIPreferenceMenu.onPreferenceChange.Invoke(_instance.speedStripMenu);
                animator.ResetTrigger("showSpeedStrip");
                animator.ResetTrigger("hideSpeedStrip");
                animator.SetTrigger("showSpeedStrip");
                menuOpen       = true;
                openedMenuType = LevelObject.ObjectType.speedStrip;
                return(_instance.speedStripMenu);

            case LevelObject.ObjectType.bouncer:
                UIBouncerMenu.Activate(LevelEditor.CreateLevelData());
                UIPreferenceMenu.onPreferenceChange.Invoke(_instance.bouncerMenu);
                animator.ResetTrigger("showBouncer");
                animator.SetTrigger("showBouncer");
                menuOpen       = true;
                openedMenuType = LevelObject.ObjectType.bouncer;
                return(_instance.bouncerMenu);

            case LevelObject.ObjectType.finish:
                return(_instance.finishMenu);

            case LevelObject.ObjectType.spawn:
                return(_instance.spawnMenu);
            }
            Debug.Log("HERE");
        }
        return(null);
    }