private void AdjustSelectionAid() { if (!m_sDM.UseSelectionAid) { FocusUtils.SetObjsToAlpha(m_sDM.SceneObjects, FocusUtils.NearAlpha); } }
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); } } }
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; } }
/// <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); }
//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); }
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; } }
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 }
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; } } } }
public void ToggleTimeStamp(bool isStart) { FocusUtils.ToggleTimeStamp(isStart); }