# HG changeset patch # User Sascha L. Teichmann # Date 1707697042 -3600 # Node ID c33a5354328d8724a046b13a64ab211c51cecc4f # Parent 0ee8ace01b60b3d2cd3b3d2a1a127e47e14ffed4 Add stubs for de/serialize v2 meshes. diff -r 0ee8ace01b60 -r c33a5354328d pkg/mesh/meshserialize.go --- a/pkg/mesh/meshserialize.go Mon Feb 12 01:02:53 2024 +0100 +++ b/pkg/mesh/meshserialize.go Mon Feb 12 01:17:22 2024 +0100 @@ -18,7 +18,6 @@ "bytes" "compress/gzip" "encoding/binary" - "errors" "fmt" "io" ) @@ -51,7 +50,6 @@ } version = coalesceVersion(version) - if err := s.serializeVn(w, version); err != nil { return nil, 0, err } @@ -64,27 +62,19 @@ } func (s *STRTree) serializeVn(w io.Writer, version int) error { - - if version > Version { - return fmt.Errorf( - "cannot serialize mesh version %d. Highest supported version %d", - version, Version) + switch version { + case 1: + return s.serializeV1(w) + case 2: + return s.serializeV2(w) + default: + return fmt.Errorf("cannot serialize mesh version %d", version) } - - return s.serializeV1(w) } // FromBytes restores a STRTree from a binary representation. func (s *STRTree) FromBytes(data []byte, version int) error { - version = coalesceVersion(version) - - if version > Version { - return fmt.Errorf( - "cannot deserialize mesh version %d. Highest supported version %d", - version, Version) - } - r, err := gzip.NewReader(bytes.NewReader(data)) if err != nil { return err @@ -102,7 +92,7 @@ if bytes.HasPrefix(header, []byte(magicHeader)) { realVersion := int(binary.LittleEndian.Uint32(header[4:])) if realVersion != version { - return fmt.Errorf("sounding result version mismatch: Have %d expect %d", + return fmt.Errorf("mesh version mismatch: Have %d expect %d", realVersion, version) } return s.deserializeVn(r, realVersion) @@ -112,9 +102,12 @@ } func (s *STRTree) deserializeVn(r *bufio.Reader, version int) error { - if version == 1 { + switch version { + case 1: return s.deserializeV1(r) + case 2: + return s.deserializeV2(r) + default: + return fmt.Errorf("cannot deserialize mesh version %d", version) } - // TODO: Implement me! - return errors.New("not implemented, yet") } diff -r 0ee8ace01b60 -r c33a5354328d pkg/mesh/meshserialize_v2.go --- a/pkg/mesh/meshserialize_v2.go Mon Feb 12 01:02:53 2024 +0100 +++ b/pkg/mesh/meshserialize_v2.go Mon Feb 12 01:17:22 2024 +0100 @@ -14,12 +14,26 @@ package mesh import ( + "bufio" "cmp" + "errors" + "io" "math" "slices" "sort" ) +func (s *STRTree) serializeV2(w io.Writer) error { + // TODO: implement me! + return errors.New("not implemented, yet") +} + +func (s *STRTree) deserializeV2(r *bufio.Reader) error { + // TODO: implement me! + return errors.New("not implemented, yet") +} + +// optimizeForSerializationV2 prepares the mesh to be stored in V2. func (s *STRTree) optimizeForSerializationV2() { s.removeUnusedTriangles() s.sortVertices()