示例#1
0
        protected List <T> readAccessor <T>(StreamIO stream, GltfAccessor.ComponentTypeEnum componentType, int count, int nargs)
        {
            List <T> vecs = new List <T>();

            for (int i = 0; i < count; i++)
            {
                List <object> args = new List <object>();

                for (int j = 0; j < nargs; j++)
                {
                    switch (componentType)
                    {
                    case GltfAccessor.ComponentTypeEnum.BYTE:
                    case GltfAccessor.ComponentTypeEnum.UNSIGNED_BYTE:
                        args.Add(stream.ReadByte());
                        break;

                    case GltfAccessor.ComponentTypeEnum.SHORT:
                        args.Add(stream.ReadShort());
                        break;

                    case GltfAccessor.ComponentTypeEnum.UNSIGNED_SHORT:
                        args.Add(stream.ReadUShort());
                        break;

                    case GltfAccessor.ComponentTypeEnum.UNSIGNED_INT:
                        args.Add(stream.ReadUInt());
                        break;

                    case GltfAccessor.ComponentTypeEnum.FLOAT:
                        args.Add(stream.ReadSingle());
                        break;

                    default:
                        throw new Exception();
                    }
                }

                vecs.Add((T)Activator.CreateInstance(typeof(T), args.ToArray()));
            }

            return(vecs);
        }