< Summary

Class:GDX.Collections.Generic.Array2DExtensions
Assembly:GDX
File(s):./Packages/com.dotbunny.gdx/GDX/Collections/Generic/Array2DExtensions.cs
Covered lines:23
Uncovered lines:0
Coverable lines:23
Total lines:53
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)

./Packages/com.dotbunny.gdx/GDX/Collections/Generic/Array2DExtensions.cs

#LineLine coverage
 1// Copyright (c) 2020-2024 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 Unity.Mathematics;
 6
 7namespace GDX.Collections.Generic
 8{
 9    /// <summary>
 10    ///     Array2D Based Extension Methods
 11    /// </summary>
 12    [VisualScriptingCompatible(2)]
 13    public static class Array2DExtensions
 14    {
 15        /// <summary>
 16        ///     Generate an array scaled by bilinear interpolation.
 17        /// </summary>
 18        /// <remarks>Works with <see cref="float" /> values.</remarks>
 19        /// <param name="inputArray">The existing <see cref="Array2D{T}" /> to scale.</param>
 20        /// <param name="scaleFactor">The multiple to scale by.</param>
 21        public static Array2D<float> Scale(ref this Array2D<float> inputArray, int scaleFactor = 2)
 122        {
 123            int originalRowsMinusOne = inputArray.RowCount - 1;
 124            int originalColsMinusOne = inputArray.ColumnCount - 1;
 25
 126            int newRows = inputArray.RowCount * scaleFactor;
 127            int newCols = inputArray.ColumnCount * scaleFactor;
 28
 129            Array2D<float> returnArray = new Array2D<float>(inputArray.RowCount * scaleFactor,
 30                inputArray.ColumnCount * scaleFactor);
 31
 1032            for (int x = 0; x < newCols; x++)
 4033            for (int y = 0; y < newRows; y++)
 1634            {
 1635                float gx = (float)x / newCols * originalColsMinusOne;
 1636                float gy = (float)y / newCols * originalRowsMinusOne;
 1637                int gxi = (int)gx;
 1638                int gyi = (int)gy;
 39
 1640                float c00 = inputArray[gxi, gyi];
 1641                float c10 = inputArray[gxi + 1, gyi];
 1642                float c01 = inputArray[gxi, gyi + 1];
 1643                float c11 = inputArray[gxi + 1, gyi + 1];
 44
 1645                float tx = gx - gxi;
 1646                float ty = gy - gyi;
 1647                returnArray[x, y] = math.lerp(math.lerp(c00, c10, tx), math.lerp(c01, c11, tx), ty);
 1648            }
 49
 150            return returnArray;
 151        }
 52    }
 53}

Coverage by test methods


Methods/Properties

Scale(GDX.Collections.Generic.Array2D`1[[System.Single, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089]]&, System.Int32)