Ejemplo n.º 1
0
        public IEnumerable <MyDefinitionId[]> IdGroups()
        {
            if (m_sourceCount != CubeGridCache.DefinitionType.Count)
            {
                UpdateFromSource();
            }

            m_lock.AcquireShared();
            try
            {
                for (int index = 0; index < m_blocks.Length; index++)
                {
                    yield return(m_blocks[index]);
                }
            }
            finally
            {
                m_lock.ReleaseShared();
            }
        }
Ejemplo n.º 2
0
 public IEnumerable <MyCubeBlock> BlocksOfType(MyObjectBuilderType typeId)
 {
     lock_blocks.AcquireShared();
     try
     {
         List <MySlimBlock> blockList;
         if (CubeBlocks.TryGetValue(typeId, out blockList))
         {
             for (int i = blockList.Count - 1; i >= 0; i--)
             {
                 MyCubeBlock cubeBlock = blockList[i].FatBlock;
                 if (cubeBlock != null)
                 {
                     yield return(cubeBlock);
                 }
             }
         }
     }
     finally
     {
         lock_blocks.ReleaseShared();
     }
 }
Ejemplo n.º 3
0
 public void Dispose()
 {
     _lock.ReleaseShared();
     _enumerator.Dispose();
 }
Ejemplo n.º 4
0
 /// <summary>
 /// lock this object while performing safeAction
 /// </summary>
 /// <param name="safeAction"></param>
 public void SafeShared(Action safeAction)
 {
     Lock.AcquireShared();
     try { safeAction.Invoke(); }
     finally { Lock.ReleaseShared(); }
 }
Ejemplo n.º 5
0
 public void Dispose()
 {
     MyLock.ReleaseShared();
 }