public override void Deserialize(BinaryReader R) { base.Deserialize(R); int version = R.ReadInt32(); mVersion = version; if (version == 11) { mItemType = (EItemType)R.ReadInt32(); mFriendlyName = R.ReadString(); mFlavourText = R.ReadString(); mWidth = R.ReadInt32(); mLength = R.ReadInt32(); mTiles = new STile[mWidth * 2, mLength * 2]; for (int iX = 0; iX < mWidth * 2; ++iX) { for (int iY = 0; iY < mLength * 2; ++iY) { mTiles[iX, iY].mSolid = R.ReadBoolean(); } } mDurability = R.ReadInt32(); mCost = R.ReadInt32(); mValue = R.ReadSingle(); mStress = R.ReadSingle(); mAreaOfEffect = R.ReadSingle(); mSheetsInMax = R.ReadInt32(); mSheetsOutMax = R.ReadInt32(); string modelName = R.ReadString(); if (modelName != "") { mPMAsset = CGame.AssetManager.GetAsset <CModelAsset>(modelName); } mPMPosition = CUtility.ReadVec3(R); mPMRotation = CUtility.ReadVec3(R); modelName = R.ReadString(); if (modelName != "") { mSMAsset = CGame.AssetManager.GetAsset <CModelAsset>(modelName); } mSMPosition = CUtility.ReadVec3(R); mSMRotation = CUtility.ReadVec3(R); int usageSlotCount = R.ReadInt32(); mUsageSlots.Clear(); for (int i = 0; i < usageSlotCount; ++i) { CUsageSlot s = new CUsageSlot(); s.mEntryPosition = CUtility.ReadVec3(R); s.mEntryRotation = CUtility.ReadVec3(R); s.mEntrySize = CUtility.ReadVec3(R); s.mUsePosition = CUtility.ReadVec3(R); s.mUseRotation = CUtility.ReadVec3(R); mUsageSlots.Add(s); } // Desk mPaperInPosition = CUtility.ReadVec3(R); mPaperInRotation = CUtility.ReadVec3(R); mPaperOutPosition = CUtility.ReadVec3(R); mPaperOutRotation = CUtility.ReadVec3(R); // Icon mIconCameraPostion = CUtility.ReadVec3(R); mIconViewDirection = (EViewDirection)R.ReadInt32(); } else { Debug.LogError("Can't load item asset '" + mName + "' with version " + version); } }
public override void Serialize(BinaryWriter W) { base.Serialize(W); W.Write(VERSION); W.Write((int)mItemType); W.Write(mFriendlyName); W.Write(mFlavourText); W.Write(mWidth); W.Write(mLength); for (int iX = 0; iX < mWidth * 2; ++iX) { for (int iY = 0; iY < mLength * 2; ++iY) { W.Write(mTiles[iX, iY].mSolid); } } W.Write(mDurability); W.Write(mCost); W.Write(mValue); W.Write(mStress); W.Write(mAreaOfEffect); W.Write(mSheetsInMax); W.Write(mSheetsOutMax); if (mPMAsset == null) { W.Write(""); } else { W.Write(mPMAsset.mName); } CUtility.WriteVec3(W, mPMPosition); CUtility.WriteVec3(W, mPMRotation); if (mSMAsset == null) { W.Write(""); } else { W.Write(mSMAsset.mName); } CUtility.WriteVec3(W, mSMPosition); CUtility.WriteVec3(W, mSMRotation); W.Write(mUsageSlots.Count); for (int i = 0; i < mUsageSlots.Count; ++i) { CUsageSlot s = mUsageSlots[i]; CUtility.WriteVec3(W, s.mEntryPosition); CUtility.WriteVec3(W, s.mEntryRotation); CUtility.WriteVec3(W, s.mEntrySize); CUtility.WriteVec3(W, s.mUsePosition); CUtility.WriteVec3(W, s.mUseRotation); } // Desk CUtility.WriteVec3(W, mPaperInPosition); CUtility.WriteVec3(W, mPaperInRotation); CUtility.WriteVec3(W, mPaperOutPosition); CUtility.WriteVec3(W, mPaperOutRotation); //Icon CUtility.WriteVec3(W, mIconCameraPostion); W.Write((int)mIconViewDirection); }