core: preserve fixture times in generic snapshots
This commit is contained in:
@@ -90,8 +90,9 @@ ParticleFieldAdapterResult ParticleFieldDataAdapter::decode(const ParticleFieldD
|
||||
}
|
||||
|
||||
ParticleFieldAdapterResult ParticleFieldDataAdapter::decode(const ParticleFieldDescriptor& d, const std::vector<char>& 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};
|
||||
|
||||
@@ -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();
|
||||
|
||||
@@ -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);
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user