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; }
private bool _OnNodeEvent(vrEvent iEvent) { if (!m_IsNodeGrabbed) { vrObjectEvent objectEvent = vrObjectEvent.Cast(iEvent); if (objectEvent != null && objectEvent.GetEventType() == (int)VRObjectEventEnum.VRObjectEvent_Destroy) { MVRNodesMapper nodesMapper = MVRNodesMapper.Instance; if (nodesMapper != null && m_SyncDirection != MVRNodesMapper.ENodesSyncDirection.NoSynchronization) { nodesMapper.RemoveMapping(gameObject, false); } SetSyncDirection(MVRNodesMapper.ENodesSyncDirection.NoSynchronization); m_Node = null; // Destroys the object later this frame, before rendering UnityEngine.Object.Destroy(gameObject); } } return(true); }
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 = ""; } }