예제 #1
0
        public T GetSharedComponentData <T>(Entity entity) where T : struct, ISharedComponentData
        {
            var typeIndex = TypeManager.GetTypeIndex <T>();

            m_Entities->AssertEntityHasComponent(entity, typeIndex);

            var sharedComponentIndex = m_Entities->GetSharedComponentDataIndex(entity, typeIndex);

            return(m_SharedComponentManager.GetSharedComponentData <T>(sharedComponentIndex));
        }
예제 #2
0
        public T this[int index]
        {
            get
            {
#if ENABLE_UNITY_COLLECTIONS_CHECKS
                AtomicSafetyHandle.CheckReadAndThrow(m_Safety);
                if ((uint)index >= (uint)Length)
                {
                    FailOutOfRangeError(index);
                }
#endif

                if (index < m_Cache.CachedBeginIndex || index >= m_Cache.CachedEndIndex)
                {
                    m_Iterator.MoveToEntityIndexAndUpdateCache(index, out m_Cache, false);
                }

                var sharedComponent = m_Iterator.GetSharedComponentFromCurrentChunk(m_sharedComponentIndex);
                return(m_sharedComponentDataManager.GetSharedComponentData <T>(sharedComponent));
            }
        }