Terraria v1.4.4.9
Terraria source code documentation
Loading...
Searching...
No Matches

◆ GetValueInt32Array()

unsafe int[] Microsoft.Xna.Framework.Graphics.EffectParameter.GetValueInt32Array ( int count)
inline

Definition at line 1594 of file EffectParameter.cs.

1595 {
1596 //Discarded unreachable code: IL_0240
1597 if (count <= 0)
1598 {
1599 throw new ArgumentOutOfRangeException();
1600 }
1601 int[] array = new int[count];
1602 if (_paramClass == EffectParameterClass.Matrix)
1603 {
1604 int columns = _columns;
1605 int val = _rows * columns;
1606 int count2 = pElementCollection.Count;
1607 if (count2 == 0)
1608 {
1609 Matrix valueMatrix = GetValueMatrix();
1610 int num = Math.Min(count, val);
1611 fixed (float* ptr = &System.Runtime.CompilerServices.Unsafe.AsRef<float>(&valueMatrix.M11))
1612 {
1613 try
1614 {
1615 int num2 = 0;
1616 int num3 = 0;
1617 int rows = _rows;
1618 if (0 < rows)
1619 {
1620 while (num2 < num)
1621 {
1622 int num4 = 0;
1623 int columns2 = _columns;
1624 if (0 < columns2)
1625 {
1626 while (num2 < num)
1627 {
1628 array[num2] = (int)(double)(*(float*)((ref *(_003F*)((num3 * 4 + num4) * 4)) + (ref *(_003F*)ptr)));
1629 num2++;
1630 num4++;
1631 columns2 = _columns;
1632 if (num4 >= columns2)
1633 {
1634 break;
1635 }
1636 }
1637 }
1638 num3++;
1639 rows = _rows;
1640 if (num3 >= rows)
1641 {
1642 break;
1643 }
1644 }
1645 }
1646 }
1647 catch
1648 {
1649 //try-fault
1650 ptr = null;
1651 throw;
1652 }
1653 }
1654 }
1655 else
1656 {
1657 Matrix[] valueMatrixArray = GetValueMatrixArray(count2);
1658 int num5 = Math.Min(count, count2 * 16);
1659 fixed (float* ptr2 = &valueMatrixArray[0].M11)
1660 {
1661 try
1662 {
1663 int num6 = 0;
1664 int num7 = 0;
1665 if (0 < count2)
1666 {
1667 while (num6 < num5)
1668 {
1669 int num8 = 0;
1670 int rows2 = _rows;
1671 if (0 < rows2)
1672 {
1673 while (num6 < num5)
1674 {
1675 int num9 = 0;
1676 int columns3 = _columns;
1677 if (0 < columns3)
1678 {
1679 while (num6 < num5)
1680 {
1681 array[num6] = (int)(double)(*(float*)((ref *(_003F*)(((num7 * 4 + num8) * 4 + num9) * 4)) + (ref *(_003F*)ptr2)));
1682 num6++;
1683 num9++;
1684 columns3 = _columns;
1685 if (num9 >= columns3)
1686 {
1687 break;
1688 }
1689 }
1690 }
1691 num8++;
1692 rows2 = _rows;
1693 if (num8 >= rows2)
1694 {
1695 break;
1696 }
1697 }
1698 }
1699 num7++;
1700 if (num7 >= count2)
1701 {
1702 break;
1703 }
1704 }
1705 }
1706 }
1707 catch
1708 {
1709 //try-fault
1710 ptr2 = null;
1711 throw;
1712 }
1713 }
1714 }
1715 }
1716 else
1717 {
1718 ID3DXBaseEffect* ptr3 = pEffect;
1719 System.Runtime.CompilerServices.Unsafe.SkipInit(out _D3DXPARAMETER_DESC d3DXPARAMETER_DESC);
1720 int num10 = ((delegate* unmanaged[Stdcall, Stdcall]<IntPtr, sbyte*, _D3DXPARAMETER_DESC*, int>)(int)(*(uint*)(*(int*)ptr3 + 16)))((nint)ptr3, _handle, &d3DXPARAMETER_DESC);
1721 if (num10 < 0)
1722 {
1723 throw GraphicsHelpers.GetExceptionFromResult((uint)num10);
1724 }
1725 int num11 = System.Runtime.CompilerServices.Unsafe.As<_D3DXPARAMETER_DESC, int>(ref System.Runtime.CompilerServices.Unsafe.AddByteOffset(ref d3DXPARAMETER_DESC, 40)) >>> 2;
1726 fixed (void* ptr4 = &System.Runtime.CompilerServices.Unsafe.As<int, void>(ref (new int[num11])[0]))
1727 {
1728 try
1729 {
1730 int num12 = ((count >= num11) ? num11 : count);
1731 int num13 = *(int*)pEffect + 116;
1732 int num14 = ((delegate* unmanaged[Stdcall, Stdcall]<IntPtr, sbyte*, int*, uint, int>)(int)(*(uint*)num13))((nint)pEffect, _handle, (int*)ptr4, (uint)num12);
1733 if (num14 < 0)
1734 {
1735 throw GraphicsHelpers.GetExceptionFromResult((uint)num14);
1736 }
1737 IntPtr source = new IntPtr(ptr4);
1738 Marshal.Copy(source, array, 0, num12);
1739 }
1740 catch
1741 {
1742 //try-fault
1743 ptr4 = null;
1744 throw;
1745 }
1746 }
1747 }
1748 return array;
1749 }
static byte Min(byte val1, byte val2)
Definition Math.cs:912
static void Copy(int[] source, int startIndex, IntPtr destination, int length)
Definition Marshal.cs:800

References Microsoft.Xna.Framework.Graphics.EffectParameter._columns, Microsoft.Xna.Framework.Graphics.EffectParameter._handle, Microsoft.Xna.Framework.Graphics.EffectParameter._paramClass, Microsoft.Xna.Framework.Graphics.EffectParameter._rows, System.array, System.Runtime.InteropServices.Marshal.Copy(), Microsoft.Xna.Framework.Graphics.EffectParameterCollection.Count, System.count, Microsoft.Xna.Framework.Graphics.GraphicsHelpers.GetExceptionFromResult(), Microsoft.Xna.Framework.Graphics.EffectParameter.GetValueMatrix(), Microsoft.Xna.Framework.Graphics.EffectParameter.GetValueMatrixArray(), Microsoft.Xna.Framework.Matrix.M11, System.Math.Min(), Microsoft.Xna.Framework.Graphics.EffectParameter.pEffect, Microsoft.Xna.Framework.Graphics.EffectParameter.pElementCollection, and System.source.