< Summary

Class:GDX.Array2DExtensions
Assembly:GDX
File(s):D:/BuildAgent/work/GDX-Documentation/Projects/GDX_Development/Packages/com.dotbunny.gdx/GDX/Array2DExtensions.cs
Covered lines:23
Uncovered lines:0
Coverable lines:23
Total lines:54
Line coverage:100% (23 of 23)
Covered branches:0
Total branches:0
Covered methods:1
Total methods:1
Method coverage:100% (1 of 1)

Coverage History

Metrics

MethodBranch coverage Crap Score Cyclomatic complexity NPath complexity Sequence coverage
Scale(...)0%330100%

File(s)

D:/BuildAgent/work/GDX-Documentation/Projects/GDX_Development/Packages/com.dotbunny.gdx/GDX/Array2DExtensions.cs

#LineLine coverage
 1// Copyright (c) 2020-2022 dotBunny Inc.
 2// dotBunny licenses this file to you under the BSL-1.0 license.
 3// See the LICENSE file in the project root for more information.
 4
 5using GDX.Collections.Generic;
 6using Unity.Mathematics;
 7
 8namespace GDX
 9{
 10    /// <summary>
 11    ///     Array2D Based Extension Methods
 12    /// </summary>
 13    [VisualScriptingCompatible(2)]
 14    public static class Array2DExtensions
 15    {
 16        /// <summary>
 17        ///     Generate an array scaled by bilinear interpolation.
 18        /// </summary>
 19        /// <remarks>Works with <see cref="float"/> values.</remarks>
 20        /// <param name="inputArray">The existing <see cref="Array2D{T}"/> to scale.</param>
 21        /// <param name="scaleFactor">The multiple to scale by.</param>
 22        public static Array2D<float> Scale(ref this Array2D<float> inputArray, int scaleFactor = 2)
 123        {
 124            int originalRowsMinusOne = inputArray.RowCount - 1;
 125            int originalColsMinusOne = inputArray.ColumnCount - 1;
 26
 127            int newRows = inputArray.RowCount * scaleFactor;
 128            int newCols = inputArray.ColumnCount * scaleFactor;
 29
 130            Array2D<float> returnArray = new Array2D<float>(inputArray.RowCount * scaleFactor,
 31                inputArray.ColumnCount * scaleFactor);
 32
 1033            for (int x = 0; x < newCols; x++)
 4034            for (int y = 0; y < newRows; y++)
 1635            {
 1636                float gx = (float)x / newCols * originalColsMinusOne;
 1637                float gy = (float)y / newCols * originalRowsMinusOne;
 1638                int gxi = (int)gx;
 1639                int gyi = (int)gy;
 40
 1641                float c00 = inputArray[gxi, gyi];
 1642                float c10 = inputArray[gxi + 1, gyi];
 1643                float c01 = inputArray[gxi, gyi + 1];
 1644                float c11 = inputArray[gxi + 1, gyi + 1];
 45
 1646                float tx = gx - gxi;
 1647                float ty = gy - gyi;
 1648                returnArray[x, y] = math.lerp(math.lerp(c00, c10, tx), math.lerp(c01, c11, tx), ty);
 1649            }
 50
 151            return returnArray;
 152        }
 53    }
 54}