LLPartSysCompressedPacket::LLPartSysCompressedPacket() { // default constructor for mDefaults called implicitly/automatically here for(int i = 0; i < MAX_PART_SYS_PACKET_SIZE; i++) { mData[i] = '\0'; } gSetInitDataDefaults(&mDefaults); }
BOOL LLPartSysCompressedPacket::toLLPartInitData(LLPartInitData *out, U32 *bytesUsed) { U32 currByte = 4; gSetInitDataDefaults(out); if(mData[0] & PART_SYS_KILL_P_MASK) { currByte = readKill_p(out, currByte); } if(mData[0] & PART_SYS_BOUNCE_P_MASK) { currByte = readBounce_p(out, currByte); } if(mData[0] & PART_SYS_BOUNCE_B_MASK) { currByte = readBounce_b(out, currByte); } if(mData[0] & PART_SYS_ALPHA_SCALE_DIFF_MASK) { currByte = readAlphaScaleDiffEqn_range(out, currByte); } if(mData[0] & PART_SYS_SCALE_RANGE_MASK) { currByte = readScale_range(out, currByte); } if(mData[0] & PART_SYS_VEL_OFFSET_MASK) { currByte = readVelocityOffset(out, currByte); } if(mData[0] & PART_SYS_M_IMAGE_UUID_MASK) { currByte = readUUID(out, currByte); } if(mData[3] & PART_SYS_BYTE_SPAWN_MASK) { currByte = readSpawn(out, currByte); } if(mData[3] & PART_SYS_BYTE_ENVIRONMENT_MASK) { currByte = readEnvironment(out, currByte); } if(mData[3] & PART_SYS_BYTE_LIFESPAN_MASK) { currByte = readLifespan(out, currByte); } if(mData[3] & PART_SYS_BYTE_DECAY_DAMP_MASK) { currByte = readDecayDamp(out, currByte); } if(mData[3] & PART_SYS_BYTE_WIND_DIFF_MASK) { currByte = readWindDiffusionFactor(out, currByte); } if(mData[2] & PART_SYS_BYTE_3_ALPHA_MASK) { currByte = readAlpha_range(out, currByte); } out->maxParticles = mData[currByte++]; out->initialParticles = mData[currByte++]; U32 flagFlag = 1; // flag indicating which flag bytes are non-zero // yeah, I know, the name sounds funny for(U32 i = 0; i < 8; i++) { flagFlag = 1<<i; if((mData[1] & flagFlag)) { out->mFlags[i] = mData[currByte++]; } } *bytesUsed = currByte; return TRUE; }