예제 #1
0
 private void OnGUI()
 {
     if (Event.current.Equals(Event.KeyboardEvent("escape")))
     {
         menu.SetActive(!menu.activeSelf);
         cam.LockCamera(menu.activeSelf);
         Cursor.visible = menu.activeSelf;
         if (Cursor.lockState != CursorLockMode.None && menu.activeSelf)
         {
             Cursor.lockState = CursorLockMode.None;
         }
         else if (Cursor.lockState != CursorLockMode.Locked && !menu.activeSelf)
         {
             Cursor.lockState = CursorLockMode.Locked;
         }
     }
 }
예제 #2
0
    void Update()
    {
        if (uiControls.HoldUIIsActive())
        {
            return;
        }
        if (!ItemHandler.inRange)
        {
            return;
        }
        if (!Input.GetKey(KeyCode.R))
        {
            if (disabled)
            {
                return;
            }
            if (Cursor.lockState != CursorLockMode.Locked)
            {
                Cursor.lockState = CursorLockMode.Locked;
            }
            Cursor.visible = false;
            rimMenu.SetActive(false);
            mainCamera.LockCamera(false);
            disabled = true;
            if (!selected)
            {
                return;
            }

            rimColorSelector.SetActive(false);
            Selector pointer = selector.GetComponent <Selector>();
            colorSelect = false;
            selected    = false;
            mouseTravel = new Vector2(0f, 0f);
            uiControls.SetActiveCreationUI(false);
            if (ItemHandler.inRange)
            {
                uiControls.SetActiveMainUI(true);
            }

            if (pointer.GetSelection() == null)
            {
                return;
            }
            MenuCollisionHandler handler = pointer.GetSelection().GetComponent <MenuCollisionHandler>();
            if (handler.id < 0)
            {
                handler.Deselect();
                return;
            }

            spawner.Spawn(handler.id, isPainting ? CP.TheColor : Color.clear);
            handler.Deselect();
            isPainting = false;

            return;
        }

        if (!colorSelect)
        {
            if (Cursor.lockState != CursorLockMode.None)
            {
                Cursor.lockState = CursorLockMode.None;
            }
            mouse        = new Vector2(Input.GetAxisRaw("Mouse X"), Input.GetAxisRaw("Mouse Y"));
            mouse        = Vector2.Scale(mouse, new Vector2(sensitivity * smoothness, sensitivity * smoothness));
            smooth.x     = Mathf.Lerp(smooth.x, mouse.x, 1f / smoothness);
            smooth.y     = Mathf.Lerp(smooth.y, mouse.y, 1f / smoothness);
            mouseTravel += smooth;
            selector.transform.localRotation = Quaternion.AngleAxis(-mouseTravel.x, Vector3.forward);
            if (!selected)
            {
                uiControls.SetActiveCreationUI(true);
                uiControls.SetActiveMainUI(false);
                mainCamera.LockCamera(true);
                rimMenu.SetActive(true);
                selected = true;
                disabled = false;
            }
        }

        if (!Input.GetKey(KeyCode.Mouse0))
        {
            return;
        }
        if (isPainting)
        {
            return;
        }
        uiControls.SetActiveCreationUI(false);
        colorSelect = true;
        rimColorSelector.SetActive(true);
        if (!Cursor.visible)
        {
            Cursor.visible = true;
        }
        if (Cursor.lockState != CursorLockMode.None)
        {
            Cursor.lockState = CursorLockMode.None;
        }
        CP.SetNewColor(Color.white);
        isPainting = true;
    }
예제 #3
0
    // Update is called once per frame
    void FixedUpdate()
    {
        if (uiControls.CreateUIIsActive())
        {
            return;
        }
        if (!carrying)
        {
            if (!Input.GetKey(KeyCode.E))
            {
                return;
            }
            var ray = cam.ScreenPointToRay(middle);
            if (!Physics.Raycast(ray, out var hit))
            {
                return;
            }
            if (hit.collider.CompareTag("Switch"))
            {
                //TO BE DONE
                return;
            }

            if (!(hit.distance < pickUpDistance))
            {
                return;
            }
            var selection = hit;
            if (!selection.transform.CompareTag("Selection"))
            {
                return;
            }
            uiControls.SetActiveHoldUI(true);
            uiControls.SetActiveMainUI(false);
            uiControls.SetActiveChangeColor(true);
            uiControls.SetActiveConfirmColor(false);

            wheel    = selection.transform.gameObject.GetComponent <WallSnapper>();
            carried  = selection;
            carrying = true;
            release  = false;
        }
        else
        {
            if (!destroyed)
            {
                CarryObject(carried);
                //for some reason sometimes this statement does not react and it takes few clicks for it to work....
                if (Input.GetKey(KeyCode.Mouse2))
                {
                    float rotx = Input.GetAxisRaw("Mouse X") * rotationSpeed * Mathf.Deg2Rad;
                    float roty = Input.GetAxisRaw("Mouse Y") * rotationSpeed * Mathf.Deg2Rad;
                    carried.transform.RotateAround(Vector3.up, -rotx);
                    carried.transform.RotateAround(Vector3.right, roty);
                    if (!lockedForRotation)
                    {
                        carried.rigidbody.freezeRotation = true;
                        uiControls.SetActiveHoldUI(false);
                        Cursor.lockState = CursorLockMode.None;
                        camLook.LockCamera(true);
                        lockedForRotation = true;
                    }
                }
                else if (Input.GetKeyUp(KeyCode.Mouse1) && !isPainting)
                {
                    camLook.LockCamera(true);
                    rimColorSelector.SetActive(true);
                    Cursor.visible = true;
                    if (Cursor.lockState != CursorLockMode.None)
                    {
                        Cursor.lockState = CursorLockMode.None;
                    }
                    objectRenderer = carried.transform.gameObject.GetComponentsInChildren <Renderer>();
                    CP.SetNewColor(objectRenderer[0].material.color);
                    isPainting = true;
                    uiControls.SetActiveChangeColor(false);
                    uiControls.SetActiveConfirmColor(true);
                }
                else if (Input.GetKeyUp(KeyCode.Mouse1) && isPainting)
                {
                    camLook.LockCamera(false);
                    rimColorSelector.SetActive(false);
                    Cursor.visible = false;
                    if (Cursor.lockState != CursorLockMode.Locked)
                    {
                        Cursor.lockState = CursorLockMode.Locked;
                    }
                    isPainting = false;
                }
                else if (Input.GetKey(KeyCode.Delete))
                {
                    uiControls.SetActiveHoldUI(false);
                    if (ItemHandler.inRange)
                    {
                        uiControls.SetActiveMainUI(true);
                    }
                    RimSpawner.DestroyRim(carried.transform.gameObject);
                    destroyed = true;
                }

                if (isPainting)
                {
                    foreach (Renderer renderer in objectRenderer)
                    {
                        renderer.material.color = CP.TheColor;
                    }
                }
            }

            if (!Input.GetKey(KeyCode.Mouse2) && lockedForRotation)
            {
                carried.rigidbody.freezeRotation = false;
                Cursor.lockState = CursorLockMode.Locked;
                camLook.LockCamera(false);
                lockedForRotation = false;
                uiControls.SetActiveHoldUI(true);
            }

            if (Input.GetKey(KeyCode.E))
            {
                return;
            }
            if (release)
            {
                return;
            }
            camLook.LockCamera(false);
            lockedForRotation = true;
            rimColorSelector.SetActive(false);
            if (!Cursor.visible)
            {
                Cursor.visible = false;
            }
            if (Cursor.lockState != CursorLockMode.Locked)
            {
                Cursor.lockState = CursorLockMode.Locked;
            }
            isPainting = false;
            carrying   = false;
            if (destroyed)
            {
                destroyed = false;
                return;
            }

            uiControls.SetActiveHoldUI(false);
            if (ItemHandler.inRange)
            {
                uiControls.SetActiveMainUI(true);
            }
            Cursor.visible = false;
            carried.rigidbody.useGravity = true;
            release = true;
        }
    }