Example #1
0
void Serialize<Deserializer>(Deserializer& ar, Animation& data, unsigned int version) {
  const ChunkHeader knspHeader = ReadChunkHeader(ar);
  if (knspHeader.id != MakeId('K','N','S','P')) {
    ar.Rewind(chunkHeaderSize);
    return;
  }
  int major;
  ar(major, 1);
  int minor;
  ar(minor, 1);
  data.version = major * 0x100 + minor;
  ar.Skip(knspHeader.size - 2);

  for (;!ar.IsEof();) {
    const ChunkHeader header = ReadChunkHeader(ar);
    switch(header.id) {
    case MakeId('P','I','C','T'):
      data.textureName.resize(header.size);
      ar(&data.textureName[0], header.size); 
      break;
    case MakeId('A','N','I','M'): {
      size_t count;
      ar(count, 4);
      data.sheetList.resize(count);
      for (auto i : data.sheetList) {
        Serialize(ar, i, version);
      }
      break;
    }
    default:
      ar.Skip(header.size);
      break;
    }
  }
}
Example #2
0
void Serialize<Deserializer>(Deserializer& ar, Sheet& data, unsigned int version) {
  const ChunkHeader chunk = ReadChunkHeader(ar);
  if (chunk.id != MakeId('S','H','E','E')) {
    ar.Rewind(chunkHeaderSize);
    return;
  }
  {
    size_t size;
    ar(size, 4);
    data.chipList.resize(size);
    for (auto i : data.chipList) {
      Serialize(ar, i, version);
    }
  }
  {
    size_t size;
    ar(size, 4);
    data.rectList.resize(size);
    for (auto i : data.rectList) {
      Serialize(ar, i, version);
    }
  }
}