Zyle Moore
06/26/2025, 6:17 AMuseEffect(setTopLevel, props.pluginElementMarkers) {
val last = props.pluginElementMarkers.lastOrNull()
if (last == null) {
return@useEffect
}
val sequence = props.pluginElementMarkers.asSequence()
val topLevelList = mutableListOf<PluginElementMarker>()
var nextMarker = sequence.take(1).single()
while (nextMarker != last) {
val skip = nextMarker.skip
val size = when (nextMarker) {
is GroupElementMarker -> nextMarker.elementSize
is RecordElementMarker -> nextMarker.elementSize
is SubRecordElementMarker -> nextMarker.elementSize.toUInt()
}.toLong()
topLevelList += nextMarker
nextMarker = sequence
.dropWhile { marker -> marker.skip < skip + size }
.take(1)
.singleOrNull() ?: last
}
console.log("actually done")
setTopLevel(topLevelList)
}
Zyle Moore
06/26/2025, 6:19 AMRecordElementMarker(skip=0, serialName=TypeTag(string=TES4), elementSize=78, isDataCompressed=false)
GroupElementMarker(skip=78, serialName=TypeTag(string=GRUP), elementSize=96862)
...
GroupElementMarker(skip=249738908, serialName=TypeTag(string=GRUP), elementSize=13763)
GroupElementMarker(skip=249752671, serialName=TypeTag(string=GRUP), elementSize=741)