Exemple #1
0
    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);
    }
Exemple #2
0
    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);
    }