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); } }
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); }