private void Grab(GameObject iGrabbedObject)
    {
        if (iGrabbedObject == null)
        {
            return;
        }

        // Initialize manipulated node
        m_CurrentManipulatedObject = iGrabbedObject;
        VRActor vrActorScript = m_CurrentManipulatedObject.GetComponent <VRActor>();

        m_ObjectPreviousSyncDir     = vrActorScript.SyncDirection;
        vrActorScript.SyncDirection = MVRNodesMapper.ENodesSyncDirection.MiddleVRToUnity;
        vrNode3D middleVRNode = vrActorScript.GetMiddleVRNode();

        m_it.SetManipulatedNode(middleVRNode);

        // Save initial position
        m_ObjectInitialLocalPosition = m_CurrentManipulatedObject.transform.localPosition;
        m_ObjectInitialLocalRotation = m_CurrentManipulatedObject.transform.localRotation;

        // Deactivate selection during the manipulation
        vrInteraction selection = MiddleVR.VRInteractionMgr.GetActiveInteractionByTag("ContinuousSelection");

        if (selection != null)
        {
            m_PausedSelection = selection;
            MiddleVR.VRInteractionMgr.Deactivate(m_PausedSelection);
        }
    }
    private void Grab(GameObject iGrabbedObject)
    {
        if (iGrabbedObject == null)
        {
            return;
        }

        if (OnGrab != null)
        {
            OnGrab(this, e_GrabStatus.GRABBED);
        }

        // Initialize manipulated node
        m_CurrentManipulatedObject = iGrabbedObject;
        VRActor vrActorScript = m_CurrentManipulatedObject.GetComponent <VRActor>();

        m_ObjectPreviousSyncDir     = vrActorScript.SyncDirection;
        vrActorScript.SyncDirection = MVRNodesMapper.ENodesSyncDirection.BothDirections;
        vrNode3D middleVRNode = vrActorScript.GetMiddleVRNode();

        m_it.SetManipulatedNode(middleVRNode);

        // Save initial position
        m_ManipulatedObjectInitialLocalPosition = m_CurrentManipulatedObject.transform.localPosition;
        m_ManipulatedObjectInitialLocalRotation = m_CurrentManipulatedObject.transform.localRotation;

        // Pause rigidbody acceleration
        Rigidbody manipulatedRigidbody = iGrabbedObject.GetComponent <Rigidbody>();

        if (manipulatedRigidbody != null)
        {
            m_ManipulatedObjectInitialIsKinematic = manipulatedRigidbody.isKinematic;
            manipulatedRigidbody.isKinematic      = true;
        }

        // Deactivate selection during the manipulation
        vrInteraction selection = MiddleVR.VRInteractionMgr.GetActiveInteractionByTag("ContinuousSelection");

        if (selection != null)
        {
            m_PausedSelection = selection;
            MiddleVR.VRInteractionMgr.Deactivate(m_PausedSelection);
        }
    }
    private void Grab(GameObject iGrabbedObject)
    {
        // Initialize manipulated node
        m_CurrentManipulatedObject = iGrabbedObject;
        m_it.SetManipulatedNode(AcquireGameObjectNode(m_CurrentManipulatedObject, "VRInteractionManipulationRayNode"));

        // Pause rigidbody acceleration
        Rigidbody manipulatedRigidbody = iGrabbedObject.GetComponent <Rigidbody>();

        if (manipulatedRigidbody != null)
        {
            m_ManipulatedObjectInitialIsKinematic = manipulatedRigidbody.isKinematic;
            manipulatedRigidbody.isKinematic      = true;
        }

        // Deactivate selection during the manipulation
        vrInteraction selection = MiddleVR.VRInteractionMgr.GetActiveInteractionByTag("ContinuousSelection");

        if (selection != null)
        {
            m_PausedSelection = selection;
            MiddleVR.VRInteractionMgr.Deactivate(m_PausedSelection);
        }
    }