protected override JobHandle StartGeneration(JobHandle dependOn) { if (sourceType == SourceType.FromTheme) { return(deferred ? deferredHandler.ScheduleDeferredJobs(SourceMeshData, Temps, dependOn) : immediateHandler.ScheduleImmediateJobs(SourceMeshData, Temps, dependOn)); } else if (sourceType == SourceType.FromMeshFilters) { MeshCache meshCache; NativeArray <DataInstance> dataInstances; MeshCache.CreateCombinationData(meshFilters, out meshCache, Allocator.TempJob, out dataInstances, Allocator.TempJob); Temps.Add(meshCache); Temps.Add(dataInstances); immediateHandler = new Immediate(dataInstances); return(immediateHandler.ScheduleImmediateJobs(meshCache.MeshData, Temps, dependOn)); } else if (sourceType == SourceType.FromMeshesAndMatrices) { MeshCache meshCache; NativeArray <DataInstance> dataInstances; MeshCache.CreateCombinationData(meshes, matrices, out meshCache, Allocator.TempJob, out dataInstances, Allocator.TempJob); Temps.Add(meshCache); Temps.Add(dataInstances); immediateHandler = new Immediate(dataInstances); return(immediateHandler.ScheduleImmediateJobs(meshCache.MeshData, Temps, dependOn)); } return(dependOn); }