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);
            }
        }
Esempio n. 2
0
 /// <inheritdoc />
 public void Dispose()
 {
     MeshStream?.Dispose();
 }