Skip to content

Commit 0344b8f

Browse files
committed
reinforced animation accessors validation
1 parent e16aad1 commit 0344b8f

File tree

2 files changed

+9
-8
lines changed

2 files changed

+9
-8
lines changed

src/SharpGLTF.Core/Schema2/gltf.Accessors.cs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -576,14 +576,14 @@ internal void ValidateMatrices4x3(VALIDATIONCTX validate, bool mustInvert = true
576576

577577
internal void ValidateAnimationInput(VALIDATIONCTX validate)
578578
{
579-
SourceBufferView.ValidateBufferUsagePlainData(validate);
579+
SourceBufferView.ValidateBufferUsagePlainData(validate, false); // as per glTF specification, animation accessors must not have ByteStride
580580

581581
validate.IsAnyOf(nameof(Dimensions), Dimensions, DimensionType.SCALAR);
582582
}
583583

584584
internal void ValidateAnimationOutput(VALIDATIONCTX validate)
585585
{
586-
SourceBufferView.ValidateBufferUsagePlainData(validate);
586+
SourceBufferView.ValidateBufferUsagePlainData(validate, false); // as per glTF specification, animation accessors must not have ByteStride
587587

588588
validate.IsAnyOf(nameof(Dimensions), Dimensions, DimensionType.SCALAR, DimensionType.VEC3, DimensionType.VEC4);
589589
}

src/SharpGLTF.Core/Schema2/gltf.BufferView.cs

Lines changed: 7 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -245,16 +245,17 @@ internal void ValidateBufferUsageGPU(Validation.ValidationContext validate, Buff
245245
if (this._target.HasValue) validate.EnumsAreEqual(nameof(_target), _target.Value, usingMode);
246246
}
247247

248-
internal void ValidateBufferUsagePlainData(Validation.ValidationContext validate)
249-
{
250-
/*
251-
if (this._byteStride.HasValue)
248+
internal void ValidateBufferUsagePlainData(Validation.ValidationContext validate, bool supportsStride = true)
249+
{
250+
if (this._byteStride.HasValue && !supportsStride)
252251
{
253-
if (result.TryFixLinkOrError("BufferView", "Unexpected ByteStride found. Expected null"))
252+
if (validate.TryFix)
254253
{
255254
this._byteStride = null;
256255
}
257-
}*/
256+
257+
validate.IsUndefined(nameof(_byteStride), this._byteStride);
258+
}
258259

259260
validate = validate.GetContext(this);
260261

0 commit comments

Comments
 (0)