public override Chunk parse(BinaryReader reader) { ShapeNodeChunk chunk = new ShapeNodeChunk(); chunk.bytesInChunk = reader.ReadInt32(); chunk.bytesInChildren = reader.ReadInt32(); chunk.nodeId = reader.ReadInt32(); chunk.attributes = MagicaDictionary.readDictionary(reader); int numberOfChildNodes = reader.ReadInt32(); for (int i = 0; i < numberOfChildNodes; i++) { MagicaModel model = new MagicaModel(); model.modelId = reader.ReadInt32(); model.attributes = MagicaDictionary.readDictionary(reader); chunk.childModels.Add(model); } long currentPosition = reader.BaseStream.Position; while (reader.BaseStream.Position < currentPosition + chunk.bytesInChildren) { chunk.children.Add(Chunk.createChunk(reader)); } return(chunk); }
public override Chunk parse(BinaryReader reader) { TransformNodeChunk chunk = new TransformNodeChunk(); chunk.bytesInChunk = reader.ReadInt32(); chunk.bytesInChildren = reader.ReadInt32(); chunk.nodeId = reader.ReadInt32(); chunk.attributes = MagicaDictionary.readDictionary(reader); chunk.childNodeId = reader.ReadInt32(); chunk.reservedId = reader.ReadInt32(); chunk.layerId = reader.ReadInt32(); chunk.numberOfFrames = reader.ReadInt32(); if (chunk.numberOfFrames == 1) { chunk.frameAttributes.Add(MagicaDictionary.readDictionary(reader)); } long currentPosition = reader.BaseStream.Position; while (reader.BaseStream.Position < currentPosition + chunk.bytesInChildren) { chunk.children.Add(Chunk.createChunk(reader)); } return(chunk); }