Advertisement
Guest User

Untitled

a guest
Feb 2nd, 2018
465
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C# 5.98 KB | None | 0 0
  1.  
  2. using HoloToolkit.Unity.InputModule;
  3. using System.Collections;
  4. using System.Collections.Generic;
  5. using UnityEngine;
  6.  
  7. public class MoveTool : MonoBehaviour, IFocusable, IInputHandler, ISourceStateHandler, IManipulationHandler
  8. {
  9.  
  10.     public Transform HostTransform;
  11.  
  12.     [Range(0.01f, 1.0f)]
  13.     public float PositionLerpSpeed = 0.2f;
  14.  
  15.    
  16.     [Range(0.01f, 1.0f)]
  17.     public float RotationLerpSpeed = 0.2f;
  18.  
  19.     public float DistanceScale = 8f;
  20.  
  21.     public bool IsDraggingEnabled = true;
  22.  
  23.     private bool isDragging;
  24.     private bool isGazed;
  25.  
  26.     private Vector3 manipulationEventData;
  27.     private Vector3 manipulationDelta;
  28.    
  29.     private Camera mainCamera;
  30.     private IInputSource currentInputSource;
  31.     private uint currentInputSourceId;
  32.    
  33.     public enum TransformMode { UniformXScale, UniformYScale, NonUniformScale }
  34.     public TransformMode transformMode = TransformMode.UniformXScale;
  35.  
  36.     void Start()
  37.     {
  38.         if (HostTransform == null)
  39.         {
  40.             //This is temporary so we dont get a null exception.
  41.             HostTransform = transform;
  42.         }
  43.  
  44.         mainCamera = Camera.main;
  45.     }
  46.    
  47.     void Update()
  48.     {
  49.         Quaternion currentRot = HostTransform.transform.rotation;
  50.        
  51.         if (NRSRManager.FocusedObject != null)
  52.         {
  53.             HostTransform = NRSRManager.FocusedObject.transform;
  54.         }
  55.         else
  56.         {
  57.             return;
  58.         }
  59.         if (IsDraggingEnabled && isDragging)
  60.         {          
  61.             if (transformMode == TransformMode.NonUniformScale)
  62.             {
  63.                 HostTransform.localScale = Vector3.Lerp(HostTransform.localScale,
  64.                                                         HostTransform.localScale + manipulationDelta DistanceScale,
  65.                                                         PositionLerpSpeed);
  66.             }
  67.             if (transformMode == TransformMode.UniformXScale)
  68.             {
  69.                 HostTransform.localScale = Vector3.Lerp(HostTransform.localScale, HostTransform.localScale +
  70.                                                                                 new Vector3(manipulationDelta.x,
  71.                                                                                 manipulationDelta.x,
  72.                                                                                 manipulationDelta.x) DistanceScale,
  73.                                                                                 PositionLerpSpeed);
  74.             }
  75.             if (transformMode == TransformMode.UniformYScale)
  76.             {
  77.                 HostTransform.localScale = Vector3.Lerp(HostTransform.localScale, HostTransform.localScale +
  78.                                                                                 new Vector3(manipulationDelta.y,
  79.                                                                                 manipulationDelta.y,
  80.                                                                                 manipulationDelta.y) DistanceScale,
  81.                                                                                 PositionLerpSpeed);
  82.             }        
  83.         }
  84.     }
  85.  
  86.     public void StartDragging()
  87.     {
  88.         if (!IsDraggingEnabled)
  89.         {
  90.             return;
  91.         }
  92.  
  93.         if (isDragging)
  94.         {          
  95.             return;
  96.         }
  97.         NRSRManager.holdSelectedObject_UsingTransformTool = true;
  98.     }
  99.  
  100.     public void StopDragging()
  101.     {
  102.         if (!isDragging)
  103.         {
  104.             NRSRManager.holdSelectedObject_UsingTransformTool = false;
  105.             return;
  106.         }
  107.  
  108.         InputManager.Instance.PopModalInputHandler();
  109.         isDragging = false;
  110.         currentInputSource = null;
  111.     }
  112.  
  113.     public void OnFocusEnter()
  114.     {
  115.         if (!IsDraggingEnabled)
  116.         {
  117.             return;
  118.         }
  119.         if (isGazed)
  120.         {
  121.             return;
  122.         }        
  123.         isGazed = true;
  124.     }
  125.  
  126.     public void OnFocusExit()
  127.     {
  128.         if (!IsDraggingEnabled)
  129.         {
  130.             return;
  131.         }
  132.         if (!isGazed)
  133.         {
  134.             return;
  135.         }        
  136.         isGazed = false;
  137.     }
  138.  
  139.     public void OnInputDown(InputEventData eventData)
  140.     {
  141.        
  142.         if (isDragging)
  143.         {            
  144.             return;
  145.         }
  146.  
  147.         if (!eventData.InputSource.SupportsInputInfo(eventData.SourceId, SupportedInputInfo.Position))
  148.         {
  149.             return;
  150.         }
  151.  
  152.         if (!IsDraggingEnabled)
  153.         {
  154.             return;
  155.         }
  156.         InputManager.Instance.PushModalInputHandler(gameObject);
  157.  
  158.         isDragging = true;
  159.         currentInputSource = eventData.InputSource;
  160.         currentInputSourceId = eventData.SourceId;
  161.         StartDragging();
  162.     }
  163.  
  164.     public void OnInputUp(InputEventData eventData)
  165.     {
  166.         Debug.Log("OnInputUp");
  167.         if (currentInputSource != null &&
  168.                eventData.SourceId == currentInputSourceId)
  169.         {
  170.             StopDragging();
  171.         }
  172.     }
  173.  
  174.     public void OnSourceDetected(SourceStateEventData eventData)
  175.     {
  176.  
  177.     }
  178.  
  179.     public void OnSourceLost(SourceStateEventData eventData)
  180.     {
  181.         if (currentInputSource != null && eventData.SourceId == currentInputSourceId)
  182.         {
  183.             StopDragging();
  184.         }
  185.     }
  186.  
  187.     public void OnManipulationStarted(ManipulationEventData eventData)
  188.     {      
  189.         Debug.LogFormat("OnManipulationStarted\r\nSource: {0}  SourceId: {1}\r\nCumulativeDelta: {2} {3} {4}",
  190.                eventData.InputSource,
  191.                eventData.SourceId,
  192.                eventData.CumulativeDelta.x,
  193.                eventData.CumulativeDelta.y,
  194.                eventData.CumulativeDelta.z);
  195.         manipulationEventData = eventData.CumulativeDelta;
  196.     }
  197.  
  198.     public void OnManipulationUpdated(ManipulationEventData eventData)
  199.     {
  200.         Debug.LogFormat("OnManipulationUpdated\r\nSource: {0}  SourceId: {1}\r\nCumulativeDelta: {2} {3} {4}",
  201.                    eventData.InputSource,
  202.                    eventData.SourceId,
  203.                    eventData.CumulativeDelta.x,
  204.                    eventData.CumulativeDelta.y,
  205.                    eventData.CumulativeDelta.z);
  206.  
  207.         Vector3 delta = eventData.CumulativeDelta - manipulationEventData;
  208.         manipulationDelta = delta * DistanceScale;
  209.         manipulationEventData = eventData.CumulativeDelta;
  210.  
  211.  
  212.     }
  213.  
  214.     public void OnManipulationCompleted(ManipulationEventData eventData)
  215.     {
  216.         manipulationEventData = Vector3.zero;
  217.         manipulationDelta = Vector3.zero;        
  218.     }
  219.  
  220.     public void OnManipulationCanceled(ManipulationEventData eventData)
  221.     {
  222.        
  223.     }
  224.    
  225. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement