diff --git a/Recources/Materials/XraySphere.mat b/Recources/Materials/XraySphere.mat new file mode 100644 index 0000000..8a47b7b --- /dev/null +++ b/Recources/Materials/XraySphere.mat @@ -0,0 +1,140 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!21 &2100000 +Material: + serializedVersion: 8 + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_Name: XraySphere + m_Shader: {fileID: 4800000, guid: 933532a4fcc9baf4fa0491de14d08ed7, type: 3} + m_Parent: {fileID: 0} + m_ModifiedSerializedProperties: 0 + m_ValidKeywords: + - _ALPHAMODULATE_ON + - _SURFACE_TYPE_TRANSPARENT + m_InvalidKeywords: [] + m_LightmapFlags: 4 + m_EnableInstancingVariants: 0 + m_DoubleSidedGI: 0 + m_CustomRenderQueue: 3000 + stringTagMap: + RenderType: Transparent + disabledShaderPasses: + - MOTIONVECTORS + - DepthOnly + - SHADOWCASTER + m_LockedProperties: + m_SavedProperties: + serializedVersion: 3 + m_TexEnvs: + - _BaseMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _BumpMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _DetailAlbedoMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _DetailMask: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _DetailNormalMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _EmissionMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _MainTex: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _MetallicGlossMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _OcclusionMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _ParallaxMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _SpecGlossMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - unity_Lightmaps: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - unity_LightmapsInd: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - unity_ShadowMasks: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + m_Ints: [] + m_Floats: + - _AddPrecomputedVelocity: 0 + - _AlphaClip: 0 + - _AlphaToMask: 0 + - _Blend: 3 + - _BlendModePreserveSpecular: 1 + - _BumpScale: 1 + - _ClearCoatMask: 0 + - _ClearCoatSmoothness: 0 + - _Cull: 2 + - _Cutoff: 0.5 + - _DetailAlbedoMapScale: 1 + - _DetailNormalMapScale: 1 + - _DstBlend: 0 + - _DstBlendAlpha: 1 + - _EnvironmentReflections: 1 + - _GlossMapScale: 0 + - _Glossiness: 0 + - _GlossyReflections: 0 + - _Metallic: 0 + - _OcclusionStrength: 1 + - _Parallax: 0.005 + - _QueueOffset: 0 + - _ReceiveShadows: 1 + - _Smoothness: 0 + - _SmoothnessTextureChannel: 0 + - _SpecularHighlights: 1 + - _SrcBlend: 2 + - _SrcBlendAlpha: 0 + - _Surface: 1 + - _WorkflowMode: 1 + - _ZWrite: 0 + m_Colors: + - _BaseColor: {r: 1, g: 1, b: 1, a: 1} + - _Color: {r: 1, g: 1, b: 1, a: 1} + - _EmissionColor: {r: 0, g: 0, b: 0, a: 1} + - _SpecColor: {r: 0.19999996, g: 0.19999996, b: 0.19999996, a: 1} + m_BuildTextureStacks: [] + m_AllowLocking: 1 +--- !u!114 &7295709948890126418 +MonoBehaviour: + m_ObjectHideFlags: 11 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 0} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: d0353a89b1f911e48b9e16bdc9f2e058, type: 3} + m_Name: + m_EditorClassIdentifier: + version: 10 diff --git a/Recources/Materials/XraySphere.mat.meta b/Recources/Materials/XraySphere.mat.meta new file mode 100644 index 0000000..12247da --- /dev/null +++ b/Recources/Materials/XraySphere.mat.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: a03469624cd0eb7439d5bcd5d8456039 +NativeFormatImporter: + externalObjects: {} + mainObjectFileID: 2100000 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Scripts/GameMode/GameController.cs b/Scripts/GameMode/GameController.cs index 2559797..9c742b5 100644 --- a/Scripts/GameMode/GameController.cs +++ b/Scripts/GameMode/GameController.cs @@ -97,6 +97,15 @@ void Start() { Debug.LogWarning("GameController: The VR Setup of sofa object hasn't been done, must do it somewhere"); } + + if (m_STHGMP == null) + { + m_STHGMP= FindObjectOfType(); + if (m_STHGMP == null) + { + Debug.LogError("GameControlleur: couldn't find SofaTwoHandedGrabMoveProvider script"); + } + } } void Update() diff --git a/Scripts/VRTools/SofaTwoHandedGrabMoveProvider.cs b/Scripts/VRTools/SofaTwoHandedGrabMoveProvider.cs index 17d8931..8d092f6 100644 --- a/Scripts/VRTools/SofaTwoHandedGrabMoveProvider.cs +++ b/Scripts/VRTools/SofaTwoHandedGrabMoveProvider.cs @@ -138,6 +138,7 @@ public float maximumScale } bool m_IsMoving; + bool m_setupDone=true; Vector3 m_PreviousMidpointBetweenControllers; @@ -153,12 +154,7 @@ public float maximumScale /// protected void OnEnable() { - if (m_modelExplorer == null) - { - m_modelExplorer = FindObjectOfType(); - if (m_modelExplorer == null) - Debug.LogError("Impossible to find SofaModelExplorer reference "); - } + m_setupDone=FindModelEplorer(); LineBetween = m_controllerA.GetComponent(); @@ -209,105 +205,135 @@ protected void OnDisable() } - + /// + /// Fonction to find model explorer + /// + /// + protected bool FindModelEplorer() + { + if (m_modelExplorer == null) + { + m_modelExplorer = FindObjectOfType(); + if (m_modelExplorer == null) + { + if(m_setupDone)Debug.LogWarning("Impossible to find SofaModelExplorer reference will try until finding It"); + return false; + } + + } + + return true; + } /// protected override Vector3 ComputeDesiredMove(out bool attemptingMove) { - - attemptingMove = false; - var wasMoving = m_IsMoving; - var xrOrigin = system.xrOrigin; - m_IsMoving = m_LeftGrabMoveProvider.IsGrabbing() && m_RightGrabMoveProvider.IsGrabbing() && xrOrigin != null;//not grab but trigger button now - if (LineBetween != null) - { - // Update line renderer position - LineBetween.positionCount = 2; // La ligne a 2 points - LineBetween.SetPosition(0, m_controllerA.transform.position); // Strat point (objet 1) - LineBetween.SetPosition(1, m_controllerB.transform.position); // End point (objet 2) - } + m_setupDone = FindModelEplorer();//is tested at each frame, needed cause object can be destroy if we use multiple scenes - if (!m_IsMoving) + if (m_setupDone) { - LineBetween.enabled = false; - // Enable one-handed movement - if (!m_RequireTwoHandsForTranslation) + + attemptingMove = false; + var wasMoving = m_IsMoving; + var xrOrigin = system.xrOrigin; + m_IsMoving = m_LeftGrabMoveProvider.IsGrabbing() && m_RightGrabMoveProvider.IsGrabbing() && xrOrigin != null;//not grab but trigger button now + if (LineBetween != null) { - m_LeftGrabMoveProvider.canMove = true; - m_RightGrabMoveProvider.canMove = true; + // Update line renderer position + LineBetween.positionCount = 2; // La ligne a 2 points + LineBetween.SetPosition(0, m_controllerA.transform.position); // Strat point (objet 1) + LineBetween.SetPosition(1, m_controllerB.transform.position); // End point (objet 2) } - restControllerA = m_controllerA.transform.position; - restControllerB = m_controllerB.transform.position; - return Vector3.zero; - } - if (enableRotation) - { - LineBetween.enabled = true; - RotateModel(); - } - - // Prevent individual grab locomotion since we perform our own translation - m_LeftGrabMoveProvider.canMove = false; - m_RightGrabMoveProvider.canMove = false; - var originTransform = xrOrigin.transform; - var leftHandLocalPosition = m_LeftGrabMoveProvider.controllerTransform.localPosition; + if (!m_IsMoving) + { + LineBetween.enabled = false; + // Enable one-handed movement + if (!m_RequireTwoHandsForTranslation) + { + m_LeftGrabMoveProvider.canMove = true; + m_RightGrabMoveProvider.canMove = true; + } + restControllerA = m_controllerA.transform.position; + restControllerB = m_controllerB.transform.position; + return Vector3.zero; + } + if (enableRotation) + { + LineBetween.enabled = true; + RotateModel(); + } + // Prevent individual grab locomotion since we perform our own translation + m_LeftGrabMoveProvider.canMove = false; + m_RightGrabMoveProvider.canMove = false; + var originTransform = xrOrigin.transform; + var leftHandLocalPosition = m_LeftGrabMoveProvider.controllerTransform.localPosition; - var rightHandLocalPosition = m_RightGrabMoveProvider.controllerTransform.localPosition; - var midpointLocalPosition = (leftHandLocalPosition + rightHandLocalPosition) * 0.5f; - if (m_modelExplorer.m_targetElement == null) - { - m_objectToMove = m_modelExplorer.m_sofaContext.transform; - } - else - { - m_objectToMove = m_modelExplorer.m_targetElement.m_targetElement.transform; - - } - if (!wasMoving && m_IsMoving && m_objectToMove != null ) // Cannot simply check locomotionPhase because it might always be in moving state, due to gravity application mode - { + var rightHandLocalPosition = m_RightGrabMoveProvider.controllerTransform.localPosition; + var midpointLocalPosition = (leftHandLocalPosition + rightHandLocalPosition) * 0.5f; + if (m_modelExplorer.m_targetElement == null) + { + m_objectToMove = m_modelExplorer.m_sofaContext.transform; + } + else + { + m_objectToMove = m_modelExplorer.m_targetElement.m_targetElement.transform; + + } - //m_leftControllerInitPosition = m_LeftGrabMoveProvider.controllerTransform.position; - //m_rightControllerInitPosition = m_RightGrabMoveProvider.controllerTransform.position; + if (!wasMoving && m_IsMoving && m_objectToMove != null) // Cannot simply check locomotionPhase because it might always be in moving state, due to gravity application mode + { - m_leftControllerInitPosition = m_controllerA.transform.position; - m_rightControllerInitPosition = m_controllerB.transform.position; - m_scaleInitObject = m_objectToMove.transform.localScale; + //m_leftControllerInitPosition = m_LeftGrabMoveProvider.controllerTransform.position; + //m_rightControllerInitPosition = m_RightGrabMoveProvider.controllerTransform.position; - //When pressing both grip button the first time - //restControllerA = m_controllerA.transform.position; - //restControllerB = m_controllerB.transform.position; + m_leftControllerInitPosition = m_controllerA.transform.position; + m_rightControllerInitPosition = m_controllerB.transform.position; - m_InitialOriginYaw = originTransform.eulerAngles.y; - m_InitialLeftToRightDirection = rightHandLocalPosition - leftHandLocalPosition; - m_InitialLeftToRightDirection.y = 0f; // Only use yaw rotation - m_InitialLeftToRightOrthogonal = Quaternion.AngleAxis(90f, Vector3.down) * m_InitialLeftToRightDirection; + m_scaleInitObject = m_objectToMove.transform.localScale; - m_InitialOriginScale = originTransform.localScale.x; - m_InitialDistanceBetweenHands = Vector3.Distance(leftHandLocalPosition, rightHandLocalPosition); + //When pressing both grip button the first time + //restControllerA = m_controllerA.transform.position; + //restControllerB = m_controllerB.transform.position; + + m_InitialOriginYaw = originTransform.eulerAngles.y; + m_InitialLeftToRightDirection = rightHandLocalPosition - leftHandLocalPosition; + m_InitialLeftToRightDirection.y = 0f; // Only use yaw rotation + m_InitialLeftToRightOrthogonal = Quaternion.AngleAxis(90f, Vector3.down) * m_InitialLeftToRightDirection; + + m_InitialOriginScale = originTransform.localScale.x; + m_InitialDistanceBetweenHands = Vector3.Distance(leftHandLocalPosition, rightHandLocalPosition); + + // Do not move the first frame of grab + m_PreviousMidpointBetweenControllers = midpointLocalPosition; - // Do not move the first frame of grab - m_PreviousMidpointBetweenControllers = midpointLocalPosition; - + return Vector3.zero; + } + + attemptingMove = true; + + var move = originTransform.TransformVector(m_PreviousMidpointBetweenControllers - midpointLocalPosition) * m_MoveFactor; + m_PreviousMidpointBetweenControllers = midpointLocalPosition; + //return move; + + return Vector3.zero; + } + else + { + attemptingMove = false; return Vector3.zero; } - attemptingMove = true; - - var move = originTransform.TransformVector(m_PreviousMidpointBetweenControllers - midpointLocalPosition) * m_MoveFactor; - m_PreviousMidpointBetweenControllers = midpointLocalPosition; - //return move; - return Vector3.zero; } /// @@ -316,176 +342,150 @@ protected override Vector3 ComputeDesiredMove(out bool attemptingMove) Quaternion customRot; private void RotateModel() { + if (m_setupDone) + { - + if (m_modelExplorer.m_targetElement == null) + { + m_objectToMove = m_modelExplorer.m_sofaContext.transform; - if (m_modelExplorer.m_targetElement == null) - { - m_objectToMove = m_modelExplorer.m_sofaContext.transform; - - } - else - { - m_objectToMove = m_modelExplorer.m_targetElement.m_targetElement.transform; - } + } + else + { + m_objectToMove = m_modelExplorer.m_targetElement.m_targetElement.transform; + } - Vector3 oldAB = restControllerB - restControllerA; - Vector3 newAB = m_controllerB.transform.position - m_controllerA.transform.position; - var restControllerUp = m_controllerA.transform.up + m_controllerB.transform.up; - Vector3 oldZ = restControllerUp.normalized; - Vector3 newZ = m_controllerA.transform.up + m_controllerB.transform.up; - newZ.Normalize(); + Vector3 oldAB = restControllerB - restControllerA; + Vector3 newAB = m_controllerB.transform.position - m_controllerA.transform.position; + var restControllerUp = m_controllerA.transform.up + m_controllerB.transform.up; + Vector3 oldZ = restControllerUp.normalized; + Vector3 newZ = m_controllerA.transform.up + m_controllerB.transform.up; + newZ.Normalize(); - Quaternion tmpRot = Quaternion.FromToRotation(oldAB, newAB); - tmpRot = tmpRot * Quaternion.FromToRotation(oldZ, newZ); + Quaternion tmpRot = Quaternion.FromToRotation(oldAB, newAB); + tmpRot = tmpRot * Quaternion.FromToRotation(oldZ, newZ); - float val = Vector3.Dot(m_camera.transform.forward, m_objectToMove.transform.forward); - if (val < 0) - { - float xR = -tmpRot.eulerAngles.x; - float yR = tmpRot.eulerAngles.y; - float zR = -tmpRot.eulerAngles.z; - tmpRot.eulerAngles = new Vector3(xR, yR, zR); - } + float val = Vector3.Dot(m_camera.transform.forward, m_objectToMove.transform.forward); + if (val < 0) + { + float xR = -tmpRot.eulerAngles.x; + float yR = tmpRot.eulerAngles.y; + float zR = -tmpRot.eulerAngles.z; + tmpRot.eulerAngles = new Vector3(xR, yR, zR); + } + + /* rotation + if (m_fixMode) + customRot = tmpRot; + else + customRot = customRot * tmpRot;*/ - /* rotation - if (m_fixMode) - customRot = tmpRot; + m_objectToMove.transform.eulerAngles = m_objectToMove.transform.eulerAngles + tmpRot.eulerAngles;//customRot.eulerAngles; + restControllerA = m_controllerA.transform.position; + restControllerB = m_controllerB.transform.position; + } else - customRot = customRot * tmpRot;*/ + { + m_setupDone = FindModelEplorer(); + } + - m_objectToMove.transform.eulerAngles = m_objectToMove.transform.eulerAngles + tmpRot.eulerAngles;//customRot.eulerAngles; - restControllerA = m_controllerA.transform.position; - restControllerB = m_controllerB.transform.position; } /// protected override void MoveRig(Vector3 translationInWorldSpace) { - base.MoveRig(translationInWorldSpace); + if (m_setupDone) + { + base.MoveRig(translationInWorldSpace); - - //var leftHandLocalPosition = m_LeftGrabMoveProvider.controllerTransform.localPosition; - //var rightHandLocalPosition = m_RightGrabMoveProvider.controllerTransform.localPosition; - //var leftHandNewPosition = m_LeftGrabMoveProvider.controllerTransform.position; - //var rightHandNewPosition = m_RightGrabMoveProvider.controllerTransform.position; - var leftHandNewPosition = m_controllerA.transform.position; - var rightHandNewPosition = m_controllerB.transform.position; + //var leftHandLocalPosition = m_LeftGrabMoveProvider.controllerTransform.localPosition; + //var rightHandLocalPosition = m_RightGrabMoveProvider.controllerTransform.localPosition; + //var leftHandNewPosition = m_LeftGrabMoveProvider.controllerTransform.position; + //var rightHandNewPosition = m_RightGrabMoveProvider.controllerTransform.position; + var leftHandNewPosition = m_controllerA.transform.position; + var rightHandNewPosition = m_controllerB.transform.position; - - //if (m_EnableRotation) - //{ - // var leftToRightDirection = rightHandLocalPosition - leftHandLocalPosition; - // leftToRightDirection.y = 0f; // Only use yaw rotation - // var yawSign = Mathf.Sign(Vector3.Dot(m_InitialLeftToRightOrthogonal, leftToRightDirection)); - // var targetYaw = m_InitialOriginYaw + Vector3.Angle(m_InitialLeftToRightDirection, leftToRightDirection) * yawSign; - // m_objectToMove.rotation = Quaternion.AngleAxis(targetYaw, Vector3.up); - //} - if (m_modelExplorer.m_targetElement == null) - { - m_objectToMove = m_modelExplorer.m_sofaContext.transform; - } - else - { - m_objectToMove = m_modelExplorer.m_targetElement.m_targetElement.transform; - - } - - if (m_EnableScaling && m_objectToMove != null) - { - - Vector3 diffLeftHand = leftHandNewPosition - m_leftControllerInitPosition; - Vector3 diffRghtHand = rightHandNewPosition - m_rightControllerInitPosition; - - - float normLeft = diffLeftHand.magnitude; - float normRight = diffRghtHand.magnitude; - if (normLeft < 0.01f && normRight < 0.01f) - return; + //if (m_EnableRotation) + //{ + // var leftToRightDirection = rightHandLocalPosition - leftHandLocalPosition; + // leftToRightDirection.y = 0f; // Only use yaw rotation + // var yawSign = Mathf.Sign(Vector3.Dot(m_InitialLeftToRightOrthogonal, leftToRightDirection)); + // var targetYaw = m_InitialOriginYaw + Vector3.Angle(m_InitialLeftToRightDirection, leftToRightDirection) * yawSign; + // m_objectToMove.rotation = Quaternion.AngleAxis(targetYaw, Vector3.up); + //} + if (m_modelExplorer.m_targetElement == null) + { + m_objectToMove = m_modelExplorer.m_sofaContext.transform; + } + else + { + m_objectToMove = m_modelExplorer.m_targetElement.m_targetElement.transform; - + } - Vector3 oldLeftRight = m_rightControllerInitPosition - m_leftControllerInitPosition; + if (m_EnableScaling && m_objectToMove != null) + { + Vector3 diffLeftHand = leftHandNewPosition - m_leftControllerInitPosition; + Vector3 diffRghtHand = rightHandNewPosition - m_rightControllerInitPosition; - Vector3 newLeftRight = rightHandNewPosition - leftHandNewPosition; - float oldNormLeftRight = oldLeftRight.magnitude; - float newNormLeftRight = newLeftRight.magnitude; - ////translate center - //if (normLeft > 0.01f) - // m_objectToMove.position += diffLeftHand; + float normLeft = diffLeftHand.magnitude; + float normRight = diffRghtHand.magnitude; - //scale - float ratio = 1.0f; - if (oldNormLeftRight > 0.0001f) - { - - ratio = newNormLeftRight / oldNormLeftRight; - } - + if (normLeft < 0.01f && normRight < 0.01f) + return; - if (ratio < 0.001f) - return; - - Vector3 tmpScale = m_scaleInitObject * ratio * m_scaleResize; - if (tmpScale.x < 0) { tmpScale.x = Mathf.Clamp(tmpScale.x, -1 * m_MaximumScale, -1 * m_MinimumScale); }//-1 to have the same coordinate system as SOFA - else { tmpScale.x = Mathf.Clamp(tmpScale.x, m_MinimumScale, m_MaximumScale); } - tmpScale.y = Mathf.Clamp(tmpScale.y, m_MinimumScale, m_MaximumScale); - tmpScale.z = Mathf.Clamp(tmpScale.z, m_MinimumScale, m_MaximumScale); - - m_objectToMove.transform.localScale = tmpScale; - + Vector3 oldLeftRight = m_rightControllerInitPosition - m_leftControllerInitPosition; - //print("ratio = " + ratio); - //print("objectScale = " + m_objectToMove.localScale); - //print("ObjectPosition = " + m_objectToMove.position); + Vector3 newLeftRight = rightHandNewPosition - leftHandNewPosition; + float oldNormLeftRight = oldLeftRight.magnitude; + float newNormLeftRight = newLeftRight.magnitude; - ////rotation - //Quaternion rot = Quaternion.FromToRotation(oldLeftRight, newLeftRight); - //Vector3 rotationWithModulo; + ////translate center + //if (normLeft > 0.01f) + // m_objectToMove.position += diffLeftHand; - //rotationWithModulo.x = rot.eulerAngles.x % 360f; - //rotationWithModulo.y = rot.eulerAngles.y % 360f; - //rotationWithModulo.z = rot.eulerAngles.z % 360f; + //scale + float ratio = 1.0f; + if (oldNormLeftRight > 0.0001f) + { - ////print("objectPositionBefore = " + m_objectToMove.localEulerAngles); - ////print("rotationValue = " + rot.eulerAngles); - ////m_objectToMove.localEulerAngles = m_objectToMove.localEulerAngles + rot.eulerAngles; - ////print("objectPositionAfter = " + m_objectToMove.localEulerAngles); + ratio = newNormLeftRight / oldNormLeftRight; + } - //print("objectPositionBefore = " + m_objectToMove.localEulerAngles); - //print("rotationValue = " + rotationWithModulo); - //m_objectToMove.localEulerAngles = m_objectToMove.localEulerAngles + rotationWithModulo; - //print("objectPositionAfter = " + m_objectToMove.localEulerAngles); - ////update init position - //if (normLeft > 0.01f) - // m_leftControllerInitPosition = leftHandNewPosition; - //if (normRight > 0.01f) - // m_rightControllerInitPosition = rightHandNewPosition; + if (ratio < 0.001f) + return; + Vector3 tmpScale = m_scaleInitObject * ratio * m_scaleResize; + if (tmpScale.x < 0) { tmpScale.x = Mathf.Clamp(tmpScale.x, -1 * m_MaximumScale, -1 * m_MinimumScale); }//-1 to have the same coordinate system as SOFA + else { tmpScale.x = Mathf.Clamp(tmpScale.x, m_MinimumScale, m_MaximumScale); } + tmpScale.y = Mathf.Clamp(tmpScale.y, m_MinimumScale, m_MaximumScale); + tmpScale.z = Mathf.Clamp(tmpScale.z, m_MinimumScale, m_MaximumScale); - //var distanceBetweenHands = Vector3.Distance(leftHandLocalPosition, rightHandLocalPosition); - //var targetScale = distanceBetweenHands != 0f - // ? /*m_InitialOriginScale*/m_objectToMove.localScale.x * (m_InitialDistanceBetweenHands / distanceBetweenHands) - // : m_objectToMove.localScale.x; + m_objectToMove.transform.localScale = tmpScale; - //targetScale = Mathf.Clamp(targetScale, m_MinimumScale, m_MaximumScale); - //m_objectToMove.localScale = Vector3.one * targetScale; + } + else + { + m_setupDone = FindModelEplorer(); + } + } }