Пример #1
0
        internal override int Read(BinaryReader br, IVoxLoader loader)
        {
            int readSize = base.Read(br, loader);

            Int32 id = br.ReadInt32();
            Dictionary <string, byte[]> attributes = GenericsReader.ReadDict(br, ref readSize);

            Int32 childNodeId = br.ReadInt32();
            Int32 reservedId  = br.ReadInt32();
            Int32 layerId     = br.ReadInt32();
            Int32 numOfFrames = br.ReadInt32();

            readSize += sizeof(Int32) * 5;

            Dictionary <string, byte[]>[] framesAttributes = new Dictionary <string, byte[]> [numOfFrames];

            for (int fnum = 0; fnum < numOfFrames; fnum++)
            {
                framesAttributes[fnum] = GenericsReader.ReadDict(br, ref readSize);

                /*int[] rotationMatrix = GenericsReader.ReadRotation(br, ref readSize);
                 * int[] translationVector = { 0, 0, 0 };
                 * translationVector[0] = br.ReadInt32();
                 * translationVector[1] = br.ReadInt32();
                 * translationVector[2] = br.ReadInt32();*/
                // TODO: Add frame info
            }

            // TODO: Notify the IVoxLoader of the transform node
            loader.NewTransformNode(id, childNodeId, layerId, framesAttributes);
            return(readSize);
        }
Пример #2
0
        internal override int Read(System.IO.BinaryReader br, IVoxLoader loader)
        {
            int readSize = base.Read(br, loader);

            byte[,] palette = new byte[256, 4];
            for (int i = 0; i <= 254; i++)
            {
                byte r = br.ReadByte();
                byte g = br.ReadByte();
                byte b = br.ReadByte();
                byte a = br.ReadByte();

                palette[i, 0] = r;
                palette[i, 1] = g;
                palette[i, 2] = b;
                palette[i, 3] = a;
                readSize     += 4;
            }

            br.ReadBytes(4);
            readSize += 4;

            loader.LoadPalette(palette);
            return(readSize);
        }
Пример #3
0
        internal override int Read(BinaryReader br, IVoxLoader loader)
        {
            int readSize = base.Read(br, loader);

            Int32 x = br.ReadInt32();
            Int32 z = br.ReadInt32();
            Int32 y = br.ReadInt32();

            readSize += sizeof(Int32) * 3;

            string id = Chunk.ReadChunkId(br);

            readSize += 4;
            if (id != Model.ID)
            {
                throw new IOException("Can't read VOX file : XYZI chunk expected (was " + id + ")");            //changed InvalidDataException for IOException for Unity compatibility
            }
            Model model = Chunk.CreateChunk(id) as Model;

            model.Init(x, y, z);
            readSize += model.Read(br, loader);

            loader.LoadModel(x, y, z, model.Indexes);
            return(readSize);
        }
Пример #4
0
        internal override int Read(System.IO.BinaryReader br, IVoxLoader loader)
        {
            int readSize = base.Read(br, loader);

            br.ReadBytes(Size);
            br.ReadBytes(ChildrenSize);
            return(readSize + Size + ChildrenSize);
        }
Пример #5
0
        public VoxReader(Stream s, IVoxLoader loader)
        {
            if (loader == null)
            {
                throw new ArgumentNullException(nameof(loader));
            }

            Origin = s;
            Loader = loader;
        }
Пример #6
0
        internal override int Read(BinaryReader br, IVoxLoader loader)
        {
            int readSize = base.Read(br, loader);

            Int32 id = br.ReadInt32();
            Dictionary <string, byte[]> attributes = GenericsReader.ReadDict(br, ref readSize);

            readSize += sizeof(Int32);

            loader.NewMaterial(id, attributes);
            return(readSize);
        }
Пример #7
0
        internal override int Read(System.IO.BinaryReader br, IVoxLoader loader)
        {
            int readSize = base.Read(br, loader);

            Int32 numModels = br.ReadInt32();

            readSize += sizeof(Int32);

            loader.SetModelCount(numModels);

            return(readSize);
        }
Пример #8
0
 public VoxReader(string path, IVoxLoader loader)
 {
     if (!File.Exists(path))
     {
         throw new FileNotFoundException("Can't open vox file : file not found", path);
     }
     if (loader == null)
     {
         throw new ArgumentNullException("loader");                 //changed nameof for direct variable name for Unity compatibility
     }
     Path   = path;
     Loader = loader;
 }
Пример #9
0
        public VoxReader(string path, IVoxLoader loader)
        {
            if (!File.Exists(path))
            {
                throw new FileNotFoundException("Can't open vox file : file not found", path);
            }
            if (loader == null)
            {
                throw new ArgumentNullException(nameof(loader));
            }

            Path   = path;
            Loader = loader;
        }
Пример #10
0
        internal virtual int Read(BinaryReader br, IVoxLoader loader)
        {
            if (br == null)
            {
                throw new ArgumentNullException("br");             //changed nameof for direct variable name for Unity compatibility
            }
            if (loader == null)
            {
                throw new ArgumentNullException("loader");                 //changed nameof for direct variable name for Unity compatibility
            }
            _Size         = br.ReadInt32();
            _ChildrenSize = br.ReadInt32();

            return(sizeof(Int32) * 2);
        }
Пример #11
0
        internal override int Read(System.IO.BinaryReader br, IVoxLoader loader)
        {
            int readSize = base.Read(br, loader);

            Int32  paletteId  = br.ReadInt32();
            Int32  type       = br.ReadInt32();
            float  weight     = br.ReadSingle();
            UInt32 property   = br.ReadUInt32();
            float  normalized = br.ReadSingle();

            readSize += sizeof(Int32) * 2 + sizeof(UInt32) + sizeof(float) * 2;

            loader.SetMaterialOld(paletteId, (MaterialTypes)type, weight, (PropertyBits)property, normalized);

            return(readSize);
        }
Пример #12
0
        internal virtual int Read(BinaryReader br, IVoxLoader loader)
        {
            if (br == null)
            {
                throw new ArgumentNullException(nameof(br));
            }
            if (loader == null)
            {
                throw new ArgumentNullException(nameof(loader));
            }

            _Size         = br.ReadInt32();
            _ChildrenSize = br.ReadInt32();

            return(sizeof(Int32) * 2);
        }
Пример #13
0
        internal override int Read(BinaryReader br, IVoxLoader loader)
        {
            int readSize = base.Read(br, loader);

            Int32 numVoxels = br.ReadInt32();

            readSize += sizeof(Int32);

            for (int i = 0; i < numVoxels; i++)
            {
                byte x     = br.ReadByte();
                byte z     = br.ReadByte();
                byte y     = br.ReadByte();
                byte index = br.ReadByte();
                _Indexes[x, y, z] = index;
                readSize         += 4;
            }
            return(readSize);
        }
Пример #14
0
        internal override int Read(BinaryReader br, IVoxLoader loader)
        {
            int readSize = base.Read(br, loader);

            if (Size > 0)
            {
                throw new IOException("MAIN chunk size is expected to be 0 (was " + Size + ")"); //changed InvalidDataException for IOException for Unity compatibility
            }

            int childrenReadSize = 0;

            while (childrenReadSize < ChildrenSize)
            {
                string id    = Chunk.ReadChunkId(br);
                Chunk  child = Chunk.CreateChunk(id);
                childrenReadSize += child.Read(br, loader) + 4;
            }

            return(readSize + Size + ChildrenSize);
        }
Пример #15
0
        internal override int Read(BinaryReader br, IVoxLoader loader)
        {
            int readSize = base.Read(br, loader);

            Int32 id = br.ReadInt32();
            Dictionary <string, byte[]> attributes = GenericsReader.ReadDict(br, ref readSize);

            Int32 numChildrenNodes = br.ReadInt32();

            Int32[] childrenIds = new Int32[numChildrenNodes];
            readSize += sizeof(Int32) * (numChildrenNodes + 2);

            for (int cnum = 0; cnum < numChildrenNodes; cnum++)
            {
                childrenIds[cnum] = br.ReadInt32();
            }

            loader.NewGroupNode(id, attributes, childrenIds);
            return(readSize);
        }
Пример #16
0
        internal override int Read(BinaryReader br, IVoxLoader loader)
        {
            int readSize = base.Read(br, loader);

            if (Size > 0)
            {
                throw new InvalidDataException($"MAIN chunk size is expected to be 0 (was {Size}");
            }

            int childrenReadSize = 0;

            while (childrenReadSize < ChildrenSize)
            {
                string id    = Chunk.ReadChunkId(br);
                Chunk  child = Chunk.CreateChunk(id);
                childrenReadSize += child.Read(br, loader) + 4;
            }

            return(readSize + Size + ChildrenSize);
        }
Пример #17
0
        internal override int Read(System.IO.BinaryReader br, IVoxLoader loader)
        {
            int readSize = base.Read(br, loader);

            UInt32[] palette = new UInt32[256];
            for (int i = 0; i <= 254; i++)
            {
                byte r = br.ReadByte();
                byte g = br.ReadByte();
                byte b = br.ReadByte();
                byte a = br.ReadByte();

                palette[i + 1] = BitConverter.ToUInt32(new byte[] { b, g, r, a }, 0);
                readSize      += 4;
            }

            br.ReadBytes(4);
            readSize += 4;

            loader.LoadPalette(palette);
            return(readSize);
        }
Пример #18
0
        internal override int Read(BinaryReader br, IVoxLoader loader)
        {
            int readSize = base.Read(br, loader);

            Int32 id = br.ReadInt32();
            Dictionary <string, byte[]> attributes = GenericsReader.ReadDict(br, ref readSize);

            Int32 numModels = br.ReadInt32();

            readSize += sizeof(Int32) * 2;

            Int32[] modelIds = new Int32[numModels];
            Dictionary <string, byte[]>[] modelsAttributes = new Dictionary <string, byte[]> [numModels];

            for (int mnum = 0; mnum < numModels; mnum++)
            {
                modelIds[mnum]         = br.ReadInt32();
                modelsAttributes[mnum] = GenericsReader.ReadDict(br, ref readSize);
                readSize += sizeof(Int32);
            }

            loader.NewShapeNode(id, attributes, modelIds, modelsAttributes);
            return(readSize);
        }