Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- // Solution 1: Usage
- let string = matrix.serialized
- let newMatrix = matrix_float4x4(string)
- // Solution 2: Usage
- let string = serialize(matrix)
- let newMatrix = deserializeMatrix(string)
- // Solution 1: Implementation
- extension simd_float4 {
- var serialized: String {
- return [x, y, z, w].map(String.init).joined(separator: ",")
- }
- init(_ string: String) {
- let points = string.split(separator: ",").flatMap(Float.init)
- self.init(points)
- }
- }
- extension matrix_float4x4 {
- var serialized: String {
- let cs = [columns.0, columns.1, columns.2, columns.3]
- return cs.map { $0.serialized }.joined(separator: "|")
- }
- init(_ string: String) {
- let columns = string.split(separator: "|").map(String.init).map(simd_float4.init)
- self.init(columns)
- }
- }
- // Solution 2: Implementation
- func serialize(_ sf: simd_float4) -> String {
- let points = [sf.x, sf.y, sf.z, sf.w]
- return points.map(String.init).joined(separator: ",")
- }
- func serialize(_ m: matrix_float4x4) -> String {
- let columns = [m.columns.0, m.columns.1, m.columns.2, m.columns.3]
- return columns.map(serialize).joined(separator: "|")
- }
- func deserializeFloat4(_ str: String) -> simd_float4 {
- let points = str.split(separator: ",").flatMap(Float.init)
- return simd_float4(points)
- }
- func deserializeMatrix(_ str: String) -> matrix_float4x4 {
- let columns = str.split(separator: "|").map(String.init).map(deserializeFloat4)
- return matrix_float4x4(columns)
- }
Add Comment
Please, Sign In to add comment