Esempio n. 1
0
        void ResizeCapacity(int newCapacity)
        {
            CheckAllocator(Allocator);
            var oldBytesToMalloc = sizeof(UnsafeList *) * Capacity;
            var newBytesToMalloc = sizeof(UnsafeList *) * newCapacity;
            var newPtr           = (UnsafeList **)UnsafeUtility.Malloc(newBytesToMalloc, UnsafeUtility.AlignOf <long>(), Allocator);

            UnsafeUtility.MemClear(newPtr, newBytesToMalloc);
            if (Ptr != null)
            {
                UnsafeUtility.MemCpy(newPtr, Ptr, oldBytesToMalloc);
                UnsafeUtility.Free(Ptr, Allocator);
            }
            Ptr      = newPtr;
            Capacity = newCapacity;
        }
Esempio n. 2
0
        public void Dispose()
        {
            if (ShouldDeallocate(Allocator))
            {
                for (int i = 0; i < Length; i++)
                {
                    if (Ptr[i] != null &&
                        Ptr[i]->IsCreated)
                    {
                        Ptr[i]->Clear();
                        Ptr[i]->Dispose();
                    }
                }
                UnsafeUtility.Free(Ptr, Allocator);
                Allocator = Allocator.Invalid;
            }

            Ptr      = null;
            Length   = 0;
            Capacity = 0;
        }