Beispiel #1
0
    public ComponentBufferSparse(int bufferIndex, IMappedBuffer entitiesBuffer, int initialSize = 1 << 10)
    {
        buffer_ = new MappedBufferSparse <T>(entitiesBuffer, initialSize);
        EntFlags flag = 1u << bufferIndex;

        Matcher = new ComponentMatcher(flag);
        Sparse  = true;
    }
Beispiel #2
0
 internal void CreateComponentBuffer <T>(int initialSize, BufferType type, IMappedBuffer registry) where T : struct
 {
     if (type == BufferType.Dense)
     {
         var buffer = new ComponentBufferDense <T>(DenseCount, initialSize);
         denseBuffers_[DenseCount] = buffer;
         DenseCount++;
     }
     else
     {
         var buffer = new ComponentBufferSparse <T>(SparseCount, registry, initialSize);
         sparseBuffers_[SparseCount] = buffer;
         SparseCount++;
     }
 }
Beispiel #3
0
    internal MappedBufferSparse(IMappedBuffer keysBuffer, int initialSize = 1 << 10) : base(initialSize)
    {
        keysToIndices_ = new int[keysBuffer.AllocElementsCount];

        for (int i = 0; i < keysToIndices_.Length; i++)
        {
            keysToIndices_[i] = -1;
        }

        keysBuffer.OnBufferSizeChanged += newSize =>
        {
            var newK2i = new int[newSize];
            Array.Copy(keysToIndices_, 0, newK2i, 0, keysToIndices_.Length);
            for (int k = keysToIndices_.Length; k < newSize; k++)
            {
                newK2i[k] = -1;
            }
            keysToIndices_ = newK2i;
        };
    }