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;
            }
        }
Beispiel #3
0
        /// <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");
            }
        }
Beispiel #5
0
        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");
            }
        }
Beispiel #6
0
        /// <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;
        }
Beispiel #7
0
        /// <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;
        }
Beispiel #9
0
    // 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();
    }
Beispiel #11
0
    // 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);
 }