Source code for scfile.io.ol
"""Structured I/O extensions for OL."""
from scfile.content.textures import CUBEMAP_FACE_COUNT
from scfile.enums import F
from .base import StructReader
XOR = ord("g") # 103
NULL = ord("G") # 71
[docs]
class OlReader(StructReader):
[docs]
def sizes(
self,
mipmap_count: int,
) -> list[int]:
# Read mipmap sizes
return self.array(F.U32, mipmap_count).tolist()
[docs]
def cubemap_sizes(
self,
mipmap_count: int,
) -> list[list[int]]:
# Read mipmap sizes for each cubemap face
data = self.array(F.U32, mipmap_count * CUBEMAP_FACE_COUNT)
# Reshape to mipmap[face]
return data.reshape(mipmap_count, CUBEMAP_FACE_COUNT).tolist()