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 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 = ""; } }