private IEnumerator DirectPinchAndMoveSlider(PinchSlider slider, float toSliderValue) { Debug.Log($"moving hand to value {toSliderValue}"); var rightHand = new TestHand(Handedness.Right); Vector3 initialPos = new Vector3(0.05f, 0, 1.0f); yield return(rightHand.Show(initialPos)); yield return(rightHand.MoveTo(slider.ThumbRoot.transform.position)); yield return(rightHand.SetGesture(ArticulatedHandPose.GestureId.Pinch)); if (!(toSliderValue >= 0 && toSliderValue <= 1)) { throw new System.ArgumentException("toSliderValue must be between 0 and 1"); } yield return(rightHand.MoveTo(Vector3.Lerp(slider.SliderStartPosition, slider.SliderEndPosition, toSliderValue))); // Buffer time for the hand to move to finish moving yield return(PlayModeTestUtilities.WaitForInputSystemUpdate()); yield return(rightHand.SetGesture(ArticulatedHandPose.GestureId.Open)); yield return(rightHand.Hide()); }
protected override void Start() { if (Application.Current.IsEditor) { return; } materialDecorator = new HoloGraphic(materialComponent.Material); this.pinchSliders[0] = pinchSliderPrefabR.Owner.FindComponentInChildren <PinchSlider>(); this.pinchSliders[1] = pinchSliderPrefabG.Owner.FindComponentInChildren <PinchSlider>(); this.pinchSliders[2] = pinchSliderPrefabB.Owner.FindComponentInChildren <PinchSlider>(); string[] titles = { "Red", "Green", "Blue" }; for (int i = 0; i < 3; ++i) { PinchSlider p = pinchSliders[i]; Entity title = p.Owner.FindChild("Title", true); if (title != null) { Text3D text = title.FindComponent <Text3D>(); if (text != null) { text.Text = titles[i]; } } p.InitialValue = materialDecorator.Parameters_Color[i]; p.SliderValue = materialDecorator.Parameters_Color[i]; p.ValueUpdated += this.P_ValueUpdated; } }
/// <summary> /// Checks the component's setup /// </summary> private void Awake() { slider = GetComponent <PinchSlider>(); if (thumbValueLabel == null) { SpecialDebugMessages.LogMissingReferenceError(this, nameof(thumbValueLabel)); } if (minValueLabel == null) { SpecialDebugMessages.LogMissingReferenceError(this, nameof(minValueLabel)); } if (maxValueLabel == null) { SpecialDebugMessages.LogMissingReferenceError(this, nameof(maxValueLabel)); } }
private void OnSceneGUI() { if (labelStyle == null) { labelStyle = new GUIStyle(); labelStyle.normal.textColor = Color.white; } PinchSlider slider = target as PinchSlider; if (slider != null) { Handles.color = Color.cyan; Vector3 startPos = slider.SliderStartPosition; Vector3 endPos = slider.SliderEndPosition; Handles.DrawLine(startPos, endPos); EditorGUI.BeginChangeCheck(); float handleSize = HandleUtility.GetHandleSize(startPos) * 0.15f; slider.SliderStartPosition = Handles.FreeMoveHandle(startPos, Quaternion.identity, handleSize, Vector3.zero, Handles.SphereHandleCap); slider.SliderEndPosition = Handles.FreeMoveHandle(endPos, Quaternion.identity, handleSize, Vector3.zero, Handles.SphereHandleCap); if (EditorGUI.EndChangeCheck()) { var sliderStartSerialized = serializedObject.FindProperty("sliderStartDistance"); var sliderEndSerialized = serializedObject.FindProperty("sliderEndDistance"); sliderStartSerialized.floatValue = slider.SliderStartDistance; sliderEndSerialized.floatValue = slider.SliderEndDistance; serializedObject.ApplyModifiedProperties(); } DrawLabelWithDottedLine(startPos + (Vector3.up * handleSize * 10f), startPos, handleSize, "slider start"); DrawLabelWithDottedLine(endPos + (Vector3.up * handleSize * 10f), endPos, handleSize, "slider end"); } }
private void OnSceneGUI() { if (labelStyle == null) { labelStyle = new GUIStyle(); labelStyle.normal.textColor = Color.white; } PinchSlider slider = target as PinchSlider; if (slider != null) { Handles.color = Color.cyan; Vector3 startPos = slider.SliderStartPosition; Vector3 endPos = slider.SliderEndPosition; Handles.DrawLine(startPos, endPos); EditorGUI.BeginChangeCheck(); float handleSize = HandleUtility.GetHandleSize(startPos) * 0.15f; slider.SliderStartPosition = Handles.FreeMoveHandle(startPos, Quaternion.identity, handleSize, Vector3.zero, Handles.SphereHandleCap); slider.SliderEndPosition = Handles.FreeMoveHandle(endPos, Quaternion.identity, handleSize, Vector3.zero, Handles.SphereHandleCap); DrawLabelWithDottedLine(startPos + (Vector3.up * handleSize * 10f), startPos, handleSize, "slider start"); DrawLabelWithDottedLine(endPos + (Vector3.up * handleSize * 10f), endPos, handleSize, "slider end"); } }
/// <summary> /// Instantiates the default interactable button. /// </summary> private void InstantiateDefaultSliderPrefab(Vector3 position, Vector3 rotation, out GameObject sliderObject, out PinchSlider pinchSlider) { // Load interactable prefab Object sliderPrefab = AssetDatabase.LoadAssetAtPath(defaultPinchSliderPrefabPath, typeof(Object)); sliderObject = Object.Instantiate(sliderPrefab) as GameObject; pinchSlider = sliderObject.GetComponent <PinchSlider>(); Assert.IsNotNull(pinchSlider); // Move the object into position sliderObject.transform.position = position; sliderObject.transform.eulerAngles = rotation; }
/// <summary> /// Generates an interactable from primitives and assigns a select action. /// </summary> private void AssembleSlider(Vector3 position, Vector3 rotation, out GameObject pinchSliderObject, out PinchSlider slider, bool isNearInteractionGrabbable = true) { // Assemble an interactable out of a set of primitives // This will be the slider root pinchSliderObject = new GameObject(); pinchSliderObject.name = "PinchSliderRoot"; // Make the slider track var sliderTrack = GameObject.CreatePrimitive(PrimitiveType.Cube); GameObject.Destroy(sliderTrack.GetComponent <BoxCollider>()); sliderTrack.transform.position = Vector3.zero; sliderTrack.transform.localScale = new Vector3(1f, .01f, .01f); sliderTrack.transform.parent = pinchSliderObject.transform; // Make the thumb root var thumbRoot = GameObject.CreatePrimitive(PrimitiveType.Cube); thumbRoot.transform.localScale = new Vector3(0.1f, 0.1f, 0.1f); thumbRoot.transform.parent = pinchSliderObject.transform; if (isNearInteractionGrabbable) { thumbRoot.AddComponent <NearInteractionGrabbable>(); } slider = pinchSliderObject.AddComponent <PinchSlider>(); slider.ThumbRoot = thumbRoot; pinchSliderObject.transform.position = position; pinchSliderObject.transform.eulerAngles = rotation; }
/// <summary> /// Generates an interactable from primitives and assigns a select action. /// </summary> private void AssembleSlider(Vector3 position, Vector3 rotation, out GameObject pinchSliderObject, out PinchSlider slider) { // Assemble an interactable out of a set of primitives // This will be the slider root pinchSliderObject = new GameObject(); pinchSliderObject.name = "PinchSliderRoot"; // Make the slider track var sliderTrack = GameObject.CreatePrimitive(PrimitiveType.Cube); GameObject.Destroy(sliderTrack.GetComponent <BoxCollider>()); sliderTrack.transform.position = Vector3.zero; sliderTrack.transform.localScale = new Vector3(1f, .01f, .01f); sliderTrack.transform.parent = pinchSliderObject.transform; var sliderTouchable = GameObject.CreatePrimitive(PrimitiveType.Cube); sliderTouchable.GetComponent <Renderer>().enabled = false; sliderTouchable.transform.position = Vector3.zero; sliderTouchable.transform.localScale = new Vector3(1f, .2f, .1f); sliderTouchable.AddComponent <NearInteractionGrabbable>(); sliderTouchable.AddComponent <NearInteractionTouchable>(); sliderTouchable.transform.parent = pinchSliderObject.transform; // Make the thumb root var thumbRoot = GameObject.CreatePrimitive(PrimitiveType.Cube); thumbRoot.transform.localScale = new Vector3(0.1f, 0.1f, 0.1f); thumbRoot.AddComponent <NearInteractionGrabbable>(); thumbRoot.AddComponent <NearInteractionTouchable>(); thumbRoot.transform.parent = pinchSliderObject.transform; // Create and initialize the collider slider = pinchSliderObject.AddComponent <PinchSlider>(); slider.ThumbRoot = thumbRoot; slider.ThumbCollider = thumbRoot.GetComponent <Collider>(); slider.TouchCollider = sliderTouchable.GetComponent <Collider>(); pinchSliderObject.transform.position = position; pinchSliderObject.transform.eulerAngles = rotation; }
// Use this for initialization void Start() { clothesSlider = gameObject.transform.Find("ClothesPinchSlider").GetComponentInChildren <PinchSlider>(); RefreshMenu(); }
// Use this for initialization void Start() { timeSlider = gameObject.transform.Find("TimePinchSlider").GetComponentInChildren <PinchSlider>(); RefreshMenu(); }
// Use this for initialization void Start() { timeSlider = transform.GetChild(5).GetChild(1).GetComponentInChildren <PinchSlider>(); RefreshMenu(); }
public void OnSliderChanged(PinchSlider slider) { this.GetComponent <Camera>().backgroundColor = new Color(slider.SliderValue, slider.SliderValue, slider.SliderValue); }