static public JobHandle Schedule(BufferType type, NativeArray <float3> source, NativeArray <float3> destination, NativeArray <DataInstance> instanceArray, JobHandle dependOn) { var job = new CombineTransformedBufferJob { bufferType = type, instances = instanceArray, source = source, destination = destination }; return(job.Schedule(dependOn)); }
public JobHandle ScheduleDeferredJobs(MeshData sourceMeshData, List <System.IDisposable> tempList, JobHandle dependOn) { uint meshFlags = sourceMeshData.BufferFlags; deferredCombinedMesh = new DeferredMeshData(meshFlags, Allocator.TempJob); tempList.Add(deferredCombinedMesh); JobHandle combined = default; if (deferredCombinedMesh.HasVertices) { var h = CombineTransformedBufferJob.ScheduleDeferred(BufferType.Vertex, sourceMeshData.Vertices, deferredCombinedMesh.Vertices, instanceList, dependOn); combined = JobHandle.CombineDependencies(combined, h); } if (deferredCombinedMesh.HasTriangles) { var h = CombineTriangleBufferJob.ScheduleDeferred(sourceMeshData.Triangles, deferredCombinedMesh.Triangles, meshFlags, instanceList, dependOn); combined = JobHandle.CombineDependencies(combined, h); } if (deferredCombinedMesh.HasNormals) { var h = CombineTransformedBufferJob.ScheduleDeferred(BufferType.Normal, sourceMeshData.Normals, deferredCombinedMesh.Normals, instanceList, dependOn); combined = JobHandle.CombineDependencies(combined, h); } if (deferredCombinedMesh.HasColors) { var h = CombineBufferJob <Color> .ScheduleDeferred(sourceMeshData.Colors, deferredCombinedMesh.Colors, instanceList, dependOn); combined = JobHandle.CombineDependencies(combined, h); } if (deferredCombinedMesh.HasTangents) { var h = CombineBufferJob <float4> .ScheduleDeferred(sourceMeshData.Tangents, deferredCombinedMesh.Tangents, instanceList, dependOn); combined = JobHandle.CombineDependencies(combined, h); } if (deferredCombinedMesh.HasUVs) { var h = CombineBufferJob <float2> .ScheduleDeferred(sourceMeshData.UVs, deferredCombinedMesh.UVs, instanceList, dependOn); combined = JobHandle.CombineDependencies(combined, h); } if (deferredCombinedMesh.HasUVs2) { var h = CombineBufferJob <float2> .ScheduleDeferred(sourceMeshData.UVs2, deferredCombinedMesh.UVs2, instanceList, dependOn); combined = JobHandle.CombineDependencies(combined, h); } if (deferredCombinedMesh.HasUVs3) { var h = CombineBufferJob <float2> .ScheduleDeferred(sourceMeshData.UVs3, deferredCombinedMesh.UVs3, instanceList, dependOn); combined = JobHandle.CombineDependencies(combined, h); } if (deferredCombinedMesh.HasUVs4) { var h = CombineBufferJob <float2> .ScheduleDeferred(sourceMeshData.UVs4, deferredCombinedMesh.UVs4, instanceList, dependOn); combined = JobHandle.CombineDependencies(combined, h); } return(combined); }
public JobHandle ScheduleImmediateJobs(MeshData sourceMeshData, List <System.IDisposable> tempList, JobHandle dependOn) { var combinedInfo = CalcCombinedMeshInfo(instanceArray, sourceMeshData.BufferFlags); combinedMesh = combinedInfo.CreateMeshData(Allocator.TempJob); tempList.Add(combinedMesh); var submeshOffsets = new NativeArray <Offset>(combinedInfo.submeshTriangleOffsets, Allocator.TempJob); tempList.Add(submeshOffsets); JobHandle combined = default; if (combinedMesh.HasVertices) { var h = CombineTransformedBufferJob.Schedule(BufferType.Vertex, sourceMeshData.Vertices, combinedMesh.Vertices, instanceArray, dependOn); combined = JobHandle.CombineDependencies(combined, h); } if (combinedMesh.HasTriangles) { var h = CombineTriangleBufferJob.Schedule(sourceMeshData.Triangles, combinedMesh.Triangles, submeshOffsets, instanceArray, dependOn); combined = JobHandle.CombineDependencies(combined, h); } if (combinedMesh.HasNormals) { var h = CombineTransformedBufferJob.Schedule(BufferType.Normal, sourceMeshData.Normals, combinedMesh.Normals, instanceArray, dependOn); combined = JobHandle.CombineDependencies(combined, h); } if (combinedMesh.HasColors) { var h = CombineBufferJob <Color> .Schedule(sourceMeshData.Colors, combinedMesh.Colors, instanceArray, dependOn); combined = JobHandle.CombineDependencies(combined, h); } if (combinedMesh.HasTangents) { var h = CombineBufferJob <float4> .Schedule(sourceMeshData.Tangents, combinedMesh.Tangents, instanceArray, dependOn); combined = JobHandle.CombineDependencies(combined, h); } if (combinedMesh.HasUVs) { var h = CombineBufferJob <float2> .Schedule(sourceMeshData.UVs, combinedMesh.UVs, instanceArray, dependOn); combined = JobHandle.CombineDependencies(combined, h); } if (combinedMesh.HasUVs2) { var h = CombineBufferJob <float2> .Schedule(sourceMeshData.UVs2, combinedMesh.UVs2, instanceArray, dependOn); combined = JobHandle.CombineDependencies(combined, h); } if (combinedMesh.HasUVs3) { var h = CombineBufferJob <float2> .Schedule(sourceMeshData.UVs3, combinedMesh.UVs3, instanceArray, dependOn); combined = JobHandle.CombineDependencies(combined, h); } if (combinedMesh.HasUVs4) { var h = CombineBufferJob <float2> .Schedule(sourceMeshData.UVs4, combinedMesh.UVs4, instanceArray, dependOn); combined = JobHandle.CombineDependencies(combined, h); } return(combined); }