BOOL LLPartSysData::unpack(LLDataPacker &dp) { dp.unpackU32(mCRC, "pscrc"); dp.unpackU32(mFlags, "psflags"); dp.unpackU8(mPattern, "pspattern"); dp.unpackFixed(mMaxAge, "psmaxage", FALSE, 8, 8); dp.unpackFixed(mStartAge, "psstartage", FALSE, 8, 8); dp.unpackFixed(mInnerAngle, "psinnerangle", FALSE, 3, 5); dp.unpackFixed(mOuterAngle, "psouterangle", FALSE, 3, 5); dp.unpackFixed(mBurstRate, "psburstrate", FALSE, 8, 8); mBurstRate = llmax(0.01f, mBurstRate); dp.unpackFixed(mBurstRadius, "psburstradius", FALSE, 8, 8); dp.unpackFixed(mBurstSpeedMin, "psburstspeedmin", FALSE, 8, 8); dp.unpackFixed(mBurstSpeedMax, "psburstspeedmax", FALSE, 8, 8); dp.unpackU8(mBurstPartCount, "psburstpartcount"); dp.unpackFixed(mAngularVelocity.mV[0], "psangvelx", TRUE, 8, 7); dp.unpackFixed(mAngularVelocity.mV[1], "psangvely", TRUE, 8, 7); dp.unpackFixed(mAngularVelocity.mV[2], "psangvelz", TRUE, 8, 7); dp.unpackFixed(mPartAccel.mV[0], "psaccelx", TRUE, 8, 7); dp.unpackFixed(mPartAccel.mV[1], "psaccely", TRUE, 8, 7); dp.unpackFixed(mPartAccel.mV[2], "psaccelz", TRUE, 8, 7); dp.unpackUUID(mPartImageID, "psuuid"); dp.unpackUUID(mTargetUUID, "pstargetuuid"); mPartData.unpack(dp); return TRUE; }
BOOL LLGestureStepChat::deserialize(LLDataPacker& dp) { dp.unpackString(mChatText, "chat_text"); dp.unpackU32(mFlags, "flags"); return TRUE; }
BOOL LLGestureStepSound::deserialize(LLDataPacker& dp) { dp.unpackString(mSoundName, "sound_name"); dp.unpackUUID(mSoundAssetID, "asset_id"); dp.unpackU32(mFlags, "flags"); return TRUE; }
BOOL LLGestureStepAnimation::deserialize(LLDataPacker& dp) { dp.unpackString(mAnimName, "anim_name"); // Apparently an earlier version of the gesture code added \r to the end // of the animation names. Get rid of it. JC if (!mAnimName.empty() && mAnimName[mAnimName.length() - 1] == '\r') { // chop the last character mAnimName.resize(mAnimName.length() - 1); } dp.unpackUUID(mAnimAssetID, "asset_id"); dp.unpackU32(mFlags, "flags"); return TRUE; }
BOOL LLPartData::unpack(LLDataPacker &dp) { LLColor4U coloru; dp.unpackU32(mFlags, "pdflags"); dp.unpackFixed(mMaxAge, "pdmaxage", FALSE, 8, 8); dp.unpackColor4U(coloru, "pdstartcolor"); mStartColor.setVec(coloru); dp.unpackColor4U(coloru, "pdendcolor"); mEndColor.setVec(coloru); dp.unpackFixed(mStartScale.mV[0], "pdstartscalex", FALSE, 3, 5); dp.unpackFixed(mStartScale.mV[1], "pdstartscaley", FALSE, 3, 5); dp.unpackFixed(mEndScale.mV[0], "pdendscalex", FALSE, 3, 5); dp.unpackFixed(mEndScale.mV[1], "pdendscaley", FALSE, 3, 5); return TRUE; }
BOOL LLGestureStepWait::deserialize(LLDataPacker& dp) { dp.unpackF32(mWaitSeconds, "wait_seconds"); dp.unpackU32(mFlags, "flags"); return TRUE; }
BOOL LLMultiGesture::deserialize(LLDataPacker& dp) { S32 version; dp.unpackS32(version, "version"); if (version != GESTURE_VERSION) { llwarns << "Bad LLMultiGesture version " << version << " should be " << GESTURE_VERSION << llendl; return FALSE; } dp.unpackU8(mKey, "key"); dp.unpackU32(mMask, "mask"); dp.unpackString(mTrigger, "trigger"); dp.unpackString(mReplaceText, "replace"); S32 count; dp.unpackS32(count, "step_count"); if (count < 0) { llwarns << "Bad LLMultiGesture step count " << count << llendl; return FALSE; } S32 i; for (i = 0; i < count; ++i) { S32 type; dp.unpackS32(type, "step_type"); EStepType step_type = (EStepType)type; switch(step_type) { case STEP_ANIMATION: { LLGestureStepAnimation* step = new LLGestureStepAnimation(); BOOL ok = step->deserialize(dp); if (!ok) return FALSE; mSteps.push_back(step); break; } case STEP_SOUND: { LLGestureStepSound* step = new LLGestureStepSound(); BOOL ok = step->deserialize(dp); if (!ok) return FALSE; mSteps.push_back(step); break; } case STEP_CHAT: { LLGestureStepChat* step = new LLGestureStepChat(); BOOL ok = step->deserialize(dp); if (!ok) return FALSE; mSteps.push_back(step); break; } case STEP_WAIT: { LLGestureStepWait* step = new LLGestureStepWait(); BOOL ok = step->deserialize(dp); if (!ok) return FALSE; mSteps.push_back(step); break; } default: { llwarns << "Bad LLMultiGesture step type " << type << llendl; return FALSE; } } } return TRUE; }