diff --git a/src/mbgl/particle/field/field_data_adapter.cpp b/src/mbgl/particle/field/field_data_adapter.cpp index cb15372f0..2d04613cc 100644 --- a/src/mbgl/particle/field/field_data_adapter.cpp +++ b/src/mbgl/particle/field/field_data_adapter.cpp @@ -90,8 +90,9 @@ ParticleFieldAdapterResult ParticleFieldDataAdapter::decode(const ParticleFieldD } ParticleFieldAdapterResult ParticleFieldDataAdapter::decode(const ParticleFieldDescriptor& d, const std::vector& bytes, uint64_t generation) { - if (!d.generation || !generation || d.generation != generation || d.layout != "interleaved-uv" || d.encoding != "float32-le" || - (d.stride && d.stride != 2 * sizeof(float)) || !std::isfinite(d.noData)) + if (d.layout != "interleaved-uv" || d.encoding != "float32-le") + return reject(ParticleFieldAdapterError::UnsupportedFormat, "legacy v1 only supports interleaved-uv float32-le"); + if (!d.generation || !generation || d.generation != generation || (d.stride && d.stride != 2 * sizeof(float)) || !std::isfinite(d.noData)) return reject(ParticleFieldAdapterError::InvalidDescriptor, "legacy v1 descriptor is invalid"); ParticleFieldDescriptor normalized = d; normalized.vector = ParticleFieldPlaneDescriptor{.byteLength = d.byteLength, .encoding = d.encoding, .layout = d.layout, .noData = d.noData}; diff --git a/src/mbgl/particle/field/offline_fixture_particle_adapter.cpp b/src/mbgl/particle/field/offline_fixture_particle_adapter.cpp index d6dcfcb61..e0efe12c4 100644 --- a/src/mbgl/particle/field/offline_fixture_particle_adapter.cpp +++ b/src/mbgl/particle/field/offline_fixture_particle_adapter.cpp @@ -158,6 +158,7 @@ ParticleFieldSnapshot OfflineFixtureParticleAdapter::load(const std::string& fix descriptor.fieldType = member(metadata, "fieldType").GetString(); descriptor.displayDomain = member(metadata, "displayDomain").GetString(); descriptor.generation = generation; + descriptor.validTime = member(metadata, "timeIndex").GetUint64() + 1; descriptor.width = grid["width"].GetUint(); descriptor.height = grid["height"].GetUint(); descriptor.west = bounds["west"].GetDouble(); diff --git a/test/style/source.test.cpp b/test/style/source.test.cpp index c5e79f497..cac71a934 100644 --- a/test/style/source.test.cpp +++ b/test/style/source.test.cpp @@ -289,6 +289,9 @@ TEST(Source, ParticleFieldDataAdapterAcceptsNeutralDescriptor) { ASSERT_TRUE(result); ASSERT_TRUE(result.snapshot); EXPECT_EQ(result.snapshot->fieldID, descriptor.fieldID); + EXPECT_EQ(result.snapshot->vectorSemantics, particle::VectorSemantics::Velocity); + EXPECT_TRUE(result.snapshot->hasVector()); + EXPECT_FALSE(result.snapshot->hasScalar()); EXPECT_EQ(result.error, particle::ParticleFieldAdapterError::None); }