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

◆ GetValueBooleanArray()

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

Definition at line 1408 of file EffectParameter.cs.

1409 {
1410 //Discarded unreachable code: IL_0277
1411 if (count <= 0)
1412 {
1413 throw new ArgumentOutOfRangeException();
1414 }
1415 bool[] array = new bool[count];
1416 if (_paramClass == EffectParameterClass.Matrix)
1417 {
1418 int columns = _columns;
1419 int val = _rows * columns;
1420 int count2 = pElementCollection.Count;
1421 if (count2 == 0)
1422 {
1423 Matrix valueMatrix = GetValueMatrix();
1424 int num = Math.Min(count, val);
1425 fixed (float* ptr = &System.Runtime.CompilerServices.Unsafe.AsRef<float>(&valueMatrix.M11))
1426 {
1427 try
1428 {
1429 int num2 = 0;
1430 int num3 = 0;
1431 int rows = _rows;
1432 if (0 < rows)
1433 {
1434 while (num2 < num)
1435 {
1436 int num4 = 0;
1437 int columns2 = _columns;
1438 if (0 < columns2)
1439 {
1440 while (num2 < num)
1441 {
1442 int num5 = ((*(float*)((ref *(_003F*)((num3 * 4 + num4) * 4)) + (ref *(_003F*)ptr)) != 0f) ? 1 : 0);
1443 array[num2] = (byte)num5 != 0;
1444 num2++;
1445 num4++;
1446 columns2 = _columns;
1447 if (num4 >= columns2)
1448 {
1449 break;
1450 }
1451 }
1452 }
1453 num3++;
1454 rows = _rows;
1455 if (num3 >= rows)
1456 {
1457 break;
1458 }
1459 }
1460 }
1461 }
1462 catch
1463 {
1464 //try-fault
1465 ptr = null;
1466 throw;
1467 }
1468 }
1469 }
1470 else
1471 {
1472 Matrix[] valueMatrixArray = GetValueMatrixArray(count2);
1473 int num6 = Math.Min(count, count2 * 16);
1474 fixed (float* ptr2 = &valueMatrixArray[0].M11)
1475 {
1476 try
1477 {
1478 int num7 = 0;
1479 int num8 = 0;
1480 if (0 < count2)
1481 {
1482 while (num7 < num6)
1483 {
1484 int num9 = 0;
1485 int rows2 = _rows;
1486 if (0 < rows2)
1487 {
1488 while (num7 < num6)
1489 {
1490 int num10 = 0;
1491 int columns3 = _columns;
1492 if (0 < columns3)
1493 {
1494 while (num7 < num6)
1495 {
1496 int num11 = ((*(float*)((ref *(_003F*)(((num8 * 4 + num9) * 4 + num10) * 4)) + (ref *(_003F*)ptr2)) != 0f) ? 1 : 0);
1497 array[num7] = (byte)num11 != 0;
1498 num7++;
1499 num10++;
1500 columns3 = _columns;
1501 if (num10 >= columns3)
1502 {
1503 break;
1504 }
1505 }
1506 }
1507 num9++;
1508 rows2 = _rows;
1509 if (num9 >= rows2)
1510 {
1511 break;
1512 }
1513 }
1514 }
1515 num8++;
1516 if (num8 >= count2)
1517 {
1518 break;
1519 }
1520 }
1521 }
1522 }
1523 catch
1524 {
1525 //try-fault
1526 ptr2 = null;
1527 throw;
1528 }
1529 }
1530 }
1531 }
1532 else
1533 {
1534 ID3DXBaseEffect* ptr3 = pEffect;
1535 System.Runtime.CompilerServices.Unsafe.SkipInit(out _D3DXPARAMETER_DESC d3DXPARAMETER_DESC);
1536 int num12 = ((delegate* unmanaged[Stdcall, Stdcall]<IntPtr, sbyte*, _D3DXPARAMETER_DESC*, int>)(int)(*(uint*)(*(int*)ptr3 + 16)))((nint)ptr3, _handle, &d3DXPARAMETER_DESC);
1537 if (num12 < 0)
1538 {
1539 throw GraphicsHelpers.GetExceptionFromResult((uint)num12);
1540 }
1541 int num13 = System.Runtime.CompilerServices.Unsafe.As<_D3DXPARAMETER_DESC, int>(ref System.Runtime.CompilerServices.Unsafe.AddByteOffset(ref d3DXPARAMETER_DESC, 40)) >>> 2;
1542 int[] array2 = new int[num13];
1543 fixed (void* ptr4 = &System.Runtime.CompilerServices.Unsafe.As<int, void>(ref array2[0]))
1544 {
1545 try
1546 {
1547 int num14 = ((count >= num13) ? num13 : count);
1548 int num15 = *(int*)pEffect + 100;
1549 int num16 = ((delegate* unmanaged[Stdcall, Stdcall]<IntPtr, sbyte*, int*, uint, int>)(int)(*(uint*)num15))((nint)pEffect, _handle, (int*)ptr4, (uint)num14);
1550 if (num16 < 0)
1551 {
1552 throw GraphicsHelpers.GetExceptionFromResult((uint)num16);
1553 }
1554 int num17 = 0;
1555 if (0 < num14)
1556 {
1557 do
1558 {
1559 int num18 = ((array2[num17] != 0) ? 1 : 0);
1560 array[num17] = (byte)num18 != 0;
1561 num17++;
1562 }
1563 while (num17 < num14);
1564 }
1565 }
1566 catch
1567 {
1568 //try-fault
1569 ptr4 = null;
1570 throw;
1571 }
1572 }
1573 }
1574 return array;
1575 }
static byte Min(byte val1, byte val2)
Definition Math.cs:912

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, 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, and Microsoft.Xna.Framework.Graphics.EffectParameter.pElementCollection.