IOResult ParticleChannelInt::Load(ILoad* iload) { ULONG nb; IOResult res; int num, v; Interface_ID id; bool isg; while (IO_OK==(res=iload->OpenChunk())) { switch(iload->CurChunkID()) { case IParticleChannel::kChunkCount: res=iload->Read(&num, sizeof(int), &nb); if (res == IO_OK) _data().SetCount(num); break; case IParticleChannel::kChunkData: num = data().Count(); DbgAssert(num > 0); res=iload->Read(_data().Addr(0), sizeof(int)*num, &nb); break; case IParticleChannel::kChunkGlobalCount: res=iload->Read(&num, sizeof(int), &nb); if (res == IO_OK) _globalCount() = num; break; case IParticleChannel::kChunkGlobalValue: res=iload->Read(&v, sizeof(int), &nb); if (res == IO_OK) _globalValue() = v; break; case IParticleChannel::kChunkReadID: res=iload->Read(&id, sizeof(Interface_ID), &nb); if (res == IO_OK) SetReadID(id); break; case IParticleChannel::kChunkWriteID: res=iload->Read(&id, sizeof(Interface_ID), &nb); if (res == IO_OK) SetWriteID(id); break; case IParticleChannel::kChunkTransferable: res=iload->Read(&isg, sizeof(bool), &nb); if (res == IO_OK) SetTransferable(isg); break; case IParticleChannel::kChunkPrivate: res=iload->Read(&m_isPrivate, sizeof(bool), &nb); break; case IParticleChannel::kChunkActionHandle: res=iload->Read(&m_creatorHandle, sizeof(ULONG), &nb); break; case IParticleChannel::kChunkValue1: res=iload->Read(&isg, sizeof(bool), &nb); if (res == IO_OK) _isGlobal() = isg; break; } iload->CloseChunk(); if (res != IO_OK) return res; } return IO_OK; }
IOResult ParticleChannelMap::Load(ILoad* iload) { IOResult res; Interface_ID id; ULONG nb; bool isg; while ((res = iload->OpenChunk()) == IO_OK) { switch(iload->CurChunkID()) { case kChunkUVVertChannel: if (chanUVVert() == NULL) _chanUVVert() = new ParticleChannelTabUVVert(); if (chanUVVert() != NULL) res = _chanUVVert()->Load(iload); else res = IO_ERROR; break; case kChunkTVFaceChannel: if (chanTVFace() == NULL) _chanTVFace() = new ParticleChannelTabTVFace(); if (chanTVFace() != NULL) res = _chanTVFace()->Load(iload); else res = IO_ERROR; break; case IParticleChannel::kChunkReadID: res = iload->Read(&id, sizeof(Interface_ID), &nb); if (res == IO_OK) SetReadID(id); break; case IParticleChannel::kChunkWriteID: res = iload->Read(&id, sizeof(Interface_ID), &nb); if (res == IO_OK) SetWriteID(id); break; case IParticleChannel::kChunkTransferable: res=iload->Read(&isg, sizeof(bool), &nb); if (res == IO_OK) SetTransferable(isg); break; case IParticleChannel::kChunkPrivate: res=iload->Read(&m_isPrivate, sizeof(bool), &nb); break; case IParticleChannel::kChunkActionHandle: res=iload->Read(&m_creatorHandle, sizeof(ULONG), &nb); break; } iload->CloseChunk(); if (res != IO_OK) return res; } return IO_OK; }