Esempio n. 1
0
    public void HandleTriggerUp(object sender, ClickedEventArgs e)
    {
        if (m_isTeleporting)
        {
            return;
        }

        if (PadUp != null)
        {
            PadUp(GetTouchpadAxis());
        }

        // reset
        if (previousContact)
        {
            OoniPointerEventArgs args = new OoniPointerEventArgs();
            args.controllerIndex = controller.controllerIndex;
            args.distance        = 0f;
            args.flags           = 0;
            args.target          = previousContact;
            args.targetCollider  = previousContact.GetComponent <Collider>();

            OnPointerOut(args);

            // update
            previousContact = null;
        }

        OnPointerOutByTriggerUp();

        isActive = false;
        holder.SetActive(false);
    }
Esempio n. 2
0
 public virtual void OnPointerOn(OoniPointerEventArgs e)
 {
     if (PointerOn != null)
     {
         PointerOn(this, e);
     }
 }
Esempio n. 3
0
    // Pointer On (anything)
    public void OnPointerOn(object sender, OoniPointerEventArgs e)
    {
        if (grabSomething)
        {
            if (!e.targetCollider.CompareTag("Art"))
            {
                artTargetPos = e.hitPoint;
                artTargetRot = e.target.localRotation;
                hittingWall  = true;
            }
        }

        if (inStretchMode)
        {
            // check if the object is still be lasered
            if (!m_CurrentInteractible.IsLasering)
            {
                //if not, exit stretch mode
                inStretchMode = false;
                stretchObj    = null;
            }
            else
            {
                //stretchObj != null
                if (e.targetCollider.gameObject == stretchObj)
                {
                    ScaleAroundPoint(e.target, e.hitPoint);
                }
            }
        }
    }
Esempio n. 4
0
    public void OnPointerOn(object sender, OoniPointerEventArgs e)
    {
        if (!teleportModeOn)
        {
            return;
        }

        if (e.targetCollider.CompareTag("Floor"))
        {
            dot.transform.position = e.hitPoint;
        }
    }
Esempio n. 5
0
    public void OnPointerOut(object sender, OoniPointerEventArgs e)
    {
        if (laserPointer.OnToArt)
        {
            return;
        }

        if (!teleportModeOn)
        {
            return;
        }

        if (e.targetCollider.CompareTag("Floor"))
        {
            teleportModeOn = false;
            dot.SetActive(false);
            //Debug.Log ("teleport mode off");
        }
    }
Esempio n. 6
0
    // -------------------- Laser Pointer Callback --------------------
    public void OnPointerIn(object sender, OoniPointerEventArgs e)
    {
        if (laserPointer.OnToArt)
        {
            return;
        }

        // if other laser are doing teleporting
        if (dot.activeInHierarchy)
        {
            return;
        }

        if (e.targetCollider.CompareTag("Floor"))
        {
            teleportModeOn         = true;
            dot.transform.position = e.hitPoint;
            dot.SetActive(true);
            //Debug.Log ("teleport mode on");
        }
    }
Esempio n. 7
0
    void Update()
    {
        if (!isActive)
        {
            return;
        }

        if (m_isTeleporting)
        {
            return;
        }

        float dist = 100f;

        Ray        raycast = new Ray(transform.position, transform.forward);
        RaycastHit hit;
        bool       bHit;

        if (OnToArt)
        {
            bHit = Physics.Raycast(raycast, out hit, dist, noArtLayer);
        }
        else
        {
            bHit = Physics.Raycast(raycast, out hit);
        }

        // Pointer Out
        if (previousContact && previousContact != hit.transform)
        {
            OoniPointerEventArgs args = new OoniPointerEventArgs();
            args.controllerIndex = controller.controllerIndex;
            args.distance        = 0f;
            args.flags           = 0;
            args.target          = previousContact;
            args.targetCollider  = previousContact.GetComponent <Collider>();
            args.hitPoint        = hit.point;
            OnPointerOut(args);

            // update
            previousContact = null;
        }

        // Pointer In
        if (bHit && previousContact != hit.transform)
        {
            OoniPointerEventArgs argsIn = new OoniPointerEventArgs();
            argsIn.controllerIndex = controller.controllerIndex;
            argsIn.distance        = hit.distance;
            argsIn.flags           = 0;
            argsIn.target          = hit.transform;
            argsIn.hitPoint        = hit.point;
            argsIn.targetCollider  = hit.collider;
            OnPointerIn(argsIn);

            // update
            previousContact = hit.transform;
        }
        // Pointer On
        else if (bHit && previousContact == hit.transform)
        {
            OoniPointerEventArgs argsOn = new OoniPointerEventArgs();
            argsOn.controllerIndex = controller.controllerIndex;
            argsOn.distance        = hit.distance;
            argsOn.flags           = 0;
            argsOn.target          = hit.transform;
            argsOn.hitPoint        = hit.point;
            argsOn.targetCollider  = hit.collider;
            OnPointerOn(argsOn);

            // update
//			if(testDot)
//				testDot.transform.position = hit.point;

            previousContact = hit.transform;
        }

        if (!bHit)
        {
            previousContact = null;
        }
        if (bHit && hit.distance < 100f)
        {
            dist = hit.distance;
        }

//		if (controller.triggerPressed)
//		{
//			pointer.transform.localScale = new Vector3(thickness * 5f, thickness * 5f, dist);
//		}
//		else
//		{
//			pointer.transform.localScale = new Vector3(thickness, thickness, dist);
//		}

        pointer.transform.localScale    = new Vector3(thickness, thickness, dist);
        pointer.transform.localPosition = new Vector3(0f, 0f, dist / 2f);
    }
Esempio n. 8
0
    // -------------------- Laser Pointer Callback --------------------
    public void OnPointerIn(object sender, OoniPointerEventArgs e)
    {
        // prepare to grab

        // ignore if already grabbing something
        if (grabSomething)
        {
            return;
        }

        // ignore if already stretching something
        if (inStretchMode)
        {
            return;
        }

        // if it's Art
        if (e.targetCollider.CompareTag("Art"))
        {
            if (currArt == null)
            {
                GameObject c_art = e.targetCollider.gameObject;
                m_CurrentInteractible = c_art.GetComponent <VRInteractiveObject> ();

                // if this Art is already being lasered
                if (m_CurrentInteractible.IsLasering)
                {
                    // Stretch mode!
                    inStretchMode = true;
                    stretchObj    = c_art;
                    originalScale = stretchObj.transform.localScale;

                    // distance between two lasers: 1.targetPos, 2.hitpoint
                    currLasersDistance = prevLasersDistance = (e.hitPoint - e.target.position).sqrMagnitude;
                    //Debug.Log ("pointer onto art & stretch start!");
                }
                else
                {
                    // Grab mode!
                    m_CurrentInteractible.LaserDown(laserPointer);

                    // Let laser shoot through Art
                    // v.1
                    // e.targetCollider.enabled = false;
                    //v.2
                    laserPointer.OnToArt = true;

                    currArt = e.target.gameObject;

                    if (prevArt != currArt)
                    {
                        posPercentage = 1f;
                    }

                    grabSomething = true;
                    //Debug.Log ("pointer onto art & grab start!");
                }

                laserPointer.DeviceVibrate();
            }
        }
    }