Example #1
0
    new void Update()
    {
        base.Update();
        if (!XRDevice.isPresent)
        {
            // On left mouse click
            if (Input.GetMouseButtonDown(0))
            {
                Ray ray = Camera.main.ScreenPointToRay(Input.mousePosition);

                if (Physics.Raycast(ray, out RaycastHit hit))
                {
                    switch (hit.transform.tag)
                    {
                    case "Fireflies":
                        Fireflies firefliesHitted = hit.transform.GetComponent <Fireflies>();
                        firefliesHitted.Seperate();
                        break;

                    case "Elevator":
                        Elevator elevator = hit.transform.GetComponentInParent <Elevator>();
                        elevator.OpenDoors();
                        break;

                    case "AttractBall":
                        if (attractBall)
                        {
                            attractBall.moveWithMouse = true;
                        }
                        break;
                    }
                }
            }
            else if (Input.GetMouseButtonUp(0) && attractBall)
            {
                attractBall.moveWithMouse = false;
            }

            // On moving mouse
            rotationX            += mouseRotationSpeed * Input.GetAxis("Mouse X");
            rotationY            -= mouseRotationSpeed * Input.GetAxis("Mouse Y");
            transform.eulerAngles = new Vector3(rotationY, rotationX, 0);

            // Activate fireflies from lamp
            if (Input.GetKey("s"))
            {
                firstFireflies.ActivateAfterInitialize();
            }

            // Follow attract ball
            if (attractBall && Input.GetKey("f"))
            {
                attractBall.shouldFollow = true;
            }
        }
    }
Example #2
0
    private void Update()
    {
        if (XRDevice.isPresent)
        {
            if (grabPinchAction.GetStateDown(handType))
            {
                // Set that fireflies should follow
                shouldFollow = true;

                // Make controller glowing
                if (!isGlowing)
                {
                    Glow(true);
                }

                // Set start position of drag
                dragStartPosition = transform.position;
            }
            else if (grabPinchAction.GetLastStateUp(handType))
            {
                // Set that fireflies should not follow
                shouldFollow = false;

                // Deactivate controller glowing
                if (isGlowing)
                {
                    Glow(false);
                }

                // Reset values of seperation
                ResetDrag();
            }

            // Logic for seperating
            if (dragStartPosition != null && firefliesHitted != null)
            {
                float dragDistance = Vector3.Distance(transform.position, (Vector3)dragStartPosition);
                var   allowed      = FirefliesHelper.Instance.RequestSeperating(GetInstanceID(), firefliesHitted.GetInstanceID());
                if (dragDistance > minSeperationDragDistance && allowed)
                {
                    firefliesHitted.Seperate();
                }
            }
        }
        else if (moveWithMouse)
        {
            Vector3 temp = Input.mousePosition;
            temp.z             = Input.mousePosition.z + 2;
            transform.position = Camera.main.ScreenToWorldPoint(temp);
        }
        else
        {
            shouldFollow = false;
        }
    }