//---------------------------------------------------------------------------- void KeyframeController::Save (OutStream& target) const { WM5_BEGIN_DEBUG_STREAM_SAVE(target); TransformController::Save(target); target.Write(mNumCommonTimes); if (mNumCommonTimes > 0) { target.WriteN(mNumCommonTimes, mCommonTimes); target.WriteAggregateW(mNumTranslations, mTranslations); target.WriteAggregateW(mNumRotations, mRotations); target.WriteW(mNumScales, mScales); } else { target.WriteW(mNumTranslations, mTranslationTimes); target.WriteAggregateN(mNumTranslations, mTranslations); target.WriteW(mNumRotations, mRotationTimes); target.WriteAggregateN(mNumRotations, mRotations); target.WriteW(mNumScales, mScaleTimes); target.WriteN(mNumScales, mScales); } WM5_END_DEBUG_STREAM_SAVE(KeyframeController, target); }
//---------------------------------------------------------------------------- void SkinController::Save (OutStream& target) const { PX2_BEGIN_DEBUG_STREAM_SAVE(target); Controller::Save(target); PX2_VERSION_SAVE(target); target.Write(mNumVertices); target.Write(mNumBones); int numWeightsOffsets = mNumVertices*mNumBones; target.WriteN(numWeightsOffsets, mWeights[0]); target.WriteAggregateN(numWeightsOffsets, mOffsets[0]); target.WritePointerN(mNumBones, mBones); target.WriteAggregateN(mNumBones, mTMMatrixs); PX2_END_DEBUG_STREAM_SAVE(SkinController, target); }
//---------------------------------------------------------------------------- void MorphController::Save (OutStream& target) const { WM5_BEGIN_DEBUG_STREAM_SAVE(target); Controller::Save(target); target.Write(mNumVertices); target.Write(mNumTargets); target.Write(mNumKeys); int numTotalVertices = mNumVertices*mNumTargets; target.WriteAggregateN(numTotalVertices, mVertices[0]); target.WriteN(mNumKeys, mTimes); int numTotalWeights = mNumKeys*(mNumTargets - 1); target.WriteN(numTotalWeights, mWeights[0]); WM5_END_DEBUG_STREAM_SAVE(MorphController, target); }
//---------------------------------------------------------------------------- void Shader::Save (OutStream& target) const { WM5_BEGIN_DEBUG_STREAM_SAVE(target); Object::Save(target); target.WriteStringW(mNumInputs, mInputName); target.WriteEnumN(mNumInputs, mInputType); target.WriteEnumN(mNumInputs, mInputSemantic); target.WriteStringW(mNumOutputs, mOutputName); target.WriteEnumN(mNumOutputs, mOutputType); target.WriteEnumN(mNumOutputs, mOutputSemantic); target.WriteStringW(mNumConstants, mConstantName); target.WriteN(mNumConstants, mNumRegistersUsed); target.WriteStringW(mNumSamplers, mSamplerName); target.WriteEnumN(mNumSamplers, mSamplerType); target.WriteEnumN(mNumSamplers, mFilter); target.WriteEnumN(mNumSamplers, mCoordinate[0]); target.WriteEnumN(mNumSamplers, mCoordinate[1]); target.WriteEnumN(mNumSamplers, mCoordinate[2]); target.WriteN(mNumSamplers, mLodBias); target.WriteN(mNumSamplers, mAnisotropy); target.WriteAggregateN(mNumSamplers, mBorderColor); // On load, test this against MAX_PROFILES just in case a user increases // MAX_PROFILES and tries to load old data sets. target.Write((int)MAX_PROFILES); target.WriteBool(mProfileOwner); if (mProfileOwner) { for (int i = 0; i < MAX_PROFILES; ++i) { target.WriteN(mNumConstants, mBaseRegister[i]); target.WriteN(mNumSamplers, mTextureUnit[i]); target.WriteString(*mProgram[i]); } } WM5_END_DEBUG_STREAM_SAVE(Shader, target); }