def __init__(self, reader: BinaryStream): if reader.version < Versions.VER_UE4_SUPPORT_32BIT_STATIC_MESH_INDICES: self.indices16 = reader.readBulkTArray(reader.readUInt16) self.indices32 = [] else: is32bit = reader.readBool() data = bytearray(reader.readBulkTArray(reader.readInt8)) tr = BinaryStream(data) tr.game = reader.game tr.version = reader.version if reader.game >= GAME_UE4(25): reader.readBool() if len(data) == 0: self.indices16 = [] self.indices32 = [] return if is32bit: count = int(len(data) / 4) self.indices32 = [tr.readUInt32() for _ in range(count)] self.indices16 = [] else: count = int(len(data) / 2) self.indices16 = [tr.readUInt16() for _ in range(count)] self.indices32 = []
def __init__(self, reader: BinaryStream): self.stripFlags = FStripDataFlags(reader) self.sections = reader.readTArray_W_Arg(FStaticMeshSection, reader) self.maxDeviation = reader.readFloat() if reader.game < GAME_UE4(23): if not self.stripFlags.isDataStrippedForServer( ) and not self.stripFlags.isClassDataStripped(CDSF_MinLodData): self.serializeBuffer_legacy(reader) return self.is_lod_cooked_out = reader.readBool() self.inlined = reader.readBool() if not self.stripFlags.isDataStrippedForServer( ) and not self.is_lod_cooked_out: pos = reader.tellfake() if self.inlined: self.serializeBuffer(reader) else: bulk: FByteBulkData = FByteBulkData( reader, ubulk=reader.ubulk_stream, bulkOffset=reader.PackageReader.PackageFileSummary. BulkDataStartOffset) if bulk.Header.ElementCount > 0: tr = BinaryStream(bulk.Data) tr.game = reader.game tr.version = reader.version self.serializeBuffer(tr) reader.readUInt32() # DepthOnlyNumTriangles reader.readUInt32() # PackedData reader.seek(4 * 4 + 2 * 4 + 2 * 4 + 6 * (2 * 4), 1) """ StaticMeshVertexBuffer = 2x int32, 2x bool PositionVertexBuffer = 2x int32 ColorVertexBuffer = 2x int32 IndexBuffer = int32 + bool ReversedIndexBuffer DepthOnlyIndexBuffer ReversedDepthOnlyIndexBuffer WireframeIndexBuffer AdjacencyIndexBuffer """ # FStaticMeshBuffersSize reader.readUInt32() # SerializedBuffersSize reader.readUInt32() # DepthOnlyIBSize reader.readUInt32() # ReversedIBsSize