Ejemplo n.º 1
0
            public static JobHandle Schedule(GeneratorType generator, Data data, NativeList <float3> vertices, NativeList <int> triangles, bool generateNormals, float3 normal, NativeList <float3> normals, bool generateUVs, NativeList <float2> uvs, NativeArray <InfoType> info, JobHandle dependOn = default)
            {
                var cornerJob = new CalculateInfoJob <GeneratorType, InfoType>
                {
                    distanceColNum = data.ColNum,
                    distanceRowNum = data.RowNum,

                    generator = generator,

                    distances = data.RawData,

                    vertices = vertices,
                    indices  = triangles,

                    generateNormals = generateNormals,
                    normals         = normals,
                    normal          = normal,
                    generateUVs     = generateUVs,
                    uvs             = uvs,

                    info = info
                };

                return(cornerJob.Schedule(dependOn));
            }
Ejemplo n.º 2
0
        static public JobHandle ScheduleCalculateInfoJob(Data data, Info info, NativeArray <TopCellInfo> infoArray, NativeList <float3> vertices, NativeList <int> triangles, NativeList <float3> normals, NativeList <float2> uvs, JobHandle lastHandle = default)
        {
            float3 normal = info.IsFlipped ? new float3(0, -1, 0) : new float3(0, 1, 0);

            if (info.UseCullingData && data.HasCullingData)
            {
                var generator = new CulledTopCellInfoGenerator();
                generator.cullingArray = data.CullingDataRawData;
                lastHandle             = CalculateInfoJob <CulledTopCellInfoGenerator, TopCellInfo> .Schedule(generator, data, vertices, triangles, info.GenerateNormals, normal, normals, info.GenerateUvs, uvs, infoArray, lastHandle);
            }
            else
            {
                var generator = new TopCellInfoGenerator();
                lastHandle = CalculateInfoJob <TopCellInfoGenerator, TopCellInfo> .Schedule(generator, data, vertices, triangles, info.GenerateNormals, normal, normals, info.GenerateUvs, uvs, infoArray, lastHandle);
            }

            return(lastHandle);
        }
Ejemplo n.º 3
0
        static private JobHandle ScheduleCalculateInfoJob(Data data, Info info, bool useCullingData, NativeArray <TopCellInfo> infoArray, NativeArray <MergeCellInfo> mergeInfoArray, NativeList <float3> vertices, NativeList <int> triangles, NativeList <float3> normals, NativeList <float2> uvs, JobHandle lastHandle = default)
        {
            float3 normal = info.IsFlipped ? new float3(0, -1, 0) : new float3(0, 1, 0);

            if (useCullingData)
            {
                var generator = new CulledOptimizedTopCellInfoGenerator();
                generator.mergeInfoArray = mergeInfoArray;
                generator.culledArray    = data.CullingDataRawData;
                lastHandle = CalculateInfoJob <CulledOptimizedTopCellInfoGenerator, TopCellInfo> .Schedule(generator, data, vertices, triangles, info.GenerateNormals, normal, normals, info.GenerateUvs, uvs, infoArray, lastHandle);
            }
            else
            {
                var generator = new OptimizedTopCellInfoGenerator();
                generator.mergeInfoArray = mergeInfoArray;
                lastHandle = CalculateInfoJob <OptimizedTopCellInfoGenerator, TopCellInfo> .Schedule(generator, data, vertices, triangles, info.GenerateNormals, normal, normals, info.GenerateUvs, uvs, infoArray, lastHandle);
            }

            return(lastHandle);
        }