Beispiel #1
0
    public int[] CreateTriangles(MeshSettingsModel meshSettings)
    {
        int squareAmount = meshSettings.VertexSize;
        int colums       = meshSettings.VertexSize + 1;

        int[] triangles = new int[squareAmount * squareAmount * 6];

        for (int index = 0; index < squareAmount * squareAmount; index++)
        {
            int i = index / squareAmount;
            int j = index % squareAmount;
            CreateSquare(i * colums + j, colums, index * 6);
        }

        return(triangles);

        void CreateSquare(int vertexBaseIndex, int size, int trianglesBaseIndex)
        {
            triangles[trianglesBaseIndex]     = vertexBaseIndex;
            triangles[trianglesBaseIndex + 1] = vertexBaseIndex + 1;
            triangles[trianglesBaseIndex + 2] = vertexBaseIndex + size;

            triangles[trianglesBaseIndex + 3] = vertexBaseIndex + 1;
            triangles[trianglesBaseIndex + 4] = vertexBaseIndex + 1 + size;
            triangles[trianglesBaseIndex + 5] = vertexBaseIndex + size;
        }
    }
Beispiel #2
0
    Vector3[] IVertexCalculator.GetVerteces(MeshSettingsModel meshSettings)
    {
        float step            = meshSettings.UnitsSize / meshSettings.VertexSize;
        float startPoint      = (-meshSettings.UnitsSize * .5f);
        int   rowPointsAmount = meshSettings.VertexSize + 1;

        Vector3[] points = new Vector3[rowPointsAmount * rowPointsAmount];
        for (int index = 0; index < points.Length; index++)
        {
            int   i = index / rowPointsAmount;
            int   j = index % rowPointsAmount;
            float x = startPoint + step * i;
            float y = startPoint + step * j;
            points[index] = new Vector3(x, y, 0);
        }
        return(points);
    }
Beispiel #3
0
    Vector3[] IVertexCalculator.GetVerteces(MeshSettingsModel meshSettings)
    {
        float step            = meshSettings.UnitsSize / meshSettings.VertexSize;
        float startPoint      = (-meshSettings.UnitsSize * .5f);
        int   rowPointsAmount = meshSettings.VertexSize + 1;
        int   length          = rowPointsAmount * rowPointsAmount;

        NativeArray <float3> jobResult = new NativeArray <float3>(length, Allocator.TempJob);

        CalculatorJob jobData = new CalculatorJob
        {
            Step = step, StartPoint = startPoint, RowPointsAmount = rowPointsAmount, Result = jobResult
        };
        JobHandle handle = jobData.Schedule(jobResult.Length, BatchCount);

        handle.Complete();

        Vector3[] result = CreateArrayFrom(jobResult);

        jobResult.Dispose();

        return(result);
    }