示例#1
0
 private void AdjustSelectionAid()
 {
     if (!m_sDM.UseSelectionAid)
     {
         FocusUtils.SetObjsToAlpha(m_sDM.SceneObjects, FocusUtils.NearAlpha);
     }
 }
示例#2
0
    private void UpdateDepthCues()
    {
        //List<GameObject> cuedObjs = m_sDM.SceneObjects;
        List <GameObject> cuedObjs = m_sDM.FocusedObjects;

        int numIter = cuedObjs.Count;

        //Vector3 visPos = m_FirstPersonCamera.transform.position;
        Vector3 visPos = m_focusCylinderCenterPos_noOffset;

        for (int i = 0; i < numIter; i++)
        {
            GameObject curr         = cuedObjs[i];
            Renderer   currRenderer = curr.GetComponent <Renderer>();
            float      objVisDis    = Vector3.Distance(curr.transform.position, visPos);

            if (objVisDis > m_sDM.FarDis) // far from far dis
            {
                FocusUtils.UpdateMaterialAlpha(currRenderer, FocusUtils.FarAlpha);
            }
            else if (objVisDis < m_sDM.FarDis && objVisDis > m_sDM.NearDis)                                                                   // in between far and near dis
            {
                float alpha = FocusUtils.LinearMapReverse(objVisDis, m_sDM.NearDis, m_sDM.FarDis, FocusUtils.FarAlpha, FocusUtils.NearAlpha); // mapping from m_sDM.NearDis - m_sDM.FarDis to m_sDM.FarAlpha - 1.0f to

                // hand distance from obj is usually from 0.09 to 0.20
                alpha += AddHandDistanceAlpha(curr, alpha);

                FocusUtils.UpdateMaterialAlpha(currRenderer, alpha);
            }
            else
            {
                FocusUtils.UpdateMaterialAlpha(currRenderer, FocusUtils.NearAlpha);
            }
        }
    }
示例#3
0
    private void RecordGrabLoc()
    {
        if (ActiveHandGesture == "pinch")
        {
            if (Grab.Instance.IsGrabbing && !m_isRecorded)
            {
                m_isRecorded = true;
                GameObject grabbedObj = Grab.Instance.GetGrabbingObject().gameObject;
                //Vector3 grabPos = grabbedObj.transform.position;
                Vector3 grabPos = grabbedObj.GetComponent <Selectable>().GetSnappedPosition();

                Vector2    newPos     = FocusUtils.WorldToUISpace(m_canvas, grabPos);
                GameObject new_marker = Instantiate(prefab_marker, Vector3.zero, Quaternion.identity, m_canvas.transform);

                new_marker.GetComponent <RectTransform>().anchoredPosition = newPos;
                m_markers.Add(new_marker);
                new_marker.SetActive(m_isMarkerDisplayed);

                if (m_markers_screenPos.Count < m_markerQueueLimit)
                {
                    m_markers_screenPos.Enqueue(new KeyValuePair <Vector2, long>(FocusUtils.WorldToScreenSpace(grabPos), System.DateTimeOffset.Now.ToUnixTimeMilliseconds()));
                }
                else
                {
                    m_markers_screenPos.Dequeue();
                    m_markers_screenPos.Enqueue(new KeyValuePair <Vector2, long>(FocusUtils.WorldToScreenSpace(grabPos), System.DateTimeOffset.Now.ToUnixTimeMilliseconds()));
                }

                UpdateCylinderCenter();

                // transmit data
                if (Jetfire.IsConnected2())
                {
                    string message = "Object grabbed," + newPos + "," + FocusUtils.WorldToScreenSpace(grabPos) + "," + FocusUtils.AddTimeStamp();

                    Color objColor = grabbedObj.GetComponent <Renderer>().material.color;
                    //if (m_sDM.TargetObjIDs.Contains(grabbedObj.GetInstanceID()))
                    if (grabbedObj.GetComponent <Selectable>().IsTarget)
                    {
                        message += ", target obj";
                    }
                    else
                    {
                        message += ", normal obj";
                    }

                    Jetfire.SendMsg2(message);
                    Debug.Log("JETFIREE" + objColor);
                }
            }
        }

        if (!Grab.Instance.IsGrabbing)
        {
            m_isRecorded = false;
        }
    }
示例#4
0
    /// <summary>
    /// Turn off the visuals of selection aid
    /// </summary>
    private void TurnOffSelectionAid()
    {
        if (m_focusCylinderRenderer.enabled)
        {
            m_focusCylinderRenderer.enabled = false;
        }
        //m_guideLine.gameObject.SetActive(false);

        FocusUtils.SetObjsToAlpha(m_sDM.SceneObjects, FocusUtils.NearAlpha);
    }
示例#5
0
    //public void ResetHelperCollider()
    //{
    //    Portalble.Functions.Grab.Grabable grabable = Grab.Instance.LastGrabbedObject;
    //    if (grabable)
    //    {
    //        Selectable select = grabable.gameObject.GetComponent<Selectable>();
    //        if (select) select.ResetColliderSize();

    //    }
    //    //_prevLastSelectedObj = grabable;

    //}


    /// <summary>
    /// Turn on the visuals of selection aid
    /// </summary>
    private void TurnOnSelectionAid()
    {
        if (!m_focusCylinderRenderer.enabled)
        {
            m_focusCylinderRenderer.enabled = true;
        }
        //m_guideLine.gameObject.SetActive(true);

        FocusUtils.SetObjsToAlpha(m_sDM.SceneObjects, FocusUtils.FarAlpha);
    }
示例#6
0
    private void UpdateCylinderCenter()
    {
        if (m_markers_screenPos.Count > 0 && m_markers_screenPos.Count <= 5)
        {
            Debug.Log("CYLINDERR q count: " + m_markers_screenPos.Count);
            Vector2 center   = new Vector2(Camera.main.pixelWidth / 2, Camera.main.pixelHeight / 2);
            Vector2 focusPos = FocusUtils.CalcFocusCenter(m_markers_screenPos);

            Vector2 distance_vec = focusPos - center;

            m_v = distance_vec.y / 10000f;
            m_h = distance_vec.x / 10000f;
        }
    }
示例#7
0
    private float AddHandDistanceAlpha(GameObject curr, float alpha)
    {
        float objHandDis = FocusUtils.FarHandDis;

        if (ActiveHandManager)
        {
            objHandDis = Vector3.Distance(ActiveHandTransform.position, curr.transform.position);
        }
        if (objHandDis > FocusUtils.FarHandDis)
        {
            objHandDis = FocusUtils.FarHandDis;
        }

        return(FocusUtils.LinearMapReverse(objHandDis, FocusUtils.NearHandDis, FocusUtils.FarHandDis, 0.0f, FocusUtils.NearAlpha - alpha)); // add hand distance into consideration
    }
示例#8
0
    private void AidSelection()
    {
        if (Grab.Instance.IsGrabbing)
        {
            return;
        }

        m_highestRankedObj = FocusUtils.RankFocusedObjects(m_sDM.FocusedObjects, m_focusCylinderCenterPos, m_sDM, m_canvas);

        if (!m_highestRankedObj || !ActiveHandManager)
        {
            m_guideLine.gameObject.SetActive(false);
            m_highestRankedObjMarker.SetActive(false);
            return;
        }

        m_highestRankedObj.GetComponent <Selectable>().SetHighestRankContour();
        DecontourOtherFocusedObjects(m_highestRankedObj.GetInstanceID());

        // ranked object marker
        //m_highestRankedObjMarker.SetActive(true);
        //m_highestRankedObjMarker.GetComponent<RectTransform>().anchoredPosition = FocusUtils.WorldToUISpace(m_canvas, m_highestRankedObj.transform.position);


        // snap target object to hand if close enough
        Vector3 indexThumbPos = FocusUtils.GetIndexThumbPos(m_sDM);

        // snapping object to hand
        if (Vector3.Distance(m_highestRankedObj.transform.position, indexThumbPos) < m_maxSnapDis)
        {
            if (ActiveHandGesture == "pinch")
            {
                if (!Grab.Instance.IsGrabbing && !m_isSnapped)
                {
                    m_highestRankedObj.GetComponent <Selectable>().SetSnapped();
                    m_highestRankedObj.transform.position = indexThumbPos; // might need a different value to ensure collider trigger
                    m_isSnapped = true;
                }
            }
        }
    }
示例#9
0
 public void ToggleTimeStamp(bool isStart)
 {
     FocusUtils.ToggleTimeStamp(isStart);
 }