Difference between revisions of "ResizeIntArray - Utility"

From the CreationKit Wiki
Jump to navigation Jump to search
Line 17: Line 17:


== Return Value ==
== Return Value ==
An Int array of '''''size''''' length. Element values will match those provided by the source array.  If new size exceeds length of source array, new elements will will have the value of the fill (if specified) or zero if not.
An Int array of '''''size''''' length. Element values will match those provided by the source array.  If new size (array.length) exceeds size of source array, new elements will will have the value of the fill (if specified) or zero if not.


== Examples ==
== Examples ==

Revision as of 21:37, 3 October 2024

SKSE member of: Utility Script

Resizes an already existing array of Int values to the specified length. (This function requires SKSE)
Be careful when using this function. It is possible to create arrays longer than 128 elements, and size is treated as an unsigned integer. Negative numbers will produce extremely large values, which can cause major issues.

Syntax

int[] Function ResizeIntArray(int[] source, int size, int fill = 0) global native

Parameters

  • source: an existing array of int values.
  • size: new size of the array.
  • fill: a value to fill empty elements of the array with, if the array being resized is longer than the source array.

Return Value

An Int array of size length. Element values will match those provided by the source array. If new size (array.length) exceeds size of source array, new elements will will have the value of the fill (if specified) or zero if not.

Examples

; let's make array length equal to available perk points, and fill all elements with 9
; ...this should really be using the "create" function, not "resize"

int[] pointsArray
pointsArray = Utility.ResizeIntArray(pointsArray, Game.GetPerkPoints(), 9)

; Let's resize an existing array, someArray, expanding it by one element.  The fill value (in this case, not specified so the default of zero) will be used for new elements (in this case, the last one) and all other element values will remain the same as they were before being resized.

someArray = Utility.ResizeIntArray(someArray, someArray.Length + 1)

; Let's resize an existing array, someArray, by making it one element shorter.  The removed element, would be the last one in the array.  The data in all other elements should be unchanged.
; NOTE 1: this is not "safe" code, it could theoretically try to Resize the array to zero length (if it's currently 1) which Resize will not allow, resulting in an error in the papyrus log.  Use "Create" versions if you need to shrink an existing array to zero elements.
; NOTE 2: The autofill value is meaningless and ignored when shrinking an array.

someArray = Utility.ResizeIntArray(someArray, someArray.Length - 1)

Notes

  • No need to actually create an array with new, declaring an array variable is enough.

See Also