public void Register(string key, Accessor accessor) { if (_accessors.TryGetValue(key, out var existingStream)) { if (accessor.Dimensions != existingStream.Dimensions) { throw new NotImplementedException( $"Inconsistent dimensions for {key} stream are not supported yet ({accessor.Dimensions} != {existingStream.Dimensions})"); } } else { var meshStream = new MeshStream { Dimensions = accessor.Dimensions }; switch (accessor.Dimensions) { case DimensionType.SCALAR: meshStream.Stream = new ListMeshStream <float>(StreamConverterFactory.Default); break; case DimensionType.VEC2: meshStream.Stream = new ListMeshStream <Vector2>(StreamConverterFactory.Default); break; case DimensionType.VEC3: meshStream.Stream = new ListMeshStream <Vector3>(StreamConverterFactory.Default); break; case DimensionType.VEC4: meshStream.Stream = new ListMeshStream <Vector4>(StreamConverterFactory.Default); break; default: throw new NotImplementedException($"{accessor.Dimensions} not supported yet."); } _accessors.Add(key, meshStream); } }
/// <inheritdoc /> public void Dispose() { MeshStream?.Dispose(); }