Terraria v1.4.4.9
Terraria source code documentation
All Classes Namespaces Files Functions Variables Enumerations Enumerator Properties Events Macros

◆ BinarySearchReferenceRange() [2/2]

void System.Reflection.Internal.MemoryBlock.BinarySearchReferenceRange ( int[] ptrTable,
int rowSize,
int referenceOffset,
uint referenceValue,
bool isReferenceSmall,
out int startRowNumber,
out int endRowNumber )
inlinepackage

Definition at line 577 of file MemoryBlock.cs.

578 {
579 int num = BinarySearchReference(ptrTable, rowSize, referenceOffset, referenceValue, isReferenceSmall);
580 if (num == -1)
581 {
582 startRowNumber = -1;
583 endRowNumber = -1;
584 return;
585 }
586 startRowNumber = num;
587 while (startRowNumber > 0 && PeekReferenceUnchecked((ptrTable[startRowNumber - 1] - 1) * rowSize + referenceOffset, isReferenceSmall) == referenceValue)
588 {
589 startRowNumber--;
590 }
591 endRowNumber = num;
592 while (endRowNumber + 1 < ptrTable.Length && PeekReferenceUnchecked((ptrTable[endRowNumber + 1] - 1) * rowSize + referenceOffset, isReferenceSmall) == referenceValue)
593 {
594 endRowNumber++;
595 }
596 }
int BinarySearchReference(int rowCount, int rowSize, int referenceOffset, uint referenceValue, bool isReferenceSmall)
uint PeekReferenceUnchecked(int offset, bool smallRefSize)

References System.Reflection.Internal.MemoryBlock.BinarySearchReference(), and System.Reflection.Internal.MemoryBlock.PeekReferenceUnchecked().