/* * private void OneHandPinching(int mode) * { * GesturePinching gesture; * Vector3 pinchingPos; * Vector3 posMovement; * switch (mode) * { * case 0: * gesture = (GesturePinching)gesturePinchingLH; * pinchingPos = gesture.LastTipPos; * posMovement = gesture.TipMovement; * if (goPinchedLH != null && gesture.CountTime >= pinchingTimeMin) * { * if (goPinchedLH.IsSelected) * { * goPinchedLH.reColorWorldObj(Color.white); * goPinchedLH.cancelHighLightDup(); * goPinchedLH.removeSelections(); * goPinchedLH.endSelectState(); * goSelected = null; * } * //goPinchedLH.moveObjectBy(posMovement); * goPinchedLH.moveObjectTo(pinchingPos); * LayerMetaphor lm = (LayerMetaphor)goPinchedLH; * bool inRange = handle.updateLayerExisted(lm); * if (layerMetaphorsActived.Contains(lm)) * { * if (!inRange) * { * layerMetaphorsActived.Remove(lm); * lm.getLayer().hide(); * layerMetaphorsDisActived.Add(lm); * } * else * { * handle.updateIndex(pinchingPos); * } * } * else * { * if (inRange) * { * layerMetaphorsActived.Add(lm); * lm.getLayer().show(); * layerMetaphorsDisActived.Remove(lm); * } * } * handle.updateObjectsOrder(); * handle.updateObjectsPositions(gesture.LastPalmPos); * } * return; * case 1: * gesture = (GesturePinching)gesturePinchingRH; * pinchingPos = gesture.LastTipPos; * posMovement = gesture.TipMovement; * Debug.Log(posMovement); * if (goPinchedRH != null && gesture.CountTime >= pinchingTimeMin) * { * if (goPinchedRH.IsSelected) * { * goPinchedRH.reColorWorldObj(Color.white); * goPinchedRH.cancelHighLightDup(); * goPinchedRH.removeSelections(); * goPinchedRH.endSelectState(); * goSelected = null; * } * //goPinchedRH.moveObjectBy(posMovement); * goPinchedRH.moveObjectTo(pinchingPos); * LayerMetaphor lm = (LayerMetaphor)goPinchedRH; * bool inRange = handle.updateLayerExisted(lm); * if (layerMetaphorsActived.Contains(lm)) * { * if (!inRange) * { * layerMetaphorsActived.Remove(lm); * lm.getLayer().hide(); * layerMetaphorsDisActived.Add(lm); * } * else * { * handle.updateIndex(pinchingPos); * } * } * else * { * if (inRange) * { * layerMetaphorsActived.Add(lm); * lm.getLayer().show(); * layerMetaphorsDisActived.Remove(lm); * } * } * handle.updateObjectsOrder(); * handle.updateObjectsPositions(gesture.LastPalmPos); * } * return; * } * }*/ /* * private void OneHandTapping(int mode) * { * GestureTapping gesture; * Vector3 tappingPos; * Vector3 posMovement; * List<LayerMetaphor> potentialLayers; * List<SelectionMetaphor> potentialSelections; * switch (controlMode) * { * case ControlMode.tapMenu: * switch (mode) * { * case 0: * gesture = (GestureTapping)gestureTappingLH; * tappingPos = gesture.LastTipPos; * posMovement = gesture.TipMovement; * if (goTappedLH == null) * { * potentialLayers = new List<LayerMetaphor>(); * foreach (LayerMetaphor lm in layerMetaphorsActived) * { * if (!lm.IsTapped) * { * if (lm.checkTapping(tappingPos)) * { * potentialLayers.Add(lm); * } * } * } * if (potentialLayers.Count > 0) * { * goTappedLH = potentialLayers[0]; * foreach (LayerMetaphor lm in potentialLayers) * { * if (lm.checkDistance(tappingPos) < goTappedLH.checkDistance(tappingPos)) * { * goTappedLH = lm; * } * } * goTappedLH.startTap(); * goTappedLH.reScaleWorldObj(1.25f, 1.25f, 1.25f); * } * } * else * { * if (goTappedLH.checkTapping(tappingPos)) * { * //ratate the go * } * else * { * goTappedLH.endTap(); * goTappedLH.reScaleWorldObj(0.8f, 0.8f, 0.8f); * goTappedLH = null; * } * } * return; * case 1: * gesture = (GestureTapping)gestureTappingRH; * tappingPos = gesture.LastTipPos; * posMovement = gesture.TipMovement; * if (goTappedRH != null) * { * foreach (SelectionMetaphor sm in goTappedRH.getSelectionObjects()) * { * if (sm.checkTapping(tappingPos)) * { * goTappedRH.createSelections(sm.getMetaphorObject().name); * return; * } * } * } * if (goTappingRH == null) * { * potentialLayers = new List<LayerMetaphor>(); * foreach (LayerMetaphor lm in layerMetaphorsActived) * { * if (lm.checkTapping(tappingPos)) * { * potentialLayers.Add(lm); * } * } * if (potentialLayers.Count > 0) * { * goTappingRH = potentialLayers[0]; * foreach (LayerMetaphor lm in potentialLayers) * { * if (lm.checkDistance(tappingPos) < goTappingRH.checkDistance(tappingPos)) * { * goTappingRH = lm; * } * } * goTappingRH.changeTap(); * if (goTappingRH.IsTapped) * { * if(goTappedRH != null) * { * goTappedRH.endTap(); * goTappedRH.reColorWorldObj(Color.white); * goTappedRH.removeSelections(); * } * goTappedRH = goTappingRH; * goTappedRH.reColorWorldObj(Color.red); * goTappedRH.createSelections(); * } * else * { * goTappedRH.reColorWorldObj(Color.white); * goTappedRH.removeSelections(); * goTappedRH = null; * } * } * } * else * { * if (goTappingRH.checkTapping(tappingPos)) * { * //do nothing * } * else * { * //goTappedRH.endTap(); * //goTappedRH.reScaleWorldObj(1.25f, 1.25f, 1.25f); * goTappingRH = null; * } * } * return; * } * return; * case ControlMode.tappingRotation: * switch (mode) * { * case 0: * gesture = (GestureTapping)gestureTappingLH; * tappingPos = gesture.LastTipPos; * posMovement = gesture.TipMovement; * if (goTappedLH == null) * { * potentialLayers = new List<LayerMetaphor>(); * foreach (LayerMetaphor lm in layerMetaphorsActived) * { * if (!lm.IsTapped) * { * if (lm.checkTapping(tappingPos)) * { * potentialLayers.Add(lm); * } * } * } * if (potentialLayers.Count > 0) * { * goTappedLH = potentialLayers[0]; * foreach (LayerMetaphor lm in potentialLayers) * { * if (lm.checkDistance(tappingPos) < goTappedLH.checkDistance(tappingPos)) * { * goTappedLH = lm; * } * } * goTappedLH.startTap(); * goTappedLH.reScaleWorldObj(1.25f, 1.25f, 1.25f); * } * } * else * { * if (goTappedLH.checkTapping(tappingPos)) * { * //ratate the go * } * else * { * goTappedLH.endTap(); * goTappedLH.reScaleWorldObj(0.8f, 0.8f, 0.8f); * goTappedLH = null; * } * } * return; * case 1: * gesture = (GestureTapping)gestureTappingRH; * tappingPos = gesture.LastTipPos; * posMovement = gesture.TipMovement; * if (goTappedRH == null) * { * potentialLayers = new List<LayerMetaphor>(); * foreach (LayerMetaphor lm in layerMetaphorsActived) * { * if (!lm.IsTapped) * { * if (lm.checkTapping(tappingPos)) * { * potentialLayers.Add(lm); * } * } * } * if (potentialLayers.Count > 0) * { * goTappedRH = potentialLayers[0]; * foreach (LayerMetaphor lm in potentialLayers) * { * if (lm.checkDistance(tappingPos) < goTappedRH.checkDistance(tappingPos)) * { * goTappedRH = lm; * } * } * goTappedRH.startTap(); * goTappedRH.reScaleWorldObj(1.25f, 1.25f, 1.25f); * } * } * else * { * if (goTappedRH.checkTapping(tappingPos)) * { * //ratate the go * } * else * { * goTappedRH.endTap(); * goTappedRH.reScaleWorldObj(0.8f, 0.8f, 0.8f); * goTappedRH = null; * } * } * return; * } * return; * * } * } */ private void OneHandHovering(int mode) { if (goSelected != null) { return; } GestureHovering gesture; Vector3 hoveringPos; switch (mode) { case 0: gesture = (GestureHovering)gestureHoveringLH; hoveringPos = (gesture.LastTipPos + gesture.LastPalmPos) / 2; handle.updateIndex(hoveringPos); handle.updateObjectsPositions(hoveringPos); if (!oldVersion) { bin.updateIndex(hoveringPos); bin.updateObjectsPositions(hoveringPos); } return; case 1: gesture = (GestureHovering)gestureHoveringRH; hoveringPos = (gesture.LastTipPos + gesture.LastPalmPos) / 2; handle.updateIndex(hoveringPos); handle.updateObjectsPositions(hoveringPos); if (!oldVersion) { bin.updateIndex(hoveringPos); bin.updateObjectsPositions(hoveringPos); } return; case 2: foreach (LayerMetaphor lm in layerMetaphorsActived) { if (lm.isGrasped) { lm.cancelAllGraspState(); lm.cancelAllHighLight(); } } hoveringPos = handle.safeUpdatePos; handle.updateIndex(hoveringPos); handle.updateObjectsPositions(hoveringPos); if (oldVersion) { return; } foreach (LayerMetaphor lm in layerMetaphorsDisActived) { if (lm.isGrasped) { goSelected = null; lm.cancelAllGraspState(); lm.cancelAllHighLight(); lm.moveObjectTo(bin.safeUpdatePos); } } hoveringPos = bin.safeUpdatePos; bin.updateIndex(hoveringPos); bin.updateObjectsPositions(hoveringPos); return; } }
protected void onGraspStayActived() { _isLocked = true; graspedTime += Time.deltaTime; if (interactionBehaviour.closestHoveringHand == null) { return; } if (graspedTime < quickGraspTimeMax) { _isLocked = false; return; } else { if (!_isLongGrasped) { _isLongGrasped = true; unselectActions(); enableGraspMovement(); //InteractionController c = interactionBehaviour.graspedPoseHandler.co interactionBehaviour.graspedPoseHandler.AddController(interactionBehaviour.graspingController); //enableGraspActions(); LayerManager.goSelected = null; } } bool inRange = LayerManager.handle.updateLayerExisted(this); if (LayerManager.layerMetaphorsActived.Contains(this)) { if (!inRange) { LayerManager.layerMetaphorsActived.Remove(this); LayerManager.layerMetaphorsDisActived.Add(this); this.getLayer().hide(); if (!_oldVersion) { this.getLayer().getDuplication().hideSelf(); this.worldObject.GetComponent <MeshRenderer>().enabled = true; LayerManager.handle.removeLayer(this); LayerManager.bin.addLayer(this); } } else { if (handle != null && !IsSelected) { Hand h = interactionBehaviour.closestHoveringHand; if (_oldVersion) { handle.updateIndex(worldObject.transform.position); } else { handle.updateIndex(UnityVectorExtension.ToVector3(h.PalmPosition)); } } } } else { if (inRange) { LayerManager.layerMetaphorsDisActived.Remove(this); LayerManager.layerMetaphorsActived.Add(this); this.getLayer().show(); LayerManager.handle.addLayer(this); if (!_oldVersion) { LayerManager.bin.removeLayer(this); this.getLayer().getDuplication().showSelf(); this.getLayer().getDuplication().hideText(); this.worldObject.GetComponent <MeshRenderer>().enabled = false; } } } if (handle != null && !IsSelected) { Hand h = interactionBehaviour.closestHoveringHand; handle.updateObjectsOrder(); if (_oldVersion) { handle.updateObjectsPositions(worldObject.transform.position); } else { handle.updateObjectsPositions(UnityVectorExtension.ToVector3(h.PalmPosition)); } } _isLocked = false; }