コード例 #1
0
            public void Init(Type type, BuilderData.Meta meta)
            {
                submitted = false;
                this.type = type;
                this.meta = meta;

                if (meshes == null)
                {
                    meshes = new List <MeshWithType>();
                }
                if (!temporaryMeshBuffers.IsCreated)
                {
                    temporaryMeshBuffers    = new NativeArray <MeshBuffers>(1, Allocator.Persistent, NativeArrayOptions.UninitializedMemory);
                    temporaryMeshBuffers[0] = new MeshBuffers(Allocator.Persistent);
                }
            }
コード例 #2
0
            public int Reserve(ProcessedBuilderData.Type type, BuilderData.Meta meta)
            {
                if (data == null)
                {
                    data      = new ProcessedBuilderData[0];
                    freeSlots = new Stack <int>();
                }
                if (freeSlots.Count == 0)
                {
                    var newData = new ProcessedBuilderData[math.max(4, data.Length * 2)];
                    data.CopyTo(newData, 0);
                    for (int i = data.Length; i < newData.Length; i++)
                    {
                        freeSlots.Push(i);
                    }
                    data = newData;
                }
                int index = freeSlots.Pop();

                data[index].Init(type, meta);
                return(index);
            }