Esempio n. 1
0
    private void Grab(GameObject iGrabbedObject)
    {
        if (iGrabbedObject == null)
        {
            return;
        }

        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);
        m_it.SetPivotPositionVirtualWorld(MVRTools.FromUnity(m_CurrentManipulatedObject.GetComponent <Collider>().bounds.center));

        // 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);
        }

        // Hide Wand
        m_VRMgr.ShowWandGeometry(false);
    }
    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);
        }
    }
Esempio n. 3
0
    protected vrNode3D AcquireGameObjectNode(GameObject iGameObject, string iTempNodeName)
    {
        var nodeSyncComponent = iGameObject.GetComponent <VRNode3DSynchronization>();
        var node = nodeSyncComponent.Node;

        m_ObjectPreviousSyncDir = nodeSyncComponent.SyncDirection;
        // Hack to force update of vrNode3D beforehand
        nodeSyncComponent.SetSyncDirection(MVRNodesMapper.ENodesSyncDirection.UnityToMiddleVR);
        nodeSyncComponent.SetSyncDirection(MVRNodesMapper.ENodesSyncDirection.MiddleVRToUnity);
        return(node);
    }
Esempio n. 4
0
    public vrNode3D CreateNode(string iNodeName, MVRNodesMapper.ENodesSyncDirection iSyncDirection)
    {
        vrNode3D node = null;

        if (iNodeName != "")
        {
            vrDisplayManager displayManager = MiddleVR.VRDisplayMgr;
            if (displayManager.GetNode(iNodeName) == null)
            {
                node = displayManager.CreateNode(iNodeName);
                // Copy transformation from gameObject to node3d
                _SetNode(node, MVRNodesMapper.ENodesSyncDirection.UnityToMiddleVR, iSyncDirection);
            }
        }

        return(node);
    }
    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);
        }
    }
Esempio n. 6
0
    public void SetSyncDirection(MVRNodesMapper.ENodesSyncDirection iSyncDirection)
    {
        MVRNodesMapper nodesMapper = MVRNodesMapper.Instance;

        if (nodesMapper != null && m_Node != null)
        {
            if (m_SyncDirection != MVRNodesMapper.ENodesSyncDirection.NoSynchronization)
            {
                nodesMapper.RemoveMapping(gameObject, false);
            }

            if (iSyncDirection != MVRNodesMapper.ENodesSyncDirection.NoSynchronization)
            {
                nodesMapper.AddMapping(gameObject, m_Node, iSyncDirection);
            }
        }

        m_SyncDirection = iSyncDirection;
    }
Esempio n. 7
0
    protected virtual void _SetSyncDirection(MVRNodesMapper.ENodesSyncDirection iSyncDirection)
    {
        m_SyncDirIsSet  = true;
        m_SyncDirection = iSyncDirection;

        var nodesMapper = MVRNodesMapper.Instance;

        if (iSyncDirection != MVRNodesMapper.ENodesSyncDirection.NoSynchronization)
        {
            // Set new MiddleVR - Unity nodes mapping if needed
            m_MiddleVRNode = nodesMapper.AddMapping(this.gameObject, MiddleVRNodeName, iSyncDirection);
        }
        else if (m_MiddleVRNode != null)
        {
            // No synchronization and existing mvrNode: stop node synchronization
            nodesMapper.RemoveMapping(m_MiddleVRNode.GetName());

            m_MiddleVRNode = null;
        }
    }
Esempio n. 8
0
    private void _SetSyncDirection(MVRNodesMapper.ENodesSyncDirection iSyncDirection)
    {
        m_SyncDirIsSet = true;
        m_SyncDirection = iSyncDirection;

        var nodesMapper = MVRNodesMapper.Instance;

        if (iSyncDirection != MVRNodesMapper.ENodesSyncDirection.NoSynchronization)
        {
            // Set new MiddleVR - Unity nodes mapping if needed
            m_MiddleVRNode = nodesMapper.AddMapping(this.gameObject, MiddleVRNodeName, iSyncDirection);
        }
        else if(m_MiddleVRNode != null)
        {
            // No synchronization and existing mvrNode: stop node synchronization
            nodesMapper.RemoveMapping(m_MiddleVRNode.GetName());

            m_MiddleVRNode = null;
        }
    }
Esempio n. 9
0
    public vrNode3D InitNode()
    {
        // Check for grabbed nodes
        MVRNodesMapper nodesMapper = MVRNodesMapper.Instance;

        if (nodesMapper != null)
        {
            vrNode3D node = nodesMapper.GetNode(gameObject);
            if (node != null)
            {
                m_Node          = node;
                m_NodeName      = m_Node.GetName();
                m_SyncDirection = MVRNodesMapper.ENodesSyncDirection.MiddleVRToUnity;
                m_IsNodeGrabbed = true;
                return(m_Node);
            }
        }

        return(CreateNode(m_NodeName, MVRNodesMapper.ENodesSyncDirection.MiddleVRToUnity));
    }
Esempio n. 10
0
 public void SetNode(vrNode3D iNode, MVRNodesMapper.ENodesSyncDirection iSyncDirection)
 {
     // Copy transformation from gameObject to node3d
     _SetNode(iNode, MVRNodesMapper.ENodesSyncDirection.MiddleVRToUnity, iSyncDirection);
 }
Esempio n. 11
0
    protected vrNode3D AcquireGameObjectNode(GameObject iGameObject, string iTempNodeName)
    {
        VRNode3DComponent syncNodeScript = iGameObject.GetComponent<VRNode3DComponent>();
        m_ObjectPreviousSyncDir = syncNodeScript.SyncDirection;
        syncNodeScript.SyncDirection = MVRNodesMapper.ENodesSyncDirection.MiddleVRToUnity;
        vrNode3D node = syncNodeScript.GetOrCreateNode3D();

        return node;
    }
Esempio n. 12
0
    private void _SetSyncDirection(MVRNodesMapper.ENodesSyncDirection iSyncDirection)
    {
        MVRNodesMapper nodesMapper = MVRNodesMapper.Instance;

        if (m_Node3D != null)
        {
            if (m_SyncDirection != MVRNodesMapper.ENodesSyncDirection.NoSynchronization)
            {
                nodesMapper.RemoveMapping(gameObject, false);
            }

            if (iSyncDirection != MVRNodesMapper.ENodesSyncDirection.NoSynchronization)
            {
                nodesMapper.AddMapping(gameObject, m_Node3D, iSyncDirection);
            }
        }

        m_SyncDirection = iSyncDirection;
    }
Esempio n. 13
0
    public vrNode3D GetOrCreateNode3D()
    {
        if (!m_IsInitialized)
        {
            _Initialize();
        }

        if (m_Node3D == null)
        {
            vrNode3D node = MVRNodesMapper.Instance.GetNode(gameObject);

            if (node != null)
            {
                m_SyncDirection = MVRNodesMapper.ENodesSyncDirection.MiddleVRToUnity;
                m_Node3DName = node.GetName();
                m_Node3D = node;

                m_IsNodeOwned = false;
            }

        }

        if (m_Node3D == null)
        {
            MVRNodesMapper.ENodesSyncDirection oldDirection = m_SyncDirection;
            m_SyncDirection = MVRNodesMapper.ENodesSyncDirection.UnityToMiddleVR;
            _SetNode3D(MiddleVR.VRDisplayMgr.CreateNode(gameObject.name + "_" + gameObject.GetInstanceID().ToString()), true);
            _SetSyncDirection(oldDirection);
        }

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

        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);
        m_it.SetPivotPositionVirtualWorld(MVRTools.FromUnity(m_CurrentManipulatedObject.GetComponent<Collider>().bounds.center));

        // 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);
        }

        // Hide Wand
        m_VRMgr.ShowWandGeometry(false);
    }
Esempio n. 15
0
    private void _Initialize()
    {
        vrNode3D node = MVRNodesMapper.Instance.GetNode(gameObject);

        if (node != null)
        {
            m_SyncDirection = MVRNodesMapper.ENodesSyncDirection.MiddleVRToUnity;
            m_Node3DName = node.GetName();
            m_Node3D = node;

            m_IsNodeOwned = false;
        }

        if (m_Node3D == null && m_Node3DName.Length > 0)
        {
            node = MiddleVR.VRDisplayMgr.GetNode(m_Node3DName);
            if (node == null)
            {
                MVRNodesMapper.ENodesSyncDirection oldDirection = m_SyncDirection;
                m_SyncDirection = MVRNodesMapper.ENodesSyncDirection.UnityToMiddleVR;
                _SetNode3D(MiddleVR.VRDisplayMgr.CreateNode(m_Node3DName), true);
                _SetSyncDirection(oldDirection);
            }
            else
            {
                _SetNode3D(node, false);
            }
        }

        m_IsInitialized = true;
    }
    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);
        }
    }
Esempio n. 17
0
    private void _SetNode(vrNode3D iNode3D, MVRNodesMapper.ENodesSyncDirection iInitialSyncDirection, MVRNodesMapper.ENodesSyncDirection iSyncDirection)
    {
        // Check if iNode3D and m_Node3D are the same
        if (m_Node == iNode3D || (m_Node != null && iNode3D != null && m_Node.GetId() == iNode3D.GetId()))
        {
            // Same node, return.
            return;
        }

        MVRNodesMapper nodesMapper = MVRNodesMapper.Instance;

        // Cleanup old node
        if (m_Node != null && !m_IsNodeGrabbed)
        {
            if (m_EventListener != null)
            {
                m_Node.RemoveEventListener(m_EventListener);
            }

            if (m_SyncDirection != MVRNodesMapper.ENodesSyncDirection.NoSynchronization)
            {
                nodesMapper.RemoveMapping(gameObject, true);
            }
        }

        m_IsNodeGrabbed = false;
        m_Node          = iNode3D;

        // Setup new node
        if (m_Node != null)
        {
            // First mapping will copy the object's transform
            if (iInitialSyncDirection != MVRNodesMapper.ENodesSyncDirection.NoSynchronization)
            {
                nodesMapper.AddMapping(gameObject, m_Node, iInitialSyncDirection);
            }

            if (iInitialSyncDirection != iSyncDirection)
            {
                if (iInitialSyncDirection != MVRNodesMapper.ENodesSyncDirection.NoSynchronization)
                {
                    nodesMapper.RemoveMapping(gameObject, false);
                }

                if (iSyncDirection != MVRNodesMapper.ENodesSyncDirection.NoSynchronization)
                {
                    nodesMapper.AddMapping(gameObject, m_Node, iSyncDirection);
                }
            }

            m_NodeName      = m_Node.GetName();
            m_SyncDirection = iSyncDirection;

            if (m_EventListener == null)
            {
                m_EventListener = new vrEventListener(_OnNodeEvent);
            }

            m_Node.AddEventListener(m_EventListener);
        }
        else
        {
            m_NodeName = "";
        }
    }