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 serializeBuffer(self, reader: BinaryStream): stripFlags = FStripDataFlags(reader) self.positionVertexBuffer = FPositionVertexBuffer(reader) self.vertexBuffer = FStaticMeshVertexBuffer(reader) self.colorVertexBuffer = FColorVertexBuffer(reader) self.indexBuffer = FRawStaticIndexBuffer(reader) if not stripFlags.isClassDataStripped(CDSF_ReversedIndexBuffer): self.reversedIndexBuffer = FRawStaticIndexBuffer(reader) self.depthOnlyIndexBuffer = FRawStaticIndexBuffer(reader) if not stripFlags.isClassDataStripped(CDSF_ReversedIndexBuffer): self.reversedDepthOnlyIndexBuffer = FRawStaticIndexBuffer(reader) if not stripFlags.isEditorDataStripped(): self.wireframeIndexBuffer = FRawStaticIndexBuffer(reader) if not stripFlags.isClassDataStripped(CDSF_AdjancencyData): self.adjacencyIndexBuffer = FRawStaticIndexBuffer(reader) # UE 4.25+ if reader.game >= GAME_UE4(25) and not stripFlags.isClassDataStripped( CDSF_RaytracingResources): reader.readBulkTArray(reader.readByte) # Raw data # 25178 for i in range(len(self.sections)): FWeightedRandomSampler( reader) # FStaticMeshSectionAreaWeightedTriangleSampler FWeightedRandomSampler(reader) # FStaticMeshAreaWeightedSectionSampler
def __init__(self, reader: BinaryStream): self.stripFlags = FStripDataFlags(reader, Versions.VER_UE4_STATIC_SKELETAL_MESH_SERIALIZATION_FIX) self.stride = reader.readInt32() self.numVertices = reader.readInt32() if not self.stripFlags.isDataStrippedForServer() and self.numVertices > 0: self.data = reader.readBulkTArray(FColor, reader) else: self.data = []
def __init__(self, reader: BinaryStream): self.Stride = reader.readInt32() self.NumVertices = reader.readInt32() self.Verts = reader.readBulkTArray(FVector, reader)