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); }
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); }
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); }
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); }
public VoxReader(Stream s, IVoxLoader loader) { if (loader == null) { throw new ArgumentNullException(nameof(loader)); } Origin = s; Loader = loader; }
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); }
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); }
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; }
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; }
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); }
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); }
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); }
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); }
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); }
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); }
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); }
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); }
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); }